From 64daf7e872fd5c50ab361ed1bb197f61441fd57a Mon Sep 17 00:00:00 2001 From: Joseph Albert Nefario Date: Wed, 20 May 2026 19:55:00 +0300 Subject: [PATCH 1/5] Expand README with hardware landscape and build/usage guide Documents the Jaguar-family chipset table (8812AU supported, 8811AU on branch, 8821AU/8814AU unsupported), Linux/macOS/Windows build steps, the caller's libusb responsibilities, and the project layout. Drops the stale spdlog dependency from the vcpkg install line. Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 117 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b69690d..1198bdc 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,128 @@ # devourer -The RTL8812AU driver that simply devours its competitors -## Installing +The RTL8812AU driver that simply devours its competitors. -### Windows +Devourer is a userspace re-implementation of Realtek's RTL8812AU Wi-Fi driver, +speaking to the chip directly through libusb. No kernel module, no `rtl8812au` +DKMS tree — just a C++20 static library (`WiFiDriver`) plus two demo +executables for RX and TX. It is the OpenIPC project's driver of choice for +long-range video links built on top of cheap Realtek 11ac USB radios. + +## Hardware landscape + +Devourer currently targets **RTL8812AU** on `master`, with **RTL8811AU** +support in flight on `feat/rtl8811au-support`. Both are members of Realtek's +first-generation 802.11ac silicon family, internally codenamed **"Jaguar"** — +which is why the HAL, register tables (`hal/Hal8812PhyReg.h`), firmware blob +(`hal/hal8812a_fw.[ch]`) and the `SET_TX_DESC_*_8812` macros in +`src/FrameParser.h` are reusable across the whole family with mostly EEPROM +and RF-path adjustments rather than a from-scratch rewrite. + +| Part | Streams | Status in devourer | Notes | +| -------------- | ---------- | ------------------------------------------- | ---------------------------------------------- | +| **RTL8812AU** | 2T2R | Supported (`master`, VID/PID `0bda:8812`) | Reference part | +| **RTL8811AU** | 1T1R | In progress on `feat/rtl8811au-support` | Pin/feature-reduced cut of 8812AU | +| **RTL8821AU** | 1T1R + BT | Not supported | Same Jaguar PHY combined with Bluetooth | +| **RTL8814AU** | 4T4R | Not supported | Jaguar baseband scaled to four streams | + +Successor families (`Jaguar2` / `Jaguar+` — 8812BU, 8822BU/BE, etc., and the +later `Kestrel` 11ax generation) are **out of scope**: they share the Realtek +"AU" branding but the baseband and HAL differ enough that they would need +their own driver. + +> Heads up — some Realtek USB sticks ship in "ZeroCD" mode and enumerate first +> as a USB mass-storage device exposing the Windows driver installer +> (`0bda:1a2b` is the canonical offender), then re-enumerate as the NIC after +> a mode switch. If `libusb_open_device_with_vid_pid(ctx, 0x0bda, 0x8812)` +> returns NULL, check `lsusb` — you may need `usb_modeswitch` to flip it +> first. + +## Building -You can download and install libraries using the vcpkg dependency manager: +Toolchain: CMake ≥ 3.15, a C++20 compiler, and libusb-1.0. +### Linux / macOS + +libusb is located via `pkg-config`: + +```sh +# Debian/Ubuntu +sudo apt install build-essential cmake pkg-config libusb-1.0-0-dev +# macOS (Homebrew) +brew install cmake pkg-config libusb + +cmake -S . -B build +cmake --build build -j ``` + +### Windows + +Dependencies come from vcpkg. Set `VCPKG_ROOT` so the CMake toolchain file at +`$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake` resolves: + +```powershell git clone https://github.com/Microsoft/vcpkg.git cd vcpkg .\bootstrap-vcpkg.bat .\vcpkg integrate install -.\vcpkg install libusb spdlog +.\vcpkg install libusb ``` + +Then the same `cmake -S . -B build && cmake --build build` from the project +root. + +### Build artifacts + +- `WiFiDriver` — static library; link this from your application. +- `WiFiDriverDemo` — RX example built from `demo/main.cpp`. Opens + `0bda:8812`, sets monitor mode on channel 36 / 20 MHz, runs the read loop. +- `WiFiDriverTxDemo` — TX example built from `txdemo/main.cpp`. Takes a USB + fd as `argv[1]` (the Termux-on-Android pattern using + `libusb_wrap_sys_device`), forks RX into a child, and TX-loops a hardcoded + beacon in the parent. + +## Using the library + +The caller owns libusb: you must `libusb_init`, open the device, detach any +kernel driver, and `libusb_claim_interface(handle, 0)` **before** handing +the handle to `WiFiDriver::CreateRtlDevice`. The factory is intentionally +thin — see `demo/main.cpp` for the full boilerplate. A minimal RX path: + +```cpp +auto logger = std::make_shared(); +WiFiDriver driver(logger); +auto dev = driver.CreateRtlDevice(handle); // handle is already claimed +dev->Init(packetProcessor, SelectedChannel{ + .Channel = 36, + .ChannelOffset = 0, + .ChannelWidth = CHANNEL_WIDTH_20, +}); +``` + +`packetProcessor` is your `void(const Packet&)` callback. `Init` runs the +RX loop until `should_stop` is set, then returns. For TX, use `InitWrite` +on a channel followed by `send_packet(buffer, len)` where the buffer begins +with a radiotap header (the iterator in `src/Radiotap.c` extracts +rate/MCS/VHT/STBC/LDPC/SGI/bandwidth from it). + +## Project layout + +``` +hal/ Vendor headers and tables ported from Realtek's tree + (Hal8812PhyReg.h, hal8812a_fw.[ch], rtl8812a_spec.h, …) +src/ Driver implementation + WiFiDriver thin factory + Rtl8812aDevice orchestrator (RX + TX entry points) + HalModule chip bring-up / power sequencing + RadioManagementModule channel, bandwidth, TX power + EepromManager EFUSE / EEPROM read + autoload state + RtlUsbAdapter libusb wrapper (vendor + bulk transfers) + FrameParser RX parsing, TX descriptor layout + Radiotap.c radiotap header iterator +demo/ RX example +txdemo/ TX example (Android / Termux pattern) +``` + +## License + +GPL-2.0. See [LICENSE](LICENSE). From 71b881e8f8aae654e2497557ff3b9fcba8abada1 Mon Sep 17 00:00:00 2001 From: Joseph Albert Nefario Date: Mon, 18 May 2026 16:08:37 +0300 Subject: [PATCH 2/5] Add RTL8811AU support via RF_TYPE_ID autodetect RTL8811AU is the 1T1R cut of the same Jaguar silicon as RTL8812AU. The 1T1R BB/RF/TX-power paths are already implemented (PHY_BB8812_Config_1T, numTotalRfPath loops, per-BW L1pkVal branches) but were unreachable because read_chip_version_8812a hardcoded RFType=RF_TYPE_2T2R. - EepromManager: derive RFType from REG_SYS_CFG bit 27 (RF_TYPE_ID); keep registry_priv::special_rf_path as a manual override for mis-burnt EFUSE. - demo: try a small allow-list of known Realtek PIDs (0x8812, 0x0811, 0xa811, 0xb811) instead of hardcoding 0x8812. PID 0xc811 is intentionally excluded because it is shared with the unrelated RTL8811CU chipset. Refs #20 Co-Authored-By: Claude Opus 4.7 (1M context) --- demo/main.cpp | 24 +++++++++++++++++++----- src/EepromManager.cpp | 8 ++++++-- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/demo/main.cpp b/demo/main.cpp index 5f2843b..74dfe3e 100644 --- a/demo/main.cpp +++ b/demo/main.cpp @@ -8,7 +8,15 @@ #include "WiFiDriver.h" #define USB_VENDOR_ID 0x0bda -#define USB_PRODUCT_ID 0x8812 + +/* Known USB product IDs for RTL8812AU (2T2R) and RTL8811AU (1T1R, 1x1 cut of + * the same Jaguar silicon). Both are driven by this library. */ +static constexpr uint16_t kRealtekProductIds[] = { + 0x8812, /* RTL8812AU (also seen on some 8811AU boards) */ + 0x0811, /* RTL8811AU */ + 0xa811, /* RTL8811AU */ + 0xb811, /* RTL8811AU/8821AU variants */ +}; static void packetProcessor(const Packet &packet) {} @@ -25,11 +33,17 @@ int main() { libusb_set_option(ctx, LIBUSB_OPTION_LOG_LEVEL, LIBUSB_LOG_LEVEL_DEBUG); - libusb_device_handle *dev_handle = - libusb_open_device_with_vid_pid(ctx, USB_VENDOR_ID, USB_PRODUCT_ID); + libusb_device_handle *dev_handle = nullptr; + for (uint16_t pid : kRealtekProductIds) { + dev_handle = libusb_open_device_with_vid_pid(ctx, USB_VENDOR_ID, pid); + if (dev_handle != NULL) { + logger->info("Opened Realtek device {:04x}:{:04x}", USB_VENDOR_ID, pid); + break; + } + } if (dev_handle == NULL) { - logger->error("Cannot find device {:04x}:{:04x}", USB_VENDOR_ID, - USB_PRODUCT_ID); + logger->error("Cannot find any supported Realtek device under VID {:04x}", + USB_VENDOR_ID); libusb_exit(ctx); return 1; } diff --git a/src/EepromManager.cpp b/src/EepromManager.cpp index ada3863..e3551ae 100644 --- a/src/EepromManager.cpp +++ b/src/EepromManager.cpp @@ -47,11 +47,15 @@ void EepromManager::read_chip_version_8812a(RtlUsbAdapter device) { .ICType = CHIP_8812, .ChipType = (value32 & RTL_ID) ? TEST_CHIP : NORMAL_CHIP, .VendorType = (value32 & VENDOR_ID) ? CHIP_VENDOR_UMC : CHIP_VENDOR_TSMC, - .RFType = RF_TYPE_2T2R, /* RF_2T2R; */ + /* SYS_CFG bit 27 (RF_TYPE_ID): set on 1T1R cuts (RTL8811AU), + * clear on 2T2R cuts (RTL8812AU). */ + .RFType = (value32 & RF_TYPE_ID) ? RF_TYPE_1T1R : RF_TYPE_2T2R, }; + /* Manual override: force 1T1R even when SYS_CFG reports 2T2R + * (useful if EFUSE/strap is mis-burnt on a 1T1R board). */ if (registry_priv::special_rf_path == 1) { - version_id.RFType = RF_TYPE_1T1R; /* RF_1T1R; */ + version_id.RFType = RF_TYPE_1T1R; } version_id.CUTVersion = (HAL_CUT_VERSION_E)(((value32 & CHIP_VER_RTL_MASK) >> From 0cd016abbed5f88a00621b202b4f5a1ba4b9e626 Mon Sep 17 00:00:00 2001 From: Joseph Albert Nefario Date: Thu, 21 May 2026 18:31:41 +0300 Subject: [PATCH 3/5] Add RTL8814AU (Jaguar 4T4R) support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Devourer now drives the RTL8814AU (VID/PID 0bda:8813), Realtek's 4T4R / 3-SS Jaguar-family chip. Verified on COMFAST CF-938AC: RX/ monitor-mode receives real 802.11 frames (beacons, probe requests/ responses, data) on both 2.4 GHz and 5 GHz bands. TX path infrastructure is in place but not end-to-end validated yet. The 8814AU is structurally the same Jaguar baseband as 8812AU but with 4 RF chains, 3 spatial streams maximum, and a different firmware download transport (RSVD-page TX via beacon queue + IDDMA copy to 8051/3081 DMEM/IMEM instead of the 8812's page-mapped vendor write). Most of the existing 8812 HAL infrastructure is reusable; this change extends each layer where the 8814 diverges. Key changes ----------- Refactor Rtl8812aDevice → RtlJaguarDevice. The class is the orchestrator for the entire Jaguar family (8811/8812/8814), not just 8812. A `using Rtl8812aDevice = RtlJaguarDevice` typedef is left in RtlJaguarDevice.h with the [[deprecated]] attribute so any external caller that still references the old name keeps compiling for one release cycle. Chip-version detection (EepromManager). PID 0x8813 → CHIP_8814A, RF_TYPE_4T4R, maxSpatialStreams=3. The +1 on raw cut bits that the Jaguar code did for 8812A is dropped for 8814A — upstream rtw88's rtw88xxa_read_efuse only +1's for 8812A. Vendor data files (hal/). Port hal8814a_fw.[ch] (68 KB blob), Hal8814PhyReg.h (BB/RF register definitions), Hal8814PwrSeq.[ch] (power-on/off command tables), plus the phydm directory tree including Hal8814_PhyTables.[ch] (4622-entry phy_reg + 6280-entry agc_tab tables auto-generated from upstream phydm via tools/extract_8814a_phy_tables.py). PhyTableLoader. New helper that walks a phydm-encoded table at runtime, evaluating its IF/ELSE_IF/ELSE/ENDIF opcodes against a chip-version + interface + rfe context. Used for the 8814 BB/AGC/ MAC/RF tables, since the upstream phydm "compile out everything that doesn't match this build" approach doesn't fit a userspace runtime driver that may serve multiple boards. Firmware download (FirmwareManager::FirmwareDownload_8814A). The 8814 uses RSVD-page TX + IDDMA copy. Implementation steps: • 242-op rtw88_8814au pre-fwdl register replay (writes AND reads — the reads matter: several Realtek regs have read-side-effects that gate the chip's subsequent state transitions). • Beacon-queue submission of the firmware in 4136-byte (or smaller) chunks via bulk OUT EP 0x02. • IDDMA controller programming (REG_DDMA_CH0SA/DA/CTRL at 0x1200-0x1208) to copy each chunk from TX FIFO to the 3081's DMEM/IMEM. • Per-chunk poll of BIT15 of REG_FIFOPAGE_CTRL_2 (0x0204) for the chip's "RSVD page write acknowledged" signal. • Post-fwdl CPU kick: REG_MCUFWDL byte 0 = 0x79, REG_MCUFWDL word = 0x6078 (clear FWDL_EN, set FW_DW_RDY), REG_RSV_CTRL+1 = 0xfe (set FEN_CPUEN). • "FW ready" detection by byte 0 of REG_MCUFWDL == 0x78 (stable post-boot signature). The transient BIT15 (FW_INIT_RDY) that rtw88 polls is missed by userspace polling. BB/RF domain power-on. The chip's BB register space (0x800-0xFFF) silently rejects writes via vendor control transfer unless the BB and RF domains are explicitly powered on first. After fwdl, write: • REG_SYS_FUNC_EN (0x0002) |= BIT_FEN_USBA (BIT2) — enable USB→BB • REG_SYS_CFG3_8814A+2 (0x1002) |= BB_RSTB | BB_GLB_RST (BIT0|BIT1) • REG_RF_CTRL[0..3] (0x001F / 0x0020 / 0x0021 / 0x0076) = 0x07 (RF_EN | RF_RSTB | RF_SDM_RSTB) — 4 separate registers for the 4 RF chains. Verified: without these the 1837 BB table writes from array_mp_8814a_phy_reg apply at the USB layer but the chip leaves the registers at their reset values. With them, every BB reg lands at its expected table value. Post-fwdl EFUSE read. The constructor skips EFUSE on 8814 (pre-fwdl EFUSE access breaks the chip's RSVD-page state machine), so the parsers run against an all-0xFF shadow. After fwdl, call EepromManager::LateInitFor8814A which re-runs the EFUSE read and the parsers with real data, populating rfe_type, PA/LNA types, crystal_cap, thermal_meter. Falls back to rfe_type=1 in GetPhyContext if LateInit hasn't run or the EFUSE doesn't carry an RFE option (every conditional block in the 8814 BB tables gates on rfe_type ∈ 1..11). 4-path RadioManagementModule. Numerous loops that hard-coded paths A and B (phy_RFSerialRead/Write, phy_set_rf_reg dispatch, the 8814-specific path C/D LSSIW reg offsets 0x1890 / 0x1A90 etc.) extended to walk all numTotalRfPath paths. Path C/D RF reads are not supported by the chip's 3-wire mechanism (rtw88's rtw88xxa_phy_read_rf also only indexes A/B); paths C/D are write- only and rtw88 propagates path-A's RF read to C/D via writes. RX descriptor unpack. FrameParser populates path-C / path-D RSSI + SNR slots from the 8814 RX status descriptor (the storage already existed in the rx_pkt_attrib struct). USB endpoint priority. _InitNormalChipFourOutEpPriority_8814AUsb mirrors the 8812 four-EP setup with the 8814-specific queue→EP mapping. Demo. demo/main.cpp adds DEVOURER_PID (restrict to a single VID/ PID), DEVOURER_CHANNEL (override the default monitor channel), DEVOURER_SKIP_RESET (skip libusb_reset_device on claim — for rtw88-prime-then-devourer takeover), DEVOURER_FORCE_TXPWR (run the 4T4R TX-power-by-rate loop, off by default since monitor mode doesn't need it). Adds RX packet count + size log. TX-power-by-rate loop is skipped by default for 8814 monitor mode (370 PHY_SetTxPowerIndex calls × ~20-30s one-time cost during channel switch; values only consumed by TX path which isn't yet validated end-to-end on this chip). Co-Authored-By: Claude Opus 4.7 (1M context) --- CMakeLists.txt | 18 +- demo/main.cpp | 55 +- hal/Hal8814PhyCfg.h | 250 + hal/Hal8814PhyReg.h | 863 + hal/Hal8814PwrSeq.c | 87 + hal/Hal8814PwrSeq.h | 231 + hal/hal8814a_fw.c | 19633 ++++++++++++ hal/hal8814a_fw.h | 43 + hal/phydm/halrf/rtl8814a/halhwimg8814a_rf.c | 24870 ++++++++++++++++ hal/phydm/halrf/rtl8814a/halhwimg8814a_rf.h | 394 + hal/phydm/rtl8814a/Hal8814_PhyTables.c | 15284 ++++++++++ hal/phydm/rtl8814a/Hal8814_PhyTables.h | 60 + hal/phydm/rtl8814a/hal8814areg_odm.h | 39 + hal/phydm/rtl8814a/halhwimg8814a_bb.c | 8041 +++++ hal/phydm/rtl8814a/halhwimg8814a_bb.h | 177 + hal/phydm/rtl8814a/halhwimg8814a_mac.c | 326 + hal/phydm/rtl8814a/halhwimg8814a_mac.h | 42 + hal/phydm/rtl8814a/phydm_regconfig8814a.c | 244 + hal/phydm/rtl8814a/phydm_regconfig8814a.h | 47 + hal/phydm/rtl8814a/phydm_rtl8814a.c | 254 + hal/phydm/rtl8814a/phydm_rtl8814a.h | 26 + hal/phydm/rtl8814a/version_rtl8814a.h | 34 + hal/rtl8814a/rtl8814a_cmd.c | 942 + hal/rtl8814a/rtl8814a_dm.c | 300 + hal/rtl8814a/rtl8814a_hal_init.c | 4496 +++ hal/rtl8814a/rtl8814a_phycfg.c | 2353 ++ hal/rtl8814a/rtl8814a_rf6052.c | 182 + hal/rtl8814a/rtl8814a_rxdesc.c | 60 + hal/rtl8814a/rtl8814a_sreset.c | 106 + hal/rtl8814a/rtl8814a_xmit.c | 524 + hal/rtl8814a/usb/rtl8814au_led.c | 143 + hal/rtl8814a/usb/rtl8814au_recv.c | 28 + hal/rtl8814a/usb/rtl8814au_xmit.c | 1066 + hal/rtl8814a/usb/usb_halinit.c | 2047 ++ hal/rtl8814a/usb/usb_ops_linux.c | 233 + hal/rtl8814a_cmd.h | 166 + hal/rtl8814a_dm.h | 23 + hal/rtl8814a_hal.h | 331 + hal/rtl8814a_led.h | 36 + hal/rtl8814a_recv.h | 182 + hal/rtl8814a_rf.h | 28 + hal/rtl8814a_spec.h | 648 + hal/rtl8814a_sreset.h | 24 + hal/rtl8814a_xmit.h | 311 + inventory/cf938ac_macos.txt | 31 + src/EepromManager.cpp | 121 +- src/EepromManager.h | 13 + src/Firmware.h | 25 +- src/FirmwareManager.cpp | 686 +- src/FirmwareManager.h | 18 +- src/FrameParser.cpp | 10 + src/FrameParser.h | 7 +- src/HalModule.cpp | 416 +- src/HalModule.h | 16 + src/PhyTableLoader.cpp | 105 + src/PhyTableLoader.h | 44 + src/RadioManagementModule.cpp | 95 +- src/RadioManagementModule.h | 2 + src/RfPath.h | 2 + ...Rtl8812aDevice.cpp => RtlJaguarDevice.cpp} | 18 +- src/{Rtl8812aDevice.h => RtlJaguarDevice.h} | 20 +- src/RtlUsbAdapter.cpp | 31 + src/RtlUsbAdapter.h | 12 + src/WiFiDriver.cpp | 8 +- src/WiFiDriver.h | 4 +- tools/extract_8814a_phy_tables.py | 124 + 66 files changed, 86933 insertions(+), 122 deletions(-) create mode 100644 hal/Hal8814PhyCfg.h create mode 100644 hal/Hal8814PhyReg.h create mode 100644 hal/Hal8814PwrSeq.c create mode 100644 hal/Hal8814PwrSeq.h create mode 100644 hal/hal8814a_fw.c create mode 100644 hal/hal8814a_fw.h create mode 100644 hal/phydm/halrf/rtl8814a/halhwimg8814a_rf.c create mode 100644 hal/phydm/halrf/rtl8814a/halhwimg8814a_rf.h create mode 100644 hal/phydm/rtl8814a/Hal8814_PhyTables.c create mode 100644 hal/phydm/rtl8814a/Hal8814_PhyTables.h create mode 100644 hal/phydm/rtl8814a/hal8814areg_odm.h create mode 100644 hal/phydm/rtl8814a/halhwimg8814a_bb.c create mode 100644 hal/phydm/rtl8814a/halhwimg8814a_bb.h create mode 100644 hal/phydm/rtl8814a/halhwimg8814a_mac.c create mode 100644 hal/phydm/rtl8814a/halhwimg8814a_mac.h create mode 100644 hal/phydm/rtl8814a/phydm_regconfig8814a.c create mode 100644 hal/phydm/rtl8814a/phydm_regconfig8814a.h create mode 100644 hal/phydm/rtl8814a/phydm_rtl8814a.c create mode 100644 hal/phydm/rtl8814a/phydm_rtl8814a.h create mode 100644 hal/phydm/rtl8814a/version_rtl8814a.h create mode 100644 hal/rtl8814a/rtl8814a_cmd.c create mode 100644 hal/rtl8814a/rtl8814a_dm.c create mode 100644 hal/rtl8814a/rtl8814a_hal_init.c create mode 100644 hal/rtl8814a/rtl8814a_phycfg.c create mode 100644 hal/rtl8814a/rtl8814a_rf6052.c create mode 100644 hal/rtl8814a/rtl8814a_rxdesc.c create mode 100644 hal/rtl8814a/rtl8814a_sreset.c create mode 100644 hal/rtl8814a/rtl8814a_xmit.c create mode 100644 hal/rtl8814a/usb/rtl8814au_led.c create mode 100644 hal/rtl8814a/usb/rtl8814au_recv.c create mode 100644 hal/rtl8814a/usb/rtl8814au_xmit.c create mode 100644 hal/rtl8814a/usb/usb_halinit.c create mode 100644 hal/rtl8814a/usb/usb_ops_linux.c create mode 100644 hal/rtl8814a_cmd.h create mode 100644 hal/rtl8814a_dm.h create mode 100644 hal/rtl8814a_hal.h create mode 100644 hal/rtl8814a_led.h create mode 100644 hal/rtl8814a_recv.h create mode 100644 hal/rtl8814a_rf.h create mode 100644 hal/rtl8814a_spec.h create mode 100644 hal/rtl8814a_sreset.h create mode 100644 hal/rtl8814a_xmit.h create mode 100644 inventory/cf938ac_macos.txt create mode 100644 src/PhyTableLoader.cpp create mode 100644 src/PhyTableLoader.h rename src/{Rtl8812aDevice.cpp => RtlJaguarDevice.cpp} (92%) rename src/{Rtl8812aDevice.h => RtlJaguarDevice.h} (59%) create mode 100644 tools/extract_8814a_phy_tables.py diff --git a/CMakeLists.txt b/CMakeLists.txt index cc25def..d72b2d6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,14 +17,25 @@ add_library(WiFiDriver hal/Hal8812PhyReg.h hal/Hal8812PwrSeq.c hal/Hal8812PwrSeq.h + hal/Hal8814PwrSeq.c + hal/Hal8814PwrSeq.h hal/basic_types.h hal/hal8812a_fw.c hal/hal8812a_fw.h + hal/hal8814a_fw.c + hal/hal8814a_fw.h hal/hal_com_reg.h hal/rtl8812a_hal.h hal/rtl8812a_recv.h hal/rtl8812a_spec.h + # RTL8814AU phydm-format register tables. The .c file is generated from the + # aircrack-ng/rtl8814au tree by tools/extract_8814a_phy_tables.py; the + # loader at src/PhyTableLoader walks the same conditional encoding the + # upstream phydm parser does, without pulling in phydm itself. + hal/phydm/rtl8814a/Hal8814_PhyTables.c + hal/phydm/rtl8814a/Hal8814_PhyTables.h + src/ieee80211_radiotap.h src/EepromManager.cpp src/EepromManager.h @@ -36,11 +47,13 @@ add_library(WiFiDriver src/HalModule.cpp src/HalModule.h src/ParsedRadioPacket.cpp + src/PhyTableLoader.cpp + src/PhyTableLoader.h src/RadioManagementModule.cpp src/RadioManagementModule.h src/Radiotap.c - src/Rtl8812aDevice.cpp - src/Rtl8812aDevice.h + src/RtlJaguarDevice.cpp + src/RtlJaguarDevice.h src/RtlUsbAdapter.cpp src/RtlUsbAdapter.h src/SelectedChannel.h @@ -55,6 +68,7 @@ target_compile_features(WiFiDriver PUBLIC cxx_std_20) target_link_libraries(WiFiDriver PUBLIC PkgConfig::libusb) target_include_directories(WiFiDriver PUBLIC hal) +target_include_directories(WiFiDriver PUBLIC hal/phydm/rtl8814a) target_include_directories(WiFiDriver PUBLIC src) add_executable(WiFiDriverDemo diff --git a/demo/main.cpp b/demo/main.cpp index 74dfe3e..adbc3dd 100644 --- a/demo/main.cpp +++ b/demo/main.cpp @@ -1,4 +1,5 @@ #include +#include #include #include @@ -9,16 +10,25 @@ #define USB_VENDOR_ID 0x0bda -/* Known USB product IDs for RTL8812AU (2T2R) and RTL8811AU (1T1R, 1x1 cut of - * the same Jaguar silicon). Both are driven by this library. */ +/* Known USB product IDs for the Realtek Jaguar 802.11ac family driven by this + * library: RTL8812AU (2T2R), RTL8811AU (1T1R cut), and RTL8814AU (4T4R RF / + * 3-SS baseband). */ static constexpr uint16_t kRealtekProductIds[] = { 0x8812, /* RTL8812AU (also seen on some 8811AU boards) */ 0x0811, /* RTL8811AU */ 0xa811, /* RTL8811AU */ 0xb811, /* RTL8811AU/8821AU variants */ + 0x8813, /* RTL8814AU (Realtek demoboard PID, used by CF-938AC/CF-960AC) */ }; -static void packetProcessor(const Packet &packet) {} +static int g_rx_count = 0; +static void packetProcessor(const Packet &packet) { + ++g_rx_count; + if (g_rx_count <= 10 || g_rx_count % 100 == 0) { + printf("RX pkt #%d (len=%zu)\n", g_rx_count, packet.Data.size()); + fflush(stdout); + } +} int main() { libusb_context *ctx; @@ -33,8 +43,17 @@ int main() { libusb_set_option(ctx, LIBUSB_OPTION_LOG_LEVEL, LIBUSB_LOG_LEVEL_DEBUG); + /* DEVOURER_PID env var (hex, e.g. "0x8813") restricts the open loop to a + * single PID. Useful when multiple Realtek adapters are plugged. */ + const char *pid_env = std::getenv("DEVOURER_PID"); + uint16_t target_pid = 0; + if (pid_env != nullptr) { + target_pid = static_cast(std::strtoul(pid_env, nullptr, 0)); + logger->info("DEVOURER_PID={:04x} (limiting to this PID)", target_pid); + } libusb_device_handle *dev_handle = nullptr; for (uint16_t pid : kRealtekProductIds) { + if (target_pid != 0 && pid != target_pid) continue; dev_handle = libusb_open_device_with_vid_pid(ctx, USB_VENDOR_ID, pid); if (dev_handle != NULL) { logger->info("Opened Realtek device {:04x}:{:04x}", USB_VENDOR_ID, pid); @@ -53,13 +72,41 @@ int main() { rc = libusb_detach_kernel_driver(dev_handle, 0); // detach driver } + /* Skip USB reset if DEVOURER_SKIP_RESET=1. Used when picking up a chip + * with firmware already running (e.g. after a patched-rtw88 sysfs unbind): + * USB reset would clobber fw state and force us to re-run fwdl. */ + if (!std::getenv("DEVOURER_SKIP_RESET")) { + libusb_reset_device(dev_handle); + } else { + logger->info("DEVOURER_SKIP_RESET set — skipping libusb_reset_device"); + } rc = libusb_claim_interface(dev_handle, 0); assert(rc == 0); + /* Probe MCUFWDL immediately after claim, before any other chip access. + * Useful for diagnosing post-rtw88-unbind takeover: shows whether chip + * state has transitioned away from rtw88's 0x0060e078 (fw running). */ + if (std::getenv("DEVOURER_PROBE_MCUFWDL")) { + uint32_t mcufwdl = 0; + for (int i = 0; i < 5; ++i) { + int got = libusb_control_transfer(dev_handle, 0xC0, 5, 0x0080, 0, + reinterpret_cast(&mcufwdl), + 4, 500); + logger->info("PROBE MCUFWDL[{}]: rc={} val=0x{:08x}", i, got, mcufwdl); + } + } + WiFiDriver wifi_driver(logger); auto rtlDevice = wifi_driver.CreateRtlDevice(dev_handle); + /* Default channel 36 (5 GHz) for the 8812 reference. Override with + * DEVOURER_CHANNEL=N env var (e.g. DEVOURER_CHANNEL=6 for busy 2.4 GHz). */ + int channel = 36; + if (const char *ch_env = std::getenv("DEVOURER_CHANNEL")) { + channel = std::atoi(ch_env); + logger->info("DEVOURER_CHANNEL set — tuning to channel {}", channel); + } rtlDevice->Init(packetProcessor, SelectedChannel{ - .Channel = 36, + .Channel = static_cast(channel), .ChannelOffset = 0, .ChannelWidth = CHANNEL_WIDTH_20, }); diff --git a/hal/Hal8814PhyCfg.h b/hal/Hal8814PhyCfg.h new file mode 100644 index 0000000..f81fe49 --- /dev/null +++ b/hal/Hal8814PhyCfg.h @@ -0,0 +1,250 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#ifndef __INC_HAL8814PHYCFG_H__ +#define __INC_HAL8814PHYCFG_H__ + + +/*--------------------------Define Parameters-------------------------------*/ +#define LOOP_LIMIT 5 +#define MAX_STALL_TIME 50 /* us */ +#define AntennaDiversityValue 0x80 /* (Adapter->bSoftwareAntennaDiversity ? 0x00 : 0x80) */ +#define MAX_TXPWR_IDX_NMODE_92S 63 +#define Reset_Cnt_Limit 3 + + +#ifdef CONFIG_PCI_HCI + #define MAX_AGGR_NUM 0x0B +#else + #define MAX_AGGR_NUM 0x07 +#endif /* CONFIG_PCI_HCI */ + + +/*--------------------------Define Parameters-------------------------------*/ + +/*------------------------------Define structure----------------------------*/ + + +/* BB/RF related */ + +#define SIC_ENABLE 0 + +/*------------------------------Define structure----------------------------*/ + + +/*------------------------Export global variable----------------------------*/ +/*------------------------Export global variable----------------------------*/ + + +/*------------------------Export Marco Definition---------------------------*/ +/*------------------------Export Marco Definition---------------------------*/ + + +/*--------------------------Exported Function prototype---------------------*/ +/* 1. BB register R/W API */ + +extern u32 +PHY_QueryBBReg8814A(PADAPTER Adapter, + u32 RegAddr, + u32 BitMask); + + +void +PHY_SetBBReg8814A(PADAPTER Adapter, + u32 RegAddr, + u32 BitMask, + u32 Data); + + +extern u32 +PHY_QueryRFReg8814A(PADAPTER Adapter, + enum rf_path eRFPath, + u32 RegAddr, + u32 BitMask); + + +void +PHY_SetRFReg8814A(PADAPTER Adapter, + enum rf_path eRFPath, + u32 RegAddr, + u32 BitMask, + u32 Data); + +/* 1 3. Initial BB/RF config by reading MAC/BB/RF txt. */ +s32 +phy_BB8814A_Config_ParaFile( + PADAPTER Adapter +); + +void +PHY_ConfigBB_8814A( + PADAPTER Adapter +); + + +void +phy_ADC_CLK_8814A( + PADAPTER Adapter +); + +s32 +PHY_RFConfig8814A( + PADAPTER Adapter +); + +/* + * RF Power setting + * + * BOOLEAN PHY_SetRFPowerState8814A(PADAPTER Adapter, rt_rf_power_state eRFPowerState); */ + +/* 1 5. Tx Power setting API */ + +void +PHY_SetTxPowerLevel8814( + PADAPTER Adapter, + u8 Channel +); + +u8 +phy_get_tx_power_index_8814a( + PADAPTER Adapter, + enum rf_path RFPath, + u8 Rate, + enum channel_width BandWidth, + u8 Channel +); + +u8 +PHY_GetTxPowerIndex8814A( + PADAPTER Adapter, + enum rf_path RFPath, + u8 Rate, + u8 BandWidth, + u8 Channel, + struct txpwr_idx_comp *tic +); + +void +PHY_SetTxPowerIndex_8814A( + PADAPTER Adapter, + u32 PowerIndex, + enum rf_path RFPath, + u8 Rate +); + +u32 +PHY_GetTxBBSwing_8814A( + PADAPTER Adapter, + BAND_TYPE Band, + enum rf_path RFPath +); + + + +/* 1 6. Channel setting API */ +#if 0 +void +PHY_SwChnlTimerCallback8814A( + struct timer_list *p_timer +); +#endif +void +PHY_SwChnlWorkItemCallback8814A( + void *pContext +); + + +void +HAL_HandleSwChnl8814A( + PADAPTER pAdapter, + u8 channel +); + +void +PHY_SwChnlSynchronously8814A(PADAPTER pAdapter, + u8 channel); + +void +PHY_SwChnlAndSetBWModeCallback8814A(void *pContext); + + +void +PHY_HandleSwChnlAndSetBW8814A( + PADAPTER Adapter, + BOOLEAN bSwitchChannel, + BOOLEAN bSetBandWidth, + u8 ChannelNum, + enum channel_width ChnlWidth, + u8 ChnlOffsetOf40MHz, + u8 ChnlOffsetOf80MHz, + u8 CenterFrequencyIndex1 +); + + +BOOLEAN +PHY_QueryRFPathSwitch_8814A(PADAPTER pAdapter); + + + +#if (USE_WORKITEM) +void +RtCheckForHangWorkItemCallback8814A( + void *pContext +); +#endif + +BOOLEAN +SetAntennaConfig8814A( + PADAPTER Adapter, + u8 DefaultAnt +); + +void +PHY_SetRFEReg8814A( + PADAPTER Adapter, + BOOLEAN bInit, + u8 Band +); + + +s32 +PHY_SwitchWirelessBand8814A( + PADAPTER Adapter, + u8 Band +); + +void +PHY_SetIO_8814A( + PADAPTER pAdapter +); + +void +PHY_SetSwChnlBWMode8814( + PADAPTER Adapter, + u8 channel, + enum channel_width Bandwidth, + u8 Offset40, + u8 Offset80 +); + +s32 PHY_MACConfig8814(PADAPTER Adapter); +int PHY_BBConfig8814(PADAPTER Adapter); +void PHY_Set_SecCCATH_by_RXANT_8814A(PADAPTER pAdapter, u32 ulAntennaRx); + + + +/*--------------------------Exported Function prototype---------------------*/ + +/*--------------------------Exported Function prototype---------------------*/ +#endif /* __INC_HAL8192CPHYCFG_H */ diff --git a/hal/Hal8814PhyReg.h b/hal/Hal8814PhyReg.h new file mode 100644 index 0000000..21851a8 --- /dev/null +++ b/hal/Hal8814PhyReg.h @@ -0,0 +1,863 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#ifndef __INC_HAL8814PHYREG_H__ +#define __INC_HAL8814PHYREG_H__ +/*--------------------------Define Parameters-------------------------------*/ +/* + * BB-PHY register PMAC 0x100 PHY 0x800 - 0xEFF + * 1. PMAC duplicate register due to connection: RF_Mode, TRxRN, NumOf L-STF + * 2. 0x800/0x900/0xA00/0xC00/0xD00/0xE00 + * 3. RF register 0x00-2E + * 4. Bit Mask for BB/RF register + * 5. Other defintion for BB/RF R/W + * */ + + +/* BB Register Definition */ + +#define rCCAonSec_Jaguar 0x838 +#define rPwed_TH_Jaguar 0x830 +#define rL1_Weight_Jaguar 0x840 +#define r_L1_SBD_start_time 0x844 + +/* BW and sideband setting */ +#define rBWIndication_Jaguar 0x834 +#define rL1PeakTH_Jaguar 0x848 +#define rRFMOD_Jaguar 0x8ac /* RF mode */ +#define rADC_Buf_Clk_Jaguar 0x8c4 +#define rADC_Buf_40_Clk_Jaguar2 0x8c8 +#define rRFECTRL_Jaguar 0x900 +#define bRFMOD_Jaguar 0xc3 +#define rCCK_System_Jaguar 0xa00 /* for cck sideband */ +#define bCCK_System_Jaguar 0x10 + +/* Block & Path enable */ +#define rOFDMCCKEN_Jaguar 0x808 /* OFDM/CCK block enable */ +#define bOFDMEN_Jaguar 0x20000000 +#define bCCKEN_Jaguar 0x10000000 +#define rRxPath_Jaguar 0x808 /* Rx antenna */ +#define bRxPath_Jaguar 0xff +#define rTxPath_Jaguar 0x80c /* Tx antenna */ +#define bTxPath_Jaguar 0x0fffffff +#define rCCK_RX_Jaguar 0xa04 /* for cck rx path selection */ +#define bCCK_RX_Jaguar 0x0c000000 +#define rVhtlen_Use_Lsig_Jaguar 0x8c3 /* Use LSIG for VHT length */ + +#define rRxPath_Jaguar2 0xa04 /* Rx antenna */ +#define rTxAnt_1Nsts_Jaguar2 0x93c /* Tx antenna for 1Nsts */ +#define rTxAnt_23Nsts_Jaguar2 0x940 /* Tx antenna for 2Nsts and 3Nsts */ + + +/* RF read/write-related */ +#define rHSSIRead_Jaguar 0x8b0 /* RF read addr */ +#define bHSSIRead_addr_Jaguar 0xff +#define bHSSIRead_trigger_Jaguar 0x100 +#define rA_PIRead_Jaguar 0xd04 /* RF readback with PI */ +#define rB_PIRead_Jaguar 0xd44 /* RF readback with PI */ +#define rA_SIRead_Jaguar 0xd08 /* RF readback with SI */ +#define rB_SIRead_Jaguar 0xd48 /* RF readback with SI */ +#define rRead_data_Jaguar 0xfffff +#define rA_LSSIWrite_Jaguar 0xc90 /* RF write addr */ +#define rB_LSSIWrite_Jaguar 0xe90 /* RF write addr */ +#define bLSSIWrite_data_Jaguar 0x000fffff +#define bLSSIWrite_addr_Jaguar 0x0ff00000 + +#define rC_PIRead_Jaguar2 0xd84 /* RF readback with PI */ +#define rD_PIRead_Jaguar2 0xdC4 /* RF readback with PI */ +#define rC_SIRead_Jaguar2 0xd88 /* RF readback with SI */ +#define rD_SIRead_Jaguar2 0xdC8 /* RF readback with SI */ +#define rC_LSSIWrite_Jaguar2 0x1890 /* RF write addr */ +#define rD_LSSIWrite_Jaguar2 0x1A90 /* RF write addr */ + + +/* YN: mask the following register definition temporarily */ +#define rFPGA0_XA_RFInterfaceOE 0x860 /* RF Channel switch */ +#define rFPGA0_XB_RFInterfaceOE 0x864 + +#define rFPGA0_XAB_RFInterfaceSW 0x870 /* RF Interface Software Control */ +#define rFPGA0_XCD_RFInterfaceSW 0x874 + +/* #define rFPGA0_XAB_RFParameter 0x878 */ /* RF Parameter + * #define rFPGA0_XCD_RFParameter 0x87c */ + +/* #define rFPGA0_AnalogParameter1 0x880 */ /* Crystal cap setting RF-R/W protection for parameter4?? + * #define rFPGA0_AnalogParameter2 0x884 + * #define rFPGA0_AnalogParameter3 0x888 + * #define rFPGA0_AdDaClockEn 0x888 */ /* enable ad/da clock1 for dual-phy + * #define rFPGA0_AnalogParameter4 0x88c */ + + +/* CCK TX scaling */ +#define rCCK_TxFilter1_Jaguar 0xa20 +#define bCCK_TxFilter1_C0_Jaguar 0x00ff0000 +#define bCCK_TxFilter1_C1_Jaguar 0xff000000 +#define rCCK_TxFilter2_Jaguar 0xa24 +#define bCCK_TxFilter2_C2_Jaguar 0x000000ff +#define bCCK_TxFilter2_C3_Jaguar 0x0000ff00 +#define bCCK_TxFilter2_C4_Jaguar 0x00ff0000 +#define bCCK_TxFilter2_C5_Jaguar 0xff000000 +#define rCCK_TxFilter3_Jaguar 0xa28 +#define bCCK_TxFilter3_C6_Jaguar 0x000000ff +#define bCCK_TxFilter3_C7_Jaguar 0x0000ff00 +/* NBI & CSI Mask setting */ +#define rCSI_Mask_Setting1_Jaguar 0x874 +#define rCSI_Fix_Mask0_Jaguar 0x880 +#define rCSI_Fix_Mask1_Jaguar 0x884 +#define rCSI_Fix_Mask2_Jaguar 0x888 +#define rCSI_Fix_Mask3_Jaguar 0x88c +#define rCSI_Fix_Mask4_Jaguar 0x890 +#define rCSI_Fix_Mask5_Jaguar 0x894 +#define rCSI_Fix_Mask6_Jaguar 0x898 +#define rCSI_Fix_Mask7_Jaguar 0x89c +#define rNBI_Setting_Jaguar 0x87c + + +/* YN: mask the following register definition temporarily + * #define rPdp_AntA 0xb00 + * #define rPdp_AntA_4 0xb04 + * #define rConfig_Pmpd_AntA 0xb28 + * #define rConfig_AntA 0xb68 + * #define rConfig_AntB 0xb6c + * #define rPdp_AntB 0xb70 + * #define rPdp_AntB_4 0xb74 + * #define rConfig_Pmpd_AntB 0xb98 + * #define rAPK 0xbd8 */ + +/* RXIQC */ +#define rA_RxIQC_AB_Jaguar 0xc10 /* RxIQ imblance matrix coeff. A & B */ +#define rA_RxIQC_CD_Jaguar 0xc14 /* RxIQ imblance matrix coeff. C & D */ +#define rA_TxScale_Jaguar 0xc1c /* Pah_A TX scaling factor */ +#define rB_TxScale_Jaguar 0xe1c /* Path_B TX scaling factor */ +#define rB_RxIQC_AB_Jaguar 0xe10 /* RxIQ imblance matrix coeff. A & B */ +#define rB_RxIQC_CD_Jaguar 0xe14 /* RxIQ imblance matrix coeff. C & D */ +#define b_RxIQC_AC_Jaguar 0x02ff /* bit mask for IQC matrix element A & C */ +#define b_RxIQC_BD_Jaguar 0x02ff0000 /* bit mask for IQC matrix element A & C */ + +#define rC_TxScale_Jaguar2 0x181c /* Pah_C TX scaling factor */ +#define rD_TxScale_Jaguar2 0x1A1c /* Path_D TX scaling factor */ +#define rRF_TxGainOffset 0x55 + +/* DIG-related */ +#define rA_IGI_Jaguar 0xc50 /* Initial Gain for path-A */ +#define rB_IGI_Jaguar 0xe50 /* Initial Gain for path-B */ +#define rC_IGI_Jaguar2 0x1850 /* Initial Gain for path-C */ +#define rD_IGI_Jaguar2 0x1A50 /* Initial Gain for path-D */ + +#define rOFDM_FalseAlarm1_Jaguar 0xf48 /* counter for break */ +#define rOFDM_FalseAlarm2_Jaguar 0xf4c /* counter for spoofing */ +#define rCCK_FalseAlarm_Jaguar 0xa5c /* counter for cck false alarm */ +#define b_FalseAlarm_Jaguar 0xffff +#define rCCK_CCA_Jaguar 0xa08 /* cca threshold */ +#define bCCK_CCA_Jaguar 0x00ff0000 + +/* Tx Power Ttraining-related */ +#define rA_TxPwrTraing_Jaguar 0xc54 +#define rB_TxPwrTraing_Jaguar 0xe54 + +/* Report-related */ +#define rOFDM_ShortCFOAB_Jaguar 0xf60 +#define rOFDM_LongCFOAB_Jaguar 0xf64 +#define rOFDM_EndCFOAB_Jaguar 0xf70 +#define rOFDM_AGCReport_Jaguar 0xf84 +#define rOFDM_RxSNR_Jaguar 0xf88 +#define rOFDM_RxEVMCSI_Jaguar 0xf8c +#define rOFDM_SIGReport_Jaguar 0xf90 + +/* Misc functions */ +#define rEDCCA_Jaguar 0x8a4 /* EDCCA */ +#define bEDCCA_Jaguar 0xffff +#define rAGC_table_Jaguar 0x82c /* AGC tabel select */ +#define bAGC_table_Jaguar 0x3 +#define b_sel5g_Jaguar 0x1000 /* sel5g */ +#define b_LNA_sw_Jaguar 0x8000 /* HW/WS control for LNA */ +#define rFc_area_Jaguar 0x860 /* fc_area */ +#define bFc_area_Jaguar 0x1ffe000 +#define rSingleTone_ContTx_Jaguar 0x914 + +#define rAGC_table_Jaguar2 0x958 /* AGC tabel select */ +#define rDMA_trigger_Jaguar2 0x95C /* ADC sample mode */ + + +/* RFE */ +#define rA_RFE_Pinmux_Jaguar 0xcb0 /* Path_A RFE cotrol pinmux */ +#define rB_RFE_Pinmux_Jaguar 0xeb0 /* Path_B RFE control pinmux */ +#define rA_RFE_Inv_Jaguar 0xcb4 /* Path_A RFE cotrol */ +#define rB_RFE_Inv_Jaguar 0xeb4 /* Path_B RFE control */ +#define rA_RFE_Jaguar 0xcb8 /* Path_A RFE cotrol */ +#define rB_RFE_Jaguar 0xeb8 /* Path_B RFE control */ +#define rA_RFE_Inverse_Jaguar 0xCBC /* Path_A RFE control inverse */ +#define rB_RFE_Inverse_Jaguar 0xEBC /* Path_B RFE control inverse */ +#define r_ANTSEL_SW_Jaguar 0x900 /* ANTSEL SW Control */ +#define bMask_RFEInv_Jaguar 0x3ff00000 +#define bMask_AntselPathFollow_Jaguar 0x00030000 + +#define rC_RFE_Pinmux_Jaguar 0x18B4 /* Path_C RFE cotrol pinmux */ +#define rD_RFE_Pinmux_Jaguar 0x1AB4 /* Path_D RFE cotrol pinmux */ +#define rA_RFE_Sel_Jaguar2 0x1990 + + + +/* TX AGC */ +#define rTxAGC_A_CCK11_CCK1_JAguar 0xc20 +#define rTxAGC_A_Ofdm18_Ofdm6_JAguar 0xc24 +#define rTxAGC_A_Ofdm54_Ofdm24_JAguar 0xc28 +#define rTxAGC_A_MCS3_MCS0_JAguar 0xc2c +#define rTxAGC_A_MCS7_MCS4_JAguar 0xc30 +#define rTxAGC_A_MCS11_MCS8_JAguar 0xc34 +#define rTxAGC_A_MCS15_MCS12_JAguar 0xc38 +#define rTxAGC_A_Nss1Index3_Nss1Index0_JAguar 0xc3c +#define rTxAGC_A_Nss1Index7_Nss1Index4_JAguar 0xc40 +#define rTxAGC_A_Nss2Index1_Nss1Index8_JAguar 0xc44 +#define rTxAGC_A_Nss2Index5_Nss2Index2_JAguar 0xc48 +#define rTxAGC_A_Nss2Index9_Nss2Index6_JAguar 0xc4c +#define rTxAGC_B_CCK11_CCK1_JAguar 0xe20 +#define rTxAGC_B_Ofdm18_Ofdm6_JAguar 0xe24 +#define rTxAGC_B_Ofdm54_Ofdm24_JAguar 0xe28 +#define rTxAGC_B_MCS3_MCS0_JAguar 0xe2c +#define rTxAGC_B_MCS7_MCS4_JAguar 0xe30 +#define rTxAGC_B_MCS11_MCS8_JAguar 0xe34 +#define rTxAGC_B_MCS15_MCS12_JAguar 0xe38 +#define rTxAGC_B_Nss1Index3_Nss1Index0_JAguar 0xe3c +#define rTxAGC_B_Nss1Index7_Nss1Index4_JAguar 0xe40 +#define rTxAGC_B_Nss2Index1_Nss1Index8_JAguar 0xe44 +#define rTxAGC_B_Nss2Index5_Nss2Index2_JAguar 0xe48 +#define rTxAGC_B_Nss2Index9_Nss2Index6_JAguar 0xe4c +#define bTxAGC_byte0_Jaguar 0xff +#define bTxAGC_byte1_Jaguar 0xff00 +#define bTxAGC_byte2_Jaguar 0xff0000 +#define bTxAGC_byte3_Jaguar 0xff000000 + + +/* TX AGC */ +#define rTxAGC_A_CCK11_CCK1_Jaguar2 0xc20 +#define rTxAGC_A_Ofdm18_Ofdm6_Jaguar2 0xc24 +#define rTxAGC_A_Ofdm54_Ofdm24_Jaguar2 0xc28 +#define rTxAGC_A_MCS3_MCS0_Jaguar2 0xc2c +#define rTxAGC_A_MCS7_MCS4_Jaguar2 0xc30 +#define rTxAGC_A_MCS11_MCS8_Jaguar2 0xc34 +#define rTxAGC_A_MCS15_MCS12_Jaguar2 0xc38 +#define rTxAGC_A_MCS19_MCS16_Jaguar2 0xcd8 +#define rTxAGC_A_MCS23_MCS20_Jaguar2 0xcdc +#define rTxAGC_A_Nss1Index3_Nss1Index0_Jaguar2 0xc3c +#define rTxAGC_A_Nss1Index7_Nss1Index4_Jaguar2 0xc40 +#define rTxAGC_A_Nss2Index1_Nss1Index8_Jaguar2 0xc44 +#define rTxAGC_A_Nss2Index5_Nss2Index2_Jaguar2 0xc48 +#define rTxAGC_A_Nss2Index9_Nss2Index6_Jaguar2 0xc4c +#define rTxAGC_A_Nss3Index3_Nss3Index0_Jaguar2 0xce0 +#define rTxAGC_A_Nss3Index7_Nss3Index4_Jaguar2 0xce4 +#define rTxAGC_A_Nss3Index9_Nss3Index8_Jaguar2 0xce8 +#define rTxAGC_B_CCK11_CCK1_Jaguar2 0xe20 +#define rTxAGC_B_Ofdm18_Ofdm6_Jaguar2 0xe24 +#define rTxAGC_B_Ofdm54_Ofdm24_Jaguar2 0xe28 +#define rTxAGC_B_MCS3_MCS0_Jaguar2 0xe2c +#define rTxAGC_B_MCS7_MCS4_Jaguar2 0xe30 +#define rTxAGC_B_MCS11_MCS8_Jaguar2 0xe34 +#define rTxAGC_B_MCS15_MCS12_Jaguar2 0xe38 +#define rTxAGC_B_MCS19_MCS16_Jaguar2 0xed8 +#define rTxAGC_B_MCS23_MCS20_Jaguar2 0xedc +#define rTxAGC_B_Nss1Index3_Nss1Index0_Jaguar2 0xe3c +#define rTxAGC_B_Nss1Index7_Nss1Index4_Jaguar2 0xe40 +#define rTxAGC_B_Nss2Index1_Nss1Index8_Jaguar2 0xe44 +#define rTxAGC_B_Nss2Index5_Nss2Index2_Jaguar2 0xe48 +#define rTxAGC_B_Nss2Index9_Nss2Index6_Jaguar2 0xe4c +#define rTxAGC_B_Nss3Index3_Nss3Index0_Jaguar2 0xee0 +#define rTxAGC_B_Nss3Index7_Nss3Index4_Jaguar2 0xee4 +#define rTxAGC_B_Nss3Index9_Nss3Index8_Jaguar2 0xee8 +#define rTxAGC_C_CCK11_CCK1_Jaguar2 0x1820 +#define rTxAGC_C_Ofdm18_Ofdm6_Jaguar2 0x1824 +#define rTxAGC_C_Ofdm54_Ofdm24_Jaguar2 0x1828 +#define rTxAGC_C_MCS3_MCS0_Jaguar2 0x182c +#define rTxAGC_C_MCS7_MCS4_Jaguar2 0x1830 +#define rTxAGC_C_MCS11_MCS8_Jaguar2 0x1834 +#define rTxAGC_C_MCS15_MCS12_Jaguar2 0x1838 +#define rTxAGC_C_MCS19_MCS16_Jaguar2 0x18d8 +#define rTxAGC_C_MCS23_MCS20_Jaguar2 0x18dc +#define rTxAGC_C_Nss1Index3_Nss1Index0_Jaguar2 0x183c +#define rTxAGC_C_Nss1Index7_Nss1Index4_Jaguar2 0x1840 +#define rTxAGC_C_Nss2Index1_Nss1Index8_Jaguar2 0x1844 +#define rTxAGC_C_Nss2Index5_Nss2Index2_Jaguar2 0x1848 +#define rTxAGC_C_Nss2Index9_Nss2Index6_Jaguar2 0x184c +#define rTxAGC_C_Nss3Index3_Nss3Index0_Jaguar2 0x18e0 +#define rTxAGC_C_Nss3Index7_Nss3Index4_Jaguar2 0x18e4 +#define rTxAGC_C_Nss3Index9_Nss3Index8_Jaguar2 0x18e8 +#define rTxAGC_D_CCK11_CCK1_Jaguar2 0x1a20 +#define rTxAGC_D_Ofdm18_Ofdm6_Jaguar2 0x1a24 +#define rTxAGC_D_Ofdm54_Ofdm24_Jaguar2 0x1a28 +#define rTxAGC_D_MCS3_MCS0_Jaguar2 0x1a2c +#define rTxAGC_D_MCS7_MCS4_Jaguar2 0x1a30 +#define rTxAGC_D_MCS11_MCS8_Jaguar2 0x1a34 +#define rTxAGC_D_MCS15_MCS12_Jaguar2 0x1a38 +#define rTxAGC_D_MCS19_MCS16_Jaguar2 0x1ad8 +#define rTxAGC_D_MCS23_MCS20_Jaguar2 0x1adc +#define rTxAGC_D_Nss1Index3_Nss1Index0_Jaguar2 0x1a3c +#define rTxAGC_D_Nss1Index7_Nss1Index4_Jaguar2 0x1a40 +#define rTxAGC_D_Nss2Index1_Nss1Index8_Jaguar2 0x1a44 +#define rTxAGC_D_Nss2Index5_Nss2Index2_Jaguar2 0x1a48 +#define rTxAGC_D_Nss2Index9_Nss2Index6_Jaguar2 0x1a4c +#define rTxAGC_D_Nss3Index3_Nss3Index0_Jaguar2 0x1ae0 +#define rTxAGC_D_Nss3Index7_Nss3Index4_Jaguar2 0x1ae4 +#define rTxAGC_D_Nss3Index9_Nss3Index8_Jaguar2 0x1ae8 +/* IQK YN: temporaily mask this part + * #define rFPGA0_IQK 0xe28 + * #define rTx_IQK_Tone_A 0xe30 + * #define rRx_IQK_Tone_A 0xe34 + * #define rTx_IQK_PI_A 0xe38 + * #define rRx_IQK_PI_A 0xe3c */ + +/* #define rTx_IQK 0xe40 */ +/* #define rRx_IQK 0xe44 */ +/* #define rIQK_AGC_Pts 0xe48 */ +/* #define rIQK_AGC_Rsp 0xe4c */ +/* #define rTx_IQK_Tone_B 0xe50 */ +/* #define rRx_IQK_Tone_B 0xe54 */ +/* #define rTx_IQK_PI_B 0xe58 */ +/* #define rRx_IQK_PI_B 0xe5c */ +/* #define rIQK_AGC_Cont 0xe60 */ + + +/* AFE-related */ +#define rA_AFEPwr1_Jaguar 0xc60 /* dynamic AFE power control */ +#define rA_AFEPwr2_Jaguar 0xc64 /* dynamic AFE power control */ +#define rA_Rx_WaitCCA_Tx_CCKRFON_Jaguar 0xc68 +#define rA_Tx_CCKBBON_OFDMRFON_Jaguar 0xc6c +#define rA_Tx_OFDMBBON_Tx2Rx_Jaguar 0xc70 +#define rA_Tx2Tx_RXCCK_Jaguar 0xc74 +#define rA_Rx_OFDM_WaitRIFS_Jaguar 0xc78 +#define rA_Rx2Rx_BT_Jaguar 0xc7c +#define rA_sleep_nav_Jaguar 0xc80 +#define rA_pmpd_Jaguar 0xc84 +#define rB_AFEPwr1_Jaguar 0xe60 /* dynamic AFE power control */ +#define rB_AFEPwr2_Jaguar 0xe64 /* dynamic AFE power control */ +#define rB_Rx_WaitCCA_Tx_CCKRFON_Jaguar 0xe68 +#define rB_Tx_CCKBBON_OFDMRFON_Jaguar 0xe6c +#define rB_Tx_OFDMBBON_Tx2Rx_Jaguar 0xe70 +#define rB_Tx2Tx_RXCCK_Jaguar 0xe74 +#define rB_Rx_OFDM_WaitRIFS_Jaguar 0xe78 +#define rB_Rx2Rx_BT_Jaguar 0xe7c +#define rB_sleep_nav_Jaguar 0xe80 +#define rB_pmpd_Jaguar 0xe84 + + +/* YN: mask these registers temporaily + * #define rTx_Power_Before_IQK_A 0xe94 + * #define rTx_Power_After_IQK_A 0xe9c */ + +/* #define rRx_Power_Before_IQK_A 0xea0 */ +/* #define rRx_Power_Before_IQK_A_2 0xea4 */ +/* #define rRx_Power_After_IQK_A 0xea8 */ +/* #define rRx_Power_After_IQK_A_2 0xeac */ + +/* #define rTx_Power_Before_IQK_B 0xeb4 */ +/* #define rTx_Power_After_IQK_B 0xebc */ + +/* #define rRx_Power_Before_IQK_B 0xec0 */ +/* #define rRx_Power_Before_IQK_B_2 0xec4 */ +/* #define rRx_Power_After_IQK_B 0xec8 */ +/* #define rRx_Power_After_IQK_B_2 0xecc */ + + +/* RSSI Dump */ +#define rA_RSSIDump_Jaguar 0xBF0 +#define rB_RSSIDump_Jaguar 0xBF1 +#define rS1_RXevmDump_Jaguar 0xBF4 +#define rS2_RXevmDump_Jaguar 0xBF5 +#define rA_RXsnrDump_Jaguar 0xBF6 +#define rB_RXsnrDump_Jaguar 0xBF7 +#define rA_CfoShortDump_Jaguar 0xBF8 +#define rB_CfoShortDump_Jaguar 0xBFA +#define rA_CfoLongDump_Jaguar 0xBEC +#define rB_CfoLongDump_Jaguar 0xBEE + + +/* RF Register + * */ +#define RF_AC_Jaguar 0x00 /* */ +#define RF_RF_Top_Jaguar 0x07 /* */ +#define RF_TXLOK_Jaguar 0x08 /* */ +#define RF_TXAPK_Jaguar 0x0B +#define RF_CHNLBW_Jaguar 0x18 /* RF channel and BW switch */ +#define RF_RCK1_Jaguar 0x1c /* */ +#define RF_RCK2_Jaguar 0x1d +#define RF_RCK3_Jaguar 0x1e +#define RF_ModeTableAddr 0x30 +#define RF_ModeTableData0 0x31 +#define RF_ModeTableData1 0x32 +#define RF_TxLCTank_Jaguar 0x54 +#define RF_APK_Jaguar 0x63 +#define RF_LCK 0xB4 +#define RF_WeLut_Jaguar 0xEF + +#define bRF_CHNLBW_MOD_AG_Jaguar 0x70300 +#define bRF_CHNLBW_BW 0xc00 + + +/* + * RL6052 Register definition + * */ +#define RF_AC 0x00 /* */ +#define RF_IPA_A 0x0C /* */ +#define RF_TXBIAS_A 0x0D +#define RF_BS_PA_APSET_G9_G11 0x0E +#define RF_MODE1 0x10 /* */ +#define RF_MODE2 0x11 /* */ +#define RF_CHNLBW 0x18 /* RF channel and BW switch */ +#define RF_RCK_OS 0x30 /* RF TX PA control */ +#define RF_TXPA_G1 0x31 /* RF TX PA control */ +#define RF_TXPA_G2 0x32 /* RF TX PA control */ +#define RF_TXPA_G3 0x33 /* RF TX PA control */ +#define RF_0x52 0x52 +#define RF_WE_LUT 0xEF + +/* + * Bit Mask + * + * 1. Page1(0x100) */ +#define bBBResetB 0x100 /* Useless now? */ +#define bGlobalResetB 0x200 +#define bOFDMTxStart 0x4 +#define bCCKTxStart 0x8 +#define bCRC32Debug 0x100 +#define bPMACLoopback 0x10 +#define bTxLSIG 0xffffff +#define bOFDMTxRate 0xf +#define bOFDMTxReserved 0x10 +#define bOFDMTxLength 0x1ffe0 +#define bOFDMTxParity 0x20000 +#define bTxHTSIG1 0xffffff +#define bTxHTMCSRate 0x7f +#define bTxHTBW 0x80 +#define bTxHTLength 0xffff00 +#define bTxHTSIG2 0xffffff +#define bTxHTSmoothing 0x1 +#define bTxHTSounding 0x2 +#define bTxHTReserved 0x4 +#define bTxHTAggreation 0x8 +#define bTxHTSTBC 0x30 +#define bTxHTAdvanceCoding 0x40 +#define bTxHTShortGI 0x80 +#define bTxHTNumberHT_LTF 0x300 +#define bTxHTCRC8 0x3fc00 +#define bCounterReset 0x10000 +#define bNumOfOFDMTx 0xffff +#define bNumOfCCKTx 0xffff0000 +#define bTxIdleInterval 0xffff +#define bOFDMService 0xffff0000 +#define bTxMACHeader 0xffffffff +#define bTxDataInit 0xff +#define bTxHTMode 0x100 +#define bTxDataType 0x30000 +#define bTxRandomSeed 0xffffffff +#define bCCKTxPreamble 0x1 +#define bCCKTxSFD 0xffff0000 +#define bCCKTxSIG 0xff +#define bCCKTxService 0xff00 +#define bCCKLengthExt 0x8000 +#define bCCKTxLength 0xffff0000 +#define bCCKTxCRC16 0xffff +#define bCCKTxStatus 0x1 +#define bOFDMTxStatus 0x2 + + +/* + * 1. PMAC duplicate register due to connection: RF_Mode, TRxRN, NumOf L-STF + * 1. Page1(0x100) + * */ +#define rPMAC_Reset 0x100 +#define rPMAC_TxStart 0x104 +#define rPMAC_TxLegacySIG 0x108 +#define rPMAC_TxHTSIG1 0x10c +#define rPMAC_TxHTSIG2 0x110 +#define rPMAC_PHYDebug 0x114 +#define rPMAC_TxPacketNum 0x118 +#define rPMAC_TxIdle 0x11c +#define rPMAC_TxMACHeader0 0x120 +#define rPMAC_TxMACHeader1 0x124 +#define rPMAC_TxMACHeader2 0x128 +#define rPMAC_TxMACHeader3 0x12c +#define rPMAC_TxMACHeader4 0x130 +#define rPMAC_TxMACHeader5 0x134 +#define rPMAC_TxDataType 0x138 +#define rPMAC_TxRandomSeed 0x13c +#define rPMAC_CCKPLCPPreamble 0x140 +#define rPMAC_CCKPLCPHeader 0x144 +#define rPMAC_CCKCRC16 0x148 +#define rPMAC_OFDMRxCRC32OK 0x170 +#define rPMAC_OFDMRxCRC32Er 0x174 +#define rPMAC_OFDMRxParityEr 0x178 +#define rPMAC_OFDMRxCRC8Er 0x17c +#define rPMAC_CCKCRxRC16Er 0x180 +#define rPMAC_CCKCRxRC32Er 0x184 +#define rPMAC_CCKCRxRC32OK 0x188 +#define rPMAC_TxStatus 0x18c + +/* + * 3. Page8(0x800) + * */ +#define rFPGA0_RFMOD 0x800 /* RF mode & CCK TxSC */ /* RF BW Setting?? */ + +#define rFPGA0_TxInfo 0x804 /* Status report?? */ +#define rFPGA0_PSDFunction 0x808 +#define rFPGA0_TxGainStage 0x80c /* Set TX PWR init gain? */ + +#define rFPGA0_XA_HSSIParameter1 0x820 /* RF 3 wire register */ +#define rFPGA0_XA_HSSIParameter2 0x824 +#define rFPGA0_XB_HSSIParameter1 0x828 +#define rFPGA0_XB_HSSIParameter2 0x82c + +#define rFPGA0_XA_LSSIParameter 0x840 +#define rFPGA0_XB_LSSIParameter 0x844 + +#define rFPGA0_XAB_SwitchControl 0x858 /* RF Channel switch */ +#define rFPGA0_XCD_SwitchControl 0x85c + +#define rFPGA0_XAB_RFParameter 0x878 /* RF Parameter */ +#define rFPGA0_XCD_RFParameter 0x87c + +#define rFPGA0_AnalogParameter1 0x880 /* Crystal cap setting RF-R/W protection for parameter4?? */ +#define rFPGA0_AnalogParameter2 0x884 +#define rFPGA0_AnalogParameter3 0x888 +#define rFPGA0_AdDaClockEn 0x888 /* enable ad/da clock1 for dual-phy */ +#define rFPGA0_AnalogParameter4 0x88c + +#define rFPGA0_XA_LSSIReadBack 0x8a0 /* Tranceiver LSSI Readback */ +#define rFPGA0_XB_LSSIReadBack 0x8a4 +#define rFPGA0_XC_LSSIReadBack 0x8a8 +#define rFPGA0_XD_LSSIReadBack 0x8ac + +#define rFPGA0_XCD_RFPara 0x8b4 +#define rFPGA0_PSDReport 0x8b4 /* Useless now */ +#define TransceiverA_HSPI_Readback 0x8b8 /* Transceiver A HSPI Readback */ +#define TransceiverB_HSPI_Readback 0x8bc /* Transceiver B HSPI Readback */ +#define rFPGA0_XAB_RFInterfaceRB 0x8e0 /* Useless now */ /* RF Interface Readback Value */ +#define rFPGA0_XCD_RFInterfaceRB 0x8e4 /* Useless now */ + +/* + * 4. Page9(0x900) + * */ +#define rFPGA1_RFMOD 0x900 /* RF mode & OFDM TxSC */ /* RF BW Setting?? */ +#define REG_BB_TX_PATH_SEL_1_8814A 0x93c +#define REG_BB_TX_PATH_SEL_2_8814A 0x940 +#define rFPGA1_TxBlock 0x904 /* Useless now */ +#define rFPGA1_DebugSelect 0x908 /* Useless now */ +#define rFPGA1_TxInfo 0x90c /* Useless now */ /* Status report?? */ +/*Page 19 for TxBF*/ +#define REG_BB_TXBF_ANT_SET_BF1_8814A 0x19ac +#define REG_BB_TXBF_ANT_SET_BF0_8814A 0x19b4 +/* + * PageA(0xA00) + * */ +#define rCCK0_System 0xa00 +#define rCCK0_AFESetting 0xa04 /* Disable init gain now */ /* Select RX path by RSSI */ +#define rCCK0_DSPParameter2 0xa1c /* SQ threshold */ +#define rCCK0_TxFilter1 0xa20 +#define rCCK0_TxFilter2 0xa24 +#define rCCK0_DebugPort 0xa28 /* debug port and Tx filter3 */ +#define rCCK0_FalseAlarmReport 0xa2c /* 0xa2d useless now 0xa30-a4f channel report */ + +/* + * PageB(0xB00) + * */ +#define rPdp_AntA 0xb00 +#define rPdp_AntA_4 0xb04 +#define rConfig_Pmpd_AntA 0xb28 +#define rConfig_AntA 0xb68 +#define rConfig_AntB 0xb6c +#define rPdp_AntB 0xb70 +#define rPdp_AntB_4 0xb74 +#define rConfig_Pmpd_AntB 0xb98 +#define rAPK 0xbd8 + +/* + * 6. PageC(0xC00) + * */ +#define rOFDM0_LSTF 0xc00 + +#define rOFDM0_TRxPathEnable 0xc04 +#define rOFDM0_TRMuxPar 0xc08 +#define rOFDM0_TRSWIsolation 0xc0c + +#define rOFDM0_XARxAFE 0xc10 /* RxIQ DC offset, Rx digital filter, DC notch filter */ +#define rOFDM0_XARxIQImbalance 0xc14 /* RxIQ imblance matrix */ +#define rOFDM0_XBRxAFE 0xc18 +#define rOFDM0_XBRxIQImbalance 0xc1c +#define rOFDM0_XCRxAFE 0xc20 +#define rOFDM0_XCRxIQImbalance 0xc24 +#define rOFDM0_XDRxAFE 0xc28 +#define rOFDM0_XDRxIQImbalance 0xc2c + +#define rOFDM0_RxDetector1 0xc30 /* PD, BW & SBD */ /* DM tune init gain */ +#define rOFDM0_RxDetector2 0xc34 /* SBD & Fame Sync. */ +#define rOFDM0_RxDetector3 0xc38 /* Frame Sync. */ +#define rOFDM0_RxDetector4 0xc3c /* PD, SBD, Frame Sync & Short-GI */ + +#define rOFDM0_RxDSP 0xc40 /* Rx Sync Path */ +#define rOFDM0_CFOandDAGC 0xc44 /* CFO & DAGC */ +#define rOFDM0_CCADropThreshold 0xc48 /* CCA Drop threshold */ +#define rOFDM0_ECCAThreshold 0xc4c /* energy CCA */ + +#define rOFDM0_XAAGCCore1 0xc50 /* DIG */ +#define rOFDM0_XAAGCCore2 0xc54 +#define rOFDM0_XBAGCCore1 0xc58 +#define rOFDM0_XBAGCCore2 0xc5c +#define rOFDM0_XCAGCCore1 0xc60 +#define rOFDM0_XCAGCCore2 0xc64 +#define rOFDM0_XDAGCCore1 0xc68 +#define rOFDM0_XDAGCCore2 0xc6c + +#define rOFDM0_AGCParameter1 0xc70 +#define rOFDM0_AGCParameter2 0xc74 +#define rOFDM0_AGCRSSITable 0xc78 +#define rOFDM0_HTSTFAGC 0xc7c + +#define rOFDM0_XATxIQImbalance 0xc80 /* TX PWR TRACK and DIG */ +#define rOFDM0_XATxAFE 0xc84 +#define rOFDM0_XBTxIQImbalance 0xc88 +#define rOFDM0_XBTxAFE 0xc8c +#define rOFDM0_XCTxIQImbalance 0xc90 +#define rOFDM0_XCTxAFE 0xc94 +#define rOFDM0_XDTxIQImbalance 0xc98 +#define rOFDM0_XDTxAFE 0xc9c + +#define rOFDM0_RxIQExtAnta 0xca0 +#define rOFDM0_TxCoeff1 0xca4 +#define rOFDM0_TxCoeff2 0xca8 +#define rOFDM0_TxCoeff3 0xcac +#define rOFDM0_TxCoeff4 0xcb0 +#define rOFDM0_TxCoeff5 0xcb4 +#define rOFDM0_TxCoeff6 0xcb8 +#define rOFDM0_RxHPParameter 0xce0 +#define rOFDM0_TxPseudoNoiseWgt 0xce4 +#define rOFDM0_FrameSync 0xcf0 +#define rOFDM0_DFSReport 0xcf4 + +/* + * 7. PageD(0xD00) + * */ +#define rOFDM1_LSTF 0xd00 +#define rOFDM1_TRxPathEnable 0xd04 + +/* + * 8. PageE(0xE00) + * */ +#define rTxAGC_A_Rate18_06 0xe00 +#define rTxAGC_A_Rate54_24 0xe04 +#define rTxAGC_A_CCK1_Mcs32 0xe08 +#define rTxAGC_A_Mcs03_Mcs00 0xe10 +#define rTxAGC_A_Mcs07_Mcs04 0xe14 +#define rTxAGC_A_Mcs11_Mcs08 0xe18 +#define rTxAGC_A_Mcs15_Mcs12 0xe1c + +#define rTxAGC_B_Rate18_06 0x830 +#define rTxAGC_B_Rate54_24 0x834 +#define rTxAGC_B_CCK1_55_Mcs32 0x838 +#define rTxAGC_B_Mcs03_Mcs00 0x83c +#define rTxAGC_B_Mcs07_Mcs04 0x848 +#define rTxAGC_B_Mcs11_Mcs08 0x84c +#define rTxAGC_B_Mcs15_Mcs12 0x868 +#define rTxAGC_B_CCK11_A_CCK2_11 0x86c + +#define rFPGA0_IQK 0xe28 +#define rTx_IQK_Tone_A 0xe30 +#define rRx_IQK_Tone_A 0xe34 +#define rTx_IQK_PI_A 0xe38 +#define rRx_IQK_PI_A 0xe3c + +#define rTx_IQK 0xe40 +#define rRx_IQK 0xe44 +#define rIQK_AGC_Pts 0xe48 +#define rIQK_AGC_Rsp 0xe4c +#define rTx_IQK_Tone_B 0xe50 +#define rRx_IQK_Tone_B 0xe54 +#define rTx_IQK_PI_B 0xe58 +#define rRx_IQK_PI_B 0xe5c +#define rIQK_AGC_Cont 0xe60 + +#define rBlue_Tooth 0xe6c +#define rRx_Wait_CCA 0xe70 +#define rTx_CCK_RFON 0xe74 +#define rTx_CCK_BBON 0xe78 +#define rTx_OFDM_RFON 0xe7c +#define rTx_OFDM_BBON 0xe80 +#define rTx_To_Rx 0xe84 +#define rTx_To_Tx 0xe88 +#define rRx_CCK 0xe8c + +#define rTx_Power_Before_IQK_A 0xe94 +#define rTx_Power_After_IQK_A 0xe9c + +#define rRx_Power_Before_IQK_A 0xea0 +#define rRx_Power_Before_IQK_A_2 0xea4 +#define rRx_Power_After_IQK_A 0xea8 +#define rRx_Power_After_IQK_A_2 0xeac + +#define rTx_Power_Before_IQK_B 0xeb4 +#define rTx_Power_After_IQK_B 0xebc + +#define rRx_Power_Before_IQK_B 0xec0 +#define rRx_Power_Before_IQK_B_2 0xec4 +#define rRx_Power_After_IQK_B 0xec8 +#define rRx_Power_After_IQK_B_2 0xecc + +#define rRx_OFDM 0xed0 +#define rRx_Wait_RIFS 0xed4 +#define rRx_TO_Rx 0xed8 +#define rStandby 0xedc +#define rSleep 0xee0 +#define rPMPD_ANAEN 0xeec + + +/* 2. Page8(0x800) */ +#define bRFMOD 0x1 /* Reg 0x800 rFPGA0_RFMOD */ +#define bJapanMode 0x2 +#define bCCKTxSC 0x30 +#define bCCKEn 0x1000000 +#define bOFDMEn 0x2000000 +#define bXBTxAGC 0xf00 /* Reg 80c rFPGA0_TxGainStage */ +#define bXCTxAGC 0xf000 +#define bXDTxAGC 0xf0000 + +/* 4. PageA(0xA00) */ +#define bCCKBBMode 0x3 /* Useless */ +#define bCCKTxPowerSaving 0x80 +#define bCCKRxPowerSaving 0x40 + +#define bCCKSideBand 0x10 /* Reg 0xa00 rCCK0_System 20/40 switch */ + +#define bCCKScramble 0x8 /* Useless */ +#define bCCKAntDiversity 0x8000 +#define bCCKCarrierRecovery 0x4000 +#define bCCKTxRate 0x3000 +#define bCCKDCCancel 0x0800 +#define bCCKISICancel 0x0400 +#define bCCKMatchFilter 0x0200 +#define bCCKEqualizer 0x0100 +#define bCCKPreambleDetect 0x800000 +#define bCCKFastFalseCCA 0x400000 +#define bCCKChEstStart 0x300000 +#define bCCKCCACount 0x080000 +#define bCCKcs_lim 0x070000 +#define bCCKBistMode 0x80000000 +#define bCCKCCAMask 0x40000000 +#define bCCKTxDACPhase 0x4 +#define bCCKRxADCPhase 0x20000000 /* r_rx_clk */ +#define bCCKr_cp_mode0 0x0100 +#define bCCKTxDCOffset 0xf0 +#define bCCKRxDCOffset 0xf +#define bCCKCCAMode 0xc000 +#define bCCKFalseCS_lim 0x3f00 +#define bCCKCS_ratio 0xc00000 +#define bCCKCorgBit_sel 0x300000 +#define bCCKPD_lim 0x0f0000 +#define bCCKNewCCA 0x80000000 +#define bCCKRxHPofIG 0x8000 +#define bCCKRxIG 0x7f00 +#define bCCKLNAPolarity 0x800000 +#define bCCKRx1stGain 0x7f0000 +#define bCCKRFExtend 0x20000000 /* CCK Rx Iinital gain polarity */ +#define bCCKRxAGCSatLevel 0x1f000000 +#define bCCKRxAGCSatCount 0xe0 +#define bCCKRxRFSettle 0x1f /* AGCsamp_dly */ +#define bCCKFixedRxAGC 0x8000 +/* #define bCCKRxAGCFormat 0x4000 */ /* remove to HSSI register 0x824 */ +#define bCCKAntennaPolarity 0x2000 +#define bCCKTxFilterType 0x0c00 +#define bCCKRxAGCReportType 0x0300 +#define bCCKRxDAGCEn 0x80000000 +#define bCCKRxDAGCPeriod 0x20000000 +#define bCCKRxDAGCSatLevel 0x1f000000 +#define bCCKTimingRecovery 0x800000 +#define bCCKTxC0 0x3f0000 +#define bCCKTxC1 0x3f000000 +#define bCCKTxC2 0x3f +#define bCCKTxC3 0x3f00 +#define bCCKTxC4 0x3f0000 +#define bCCKTxC5 0x3f000000 +#define bCCKTxC6 0x3f +#define bCCKTxC7 0x3f00 +#define bCCKDebugPort 0xff0000 +#define bCCKDACDebug 0x0f000000 +#define bCCKFalseAlarmEnable 0x8000 +#define bCCKFalseAlarmRead 0x4000 +#define bCCKTRSSI 0x7f +#define bCCKRxAGCReport 0xfe +#define bCCKRxReport_AntSel 0x80000000 +#define bCCKRxReport_MFOff 0x40000000 +#define bCCKRxRxReport_SQLoss 0x20000000 +#define bCCKRxReport_Pktloss 0x10000000 +#define bCCKRxReport_Lockedbit 0x08000000 +#define bCCKRxReport_RateError 0x04000000 +#define bCCKRxReport_RxRate 0x03000000 +#define bCCKRxFACounterLower 0xff +#define bCCKRxFACounterUpper 0xff000000 +#define bCCKRxHPAGCStart 0xe000 +#define bCCKRxHPAGCFinal 0x1c00 +#define bCCKRxFalseAlarmEnable 0x8000 +#define bCCKFACounterFreeze 0x4000 +#define bCCKTxPathSel 0x10000000 +#define bCCKDefaultRxPath 0xc000000 +#define bCCKOptionRxPath 0x3000000 + +#define RF_T_METER_88E 0x42 + +/* 6. PageE(0xE00) */ +#define bSTBCEn 0x4 /* Useless */ +#define bAntennaMapping 0x10 +#define bNss 0x20 +#define bCFOAntSumD 0x200 +#define bPHYCounterReset 0x8000000 +#define bCFOReportGet 0x4000000 +#define bOFDMContinueTx 0x10000000 +#define bOFDMSingleCarrier 0x20000000 +#define bOFDMSingleTone 0x40000000 + + +/* + * Other Definition + * */ + +#define bEnable 0x1 /* Useless */ +#define bDisable 0x0 + +/* byte endable for srwrite */ +#define bByte0 0x1 /* Useless */ +#define bByte1 0x2 +#define bByte2 0x4 +#define bByte3 0x8 +#define bWord0 0x3 +#define bWord1 0xc +#define bDWord 0xf + +/* for PutRegsetting & GetRegSetting BitMask */ +#define bMaskByte0 0xff /* Reg 0xc50 rOFDM0_XAAGCCore~0xC6f */ +#define bMaskByte1 0xff00 +#define bMaskByte2 0xff0000 +#define bMaskByte3 0xff000000 +#define bMaskHWord 0xffff0000 +#define bMaskLWord 0x0000ffff +#define bMaskDWord 0xffffffff +#define bMaskH3Bytes 0xffffff00 +#define bMask12Bits 0xfff +#define bMaskH4Bits 0xf0000000 +#define bMaskOFDM_D 0xffc00000 +#define bMaskCCK 0x3f3f3f3f +#define bMask7bits 0x7f +#define bMaskByte2HighNibble 0x00f00000 +#define bMaskByte3LowNibble 0x0f000000 +#define bMaskL3Bytes 0x00ffffff + +/*--------------------------Define Parameters-------------------------------*/ + + +#endif diff --git a/hal/Hal8814PwrSeq.c b/hal/Hal8814PwrSeq.c new file mode 100644 index 0000000..a14b600 --- /dev/null +++ b/hal/Hal8814PwrSeq.c @@ -0,0 +1,87 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ + +#include "Hal8814PwrSeq.h" +/* devourer adaptation: upstream pulls rtl8814a_hal.h here for incidental + * typedefs that this file doesn't actually use. Skipping the include avoids + * dragging the full 8814 HAL include chain into the build for what is in + * essence just data. The WLAN_PWR_CFG struct + RTL8814A_TRANS_* macros come + * from Hal8814PwrSeq.h / HalPwrSeqCmd.h. */ + +/* + drivers should parse below arrays and do the corresponding actions +*/ +/* 3 Power on Array */ +WLAN_PWR_CFG rtl8814A_power_on_flow[RTL8814A_TRANS_CARDEMU_TO_ACT_STEPS + RTL8814A_TRANS_END_STEPS] = { + RTL8814A_TRANS_CARDEMU_TO_ACT + RTL8814A_TRANS_END +}; + +/* 3Radio off GPIO Array */ +WLAN_PWR_CFG rtl8814A_radio_off_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS + RTL8814A_TRANS_END_STEPS] = { + RTL8814A_TRANS_ACT_TO_CARDEMU + RTL8814A_TRANS_END +}; + +/* 3Card Disable Array */ +WLAN_PWR_CFG rtl8814A_card_disable_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS + RTL8814A_TRANS_CARDEMU_TO_PDN_STEPS + RTL8814A_TRANS_END_STEPS] = { + RTL8814A_TRANS_ACT_TO_CARDEMU + RTL8814A_TRANS_CARDEMU_TO_CARDDIS + RTL8814A_TRANS_END +}; + +/* 3 Card Enable Array */ +WLAN_PWR_CFG rtl8814A_card_enable_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS + RTL8814A_TRANS_CARDEMU_TO_PDN_STEPS + RTL8814A_TRANS_END_STEPS] = { + RTL8814A_TRANS_CARDDIS_TO_CARDEMU + RTL8814A_TRANS_CARDEMU_TO_ACT + RTL8814A_TRANS_END +}; + +/* 3Suspend Array */ +WLAN_PWR_CFG rtl8814A_suspend_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS + RTL8814A_TRANS_CARDEMU_TO_SUS_STEPS + RTL8814A_TRANS_END_STEPS] = { + RTL8814A_TRANS_ACT_TO_CARDEMU + RTL8814A_TRANS_CARDEMU_TO_SUS + RTL8814A_TRANS_END +}; + +/* 3 Resume Array */ +WLAN_PWR_CFG rtl8814A_resume_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS + RTL8814A_TRANS_CARDEMU_TO_SUS_STEPS + RTL8814A_TRANS_END_STEPS] = { + RTL8814A_TRANS_SUS_TO_CARDEMU + RTL8814A_TRANS_CARDEMU_TO_ACT + RTL8814A_TRANS_END +}; + + + +/* 3HWPDN Array */ +WLAN_PWR_CFG rtl8814A_hwpdn_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS + RTL8814A_TRANS_CARDEMU_TO_PDN_STEPS + RTL8814A_TRANS_END_STEPS] = { + RTL8814A_TRANS_ACT_TO_CARDEMU + RTL8814A_TRANS_CARDEMU_TO_PDN + RTL8814A_TRANS_END +}; + +/* 3 Enter LPS */ +WLAN_PWR_CFG rtl8814A_enter_lps_flow[RTL8814A_TRANS_ACT_TO_LPS_STEPS + RTL8814A_TRANS_END_STEPS] = { + /* FW behavior */ + RTL8814A_TRANS_ACT_TO_LPS + RTL8814A_TRANS_END +}; + +/* 3 Leave LPS */ +WLAN_PWR_CFG rtl8814A_leave_lps_flow[RTL8814A_TRANS_LPS_TO_ACT_STEPS + RTL8814A_TRANS_END_STEPS] = { + /* FW behavior */ + RTL8814A_TRANS_LPS_TO_ACT + RTL8814A_TRANS_END +}; diff --git a/hal/Hal8814PwrSeq.h b/hal/Hal8814PwrSeq.h new file mode 100644 index 0000000..0138850 --- /dev/null +++ b/hal/Hal8814PwrSeq.h @@ -0,0 +1,231 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ + + +#ifndef __HAL8814PWRSEQ_H__ +#define __HAL8814PWRSEQ_H__ + +#include "HalPwrSeqCmd.h" + +/* + Check document WB-110628-DZ-RTL8195 (Jaguar) Power Architecture-R04.pdf + There are 6 HW Power States: + 0: POFF--Power Off + 1: PDN--Power Down + 2: CARDEMU--Card Emulation + 3: ACT--Active Mode + 4: LPS--Low Power State + 5: SUS--Suspend + + The transision from different states are defined below + TRANS_CARDEMU_TO_ACT + TRANS_ACT_TO_CARDEMU + TRANS_CARDEMU_TO_SUS + TRANS_SUS_TO_CARDEMU + TRANS_CARDEMU_TO_PDN + TRANS_ACT_TO_LPS + TRANS_LPS_TO_ACT + + TRANS_END +*/ +#define RTL8814A_TRANS_CARDEMU_TO_ACT_STEPS 16 +#define RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS 20 +#define RTL8814A_TRANS_CARDEMU_TO_SUS_STEPS 17 +#define RTL8814A_TRANS_SUS_TO_CARDEMU_STEPS 15 +#define RTL8814A_TRANS_CARDEMU_TO_PDN_STEPS 17 +#define RTL8814A_TRANS_PDN_TO_CARDEMU_STEPS 16 +#define RTL8814A_TRANS_ACT_TO_LPS_STEPS 20 +#define RTL8814A_TRANS_LPS_TO_ACT_STEPS 15 +#define RTL8814A_TRANS_END_STEPS 1 + + +#define RTL8814A_TRANS_CARDEMU_TO_ACT \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT2, 0},/* disable SW LPS 0x04[10]=0*/ \ + {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT1, BIT1},/* wait till 0x04[17] = 1 power ready*/ \ + {0x002B, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0}, /* ??0x28[24]=1, enable pll phase select*/ \ + {0x0015, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, (BIT3 | BIT2 | BIT1), (BIT3 | BIT2 | BIT1)},/* 0x14[11:9]=3'b111, OCP current threshold = 1.5A */ \ + {0x002D, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x0E, 0x08},/* 0x2C[11:9]=3'b100, select lpf R3 */ \ + {0x002D, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x70, 0x50},/* 0x2C[14:12]=3'b101, select lpf Rs*/ \ + {0x007B, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6, BIT6},/* 0x78[30]=1'b1, SDM order select*/ \ + /*{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, 0}, */ /* disable HWPDN 0x04[15]=0*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, 0},/* disable WL suspend*/ \ + {0x00F0, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, 0},/* */ \ + {0x0081, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x30, 0x20},/* */ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0},/* polling until return 0*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT0, 0},/**/ + +#define RTL8814A_TRANS_ACT_TO_CARDEMU \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0c00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xc00[7:0] = 4 turn off 3-wire */ \ + {0x0e00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xe00[7:0] = 4 turn off 3-wire */ \ + {0x0002, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0}, /* 0x2[0] = 0 RESET BB, CLOSE RF */ \ + {0x0002, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US}, /*Delay 1us*/ \ + {0x0002, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0}, /* Whole BB is reset*/ \ + {0x1002, (u8)(~PWR_CUT_TESTCHIP_MSK), PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0}, /* 0x2[0] = 0 RESET BB, CLOSE RF */ \ + {0x0002, (u8)(~PWR_CUT_TESTCHIP_MSK), PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US}, /*Delay 1us*/ \ + {0x1002, (u8)(~PWR_CUT_TESTCHIP_MSK), PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0}, /* Whole BB is reset*/ \ + {0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0}, /*0x1F[7:0] = 0 turn off RF*/ \ + /*{0x004E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, 0},*/ /*0x4C[23] = 0x4E[7] = 0, switch DPDT_SEL_P output from register 0x65[2] */ \ + {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x28}, /* 0x07[7:0] = 0x28 sps pwm mode 0x2a for BT coex*/ \ + {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x02, 0}, /*0x8[1] = 0 ANA clk = 500k */ \ + /*{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0 | BIT1, 0},*/ /* 0x02[1:0] = 0 reset BB */ \ + {0x0066, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, 0}, /*0x66[7]=0, disable ckreq for gpio7 output SUS */ \ + {0x0041, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, 0}, /*0x41[4]=0, disable sic for gpio7 output SUS */ \ + {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0}, /*0x42[1]=0, disable ckout for gpio7 output SUS */ \ + {0x004e, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, BIT5}, /*0x4E[5]=1, disable LED2 for gpio7 output SUS */ \ + {0x0041, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0}, /*0x41[0]=0, disable uart for gpio7 output SUS */ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1}, /*0x04[9] = 1 turn off MAC by HW state machine*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT1, 0}, /*wait till 0x04[9] = 0 polling until return 0 to disable*/ + +#define RTL8814A_TRANS_CARDEMU_TO_SUS \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0061, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x0F, 0x0c},\ + {0x0061, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x0F, 0x0E},\ + {0x0062, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x0F, 0x07},/* gpio11 input mode, gpio10~8 output mode */ \ + {0x0045, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00},/* gpio 0~7 output same value as input ?? */ \ + {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xff},/* gpio0~7 output mode */ \ + {0x0047, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0},/* 0x47[7:0] = 00 gpio mode */ \ + {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0},/* suspend option all off */ \ + {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, BIT5},/*0x14[13] = 1 turn on ZCD */ \ + {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6, BIT6},/* 0x14[14] =1 trun on ZCD */ \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, BIT4},/*0x23[4] = 1 hpon LDO sleep mode */ \ + {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0},/*0x8[1] = 0 ANA clk = 500k */ \ + {0x0091, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xA0, 0xA0}, /* 0x91[7]=1 0x91[5]=1 , disable sps, ldo sleep mode */ \ + {0x0070, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, BIT3}, /* 0x70[3]=1 enable mainbias polling */ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, BIT3}, /*0x04[11] = 1 enable WL suspend */ + +#define RTL8814A_TRANS_SUS_TO_CARDEMU \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, 0}, /*0x04[11] = 0 enable WL suspend*/ \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x10, 0},/*0x23[4] = 0 hpon LDO sleep mode leave */ \ + {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6, 0},/* 0x14[14] =0 trun off ZCD */ \ + {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, 0},/*0x14[13] = 0 turn off ZCD */ \ + {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00},/* gpio0~7 input mode */ \ + {0x0062, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00},/* gpio11 input mode, gpio10~8 input mode */ + +#define RTL8814A_TRANS_CARDEMU_TO_CARDDIS \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + /**{0x0194, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0}, //0x194[0]=0 , disable 32K clock*/ \ + /**{0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x94}, //0x93 = 0x94 , 90[30] =0 enable 500k ANA clock .switch clock from 12M to 500K , 90 [26] =0 disable EEprom loader clock*/ \ + {0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT2, 0}, /*0x03[2] = 0, reset 3081*/ \ + {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x01}, /*0x80 = 05h if reload fw, fill the default value of host_CPU handshake field*/ \ + {0x0081, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x30}, /*0x80 = 05h if reload fw, fill the default value of host_CPU handshake field*/ \ + /*{0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xF0, 0xcc},*/ \ + /*{0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xF0, 0xEC},*/ \ + /*{0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x07},*/ /* gpio11 input mode, gpio10~8 output mode */ \ + {0x0045, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00},/* gpio 0~7 output same value as input ?? */ \ + {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xff},/* gpio0~7 output mode */ \ + {0x0047, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0},/* 0x47[7:0] = 00 gpio mode */ \ + {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6, BIT6},/* 0x15[6] =1 trun on ZCD output */ \ + {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, BIT5},/*0x15[5] = 1 turn on ZCD */ \ + {0x0012, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6, 0},/*0x12[6] = 0 force PFM mode */ \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, BIT4},/*0x23[4] = 1 hpon LDO sleep mode */ \ + {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0},/*0x8[1] = 0 ANA clk = 500k */ \ + {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07 = 0x20 , SOP option to disable BG/MB*/ \ + {0x001f, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0}, /* 0x01f[1]=0 , disable RFC_0 control REG_RF_CTRL_8814A */ \ + {0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0}, /* 0x020[1]=0 , disable RFC_1 control REG_RF_CTRL_8814A */ \ + {0x0021, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0}, /* 0x021[1]=0 , disable RFC_2 control REG_RF_CTRL_8814A */ \ + {0x0076, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0}, /* 0x076[1]=0 , disable RFC_3 control REG_OPT_CTRL_8814A +2 */ \ + {0x0091, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xA0, 0xA0}, /* 0x91[7]=1 0x91[5]=1 , disable sps, ldo sleep mode */ \ + {0x0070, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, BIT3}, /* 0x70[3]=1 enable mainbias polling */ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, BIT3}, /*0x04[11] = 1 enable WL suspend*/ + +#define RTL8814A_TRANS_CARDDIS_TO_CARDEMU \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0012, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6, BIT6},/*0x12[6] = 1 force PWM mode */ \ + {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, 0},/*0x15[5] = 0 turn off ZCD */ \ + {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6, 0},/* 0x15[6] =0 trun off ZCD output */ \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, 0},/*0x23[4] = 0 hpon LDO leave sleep mode */ \ + {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00},/* gpio0~7 input mode */ \ + {0x0062, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00}, /* gpio11 input mode, gpio10~8 input mode */ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT2, 0}, /*0x04[10] = 0, enable SW LPS PCIE only*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, 0}, /*0x04[11] = 0, enable WL suspend*/ \ + /*{0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT2, BIT2},*/ /*0x03[2] = 1, enable 3081*/ \ + {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0},/*PCIe DMA start*/ \ + {0x0071, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT2, 0},/*0x70[10] = 0, CPHY_MBIAS_EN disable*/ + + +#define RTL8814A_TRANS_CARDEMU_TO_PDN \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, BIT7},/* 0x04[15] = 1*/ + +#define RTL8814A_TRANS_PDN_TO_CARDEMU \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, 0},/* 0x04[15] = 0*/ + +#define RTL8814A_TRANS_ACT_TO_LPS \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF},/*PCIe DMA stop*/ \ + {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x7F},/*Tx Pause*/ \ + {0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \ + {0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \ + {0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \ + {0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \ + {0x0c00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xc00[7:0] = 4 turn off 3-wire */ \ + {0x0e00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xe00[7:0] = 4 turn off 3-wire */ \ + {0x0002, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled, and clock are gated, and RF closed*/ \ + {0x0002, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \ + {0x0002, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0}, /* Whole BB is reset*/ \ + {0x1002, (u8)(~PWR_CUT_TESTCHIP_MSK), PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled, and clock are gated, and RF closed*/ \ + {0x0002, (u8)(~PWR_CUT_TESTCHIP_MSK), PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \ + {0x1002, (u8)(~PWR_CUT_TESTCHIP_MSK), PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0}, /* Whole BB is reset*/ \ + {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x03},/*Reset MAC TRX*/ \ + {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0},/*check if removed later*/ \ + {0x05F1, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0},/*Respond TxOK to scheduler*/ + + +#define RTL8814A_TRANS_LPS_TO_ACT \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO, PWR_CMD_WRITE, 0xFF, 0x84}, /*SDIO RPWM*/ \ + {0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84}, /*USB RPWM*/ \ + {0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84}, /*PCIe RPWM*/ \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, /* Delay*/ \ + {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, 0}, /*. 0x08[4] = 0 switch TSF to 40M*/ \ + {0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT7, 0}, /* Polling 0x109[7]=0 TSF in 40M*/ \ + /*{0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6 | BIT7, 0}, */ /*. ??0x29[7:6] = 2b'00 enable BB clock*/ \ + {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1}, /*. 0x101[1] = 1*/ \ + {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF}, /*. 0x100[7:0] = 0xFF enable WMAC TRX*/ \ + {0x0002, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1 | BIT0, BIT1 | BIT0}, /*. 0x02[1:0] = 2b'11 enable BB macro*/ \ + {0x1002, (u8)(~PWR_CUT_TESTCHIP_MSK), PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1 | BIT0, BIT1 | BIT0}, /*. 0x1002[1:0] = 2b'11 enable BB macro*/ \ + {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0}, /*. 0x522 = 0*/ + +#define RTL8814A_TRANS_END \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, 0, PWR_CMD_END, 0, 0}, + + +extern WLAN_PWR_CFG rtl8814A_power_on_flow[RTL8814A_TRANS_CARDEMU_TO_ACT_STEPS + RTL8814A_TRANS_END_STEPS]; +extern WLAN_PWR_CFG rtl8814A_radio_off_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS + RTL8814A_TRANS_END_STEPS]; +extern WLAN_PWR_CFG rtl8814A_card_disable_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS + RTL8814A_TRANS_CARDEMU_TO_PDN_STEPS + RTL8814A_TRANS_END_STEPS]; +extern WLAN_PWR_CFG rtl8814A_card_enable_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS + RTL8814A_TRANS_CARDEMU_TO_PDN_STEPS + RTL8814A_TRANS_END_STEPS]; +extern WLAN_PWR_CFG rtl8814A_suspend_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS + RTL8814A_TRANS_CARDEMU_TO_SUS_STEPS + RTL8814A_TRANS_END_STEPS]; +extern WLAN_PWR_CFG rtl8814A_resume_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS + RTL8814A_TRANS_CARDEMU_TO_SUS_STEPS + RTL8814A_TRANS_END_STEPS]; +extern WLAN_PWR_CFG rtl8814A_hwpdn_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS + RTL8814A_TRANS_CARDEMU_TO_PDN_STEPS + RTL8814A_TRANS_END_STEPS]; +extern WLAN_PWR_CFG rtl8814A_enter_lps_flow[RTL8814A_TRANS_ACT_TO_LPS_STEPS + RTL8814A_TRANS_END_STEPS]; +extern WLAN_PWR_CFG rtl8814A_leave_lps_flow[RTL8814A_TRANS_LPS_TO_ACT_STEPS + RTL8814A_TRANS_END_STEPS]; + +#endif /* __HAL8814PWRSEQ_H__ */ diff --git a/hal/hal8814a_fw.c b/hal/hal8814a_fw.c new file mode 100644 index 0000000..2eedab7 --- /dev/null +++ b/hal/hal8814a_fw.c @@ -0,0 +1,19633 @@ +/****************************************************************************** +* +* Copyright(c) 2007 - 2016 Realtek Corporation. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of version 2 of the GNU General Public License as +* published by the Free Software Foundation. +* +* This program is distributed in the hope that it will be useful, but WITHOUT +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +* more details. +* +* You should have received a copy of the GNU General Public License along with +* this program; if not, write to the Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA +* +* +******************************************************************************/ + +/* devourer adaptation: upstream gates this file on CONFIG_RTL8814A / + * LOAD_FW_HEADER_FROM_DRIVER / DM_ODM_SUPPORT_TYPE which the upstream Linux + * driver supplies via Kconfig. Mirror the inline defines pattern used in + * hal8812a_fw.c so this TU is self-contained. */ +#ifndef CONFIG_RTL8814A +#define CONFIG_RTL8814A +#endif +#ifndef LOAD_FW_HEADER_FROM_DRIVER +#define LOAD_FW_HEADER_FROM_DRIVER +#endif +#ifndef ODM_WIN +#define ODM_WIN 1 +#endif +#ifndef DM_ODM_SUPPORT_TYPE +#define DM_ODM_SUPPORT_TYPE ODM_WIN +#endif + +#ifdef CONFIG_RTL8814A + +#include "drv_types.h" + +#ifdef LOAD_FW_HEADER_FROM_DRIVER + +#if (defined(CONFIG_AP_WOWLAN) || (DM_ODM_SUPPORT_TYPE & (ODM_AP))) + +u8 array_mp_8814a_fw_ap[] = { +0x14, 0x88, 0x00, 0x00, 0x21, 0x00, 0x06, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x06, 0x0B, 0x15, 0x10, 0xE3, 0x07, 0x00, 0x00, +0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, +0x00, 0x00, 0x20, 0x80, 0x58, 0x13, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x60, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x10, 0x12, 0x80, 0x00, 0x00, 0x00, 0x80, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xE9, 0x03, 0x00, 0x80, 0xD9, 0x03, 0x00, 0x80, +0xC9, 0x03, 0x00, 0x80, 0xB9, 0x03, 0x00, 0x80, +0xA9, 0x03, 0x00, 0x80, 0x99, 0x03, 0x00, 0x80, +0xE1, 0x02, 0x00, 0x80, 0x95, 0x03, 0x00, 0x80, +0x95, 0x03, 0x00, 0x80, 0x95, 0x03, 0x00, 0x80, +0x95, 0x03, 0x00, 0x80, 0x95, 0x03, 0x00, 0x80, +0x95, 0x03, 0x00, 0x80, 0x95, 0x03, 0x00, 0x80, +0x95, 0x03, 0x00, 0x80, 0x2C, 0x00, 0x04, 0x00, +0x2D, 0x00, 0x2C, 0x01, 0x2D, 0x01, 0x2C, 0x02, +0x2E, 0x01, 0xFF, 0x00, 0x2D, 0x02, 0xFF, 0x00, +0x03, 0x02, 0x00, 0x00, 0xB9, 0x1B, 0x00, 0x80, +0xB3, 0x1B, 0x00, 0x80, 0xBF, 0x1B, 0x00, 0x80, +0xC5, 0x1B, 0x00, 0x80, 0xCB, 0x1B, 0x00, 0x80, +0xD1, 0x1B, 0x00, 0x80, 0x19, 0x32, 0x64, 0x00, +0xD1, 0x50, 0x00, 0x80, 0x0D, 0x51, 0x00, 0x80, +0xD9, 0x50, 0x00, 0x80, 0x07, 0x51, 0x00, 0x80, +0x0D, 0x51, 0x00, 0x80, 0x0D, 0x51, 0x00, 0x80, +0xE1, 0x50, 0x00, 0x80, 0xE9, 0x50, 0x00, 0x80, +0xF1, 0x50, 0x00, 0x80, 0xF9, 0x50, 0x00, 0x80, +0x0D, 0x51, 0x00, 0x80, 0x01, 0x51, 0x00, 0x80, +0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0A, 0x0A, +0x0A, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0C, 0x14, +0x1C, 0x24, 0x2C, 0x36, 0x40, 0x00, 0x00, 0x00, +0x25, 0x89, 0x00, 0x80, 0x3B, 0x89, 0x00, 0x80, +0x25, 0x89, 0x00, 0x80, 0x3B, 0x89, 0x00, 0x80, +0x25, 0x89, 0x00, 0x80, 0x3B, 0x89, 0x00, 0x80, +0x65, 0x89, 0x00, 0x80, 0x65, 0x89, 0x00, 0x80, +0x65, 0x89, 0x00, 0x80, 0x29, 0x89, 0x00, 0x80, +0x4D, 0x89, 0x00, 0x80, 0x4D, 0x89, 0x00, 0x80, +0x29, 0x89, 0x00, 0x80, 0x79, 0x89, 0x00, 0x80, +0x8F, 0x89, 0x00, 0x80, 0x06, 0x07, 0x08, 0x09, +0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, +0x12, 0x13, 0x14, 0x00, 0x24, 0x24, 0x28, 0x24, +0x14, 0x12, 0x0F, 0x0F, 0x10, 0x0E, 0x09, 0x08, +0x18, 0x18, 0x11, 0x0F, 0x10, 0x0C, 0x09, 0x08, +0x18, 0x18, 0x11, 0x0F, 0x10, 0x0C, 0x09, 0x08, +0x18, 0x18, 0x11, 0x0F, 0x10, 0x0C, 0x09, 0x08, +0x18, 0x18, 0x11, 0x0F, 0x10, 0x0C, 0x09, 0x08, +0x18, 0x18, 0x11, 0x0F, 0x10, 0x0C, 0x09, 0x08, +0x0A, 0x07, 0x18, 0x18, 0x11, 0x0F, 0x10, 0x0C, +0x09, 0x08, 0x0A, 0x07, 0x18, 0x18, 0x11, 0x0F, +0x10, 0x0C, 0x09, 0x08, 0x0A, 0x07, 0x0A, 0x0A, +0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, +0x30, 0x30, 0x3C, 0x30, 0x2D, 0x23, 0x19, 0x1E, +0x19, 0x1E, 0x19, 0x0F, 0x30, 0x30, 0x23, 0x1C, +0x20, 0x1A, 0x0F, 0x0E, 0x30, 0x30, 0x23, 0x1C, +0x20, 0x1A, 0x0F, 0x0E, 0x30, 0x30, 0x23, 0x1C, +0x20, 0x1A, 0x0F, 0x0D, 0x30, 0x30, 0x23, 0x1C, +0x20, 0x1A, 0x0F, 0x0D, 0x30, 0x30, 0x23, 0x1C, +0x23, 0x1B, 0x0F, 0x0F, 0x14, 0x0F, 0x30, 0x30, +0x23, 0x1C, 0x23, 0x1B, 0x0F, 0x0F, 0x14, 0x0F, +0x30, 0x2A, 0x23, 0x1C, 0x23, 0x1B, 0x0F, 0x0F, +0x14, 0x0F, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, +0x0A, 0x0A, 0x0A, 0x0A, 0x4B, 0x0B, 0x00, 0x80, +0x47, 0x0B, 0x00, 0x80, 0x4B, 0x0B, 0x00, 0x80, +0x47, 0x0B, 0x00, 0x80, 0x6B, 0x0B, 0x00, 0x80, +0x47, 0x0B, 0x00, 0x80, 0x6B, 0x0B, 0x00, 0x80, +0x47, 0x0B, 0x00, 0x80, 0x8B, 0x0B, 0x00, 0x80, +0x47, 0x0B, 0x00, 0x80, 0x8B, 0x0B, 0x00, 0x80, +0x47, 0x0B, 0x00, 0x80, 0xAB, 0x0B, 0x00, 0x80, +0x47, 0x0B, 0x00, 0x80, 0xAB, 0x0B, 0x00, 0x80, +0x3D, 0x0F, 0x00, 0x80, 0x5F, 0x0F, 0x00, 0x80, +0x81, 0x0F, 0x00, 0x80, 0xA3, 0x0F, 0x00, 0x80, +0xC7, 0x0F, 0x00, 0x80, 0x01, 0x10, 0x00, 0x80, +0x25, 0x10, 0x00, 0x80, 0x49, 0x10, 0x00, 0x80, +0x6D, 0x10, 0x00, 0x80, 0x93, 0x10, 0x00, 0x80, +0xB5, 0x0C, 0x00, 0x80, 0xB5, 0x0C, 0x00, 0x80, +0xB5, 0x0C, 0x00, 0x80, 0xB5, 0x0C, 0x00, 0x80, +0xD5, 0x0C, 0x00, 0x80, 0xD5, 0x0C, 0x00, 0x80, +0xD5, 0x0C, 0x00, 0x80, 0xD5, 0x0C, 0x00, 0x80, +0xF5, 0x0C, 0x00, 0x80, 0xF5, 0x0C, 0x00, 0x80, +0xF5, 0x0C, 0x00, 0x80, 0xF5, 0x0C, 0x00, 0x80, +0x15, 0x0D, 0x00, 0x80, 0x15, 0x0D, 0x00, 0x80, +0x15, 0x0D, 0x00, 0x80, 0x15, 0x0D, 0x00, 0x80, +0xC3, 0x36, 0x00, 0x80, 0xD3, 0x36, 0x00, 0x80, +0xDD, 0x36, 0x00, 0x80, 0xE7, 0x36, 0x00, 0x80, +0xF9, 0x36, 0x00, 0x80, 0x04, 0x06, 0x64, 0xB8, +0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x01, +0x0D, 0x00, 0x78, 0xB8, 0x12, 0x00, 0x78, 0xB8, +0x11, 0x00, 0x78, 0xB8, 0x06, 0x00, 0x78, 0xB8, +0xA7, 0x04, 0x64, 0xB8, 0xA6, 0x04, 0x64, 0xB8, +0xA5, 0x04, 0x64, 0xB8, 0xA4, 0x04, 0x64, 0xB8, +0x14, 0x00, 0x78, 0xB8, 0x09, 0x00, 0x78, 0xB8, +0x29, 0x00, 0x78, 0xB8, 0x1D, 0x04, 0x64, 0xB8, +0x22, 0x05, 0x64, 0xB8, 0x88, 0x00, 0x60, 0xB8, +0x89, 0x00, 0x60, 0xB8, 0x8A, 0x00, 0x60, 0xB8, +0x8B, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x60, 0xB8, +0x00, 0x00, 0x64, 0xB8, 0x00, 0x00, 0x00, 0x03, +0x00, 0x00, 0x00, 0x42, 0xE0, 0x00, 0x60, 0xB8, +0xFF, 0xFF, 0xFF, 0xFD, 0xE3, 0x00, 0x60, 0xB8, +0x00, 0x00, 0x00, 0x40, 0xE1, 0x00, 0x60, 0xB8, +0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x20, +0xE8, 0x12, 0x64, 0xB8, 0xF8, 0x10, 0x60, 0xB8, +0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, +0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xFF, 0xFB, +0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0x1F, +0x04, 0x00, 0x60, 0xB8, 0x04, 0x00, 0x64, 0xB8, +0x08, 0x00, 0x60, 0xB8, 0x08, 0x00, 0x64, 0xB8, +0x80, 0x00, 0x60, 0xB8, 0xFC, 0x10, 0x60, 0xB8, +0xFA, 0xFA, 0xFA, 0xFA, 0x4C, 0x04, 0x64, 0xB8, +0x50, 0x04, 0x64, 0xB8, 0x8C, 0x04, 0x64, 0xB8, +0x90, 0x04, 0x64, 0xB8, 0x94, 0x04, 0x64, 0xB8, +0x98, 0x04, 0x64, 0xB8, 0x9C, 0x04, 0x64, 0xB8, +0xA0, 0x04, 0x64, 0xB8, 0xA8, 0x04, 0x64, 0xB8, +0xC0, 0x01, 0x64, 0xB8, 0xC4, 0x01, 0x64, 0xB8, +0xB8, 0x01, 0x64, 0xB8, 0x00, 0x0C, 0x01, 0x00, +0x01, 0x00, 0x66, 0xB8, 0x00, 0x00, 0x66, 0xB8, +0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0x66, 0xB8, +0x04, 0x1C, 0x66, 0xB8, 0xCD, 0x9B, 0x78, 0x56, +0x00, 0xF0, 0x0F, 0x00, 0x00, 0xF0, 0x3F, 0x00, +0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xC0, 0xFF, +0x00, 0x00, 0x00, 0xF0, 0x00, 0xFC, 0x0F, 0x00, +0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x01, 0x06, +0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x38, +0xE0, 0x80, 0x03, 0x00, 0x00, 0x00, 0x30, 0xC0, +0x00, 0x03, 0x0C, 0x00, 0x4A, 0x04, 0x64, 0xB8, +0x49, 0x04, 0x64, 0xB8, 0x01, 0x00, 0x60, 0xB8, +0x01, 0x00, 0x64, 0xB8, 0x02, 0x00, 0x60, 0xB8, +0x02, 0x00, 0x64, 0xB8, 0x03, 0x00, 0x60, 0xB8, +0x03, 0x00, 0x64, 0xB8, 0x23, 0x04, 0x64, 0xB8, +0x30, 0x04, 0x64, 0xB8, 0x34, 0x04, 0x64, 0xB8, +0x01, 0x02, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, +0x53, 0x04, 0x64, 0xB8, 0x2D, 0x04, 0x64, 0xB8, +0xCF, 0x04, 0x64, 0xB8, 0xF0, 0x10, 0x60, 0xB8, +0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0C, +0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xC0, +0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x30, 0x00, +0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x66, 0xB8, +0x51, 0x04, 0x64, 0xB8, 0x52, 0x04, 0x64, 0xB8, +0x20, 0x04, 0x64, 0xB8, 0x01, 0x1C, 0x66, 0xB8, +0x02, 0x1C, 0x66, 0xB8, 0x03, 0x1C, 0x66, 0xB8, +0x05, 0x1C, 0x66, 0xB8, 0x06, 0x1C, 0x66, 0xB8, +0x07, 0x1C, 0x66, 0xB8, 0x07, 0x10, 0x66, 0xB8, +0x00, 0x10, 0x66, 0xB8, 0x04, 0x10, 0x66, 0xB8, +0x05, 0x10, 0x66, 0xB8, 0x02, 0x10, 0x66, 0xB8, +0x01, 0x10, 0x66, 0xB8, 0x06, 0x10, 0x66, 0xB8, +0x00, 0x00, 0x70, 0xB8, 0x18, 0x00, 0x70, 0xB8, +0x0B, 0x00, 0x70, 0xB8, 0x00, 0x00, 0x08, 0x00, +0x02, 0x00, 0x70, 0xB8, 0x96, 0x02, 0x64, 0xB8, +0x1C, 0x01, 0x64, 0xB8, 0x94, 0x02, 0x64, 0xB8, +0x97, 0x02, 0x64, 0xB8, 0x1C, 0x04, 0x64, 0xB8, +0xCC, 0x01, 0x64, 0xB8, 0x00, 0x00, 0x07, 0x00, +0xD4, 0x04, 0x60, 0xB8, 0xD4, 0x04, 0x64, 0xB8, +0x84, 0x04, 0x60, 0xB8, 0x84, 0x04, 0x64, 0xB8, +0xC8, 0x04, 0x60, 0xB8, 0xC8, 0x04, 0x64, 0xB8, +0x78, 0x04, 0x60, 0xB8, 0x78, 0x04, 0x64, 0xB8, +0x24, 0x04, 0x64, 0xB8, 0x30, 0x01, 0x64, 0xB8, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x05, +0x64, 0x01, 0x64, 0xB8, 0x53, 0x05, 0x64, 0xB8, +0x77, 0x05, 0x64, 0xB8, 0x68, 0x05, 0x64, 0xB8, +0x94, 0x01, 0x64, 0xB8, 0x34, 0x01, 0x64, 0xB8, +0x24, 0x01, 0x64, 0xB8, 0x20, 0x01, 0x64, 0xB8, +0x24, 0x11, 0x64, 0xB8, 0x20, 0x11, 0x64, 0xB8, +0x2C, 0x11, 0x64, 0xB8, 0x28, 0x11, 0x64, 0xB8, +0x34, 0x11, 0x64, 0xB8, 0x30, 0x11, 0x64, 0xB8, +0x3C, 0x01, 0x64, 0xB8, 0x38, 0x01, 0x64, 0xB8, +0x3C, 0x11, 0x64, 0xB8, 0x38, 0x11, 0x64, 0xB8, +0x50, 0x00, 0x60, 0xB8, 0x54, 0x00, 0x60, 0xB8, +0x9A, 0x01, 0x64, 0xB8, 0x99, 0x01, 0x64, 0xB8, +0xC7, 0x01, 0x64, 0xB8, 0xC6, 0x01, 0x64, 0xB8, +0xE0, 0x12, 0x64, 0xB8, 0xF0, 0x00, 0x60, 0xB8, +0x09, 0x02, 0x64, 0xB8, 0x00, 0x00, 0x78, 0xB8, +0xA8, 0x14, 0x88, 0x47, 0x06, 0x01, 0x64, 0xB8, +0x02, 0x01, 0x64, 0xB8, 0x21, 0x05, 0x64, 0xB8, +0x00, 0x28, 0x64, 0xB8, 0x00, 0x2C, 0x64, 0xB8, +0x00, 0x38, 0x64, 0xB8, 0x00, 0x3C, 0x64, 0xB8, +0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, +0x92, 0x06, 0x64, 0xB8, 0xF8, 0x05, 0x64, 0xB8, +0xF9, 0x05, 0x64, 0xB8, 0xFA, 0x05, 0x64, 0xB8, +0xFB, 0x05, 0x64, 0xB8, 0x1F, 0x07, 0x64, 0xB8, +0x1C, 0x07, 0x64, 0xB8, 0x54, 0x05, 0x64, 0xB8, +0xB8, 0x05, 0x64, 0xB8, 0xBC, 0x05, 0x64, 0xB8, +0x6F, 0x01, 0x64, 0xB8, 0x4C, 0x00, 0x00, 0xB5, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x04, 0x04, +0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x08, +0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x10, +0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x40, 0x40, +0x00, 0x00, 0x80, 0x80, 0x7E, 0x04, 0x64, 0xB8, +0x21, 0x04, 0x64, 0xB8, 0x7D, 0x04, 0x64, 0xB8, +0x7C, 0x04, 0x64, 0xB8, 0xF4, 0x00, 0x60, 0xB8, +0x00, 0x01, 0x64, 0xB8, 0x9B, 0x01, 0x64, 0xB8, +0x98, 0x01, 0x64, 0xB8, 0xC0, 0xA3, 0x02, 0x80, +0xC0, 0xA7, 0x02, 0x80, 0x00, 0xC0, 0x00, 0x80, +0x68, 0x06, 0x64, 0xB8, 0x24, 0x00, 0x60, 0xB8, +0xFF, 0xFF, 0xCF, 0xFF, 0x5C, 0x05, 0x64, 0xB8, +0x38, 0x06, 0x64, 0xB8, 0x83, 0x04, 0x64, 0xB8, +0x54, 0x04, 0x64, 0xB8, 0x31, 0x00, 0x60, 0xB8, +0x32, 0x00, 0x60, 0xB8, 0x33, 0x00, 0x60, 0xB8, +0x30, 0x00, 0x60, 0xB8, 0x7A, 0x04, 0x64, 0xB8, +0x20, 0x00, 0x78, 0xB8, 0x10, 0x00, 0x78, 0xB8, +0x03, 0x00, 0x78, 0xB8, 0xFF, 0xFF, 0x01, 0xFF, +0x00, 0x00, 0x02, 0x00, 0x28, 0x00, 0x78, 0xB8, +0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, +0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, +0x00, 0x00, 0x00, 0x00, 0x53, 0x65, 0x74, 0x5F, +0x43, 0x61, 0x6E, 0x64, 0x69, 0x5F, 0x33, 0x3A, +0x20, 0x5B, 0x31, 0x5D, 0x3D, 0x30, 0x78, 0x25, +0x62, 0x58, 0x2C, 0x20, 0x20, 0x5B, 0x32, 0x5D, +0x3D, 0x30, 0x78, 0x25, 0x62, 0x58, 0x2C, 0x20, +0x20, 0x5B, 0x33, 0x5D, 0x3D, 0x30, 0x78, 0x25, +0x62, 0x58, 0x00, 0x00, 0x53, 0x65, 0x74, 0x5F, +0x43, 0x61, 0x6E, 0x64, 0x69, 0x5F, 0x32, 0x3A, +0x20, 0x5B, 0x31, 0x5D, 0x3D, 0x30, 0x78, 0x25, +0x62, 0x58, 0x2C, 0x20, 0x20, 0x5B, 0x32, 0x5D, +0x3D, 0x30, 0x78, 0x25, 0x62, 0x58, 0x20, 0x00, +0x4D, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x62, 0x44, +0x52, 0x61, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x62, +0x44, 0x50, 0x54, 0x3A, 0x25, 0x62, 0x78, 0x2C, +0x52, 0x61, 0x49, 0x64, 0x3A, 0x25, 0x62, 0x78, +0x2C, 0x49, 0x6E, 0x69, 0x42, 0x77, 0x3A, 0x25, +0x62, 0x78, 0x2C, 0x42, 0x77, 0x53, 0x65, 0x74, +0x25, 0x62, 0x78, 0x2C, 0x62, 0x53, 0x47, 0x3A, +0x25, 0x62, 0x78, 0x2C, 0x56, 0x45, 0x4E, 0x3A, +0x25, 0x62, 0x78, 0x00, 0x4D, 0x61, 0x73, 0x6B, +0x30, 0x20, 0x25, 0x78, 0x00, 0x00, 0x00, 0x00, +0x53, 0x65, 0x74, 0x5F, 0x50, 0x6E, 0x74, 0x79, +0x00, 0x00, 0x00, 0x00, 0x53, 0x65, 0x74, 0x5F, +0x52, 0x41, 0x5F, 0x55, 0x70, 0x5F, 0x72, 0x61, +0x74, 0x69, 0x6F, 0x5F, 0x66, 0x6F, 0x72, 0x5F, +0x52, 0x41, 0x5F, 0x64, 0x65, 0x62, 0x75, 0x67, +0x00, 0x00, 0x00, 0x00, 0x53, 0x65, 0x74, 0x5F, +0x44, 0x6F, 0x77, 0x6E, 0x5F, 0x72, 0x61, 0x74, +0x69, 0x6F, 0x00, 0x00, 0x76, 0x61, 0x6C, 0x75, +0x65, 0x38, 0x3D, 0x30, 0x78, 0x25, 0x62, 0x58, +0x2C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x31, +0x36, 0x3D, 0x30, 0x78, 0x25, 0x77, 0x78, 0x2C, +0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x33, 0x32, +0x3D, 0x30, 0x78, 0x25, 0x78, 0x00, 0x00, 0x00, +0x48, 0x32, 0x43, 0x42, 0x46, 0x45, 0x6E, 0x74, +0x00, 0x00, 0x00, 0x00, 0x45, 0x6E, 0x3A, 0x25, +0x62, 0x78, 0x20, 0x4E, 0x63, 0x3A, 0x25, 0x62, +0x78, 0x20, 0x4D, 0x3A, 0x25, 0x62, 0x78, 0x00, +0x44, 0x69, 0x73, 0x3A, 0x25, 0x62, 0x78, 0x20, +0x4E, 0x63, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x4D, +0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x20, +0x53, 0x74, 0x61, 0x72, 0x74, 0x62, 0x79, 0x52, +0x53, 0x53, 0x49, 0x3A, 0x25, 0x62, 0x58, 0x20, +0x25, 0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x00, +0x52, 0x53, 0x53, 0x49, 0x43, 0x4D, 0x44, 0x3A, +0x25, 0x62, 0x58, 0x20, 0x25, 0x62, 0x78, 0x20, +0x25, 0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x00, +0x52, 0x53, 0x53, 0x49, 0x43, 0x4D, 0x44, 0x20, +0x44, 0x72, 0x76, 0x46, 0x69, 0x78, 0x3A, 0x25, +0x62, 0x58, 0x20, 0x25, 0x62, 0x78, 0x20, 0x25, +0x62, 0x78, 0x00, 0x00, 0x4D, 0x3A, 0x25, 0x62, +0x58, 0x2C, 0x52, 0x3A, 0x25, 0x62, 0x58, 0x2C, +0x25, 0x62, 0x78, 0x2C, 0x25, 0x62, 0x78, 0x2C, +0x25, 0x62, 0x78, 0x2C, 0x20, 0x25, 0x78, 0x00, +0x4D, 0x74, 0x42, 0x77, 0x20, 0x55, 0x70, 0x44, +0x77, 0x25, 0x62, 0x78, 0x20, 0x42, 0x57, 0x25, +0x62, 0x78, 0x20, 0x52, 0x74, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x48, 0x69, 0x74, 0x25, +0x62, 0x78, 0x20, 0x52, 0x74, 0x30, 0x3D, 0x25, +0x77, 0x78, 0x20, 0x52, 0x74, 0x31, 0x3D, 0x25, +0x77, 0x78, 0x00, 0x00, 0x52, 0x41, 0x3A, 0x4F, +0x46, 0x44, 0x4D, 0x25, 0x62, 0x58, 0x00, 0x00, +0x52, 0x41, 0x3A, 0x43, 0x43, 0x4B, 0x25, 0x62, +0x58, 0x00, 0x00, 0x00, 0x52, 0x41, 0x3A, 0x56, +0x31, 0x2D, 0x4D, 0x25, 0x62, 0x58, 0x00, 0x00, +0x52, 0x41, 0x3A, 0x56, 0x32, 0x2D, 0x4D, 0x25, +0x62, 0x58, 0x00, 0x00, 0x52, 0x41, 0x3A, 0x56, +0x33, 0x2D, 0x4D, 0x25, 0x62, 0x58, 0x00, 0x00, +0x52, 0x41, 0x3A, 0x48, 0x2D, 0x4D, 0x25, 0x62, +0x58, 0x00, 0x00, 0x00, 0x52, 0x41, 0x3A, 0x48, +0x2D, 0x4D, 0x31, 0x2C, 0x25, 0x62, 0x58, 0x00, +0x52, 0x41, 0x3A, 0x48, 0x2D, 0x4D, 0x32, 0x2C, +0x25, 0x62, 0x58, 0x00, 0x53, 0x74, 0x6F, 0x72, +0x45, 0x6E, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x42, +0x46, 0x63, 0x74, 0x72, 0x6C, 0x3A, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x57, 0x72, 0x69, 0x74, +0x65, 0x45, 0x6E, 0x3A, 0x25, 0x62, 0x78, 0x20, +0x42, 0x46, 0x63, 0x74, 0x72, 0x6C, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x52, 0x65, 0x63, 0x45, +0x6E, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x42, 0x46, +0x63, 0x74, 0x72, 0x6C, 0x3A, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x53, 0x6E, 0x64, 0x44, +0x20, 0x4D, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x52, +0x3A, 0x25, 0x62, 0x78, 0x20, 0x52, 0x25, 0x62, +0x78, 0x20, 0x43, 0x74, 0x3A, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x41, 0x70, 0x70, 0x6C, +0x56, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x4E, 0x61, 0x70, 0x70, 0x6C, 0x56, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x43, 0x68, 0x54, 0x78, +0x42, 0x46, 0x73, 0x74, 0x73, 0x20, 0x4D, 0x3A, +0x25, 0x62, 0x78, 0x20, 0x45, 0x6E, 0x74, 0x3A, +0x25, 0x62, 0x78, 0x20, 0x52, 0x61, 0x3A, 0x25, +0x62, 0x78, 0x20, 0x4E, 0x63, 0x3A, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x45, 0x72, 0x72, 0x4E, +0x63, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x43, 0x6F, 0x72, 0x72, 0x4E, 0x63, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x53, 0x6E, 0x64, 0x44, +0x6F, 0x6E, 0x53, 0x75, 0x00, 0x00, 0x00, 0x00, +0x53, 0x6E, 0x64, 0x44, 0x6F, 0x6E, 0x46, 0x61, +0x00, 0x00, 0x00, 0x00, 0x53, 0x65, 0x61, 0x72, +0x63, 0x68, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x25, +0x62, 0x78, 0x2C, 0x25, 0x62, 0x78, 0x00, 0x00, +0x42, 0x47, 0x20, 0x3A, 0x25, 0x62, 0x78, 0x20, +0x2C, 0x20, 0x6E, 0x75, 0x6D, 0x74, 0x72, 0x79, +0x3A, 0x20, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x53, 0x54, 0x42, 0x43, 0x20, 0x6F, 0x6E, 0x00, +0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x25, 0x62, +0x58, 0x20, 0x00, 0x00, 0x72, 0x61, 0x74, 0x65, +0x3A, 0x20, 0x25, 0x62, 0x58, 0x00, 0x00, 0x00, +0x49, 0x44, 0x3A, 0x25, 0x62, 0x58, 0x00, 0x00, +0x52, 0x5B, 0x30, 0x3A, 0x34, 0x5D, 0x20, 0x25, +0x62, 0x58, 0x20, 0x2C, 0x20, 0x25, 0x62, 0x58, +0x2C, 0x20, 0x25, 0x62, 0x58, 0x2C, 0x20, 0x25, +0x62, 0x58, 0x2C, 0x20, 0x25, 0x62, 0x58, 0x20, +0x00, 0x00, 0x00, 0x00, 0x55, 0x3A, 0x20, 0x25, +0x62, 0x58, 0x20, 0x00, 0x54, 0x47, 0x3A, 0x20, +0x25, 0x62, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, +0x54, 0x47, 0x70, 0x61, 0x74, 0x68, 0x3A, 0x20, +0x25, 0x62, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, +0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x3A, +0x20, 0x25, 0x62, 0x58, 0x20, 0x00, 0x00, 0x00, +0x44, 0x54, 0x50, 0x5F, 0x65, 0x6E, 0x64, 0x00, +0x53, 0x65, 0x74, 0x52, 0x5F, 0x4E, 0x54, 0x3A, +0x25, 0x62, 0x58, 0x20, 0x25, 0x62, 0x78, 0x20, +0x25, 0x62, 0x78, 0x00, 0x54, 0x72, 0x25, 0x62, +0x78, 0x2C, 0x25, 0x62, 0x78, 0x2C, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x53, 0x65, 0x74, 0x52, +0x5F, 0x54, 0x3A, 0x25, 0x62, 0x58, 0x20, 0x25, +0x62, 0x58, 0x20, 0x25, 0x62, 0x78, 0x20, 0x25, +0x62, 0x78, 0x00, 0x00, 0x52, 0x61, 0x55, 0x70, +0x00, 0x00, 0x00, 0x00, 0x31, 0x72, 0x61, 0x25, +0x62, 0x78, 0x00, 0x00, 0x30, 0x55, 0x70, 0x64, +0x74, 0x5F, 0x42, 0x57, 0x3D, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0x61, 0x25, +0x62, 0x78, 0x00, 0x00, 0x33, 0x72, 0x61, 0x25, +0x62, 0x78, 0x00, 0x00, 0x34, 0x72, 0x61, 0x25, +0x62, 0x78, 0x00, 0x00, 0x35, 0x72, 0x61, 0x25, +0x62, 0x78, 0x00, 0x00, 0x52, 0x61, 0x44, 0x6E, +0x00, 0x00, 0x00, 0x00, 0x52, 0x64, 0x53, 0x3A, +0x25, 0x62, 0x78, 0x2C, 0x25, 0x62, 0x78, 0x2C, +0x25, 0x62, 0x78, 0x00, 0x46, 0x57, 0x46, 0x69, +0x78, 0x00, 0x00, 0x00, 0x50, 0x43, 0x52, 0x3A, +0x25, 0x62, 0x78, 0x00, 0x62, 0x54, 0x52, 0x59, +0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x54, 0x72, 0x44, 0x6F, 0x6E, 0x43, 0x6E, 0x25, +0x62, 0x78, 0x00, 0x00, 0x45, 0x72, 0x72, 0x6F, +0x72, 0x31, 0x00, 0x00, 0x50, 0x6B, 0x74, 0x3A, +0x25, 0x62, 0x58, 0x2C, 0x25, 0x62, 0x58, 0x2C, +0x25, 0x62, 0x58, 0x00, 0x46, 0x44, 0x3A, 0x20, +0x52, 0x44, 0x00, 0x00, 0x46, 0x44, 0x3A, 0x20, +0x44, 0x72, 0x6F, 0x70, 0x00, 0x00, 0x00, 0x00, +0x46, 0x44, 0x3A, 0x20, 0x52, 0x55, 0x00, 0x00, +0x4D, 0x25, 0x62, 0x78, 0x20, 0x52, 0x25, 0x62, +0x78, 0x20, 0x53, 0x50, 0x25, 0x77, 0x78, 0x20, +0x52, 0x50, 0x25, 0x77, 0x78, 0x20, 0x54, 0x50, +0x25, 0x77, 0x78, 0x20, 0x52, 0x52, 0x25, 0x62, +0x78, 0x20, 0x53, 0x52, 0x25, 0x62, 0x78, 0x00, +0x52, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x52, 0x34, +0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x44, 0x72, 0x6F, 0x70, 0x3A, 0x52, 0x44, 0x00, +0x3D, 0x3E, 0x53, 0x5F, 0x52, 0x41, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x72, 0x74, 0x79, 0x6D, +0x61, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x72, +0x74, 0x79, 0x72, 0x61, 0x74, 0x3A, 0x25, 0x62, +0x78, 0x2C, 0x20, 0x64, 0x69, 0x66, 0x66, 0x3A, +0x25, 0x62, 0x78, 0x2C, 0x20, 0x75, 0x70, 0x64, +0x6E, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x72, 0x74, 0x79, 0x6D, 0x61, 0x5F, 0x72, 0x61, +0x74, 0x65, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x72, +0x74, 0x79, 0x5F, 0x76, 0x61, 0x72, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x62, 0x76, 0x61, 0x72, +0x3A, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x76, 0x61, +0x72, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x44, 0x65, 0x4F, 0x46, 0x46, 0x3A, 0x25, 0x62, +0x78, 0x2C, 0x20, 0x25, 0x62, 0x58, 0x2C, 0x20, +0x25, 0x62, 0x78, 0x00, 0x4D, 0x6F, 0x64, 0x54, +0x48, 0x3A, 0x20, 0x55, 0x70, 0x54, 0x48, 0x25, +0x62, 0x78, 0x2C, 0x20, 0x44, 0x6E, 0x54, 0x48, +0x25, 0x62, 0x78, 0x00, 0x44, 0x72, 0x76, 0x4F, +0x66, 0x66, 0x73, 0x65, 0x74, 0x3A, 0x20, 0x53, +0x68, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x55, 0x70, +0x54, 0x48, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x44, +0x6E, 0x54, 0x48, 0x25, 0x62, 0x78, 0x00, 0x00, +0x4D, 0x52, 0x61, 0x74, 0x65, 0x20, 0x3D, 0x20, +0x25, 0x62, 0x78, 0x00, 0x42, 0x57, 0x25, 0x62, +0x78, 0x20, 0x52, 0x74, 0x25, 0x62, 0x78, 0x00, +0x52, 0x44, 0x31, 0x00, 0x55, 0x70, 0x3A, 0x25, +0x62, 0x58, 0x2C, 0x44, 0x6E, 0x3A, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x52, 0x44, 0x32, 0x00, +0x52, 0x55, 0x20, 0x25, 0x62, 0x78, 0x20, 0x25, +0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x00, 0x00, +0x52, 0x55, 0x5F, 0x53, 0x00, 0x00, 0x00, 0x00, +0x52, 0x53, 0x00, 0x00, 0x52, 0x53, 0x54, 0x54, +0x78, 0x52, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, +0x44, 0x6E, 0x54, 0x72, 0x79, 0x52, 0x3D, 0x25, +0x62, 0x58, 0x2C, 0x25, 0x62, 0x78, 0x00, 0x00, +0x54, 0x72, 0x79, 0x53, 0x75, 0x3A, 0x25, 0x62, +0x58, 0x00, 0x00, 0x00, 0x55, 0x70, 0x54, 0x72, +0x79, 0x53, 0x25, 0x62, 0x78, 0x20, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x44, 0x6E, 0x54, 0x72, +0x79, 0x53, 0x25, 0x62, 0x78, 0x20, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x55, 0x70, 0x54, 0x72, +0x79, 0x46, 0x25, 0x62, 0x78, 0x20, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x44, 0x6E, 0x54, 0x72, +0x79, 0x46, 0x25, 0x62, 0x78, 0x20, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x54, 0x72, 0x79, 0x46, +0x50, 0x25, 0x62, 0x78, 0x20, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x50, 0x65, 0x6E, 0x64, +0x3A, 0x25, 0x77, 0x58, 0x20, 0x00, 0x00, 0x00, +0x54, 0x72, 0x79, 0x46, 0x3A, 0x25, 0x62, 0x58, +0x20, 0x00, 0x00, 0x00, 0x52, 0x53, 0x53, 0x49, +0x3A, 0x25, 0x62, 0x78, 0x2C, 0x4D, 0x25, 0x62, +0x78, 0x2C, 0x52, 0x25, 0x62, 0x78, 0x00, 0x00, +0x41, 0x52, 0x46, 0x52, 0x43, 0x4D, 0x44, 0x3A, +0x25, 0x62, 0x58, 0x20, 0x25, 0x62, 0x78, 0x20, +0x25, 0x62, 0x78, 0x00, 0x50, 0x6F, 0x6C, 0x6C, +0x75, 0x74, 0x65, 0x64, 0x00, 0x00, 0x00, 0x00, +0x54, 0x52, 0x59, 0x25, 0x62, 0x78, 0x2C, 0x25, +0x62, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x06, 0x09, 0x0C, 0x12, 0x18, 0x24, 0x30, 0x36, +0x01, 0x02, 0x05, 0x0B, 0x00, 0x00, 0x00, 0x00, +0x0A, 0x08, 0x03, 0x03, 0x00, 0x04, 0x09, 0x07, +0x03, 0x03, 0x00, 0x04, 0x08, 0x06, 0x03, 0x02, +0x00, 0x04, 0x08, 0x05, 0x03, 0x01, 0x00, 0x04, +0x0D, 0x0A, 0x07, 0x05, 0x00, 0x08, 0x0C, 0x0A, +0x07, 0x04, 0x00, 0x08, 0x0B, 0x0A, 0x06, 0x05, +0x00, 0x08, 0x0B, 0x0A, 0x05, 0x03, 0x00, 0x08, +0x0B, 0x0A, 0x03, 0x02, 0x00, 0x08, 0x14, 0x12, +0x0C, 0x04, 0x00, 0x10, 0x14, 0x12, 0x09, 0x04, +0x00, 0x10, 0x24, 0x22, 0x1C, 0x12, 0x00, 0x20, +0x24, 0x22, 0x18, 0x0C, 0x00, 0x20, 0x24, 0x22, +0x14, 0x06, 0x00, 0x20, 0x24, 0x22, 0x0F, 0x04, +0x00, 0x20, 0x24, 0x21, 0x0A, 0x04, 0x00, 0x20, +0x23, 0x21, 0x0C, 0x04, 0x00, 0x20, 0x23, 0x1F, +0x0A, 0x04, 0x00, 0x20, 0x22, 0x1F, 0x0F, 0x04, +0x00, 0x20, 0x21, 0x1F, 0x16, 0x0C, 0x00, 0x20, +0x31, 0x2F, 0x20, 0x14, 0x00, 0x30, 0x31, 0x2F, +0x18, 0x10, 0x00, 0x30, 0x31, 0x2C, 0x18, 0x0C, +0x00, 0x30, 0x31, 0x2A, 0x14, 0x0C, 0x00, 0x30, +0x31, 0x28, 0x14, 0x00, 0x00, 0x30, 0x31, 0x24, +0x14, 0x00, 0x00, 0x30, 0x31, 0x1E, 0x14, 0x00, +0x00, 0x30, 0x31, 0x18, 0x0A, 0x00, 0x00, 0x30, +0x15, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x15, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x05, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x05, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x10, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x10, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, +0xF5, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x15, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x15, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, +0x15, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, +0x01, 0x02, 0x03, 0x06, 0x05, 0x06, 0x07, 0x08, +0x09, 0x0A, 0x0B, 0x2C, 0xFF, 0x00, 0x01, 0x02, +0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, +0x02, 0x02, 0x02, 0x04, 0x02, 0x04, 0x06, 0x06, +0x08, 0x08, 0x09, 0x09, 0x03, 0x06, 0x08, 0x08, +0x0A, 0x0E, 0x10, 0x18, 0x05, 0x08, 0x08, 0x08, +0x0A, 0x0E, 0x10, 0x18, 0x05, 0x08, 0x08, 0x09, +0x10, 0x14, 0x1C, 0x20, 0x04, 0x06, 0x08, 0x0A, +0x10, 0x18, 0x18, 0x20, 0x03, 0x06, 0x08, 0x09, +0x10, 0x14, 0x1C, 0x24, 0x34, 0x3A, 0x05, 0x07, +0x09, 0x0A, 0x10, 0x14, 0x1C, 0x28, 0x34, 0x3C, +0x06, 0x08, 0x0A, 0x0C, 0x12, 0x18, 0x1E, 0x2E, +0x36, 0x40, 0x0A, 0x0C, 0x0C, 0x12, 0x16, 0x1C, +0x20, 0x24, 0x24, 0x30, 0x01, 0x01, 0x01, 0x01, +0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, +0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, +0x02, 0x04, 0x06, 0x07, 0x08, 0x0A, 0x0B, 0x0C, +0x03, 0x05, 0x06, 0x07, 0x08, 0x0A, 0x0B, 0x0C, +0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, +0x02, 0x04, 0x06, 0x07, 0x08, 0x09, 0x0B, 0x0C, +0x0C, 0x0C, 0x03, 0x05, 0x06, 0x07, 0x08, 0x09, +0x0B, 0x0C, 0x0C, 0x0C, 0x05, 0x06, 0x07, 0x08, +0x09, 0x0A, 0x0B, 0x0C, 0x0C, 0x0C, 0x05, 0x06, +0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0C, 0x0C, +0x02, 0x04, 0x08, 0x10, 0x10, 0x14, 0x18, 0x1C, +0x1C, 0x20, 0x20, 0x20, 0x10, 0x14, 0x18, 0x1C, +0x1C, 0x20, 0x20, 0x20, 0x10, 0x14, 0x18, 0x1C, +0x1C, 0x20, 0x20, 0x20, 0x10, 0x14, 0x18, 0x1C, +0x1C, 0x20, 0x20, 0x20, 0x10, 0x14, 0x18, 0x1C, +0x1C, 0x20, 0x20, 0x20, 0x10, 0x14, 0x18, 0x1C, +0x1C, 0x20, 0x20, 0x20, 0x24, 0x28, 0x10, 0x14, +0x18, 0x1C, 0x1C, 0x20, 0x20, 0x20, 0x24, 0x28, +0x10, 0x14, 0x18, 0x1C, 0x1C, 0x20, 0x20, 0x20, +0x24, 0x28, 0x10, 0x14, 0x18, 0x1C, 0x1C, 0x20, +0x20, 0x20, 0x24, 0x28, 0x2D, 0xFF, 0xFF, 0x2E, +0x36, 0xFF, 0x2F, 0x37, 0xFF, 0x38, 0x30, 0x41, +0x39, 0x31, 0x42, 0x42, 0x3A, 0x32, 0x43, 0x3A, +0x33, 0x43, 0x3A, 0x34, 0x3A, 0x44, 0x35, 0x44, +0x3B, 0xFF, 0x2E, 0x37, 0x40, 0x38, 0x30, 0x41, +0x39, 0x42, 0x31, 0x3A, 0x42, 0x32, 0x3B, 0x43, +0x35, 0x3C, 0x44, 0xFF, 0x3D, 0x45, 0xFF, 0x3E, +0x45, 0xFF, 0x45, 0x3F, 0xFF, 0x46, 0xFF, 0xFF, +0x37, 0x41, 0x2F, 0x39, 0x42, 0x31, 0x43, 0x3A, +0x33, 0x44, 0x3B, 0x35, 0x45, 0x3D, 0xFF, 0x46, +0x47, 0x3E, 0x47, 0xFF, 0xFF, 0x48, 0xFF, 0xFF, +0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x0D, 0xFF, 0xFF, 0x0E, 0x14, 0xFF, 0x15, 0x0F, +0xFF, 0x16, 0x10, 0xFF, 0x17, 0x11, 0x1E, 0x1E, +0x18, 0x12, 0x1F, 0x18, 0x13, 0x18, 0x1F, 0xFF, +0x15, 0x0E, 0xFF, 0x16, 0x1D, 0x10, 0x17, 0x1E, +0x10, 0x18, 0x1E, 0x11, 0x19, 0x1F, 0xFF, 0x1A, +0x20, 0xFF, 0x21, 0x1B, 0xFF, 0x21, 0xFF, 0xFF, +0x15, 0x13, 0x0F, 0x17, 0x1E, 0x11, 0x18, 0x1F, +0x13, 0x20, 0x19, 0xFF, 0x21, 0x1B, 0xFF, 0x22, +0xFF, 0xFF, 0x23, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0x04, 0x04, 0x04, 0x2C, 0xFF, 0xFF, 0x2D, 0x36, +0xFF, 0x2E, 0x37, 0xFF, 0x2F, 0x38, 0x41, 0x30, +0x39, 0x42, 0x43, 0x39, 0x31, 0x42, 0x39, 0x32, +0x43, 0x3A, 0x33, 0x43, 0x3A, 0x34, 0x2D, 0x2C, +0xFF, 0x36, 0x2E, 0xFF, 0x37, 0x2F, 0x40, 0x38, +0x30, 0x41, 0x42, 0x33, 0x39, 0x43, 0x35, 0x3A, +0x3B, 0x43, 0x34, 0x44, 0x3C, 0x3B, 0x45, 0x3D, +0x3C, 0x45, 0x3E, 0x3D, 0x37, 0x2E, 0xFF, 0x38, +0x2F, 0x40, 0x39, 0x31, 0x41, 0x3A, 0x42, 0xFF, +0x43, 0x3B, 0xFF, 0x44, 0x3C, 0xFF, 0x45, 0x3D, +0x3C, 0x46, 0x3F, 0x45, 0x47, 0x46, 0x45, 0x48, +0x47, 0x47, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0x0C, +0xFF, 0xFF, 0x0D, 0x14, 0xFF, 0x0E, 0x15, 0xFF, +0x0F, 0x16, 0xFF, 0x10, 0x17, 0xFF, 0x17, 0x11, +0xFF, 0x17, 0x12, 0xFF, 0x0D, 0x0C, 0xFF, 0x14, +0x0E, 0xFF, 0x15, 0x0F, 0xFF, 0x16, 0x1D, 0x10, +0x17, 0x1E, 0x12, 0x18, 0x1F, 0x13, 0x19, 0x20, +0x19, 0x20, 0x1A, 0x19, 0x14, 0x0E, 0xFF, 0x15, +0x1C, 0xFF, 0x17, 0x1D, 0x11, 0x18, 0x1E, 0x13, +0x19, 0x1F, 0x1E, 0x20, 0x1A, 0x1F, 0x21, 0x1B, +0x20, 0x22, 0x21, 0x1B, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x26, 0x2A, +0x00, 0x00, 0x00, 0x1F, 0x21, 0x25, 0x27, 0x28, +0x00, 0x00, 0x00, 0x00, 0x23, 0x26, 0x28, 0x30, +0x00, 0x00, 0x00, 0x00, 0x23, 0x26, 0x28, 0x2A, +0x00, 0x00, 0x00, 0x00, 0x23, 0x26, 0x28, 0x2A, +0x00, 0x00, 0x00, 0x00, 0x24, 0x28, 0x2A, 0x2C, +0x2E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x26, 0x29, +0x2B, 0x2D, 0x2F, 0x31, 0x00, 0x00, 0x00, 0x00, +0x28, 0x2A, 0x2C, 0x2E, 0x30, 0x32, 0x00, 0x00, +0x00, 0x1F, 0x23, 0x26, 0x28, 0x2A, 0x2A, 0x2A, +0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, +0x18, 0x00, 0x24, 0x00, 0x30, 0x00, 0x48, 0x00, +0x60, 0x00, 0x90, 0x00, 0xC0, 0x00, 0xD8, 0x00, +0x50, 0x00, 0x64, 0x00, 0x78, 0x00, 0xA0, 0x00, +0xF0, 0x00, 0x40, 0x01, 0x90, 0x01, 0xE0, 0x01, +0xC8, 0x00, 0xF0, 0x00, 0x40, 0x01, 0x90, 0x01, +0x58, 0x02, 0x20, 0x03, 0xB0, 0x04, 0x40, 0x06, +0xC8, 0x00, 0x18, 0x01, 0xE0, 0x01, 0xF4, 0x01, +0x84, 0x03, 0x20, 0x03, 0xB0, 0x04, 0x40, 0x06, +0xC8, 0x00, 0x18, 0x01, 0xE0, 0x01, 0xD0, 0x02, +0x20, 0x03, 0xE8, 0x03, 0xB0, 0x04, 0x40, 0x06, +0x3C, 0x00, 0x64, 0x00, 0x78, 0x00, 0xA0, 0x00, +0xF0, 0x00, 0x40, 0x01, 0x90, 0x01, 0xE0, 0x01, +0x58, 0x02, 0x20, 0x03, 0x78, 0x00, 0xF0, 0x00, +0x68, 0x01, 0xA4, 0x01, 0xE0, 0x01, 0x1C, 0x02, +0x58, 0x02, 0x20, 0x03, 0xE8, 0x03, 0xB0, 0x04, +0xB4, 0x00, 0x2C, 0x01, 0xA4, 0x01, 0xE0, 0x01, +0x1C, 0x02, 0x58, 0x02, 0x20, 0x03, 0xE8, 0x03, +0xB0, 0x04, 0x78, 0x05, 0xC8, 0x00, 0x18, 0x01, +0xE0, 0x01, 0xD0, 0x02, 0xE8, 0x03, 0xB0, 0x04, +0x40, 0x06, 0xD0, 0x07, 0xD0, 0x07, 0xD0, 0x07, +0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, +0x0C, 0x00, 0x12, 0x00, 0x18, 0x00, 0x24, 0x00, +0x30, 0x00, 0x48, 0x00, 0x60, 0x00, 0x6C, 0x00, +0x28, 0x00, 0x32, 0x00, 0x3C, 0x00, 0x50, 0x00, +0x78, 0x00, 0xA0, 0x00, 0xC8, 0x00, 0xF0, 0x00, +0x64, 0x00, 0x78, 0x00, 0xA0, 0x00, 0xC8, 0x00, +0x2C, 0x01, 0x90, 0x01, 0x58, 0x02, 0x20, 0x03, +0x64, 0x00, 0x8C, 0x00, 0xF0, 0x00, 0xFA, 0x00, +0xC2, 0x01, 0x90, 0x01, 0x58, 0x02, 0x20, 0x03, +0x64, 0x00, 0x8C, 0x00, 0xF0, 0x00, 0x68, 0x01, +0xF4, 0x01, 0x20, 0x03, 0xE8, 0x03, 0x78, 0x05, +0x1E, 0x00, 0x32, 0x00, 0x3C, 0x00, 0x50, 0x00, +0x78, 0x00, 0xA0, 0x00, 0xC8, 0x00, 0xF0, 0x00, +0x2C, 0x01, 0x90, 0x01, 0x3C, 0x00, 0x78, 0x00, +0xB4, 0x00, 0xD2, 0x00, 0xF0, 0x00, 0x0E, 0x01, +0x2C, 0x01, 0x90, 0x01, 0xF4, 0x01, 0x58, 0x02, +0x5A, 0x00, 0x96, 0x00, 0xD2, 0x00, 0xF0, 0x00, +0x0E, 0x01, 0x2C, 0x01, 0x90, 0x01, 0xF4, 0x01, +0x58, 0x02, 0xBC, 0x02, 0x64, 0x00, 0x8C, 0x00, +0xF0, 0x00, 0x68, 0x01, 0xF4, 0x01, 0x58, 0x02, +0x20, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, +0x01, 0x00, 0x02, 0x00, 0x05, 0x00, 0x0B, 0x00, +0x06, 0x00, 0x09, 0x00, 0x0C, 0x00, 0x12, 0x00, +0x18, 0x00, 0x24, 0x00, 0x30, 0x00, 0x36, 0x00, +0x0E, 0x00, 0x1B, 0x00, 0x29, 0x00, 0x36, 0x00, +0x51, 0x00, 0x6C, 0x00, 0x7A, 0x00, 0x87, 0x00, +0x1B, 0x00, 0x36, 0x00, 0x51, 0x00, 0x6C, 0x00, +0xA2, 0x00, 0xD8, 0x00, 0xF3, 0x00, 0x0E, 0x01, +0x29, 0x00, 0x51, 0x00, 0x7A, 0x00, 0xA2, 0x00, +0xF3, 0x00, 0x44, 0x01, 0x6D, 0x01, 0x95, 0x01, +0x36, 0x00, 0x6C, 0x00, 0xA2, 0x00, 0xD8, 0x00, +0x44, 0x01, 0xB0, 0x01, 0xE6, 0x01, 0x1C, 0x02, +0x0E, 0x00, 0x1B, 0x00, 0x29, 0x00, 0x36, 0x00, +0x51, 0x00, 0x6C, 0x00, 0x7A, 0x00, 0x87, 0x00, +0xA2, 0x00, 0xB4, 0x00, 0x1B, 0x00, 0x36, 0x00, +0x51, 0x00, 0x6C, 0x00, 0xA2, 0x00, 0xD8, 0x00, +0xF3, 0x00, 0xFF, 0x00, 0x23, 0x01, 0x44, 0x01, +0x29, 0x00, 0x51, 0x00, 0x7A, 0x00, 0xA2, 0x00, +0xF3, 0x00, 0x44, 0x01, 0x64, 0x01, 0x64, 0x01, +0xB5, 0x01, 0xE6, 0x01, 0x36, 0x00, 0x6C, 0x00, +0xA2, 0x00, 0xD8, 0x00, 0x44, 0x01, 0xB0, 0x01, +0xE6, 0x01, 0x1C, 0x02, 0x88, 0x02, 0xD0, 0x02, +0x14, 0x14, 0x15, 0x15, 0x16, 0x17, 0x17, 0x18, +0x1C, 0x1C, 0x1C, 0x1C, 0x1D, 0x1D, 0x1E, 0x1E, +0x1C, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x20, 0x20, +0x36, 0x36, 0x37, 0x37, 0x38, 0x39, 0x39, 0x3A, +0x3A, 0x3A, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, +0x41, 0x41, 0x42, 0x42, 0x43, 0x43, 0x00, 0x00, +0x40, 0x40, 0x41, 0x42, 0x43, 0x44, 0x44, 0x44, +0x45, 0x46, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, +0x00, 0x00, 0x30, 0xC0, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x0C, 0x0E, 0x38, 0x18, 0x00, 0x00, 0x00, +0x00, 0x83, 0x01, 0x06, 0x80, 0x03, 0x00, 0x00, +0x00, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, +0xB0, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x58, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x79, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x10, 0xF0, 0x20, 0x68, 0xE0, 0xF3, 0x19, 0x48, +0x00, 0x65, 0x00, 0xE8, 0x00, 0x65, 0x1A, 0xB8, +0x00, 0x65, 0x3B, 0xB8, 0x00, 0x65, 0x00, 0xBA, +0x00, 0xBA, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6C, 0x0D, 0xF0, 0x00, 0x4C, +0x03, 0xF0, 0x00, 0x4C, 0xBC, 0x65, 0x00, 0xF0, +0x21, 0x6C, 0x1F, 0xF4, 0x00, 0x4C, 0x8C, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x94, 0xB8, +0x00, 0x6D, 0xFE, 0xF7, 0x1F, 0x4D, 0xAC, 0xEC, +0x94, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0xF4, +0x00, 0x6D, 0xAD, 0xEC, 0x94, 0xB9, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6C, 0x00, 0xF0, 0x00, 0x4C, +0x00, 0x6E, 0x30, 0xF0, 0x20, 0x6F, 0x00, 0xF0, +0x00, 0x4F, 0xC0, 0xDC, 0x04, 0x4C, 0xE3, 0xEC, +0xB8, 0x67, 0xFB, 0x2D, 0x30, 0xF0, 0x20, 0x6C, +0x42, 0xF3, 0x18, 0x4C, 0x00, 0x6E, 0x30, 0xF0, +0x20, 0x6F, 0x0B, 0xF4, 0x10, 0x4F, 0xC0, 0xDC, +0x04, 0x4C, 0xE3, 0xEC, 0xB8, 0x67, 0xFB, 0x2D, +0x10, 0xF0, 0x20, 0x6C, 0x60, 0xF2, 0x1D, 0x4C, +0x00, 0xEC, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x7C, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0x60, 0xF2, 0x1D, 0x4A, +0x40, 0xDB, 0x00, 0x18, 0x9A, 0x03, 0x00, 0x18, +0x6D, 0x03, 0x00, 0x18, 0x01, 0x05, 0x00, 0x18, +0xA7, 0x03, 0x00, 0x18, 0xAC, 0x04, 0x00, 0x18, +0x24, 0x05, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x78, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, +0x00, 0x6D, 0x40, 0xAB, 0xAB, 0xED, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x00, 0x18, +0x68, 0x05, 0x00, 0x18, 0x23, 0x0B, 0x01, 0x72, +0x02, 0x61, 0x00, 0x18, 0xB7, 0x0B, 0x00, 0x6C, +0x00, 0x18, 0x2E, 0x07, 0xFF, 0x17, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x5C, 0x9A, +0x60, 0xDA, 0xC8, 0xB8, 0xAD, 0xB8, 0x4E, 0xB8, +0x6C, 0xB8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF0, +0xE0, 0x9C, 0x20, 0xF3, 0x44, 0x9A, 0xE0, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, 0x48, 0x9A, +0xC0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, +0x4C, 0x9A, 0xA0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF3, 0x50, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x7B, 0x9C, 0x20, 0xF3, 0x54, 0x9A, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x7D, 0x9C, +0x20, 0xF3, 0x58, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0x9C, 0x20, 0xF3, 0x5C, 0x9A, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x65, 0x9C, +0x40, 0xF3, 0x40, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x66, 0x9C, 0x80, 0xF2, 0x54, 0x9A, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x67, 0x9C, +0x40, 0xF3, 0x44, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0x9C, 0x40, 0xF3, 0x48, 0x9A, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0x9C, +0x40, 0xF3, 0x4C, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x70, 0x9C, 0x40, 0xF3, 0x50, 0x9A, +0x60, 0xDA, 0xFF, 0x17, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x48, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x42, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x59, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xAB, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xB9, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x3C, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x69, 0x0D, 0xF0, 0x08, 0x49, +0x42, 0xD9, 0x63, 0xD9, 0x84, 0xD9, 0xA5, 0xD9, +0xC6, 0xD9, 0xE7, 0xD9, 0x58, 0x67, 0x58, 0xD9, +0x5D, 0x67, 0x5B, 0xD9, 0x5F, 0x67, 0x5D, 0xD9, +0x12, 0xEC, 0x10, 0xED, 0xCE, 0xB8, 0x9E, 0xD9, +0xBF, 0xD9, 0x80, 0xF0, 0xC0, 0xD9, 0x0D, 0xB8, +0x7F, 0x69, 0x0C, 0xE9, 0x2D, 0x21, 0x00, 0x65, +0x3D, 0x67, 0x00, 0xF3, 0x22, 0x31, 0x00, 0xF3, +0x20, 0x31, 0x08, 0x49, 0x42, 0xD9, 0x63, 0xD9, +0x84, 0xD9, 0xA5, 0xD9, 0xC6, 0xD9, 0xE7, 0xD9, +0x58, 0x67, 0x58, 0xD9, 0x5D, 0x67, 0x5B, 0xD9, +0x5F, 0x67, 0x5D, 0xD9, 0x12, 0xEC, 0x10, 0xED, +0xCE, 0xB8, 0x9E, 0xD9, 0xBF, 0xD9, 0x80, 0xF0, +0xC0, 0xD9, 0x00, 0xF0, 0x20, 0x6D, 0xA0, 0xF1, +0x1C, 0x4D, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x68, +0x00, 0xF0, 0x08, 0x48, 0x18, 0x48, 0x20, 0x98, +0x00, 0x65, 0x20, 0xDD, 0x00, 0x65, 0x1D, 0x67, +0x01, 0xDD, 0x00, 0x65, 0x00, 0xE9, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x69, 0x00, 0xF0, 0x08, 0x49, +0x1F, 0xF4, 0x00, 0x6C, 0x8C, 0xE8, 0x80, 0xF2, +0x02, 0x30, 0x0B, 0x20, 0x01, 0x6A, 0x0C, 0xEA, +0x04, 0x22, 0x40, 0x99, 0x00, 0x65, 0x40, 0xEA, +0x00, 0x65, 0x06, 0x30, 0x24, 0x41, 0xF5, 0x17, +0x00, 0x65, 0x30, 0xF0, 0x20, 0x69, 0x0D, 0xF0, +0x08, 0x49, 0x58, 0x99, 0x1A, 0x65, 0x5B, 0x99, +0xBA, 0x65, 0x5D, 0x99, 0xFA, 0x65, 0x9E, 0x99, +0xBF, 0x99, 0x32, 0xEC, 0x30, 0xED, 0x42, 0x99, +0x63, 0x99, 0x84, 0x99, 0xA5, 0x99, 0xC6, 0x99, +0xE7, 0x99, 0x80, 0xF0, 0x20, 0x99, 0xC9, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x1A, 0xB8, +0x00, 0x65, 0x3B, 0xB8, 0x00, 0x65, 0x00, 0xBA, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x7C, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, 0x11, 0x4A, +0x40, 0xDB, 0x01, 0x4A, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x7C, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0x00, 0xF5, 0x09, 0x4A, +0x40, 0xDB, 0x01, 0x4A, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x7C, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x01, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, +0x4C, 0x9A, 0x40, 0x9A, 0x08, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x6C, 0x9A, 0xFF, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF3, 0x7C, 0x9B, 0x10, 0xF0, +0x20, 0x6A, 0x20, 0xF5, 0x02, 0x4A, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x7C, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x05, 0x4A, +0x40, 0xDB, 0x00, 0x18, 0x10, 0x0C, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF3, 0x74, 0x9A, 0x6C, 0x23, +0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x39, 0x0C, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF3, +0x54, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x3A, 0x0C, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF3, 0x54, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x3B, 0x0C, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF3, 0x54, 0x9A, 0x08, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x3C, 0x0C, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF3, 0x54, 0x9A, +0x10, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x3D, 0x0C, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF3, +0x54, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x3E, 0x0C, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF3, 0x54, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x3F, 0x0C, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF3, 0x54, 0x9A, 0x80, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x40, 0x0C, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF3, 0x74, 0x9B, +0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x41, 0x0C, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF3, 0x74, 0x9B, 0x04, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x42, 0x0C, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF3, 0x74, 0x9B, +0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x43, 0x0C, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF3, 0x74, 0x9B, 0x10, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x44, 0x0C, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF3, 0x78, 0x9A, +0x1D, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF2, +0x54, 0x9A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x48, 0x0C, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x60, 0xF5, 0x50, 0x9A, 0xA2, 0xF3, +0x78, 0x9B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x49, 0x0C, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, +0x7C, 0x9B, 0x10, 0xF0, 0x20, 0x6A, 0x60, 0xF5, +0x06, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x3C, 0x9A, 0x10, 0xF0, 0x20, 0x68, +0xA0, 0xF6, 0x0D, 0x48, 0x00, 0xD9, 0x00, 0x18, +0xE0, 0x0B, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF3, +0x44, 0x9A, 0x02, 0x22, 0x01, 0x48, 0x00, 0xD9, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, +0x7C, 0x9B, 0x10, 0xF0, 0x20, 0x6A, 0xE0, 0xF6, +0x05, 0x4A, 0x40, 0xDB, 0x00, 0x18, 0xE7, 0x0B, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF3, 0x64, 0x9A, +0x00, 0xF1, 0x10, 0x23, 0x10, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x90, 0x0C, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF3, 0x44, 0x9A, 0x20, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x1D, 0x0C, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF3, 0x44, 0x9A, +0x40, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x1E, 0x0C, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF3, +0x44, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x4A, 0x0F, 0x30, 0xF0, 0x20, 0x6B, +0x82, 0xF3, 0x64, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x8C, 0x0C, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF3, 0x64, 0x9B, +0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x88, 0x0C, 0x30, 0xF0, 0x20, 0x68, +0x62, 0xF3, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF5, 0x54, 0x9A, 0x65, 0x98, 0x6C, 0xEA, +0x11, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x1F, 0x0C, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF2, 0x54, 0x9A, +0x65, 0x98, 0x6C, 0xEA, 0x04, 0x22, 0x00, 0x6C, +0x00, 0x18, 0x53, 0x0C, 0x03, 0x10, 0x00, 0x6C, +0x00, 0x18, 0x4A, 0x0C, 0x30, 0xF0, 0x20, 0x68, +0x62, 0xF3, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF5, 0x58, 0x9A, 0x65, 0x98, 0x6C, 0xEA, +0x11, 0x22, 0x01, 0x6C, 0x00, 0x18, 0x1F, 0x0C, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x50, 0x9A, +0x65, 0x98, 0x6C, 0xEA, 0x04, 0x22, 0x01, 0x6C, +0x00, 0x18, 0x53, 0x0C, 0x03, 0x10, 0x01, 0x6C, +0x00, 0x18, 0x4A, 0x0C, 0x30, 0xF0, 0x20, 0x68, +0x62, 0xF3, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF5, 0x5C, 0x9A, 0x65, 0x98, 0x6C, 0xEA, +0x11, 0x22, 0x02, 0x6C, 0x00, 0x18, 0x1F, 0x0C, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x58, 0x9A, +0x65, 0x98, 0x6C, 0xEA, 0x04, 0x22, 0x02, 0x6C, +0x00, 0x18, 0x53, 0x0C, 0x03, 0x10, 0x02, 0x6C, +0x00, 0x18, 0x4A, 0x0C, 0x30, 0xF0, 0x20, 0x68, +0x62, 0xF3, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF5, 0x40, 0x9A, 0x65, 0x98, 0x6C, 0xEA, +0x11, 0x22, 0x03, 0x6C, 0x00, 0x18, 0x1F, 0x0C, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x44, 0x9A, +0x65, 0x98, 0x6C, 0xEA, 0x04, 0x22, 0x03, 0x6C, +0x00, 0x18, 0x53, 0x0C, 0x03, 0x10, 0x03, 0x6C, +0x00, 0x18, 0x4A, 0x0C, 0x30, 0xF0, 0x20, 0x68, +0x62, 0xF3, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF5, 0x48, 0x9A, 0x65, 0x98, 0x6C, 0xEA, +0x11, 0x22, 0x04, 0x6C, 0x00, 0x18, 0x1F, 0x0C, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x4C, 0x9A, +0x65, 0x98, 0x6C, 0xEA, 0x04, 0x22, 0x04, 0x6C, +0x00, 0x18, 0x53, 0x0C, 0x03, 0x10, 0x04, 0x6C, +0x00, 0x18, 0x4A, 0x0C, 0x30, 0xF0, 0x20, 0x68, +0x62, 0xF3, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF5, 0x50, 0x9A, 0x65, 0x98, 0x6C, 0xEA, +0x11, 0x22, 0x05, 0x6C, 0x00, 0x18, 0x1F, 0x0C, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x44, 0x9A, +0x65, 0x98, 0x6C, 0xEA, 0x04, 0x22, 0x05, 0x6C, +0x00, 0x18, 0x53, 0x0C, 0x03, 0x10, 0x05, 0x6C, +0x00, 0x18, 0x4A, 0x0C, 0x30, 0xF0, 0x20, 0x68, +0x62, 0xF3, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF5, 0x54, 0x9A, 0x65, 0x98, 0x6C, 0xEA, +0x11, 0x22, 0x06, 0x6C, 0x00, 0x18, 0x1F, 0x0C, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0x58, 0x9A, +0x65, 0x98, 0x6C, 0xEA, 0x04, 0x22, 0x06, 0x6C, +0x00, 0x18, 0x53, 0x0C, 0x03, 0x10, 0x06, 0x6C, +0x00, 0x18, 0x4A, 0x0C, 0x30, 0xF0, 0x20, 0x68, +0x62, 0xF3, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF5, 0x58, 0x9A, 0x65, 0x98, 0x6C, 0xEA, +0x0D, 0x22, 0x07, 0x6C, 0x00, 0x18, 0x1F, 0x0C, +0x45, 0x98, 0x00, 0x52, 0x04, 0x60, 0x07, 0x6C, +0x00, 0x18, 0x53, 0x0C, 0x03, 0x10, 0x07, 0x6C, +0x00, 0x18, 0x4A, 0x0C, 0x30, 0xF0, 0x20, 0x6A, +0x82, 0xF3, 0x68, 0x9A, 0x06, 0x23, 0x08, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x84, 0x0C, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF3, +0x6C, 0x9A, 0x32, 0x23, 0x01, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x61, 0x0C, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF3, 0x6C, 0x9B, +0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x03, 0x22, +0x01, 0x6C, 0x00, 0x18, 0x61, 0x0C, 0x30, 0xF0, +0x20, 0x6B, 0x82, 0xF3, 0x6C, 0x9B, 0x00, 0xF2, +0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, +0x00, 0x18, 0x61, 0x0C, 0x30, 0xF0, 0x20, 0x6B, +0x82, 0xF3, 0x6C, 0x9B, 0x00, 0xF4, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, +0x61, 0x0C, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF3, +0x6C, 0x9B, 0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0x61, 0x0C, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF3, 0x50, 0x9A, +0x01, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0x36, 0x0C, 0x30, 0xF0, 0x20, 0x6B, +0x82, 0xF3, 0x70, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, +0x36, 0x0C, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF3, +0x70, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0x36, 0x0C, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF3, 0x70, 0x9B, +0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x03, 0x6C, 0x00, 0x18, 0x36, 0x0C, 0x30, 0xF0, +0x20, 0x6B, 0x82, 0xF3, 0x70, 0x9B, 0x01, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, +0x00, 0x18, 0x36, 0x0C, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF3, 0x7C, 0x9B, 0x10, 0xF0, 0x20, 0x6A, +0xE0, 0xF6, 0x06, 0x4A, 0x40, 0xDB, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x60, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x80, 0xF0, 0xB8, 0xA2, 0x01, 0x6C, +0x6C, 0xEC, 0x02, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, +0x8D, 0xEB, 0x80, 0xF0, 0x78, 0xC2, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xED, 0xFF, 0x75, 0x4C, 0xEC, +0xCC, 0xEA, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF3, 0x10, 0x4B, 0x71, 0xE4, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, +0x71, 0xE4, 0x63, 0xF2, 0x64, 0xA4, 0xAC, 0xEA, +0xAF, 0xED, 0x6C, 0xED, 0xAD, 0xEA, 0x63, 0xF2, +0x44, 0xC4, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, +0xFF, 0x74, 0xAC, 0xEA, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0xC5, 0xF5, 0x52, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, +0x63, 0xF2, 0xA2, 0xA3, 0x8C, 0xEA, 0x8F, 0xEC, +0xAC, 0xEC, 0x8D, 0xEA, 0x63, 0xF2, 0x42, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0xF7, 0x63, 0x11, 0x62, +0x10, 0xD1, 0x0F, 0xD0, 0x40, 0xA4, 0x08, 0xD2, +0x08, 0x93, 0x1F, 0x6A, 0x4C, 0xEB, 0x08, 0xD3, +0x42, 0xA4, 0x61, 0xA4, 0x0D, 0xD2, 0x43, 0xA4, +0x84, 0xA4, 0x09, 0xD4, 0x08, 0x94, 0x08, 0x5C, +0x80, 0xF0, 0x0C, 0x60, 0xFF, 0x68, 0x84, 0x31, +0x24, 0x22, 0x09, 0x94, 0x22, 0x24, 0x0C, 0xEA, +0x0C, 0xEB, 0xA2, 0x67, 0xC3, 0x67, 0x91, 0x67, +0x0B, 0xD2, 0x0C, 0xD3, 0x00, 0x18, 0x96, 0x02, +0x09, 0x93, 0x0D, 0x94, 0x41, 0x41, 0x0C, 0xEA, +0x0C, 0xEB, 0x8C, 0xE8, 0xA3, 0x67, 0x82, 0x67, +0xD0, 0x67, 0x0A, 0xD2, 0x09, 0xD3, 0x00, 0x18, +0x96, 0x02, 0x0B, 0x95, 0x0C, 0x96, 0x91, 0x67, +0x01, 0x6F, 0x00, 0x18, 0x1F, 0x03, 0x0A, 0x94, +0x09, 0x95, 0xD0, 0x67, 0x02, 0x6F, 0x00, 0x18, +0x1F, 0x03, 0x0F, 0x59, 0x08, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x28, 0x33, 0xA0, 0xF1, 0x14, 0x4A, +0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x00, 0x6A, +0x44, 0x10, 0xD0, 0xF4, 0x44, 0x41, 0x1F, 0xF7, +0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF4, 0x58, 0x9A, 0x34, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x5C, 0x9A, +0x2F, 0x10, 0x80, 0xF4, 0x44, 0x41, 0x1F, 0xF7, +0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF4, 0x40, 0x9A, 0x24, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x44, 0x9A, +0x1F, 0x10, 0xC0, 0xF4, 0x48, 0x41, 0x1F, 0xF7, +0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF4, 0x48, 0x9A, 0x14, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x4C, 0x9A, +0x0F, 0x10, 0x70, 0xF4, 0x48, 0x41, 0x1F, 0xF7, +0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF4, 0x50, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x54, 0x9A, +0x49, 0xE1, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, +0x6C, 0xEA, 0x7D, 0x67, 0x53, 0xC3, 0x42, 0x32, +0x54, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x45, 0xE1, 0x63, 0xF2, 0x44, 0xA1, +0x55, 0xC3, 0x63, 0xF2, 0x45, 0xA1, 0x56, 0xC3, +0x63, 0xF2, 0x54, 0xA1, 0x57, 0xC3, 0x63, 0xF2, +0x55, 0xA1, 0x58, 0xC3, 0x9D, 0x67, 0x21, 0x6A, +0x50, 0xC4, 0x07, 0x6A, 0x4F, 0xCC, 0x47, 0x44, +0x19, 0x4A, 0x40, 0xA2, 0x52, 0xC4, 0x04, 0x04, +0x00, 0x18, 0x44, 0x08, 0x11, 0x97, 0x10, 0x91, +0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x01, 0xA4, 0x20, 0xA4, 0x09, 0x20, 0x90, 0x67, +0xB1, 0x67, 0x00, 0x18, 0xA3, 0x02, 0x90, 0x67, +0xB1, 0x67, 0x53, 0x6E, 0x00, 0x18, 0x83, 0x0D, +0x7D, 0x67, 0x20, 0x6A, 0x50, 0xC3, 0x03, 0x6A, +0x4F, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x48, 0x9A, 0x9D, 0x67, 0x40, 0xA2, 0x52, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x63, 0xF2, 0x62, 0xA2, 0x63, 0xF2, 0x43, 0xA2, +0x73, 0xC4, 0x54, 0xC4, 0x04, 0x04, 0x00, 0x18, +0x44, 0x08, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x27, 0x67, +0x4C, 0xE9, 0x6F, 0x41, 0x4C, 0xEB, 0x04, 0x67, +0x02, 0x5B, 0x4C, 0xE8, 0x4C, 0xED, 0x4C, 0xEE, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0x4A, 0x0D, +0x10, 0x58, 0x55, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0x33, 0x00, 0xF2, 0x18, 0x4A, 0x69, 0xE2, +0x40, 0x9A, 0x00, 0xEA, 0xD0, 0xF4, 0x44, 0x40, +0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x78, 0x9A, +0x34, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, +0x7C, 0x9A, 0x2F, 0x10, 0x80, 0xF4, 0x44, 0x40, +0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x60, 0x9A, +0x24, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, +0x64, 0x9A, 0x1F, 0x10, 0xC0, 0xF4, 0x48, 0x40, +0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x68, 0x9A, +0x14, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, +0x6C, 0x9A, 0x0F, 0x10, 0x70, 0xF4, 0x48, 0x40, +0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x70, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, +0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x6D, 0xE0, 0x41, 0xE0, 0x63, 0xF2, +0x84, 0xA0, 0x63, 0xF2, 0x54, 0xA0, 0x8D, 0xEA, +0xFF, 0x6C, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0xC5, 0xF5, 0x31, 0xC2, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x10, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0x09, 0x4B, 0x00, 0xF0, 0x68, 0xDA, +0x10, 0xF0, 0x20, 0x6B, 0x00, 0xF0, 0x08, 0x4A, +0xC0, 0xF3, 0x19, 0x4B, 0x61, 0xDA, 0x10, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x09, 0x4B, 0x62, 0xDA, +0x10, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x19, 0x4B, +0x63, 0xDA, 0x10, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, +0x09, 0x4B, 0x64, 0xDA, 0x10, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x19, 0x4B, 0x65, 0xDA, 0x10, 0xF0, +0x20, 0x6B, 0xE0, 0xF2, 0x01, 0x4B, 0x66, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x62, 0xF3, +0x10, 0x48, 0x00, 0x6A, 0x80, 0xF0, 0x4C, 0xD8, +0x00, 0xF1, 0x51, 0xC0, 0x00, 0x18, 0x58, 0x03, +0x80, 0xF0, 0x78, 0xA0, 0x01, 0x6A, 0x30, 0xF0, +0x20, 0x6C, 0x6D, 0xEA, 0x80, 0xF0, 0x58, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF5, 0x14, 0x4A, +0xE5, 0xF5, 0x04, 0x4C, 0x00, 0x6B, 0x60, 0xC2, +0x70, 0xC2, 0x01, 0x4A, 0x62, 0x67, 0x8E, 0xEB, +0xF9, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x63, 0xF2, 0x61, 0xC2, 0x63, 0xF2, +0x62, 0xC2, 0x63, 0xF2, 0x63, 0xC2, 0x63, 0xF2, +0x60, 0xC2, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xC5, 0xF5, 0x00, 0x4A, 0x67, 0x42, 0x09, 0x4B, +0x00, 0x6C, 0x80, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, +0xFB, 0x61, 0x42, 0xF4, 0x10, 0x6A, 0x1F, 0xF7, +0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF2, 0x7C, 0x9B, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF2, 0x60, 0x9B, 0x6D, 0xE2, +0x04, 0x4A, 0x00, 0x6C, 0x62, 0xF4, 0x00, 0x72, +0x80, 0xDB, 0xE9, 0x61, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x58, 0x9A, 0x03, 0x6B, 0xC8, 0x6C, +0x40, 0x9A, 0x42, 0x32, 0x52, 0x32, 0x6C, 0xEA, +0x03, 0x72, 0x06, 0x60, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF0, 0x14, 0x4B, 0x69, 0xE2, 0x80, 0xA2, +0x00, 0x18, 0xB5, 0x04, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x87, 0x03, 0x00, 0x18, 0xAE, 0x03, +0x00, 0x18, 0x0F, 0x05, 0x00, 0x18, 0x1B, 0x11, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x00, 0x6B, 0x00, 0xF6, 0x74, 0xC2, 0x00, 0xF6, +0x75, 0xC2, 0x00, 0xF1, 0x71, 0xC2, 0x00, 0xF1, +0x72, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF4, 0x48, 0x9A, 0x01, 0x6B, 0x60, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF4, 0x8C, 0x9A, 0xFF, 0x6B, 0x20, 0x6D, +0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, +0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, +0x90, 0x9A, 0x08, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, 0x78, 0x9A, +0xFF, 0x6C, 0x01, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0x05, 0x5C, 0x5E, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x88, 0x34, 0xE0, 0xF1, 0x10, 0x4A, 0x89, 0xE2, +0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF3, 0x50, 0x9B, 0xAD, 0xEA, 0x62, 0xF3, +0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF4, +0x7C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF4, 0x7C, 0x9B, 0x32, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, 0x41, 0x9B, +0xAD, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF4, 0x60, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF4, 0x64, 0x9B, 0x21, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, +0x42, 0x9B, 0xAD, 0xEA, 0x42, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF4, 0x68, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, 0x6C, 0x9B, +0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, +0x10, 0x4B, 0x43, 0x9B, 0xAD, 0xEA, 0x43, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, 0x70, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, +0x74, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, 0x44, 0x9B, +0xAD, 0xEA, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF4, 0x78, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF4, 0x7C, 0x9B, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x63, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x00, 0xF2, +0x04, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x90, 0x9B, +0xAF, 0xEA, 0x8C, 0xEA, 0x62, 0xF3, 0x50, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x7C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, +0x5C, 0x9A, 0x35, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF3, 0x10, 0x4B, 0x81, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF4, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF4, 0x40, 0x9A, 0x23, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, +0x82, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x42, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, 0x6C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, +0x48, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF3, 0x10, 0x4B, 0x83, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF4, 0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF4, 0x50, 0x9A, 0xA0, 0xDA, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, +0x10, 0x4B, 0x84, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, +0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, +0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0x58, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, +0x03, 0x24, 0x01, 0x74, 0x12, 0x60, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, +0x4E, 0x9B, 0xAD, 0xEA, 0x4E, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE0, 0xF4, 0x60, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF4, 0x64, 0x9B, +0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, +0x10, 0x4B, 0x4F, 0x9B, 0xAD, 0xEA, 0x4F, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF4, 0x68, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF4, +0x6C, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x03, 0x24, 0x01, 0x74, 0x13, 0x60, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, +0x8E, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x4E, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF4, 0x64, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, +0x40, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF3, 0x10, 0x4B, 0x8F, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x4F, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF4, 0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF4, 0x48, 0x9A, 0xA0, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6C, +0x80, 0xF4, 0x9C, 0x9C, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x62, 0xF3, 0x50, 0xDB, 0x62, 0xF3, +0x10, 0x4B, 0x41, 0xDB, 0x42, 0xDB, 0x43, 0xDB, +0x44, 0xDB, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0xC0, 0xF4, 0x84, 0x9C, 0x40, 0xDC, 0x30, 0xF0, +0x20, 0x6C, 0xC0, 0xF4, 0x8C, 0x9C, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF4, 0x94, 0x9C, +0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF4, +0x9C, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0xE0, 0xF4, 0x84, 0x9C, 0x4E, 0xDB, 0x4F, 0xDB, +0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF4, +0x8C, 0x9C, 0x40, 0xDC, 0x4C, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE0, 0xF4, 0x70, 0x9B, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF4, 0x7C, 0x9B, 0x01, 0x6A, 0x4B, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, +0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF4, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF4, 0x70, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF4, 0x60, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF4, +0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF4, 0x74, 0x9B, 0x40, 0xDB, 0x20, 0xE8, +0x3F, 0xF4, 0x10, 0x6E, 0x30, 0xF0, 0x20, 0x6B, +0xCB, 0xEE, 0x62, 0xF3, 0xD0, 0xDB, 0x01, 0xF7, +0x01, 0x6A, 0x62, 0xF3, 0x10, 0x4B, 0x08, 0xF0, +0x00, 0x6D, 0x00, 0x6C, 0x42, 0xDB, 0x43, 0xDB, +0xA1, 0xDB, 0x84, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF4, 0x7C, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF4, 0x64, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, 0x6C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, +0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0x5C, 0x9A, 0x80, 0xDA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x00, 0x6B, 0x6C, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF4, 0x50, 0x9A, 0x60, 0xDA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x06, 0x6C, 0x00, 0x6B, 0x8E, 0xDA, 0x6F, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, 0x44, 0x9A, +0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, +0x4C, 0x9A, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x57, 0x04, +0x00, 0x18, 0x73, 0x04, 0x00, 0x18, 0x86, 0x04, +0x00, 0x18, 0xA2, 0x04, 0x00, 0x18, 0x9C, 0x04, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xD4, 0x07, 0x00, 0x18, 0x0A, 0x08, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF4, 0x78, 0x9A, 0xC0, 0x6A, +0xFF, 0x68, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x0A, 0x6C, 0x00, 0x18, 0x15, 0x08, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF4, 0x5C, 0x9A, 0x01, 0x6B, +0x05, 0x97, 0x40, 0xA2, 0x0C, 0xEA, 0x5E, 0x32, +0x6E, 0xEA, 0x6C, 0xEA, 0x0C, 0xEA, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, +0x7C, 0x9B, 0x10, 0xF0, 0x20, 0x6A, 0x22, 0xF3, +0x05, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x25, 0x10, +0x82, 0xF3, 0x08, 0x70, 0x11, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x6C, 0x9A, 0x02, 0xF0, +0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF5, 0x40, 0x9A, +0x03, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, 0x15, 0x10, +0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, +0x14, 0x6C, 0x00, 0x18, 0x15, 0x08, 0x33, 0x58, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF5, +0x44, 0x9A, 0x60, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, +0x04, 0x2A, 0x00, 0x18, 0xBA, 0x04, 0x01, 0x72, +0xD7, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF5, +0x40, 0x9A, 0x02, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x7C, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0x22, 0xF3, 0x06, 0x4A, +0x40, 0xDB, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF3, +0x1C, 0x9A, 0x00, 0x6D, 0x02, 0xF0, 0x00, 0x6E, +0x90, 0x67, 0x00, 0x18, 0x21, 0x08, 0x04, 0x6A, +0x40, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, +0x50, 0x9A, 0x20, 0x48, 0x0E, 0xEA, 0xF7, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF3, 0x84, 0x9A, +0x00, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x00, 0x18, +0x21, 0x08, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x1B, 0x05, 0x30, 0xF0, 0x20, 0x6B, +0x05, 0xF0, 0x54, 0xC3, 0x00, 0x18, 0xC4, 0x03, +0x00, 0x18, 0x31, 0x05, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF5, 0x48, 0x9A, 0x3F, 0x6B, 0x60, 0xC2, +0x00, 0x18, 0xB5, 0x03, 0x00, 0x18, 0xB9, 0x03, +0x00, 0x18, 0xEF, 0x04, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF5, 0x5C, 0x9A, 0xE0, 0xF1, 0x1B, 0x6B, +0x6B, 0xEB, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF5, 0x40, 0x9A, 0x0F, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x70, 0x9A, +0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF5, 0x4C, 0x9A, 0xFF, 0x6B, 0x40, 0xA2, +0x4C, 0xEB, 0x6A, 0x33, 0x03, 0x6A, 0x4C, 0xEB, +0x02, 0x6A, 0x04, 0x23, 0x03, 0x73, 0x03, 0x6A, +0x01, 0x60, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x00, 0x6A, 0x62, 0xF3, 0x10, 0x48, +0x01, 0x6C, 0x02, 0x6D, 0x00, 0x6E, 0x40, 0xF0, +0x50, 0xC8, 0x00, 0x18, 0x71, 0x06, 0x40, 0xF0, +0xD0, 0xA8, 0x01, 0x6C, 0x03, 0x6D, 0xC2, 0x36, +0x00, 0x18, 0x71, 0x06, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x10, 0x9A, 0xFF, 0xF6, 0x1F, 0x6A, +0x01, 0x6D, 0x60, 0xA8, 0xFF, 0xF7, 0x1F, 0x6C, +0xFF, 0x69, 0x6C, 0xEA, 0x40, 0xC8, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF4, 0x78, 0x9A, 0x40, 0x9B, +0xAD, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF5, 0x70, 0x9A, 0xE0, 0xF3, 0x1F, 0x4D, +0x40, 0xAB, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, +0x58, 0x9A, 0xC0, 0x6C, 0x60, 0xA2, 0x8C, 0xEB, +0x60, 0xC2, 0x0A, 0x6C, 0x00, 0x18, 0x15, 0x08, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, 0x7C, 0x9A, +0x40, 0x6C, 0x8B, 0xEC, 0x40, 0xA3, 0x2C, 0xEA, +0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF5, 0x54, 0x9A, 0x80, 0x6B, +0x6B, 0xEB, 0x60, 0xC2, 0x40, 0xA0, 0xC0, 0x6B, +0x6C, 0xEA, 0x40, 0x72, 0x08, 0x61, 0x0A, 0x6C, +0x00, 0x18, 0x15, 0x08, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF5, 0x7C, 0x9A, 0x09, 0x10, 0x80, 0x72, +0x0C, 0x61, 0x0A, 0x6C, 0x00, 0x18, 0x15, 0x08, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF5, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, 0x58, 0x9A, +0x60, 0xDA, 0x0A, 0x6C, 0x00, 0x18, 0x15, 0x08, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF5, 0x64, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, 0x58, 0x9A, +0x60, 0xDA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0x00, 0x00, 0x00, 0x00, +0x60, 0xBA, 0x20, 0xE8, 0x40, 0xBA, 0x20, 0xE8, +0x4C, 0xB8, 0x00, 0x65, 0x80, 0x34, 0x8D, 0xEA, +0x8A, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x4C, 0xB8, 0x00, 0x65, +0x80, 0x34, 0x8F, 0xEC, 0x8C, 0xEA, 0x8A, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x8E, 0x35, 0x62, 0xF3, 0x10, 0x4B, 0xAD, 0xE3, +0x43, 0xF2, 0x70, 0xA3, 0x07, 0x6D, 0x8C, 0xED, +0x67, 0xED, 0x01, 0x6C, 0x8C, 0xEB, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, 0x8E, 0x36, +0x07, 0x6B, 0x01, 0x75, 0x4C, 0xEE, 0x8C, 0xEB, +0x0E, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x59, 0xE6, 0x01, 0x6A, 0x44, 0xEB, +0x43, 0xF2, 0x70, 0xA6, 0x00, 0x6D, 0x6D, 0xEA, +0x43, 0xF2, 0x50, 0xC6, 0x0E, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x59, 0xE6, +0x01, 0x6A, 0x44, 0xEB, 0x43, 0xF2, 0x70, 0xA6, +0x4F, 0xEA, 0x01, 0x6D, 0x6C, 0xEA, 0x43, 0xF2, +0x50, 0xC6, 0x00, 0x18, 0xDF, 0x0F, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x6D, 0x00, 0x18, +0xDF, 0x0F, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x00, 0x6D, 0x00, 0x18, 0xDF, 0x0F, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x4C, 0xEC, +0xAC, 0xEA, 0x0B, 0x2A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF2, 0xAC, 0x9B, 0x30, 0xF0, 0x20, 0x6E, +0x60, 0xF2, 0xD0, 0x9E, 0x60, 0x9D, 0xCC, 0xEB, +0x0C, 0x10, 0x01, 0x72, 0x0B, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x60, 0xF2, 0xAC, 0x9B, 0x30, 0xF0, +0x20, 0x6E, 0x60, 0xF2, 0xD4, 0x9E, 0x60, 0x9D, +0xCD, 0xEB, 0x60, 0xDD, 0x33, 0x2C, 0x07, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF2, 0x6C, 0x9A, +0x7F, 0x6A, 0x80, 0xA3, 0x1B, 0x10, 0x01, 0x72, +0x11, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF2, +0x6C, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, +0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, +0x40, 0xA3, 0x80, 0x4D, 0xC0, 0x4D, 0x8C, 0xEA, +0xAD, 0xEA, 0x08, 0x10, 0x02, 0x72, 0x09, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF2, 0x6C, 0x9A, +0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x20, 0xE8, 0x03, 0x72, 0x0B, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF2, 0x6C, 0x9A, 0xFF, 0x6C, +0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF2, 0xB8, 0x9A, +0xFF, 0x6A, 0x01, 0x6E, 0xB5, 0xE4, 0x60, 0xA5, +0x4C, 0xEB, 0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC5, +0xC0, 0xA5, 0xFB, 0x6B, 0xCC, 0xEB, 0x60, 0xC5, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF2, 0xBC, 0x9B, +0x06, 0x6E, 0xCB, 0xEE, 0xB5, 0xE4, 0x60, 0xA5, +0x4C, 0xEB, 0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC5, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0xA0, 0x9B, +0x1F, 0x6E, 0xB5, 0xE4, 0x60, 0xA5, 0x4C, 0xEB, +0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC5, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF2, 0xA4, 0x9B, 0x0E, 0x6E, +0xB5, 0xE4, 0x60, 0xA5, 0x4C, 0xEB, 0xCD, 0xEB, +0x4C, 0xEB, 0x60, 0xC5, 0x30, 0xF0, 0x20, 0x6D, +0x80, 0xF2, 0xA8, 0x9D, 0x00, 0x6B, 0x60, 0xC5, +0x30, 0xF0, 0x20, 0x6D, 0x80, 0xF2, 0xAC, 0x9D, +0x60, 0xC5, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, +0x70, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0xA0, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x74, 0x9B, +0x03, 0x6D, 0xAB, 0xED, 0xA0, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF2, 0x78, 0x9B, 0x71, 0xE4, +0xA0, 0xA4, 0x40, 0x6B, 0x6B, 0xEB, 0x4C, 0xEB, +0xAC, 0xEB, 0x60, 0xC4, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF2, 0x7C, 0x9B, 0xFF, 0x6A, 0x3F, 0x6F, +0x6D, 0xE5, 0x00, 0xA3, 0x4C, 0xEC, 0x4C, 0xEE, +0x0C, 0xEF, 0xE0, 0xC3, 0x10, 0x24, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0xF2, 0xE0, 0x9C, 0x10, 0x68, +0xFD, 0xE5, 0x80, 0xA7, 0x4C, 0xEC, 0x0D, 0xEC, +0x4C, 0xEC, 0x80, 0xC7, 0x80, 0xA3, 0x80, 0x6F, +0xEB, 0xEF, 0x4C, 0xEC, 0x0C, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0xF2, 0xE0, 0x9C, 0xEF, 0x6C, +0xFD, 0xE5, 0x00, 0xA7, 0x0C, 0xEC, 0x80, 0xC7, +0x80, 0xA3, 0x40, 0x6F, 0x4C, 0xEC, 0xED, 0xEC, +0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x58, 0x9A, 0x80, 0xC3, 0x80, 0xF4, 0xC0, 0x36, +0x55, 0xE5, 0x40, 0x9D, 0x4D, 0xEE, 0xC0, 0xDD, +0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0xA0, 0xF2, +0x64, 0x9B, 0x4C, 0xED, 0x4C, 0xEF, 0x04, 0xD5, +0x05, 0xD7, 0x60, 0xA3, 0xFF, 0xF7, 0x1F, 0x68, +0x26, 0x67, 0x4C, 0xEB, 0x72, 0x33, 0x4C, 0xEB, +0x8C, 0xE8, 0x4C, 0xE9, 0x25, 0x23, 0x30, 0xF0, +0x20, 0x6B, 0xA0, 0xF2, 0x68, 0x9B, 0x00, 0x6C, +0xFF, 0x6D, 0x60, 0xA3, 0x26, 0x6E, 0x6C, 0xEA, +0x06, 0xD2, 0x00, 0x18, 0x83, 0x0D, 0x00, 0x18, +0x6C, 0x0F, 0x01, 0x72, 0x0F, 0x61, 0x90, 0x67, +0x01, 0x6D, 0xD1, 0x67, 0x00, 0x6F, 0x00, 0x18, +0x1D, 0x10, 0x04, 0x94, 0x05, 0x96, 0x02, 0x67, +0xA2, 0x67, 0x00, 0x18, 0xF2, 0x05, 0x90, 0x67, +0x00, 0x18, 0xC6, 0x05, 0x06, 0x95, 0x00, 0x6C, +0x27, 0x6E, 0x00, 0x18, 0x83, 0x0D, 0x0F, 0x10, +0x90, 0x67, 0x01, 0x6D, 0xD1, 0x67, 0x00, 0x6F, +0x00, 0x18, 0x1D, 0x10, 0x04, 0x94, 0x05, 0x96, +0x02, 0x67, 0xA2, 0x67, 0x00, 0x18, 0xF2, 0x05, +0x90, 0x67, 0x00, 0x18, 0xC6, 0x05, 0x00, 0x18, +0x84, 0x09, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x4C, 0x9A, 0xFF, 0x6B, 0x80, 0xA2, +0x00, 0xF6, 0x80, 0x34, 0x00, 0xF6, 0x83, 0x34, +0x00, 0x54, 0x24, 0x60, 0xA0, 0xA2, 0x7F, 0x6C, +0xAC, 0xEC, 0x80, 0xC2, 0x80, 0xA2, 0x40, 0x6D, +0x6C, 0xEC, 0xAD, 0xEC, 0x6C, 0xEC, 0x80, 0xC2, +0x80, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF2, +0x90, 0x9C, 0x3F, 0x6D, 0x80, 0xA4, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0xF2, 0x94, 0x9C, 0x80, 0xA4, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF2, 0x98, 0x9C, +0x80, 0xA4, 0x80, 0xA2, 0x6C, 0xEC, 0xAD, 0xEC, +0x6C, 0xEC, 0x80, 0xC2, 0x80, 0xA2, 0xBF, 0x6B, +0x8C, 0xEB, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0xF7, 0x1F, 0x6A, 0x0E, 0x90, 0x24, 0x67, +0x4C, 0xE9, 0x03, 0x6B, 0x4C, 0xEF, 0x2C, 0xEB, +0x00, 0x6A, 0x0B, 0xD5, 0x0C, 0xD6, 0x04, 0xD7, +0x40, 0xC8, 0x00, 0x6A, 0x07, 0x23, 0x25, 0x10, +0x0A, 0x6C, 0x00, 0x18, 0x15, 0x08, 0x40, 0xA8, +0x01, 0x4A, 0x40, 0xC8, 0x1F, 0xF7, 0x00, 0x6A, +0x2C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x40, 0x9A, 0x49, 0xE1, 0x0B, 0x93, +0x40, 0x9A, 0x6C, 0xEA, 0x0C, 0x93, 0x6E, 0xEA, +0x04, 0x22, 0x40, 0xA8, 0x04, 0x93, 0x63, 0xEA, +0xDF, 0x61, 0x40, 0xA8, 0x04, 0x93, 0x63, 0xEA, +0x58, 0x67, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0xA0, 0x35, +0x4C, 0xEC, 0xA0, 0x35, 0xCC, 0xEA, 0x4D, 0xED, +0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, +0x44, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF2, 0x8C, 0x9B, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF2, 0x70, 0x9B, 0xAD, 0xEA, 0x40, 0xDC, +0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, +0x54, 0x9A, 0x60, 0xDC, 0x00, 0x6B, 0x60, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0xFF, 0xF7, +0x1F, 0x6B, 0x8C, 0xEA, 0xAC, 0xEB, 0x05, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0x58, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF2, +0x54, 0x9A, 0x60, 0x33, 0x60, 0x33, 0x4D, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0x4C, 0x9A, +0x00, 0x6C, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x5C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF2, 0x74, 0x9B, 0x40, 0xA2, 0x80, 0xC3, +0xFF, 0x6B, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x60, 0x9B, +0xFF, 0x6A, 0xCC, 0xEA, 0x6D, 0xEA, 0xE0, 0xF1, +0x1F, 0x6B, 0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0xC0, 0xF2, 0x8C, 0x9C, 0x60, 0x33, 0x60, 0x33, +0x6D, 0xEA, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF2, 0x44, 0x9A, 0x6D, 0xEA, 0x40, 0xDC, +0x20, 0xE8, 0x00, 0x65, 0xE0, 0xF1, 0x1F, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x64, 0x9B, +0xAC, 0xEA, 0x40, 0x32, 0x40, 0x32, 0x6D, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF2, 0x6C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, +0x5C, 0x9A, 0xFF, 0x6B, 0x40, 0xA2, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF2, 0x48, 0x9A, 0x40, 0xAA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x48, 0x9A, +0x40, 0xAA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x04, 0xF7, 0x10, 0x68, 0x10, 0x10, +0x05, 0x6C, 0xFF, 0x48, 0x00, 0x18, 0x15, 0x08, +0x0B, 0x28, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, +0x6C, 0x9A, 0x08, 0xF0, 0x00, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x00, 0x6A, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x48, 0x9A, +0x60, 0xAA, 0x3F, 0x6A, 0x6C, 0xEA, 0xE8, 0x2A, +0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x01, 0x68, 0x04, 0xEC, +0x82, 0xF3, 0x08, 0x69, 0x10, 0x10, 0x01, 0x6C, +0xFF, 0x49, 0x00, 0x18, 0x15, 0x08, 0x0B, 0x29, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x6C, 0x9A, +0x08, 0xF0, 0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x00, 0x6A, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x48, 0x9A, 0x60, 0xAA, +0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x0C, 0xEA, +0xE6, 0x2A, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x0E, 0x92, 0x04, 0x67, 0x0F, 0x91, 0x04, 0xD2, +0x04, 0x93, 0xFF, 0x6A, 0x4C, 0xE8, 0x4C, 0xEB, +0x90, 0x67, 0x0B, 0xD5, 0x0C, 0xD6, 0x0D, 0xD7, +0x04, 0xD3, 0x4C, 0xE9, 0x00, 0x18, 0xC7, 0x06, +0x80, 0xF0, 0x07, 0x22, 0x06, 0x58, 0x80, 0xF0, +0x04, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0x30, +0x40, 0xF0, 0x1C, 0x4A, 0x09, 0xE2, 0x40, 0x9A, +0x00, 0xEA, 0x02, 0xF2, 0x10, 0x6A, 0x0E, 0x10, +0x02, 0xF2, 0x00, 0x6A, 0x0B, 0x10, 0x22, 0xF2, +0x00, 0x6A, 0x08, 0x10, 0x22, 0xF2, 0x10, 0x6A, +0x05, 0x10, 0x42, 0xF2, 0x00, 0x6A, 0x02, 0x10, +0x42, 0xF2, 0x10, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x0D, 0x94, 0xE0, 0xF2, 0x70, 0x9B, 0x8C, 0xEB, +0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF2, 0x94, 0x9C, +0x8D, 0xEB, 0x06, 0x21, 0x30, 0xF0, 0x20, 0x6C, +0xE0, 0xF2, 0x98, 0x9C, 0x6D, 0xEC, 0x05, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF2, 0x9C, 0x9C, +0x6C, 0xEC, 0x04, 0x96, 0x06, 0x26, 0x30, 0xF0, +0x20, 0x6B, 0xE0, 0xF2, 0x64, 0x9B, 0x8D, 0xEB, +0x05, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, +0x60, 0x9B, 0x8C, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, +0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, +0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF2, +0xBC, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0xC0, 0xF2, 0xA0, 0x9C, 0x30, 0xF0, 0x20, 0x6C, +0x0B, 0x96, 0x00, 0xF3, 0x84, 0x9C, 0xB5, 0xE2, +0xCC, 0xEC, 0x80, 0xDD, 0x84, 0x42, 0x1F, 0xF7, +0x00, 0x6D, 0xAC, 0xEC, 0x02, 0xF0, 0x00, 0x74, +0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, +0x00, 0xF3, 0xA8, 0x9C, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x00, 0xF3, 0xAC, 0x9C, 0x30, 0xF0, +0x20, 0x6C, 0x0C, 0x96, 0x00, 0xF3, 0x84, 0x9C, +0xB5, 0xE2, 0xCC, 0xEC, 0x80, 0xDD, 0x87, 0x42, +0x01, 0x4C, 0x1F, 0xF7, 0x00, 0x6D, 0xAC, 0xEC, +0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0x00, 0xF3, 0x90, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x00, 0xF3, +0x94, 0x9C, 0x89, 0xE2, 0x60, 0xDA, 0x01, 0x6A, +0x01, 0x10, 0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, +0x01, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, +0x7C, 0x9B, 0x4E, 0xE8, 0x10, 0xF0, 0x20, 0x6A, +0xA3, 0xF4, 0x19, 0x4A, 0x09, 0xE2, 0x40, 0xDB, +0x00, 0x18, 0x69, 0x05, 0x00, 0x18, 0x39, 0x06, +0x00, 0x18, 0x68, 0x05, 0x00, 0x18, 0x69, 0x05, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x80, 0xF0, 0x8C, 0x9A, 0x02, 0x6B, 0x8C, 0xEB, +0x07, 0x23, 0x03, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x80, 0xF0, 0x6C, 0xDA, 0x00, 0x18, 0xB1, 0x0A, +0x00, 0x18, 0x68, 0x05, 0x00, 0x18, 0x69, 0x05, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x80, 0xF0, 0x8C, 0x9A, 0x04, 0x6B, 0x8C, 0xEB, +0x09, 0x23, 0x05, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x80, 0xF0, 0x6C, 0xDA, 0x00, 0x18, 0x69, 0x09, +0x00, 0x18, 0x24, 0x09, 0x00, 0x18, 0x68, 0x05, +0x00, 0x18, 0x69, 0x05, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x80, 0xF0, 0x8C, 0x9A, +0x10, 0x6B, 0x8C, 0xEB, 0x07, 0x23, 0x11, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x80, 0xF0, 0x6C, 0xDA, +0x00, 0x18, 0x4F, 0x21, 0x00, 0x18, 0x68, 0x05, +0xAF, 0x17, 0x00, 0x65, 0x00, 0x6A, 0x64, 0x67, +0x66, 0xEA, 0x01, 0x6D, 0xAC, 0xEB, 0x04, 0x2B, +0x01, 0x4A, 0x20, 0x72, 0xF8, 0x61, 0x20, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x40, 0x9A, 0x25, 0x67, 0x49, 0xE4, +0x00, 0x9A, 0x85, 0x67, 0x00, 0x18, 0x59, 0x07, +0x2C, 0xE8, 0x06, 0xEA, 0x50, 0x67, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x41, 0x45, 0x05, 0x67, 0x0C, 0xD6, 0x13, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0x20, 0x9A, +0x0F, 0xE8, 0x25, 0xE4, 0x40, 0x99, 0x85, 0x67, +0x04, 0xD2, 0x00, 0x18, 0x59, 0x07, 0x0C, 0x93, +0x64, 0xEA, 0x43, 0x67, 0x04, 0x93, 0x6C, 0xE8, +0x0D, 0xEA, 0x40, 0xD9, 0x07, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF2, 0x20, 0x9A, 0x0C, 0x92, +0x31, 0xE4, 0x40, 0xDC, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x41, 0x45, 0x0C, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x40, 0x9A, 0xAF, 0xEB, 0xCC, 0xED, +0x51, 0xE4, 0x40, 0x9C, 0x6C, 0xEA, 0xAD, 0xEA, +0x40, 0xDC, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x40, 0x9A, 0x51, 0xE4, 0xC0, 0xDC, +0x20, 0xE8, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0xFF, 0xF7, +0x1F, 0x6B, 0x4C, 0xED, 0x4C, 0xEE, 0x24, 0x67, +0x6C, 0xEF, 0x10, 0x90, 0x6C, 0xE9, 0x05, 0xD5, +0x06, 0xD6, 0x04, 0xD7, 0x00, 0x6A, 0x05, 0x10, +0x0A, 0x6C, 0x00, 0x18, 0x15, 0x08, 0x40, 0xA8, +0x01, 0x4A, 0x40, 0xC8, 0x1F, 0xF7, 0x00, 0x6A, +0x2C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x40, 0x9A, 0x49, 0xE1, 0x60, 0xA2, +0xFF, 0x6A, 0x6C, 0xEA, 0x05, 0x93, 0x6C, 0xEA, +0x06, 0x93, 0x6E, 0xEA, 0x04, 0x22, 0x40, 0xA8, +0x04, 0x93, 0x63, 0xEA, 0xDD, 0x61, 0x40, 0xA8, +0x04, 0x93, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x63, 0xEA, 0x58, 0x67, 0x06, 0x63, 0x00, 0xEF, +0x03, 0x6F, 0x8C, 0xEF, 0x64, 0x67, 0x46, 0x67, +0x04, 0x27, 0x0B, 0x10, 0xA0, 0xDB, 0xFC, 0x4A, +0x04, 0x4B, 0x04, 0x5A, 0xFB, 0x60, 0x03, 0x6A, +0x4C, 0xEE, 0x03, 0x10, 0xA0, 0xC4, 0xFF, 0x4E, +0x01, 0x4C, 0xFC, 0x2E, 0x00, 0x6A, 0x20, 0xE8, +0xFF, 0x6A, 0xAC, 0xEA, 0x03, 0x10, 0x40, 0xC4, +0xFF, 0x4E, 0x01, 0x4C, 0xFC, 0x2E, 0x00, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, +0x03, 0x6B, 0x05, 0x67, 0x6C, 0xE8, 0x44, 0x67, +0xE4, 0x67, 0x85, 0x67, 0x12, 0x28, 0x4C, 0xEB, +0x10, 0x2B, 0x86, 0x67, 0x06, 0x10, 0x61, 0xE5, +0x00, 0x98, 0x7D, 0xE2, 0xFC, 0x4C, 0x00, 0xDF, +0x04, 0x4B, 0x04, 0x5C, 0xF8, 0x60, 0xCA, 0x34, +0x88, 0x34, 0x03, 0x6B, 0x9D, 0xE2, 0x6C, 0xEE, +0x91, 0xE5, 0x00, 0x6B, 0x06, 0x10, 0x61, 0xE4, +0x00, 0xA0, 0x75, 0xE7, 0xFF, 0x4E, 0x00, 0xC5, +0x01, 0x4B, 0xF9, 0x2E, 0x01, 0x90, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0x00, 0x6B, 0x43, 0x67, +0x0C, 0x10, 0x7D, 0xE4, 0x69, 0xE5, 0xE0, 0xA7, +0x40, 0xA2, 0x01, 0x4B, 0x4B, 0xE7, 0x00, 0xF6, +0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, 0x02, 0x2A, +0xFF, 0x4E, 0xF3, 0x2E, 0x20, 0xE8, 0x00, 0x65, +0x06, 0x2C, 0x64, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x42, 0xF3, 0x7C, 0xDA, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x42, 0xF3, 0x9C, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x42, 0xF3, 0x5C, 0x9A, 0x28, 0x72, +0x2D, 0x60, 0x29, 0x5A, 0x07, 0x60, 0x14, 0x72, +0x19, 0x60, 0x19, 0x72, 0x1F, 0x60, 0x0A, 0x72, +0x0D, 0x60, 0x20, 0xE8, 0x50, 0x72, 0x32, 0x60, +0x51, 0x5A, 0x03, 0x60, 0x32, 0x72, 0x26, 0x60, +0x20, 0xE8, 0x64, 0x72, 0x33, 0x60, 0xC8, 0x72, +0x39, 0x60, 0x20, 0xE8, 0x02, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x60, 0xDA, 0xE0, 0xF7, +0x1E, 0x4B, 0x39, 0x10, 0x03, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x60, 0xDA, 0xE1, 0xF3, +0x1D, 0x4B, 0x31, 0x10, 0x09, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x60, 0xDA, 0xE4, 0xF3, +0x17, 0x4B, 0x29, 0x10, 0x05, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x60, 0xDA, 0xE2, 0xF3, +0x1B, 0x4B, 0x21, 0x10, 0x11, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x60, 0xDA, 0xE8, 0xF3, +0x0F, 0x4B, 0x19, 0x10, 0x0A, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x60, 0xDA, 0xE4, 0xF7, +0x16, 0x4B, 0x11, 0x10, 0x22, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x60, 0xDA, 0x11, 0xF0, +0x00, 0x6B, 0x09, 0x10, 0x43, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF3, 0x74, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x64, 0xDA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF3, 0x5C, 0x9A, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x44, 0x9A, 0xFF, 0x63, 0x58, 0xEC, +0x12, 0xEA, 0x00, 0xD2, 0x00, 0x92, 0xFF, 0x4A, +0x00, 0xD2, 0x00, 0x92, 0xFB, 0x2A, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x40, 0x9A, 0xFF, 0x63, 0x58, 0xEC, +0x12, 0xEA, 0x00, 0xD2, 0x00, 0x92, 0xFF, 0x4A, +0x00, 0xD2, 0x00, 0x92, 0xFB, 0x2A, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xCB, 0x07, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xED, 0x00, 0x18, 0xB2, 0x07, +0x05, 0x97, 0x00, 0x6A, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, +0x04, 0x67, 0x4C, 0xEE, 0x00, 0x18, 0xB7, 0x07, +0x50, 0x67, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6C, 0x40, 0xF4, 0x68, 0x9B, 0x40, 0xF4, +0x8C, 0x9C, 0x6D, 0xE5, 0x91, 0xE5, 0x00, 0x6E, +0xC0, 0xDB, 0x04, 0x4B, 0x8A, 0xEB, 0xFB, 0x61, +0xE7, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, 0x10, 0x6C, +0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, +0x48, 0x9A, 0x49, 0xE5, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF4, 0x50, 0x9A, 0xFF, 0x6B, +0x55, 0xE5, 0x40, 0xA5, 0x6C, 0xEA, 0x8D, 0xEA, +0x6C, 0xEA, 0x40, 0xC5, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x62, 0xF3, 0x10, 0x48, 0x80, 0xF0, +0x4C, 0x98, 0x04, 0x6B, 0xA4, 0x67, 0x6D, 0xEA, +0x80, 0xF0, 0x4C, 0xD8, 0x00, 0xF6, 0x54, 0xA8, +0x09, 0xF7, 0x00, 0x72, 0x07, 0x60, 0x00, 0xF6, +0x74, 0xA0, 0x00, 0xF6, 0x55, 0xA0, 0xFF, 0x4B, +0x4E, 0xEB, 0x0A, 0x2B, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF2, 0x6C, 0x9A, 0x00, 0xF2, 0x00, 0x6C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x14, 0x10, +0x87, 0x42, 0x0A, 0x4C, 0x90, 0x34, 0x11, 0xE4, +0x04, 0x4C, 0x10, 0x6E, 0x00, 0x18, 0xB7, 0x07, +0x00, 0xF6, 0x55, 0xA0, 0x50, 0x6B, 0x01, 0x4A, +0x00, 0xF6, 0x55, 0xC0, 0x00, 0xF6, 0x55, 0xA0, +0x6E, 0xEA, 0x02, 0x2A, 0x00, 0xF6, 0x55, 0xC0, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x62, 0xF3, 0x10, 0x48, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF4, 0x78, 0x98, +0x60, 0xF3, 0x40, 0x9A, 0xA4, 0x67, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x78, 0x9B, +0x6E, 0xEA, 0x07, 0x22, 0x82, 0xF4, 0x59, 0xA0, +0x82, 0xF4, 0x7A, 0xA0, 0xFF, 0x4A, 0x6E, 0xEA, +0x0C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, +0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x40, 0xF4, +0x94, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x9F, 0x10, 0x23, 0xA4, 0xFF, 0xF7, 0x1F, 0x6A, +0x04, 0x49, 0x4C, 0xE9, 0x82, 0xF4, 0x56, 0xA8, +0x1C, 0x2A, 0xE8, 0x6C, 0x98, 0xEB, 0xE8, 0x6E, +0x12, 0xEB, 0x11, 0xE3, 0x00, 0xF6, 0x16, 0x4C, +0x00, 0x18, 0xB7, 0x07, 0x82, 0xF4, 0x5A, 0xA0, +0x82, 0xF4, 0x79, 0xA0, 0x82, 0xF4, 0x36, 0xC8, +0x4E, 0xEB, 0x72, 0x2B, 0x01, 0x4A, 0x82, 0xF4, +0x5A, 0xC0, 0x82, 0xF4, 0x5A, 0xA0, 0x10, 0x6B, +0x6E, 0xEA, 0x6A, 0x2A, 0x82, 0xF4, 0x5A, 0xC0, +0x67, 0x10, 0x62, 0xA4, 0x34, 0x2B, 0x4D, 0xE1, +0xE3, 0x53, 0x31, 0x60, 0x82, 0xF4, 0x78, 0xA0, +0xE8, 0x6C, 0x98, 0xEB, 0x12, 0xEB, 0x0D, 0xE3, +0x00, 0xF6, 0x98, 0xA3, 0x28, 0x2C, 0x00, 0xF6, +0x99, 0xA3, 0xFF, 0x6E, 0xFC, 0x4A, 0xFF, 0x4C, +0x00, 0xF6, 0x99, 0xC3, 0x82, 0xF4, 0x76, 0xA8, +0xE8, 0x6C, 0xCC, 0xEA, 0xFF, 0x4B, 0x82, 0xF4, +0x76, 0xC8, 0x82, 0xF4, 0x78, 0xA0, 0x2C, 0xEE, +0x98, 0xEB, 0x12, 0xEB, 0x6D, 0xE0, 0x49, 0xE3, +0x10, 0xF6, 0x89, 0x42, 0x00, 0x18, 0x26, 0x08, +0x82, 0xF4, 0x58, 0xA0, 0xE8, 0x6B, 0x78, 0xEA, +0x12, 0xEA, 0x09, 0xE2, 0x00, 0xF6, 0x79, 0xA2, +0x6D, 0xE1, 0x00, 0xF6, 0x79, 0xC2, 0x82, 0xF4, +0x56, 0xA8, 0x45, 0xE1, 0x2F, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x82, 0xF4, +0x7A, 0xA2, 0x10, 0x6C, 0x01, 0x4B, 0x82, 0xF4, +0x7A, 0xC2, 0x82, 0xF4, 0x7A, 0xA2, 0x8E, 0xEB, +0x02, 0x2B, 0x82, 0xF4, 0x7A, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x82, 0xF4, +0x78, 0xA2, 0x10, 0x6C, 0x01, 0x4B, 0x82, 0xF4, +0x78, 0xC2, 0x82, 0xF4, 0x78, 0xA2, 0x8E, 0xEB, +0x02, 0x2B, 0x82, 0xF4, 0x78, 0xC2, 0x30, 0xF0, +0x20, 0x68, 0x62, 0xF3, 0x10, 0x48, 0x82, 0xF4, +0x98, 0xA0, 0xE8, 0x6A, 0xC2, 0x67, 0x58, 0xEC, +0x12, 0xEC, 0x11, 0xE4, 0x00, 0xF6, 0x16, 0x4C, +0x00, 0x18, 0xB7, 0x07, 0x82, 0xF4, 0x36, 0xC8, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x82, 0xF4, 0x98, 0xA2, 0xE8, 0x6B, 0x78, 0xEC, +0x82, 0xF4, 0x96, 0xAA, 0x12, 0xEB, 0x4D, 0xE3, +0xE0, 0xF6, 0x9D, 0xC3, 0x80, 0xF0, 0x6C, 0x9A, +0x04, 0x6C, 0x8D, 0xEB, 0x80, 0xF0, 0x6C, 0xDA, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, +0x4B, 0xA3, 0xFF, 0x6F, 0xE0, 0xF0, 0xC7, 0xA5, +0x41, 0xC5, 0x43, 0xA5, 0x62, 0xF3, 0x6B, 0xA3, +0x03, 0x4A, 0xEC, 0xEA, 0x09, 0x10, 0xED, 0x42, +0xFF, 0x68, 0x0C, 0xEF, 0xFD, 0xE5, 0x64, 0xC7, +0xE6, 0xA7, 0x03, 0x4F, 0xE9, 0xE2, 0x0C, 0xEA, +0xEF, 0x46, 0xE2, 0xEA, 0xF4, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x6B, 0xA2, 0x01, 0x4B, +0x62, 0xF3, 0x6B, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF4, 0x48, 0x9A, 0x51, 0xE4, 0x00, 0x18, +0x26, 0x08, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x6C, 0xA2, 0x24, 0x67, 0x02, 0x6E, +0x61, 0xC5, 0x01, 0x4B, 0x62, 0xF3, 0x6C, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x88, 0x9A, +0x05, 0x67, 0x91, 0xE1, 0x00, 0x18, 0x26, 0x08, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x98, 0x9A, +0xCE, 0xA0, 0xA2, 0x40, 0x91, 0xE1, 0x00, 0x18, +0x26, 0x08, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x00, 0x68, 0x14, 0x10, 0xE0, 0xF3, +0x08, 0x70, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF2, 0x6C, 0x9A, 0x80, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x00, 0x6A, 0x10, 0x10, +0x01, 0x48, 0xFF, 0xF7, 0x1F, 0x6A, 0x0A, 0x6C, +0x4C, 0xE8, 0x00, 0x18, 0x15, 0x08, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF4, 0x5C, 0x9A, 0x60, 0xA2, +0x01, 0x6A, 0x6C, 0xEA, 0xE4, 0x2A, 0x01, 0x6A, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x24, 0x67, 0x00, 0x18, 0xF3, 0x08, 0x00, 0x6B, +0x2C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, +0x40, 0x9A, 0x0F, 0x6C, 0xFF, 0xF7, 0x1F, 0x6B, +0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, +0x50, 0x9A, 0x4C, 0xE8, 0xA1, 0x40, 0xA2, 0x32, +0x42, 0x32, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x60, 0xF4, 0x84, 0x9C, 0xAC, 0xEB, 0x60, 0xCC, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, 0x68, 0x9B, +0x40, 0xC3, 0xE0, 0xF0, 0x87, 0xA1, 0x00, 0x18, +0x2D, 0x08, 0x87, 0x40, 0x12, 0x4C, 0xB1, 0x67, +0x00, 0x18, 0xC9, 0x08, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF4, 0x5C, 0x9A, 0x01, 0x6B, 0x60, 0xC2, +0x01, 0x6B, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x43, 0x67, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x62, 0xF3, 0x10, 0x48, 0x82, 0xF4, +0x59, 0xA0, 0x82, 0xF4, 0x7A, 0xA0, 0x4E, 0xEB, +0x33, 0x23, 0xE8, 0x6B, 0x78, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF1, 0x06, 0x4B, 0x12, 0xEA, +0x51, 0xE3, 0x00, 0x18, 0x06, 0x09, 0x07, 0x2A, +0x80, 0xF0, 0x4C, 0x98, 0x04, 0x6B, 0x6D, 0xEA, +0x80, 0xF0, 0x4C, 0xD8, 0x21, 0x10, 0x82, 0xF4, +0x59, 0xA0, 0x10, 0x6B, 0x01, 0x4A, 0x82, 0xF4, +0x59, 0xC0, 0x82, 0xF4, 0x59, 0xA0, 0x6E, 0xEA, +0x02, 0x2A, 0x82, 0xF4, 0x59, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x82, 0xF4, +0x99, 0xA2, 0x82, 0xF4, 0x7A, 0xA2, 0x8E, 0xEB, +0x07, 0x23, 0x80, 0xF0, 0x6C, 0x9A, 0x04, 0x6C, +0x8D, 0xEB, 0x80, 0xF0, 0x6C, 0xDA, 0x04, 0x10, +0x82, 0xF4, 0x98, 0xC2, 0x82, 0xF4, 0x76, 0xCA, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x24, 0x67, 0x00, 0x18, 0xF3, 0x08, 0x00, 0x6B, +0x36, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, +0x40, 0x9A, 0xFF, 0xF7, 0x1F, 0x6E, 0xFF, 0x6F, +0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, +0x50, 0x9A, 0x10, 0x6C, 0x8B, 0xEC, 0x4C, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xA1, 0x40, 0x60, 0xF4, +0x44, 0x9A, 0x65, 0x67, 0xCC, 0xEB, 0x60, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x48, 0x9A, +0x60, 0xA2, 0xFA, 0x65, 0xA2, 0x32, 0xEC, 0xEB, +0x8C, 0xEB, 0x42, 0x32, 0x6D, 0xEA, 0xEC, 0xEA, +0x7F, 0x67, 0x40, 0xC3, 0x87, 0xA9, 0x02, 0x4C, +0xCC, 0xEC, 0x00, 0x18, 0x2D, 0x08, 0x87, 0x40, +0x12, 0x4C, 0xB1, 0x67, 0x00, 0x18, 0xE1, 0x08, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x5C, 0x9A, +0x01, 0x6B, 0x60, 0xC2, 0x01, 0x6B, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x43, 0x67, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x62, 0xF3, +0x10, 0x48, 0x00, 0xF6, 0x94, 0xA0, 0x00, 0xF6, +0x55, 0xA0, 0x8E, 0xEA, 0x25, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x90, 0x34, 0x82, 0xF4, 0x04, 0x4A, +0x91, 0xE2, 0x00, 0x18, 0x46, 0x09, 0x1C, 0x22, +0x00, 0xF6, 0x54, 0xA0, 0x01, 0x4A, 0x00, 0xF6, +0x54, 0xC0, 0x00, 0xF6, 0x74, 0xA0, 0x00, 0xF6, +0x55, 0xA0, 0x6E, 0xEA, 0x06, 0x22, 0x80, 0xF0, +0x4C, 0x98, 0x04, 0x6B, 0x6D, 0xEA, 0x80, 0xF0, +0x4C, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x00, 0xF6, 0x74, 0xA2, 0x50, 0x6C, +0x8E, 0xEB, 0x02, 0x2B, 0x00, 0xF6, 0x74, 0xC2, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF4, 0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0xE0, 0xF2, 0x84, 0x9C, 0x40, 0x9B, 0x20, 0x6D, +0x00, 0x6E, 0x8D, 0xEA, 0x40, 0xDB, 0x00, 0xF4, +0x1F, 0x6C, 0x06, 0x02, 0x04, 0xF7, 0x10, 0x6F, +0x04, 0xD2, 0x00, 0x18, 0x89, 0x07, 0x09, 0x97, +0x05, 0x63, 0x00, 0xEF, 0xFE, 0x63, 0x03, 0xD1, +0x02, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, +0x50, 0x9A, 0x0F, 0x6B, 0x40, 0xA2, 0x4C, 0xEB, +0x0A, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x80, 0xF0, 0x8C, 0x9A, 0x02, 0x6D, +0xAD, 0xEC, 0x80, 0xF0, 0x8C, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF4, 0x41, 0xA2, 0xFF, 0x4A, +0x00, 0xD2, 0xDC, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6C, +0x00, 0xF1, 0xB0, 0x9A, 0x60, 0xF3, 0x80, 0x9C, +0xAC, 0xEC, 0x30, 0xF0, 0x20, 0x6D, 0x60, 0xF4, +0xB4, 0x9D, 0xAE, 0xEC, 0x05, 0x24, 0x00, 0xF1, +0x12, 0xA2, 0x00, 0x94, 0x8A, 0xE8, 0x08, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x6C, 0x9A, +0xFF, 0x6C, 0x01, 0x4C, 0x40, 0x9B, 0xBB, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, 0x8D, 0xA4, +0xA3, 0x67, 0xA7, 0xEC, 0x85, 0x67, 0x01, 0x6D, +0xAC, 0xEC, 0xA0, 0xF0, 0x0A, 0x24, 0x0C, 0x35, +0xB5, 0xE2, 0x7F, 0x4D, 0x56, 0x4D, 0x00, 0x6A, +0x30, 0xF0, 0x20, 0x6E, 0x62, 0xF3, 0xED, 0xA6, +0xFF, 0x6C, 0x1F, 0xF7, 0x00, 0x69, 0x8C, 0xEF, +0x74, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, +0x02, 0xF0, 0x00, 0x77, 0x08, 0x60, 0x62, 0xF3, +0xED, 0xA6, 0x8C, 0xEF, 0x74, 0x4F, 0xE8, 0x37, +0xFD, 0xE2, 0x2C, 0xEF, 0x0F, 0x2F, 0x30, 0xF0, +0x20, 0x6C, 0x62, 0xF3, 0x2D, 0xA4, 0xFF, 0x6C, +0x30, 0xF0, 0x20, 0x6E, 0x8C, 0xE9, 0x74, 0x49, +0x28, 0x31, 0xE2, 0x67, 0x25, 0xE2, 0xA0, 0xF2, +0xDC, 0x9E, 0x0B, 0x10, 0x62, 0xF3, 0x2D, 0xA6, +0x30, 0xF0, 0x20, 0x6E, 0xC0, 0xF2, 0xC0, 0x9E, +0x8C, 0xE9, 0x74, 0x49, 0x28, 0x31, 0xE2, 0x67, +0x25, 0xE2, 0xD9, 0xE1, 0xC0, 0xA6, 0x0C, 0x31, +0xCC, 0xEC, 0x30, 0xF0, 0x20, 0x6E, 0x62, 0xF3, +0x10, 0x4E, 0xD9, 0xE1, 0xFD, 0xE6, 0xC0, 0xF0, +0x91, 0xC7, 0x30, 0xF0, 0x20, 0x6E, 0x62, 0xF3, +0xED, 0xA6, 0xFF, 0x6C, 0x1F, 0xF7, 0x00, 0x69, +0x8C, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, +0x2C, 0xEF, 0x02, 0xF0, 0x00, 0x77, 0x08, 0x60, +0x62, 0xF3, 0xED, 0xA6, 0x8C, 0xEF, 0x7C, 0x4F, +0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, 0x0E, 0x2F, +0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, 0xCD, 0xA4, +0xFF, 0x6C, 0x30, 0xF0, 0x20, 0x6F, 0x8C, 0xEE, +0x7C, 0x4E, 0xC8, 0x36, 0xD9, 0xE2, 0xA0, 0xF2, +0xFC, 0x9F, 0x0A, 0x10, 0x62, 0xF3, 0xCD, 0xA6, +0x30, 0xF0, 0x20, 0x6F, 0xC0, 0xF2, 0xE0, 0x9F, +0x8C, 0xEE, 0x7C, 0x4E, 0xC8, 0x36, 0xD9, 0xE2, +0xF9, 0xE6, 0xC0, 0xA6, 0x01, 0x4A, 0x04, 0x72, +0xCC, 0xEC, 0x80, 0xC5, 0x01, 0x4D, 0x8C, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0xAD, 0xA2, +0x01, 0x6C, 0xC4, 0x67, 0xC4, 0xED, 0xCF, 0xED, +0x62, 0xF3, 0xCD, 0xA2, 0xAC, 0xEB, 0xFF, 0x6D, +0x84, 0xEE, 0x30, 0xF0, 0x20, 0x6E, 0x60, 0xF4, +0xD0, 0x9E, 0xAC, 0xEC, 0x80, 0xC6, 0x62, 0xF3, +0x8D, 0xA2, 0xAC, 0xEC, 0x01, 0x4C, 0xAC, 0xEC, +0x62, 0xF3, 0x8D, 0xC2, 0x62, 0xF3, 0xAD, 0xA2, +0x03, 0x6C, 0xAC, 0xEC, 0x62, 0xF3, 0x8D, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x00, 0xF1, 0x92, 0xA2, 0x08, 0x6D, 0x01, 0x4C, +0x00, 0xF1, 0x92, 0xC2, 0x00, 0xF1, 0x92, 0xA2, +0xAE, 0xEC, 0x0C, 0x2C, 0x00, 0xF1, 0x92, 0xC2, +0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, +0x6C, 0x9A, 0x02, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x02, 0x10, 0x3F, 0xF7, 0x02, 0x2B, +0x03, 0x91, 0x02, 0x90, 0x02, 0x63, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x00, 0xA4, 0x07, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x06, 0x35, 0x4C, 0xED, 0x58, 0xED, 0x62, 0xF3, +0x10, 0x4B, 0x01, 0x6F, 0xEC, 0xE8, 0x12, 0xED, +0x79, 0xE5, 0x80, 0xF0, 0xB9, 0xA6, 0x1D, 0x65, +0x02, 0x6D, 0xAB, 0xED, 0x38, 0x67, 0x2C, 0xED, +0x0D, 0xED, 0x80, 0xF0, 0xB9, 0xC6, 0xA0, 0xA4, +0xA6, 0x36, 0x4C, 0xEE, 0x58, 0xEE, 0xBA, 0x35, +0xEC, 0xED, 0xB8, 0x37, 0x41, 0x6D, 0xAB, 0xED, +0x12, 0xEE, 0x79, 0xE6, 0x80, 0xF0, 0x19, 0xA6, +0x0C, 0xED, 0xED, 0xED, 0x80, 0xF0, 0xB9, 0xC6, +0xE0, 0xA4, 0xE6, 0x35, 0x4C, 0xED, 0x58, 0xED, +0xFE, 0x37, 0xFC, 0x37, 0x12, 0xED, 0x79, 0xE5, +0x80, 0xF0, 0x19, 0xA6, 0x7F, 0x6D, 0x0C, 0xED, +0xED, 0xED, 0x80, 0xF0, 0xB9, 0xC6, 0xA0, 0xA4, +0x81, 0xA4, 0xA6, 0x35, 0x4C, 0xED, 0x58, 0xED, +0x12, 0xEA, 0x69, 0xE2, 0x80, 0xF0, 0x9A, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x58, 0x9A, +0xE0, 0xF7, 0x1F, 0x6C, 0x40, 0x9A, 0x8C, 0xEA, +0xA2, 0xF4, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF4, 0x5C, 0x9A, 0xA0, 0x9A, 0x00, 0x6A, +0x62, 0x67, 0x07, 0x6E, 0xD8, 0xEA, 0x30, 0xF0, +0x20, 0x6C, 0x62, 0xF3, 0x10, 0x4C, 0x12, 0xEE, +0x91, 0xE6, 0x80, 0xF0, 0xD9, 0xA4, 0x01, 0x6C, +0x8C, 0xEE, 0x08, 0x26, 0x84, 0xEA, 0x6D, 0xEC, +0x00, 0xF6, 0x80, 0x33, 0x00, 0xF6, 0x63, 0x33, +0xFF, 0x6C, 0x8C, 0xEB, 0x01, 0x4A, 0x08, 0x72, +0xE8, 0x61, 0x60, 0x32, 0x40, 0x32, 0x00, 0xF6, +0x60, 0x33, 0x6D, 0xEA, 0x00, 0x6C, 0x4D, 0xED, +0x00, 0x18, 0xCA, 0x03, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x07, 0xD4, 0x60, 0xA4, 0x01, 0xA4, 0x02, 0x6A, +0x6C, 0xEA, 0x24, 0x67, 0x06, 0xD0, 0x18, 0x22, +0x42, 0xA4, 0x06, 0xD2, 0x15, 0x10, 0x07, 0x93, +0x01, 0x6D, 0x90, 0x67, 0x40, 0xA3, 0x4C, 0xED, +0x00, 0x18, 0x7D, 0x05, 0x90, 0x67, 0x00, 0x18, +0x74, 0x05, 0x04, 0x2A, 0x90, 0x67, 0x00, 0x18, +0x93, 0x05, 0x03, 0x10, 0x90, 0x67, 0x00, 0x18, +0x98, 0x05, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, +0x06, 0x92, 0x03, 0xEA, 0xE8, 0x60, 0x60, 0xA1, +0x01, 0x6A, 0x6C, 0xEA, 0x13, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x83, 0xF2, +0x88, 0xA2, 0x1E, 0x6D, 0x8A, 0x33, 0xAC, 0xEB, +0x68, 0x35, 0x7D, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0xAD, 0xEB, 0x83, 0xF2, 0x68, 0xC2, 0x01, 0x6B, +0x6B, 0xEB, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x83, 0xF2, 0x88, 0xA2, +0x04, 0x6B, 0x8D, 0xEB, 0x83, 0xF2, 0x68, 0xC2, +0x00, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x83, 0xF2, +0x69, 0xC2, 0x62, 0xF3, 0x10, 0x48, 0x83, 0xF2, +0x68, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0x20, 0x22, +0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x83, 0xF2, +0x48, 0xC0, 0x00, 0x18, 0xA9, 0x0D, 0x7D, 0x67, +0x48, 0xCB, 0x68, 0xAB, 0x83, 0xF2, 0x8A, 0xA8, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEB, 0x8E, 0xEB, +0x05, 0x23, 0x7D, 0x67, 0x88, 0xAB, 0x4C, 0xEC, +0x00, 0x18, 0xC8, 0x0D, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x83, 0xF2, 0x88, 0xA2, +0x02, 0x6B, 0x8D, 0xEB, 0x83, 0xF2, 0x68, 0xC2, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF4, +0x00, 0x4C, 0x08, 0x6E, 0x00, 0x18, 0x26, 0x08, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x68, 0x44, 0xC8, 0x4B, 0x4C, 0xEB, 0x20, 0x5B, +0x03, 0x60, 0x00, 0x18, 0x2B, 0x14, 0x2F, 0x10, +0x1E, 0x74, 0x19, 0x60, 0x1F, 0x5C, 0x04, 0x60, +0x0A, 0x24, 0x01, 0x74, 0x0C, 0x60, 0x1F, 0x10, +0xC2, 0x74, 0x19, 0x60, 0xC5, 0x74, 0x13, 0x60, +0x1F, 0x74, 0x09, 0x60, 0x18, 0x10, 0x85, 0x67, +0x00, 0x18, 0x8B, 0x0A, 0x1C, 0x10, 0x85, 0x67, +0x00, 0x18, 0x4E, 0x0A, 0x18, 0x10, 0x85, 0x67, +0x00, 0x18, 0xAF, 0x02, 0x14, 0x10, 0x85, 0x67, +0x00, 0x18, 0x08, 0x03, 0x10, 0x10, 0x85, 0x67, +0x00, 0x18, 0x10, 0x0A, 0x0C, 0x10, 0x85, 0x67, +0x00, 0x18, 0x8E, 0x02, 0x08, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x6C, 0x9A, 0x01, 0x6C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x62, 0xF3, +0x10, 0x48, 0x00, 0xF1, 0x51, 0xA0, 0x00, 0xF1, +0x72, 0xA0, 0x4E, 0xEB, 0x29, 0x23, 0x67, 0x42, +0x13, 0x4B, 0x6C, 0x33, 0x0D, 0xE3, 0x4C, 0x32, +0x55, 0xE0, 0x81, 0xA3, 0x7F, 0x4D, 0x53, 0x4D, +0x00, 0x18, 0x92, 0x0A, 0x00, 0xF1, 0x51, 0xA0, +0x01, 0x4A, 0x00, 0xF1, 0x51, 0xC0, 0x00, 0xF1, +0x71, 0xA0, 0x00, 0xF1, 0x52, 0xA0, 0x6E, 0xEA, +0x06, 0x22, 0x80, 0xF0, 0x4C, 0x98, 0x02, 0x6B, +0x6D, 0xEA, 0x80, 0xF0, 0x4C, 0xD8, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x00, 0xF1, +0x71, 0xA2, 0x08, 0x6C, 0x8E, 0xEB, 0x02, 0x2B, +0x00, 0xF1, 0x71, 0xC2, 0x00, 0x18, 0x91, 0x09, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFF, 0xF7, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x8C, 0xEA, 0xA0, 0xF4, 0x60, 0x9B, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0xF4, 0x84, 0x9C, 0xCC, 0xEB, +0x40, 0xF6, 0xA0, 0x35, 0x8D, 0xEB, 0x1F, 0xF7, +0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, +0xAD, 0xEB, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0xF2, 0x9C, 0x9C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF2, 0x80, 0x9C, +0x89, 0xE2, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x1F, 0xF7, +0x00, 0x6C, 0x4C, 0xEC, 0xFF, 0x6B, 0x02, 0xF0, +0x00, 0x74, 0xAC, 0xEB, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF2, 0x9C, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF2, +0x80, 0x9C, 0x91, 0xE2, 0x00, 0x6D, 0xA0, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF4, 0x80, 0x9C, +0xD4, 0x36, 0x40, 0xF6, 0x60, 0x33, 0x8C, 0xEE, +0x6D, 0xEE, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF4, +0x64, 0x9B, 0x6D, 0xEE, 0x1F, 0xF7, 0x00, 0x6B, +0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, +0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, +0x7C, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF2, 0x60, 0x9B, 0x69, 0xE2, 0xC0, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x0F, 0xF5, 0x00, 0x6B, +0x78, 0xEE, 0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF4, 0x80, 0x9C, +0x40, 0xF6, 0xA0, 0x35, 0x12, 0xEB, 0x8C, 0xEB, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF4, 0x84, 0x9C, +0xAD, 0xEB, 0x8D, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, +0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, +0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF2, +0x9C, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0xC0, 0xF2, 0x80, 0x9C, 0x89, 0xE2, 0x60, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF4, 0x54, 0x9A, 0x40, 0x9A, 0x20, 0xE8, +0x1F, 0x6B, 0x8C, 0xEB, 0x01, 0x6A, 0x00, 0x6C, +0xA3, 0x67, 0xA7, 0xEC, 0x01, 0x6E, 0xCC, 0xED, +0x03, 0x2D, 0x02, 0x4A, 0xFF, 0x6D, 0xAC, 0xEA, +0x01, 0x4C, 0x04, 0x74, 0xF5, 0x61, 0x20, 0xE8, +0xFF, 0x6B, 0x6C, 0xED, 0x6C, 0xEC, 0x03, 0x2D, +0x92, 0x32, 0x6C, 0xEA, 0x20, 0xE8, 0xF0, 0x6A, +0xAC, 0xEA, 0x96, 0x34, 0x47, 0x32, 0x8D, 0xEA, +0x6C, 0xEA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF5, 0x4C, 0x9A, 0x40, 0xA2, 0x00, 0xF6, +0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, 0x00, 0x52, +0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, +0x6C, 0x9A, 0x10, 0xF0, 0x00, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x01, 0x6A, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x6C, 0x9A, +0x10, 0xF0, 0x01, 0x6C, 0x8B, 0xEC, 0x40, 0x9B, +0x8C, 0xEA, 0x40, 0xDB, 0x00, 0x6A, 0x20, 0xE8, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF5, 0x50, 0x9A, +0x30, 0xF0, 0x20, 0x69, 0x05, 0xF0, 0x18, 0x49, +0x40, 0xA2, 0x00, 0x6A, 0x06, 0xD2, 0x02, 0x67, +0x08, 0xD2, 0x07, 0xD2, 0x07, 0x92, 0x04, 0x05, +0x01, 0x72, 0x58, 0x67, 0x07, 0xD2, 0x10, 0xF0, +0x20, 0x6A, 0x78, 0x67, 0xC5, 0xF4, 0x11, 0x4A, +0x69, 0xE2, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, +0x7C, 0x9B, 0x40, 0xDB, 0x06, 0x94, 0x00, 0x18, +0xBF, 0x0F, 0x01, 0x72, 0x02, 0x60, 0x00, 0x6A, +0xD8, 0x10, 0x0C, 0x28, 0xBD, 0x67, 0x90, 0xA5, +0xFF, 0x74, 0x1F, 0x60, 0x1F, 0x6A, 0x8C, 0xEA, +0x0F, 0x72, 0x01, 0x68, 0x03, 0x60, 0x00, 0x18, +0x14, 0x0B, 0x02, 0x67, 0x7D, 0x67, 0x50, 0xA3, +0x08, 0x94, 0x06, 0x95, 0x40, 0xC1, 0x01, 0x4C, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, 0x01, 0x4D, +0x00, 0xF4, 0x00, 0x74, 0x08, 0xD4, 0x06, 0xD5, +0x01, 0x49, 0x04, 0x60, 0xFF, 0x48, 0xFF, 0x6A, +0x4C, 0xE8, 0xC8, 0x17, 0x00, 0xF4, 0x00, 0x6A, +0x08, 0xD2, 0x08, 0x92, 0xFF, 0xF7, 0x1F, 0x6B, +0x01, 0x4A, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF3, 0x10, 0x4B, 0x6D, 0xE2, 0xA2, 0xF4, +0x86, 0xA3, 0xFF, 0x4A, 0xA2, 0xF4, 0x88, 0xC3, +0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, 0x02, 0x5A, +0xF1, 0x60, 0x00, 0x6B, 0x02, 0x6C, 0x07, 0xD3, +0x06, 0xD4, 0x24, 0x67, 0x0A, 0xD3, 0x0A, 0x92, +0x01, 0x72, 0x58, 0x67, 0x0A, 0xD2, 0x10, 0xF0, +0x20, 0x6A, 0x78, 0x67, 0xC5, 0xF4, 0x13, 0x4A, +0x69, 0xE2, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, +0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x49, 0xE1, 0xA2, 0xF4, +0x88, 0xA2, 0x09, 0xD2, 0x1F, 0x6A, 0x8C, 0xEA, +0x0F, 0x72, 0x0E, 0x61, 0x09, 0x95, 0xA2, 0xF4, +0x89, 0xA5, 0x00, 0x18, 0x14, 0x0B, 0x01, 0x42, +0xFF, 0x6A, 0x4C, 0xE8, 0x09, 0x92, 0xA2, 0xF4, +0x88, 0xA2, 0xA2, 0xF4, 0xA9, 0xA2, 0x07, 0x10, +0x00, 0x18, 0x14, 0x0B, 0x09, 0x93, 0x02, 0x67, +0x00, 0x6D, 0xA2, 0xF4, 0x88, 0xA3, 0x00, 0x18, +0x1C, 0x0B, 0x26, 0x5A, 0x11, 0x60, 0x06, 0x92, +0x30, 0xF0, 0x20, 0x6D, 0x05, 0xF0, 0x18, 0x4D, +0x51, 0xE5, 0xD0, 0x67, 0x35, 0xE5, 0x00, 0x18, +0x26, 0x08, 0x06, 0x93, 0xFF, 0xF7, 0x1F, 0x6A, +0x6D, 0xE0, 0x4C, 0xEB, 0x06, 0xD3, 0x15, 0x10, +0x38, 0x5A, 0x13, 0x61, 0x07, 0x92, 0x30, 0xF0, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0x05, 0xF4, +0x18, 0x4C, 0x05, 0xF0, 0x18, 0x4D, 0x51, 0xE4, +0x35, 0xE5, 0xD0, 0x67, 0x00, 0x18, 0x26, 0x08, +0x07, 0x93, 0xFF, 0x6A, 0x6D, 0xE0, 0x4C, 0xEB, +0x07, 0xD3, 0x08, 0x94, 0x25, 0xE0, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xE9, 0x23, 0xEC, 0x9F, 0x60, +0xBD, 0x67, 0x67, 0x45, 0x11, 0x4B, 0xA0, 0xA3, +0x06, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0xA2, 0xF4, 0xA8, 0xC2, 0x82, 0x33, +0xBD, 0x67, 0xA2, 0xF4, 0x69, 0xC2, 0x67, 0x45, +0x15, 0x4B, 0xA0, 0xA3, 0x00, 0x6B, 0x23, 0xF1, +0xA8, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF5, +0x54, 0x9A, 0x01, 0x6C, 0x30, 0xF0, 0x20, 0x6D, +0x8E, 0xEB, 0x00, 0xF3, 0xBC, 0x9D, 0x10, 0xF0, +0x20, 0x6C, 0xC5, 0xF4, 0x15, 0x4C, 0x71, 0xE4, +0x80, 0xDD, 0x30, 0xF0, 0x20, 0x6D, 0x00, 0xF5, +0xB8, 0x9D, 0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, +0x10, 0x4C, 0x51, 0xE4, 0xB1, 0xE4, 0x80, 0xA4, +0x80, 0xC2, 0x06, 0x95, 0x01, 0x4A, 0xFF, 0xF7, +0x1F, 0x6C, 0x4C, 0xEC, 0xA3, 0xEC, 0xE1, 0x61, +0x01, 0x6A, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, +0x08, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x00, 0x69, 0x43, 0x10, +0x01, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x4E, 0xE9, +0x00, 0xF3, 0x7C, 0x9B, 0x10, 0xF0, 0x20, 0x6A, +0xC5, 0xF6, 0x1D, 0x4A, 0x29, 0xE2, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x4C, 0x9A, +0x00, 0xA2, 0xFF, 0x6A, 0x4C, 0xE8, 0x0F, 0x6A, +0x0C, 0xEA, 0x2D, 0x22, 0x01, 0x6A, 0x0C, 0xEA, +0x02, 0x22, 0xEE, 0x6A, 0x22, 0x10, 0x02, 0x6A, +0x0C, 0xEA, 0x15, 0x22, 0x20, 0x6A, 0x0C, 0xEA, +0x70, 0x67, 0x0E, 0x2A, 0x00, 0x18, 0x34, 0x0B, +0x70, 0x67, 0x04, 0x2A, 0x20, 0x6A, 0x4D, 0xEB, +0xFF, 0x6A, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF5, 0x5C, 0x9A, 0x00, 0x6C, 0x80, 0xC2, +0xFD, 0x6A, 0x6C, 0xEA, 0x0B, 0x10, 0x04, 0x6A, +0x0C, 0xEA, 0x02, 0x22, 0xFB, 0x6A, 0x05, 0x10, +0x08, 0x6B, 0x0C, 0xEB, 0x50, 0x67, 0x02, 0x23, +0xF7, 0x6A, 0x0C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF2, 0x6C, 0x9B, 0x40, 0xC3, 0x00, 0x18, +0x23, 0x0B, 0xBA, 0x2A, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, 0x94, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, +0xA0, 0x9C, 0x4C, 0x9B, 0xAC, 0xEA, 0x4D, 0xDB, +0x40, 0xDC, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0xD1, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, +0x3C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, +0x00, 0x4A, 0x40, 0x9A, 0x60, 0x99, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0x48, 0x9A, 0xC0, 0xF4, 0x10, 0x4C, +0x80, 0x9C, 0x00, 0x9A, 0x1A, 0x65, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0x9C, 0xC0, 0xF4, 0x18, 0x4A, +0x40, 0x9A, 0x01, 0xD4, 0x30, 0xF0, 0x20, 0x6C, +0x40, 0x9A, 0x62, 0xF3, 0xF0, 0x9C, 0x00, 0xD2, +0x44, 0x67, 0x62, 0xF3, 0x10, 0x4A, 0xC1, 0x9A, +0x83, 0x9A, 0x6C, 0xEF, 0xAC, 0xEE, 0x01, 0x93, +0xA2, 0x9A, 0xE5, 0xDA, 0x6C, 0xEC, 0x0C, 0xED, +0x64, 0x9A, 0x00, 0x90, 0x88, 0xDA, 0xC6, 0xDA, +0x0C, 0xEB, 0xA7, 0xDA, 0x69, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF4, 0x00, 0x4A, 0x40, 0x9A, +0xE0, 0xD9, 0x18, 0x67, 0xC0, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF4, 0x10, 0x4A, 0x40, 0x9A, +0xA0, 0xD8, 0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6C, +0xC0, 0xF4, 0x18, 0x4C, 0x80, 0x9C, 0x60, 0xDC, +0x05, 0x91, 0x04, 0x90, 0x03, 0x63, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, 0xC0, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, 0xA8, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x60, 0x9E, 0x8E, 0x9A, 0xE0, 0x9D, 0x6C, 0xEC, +0x6F, 0x9A, 0x91, 0xDA, 0xEC, 0xEB, 0x72, 0xDA, +0x80, 0xDE, 0x60, 0xDD, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, +0x07, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF3, 0x10, 0x4B, 0x01, 0x6E, 0x12, 0xEC, +0x71, 0xE4, 0x80, 0xF0, 0xB9, 0xA4, 0xCC, 0xED, +0x1D, 0x25, 0x80, 0xF0, 0xBA, 0xA4, 0xA2, 0xF4, +0x60, 0x9B, 0x80, 0xF0, 0x99, 0xA4, 0x75, 0xE5, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF5, 0x74, 0x9B, +0xBC, 0x35, 0x21, 0x4D, 0x75, 0xE5, 0xE0, 0xA5, +0x9E, 0x33, 0x9A, 0x34, 0xCC, 0xEC, 0x78, 0x33, +0x9C, 0x34, 0x4C, 0xEF, 0x8D, 0xEB, 0xED, 0xEB, +0x00, 0xF6, 0x60, 0x33, 0x00, 0xF6, 0x63, 0x33, +0x4C, 0xEB, 0x60, 0xC5, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x40, 0x9A, +0x60, 0xA2, 0x03, 0x6A, 0x6C, 0xEA, 0x03, 0x72, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x64, 0x9A, 0x7F, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF5, 0x40, 0x9A, 0x60, 0xA2, 0x03, 0x6A, +0x6C, 0xEA, 0x03, 0x72, 0x08, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF5, 0x64, 0x9A, 0x7F, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF5, 0x60, 0x9B, +0xFF, 0x6A, 0x4C, 0xEC, 0xA0, 0xA3, 0x03, 0x6B, +0xAC, 0xEB, 0x03, 0x73, 0x13, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x02, 0xF4, 0xA8, 0xA3, 0x01, 0x6B, +0xAC, 0xEB, 0x4C, 0xEB, 0x0B, 0x23, 0x30, 0xF0, +0x20, 0x6B, 0x20, 0xF5, 0xA4, 0x9B, 0x80, 0x6E, +0xCB, 0xEE, 0x60, 0xA5, 0x4C, 0xEB, 0xCD, 0xEB, +0x4C, 0xEB, 0x60, 0xC5, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x83, 0xF2, 0x69, 0xA2, +0x8E, 0xEB, 0x11, 0x2B, 0x83, 0xF2, 0x68, 0xA2, +0x1F, 0x6D, 0x6A, 0x32, 0xAC, 0xEA, 0x47, 0xEC, +0x01, 0x6C, 0x8C, 0xEA, 0x08, 0x22, 0x02, 0x6A, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0x66, 0x0E, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x80, 0xF0, +0x6C, 0x9A, 0x10, 0x6C, 0x8D, 0xEB, 0x80, 0xF0, +0x6C, 0xDA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x99, 0x0D, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xB2, 0x06, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xAF, 0x06, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x91, 0x09, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF5, 0x74, 0x9B, 0xFF, 0x6A, 0x4C, 0xEE, +0x6D, 0xE4, 0x08, 0x68, 0x80, 0xA3, 0xDB, 0xE0, +0x02, 0x67, 0x4C, 0xED, 0x07, 0xEE, 0xD0, 0x67, +0x4C, 0xEF, 0x04, 0xED, 0x4C, 0xEC, 0xCC, 0xEF, +0x0F, 0xE8, 0x8C, 0xE8, 0xE4, 0xED, 0xED, 0xE8, +0x4C, 0xE8, 0x00, 0xC3, 0x01, 0x90, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF5, 0x54, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, +0x8C, 0xEB, 0x4D, 0xE3, 0x40, 0xA3, 0xFF, 0x6C, +0x8C, 0xEE, 0x08, 0x6B, 0xDB, 0xE3, 0x8C, 0xED, +0x8C, 0xEA, 0x64, 0x67, 0x47, 0xED, 0x67, 0xEE, +0x6C, 0xEA, 0x8C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x01, 0x74, 0x0D, 0x60, 0x06, 0x24, 0x02, 0x74, +0x10, 0x60, 0x03, 0x74, 0x00, 0x6A, 0x1C, 0x61, +0x14, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA8, 0x35, +0x20, 0xF5, 0x48, 0x9A, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA8, 0x35, 0x20, 0xF5, 0x4C, 0x9A, +0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x50, 0x9A, 0xA8, 0x35, 0x55, 0xE5, 0x40, 0x9D, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x54, 0x9A, 0xA8, 0x35, 0x55, 0xE5, 0x40, 0x9D, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x81, 0xF4, 0x10, 0x6B, +0x23, 0xF1, 0x6C, 0xDA, 0x00, 0xF2, 0x00, 0x4B, +0x23, 0xF1, 0x70, 0xDA, 0x01, 0xF2, 0x00, 0x4B, +0x23, 0xF1, 0x74, 0xDA, 0x00, 0xF2, 0x00, 0x4B, +0x23, 0xF1, 0x78, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6B, 0x6C, 0xEC, 0x1F, 0x6D, 0x8C, 0xED, +0x96, 0x34, 0x6C, 0xEC, 0x01, 0x74, 0x03, 0x6A, +0x0A, 0x60, 0x10, 0x24, 0x04, 0x74, 0x05, 0x60, +0x06, 0x74, 0x00, 0x6A, 0x12, 0x61, 0xEF, 0x4A, +0x02, 0x10, 0x07, 0x6A, 0x4B, 0xEA, 0xAB, 0xE2, +0x44, 0x32, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, +0x43, 0x32, 0x20, 0xE8, 0x08, 0x6A, 0xAB, 0xE2, +0x44, 0x32, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, +0x43, 0x32, 0x20, 0xE8, 0x00, 0xF6, 0x80, 0x34, +0x00, 0xF6, 0x83, 0x34, 0x47, 0x44, 0x5C, 0x4A, +0xFF, 0x6B, 0x6C, 0xEA, 0x77, 0x5A, 0x00, 0x6A, +0x06, 0x60, 0x00, 0x54, 0x64, 0x6A, 0x03, 0x60, +0x47, 0x44, 0x5D, 0x4A, 0x6C, 0xEA, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6B, 0x8C, 0xEB, 0xFF, 0xF7, 0x1F, 0x6A, +0x81, 0x46, 0x26, 0x67, 0xAC, 0xEA, 0x06, 0x2C, +0x83, 0x67, 0xA2, 0x67, 0x00, 0x18, 0xAE, 0x0C, +0x02, 0x67, 0x0A, 0x10, 0x83, 0x67, 0xA2, 0x67, +0x00, 0x18, 0xAE, 0x0C, 0x02, 0x67, 0x91, 0x67, +0x00, 0x18, 0x59, 0x07, 0x2C, 0xE8, 0x06, 0xEA, +0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF2, 0x60, 0x9B, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x69, 0xE2, 0x00, 0x9A, 0x41, 0x45, +0x25, 0x67, 0x05, 0x22, 0x85, 0x67, 0x00, 0x18, +0x59, 0x07, 0x2C, 0xE8, 0x06, 0xEA, 0x50, 0x67, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, +0x41, 0x45, 0x25, 0x67, 0x0C, 0xD6, 0x8C, 0xE8, +0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, +0x40, 0x9A, 0x41, 0xE0, 0xC0, 0xD8, 0x17, 0x10, +0x01, 0x6D, 0x90, 0x67, 0xAB, 0xED, 0x00, 0x18, +0xF7, 0x0C, 0x91, 0x67, 0x04, 0xD2, 0x00, 0x18, +0x59, 0x07, 0x0C, 0x93, 0x64, 0xEA, 0x43, 0x67, +0x04, 0x93, 0x2C, 0xEA, 0x2F, 0xE9, 0x6C, 0xE9, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF2, 0x60, 0x9B, +0x2D, 0xEA, 0x61, 0xE0, 0x40, 0xD8, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x85, 0xF4, 0x1C, 0x4A, 0x88, 0x34, 0x91, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF5, 0xA0, 0x35, +0xCC, 0xEA, 0x20, 0xF5, 0xDC, 0x9B, 0x80, 0xAC, +0xAD, 0xEA, 0x01, 0x6D, 0xAB, 0xED, 0x4C, 0xEE, +0x00, 0x18, 0x05, 0x0D, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x46, 0x67, 0xFF, 0x68, +0xFF, 0xF7, 0x1F, 0x69, 0x01, 0x4A, 0x0C, 0xD6, +0x0D, 0xD7, 0x8C, 0xE8, 0xAC, 0xE9, 0x04, 0x2A, +0x90, 0x67, 0xB1, 0x67, 0xC7, 0x67, 0x12, 0x10, +0xB1, 0x67, 0x90, 0x67, 0x00, 0x18, 0xAE, 0x0C, +0x0C, 0x94, 0x04, 0xD2, 0x00, 0x18, 0x59, 0x07, +0x0D, 0x96, 0x90, 0x67, 0xB1, 0x67, 0xC4, 0xEA, +0x0C, 0x92, 0x4C, 0xEE, 0x4F, 0xEB, 0x04, 0x92, +0x4C, 0xEB, 0x6D, 0xEE, 0x00, 0x18, 0x1C, 0x0D, +0x01, 0x6C, 0x00, 0x18, 0x15, 0x08, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF5, 0x60, 0x9B, +0xFF, 0x6A, 0xAC, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x40, 0x9A, +0xFF, 0x6B, 0x40, 0xA2, 0x6C, 0xEA, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xED, 0xFF, 0x75, 0x4C, 0xEC, +0xCC, 0xEA, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF3, 0x10, 0x4B, 0x71, 0xE4, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, +0x71, 0xE4, 0x63, 0xF2, 0x74, 0xA4, 0xAC, 0xEA, +0xAF, 0xED, 0x6C, 0xED, 0xAD, 0xEA, 0x63, 0xF2, +0x54, 0xC4, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, +0x7C, 0x9B, 0x10, 0xF0, 0x20, 0x6A, 0x46, 0xF5, +0x1D, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF5, 0x44, 0x9A, 0x40, 0xA2, +0x12, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, +0x48, 0x9A, 0x40, 0xA2, 0x0C, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF5, 0x4C, 0x9A, 0x40, 0xA2, +0x06, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, +0x50, 0x9A, 0x40, 0xA2, 0x15, 0x22, 0xE0, 0xF3, +0x09, 0x70, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF2, 0x6C, 0x9A, 0x20, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x00, 0x6A, 0x09, 0x10, +0x32, 0x6C, 0x00, 0x18, 0x15, 0x08, 0x01, 0x48, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0xD3, 0x17, +0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, +0xFF, 0x74, 0xAC, 0xEA, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0xC5, 0xF5, 0x53, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, +0x63, 0xF2, 0xA3, 0xA3, 0x8C, 0xEA, 0x8F, 0xEC, +0xAC, 0xEC, 0x8D, 0xEA, 0x63, 0xF2, 0x43, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x26, 0x67, +0x0C, 0xE9, 0x53, 0x71, 0x0C, 0xEC, 0x0C, 0xED, +0x09, 0x60, 0x06, 0x2C, 0x30, 0xF0, 0x20, 0x6A, +0xC5, 0xF5, 0x52, 0xA2, 0xAD, 0xEA, 0x0B, 0x10, +0x00, 0x18, 0x77, 0x0D, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x63, 0xF2, 0x63, 0xA2, +0x63, 0xF2, 0x42, 0xA2, 0x6D, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xA0, 0xF2, 0x68, 0x9B, 0x0C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF5, +0x30, 0xC2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x74, 0x9A, +0x7F, 0x6A, 0xBD, 0x67, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, +0x58, 0x9A, 0x7D, 0x67, 0x80, 0xA2, 0x01, 0x6A, +0x4F, 0xCD, 0x4C, 0xEC, 0x92, 0xC3, 0x02, 0x6B, +0x70, 0xC5, 0x00, 0x18, 0x65, 0x19, 0x04, 0x04, +0x00, 0x18, 0x44, 0x08, 0x09, 0x97, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xE5, 0xF5, 0x59, 0xA2, 0xFF, 0x63, 0x05, 0x5A, +0x2C, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, +0x40, 0xF2, 0x18, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, +0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, +0x5C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0x9A, +0x1A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, +0x5C, 0x9A, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF5, 0x40, 0x9A, 0x0D, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF5, 0x40, 0x9A, 0x40, 0x9A, +0x50, 0x32, 0x00, 0xF5, 0x42, 0x32, 0x0A, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x44, 0x9A, +0x40, 0x9A, 0xE1, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, +0x01, 0x10, 0x64, 0x6A, 0x7D, 0x67, 0x40, 0xCB, +0x7D, 0x67, 0x40, 0xAB, 0xFF, 0xF7, 0x1F, 0x6B, +0x01, 0x63, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF3, 0x10, 0x4B, 0x83, 0xF2, 0xA8, 0xA3, +0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x03, 0x6C, +0x8B, 0xEC, 0xAC, 0xEC, 0x83, 0xF2, 0x88, 0xC3, +0x83, 0xF2, 0xEA, 0xAB, 0x30, 0xF0, 0x20, 0x6B, +0x05, 0xF6, 0x08, 0x4B, 0x00, 0x6D, 0x14, 0x6E, +0xD8, 0xED, 0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, +0x10, 0x4C, 0x12, 0xEE, 0x91, 0xE6, 0x83, 0xF2, +0x14, 0xA4, 0x01, 0x6E, 0xCC, 0xE8, 0x19, 0x20, +0x83, 0xF2, 0x94, 0xA4, 0xFF, 0x68, 0x86, 0x34, +0xCC, 0xEC, 0x0C, 0xEC, 0x12, 0x24, 0x80, 0xAB, +0x5B, 0xEC, 0x01, 0x2A, 0xE5, 0xE8, 0x12, 0xEC, +0x81, 0xCB, 0x82, 0xAB, 0x98, 0xEF, 0x12, 0xEC, +0x5A, 0xEC, 0x01, 0x2A, 0xE5, 0xE8, 0x12, 0xEC, +0x82, 0xCB, 0x81, 0xAB, 0x02, 0x2C, 0xC1, 0xCB, +0x82, 0xCB, 0x01, 0x4D, 0x0A, 0x75, 0x14, 0x4B, +0xD6, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, +0x10, 0x4B, 0x83, 0xF2, 0x4A, 0xCB, 0x83, 0xF2, +0x8A, 0xAB, 0x83, 0xF2, 0x4C, 0xAB, 0x01, 0x90, +0x5B, 0xEC, 0x01, 0x2A, 0xE5, 0xE8, 0x83, 0xF2, +0x88, 0xA3, 0x12, 0xEA, 0x83, 0xF2, 0x4E, 0xCB, +0x58, 0x67, 0x83, 0xF2, 0x50, 0xCB, 0x02, 0x6A, +0x8D, 0xEA, 0x83, 0xF2, 0x48, 0xC3, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF3, 0x10, 0x4B, 0x83, 0xF2, 0xA8, 0xA3, +0x02, 0x6C, 0x00, 0x6A, 0xAC, 0xEC, 0x0C, 0x24, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x48, 0x9A, +0x00, 0x6C, 0x80, 0xC2, 0x03, 0x6A, 0x4B, 0xEA, +0xAC, 0xEA, 0x83, 0xF2, 0x48, 0xC3, 0x01, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0x00, 0x6A, 0x14, 0x6C, +0x98, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, +0x10, 0x4B, 0x01, 0x4A, 0x0A, 0x72, 0x12, 0xEC, +0x71, 0xE4, 0x83, 0xF2, 0xB4, 0xA4, 0x02, 0x6B, +0x6B, 0xEB, 0xAC, 0xEB, 0x83, 0xF2, 0x74, 0xC4, +0xEE, 0x61, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xE5, 0xF5, 0x58, 0xA2, 0x01, 0x6B, 0x4C, 0xEB, +0x00, 0x6A, 0x1C, 0x23, 0x30, 0xF0, 0x20, 0x6A, +0x05, 0xF6, 0x10, 0x4A, 0x00, 0x6B, 0xA0, 0x9A, +0x8E, 0xED, 0x0F, 0x2D, 0x14, 0x6E, 0xD8, 0xEB, +0x30, 0xF0, 0x20, 0x6D, 0x62, 0xF3, 0x10, 0x4D, +0x12, 0xEE, 0xB9, 0xE6, 0x83, 0xF2, 0xF4, 0xA6, +0x02, 0x6D, 0xAB, 0xED, 0xEC, 0xED, 0x83, 0xF2, +0xB4, 0xC6, 0x01, 0x4B, 0x0A, 0x73, 0x14, 0x4A, +0xEA, 0x61, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0xF7, 0x1F, 0x6A, 0x7D, 0x67, 0x0B, 0xD5, +0x4C, 0xEE, 0x20, 0xF0, 0xB8, 0xA3, 0x30, 0xF0, +0x20, 0x6B, 0x0A, 0xD4, 0x04, 0xD6, 0x62, 0xF3, +0x10, 0x4B, 0x83, 0xF2, 0xC8, 0xA3, 0x01, 0x6C, +0x00, 0xF6, 0xE0, 0x31, 0xCC, 0xEC, 0x00, 0xF6, +0x23, 0x31, 0x6C, 0x24, 0x18, 0x25, 0x01, 0x75, +0x69, 0x61, 0x0A, 0x94, 0x67, 0x24, 0x04, 0x95, +0x4A, 0xED, 0x64, 0x60, 0x7F, 0x71, 0x62, 0x60, +0xFF, 0xF7, 0x1F, 0x51, 0x5F, 0x61, 0x83, 0xF2, +0x0A, 0xAB, 0x1B, 0xED, 0x01, 0x28, 0xE5, 0xE8, +0x12, 0xE8, 0x4C, 0xE8, 0x01, 0x6A, 0x05, 0xD2, +0x18, 0x28, 0x02, 0x67, 0x16, 0x10, 0x0A, 0x94, +0x51, 0x24, 0x04, 0x95, 0xFF, 0xF7, 0x1F, 0x75, +0x4D, 0x60, 0x7F, 0x71, 0x4B, 0x60, 0xFF, 0xF7, +0x1F, 0x51, 0x48, 0x61, 0x83, 0xF2, 0x0C, 0xAB, +0x1B, 0xED, 0x01, 0x28, 0xE5, 0xE8, 0x12, 0xE8, +0x4C, 0xE8, 0x00, 0x6A, 0x05, 0xD2, 0x01, 0x28, +0x01, 0x68, 0x0A, 0x94, 0x00, 0x18, 0x0D, 0x0E, +0x00, 0x6B, 0x14, 0x6C, 0x98, 0xEB, 0x30, 0xF0, +0x20, 0x6E, 0x1C, 0x65, 0x62, 0xF3, 0x10, 0x4E, +0x01, 0x6D, 0xFF, 0x6A, 0xE3, 0x67, 0x4C, 0xEF, +0x12, 0xEC, 0xD1, 0xE4, 0x83, 0xF2, 0x94, 0xA4, +0xAC, 0xEC, 0x4C, 0xEC, 0x24, 0x2C, 0x78, 0x67, +0x78, 0xEF, 0x05, 0x97, 0xE9, 0x4B, 0x12, 0xEA, +0xC9, 0xE2, 0xE4, 0x36, 0x83, 0xF2, 0xF4, 0xA2, +0xEC, 0xEB, 0xCD, 0xEB, 0x0A, 0x96, 0xAD, 0xEB, +0xA3, 0xF2, 0xC0, 0xDA, 0x0B, 0x97, 0xDD, 0x67, +0xA3, 0xF2, 0xE4, 0xDA, 0xE7, 0x46, 0x09, 0x4F, +0xC0, 0xAF, 0x83, 0xF2, 0x9C, 0xCA, 0x83, 0xF2, +0x1A, 0xCA, 0x83, 0xF2, 0xD8, 0xCA, 0x83, 0xF2, +0x36, 0xC2, 0x83, 0xF2, 0x95, 0xC2, 0x83, 0xF2, +0x74, 0xC2, 0x45, 0x67, 0x04, 0x10, 0x01, 0x4B, +0x0A, 0x73, 0xC7, 0x61, 0x00, 0x6A, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF6, +0x0C, 0x4A, 0x00, 0x6C, 0x32, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x05, 0xF6, 0x0C, 0x4A, 0x00, 0x6B, +0x14, 0x6D, 0xB8, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0x62, 0xF3, 0x10, 0x4C, 0x12, 0xED, 0x91, 0xE5, +0x83, 0xF2, 0xD4, 0xA4, 0x01, 0x6D, 0xAC, 0xEE, +0x08, 0x26, 0x83, 0xF2, 0x94, 0xA4, 0x86, 0x34, +0xAC, 0xEC, 0x03, 0x24, 0x80, 0xAA, 0x01, 0x4C, +0x80, 0xCA, 0x01, 0x4B, 0x0A, 0x73, 0x14, 0x4A, +0xE7, 0x61, 0x00, 0x18, 0xA9, 0x0D, 0x7D, 0x67, +0x48, 0xCB, 0x68, 0xAB, 0x30, 0xF0, 0x20, 0x6C, +0xE5, 0xF5, 0x9A, 0xAC, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xEB, 0x8E, 0xEB, 0x57, 0x23, 0x7D, 0x67, +0x88, 0xAB, 0x4C, 0xEC, 0x00, 0x18, 0xC8, 0x0D, +0x51, 0x10, 0x14, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, +0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, 0x12, 0xED, +0x6D, 0xE5, 0x83, 0xF2, 0xD4, 0xA3, 0x01, 0x6D, +0xAC, 0xEE, 0x0A, 0x26, 0x83, 0xF2, 0x74, 0xA3, +0x66, 0x33, 0xAC, 0xEB, 0xFF, 0x6D, 0xAC, 0xEB, +0x03, 0x2B, 0x60, 0xAA, 0x01, 0x4B, 0x60, 0xCA, +0x01, 0x4C, 0x0A, 0x74, 0x14, 0x4A, 0xE5, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x83, 0xF2, 0x69, 0xA2, 0xFF, 0x73, 0x2E, 0x61, +0x83, 0xF2, 0x70, 0xAA, 0x01, 0x4B, 0x83, 0xF2, +0x70, 0xCA, 0x83, 0xF2, 0x70, 0xAA, 0x83, 0xF2, +0x4E, 0xAA, 0x6E, 0xEA, 0x23, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x05, 0xF6, 0x0C, 0x4A, 0x00, 0x6B, +0x14, 0x6D, 0xB8, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0x62, 0xF3, 0x10, 0x4C, 0x12, 0xED, 0x91, 0xE5, +0x83, 0xF2, 0xD4, 0xA4, 0x01, 0x6D, 0xAC, 0xEE, +0x08, 0x26, 0x83, 0xF2, 0x94, 0xA4, 0x86, 0x34, +0xAC, 0xEC, 0x03, 0x24, 0x80, 0xAA, 0x01, 0x4C, +0x80, 0xCA, 0x01, 0x4B, 0x0A, 0x73, 0x14, 0x4A, +0xE7, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x78, 0x67, +0x05, 0xF6, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x80, 0xF0, 0x6C, 0x9A, +0x02, 0xF0, 0x00, 0x6C, 0x8D, 0xEB, 0x80, 0xF0, +0x6C, 0xDA, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x05, 0xF6, 0x0A, 0x48, +0x00, 0x69, 0x14, 0x6A, 0x58, 0xE9, 0x30, 0xF0, +0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, 0x12, 0xEA, +0x69, 0xE2, 0x83, 0xF2, 0x94, 0xA2, 0x01, 0x6B, +0x8C, 0xEB, 0x2B, 0x23, 0x81, 0xA8, 0x60, 0xA8, +0x63, 0xEC, 0x27, 0x61, 0xFF, 0xF7, 0x7C, 0x80, +0x81, 0x43, 0x04, 0xD4, 0x0A, 0x2C, 0x00, 0xF0, +0x46, 0x98, 0x00, 0xF0, 0x8A, 0x98, 0x40, 0xEA, +0x5D, 0x67, 0x67, 0x42, 0x09, 0x4B, 0x40, 0xAB, +0x17, 0x10, 0xFF, 0xF7, 0x9B, 0xA0, 0x01, 0x4C, +0xFF, 0xF7, 0x9B, 0xC0, 0xFF, 0xF7, 0x9B, 0xA0, +0x82, 0xEB, 0x08, 0x60, 0x83, 0xF2, 0x94, 0xA2, +0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x83, 0xF2, +0x74, 0xC2, 0x07, 0x10, 0x00, 0xF0, 0x46, 0x98, +0x00, 0xF0, 0x8A, 0x98, 0x40, 0xEA, 0x00, 0x6A, +0x41, 0xC8, 0x01, 0x49, 0x0A, 0x71, 0x14, 0x48, +0xC4, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x62, 0xF3, +0x10, 0x48, 0x83, 0xF2, 0x88, 0xA0, 0x01, 0x6B, +0x00, 0x6A, 0x8C, 0xEB, 0x23, 0x23, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF5, 0x48, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x03, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, +0x83, 0xF2, 0x48, 0xC0, 0x00, 0x18, 0xA9, 0x0D, +0x7D, 0x67, 0x48, 0xCB, 0x48, 0xAB, 0xFF, 0xF7, +0x1F, 0x6C, 0x4C, 0xEC, 0x00, 0x18, 0xC8, 0x0D, +0x83, 0xF2, 0x68, 0xA0, 0x83, 0xF2, 0xCC, 0xA8, +0x02, 0x6A, 0xFF, 0x6C, 0x6D, 0xEA, 0x6D, 0x4C, +0x01, 0x6D, 0x83, 0xF2, 0x48, 0xC0, 0x00, 0x18, +0xE0, 0x0A, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x62, 0xF3, 0x10, 0x48, 0x83, 0xF2, 0x48, 0xA0, +0x03, 0x69, 0x4C, 0xE9, 0x00, 0x6A, 0x24, 0x29, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x48, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xE5, 0xF5, 0x18, 0x4C, +0x20, 0xC2, 0x00, 0x6D, 0xD4, 0x6E, 0x00, 0x18, +0x21, 0x08, 0x01, 0x6A, 0x83, 0xF2, 0x4C, 0xC8, +0x64, 0x6A, 0x83, 0xF2, 0x68, 0xA0, 0x83, 0xF2, +0x4A, 0xC8, 0x64, 0x6A, 0x83, 0xF2, 0x4E, 0xC8, +0x80, 0x4A, 0x9F, 0x4A, 0x6C, 0xEA, 0x04, 0x6B, +0x6D, 0xEA, 0x01, 0x6B, 0x6D, 0xEA, 0x83, 0xF2, +0x48, 0xC0, 0x83, 0xF2, 0x29, 0xC0, 0x43, 0x67, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0x6A, 0x20, 0xF4, 0x70, 0x9B, 0x8C, 0xEA, +0x4C, 0x32, 0x6D, 0xE2, 0x80, 0xA3, 0x30, 0xF0, +0x20, 0x6C, 0x40, 0xF4, 0x80, 0x9C, 0x91, 0xE2, +0xA0, 0xA4, 0x80, 0xA4, 0x60, 0x9B, 0x30, 0xF0, +0x20, 0x6B, 0x20, 0xF4, 0x74, 0x9B, 0x69, 0xE2, +0x60, 0xA2, 0x40, 0x9A, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0x20, 0xF4, +0x70, 0x9B, 0x8C, 0xEA, 0x4C, 0x32, 0x6D, 0xE2, +0x80, 0xA3, 0x80, 0xA3, 0x30, 0xF0, 0x20, 0x6C, +0x40, 0xF4, 0x80, 0x9C, 0x91, 0xE2, 0xA0, 0xA4, +0x80, 0xA4, 0x60, 0x9B, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF4, 0x74, 0x9B, 0x6D, 0xE2, 0x60, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x78, 0x9B, +0x6D, 0xE2, 0x80, 0xA3, 0x60, 0xA3, 0x30, 0xF0, +0x20, 0x6B, 0x40, 0xF4, 0x64, 0x9B, 0x6D, 0xE2, +0x60, 0xA3, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, +0x6C, 0x9B, 0x69, 0xE2, 0x40, 0xA2, 0x20, 0xE8, +0xDE, 0x63, 0x43, 0x62, 0x42, 0xD1, 0x41, 0xD0, +0x01, 0x6A, 0x7D, 0x67, 0x4B, 0xEA, 0x54, 0xC3, +0x0F, 0x6A, 0x56, 0xC3, 0x08, 0x6A, 0x57, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x50, 0x9A, +0xFF, 0x68, 0x8C, 0xE8, 0x0C, 0x30, 0x49, 0xE0, +0x40, 0x9A, 0x04, 0x01, 0x06, 0x04, 0xB1, 0x67, +0x04, 0x6E, 0x04, 0xD2, 0x00, 0x18, 0x26, 0x08, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x54, 0x9A, +0xB1, 0x67, 0x07, 0x04, 0x41, 0xE0, 0x40, 0x98, +0x04, 0x6E, 0x04, 0xD2, 0x00, 0x18, 0x26, 0x08, +0x05, 0x04, 0x00, 0x18, 0x62, 0x08, 0x43, 0x97, +0x42, 0x91, 0x41, 0x90, 0x22, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF5, 0x44, 0x9A, 0xA0, 0xF5, 0x68, 0x9B, +0x00, 0xA2, 0x20, 0xA3, 0xFF, 0x6A, 0x4C, 0xE8, +0x4C, 0xE9, 0x2A, 0xE8, 0x2C, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF4, 0x50, 0x9A, 0x0C, 0x33, +0x49, 0xE3, 0x40, 0xA2, 0xFF, 0x6B, 0x6C, 0xEA, +0x5A, 0x32, 0x6C, 0xEA, 0x01, 0x72, 0x0A, 0x60, +0x05, 0x22, 0x02, 0x72, 0x0B, 0x60, 0x03, 0x72, +0x0D, 0x60, 0x0F, 0x10, 0x90, 0x67, 0x00, 0x18, +0xE2, 0x23, 0x0B, 0x10, 0x90, 0x67, 0x00, 0x18, +0x32, 0x0F, 0x07, 0x10, 0x90, 0x67, 0x00, 0x18, +0x0F, 0x0F, 0x03, 0x10, 0x90, 0x67, 0x00, 0x18, +0x1C, 0x0F, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, +0x0A, 0xE9, 0xD9, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF5, 0x44, 0x9A, 0x20, 0xC2, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF3, 0x7C, 0x9B, 0x10, 0xF0, +0x20, 0x6A, 0xA7, 0xF5, 0x11, 0x4A, 0x40, 0xDB, +0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, +0x44, 0x9A, 0x40, 0xA2, 0x12, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF5, 0x48, 0x9A, 0x40, 0xA2, +0x0C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, +0x4C, 0x9A, 0x40, 0xA2, 0x06, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF5, 0x50, 0x9A, 0x40, 0xA2, +0x15, 0x22, 0xE0, 0xF3, 0x09, 0x70, 0x0A, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x6C, 0x9A, +0x20, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x00, 0x6A, 0x09, 0x10, 0x32, 0x6C, 0x00, 0x18, +0x15, 0x08, 0x01, 0x48, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xE8, 0xD3, 0x17, 0x01, 0x6A, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF5, 0x68, 0x9B, +0xFF, 0x6A, 0x8C, 0xEA, 0x60, 0x9B, 0x80, 0xF1, +0x01, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0x30, 0xF0, +0x20, 0x6C, 0xC0, 0xF5, 0x8C, 0x9C, 0x01, 0x72, +0x80, 0x9C, 0x04, 0x60, 0x02, 0x72, 0x80, 0x6A, +0x03, 0x60, 0x03, 0x10, 0xFF, 0x6A, 0x01, 0x4A, +0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF5, +0x48, 0x9A, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF5, 0x50, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF5, 0x6C, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF5, 0x74, 0x9B, +0x50, 0x6A, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF5, 0x78, 0x9B, 0x40, 0xC3, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, +0x4C, 0xED, 0x04, 0x67, 0x01, 0x75, 0x86, 0x67, +0x4C, 0xE8, 0x4C, 0xEC, 0x03, 0x60, 0x03, 0x75, +0x0A, 0x6B, 0x01, 0x61, 0x09, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF5, 0x5C, 0x9A, 0x0F, 0x6F, +0xAC, 0xEF, 0x70, 0x33, 0xED, 0xEB, 0x60, 0xC2, +0x00, 0x18, 0x8C, 0x0F, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF5, 0x40, 0x9A, 0x24, 0x58, 0x60, 0xA2, +0x7F, 0x6A, 0x6C, 0xEA, 0x05, 0x61, 0x80, 0x6B, +0x6B, 0xEB, 0x6D, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF5, 0x60, 0x9B, +0x40, 0xC3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF5, +0x84, 0x9C, 0xFF, 0x6B, 0xC2, 0x67, 0x6C, 0xEE, +0xC0, 0xC4, 0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF5, +0xC8, 0x9C, 0x03, 0x6F, 0x42, 0x32, 0x80, 0xA6, +0xEC, 0xEA, 0xF9, 0x4F, 0x6C, 0xEC, 0xEC, 0xEC, +0x8D, 0xEA, 0x6C, 0xEA, 0x40, 0xC6, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF5, 0x6C, 0x9A, 0x7F, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x00, 0x6A, +0x03, 0x10, 0x01, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF5, 0x6C, 0x9B, +0x60, 0xA3, 0x00, 0xF6, 0x60, 0x33, 0x00, 0xF6, +0x63, 0x33, 0x00, 0x53, 0x03, 0x61, 0x64, 0x72, +0xF0, 0x61, 0x0A, 0x10, 0x64, 0x5A, 0x08, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF5, 0x50, 0x9A, +0x40, 0xA2, 0x40, 0xC5, 0x01, 0x6A, 0x20, 0xE8, +0x00, 0x6A, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, +0x07, 0x6B, 0x8C, 0xEB, 0x4C, 0xED, 0x8E, 0x34, +0x42, 0xF4, 0x10, 0x4C, 0x36, 0x25, 0x1F, 0xF7, +0x00, 0x6D, 0x8C, 0xED, 0x02, 0xF0, 0x00, 0x75, +0x01, 0x60, 0x21, 0x2D, 0x1F, 0xF7, 0x00, 0x6A, +0x8C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0xBC, 0x9A, 0xB5, 0xE4, 0x80, 0xA5, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0xBC, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0x40, 0x9A, +0xB5, 0xE4, 0x51, 0xE4, 0x80, 0xA4, 0x00, 0xF6, +0x80, 0x34, 0x01, 0x6A, 0x00, 0xF6, 0x83, 0x34, +0x44, 0xEB, 0x8D, 0xEA, 0x36, 0x10, 0x30, 0xF0, +0x20, 0x6D, 0xC0, 0xF2, 0xA0, 0x9D, 0x01, 0x6E, +0xC4, 0xEB, 0xB1, 0xE4, 0xA0, 0xA4, 0x00, 0xF6, +0xA0, 0x35, 0x00, 0xF6, 0xA3, 0x35, 0xCD, 0xED, +0x3A, 0x10, 0x1F, 0xF7, 0x00, 0x6D, 0x8C, 0xED, +0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x25, 0x2D, +0x1F, 0xF7, 0x00, 0x6A, 0x8C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x07, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0xBC, 0x9A, 0xB5, 0xE4, +0x80, 0xA5, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0xBC, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x40, 0x9A, 0xB5, 0xE4, 0x51, 0xE4, +0x80, 0xA4, 0x01, 0x6A, 0x00, 0xF6, 0x80, 0x34, +0x44, 0xEB, 0x00, 0xF6, 0x83, 0x34, 0x4F, 0xEA, +0x8C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x40, 0xC5, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6D, 0xC0, 0xF2, +0xA0, 0x9D, 0x01, 0x6E, 0xC4, 0xEB, 0xB1, 0xE4, +0xA0, 0xA4, 0xCF, 0xEE, 0x00, 0xF6, 0xA0, 0x35, +0x00, 0xF6, 0xA3, 0x35, 0xCC, 0xED, 0x4C, 0xED, +0xA0, 0xC4, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD0, +0xFF, 0x6A, 0x4C, 0xED, 0x4C, 0xEE, 0x4C, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x58, 0x9A, +0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEC, 0x00, 0xAA, +0xE1, 0xF7, 0x1F, 0x6A, 0x0C, 0xEA, 0x30, 0xF0, +0x20, 0x68, 0xE0, 0xF5, 0x14, 0x98, 0x51, 0xE4, +0x6C, 0xEC, 0x80, 0xC8, 0x9C, 0x32, 0x30, 0xF0, +0x20, 0x6C, 0xE0, 0xF5, 0x98, 0x9C, 0x30, 0xF0, +0x20, 0x68, 0xE0, 0xF5, 0x1C, 0x98, 0x91, 0xE2, +0x80, 0xAC, 0x01, 0xE2, 0x00, 0x98, 0x6C, 0xEC, +0x05, 0x25, 0x10, 0xF0, 0x00, 0x6D, 0xAB, 0xED, +0xAD, 0xEC, 0x6C, 0xEC, 0xD8, 0xF0, 0x00, 0x6B, +0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF5, +0x98, 0x9C, 0x91, 0xE2, 0x60, 0xCC, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF6, 0x60, 0x9B, 0x6D, 0xE2, +0x80, 0xA3, 0x01, 0x6B, 0x8C, 0xEB, 0x05, 0x23, +0x03, 0xF7, 0x01, 0x6B, 0x6B, 0xEB, 0x0C, 0xEB, +0x06, 0x10, 0x1F, 0xF7, 0x01, 0x6B, 0x6B, 0xEB, +0x0C, 0xEB, 0xE0, 0x37, 0xED, 0xEB, 0x30, 0xF0, +0x20, 0x6C, 0x00, 0xF6, 0x84, 0x9C, 0x80, 0xF4, +0xC0, 0x36, 0x6C, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF6, 0x68, 0x9B, 0x6D, 0xEE, 0x30, 0xF0, +0x20, 0x6B, 0xE0, 0xF5, 0x7C, 0x9B, 0x8D, 0xEE, +0x6D, 0xE2, 0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF2, 0x80, 0x9B, 0xF7, 0x6B, 0x91, 0xE2, +0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x01, 0x90, +0x01, 0x63, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x6B, +0xAC, 0xEB, 0x05, 0xD3, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF4, 0x78, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, +0x80, 0xAB, 0xE1, 0xF7, 0x1F, 0x6B, 0x00, 0x68, +0x8C, 0xEB, 0x69, 0xE2, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF6, 0x8C, 0x9B, 0x5C, 0x32, 0x91, 0xE2, +0x04, 0xD4, 0x18, 0x10, 0x04, 0x92, 0x20, 0x9A, +0x07, 0x28, 0x01, 0x6D, 0x83, 0xF1, 0x18, 0x6C, +0xAB, 0xED, 0xD1, 0x67, 0x00, 0x18, 0x05, 0x0D, +0x01, 0x6D, 0x83, 0xF1, 0x18, 0x6C, 0xAB, 0xED, +0xD1, 0x67, 0x00, 0x18, 0x05, 0x0D, 0x04, 0x93, +0x01, 0x48, 0xFF, 0xF7, 0x1F, 0x6A, 0x04, 0x4B, +0x4C, 0xE8, 0x04, 0xD3, 0x05, 0x92, 0x43, 0xE8, +0xE5, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x05, 0x6B, 0x63, 0xF3, +0x60, 0xDA, 0x09, 0x6B, 0x43, 0xF3, 0x7C, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0xA4, 0x9A, 0x03, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x40, 0xC5, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x88, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF2, 0xD4, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x4C, 0x9A, 0xC0, 0xF3, 0x70, 0x9B, +0x02, 0x6F, 0xC0, 0xDC, 0x60, 0xDA, 0xE0, 0xC5, +0x01, 0x6F, 0xC0, 0xDC, 0x60, 0xDA, 0xE0, 0xC5, +0x30, 0xF0, 0x20, 0x6F, 0xC0, 0xF3, 0xF4, 0x9F, +0xE0, 0xDC, 0x00, 0x6F, 0x60, 0xDA, 0xE0, 0xC5, +0xC0, 0xDC, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF3, 0x7C, 0x9B, +0xFF, 0x6A, 0x4C, 0xEC, 0x94, 0x34, 0x71, 0xE4, +0x60, 0xA4, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0xE5, 0x63, 0x35, 0x62, 0x34, 0xD1, 0x33, 0xD0, +0x30, 0xF0, 0x20, 0x6D, 0x08, 0x04, 0x60, 0xF1, +0x00, 0x4D, 0x54, 0x6E, 0x00, 0x18, 0xB7, 0x07, +0x30, 0xF0, 0x20, 0x6D, 0x1D, 0x04, 0x00, 0xF1, +0x0C, 0x4D, 0x54, 0x6E, 0x00, 0x18, 0xB7, 0x07, +0x30, 0xF0, 0x20, 0x6D, 0xE0, 0xF0, 0x1C, 0x4D, +0x04, 0x04, 0x0F, 0x6E, 0x00, 0x18, 0xB7, 0x07, +0x00, 0x6D, 0x2A, 0x6A, 0x58, 0xED, 0x30, 0xF0, +0x20, 0x6B, 0xE6, 0xF1, 0x08, 0x4B, 0x04, 0x6F, +0x31, 0x69, 0x2B, 0xE9, 0x00, 0x6E, 0x01, 0x4D, +0x12, 0xEA, 0x49, 0xE3, 0x49, 0x6B, 0x1B, 0x65, +0x60, 0xC2, 0x2C, 0x6B, 0x91, 0xA2, 0x63, 0xC2, +0x09, 0x6B, 0x64, 0xC2, 0x0D, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x04, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, +0x92, 0xA2, 0x16, 0xA2, 0xC1, 0xC2, 0x8D, 0xEF, +0x02, 0x6C, 0x8B, 0xEC, 0x0C, 0xEC, 0x1E, 0xA2, +0x96, 0xC2, 0x03, 0x6C, 0x8B, 0xEC, 0x0C, 0xEC, +0x41, 0x68, 0x0B, 0xE8, 0xF8, 0x65, 0x0C, 0xEC, +0x14, 0xA2, 0xDD, 0xC2, 0xD5, 0xC2, 0x2C, 0xE8, +0x3F, 0x67, 0x2C, 0xEF, 0xF2, 0xC2, 0xEE, 0xA2, +0xC9, 0xC2, 0xD9, 0xC2, 0xFF, 0x65, 0x08, 0x6F, +0xEB, 0xEF, 0x3F, 0x67, 0xEC, 0xE9, 0x21, 0x6E, +0x2E, 0xC2, 0xCB, 0xEE, 0x33, 0xA2, 0xCC, 0xEC, +0x9E, 0xC2, 0xD0, 0xA2, 0x98, 0x67, 0x87, 0xC2, +0xF9, 0x65, 0x80, 0x6C, 0x8B, 0xEC, 0x3F, 0x67, +0x2C, 0xEF, 0x8D, 0xEE, 0xF3, 0xC2, 0xD0, 0xC2, +0x10, 0x6F, 0x31, 0x6E, 0xCB, 0xEE, 0xEB, 0xEF, +0xEC, 0xE8, 0xCC, 0xEB, 0x10, 0x6E, 0x14, 0xC2, +0xCD, 0xEB, 0x40, 0x68, 0x0D, 0xEB, 0x8D, 0xEB, +0x71, 0xC2, 0xFF, 0x6A, 0x4C, 0xED, 0x80, 0x75, +0xA4, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, +0x40, 0x9A, 0x03, 0x6B, 0xF8, 0x67, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xF3, 0xEF, 0xC2, +0x00, 0x18, 0x17, 0x15, 0x00, 0x18, 0x75, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x44, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x1D, 0x05, 0x00, 0xC2, +0xE8, 0xF6, 0x0C, 0x4C, 0x54, 0x6E, 0x00, 0x18, +0x26, 0x08, 0x30, 0xF0, 0x20, 0x6C, 0x08, 0x05, +0x48, 0xF7, 0x00, 0x4C, 0x54, 0x6E, 0x00, 0x18, +0x26, 0x08, 0x30, 0xF0, 0x20, 0x6C, 0xE9, 0xF0, +0x04, 0x4C, 0x04, 0x05, 0x0F, 0x6E, 0x00, 0x18, +0x26, 0x08, 0x35, 0x97, 0x34, 0x91, 0x33, 0x90, +0x1B, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x1F, 0xF7, 0x00, 0x6A, +0xAC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x26, 0x67, +0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF2, 0x40, 0x9A, 0x55, 0xE5, +0x00, 0x9D, 0x91, 0x67, 0x00, 0x18, 0x59, 0x07, +0x2C, 0xE8, 0x06, 0xEA, 0x50, 0x67, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x46, 0x67, 0x01, 0x4A, 0x05, 0x67, 0x0C, 0xD6, +0x27, 0x67, 0x1C, 0x22, 0x1F, 0xF7, 0x00, 0x6A, +0xAC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x40, 0x9A, 0x49, 0xE0, 0x40, 0x9A, +0x0C, 0x94, 0x04, 0xD2, 0x00, 0x18, 0x59, 0x07, +0x0C, 0x93, 0x24, 0xEA, 0x6F, 0xEA, 0x04, 0x93, +0x6C, 0xEA, 0x4D, 0xE9, 0x1F, 0xF7, 0x00, 0x6A, +0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x40, 0x9A, 0x41, 0xE0, 0x20, 0xD8, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x06, 0xD4, 0x06, 0x04, 0x09, 0xD7, 0x07, 0xD5, +0x08, 0xD6, 0x00, 0x18, 0x44, 0x08, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF3, +0x78, 0x9B, 0x54, 0x34, 0x01, 0x4A, 0x71, 0xE4, +0xA0, 0xA4, 0xF8, 0x6B, 0xAC, 0xEB, 0x60, 0xC4, +0xFF, 0x6B, 0x6C, 0xEA, 0x80, 0x72, 0xF1, 0x61, +0x00, 0x18, 0x6F, 0x10, 0x00, 0x18, 0x90, 0x10, +0x00, 0x18, 0x71, 0x23, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0xD1, +0x08, 0xD0, 0x0A, 0xD4, 0x44, 0x67, 0x82, 0x10, +0x25, 0x73, 0x04, 0x60, 0x60, 0xA5, 0x60, 0xC2, +0x01, 0x4A, 0x7B, 0x10, 0x61, 0x85, 0x62, 0x73, +0x7D, 0x67, 0x20, 0x61, 0x62, 0x85, 0x78, 0x73, +0x03, 0x60, 0x58, 0x73, 0x7D, 0x67, 0x1A, 0x61, +0x82, 0x85, 0x60, 0xA6, 0x78, 0x6F, 0xEE, 0xEC, +0x30, 0xF0, 0x20, 0x6F, 0x72, 0x30, 0x00, 0xF6, +0x10, 0x4F, 0xE1, 0xE0, 0x00, 0xA0, 0x01, 0x5C, +0x98, 0x67, 0x94, 0x34, 0x8D, 0xE8, 0x3D, 0x67, +0x00, 0xC1, 0x0F, 0x68, 0x6C, 0xE8, 0xFD, 0xE0, +0x60, 0xA7, 0x02, 0x4D, 0x8D, 0xEB, 0x61, 0xC1, +0x00, 0xF0, 0x02, 0x03, 0x81, 0x85, 0x77, 0x74, +0x26, 0x61, 0x82, 0x85, 0x78, 0x74, 0x02, 0x60, +0x58, 0x74, 0x21, 0x61, 0x80, 0xAE, 0x06, 0xD3, +0x07, 0xD4, 0x82, 0x85, 0x78, 0x74, 0xF8, 0x67, +0x01, 0x5F, 0x18, 0x67, 0x14, 0x30, 0x18, 0x65, +0x0C, 0x6C, 0x07, 0x97, 0x0F, 0x68, 0x30, 0xF0, +0x20, 0x69, 0xE7, 0xEC, 0x0C, 0xEF, 0x00, 0xF6, +0x10, 0x49, 0x3D, 0xE7, 0xE0, 0xA7, 0x06, 0x90, +0x38, 0x67, 0x2D, 0xEF, 0xFC, 0x4C, 0xE0, 0xC0, +0x01, 0x48, 0xE4, 0x44, 0x06, 0xD0, 0xED, 0x2F, +0x04, 0x4B, 0x02, 0x4D, 0x25, 0x10, 0x81, 0x85, +0x78, 0x74, 0x02, 0x60, 0x58, 0x74, 0x20, 0x61, +0x81, 0x85, 0x20, 0x9E, 0x06, 0xD3, 0x78, 0x74, +0x98, 0x67, 0x01, 0x5C, 0xF8, 0x67, 0xF4, 0x37, +0x07, 0xD1, 0x1F, 0x65, 0x1C, 0x6C, 0x07, 0x97, +0x0F, 0x68, 0x30, 0xF0, 0x20, 0x69, 0xE6, 0xEC, +0x0C, 0xEF, 0x00, 0xF6, 0x10, 0x49, 0x3D, 0xE7, +0xE0, 0xA7, 0x06, 0x91, 0x18, 0x67, 0x0D, 0xEF, +0xFC, 0x4C, 0xE0, 0xC1, 0x01, 0x49, 0xE4, 0x44, +0x06, 0xD1, 0xED, 0x2F, 0x08, 0x4B, 0x01, 0x4D, +0x9D, 0x67, 0x04, 0x10, 0xE0, 0xA4, 0x01, 0x4C, +0xE0, 0xC2, 0x01, 0x4A, 0x63, 0xEC, 0xFA, 0x61, +0x04, 0x4E, 0x01, 0x4D, 0x60, 0x85, 0x7F, 0xF7, +0x1B, 0x2B, 0x0A, 0x94, 0x01, 0x24, 0x60, 0xC2, +0x0A, 0x97, 0x09, 0x91, 0x08, 0x90, 0xEB, 0xE2, +0x05, 0x63, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD0, 0x60, 0xA4, 0x41, 0xA4, 0x82, 0xA4, +0x00, 0xF0, 0x12, 0x06, 0x00, 0xF0, 0x1E, 0x07, +0x00, 0x6D, 0xA0, 0xC6, 0x01, 0x4E, 0xA6, 0x67, +0xEE, 0xED, 0xFA, 0x2D, 0x01, 0x6E, 0xE4, 0x67, +0xCC, 0xEF, 0x1D, 0x27, 0x81, 0x5B, 0x1B, 0x61, +0x81, 0x5A, 0x19, 0x61, 0x5D, 0x67, 0xD2, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x88, 0xF5, 0x6C, 0x9A, 0x9D, 0x67, 0xDD, 0x67, +0x73, 0xC4, 0x62, 0x34, 0x00, 0xF6, 0x62, 0x33, +0x76, 0xC6, 0x0D, 0x6B, 0x94, 0xC6, 0x70, 0xC6, +0x82, 0x34, 0x05, 0x6B, 0x95, 0xC6, 0x6F, 0xCE, +0x88, 0xF5, 0xAC, 0xDA, 0xA0, 0x10, 0x02, 0x6E, +0xA4, 0x67, 0xCC, 0xED, 0x44, 0x25, 0xFD, 0x67, +0x81, 0x5B, 0xD2, 0xC7, 0x18, 0x60, 0x44, 0xF3, +0xA0, 0x43, 0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF2, +0x00, 0x4B, 0x62, 0xF3, 0x10, 0x4C, 0x64, 0x33, +0xA4, 0x35, 0x95, 0xE5, 0x91, 0xE3, 0x68, 0xAC, +0xC8, 0xAD, 0x75, 0xC7, 0x62, 0x33, 0xD3, 0xC7, +0x76, 0xC7, 0xC2, 0x36, 0x00, 0x6B, 0x68, 0xCD, +0xD4, 0xC7, 0x68, 0xCC, 0x04, 0x10, 0x16, 0x6B, +0x6B, 0xEB, 0x1D, 0x67, 0x73, 0xC0, 0x81, 0x5A, +0x19, 0x60, 0x44, 0xF3, 0x80, 0x42, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF2, 0x00, 0x4A, 0x62, 0xF3, +0x10, 0x4B, 0x44, 0x32, 0x84, 0x34, 0x71, 0xE4, +0x6D, 0xE2, 0x48, 0xAB, 0xA8, 0xAC, 0xDD, 0x67, +0x59, 0xC6, 0x42, 0x32, 0xB7, 0xC6, 0x5A, 0xC6, +0xA2, 0x35, 0x00, 0x6A, 0x48, 0xCC, 0xB8, 0xC6, +0x48, 0xCB, 0x04, 0x10, 0x16, 0x6A, 0x4B, 0xEA, +0xFD, 0x67, 0x57, 0xC7, 0x0D, 0x6A, 0x1D, 0x67, +0x50, 0xC0, 0x09, 0x6A, 0x52, 0x10, 0x53, 0x2C, +0x81, 0x5B, 0x22, 0x60, 0xBD, 0x67, 0x72, 0xC5, +0xC4, 0xF1, 0xC0, 0x43, 0x30, 0xF0, 0x20, 0x6D, +0x62, 0xF3, 0x10, 0x4D, 0xC4, 0x36, 0xB9, 0xE6, +0xE6, 0xAE, 0x1D, 0x67, 0xF3, 0xC0, 0xE2, 0x37, +0xF4, 0xC0, 0x44, 0xF2, 0xE0, 0x43, 0xE4, 0x37, +0xB5, 0xE7, 0xE6, 0xAD, 0x74, 0x33, 0xF5, 0xC0, +0xE2, 0x37, 0xF6, 0xC0, 0x30, 0xF0, 0x20, 0x6F, +0x40, 0xF3, 0xFC, 0x9F, 0xED, 0xE3, 0x60, 0xA3, +0x86, 0xCE, 0x86, 0xCD, 0x77, 0xC0, 0x02, 0x10, +0x9D, 0x67, 0x72, 0xC4, 0x81, 0x5A, 0x23, 0x60, +0xC4, 0xF1, 0x80, 0x42, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF3, 0x10, 0x4B, 0x84, 0x34, 0x71, 0xE4, +0xBD, 0x67, 0x58, 0xC5, 0xA6, 0xAC, 0xDD, 0x67, +0xB9, 0xC6, 0xA2, 0x35, 0xBA, 0xC6, 0x44, 0xF2, +0xA0, 0x42, 0xA4, 0x35, 0x6D, 0xE5, 0xA6, 0xAB, +0x54, 0x32, 0xBB, 0xC6, 0xA2, 0x35, 0xBC, 0xC6, +0x30, 0xF0, 0x20, 0x6D, 0x40, 0xF3, 0xBC, 0x9D, +0xA9, 0xE2, 0x40, 0xA2, 0x5D, 0xC6, 0x00, 0x6A, +0x46, 0xCC, 0x46, 0xCB, 0x02, 0x10, 0xFD, 0x67, +0x58, 0xC7, 0x04, 0x6A, 0x1D, 0x67, 0x50, 0xC0, +0x0C, 0x6A, 0x4F, 0xC8, 0x04, 0x10, 0x7D, 0x67, +0x04, 0x6A, 0x50, 0xC3, 0xAF, 0xCB, 0x04, 0x04, +0x00, 0x18, 0x44, 0x08, 0x09, 0x97, 0x08, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xF8, 0x63, 0x0F, 0x62, +0x0E, 0xD1, 0x0D, 0xD0, 0x00, 0x6A, 0x10, 0xD4, +0x01, 0x68, 0x62, 0x67, 0xA0, 0xA4, 0x0E, 0x25, +0xFF, 0x6D, 0x01, 0x4B, 0xAC, 0xEB, 0x01, 0x4A, +0x0B, 0x73, 0xAC, 0xEA, 0x03, 0x61, 0x01, 0x48, +0xAC, 0xE8, 0x00, 0x6B, 0x37, 0x72, 0x01, 0x4C, +0xF1, 0x61, 0x37, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF3, 0x10, 0x4B, 0x86, 0xF5, 0x84, 0xA3, +0x0F, 0x5C, 0x01, 0x4C, 0x01, 0x61, 0x00, 0x6C, +0x86, 0xF5, 0x84, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0xE9, 0xF0, 0x74, 0xA3, 0x0B, 0x6D, 0x2F, 0x40, +0x70, 0x33, 0x0A, 0xD3, 0x0A, 0x94, 0xFF, 0x6B, +0x6C, 0xE9, 0x6C, 0xEC, 0x0A, 0xD4, 0x01, 0x6C, +0x13, 0xE4, 0xB8, 0xEC, 0x12, 0xEC, 0x91, 0xE2, +0x6C, 0xEC, 0x09, 0xD4, 0x00, 0x6A, 0x01, 0x4C, +0x0B, 0xD4, 0x08, 0xD2, 0x3C, 0x10, 0x08, 0x94, +0x0B, 0x6B, 0x0A, 0x95, 0x78, 0xEC, 0x9D, 0x67, +0x12, 0xEB, 0x4C, 0xEB, 0x0F, 0x6A, 0x2C, 0xEA, +0xAD, 0xEA, 0x08, 0x95, 0x52, 0xC4, 0x4F, 0x40, +0xAE, 0xEA, 0x07, 0x22, 0x10, 0x92, 0x00, 0xF0, +0x1E, 0x04, 0x6D, 0xE2, 0x00, 0xF0, 0x13, 0x02, +0x0F, 0x10, 0x10, 0x94, 0x09, 0x95, 0x00, 0xF0, +0x13, 0x02, 0x6D, 0xE4, 0xB1, 0xE2, 0x04, 0x10, +0xA0, 0xA3, 0x01, 0x4B, 0xA0, 0xC2, 0x01, 0x4A, +0x8A, 0xEA, 0xFA, 0x61, 0x0B, 0x92, 0x07, 0x10, +0xA0, 0xA3, 0x01, 0x4B, 0xA0, 0xC2, 0x01, 0x4A, +0x8A, 0xEA, 0xFA, 0x61, 0x0C, 0x6A, 0x9D, 0x67, +0x00, 0x6B, 0x4F, 0xCC, 0x70, 0xC4, 0x05, 0x95, +0x04, 0x94, 0x06, 0x96, 0x07, 0x97, 0xFF, 0x49, +0x00, 0x18, 0x15, 0x11, 0x08, 0x95, 0xFF, 0x6A, +0x4C, 0xE9, 0x01, 0x4D, 0x08, 0xD5, 0x08, 0x93, +0xFF, 0x6A, 0x4C, 0xEB, 0x03, 0xEB, 0xBF, 0x61, +0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x60, 0xF3, 0x40, 0x9A, 0xE9, 0xF0, +0x74, 0x9B, 0x07, 0xD5, 0x08, 0xD6, 0x6C, 0xEA, +0x00, 0xF1, 0x00, 0x72, 0x09, 0xD7, 0x06, 0xD4, +0x0C, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x06, 0x95, +0x0B, 0xF3, 0x10, 0x48, 0x90, 0x67, 0x07, 0x06, +0x00, 0x18, 0x29, 0x11, 0x90, 0x67, 0x00, 0x18, +0xDF, 0x11, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x60, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x88, 0xF7, 0x7C, 0xC2, 0xA1, 0xA4, +0x03, 0x73, 0x88, 0xF7, 0xBD, 0xC2, 0x1F, 0x61, +0x62, 0xA4, 0x88, 0xF7, 0x79, 0xC2, 0x63, 0xA4, +0x88, 0xF7, 0x7A, 0xC2, 0x64, 0xA4, 0x04, 0x6C, +0x88, 0xF7, 0x7B, 0xC2, 0x43, 0xF3, 0x7C, 0x9A, +0x8C, 0xEB, 0x30, 0x23, 0x63, 0xF3, 0x60, 0x9A, +0x05, 0x5B, 0x2C, 0x61, 0x88, 0xF7, 0xB9, 0xA2, +0x88, 0xF7, 0xDA, 0xA2, 0x88, 0xF7, 0xFB, 0xA2, +0x30, 0xF0, 0x20, 0x6C, 0x20, 0xF6, 0x04, 0x4C, +0x00, 0x18, 0x21, 0x12, 0x1F, 0x10, 0x02, 0x73, +0x1D, 0x61, 0x62, 0xA4, 0x88, 0xF7, 0x79, 0xC2, +0x63, 0xA4, 0x04, 0x6C, 0x88, 0xF7, 0x7A, 0xC2, +0x01, 0x6B, 0x6B, 0xEB, 0x88, 0xF7, 0x7B, 0xC2, +0x43, 0xF3, 0x7C, 0x9A, 0x8C, 0xEB, 0x0E, 0x23, +0x63, 0xF3, 0x60, 0x9A, 0x05, 0x5B, 0x0A, 0x61, +0x88, 0xF7, 0xB9, 0xA2, 0x88, 0xF7, 0xDA, 0xA2, +0x30, 0xF0, 0x20, 0x6C, 0x40, 0xF6, 0x14, 0x4C, +0x00, 0x18, 0x21, 0x12, 0x30, 0xF0, 0x20, 0x6A, +0x05, 0x97, 0x62, 0xF3, 0x10, 0x4A, 0x01, 0x6B, +0x88, 0xF7, 0x7F, 0xC2, 0x00, 0x6B, 0x88, 0xF7, +0x7E, 0xC2, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x00, 0xA4, 0x2A, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x78, 0xE8, 0xE6, 0xF1, 0x08, 0x4A, 0xA2, 0xA4, +0x08, 0x6E, 0xAC, 0xEE, 0xBE, 0x35, 0xBC, 0x35, +0x12, 0xEB, 0x6D, 0xE2, 0xF1, 0xA3, 0x7F, 0x6A, +0xEC, 0xEA, 0xAD, 0xEA, 0x51, 0xC3, 0xE2, 0xA4, +0x40, 0x6D, 0xAC, 0xEF, 0x80, 0x4D, 0xFF, 0x4D, +0x4C, 0xED, 0xED, 0xED, 0xB1, 0xC3, 0xE1, 0xA4, +0x1F, 0x6A, 0xEC, 0xEA, 0x44, 0xC3, 0x22, 0xA4, +0x04, 0x6A, 0x03, 0x6F, 0x4B, 0xEA, 0xEC, 0xE9, +0xAC, 0xEA, 0x2D, 0xEA, 0x51, 0xC3, 0x08, 0x2E, +0xA2, 0xA4, 0xAC, 0xEF, 0x0D, 0x6D, 0xAB, 0xED, +0xE8, 0x37, 0x4C, 0xED, 0xED, 0xED, 0xB1, 0xC3, +0xA1, 0xA4, 0xD2, 0xA3, 0x05, 0x6A, 0xBE, 0x35, +0x4B, 0xEA, 0xA8, 0x35, 0xCC, 0xEA, 0xAD, 0xEA, +0x52, 0xC3, 0x41, 0xA4, 0x30, 0xF0, 0x20, 0x6D, +0x62, 0xF3, 0x10, 0x4D, 0x60, 0x6E, 0x66, 0xF3, +0xFB, 0xA5, 0xCC, 0xEA, 0x56, 0x36, 0x04, 0x6A, +0x4B, 0xEA, 0xEC, 0xEA, 0xCD, 0xEA, 0x66, 0xF3, +0x5B, 0xC5, 0xA2, 0xA4, 0xD1, 0xA3, 0x30, 0x6A, +0x4C, 0xED, 0x9F, 0x4A, 0xCC, 0xEA, 0xAD, 0xEA, +0x51, 0xC3, 0x30, 0xF0, 0x20, 0x6E, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF3, 0x44, 0x9A, 0x60, 0xF3, +0xC8, 0x9E, 0x0C, 0x35, 0x49, 0xE5, 0x03, 0x4C, +0xD5, 0xE5, 0xC0, 0xA4, 0x01, 0x4C, 0xC0, 0xC2, +0x01, 0x4A, 0xAA, 0xEA, 0xFA, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x62, 0xF3, 0x10, 0x4C, 0x43, 0xF3, +0xBC, 0x9C, 0x01, 0x6A, 0x4C, 0xED, 0x1F, 0x25, +0x63, 0xF3, 0x80, 0x9C, 0x05, 0x5C, 0x1B, 0x61, +0xD1, 0xA3, 0x84, 0xA3, 0xA6, 0x67, 0x04, 0xD4, +0x03, 0x6C, 0x8C, 0xED, 0x05, 0xD5, 0xCA, 0x35, +0x8C, 0xED, 0x06, 0xD5, 0x72, 0xA3, 0xDA, 0x37, +0xB0, 0x67, 0x6A, 0x33, 0x4C, 0xEB, 0x07, 0xD3, +0xD2, 0x33, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0x60, 0xF6, 0x18, 0x4C, 0xDE, 0x36, 0x4C, 0xEF, +0x08, 0xD3, 0x00, 0x18, 0x21, 0x12, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x11, 0x23, +0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, 0x0D, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF3, 0x44, 0x9A, +0x0C, 0x30, 0x30, 0xF0, 0x20, 0x6C, 0x41, 0xE0, +0xA0, 0x98, 0xA0, 0xF6, 0x1C, 0x4C, 0x00, 0x18, +0x21, 0x12, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xF6, 0x63, 0x13, 0x62, +0x12, 0xD1, 0x11, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0x6A, 0x8C, 0xEA, 0xA0, 0xF0, 0x94, 0x9B, +0xA0, 0xF0, 0x14, 0x4B, 0x01, 0x72, 0x04, 0xD4, +0x81, 0x9B, 0x68, 0xA3, 0x05, 0xD4, 0x9D, 0x67, +0x78, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF0, +0x88, 0x9B, 0xA0, 0xF0, 0x08, 0x4B, 0x07, 0xD4, +0x81, 0x9B, 0x68, 0xA3, 0x08, 0xD4, 0x9D, 0x67, +0x20, 0xF0, 0x64, 0xC4, 0x20, 0x61, 0x00, 0x68, +0x5D, 0x67, 0x0D, 0xE2, 0x5C, 0xA3, 0x0B, 0x5A, +0x01, 0x61, 0x0A, 0x6A, 0xFF, 0x6B, 0x6C, 0xEA, +0x02, 0x4A, 0x7D, 0x67, 0x5B, 0xCB, 0x0E, 0x6A, +0x20, 0xF0, 0x48, 0xC3, 0x01, 0x6A, 0x20, 0xF0, +0x4A, 0xC3, 0x09, 0xE3, 0x50, 0xA2, 0x0B, 0x95, +0x0C, 0x96, 0x20, 0xF0, 0x4B, 0xC3, 0x0A, 0x94, +0x0D, 0x97, 0x01, 0x48, 0x00, 0x18, 0x15, 0x11, +0x09, 0x70, 0xE2, 0x61, 0x71, 0x10, 0x08, 0x72, +0x37, 0x61, 0x20, 0xF0, 0x05, 0x04, 0x07, 0x00, +0x04, 0x01, 0x0E, 0xD4, 0x40, 0xA0, 0x0B, 0x5A, +0x01, 0x61, 0x0A, 0x6A, 0xFF, 0x6B, 0x4C, 0xEB, +0x9D, 0x67, 0x42, 0x43, 0x5B, 0xCC, 0x0E, 0x6A, +0x20, 0xF0, 0x48, 0xC4, 0x08, 0x6A, 0x20, 0xF0, +0x4A, 0xC4, 0x40, 0xA1, 0x20, 0xF0, 0x4B, 0xC4, +0x00, 0x6A, 0x0E, 0x10, 0x9D, 0x67, 0x55, 0xE4, +0xC0, 0xA1, 0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, +0x10, 0x4C, 0x91, 0xE2, 0xD1, 0xE4, 0x66, 0xF3, +0x9C, 0xA4, 0x01, 0x4A, 0x20, 0xF0, 0x8C, 0xC5, +0xFF, 0x6C, 0x4C, 0xEC, 0x63, 0xEC, 0xEE, 0x61, +0x0A, 0x94, 0x0B, 0x95, 0x0C, 0x96, 0x0D, 0x97, +0x01, 0x48, 0x01, 0x49, 0x00, 0x18, 0x15, 0x11, +0x0E, 0x92, 0x4A, 0xE8, 0xCF, 0x61, 0x38, 0x10, +0x09, 0x72, 0x36, 0x61, 0x20, 0xF0, 0x05, 0x03, +0x07, 0x00, 0x04, 0x01, 0x0F, 0xD3, 0x40, 0xA0, +0x0B, 0x5A, 0x01, 0x61, 0x0A, 0x6A, 0xFF, 0x6B, +0x4C, 0xEB, 0x9D, 0x67, 0x42, 0x43, 0x5B, 0xCC, +0x0E, 0x6A, 0x20, 0xF0, 0x48, 0xC4, 0x09, 0x6A, +0x20, 0xF0, 0x4A, 0xC4, 0x40, 0xA1, 0x20, 0xF0, +0x4B, 0xC4, 0x00, 0x6A, 0x0E, 0x10, 0x9D, 0x67, +0x55, 0xE4, 0xC0, 0xA1, 0x30, 0xF0, 0x20, 0x6C, +0x62, 0xF3, 0x10, 0x4C, 0x91, 0xE2, 0xD1, 0xE4, +0xC6, 0xF3, 0x90, 0xA4, 0x01, 0x4A, 0x20, 0xF0, +0x8C, 0xC5, 0xFF, 0x6C, 0x4C, 0xEC, 0x63, 0xEC, +0xEE, 0x61, 0x0A, 0x94, 0x0B, 0x95, 0x0C, 0x96, +0x0D, 0x97, 0x01, 0x48, 0x01, 0x49, 0x00, 0x18, +0x15, 0x11, 0x0F, 0x92, 0x4A, 0xE8, 0xCF, 0x61, +0x13, 0x97, 0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x44, 0x67, 0x65, 0xA2, +0x02, 0x6D, 0x81, 0xA4, 0xAC, 0xEB, 0x03, 0x23, +0x00, 0x18, 0xB7, 0x12, 0x3D, 0x10, 0x01, 0x74, +0x22, 0xA2, 0x04, 0xA2, 0x43, 0xA2, 0x07, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, 0x08, 0x4C, +0x00, 0x18, 0xDF, 0x11, 0x31, 0x10, 0x10, 0x30, +0x08, 0x74, 0x4D, 0xE8, 0x0E, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0xC0, 0xF6, 0x14, 0x4C, 0x00, 0x18, +0xDF, 0x11, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x45, 0xE1, 0x66, 0xF3, 0x1C, 0xC1, +0x1F, 0x10, 0x09, 0x74, 0x0E, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0xE0, 0xF6, 0x14, 0x4C, 0x00, 0x18, +0xDF, 0x11, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x45, 0xE1, 0xC6, 0xF3, 0x10, 0xC1, +0x0F, 0x10, 0x0A, 0x74, 0x0D, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x00, 0xF7, 0x04, 0x4C, 0xF9, 0x6D, +0x28, 0xF3, 0x01, 0x6E, 0x00, 0x18, 0x21, 0x12, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x2A, 0x6B, 0x78, 0xEC, +0x30, 0xF0, 0x20, 0x6E, 0xE6, 0xF1, 0x08, 0x4E, +0xAC, 0xEA, 0x05, 0x6D, 0x12, 0xEB, 0x6D, 0xE6, +0xDD, 0x67, 0xAF, 0xCE, 0x0F, 0x6D, 0xB0, 0xC6, +0x92, 0xC6, 0x53, 0xC6, 0x20, 0xF0, 0x44, 0xA3, +0x07, 0x97, 0x04, 0x94, 0x54, 0xC6, 0x20, 0xF0, +0x45, 0xA3, 0x55, 0xC6, 0x20, 0xF0, 0x46, 0xA3, +0x56, 0xC6, 0x05, 0x95, 0x06, 0x96, 0x00, 0x18, +0x15, 0x11, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0x14, 0x92, 0x15, 0x93, 0x16, 0x90, 0x0A, 0xD2, +0xFF, 0x6A, 0x1A, 0x65, 0xAC, 0xEA, 0x08, 0xD2, +0x58, 0x67, 0xCC, 0xEA, 0x17, 0x91, 0x1A, 0x65, +0x0A, 0x92, 0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEF, +0xAC, 0xEA, 0xAC, 0xEB, 0xAC, 0xE8, 0xAC, 0xE9, +0x30, 0xF0, 0x20, 0x6D, 0x62, 0xF3, 0x10, 0x4D, +0x43, 0xF3, 0xDC, 0x9D, 0x0A, 0xD2, 0x8C, 0xEE, +0x36, 0x26, 0x63, 0xF3, 0x80, 0x9D, 0x05, 0x6A, +0x4E, 0xEC, 0x31, 0x2C, 0x30, 0xF0, 0x20, 0x6C, +0x60, 0xF3, 0x80, 0x9C, 0x86, 0xF5, 0xA4, 0x9D, +0x7F, 0x4A, 0x7C, 0x4A, 0xAC, 0xEC, 0x4E, 0xEC, +0x26, 0x2C, 0x9D, 0x67, 0x47, 0x44, 0x19, 0x4A, +0x40, 0xA2, 0xF4, 0xC4, 0xE2, 0x37, 0x52, 0xC4, +0x58, 0x67, 0x53, 0xC4, 0x47, 0x44, 0x21, 0x4A, +0x40, 0xA2, 0xF5, 0xC4, 0x56, 0xC4, 0x0A, 0x94, +0x82, 0x32, 0x9D, 0x67, 0x57, 0xC4, 0x02, 0x6A, +0x4B, 0xEA, 0x78, 0xC4, 0x1A, 0xC4, 0x3C, 0xC4, +0x50, 0xC4, 0x62, 0x33, 0x02, 0x30, 0x22, 0x31, +0x0C, 0x6A, 0x79, 0xC4, 0x1B, 0xC4, 0x3D, 0xC4, +0x4F, 0xCC, 0x05, 0x95, 0x04, 0x94, 0x06, 0x96, +0x07, 0x97, 0x00, 0x18, 0x15, 0x11, 0x0F, 0x97, +0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x40, 0xA4, 0x70, 0x69, 0x30, 0xF0, 0x20, 0x68, +0x06, 0xD2, 0x81, 0xA4, 0x62, 0xF3, 0x10, 0x48, +0x05, 0xD4, 0x05, 0x92, 0x9E, 0x33, 0x07, 0xD3, +0x8C, 0xE9, 0x7D, 0x67, 0x03, 0x6C, 0x8C, 0xEA, +0x87, 0x43, 0x11, 0x4C, 0x60, 0xA4, 0x32, 0x31, +0x04, 0xD2, 0x9D, 0x67, 0x09, 0xE1, 0x63, 0xF6, +0x6C, 0xC2, 0x67, 0x44, 0x09, 0x4B, 0x80, 0xA3, +0x63, 0xF6, 0x8E, 0xC2, 0x30, 0xF0, 0x20, 0x6C, +0x20, 0xF7, 0x10, 0x4C, 0x00, 0x18, 0x21, 0x12, +0x07, 0x92, 0x21, 0x22, 0x63, 0xF6, 0x72, 0xA0, +0x01, 0x6A, 0x44, 0xE9, 0x6D, 0xEA, 0x63, 0xF6, +0x52, 0xC0, 0x43, 0xF3, 0x5C, 0x98, 0x10, 0x6B, +0x6C, 0xEA, 0x0D, 0x22, 0x63, 0xF3, 0x40, 0x98, +0x05, 0x5A, 0x09, 0x61, 0x04, 0x96, 0x06, 0x97, +0x30, 0xF0, 0x20, 0x6C, 0x20, 0xF7, 0x1C, 0x4C, +0xB1, 0x67, 0x00, 0x18, 0x21, 0x12, 0x05, 0x93, +0x0C, 0x6D, 0x91, 0x67, 0x6C, 0xED, 0xAA, 0x35, +0x00, 0x18, 0x07, 0x19, 0x23, 0x10, 0x63, 0xF6, +0x72, 0xA0, 0x01, 0x6A, 0x44, 0xE9, 0x4F, 0xEA, +0x6C, 0xEA, 0x63, 0xF6, 0x52, 0xC0, 0x43, 0xF3, +0x5C, 0x98, 0x10, 0x6B, 0x6C, 0xEA, 0x0D, 0x22, +0x63, 0xF3, 0x40, 0x98, 0x05, 0x5A, 0x09, 0x61, +0x04, 0x96, 0x06, 0x97, 0x30, 0xF0, 0x20, 0x6C, +0x40, 0xF7, 0x10, 0x4C, 0xB1, 0x67, 0x00, 0x18, +0x21, 0x12, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x45, 0xE1, 0x01, 0x6A, 0x4B, 0xEA, +0x63, 0xF6, 0x4C, 0xC1, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x40, 0xA4, 0x2A, 0x69, 0x04, 0x67, 0x38, 0xEA, +0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF1, +0x08, 0x4A, 0x20, 0x6B, 0x12, 0xE9, 0x25, 0xE2, +0x42, 0xA4, 0xBE, 0xA1, 0x5B, 0xC1, 0x83, 0xA4, +0x21, 0x6A, 0x4B, 0xEA, 0x6C, 0xEC, 0xAC, 0xEA, +0x8D, 0xEA, 0x5E, 0xC1, 0xA3, 0xA0, 0x01, 0x6C, +0x8C, 0xED, 0xFD, 0x4C, 0x4C, 0xEC, 0xAD, 0xEC, +0x9E, 0xC1, 0xA3, 0xA0, 0x02, 0x6A, 0x4C, 0xED, +0xFB, 0x4A, 0x8C, 0xEA, 0xAD, 0xEA, 0x5E, 0xC1, +0xA3, 0xA0, 0x40, 0x6C, 0x8C, 0xED, 0x80, 0x4C, +0xFF, 0x4C, 0x4C, 0xEC, 0xAD, 0xEC, 0x9E, 0xC1, +0xA3, 0xA0, 0x7F, 0x6A, 0x8C, 0xEA, 0xBE, 0x35, +0xBC, 0x35, 0xAD, 0xEA, 0x5E, 0xC1, 0x83, 0xA0, +0x6C, 0xEA, 0x08, 0xD4, 0x84, 0xA0, 0x20, 0xF0, +0x87, 0xC1, 0x85, 0xA0, 0x07, 0xD4, 0x86, 0xA0, +0x09, 0xD4, 0x28, 0x22, 0x06, 0x94, 0x00, 0x18, +0x90, 0x23, 0xD1, 0xA1, 0x03, 0x6A, 0x06, 0x94, +0xCA, 0x36, 0xBB, 0xA1, 0x4C, 0xEE, 0xFF, 0x6B, +0x6C, 0xEE, 0x00, 0x18, 0x1B, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x12, 0x23, +0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, 0x0E, 0x61, +0xF1, 0xA1, 0x03, 0x6A, 0x06, 0x95, 0xEA, 0x37, +0xDB, 0xA1, 0x4C, 0xEF, 0x30, 0xF0, 0x20, 0x6C, +0xFF, 0x6B, 0x60, 0xF7, 0x08, 0x4C, 0x6C, 0xEF, +0x00, 0x18, 0x21, 0x12, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x10, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x0C, 0x61, 0xDB, 0xA1, +0xE3, 0xA0, 0x20, 0xF0, 0x47, 0xA1, 0x06, 0x95, +0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF7, 0x08, 0x4C, +0x04, 0xD2, 0x00, 0x18, 0x21, 0x12, 0x08, 0x94, +0x08, 0x6A, 0x8C, 0xEA, 0x1F, 0x22, 0x09, 0x92, +0x03, 0x68, 0x01, 0x6C, 0x4C, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, +0x7C, 0x9A, 0x8C, 0xEB, 0x0D, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x09, 0x61, 0x06, 0x95, +0x07, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF7, +0x00, 0x4C, 0xF0, 0x67, 0x00, 0x18, 0x21, 0x12, +0x06, 0x94, 0x07, 0x95, 0x00, 0x6E, 0xF0, 0x67, +0x00, 0x18, 0x5C, 0x1C, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x03, 0xA4, +0x44, 0xA4, 0xC0, 0xA4, 0x00, 0x30, 0x00, 0x30, +0x00, 0xF6, 0x40, 0x32, 0xA5, 0xA4, 0xE6, 0xA4, +0x0D, 0xEA, 0x01, 0xA4, 0x82, 0xA4, 0x30, 0xF0, +0x20, 0x6B, 0x0D, 0xEA, 0x80, 0x34, 0x62, 0xF3, +0x10, 0x4B, 0x8D, 0xEA, 0x43, 0xF3, 0x5C, 0xDB, +0x86, 0xF5, 0xC5, 0xC3, 0x0A, 0x26, 0x01, 0x6C, +0x4C, 0xEC, 0x07, 0x24, 0x86, 0xF5, 0xA6, 0xC3, +0x86, 0xF5, 0xE7, 0xC3, 0x02, 0x25, 0x00, 0x18, +0x0D, 0x23, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0x67, 0x80, 0xA4, +0x60, 0xF3, 0x68, 0x9B, 0x8C, 0x35, 0x6D, 0xE5, +0xA3, 0xA2, 0xA0, 0xC3, 0x44, 0xA2, 0x01, 0x4B, +0x40, 0xC3, 0x00, 0x18, 0x3C, 0x22, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0xC0, 0x4C, +0x4C, 0xEC, 0x0C, 0x5C, 0x05, 0x67, 0x26, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x60, 0xF0, +0x18, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x85, 0x67, 0x00, 0x18, 0x60, 0x12, 0x1A, 0x10, +0x85, 0x67, 0x00, 0x18, 0xB6, 0x13, 0x16, 0x10, +0x85, 0x67, 0x00, 0x18, 0x21, 0x14, 0x12, 0x10, +0x85, 0x67, 0x00, 0x18, 0x13, 0x13, 0x0E, 0x10, +0x85, 0x67, 0x00, 0x18, 0x33, 0x12, 0x0A, 0x10, +0x85, 0x67, 0x00, 0x18, 0x0C, 0x14, 0x06, 0x10, +0x85, 0x67, 0x00, 0x18, 0x7C, 0x13, 0x90, 0x67, +0x00, 0x18, 0x73, 0x11, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFF, 0x6B, 0x8C, 0xEB, +0x20, 0x5B, 0x00, 0x6A, 0x02, 0x60, 0x01, 0x6A, +0x44, 0xEB, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, +0xE0, 0x4C, 0x8C, 0xEA, 0x20, 0x5A, 0x00, 0x6A, +0x02, 0x60, 0x01, 0x6A, 0x44, 0xEC, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xEC, 0x68, 0x44, 0xC8, 0x4B, +0x4C, 0xEB, 0x20, 0x5B, 0x00, 0x6A, 0x02, 0x60, +0x01, 0x6A, 0x44, 0xEC, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x0C, 0xEC, 0x00, 0x18, 0x45, 0x14, 0x0F, 0x6B, +0x4C, 0xEB, 0x43, 0x67, 0x0C, 0xEA, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x0C, 0xEC, 0x00, 0x18, 0x45, 0x14, 0x10, 0x6B, +0x6B, 0xEB, 0x4C, 0xEB, 0x43, 0x67, 0x0C, 0xEA, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x90, 0x67, 0x00, 0x18, 0x45, 0x14, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF3, 0x90, 0x9B, +0x01, 0x6B, 0x4C, 0xEC, 0x0A, 0x2C, 0x90, 0x67, +0x00, 0x18, 0x49, 0x14, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF3, 0x74, 0x9B, 0x4C, 0xEB, 0x01, 0x23, +0x01, 0x6B, 0x05, 0x97, 0x04, 0x90, 0xFF, 0x6A, +0x6C, 0xEA, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x90, 0x67, 0x00, 0x18, 0x45, 0x14, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF3, 0x98, 0x9B, +0x01, 0x6B, 0x4C, 0xEC, 0x0A, 0x2C, 0x90, 0x67, +0x00, 0x18, 0x49, 0x14, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF3, 0x7C, 0x9B, 0x4C, 0xEB, 0x01, 0x23, +0x01, 0x6B, 0x05, 0x97, 0x04, 0x90, 0xFF, 0x6A, +0x6C, 0xEA, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x90, 0x67, 0x00, 0x18, 0x45, 0x14, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x60, 0x9B, +0x4C, 0xEB, 0x0D, 0x2B, 0x90, 0x67, 0x00, 0x18, +0x49, 0x14, 0x0F, 0x6B, 0x4C, 0xEB, 0x07, 0x2B, +0x90, 0x67, 0x00, 0x18, 0x4E, 0x14, 0xE0, 0xF3, +0x1F, 0x6B, 0x4C, 0xEB, 0x01, 0x23, 0x01, 0x6B, +0x05, 0x97, 0x04, 0x90, 0xFF, 0x6A, 0x6C, 0xEA, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x90, 0x67, +0x00, 0x18, 0x49, 0x14, 0xE1, 0xF7, 0x10, 0x6C, +0x4C, 0xEC, 0x01, 0x6B, 0x0A, 0x2C, 0x90, 0x67, +0x00, 0x18, 0x4E, 0x14, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x64, 0x9B, 0x4C, 0xEB, 0x01, 0x23, +0x01, 0x6B, 0x05, 0x97, 0x04, 0x90, 0xFF, 0x6A, +0x6C, 0xEA, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x90, 0x67, 0x00, 0x18, 0x45, 0x14, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x68, 0x9B, +0x4C, 0xEB, 0x10, 0x2B, 0x90, 0x67, 0x00, 0x18, +0x49, 0x14, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, +0x6C, 0x9B, 0x4C, 0xEB, 0x07, 0x2B, 0x90, 0x67, +0x00, 0x18, 0x4E, 0x14, 0x0C, 0xF0, 0x18, 0x6B, +0x4C, 0xEB, 0x01, 0x23, 0x01, 0x6B, 0x05, 0x97, +0x04, 0x90, 0xFF, 0x6A, 0x6C, 0xEA, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x90, 0x67, +0x00, 0x18, 0x45, 0x14, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x70, 0x9B, 0x4C, 0xEB, 0x12, 0x2B, +0x90, 0x67, 0x00, 0x18, 0x49, 0x14, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF3, 0x74, 0x9B, 0x4C, 0xEB, +0x09, 0x2B, 0x90, 0x67, 0x00, 0x18, 0x4E, 0x14, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x78, 0x9B, +0x4C, 0xEB, 0x01, 0x23, 0x01, 0x6B, 0x05, 0x97, +0x04, 0x90, 0xFF, 0x6A, 0x6C, 0xEA, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x90, 0x67, +0x00, 0x18, 0x49, 0x14, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x9C, 0x9B, 0x01, 0x6B, 0x4C, 0xEC, +0x0A, 0x2C, 0x90, 0x67, 0x00, 0x18, 0x4E, 0x14, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x60, 0x9B, +0x4C, 0xEB, 0x01, 0x23, 0x01, 0x6B, 0x05, 0x97, +0x04, 0x90, 0xFF, 0x6A, 0x6C, 0xEA, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD1, +0x00, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, +0x04, 0x9B, 0x30, 0xF0, 0x20, 0x6F, 0x62, 0xF3, +0x10, 0x4F, 0x60, 0xA0, 0xFF, 0x6A, 0x4C, 0xEC, +0x1B, 0x65, 0x38, 0x67, 0x7F, 0x6B, 0x2C, 0xEB, +0x86, 0xF5, 0x69, 0xC7, 0x60, 0xA0, 0x80, 0x68, +0x0B, 0xE8, 0x4C, 0xEB, 0x0C, 0xEB, 0x86, 0xF5, +0x6A, 0xC7, 0x86, 0xF5, 0x69, 0xA7, 0x4C, 0xED, +0x4C, 0xEE, 0x6E, 0xEC, 0x53, 0x2C, 0x02, 0x5D, +0xF2, 0xF0, 0x60, 0x45, 0x09, 0x61, 0x8E, 0x45, +0x4C, 0xEC, 0x02, 0x5C, 0x44, 0x61, 0x08, 0x5D, +0x49, 0x60, 0x86, 0xF5, 0x4A, 0xA7, 0x3F, 0x22, +0x1F, 0xF7, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x5C, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0x40, 0x9A, +0x4D, 0xE3, 0xC0, 0xC3, 0x33, 0x10, 0x1F, 0x2A, +0x1F, 0xF7, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x07, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x9C, 0x9A, 0x91, 0xE3, +0x40, 0xA4, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x9C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x40, 0x9A, 0x91, 0xE3, 0x4D, 0xE3, +0x40, 0xA3, 0xFF, 0x6B, 0x6C, 0xEA, 0x01, 0x4A, +0x6C, 0xEA, 0x40, 0xC4, 0x13, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF2, 0x40, 0x9A, 0xFF, 0x6C, +0x4D, 0xE3, 0x40, 0xA3, 0x8C, 0xEA, 0x01, 0x4A, +0x8C, 0xEA, 0x40, 0xC3, 0x07, 0x10, 0x1F, 0xF7, +0x00, 0x6A, 0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, +0xCE, 0x61, 0xCE, 0x17, 0x01, 0x91, 0x00, 0x90, +0x01, 0x63, 0x20, 0xE8, 0xFE, 0x63, 0x03, 0xD1, +0x02, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x44, 0x9A, 0xFF, 0x6B, 0x80, 0x6E, 0x80, 0xA2, +0xE0, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0xA8, 0x9A, 0xCB, 0xEE, 0x6C, 0xEC, 0x40, 0xA5, +0x00, 0xA5, 0x6C, 0xEA, 0xB0, 0x67, 0x6C, 0xED, +0x00, 0xD5, 0xA3, 0x67, 0xCC, 0xED, 0xEC, 0xED, +0xA0, 0xF2, 0x17, 0x25, 0xCC, 0xEA, 0x6C, 0xEA, +0x09, 0x22, 0xA0, 0xF4, 0x08, 0x6F, 0xA0, 0xF4, +0x04, 0x6D, 0x20, 0xF5, 0x00, 0x4E, 0x80, 0xF4, +0x1C, 0x6A, 0x08, 0x10, 0x80, 0xF4, 0x18, 0x6F, +0x80, 0xF4, 0x14, 0x6D, 0x80, 0xF4, 0x10, 0x6E, +0x80, 0xF4, 0x0C, 0x6A, 0x7F, 0x69, 0x2A, 0x68, +0x2C, 0xEC, 0x18, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0xE6, 0xF1, 0x08, 0x4B, 0x12, 0xE8, 0x0D, 0xE3, +0x00, 0x90, 0x2C, 0xE8, 0x01, 0x70, 0x80, 0xF1, +0x18, 0x60, 0x07, 0x20, 0x02, 0x70, 0xC0, 0xF0, +0x1A, 0x60, 0x03, 0x70, 0xE0, 0xF1, 0x19, 0x60, +0x8C, 0x12, 0x1F, 0xF7, 0x00, 0x68, 0x4C, 0xE8, +0x05, 0x28, 0x30, 0xF0, 0x20, 0x68, 0xA0, 0xF2, +0x1C, 0x98, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF2, 0x00, 0x98, 0x3B, 0xA3, 0x01, 0xE2, +0x20, 0xC0, 0x01, 0x42, 0x1F, 0xF7, 0x00, 0x69, +0x2C, 0xE8, 0x02, 0xF0, 0x00, 0x70, 0x01, 0x60, +0x09, 0x28, 0x30, 0xF0, 0x20, 0x68, 0xA0, 0xF3, +0x2C, 0x98, 0x25, 0xE2, 0x00, 0xD1, 0x31, 0xA3, +0x19, 0x65, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x68, +0xA0, 0xF3, 0x30, 0x98, 0x25, 0xE2, 0x00, 0xD1, +0x11, 0xA3, 0x18, 0x65, 0x38, 0x67, 0x03, 0x68, +0x2C, 0xE8, 0x00, 0x91, 0x00, 0xC1, 0x02, 0x42, +0x1F, 0xF7, 0x00, 0x69, 0x2C, 0xE8, 0x02, 0xF0, +0x00, 0x70, 0x01, 0x60, 0x05, 0x28, 0x30, 0xF0, +0x20, 0x68, 0xA0, 0xF3, 0x14, 0x98, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x68, 0xA0, 0xF3, 0x18, 0x98, +0x31, 0xA3, 0x01, 0xE2, 0x3E, 0x31, 0x20, 0xC0, +0x03, 0x42, 0x1F, 0xF7, 0x00, 0x69, 0x2C, 0xE8, +0x02, 0xF0, 0x00, 0x70, 0x01, 0x60, 0x05, 0x28, +0x30, 0xF0, 0x20, 0x68, 0xA0, 0xF3, 0x1C, 0x98, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x00, 0x98, 0x09, 0xE2, 0x11, 0xA3, 0x03, 0x69, +0x12, 0x30, 0x2C, 0xE8, 0x00, 0xC2, 0x1F, 0xF7, +0x00, 0x6A, 0xCC, 0xEA, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x5C, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0x40, 0x9A, +0x00, 0xA3, 0x49, 0xE6, 0x00, 0xC2, 0x41, 0x46, +0x1F, 0xF7, 0x00, 0x68, 0x0C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x4C, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x50, 0x9A, +0x01, 0xA3, 0x49, 0xE6, 0x00, 0xC2, 0x42, 0x46, +0x1F, 0xF7, 0x00, 0x68, 0x0C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x14, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x18, 0x9A, +0x52, 0xA3, 0x01, 0x69, 0x01, 0xE6, 0x4A, 0x32, +0x2C, 0xEA, 0x40, 0xC0, 0x43, 0x46, 0x1F, 0xF7, +0x00, 0x68, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, +0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x59, 0xE6, +0x44, 0xA3, 0x40, 0xC6, 0x1F, 0xF7, 0x00, 0x6A, +0xAC, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF2, 0x40, 0x9A, 0x55, 0xE5, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF3, 0x44, 0x9A, +0x8C, 0x33, 0x49, 0xE3, 0x40, 0x9A, 0x40, 0xDD, +0x1F, 0xF7, 0x00, 0x6A, 0xEC, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x5C, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, +0x40, 0x9A, 0x5D, 0xE7, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF3, 0x48, 0x9A, 0x8C, 0x34, 0x51, 0xE4, +0x40, 0x9C, 0x40, 0xDF, 0xB6, 0x11, 0x1F, 0xF7, +0x00, 0x6C, 0x4C, 0xEC, 0x09, 0x2C, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0xF2, 0xFC, 0x9C, 0x91, 0xA3, +0x03, 0x68, 0xFD, 0xE2, 0x8A, 0x34, 0x0A, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF2, 0xE0, 0x9C, +0x91, 0xA3, 0x03, 0x68, 0xFD, 0xE2, 0x8A, 0x34, +0x0C, 0xEC, 0xFF, 0x68, 0x0C, 0xEC, 0x80, 0xC7, +0x81, 0x42, 0x1F, 0xF7, 0x00, 0x6F, 0xEC, 0xEC, +0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF3, 0x8C, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF3, +0x90, 0x9C, 0xE3, 0xA3, 0x91, 0xE2, 0xE0, 0xC4, +0x82, 0x42, 0x1F, 0xF7, 0x00, 0x6F, 0xEC, 0xEC, +0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF3, 0x94, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF3, +0x98, 0x9C, 0xE5, 0xA3, 0x91, 0xE2, 0xE0, 0xC4, +0x83, 0x42, 0x1F, 0xF7, 0x00, 0x6F, 0xEC, 0xEC, +0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF3, 0x9C, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, +0x80, 0x9C, 0x89, 0xE2, 0x86, 0xA3, 0x80, 0xC2, +0x1F, 0xF7, 0x00, 0x6A, 0xCC, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x5C, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, +0x40, 0x9A, 0x59, 0xE6, 0x59, 0xA3, 0x40, 0xC6, +0x1F, 0xF7, 0x00, 0x6A, 0xAC, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x5C, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, +0x40, 0x9A, 0x20, 0xF0, 0x82, 0xA3, 0x49, 0xE5, +0x80, 0xC2, 0x41, 0x45, 0x1F, 0xF7, 0x00, 0x6C, +0x8C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x4C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x50, 0x9A, 0x20, 0xF0, 0x63, 0xA3, +0x49, 0xE5, 0x60, 0xC2, 0x42, 0x45, 0x1F, 0xF7, +0x00, 0x6B, 0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, +0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x54, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x58, 0x9A, 0x30, 0xF0, +0x20, 0x6B, 0x40, 0xF0, 0x78, 0xA3, 0x49, 0xE5, +0x60, 0xC2, 0x43, 0x45, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x40, 0x9A, 0x55, 0xE5, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF0, 0x59, 0xA2, 0x40, 0xC5, +0xFC, 0x10, 0x1F, 0xF7, 0x00, 0x6D, 0x4C, 0xED, +0x10, 0x2D, 0x30, 0xF0, 0x20, 0x6D, 0xA0, 0xF2, +0xDC, 0x9D, 0x30, 0xF0, 0x20, 0x6D, 0x40, 0xF3, +0xBC, 0x9D, 0x94, 0x37, 0xD9, 0xE2, 0xB5, 0xE7, +0xE0, 0xA5, 0xFF, 0x6D, 0xEC, 0xED, 0xA0, 0xC6, +0x0F, 0x10, 0x30, 0xF0, 0x20, 0x6E, 0x40, 0xF3, +0xDC, 0x9E, 0x94, 0x37, 0x30, 0xF0, 0x20, 0x6D, +0xD9, 0xE7, 0xC0, 0xA6, 0xC0, 0xF2, 0xA0, 0x9D, +0xFF, 0x69, 0x2C, 0xEE, 0xB5, 0xE2, 0xC0, 0xC5, +0xA1, 0x42, 0x1F, 0xF7, 0x00, 0x6E, 0xCC, 0xED, +0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x05, 0x2D, +0x30, 0xF0, 0x20, 0x6D, 0xA0, 0xF3, 0xAC, 0x9D, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0xA0, 0xF3, +0xB0, 0x9D, 0x30, 0xF0, 0x20, 0x6E, 0x40, 0xF3, +0xD8, 0x9E, 0x94, 0x34, 0xB5, 0xE2, 0xD1, 0xE4, +0xC0, 0xA4, 0xFF, 0x6C, 0xCC, 0xEC, 0x80, 0xC5, +0x82, 0x42, 0x1F, 0xF7, 0x00, 0x6D, 0xAC, 0xEC, +0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF3, 0x94, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF3, +0x98, 0x9C, 0xB8, 0xA3, 0x91, 0xE2, 0xA0, 0xC4, +0x83, 0x42, 0x1F, 0xF7, 0x00, 0x6D, 0xAC, 0xEC, +0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF3, 0x9C, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, +0x80, 0x9C, 0x68, 0xA3, 0x89, 0xE2, 0x60, 0xC2, +0x94, 0x10, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, +0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, +0x7C, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF2, 0x60, 0x9B, 0x69, 0xE2, 0x61, 0xF5, +0x00, 0x44, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, +0x10, 0x4B, 0x08, 0x30, 0x0D, 0xE3, 0x63, 0x9B, +0x60, 0xDA, 0x1F, 0xF7, 0x00, 0x6A, 0xCC, 0xEA, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x40, 0x9A, 0x14, 0x6B, 0x78, 0xEC, +0x59, 0xE6, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x12, 0xEB, 0x69, 0xE2, 0x86, 0xF7, +0x4C, 0x9A, 0x40, 0xDE, 0x1F, 0xF7, 0x00, 0x6A, +0xAC, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF2, 0x40, 0x9A, 0x14, 0x6B, +0x78, 0xEC, 0x55, 0xE5, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x12, 0xEB, 0x69, 0xE2, +0x86, 0xF7, 0x50, 0x9A, 0x40, 0xDD, 0x1F, 0xF7, +0x00, 0x6A, 0xEC, 0xEA, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x7C, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x49, 0xE4, 0x88, 0xF1, 0x4C, 0xA2, 0x6D, 0xE7, +0x40, 0xC3, 0x41, 0x47, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x6C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x70, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x49, 0xE4, 0x88, 0xF2, +0x4C, 0xA2, 0x6D, 0xE7, 0x40, 0xC3, 0x42, 0x47, +0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x54, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x58, 0x9A, +0x5D, 0xE7, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x51, 0xE4, 0x08, 0xF2, 0x4C, 0xA4, +0x40, 0xC7, 0x03, 0x91, 0x02, 0x90, 0x02, 0x63, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xAA, 0xEC, 0x64, 0x6A, 0x31, 0x60, 0x2F, 0x24, +0x83, 0xED, 0x2D, 0x61, 0x02, 0xF0, 0x00, 0x5D, +0x04, 0x6A, 0x0C, 0x61, 0x04, 0xF0, 0x00, 0x5D, +0x03, 0x6A, 0x08, 0x61, 0x08, 0xF0, 0x00, 0x5D, +0x02, 0x6A, 0x04, 0x61, 0xEF, 0xF7, 0x1E, 0x4A, +0x43, 0xED, 0x58, 0x67, 0xA4, 0xEA, 0x84, 0xEA, +0x00, 0x6B, 0x01, 0x6A, 0xA6, 0x35, 0x83, 0xED, +0x11, 0x60, 0x81, 0xF4, 0x00, 0x6E, 0xC7, 0xEB, +0xC9, 0xE2, 0x01, 0x75, 0xFF, 0xF7, 0x1F, 0x6E, +0xCC, 0xEA, 0xB3, 0xE4, 0x04, 0x61, 0x02, 0x5C, +0x04, 0x60, 0x01, 0x74, 0x06, 0x60, 0x02, 0x2C, +0x04, 0x10, 0x02, 0x6D, 0x01, 0x4B, 0x0C, 0x73, +0xE9, 0x61, 0x5A, 0x32, 0x01, 0x10, 0x00, 0x6A, +0xFF, 0x6B, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x40, 0xA4, 0x60, 0xA5, 0x60, 0xC4, 0x40, 0xC5, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xED, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0x35, 0x22, 0xF2, +0x10, 0x4A, 0x49, 0xE5, 0x40, 0xAA, 0x6C, 0xEC, +0xCC, 0xEB, 0x58, 0xEC, 0xFF, 0xF7, 0x1F, 0x6C, +0x12, 0xEA, 0x8C, 0xEA, 0x05, 0x23, 0x52, 0x35, +0x56, 0x33, 0x6D, 0xE5, 0x49, 0xE3, 0x8C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x63, 0x9D, 0x81, 0x9D, +0xFF, 0xF7, 0x1F, 0x6A, 0xEC, 0xEA, 0x61, 0xE4, +0xC1, 0xE0, 0xE2, 0x9D, 0xC4, 0x9D, 0x20, 0x9D, +0xE4, 0x35, 0xC1, 0xE0, 0xB5, 0xE0, 0x79, 0xE6, +0x55, 0xE5, 0x49, 0xE6, 0x44, 0x32, 0x55, 0xE5, +0x00, 0x6A, 0x0A, 0x25, 0x6B, 0xEB, 0xFF, 0xE3, +0x27, 0xE7, 0x93, 0xE1, 0xB1, 0xE4, 0x83, 0xED, +0x64, 0x6A, 0x02, 0x61, 0x00, 0x18, 0x84, 0x16, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, +0x20, 0x5C, 0x01, 0x6B, 0x03, 0x60, 0xE0, 0x4C, +0x4C, 0xEC, 0x00, 0x6B, 0x68, 0x33, 0x75, 0xE5, +0x01, 0x6B, 0x64, 0xEC, 0x80, 0x9D, 0x00, 0x6A, +0x8C, 0xEB, 0x01, 0x23, 0x01, 0x6A, 0xFF, 0x6B, +0x6C, 0xEA, 0x20, 0xE8, 0xFF, 0x6B, 0x44, 0x67, +0x6C, 0xEA, 0x6C, 0xEE, 0x6C, 0xED, 0x82, 0x67, +0x03, 0x26, 0x88, 0x42, 0xE8, 0x4C, 0x6C, 0xEC, +0x20, 0x5C, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF3, 0x68, 0x9B, 0xAC, 0x35, 0xE0, 0x4C, +0x75, 0xE5, 0xFF, 0x6B, 0xA0, 0x9D, 0x6C, 0xEC, +0x07, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF3, +0x64, 0x9B, 0xAC, 0x35, 0x75, 0xE5, 0xA0, 0x9D, +0x01, 0x6B, 0x64, 0xEC, 0xAC, 0xEB, 0x01, 0x2B, +0xFF, 0x6A, 0x20, 0xE8, 0xFF, 0x6A, 0x8C, 0xEA, +0x2A, 0x6B, 0x78, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE6, 0xF1, 0x08, 0x4B, 0x12, 0xEA, 0x49, 0xE3, +0x93, 0xA2, 0x7F, 0x6B, 0x6C, 0xEC, 0x93, 0xC2, +0x92, 0xA2, 0x8C, 0xEB, 0x72, 0xC2, 0x20, 0xE8, +0xFF, 0x6A, 0xAC, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x7F, 0x68, +0x8C, 0xE8, 0x90, 0x67, 0x00, 0x18, 0x64, 0x14, +0x01, 0x6B, 0x12, 0x2A, 0x90, 0x67, 0x00, 0x18, +0x74, 0x14, 0x02, 0x6B, 0x0D, 0x2A, 0x90, 0x67, +0x00, 0x18, 0x84, 0x14, 0x03, 0x6B, 0x08, 0x2A, +0x90, 0x67, 0x00, 0x18, 0x95, 0x14, 0x4B, 0xEB, +0x4D, 0xEB, 0xC0, 0xF7, 0x62, 0x33, 0x68, 0x33, +0x05, 0x97, 0x04, 0x90, 0x43, 0x67, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0xFF, 0x6B, +0xBD, 0x67, 0x20, 0xF4, 0x0D, 0x6A, 0x6C, 0xEC, +0x40, 0xCD, 0x84, 0x34, 0x20, 0xF4, 0x0F, 0x6A, +0x41, 0xCD, 0x91, 0xE5, 0x80, 0xAC, 0x1F, 0xF7, +0x00, 0x6A, 0x8C, 0xEA, 0x02, 0xF0, 0x00, 0x72, +0x01, 0x60, 0x0A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x5C, 0x9A, 0x51, 0xE4, 0x60, 0xA4, +0x0E, 0x6A, 0x6C, 0xEA, 0x46, 0x32, 0x0A, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0x40, 0x9A, +0x51, 0xE4, 0x80, 0xA4, 0x0E, 0x6A, 0x8C, 0xEA, +0x47, 0x32, 0x6C, 0xEA, 0x01, 0x63, 0x20, 0xE8, +0xFF, 0x63, 0x01, 0xD1, 0x00, 0xD0, 0xFF, 0x68, +0x0C, 0xEC, 0x2A, 0x6A, 0x58, 0xEC, 0x30, 0xF0, +0x20, 0x6A, 0xE6, 0xF1, 0x08, 0x4A, 0xCC, 0xE8, +0x60, 0xA5, 0x12, 0xEC, 0x91, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x58, 0x9A, 0xE0, 0xA4, +0xC1, 0xA4, 0x40, 0xA2, 0x1A, 0x65, 0x38, 0x67, +0x20, 0x6A, 0x2C, 0xEA, 0x25, 0x2A, 0xFF, 0x73, +0x01, 0x6A, 0x23, 0x60, 0x7F, 0x69, 0x43, 0x67, +0x2C, 0xEA, 0x2C, 0xEF, 0x43, 0xEF, 0x05, 0x60, +0x80, 0x6E, 0xCB, 0xEE, 0x6C, 0xEE, 0xED, 0xEE, +0x02, 0x10, 0xC3, 0xEA, 0x01, 0x60, 0xC0, 0xC5, +0x46, 0x72, 0x12, 0x61, 0x02, 0x70, 0x10, 0x61, +0x6F, 0xA4, 0x10, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x10, 0x72, 0x47, 0x6B, +0x01, 0x60, 0x45, 0x6B, 0x80, 0xA5, 0x80, 0x6A, +0x4B, 0xEA, 0x8C, 0xEA, 0x6D, 0xEA, 0x40, 0xC5, +0x00, 0x6A, 0x01, 0x91, 0x00, 0x90, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, +0x2A, 0x6B, 0x78, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0xE6, 0xF1, 0x08, 0x4B, 0x19, 0x6E, 0xCB, 0xEE, +0x4C, 0xED, 0x12, 0xEC, 0x91, 0xE3, 0x72, 0xA4, +0x6C, 0xEE, 0x04, 0x6B, 0xCC, 0xEB, 0x4C, 0xEB, +0xD2, 0xC4, 0x53, 0x23, 0xD0, 0xA4, 0x80, 0x6B, +0x6B, 0xEB, 0xCC, 0xEB, 0x4C, 0xEB, 0x4D, 0x23, +0xEE, 0xA4, 0x07, 0x6E, 0x7F, 0x6B, 0xEC, 0xEE, +0x4C, 0xEE, 0x03, 0x76, 0xAC, 0xEB, 0x1C, 0x61, +0x47, 0x73, 0x06, 0x61, 0xD1, 0xA4, 0x0C, 0x6A, +0xCC, 0xEA, 0x08, 0x72, 0xC5, 0x6A, 0x44, 0x60, +0xC7, 0x75, 0x02, 0x60, 0x48, 0x75, 0x06, 0x61, +0xD1, 0xA4, 0x0C, 0x6A, 0xCC, 0xEA, 0x08, 0x72, +0x47, 0x6A, 0x3A, 0x60, 0xC5, 0x75, 0x33, 0x60, +0x46, 0x75, 0x31, 0x60, 0x48, 0x43, 0xC3, 0x4A, +0xFF, 0x6E, 0xCC, 0xEA, 0x05, 0x5A, 0x13, 0x10, +0x02, 0x76, 0x07, 0x61, 0xBD, 0x75, 0x29, 0x60, +0x3E, 0x75, 0x27, 0x60, 0xC8, 0x43, 0xCA, 0x4E, +0x08, 0x10, 0x01, 0x76, 0x1E, 0x61, 0xB3, 0x75, +0x22, 0x60, 0x34, 0x75, 0x20, 0x60, 0xC8, 0x43, +0xD4, 0x4E, 0x4C, 0xEE, 0x02, 0x5E, 0x15, 0x60, +0xBE, 0x35, 0x03, 0x25, 0x01, 0x4B, 0xFF, 0x6A, +0x4C, 0xEB, 0x80, 0x6D, 0x4E, 0x43, 0xAB, 0xED, +0xAD, 0xEA, 0xFF, 0x6D, 0xFF, 0x4B, 0xAC, 0xEA, +0xB2, 0xA4, 0x65, 0xC4, 0x19, 0x6B, 0x6B, 0xEB, +0xAC, 0xEB, 0x08, 0x6D, 0xAD, 0xEB, 0x72, 0xC4, +0x20, 0xE8, 0xFF, 0x6A, 0x20, 0xE8, 0x45, 0x6A, +0x20, 0xE8, 0x3D, 0x6A, 0x20, 0xE8, 0x33, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x2A, 0x6B, 0x78, 0xEC, +0x30, 0xF0, 0x20, 0x6B, 0xE6, 0xF1, 0x08, 0x4B, +0x19, 0x6E, 0xCB, 0xEE, 0x4C, 0xED, 0x12, 0xEC, +0x91, 0xE3, 0x72, 0xA4, 0x6C, 0xEE, 0x04, 0x6B, +0xCC, 0xEB, 0x4C, 0xEB, 0xD2, 0xC4, 0x56, 0x23, +0xD0, 0xA4, 0x80, 0x6B, 0x6B, 0xEB, 0xCC, 0xEB, +0x4C, 0xEB, 0x50, 0x23, 0x0E, 0xA4, 0x07, 0x6F, +0x7F, 0x6B, 0x0C, 0xEF, 0x4C, 0xEF, 0x80, 0x6E, +0x03, 0x77, 0xAC, 0xEB, 0xAC, 0xEE, 0x14, 0x61, +0x45, 0x73, 0x09, 0x61, 0xF1, 0xA4, 0x0C, 0x6A, +0xEC, 0xEA, 0x08, 0x72, 0x04, 0x61, 0x47, 0x6A, +0x3E, 0x2E, 0xC5, 0x6A, 0x3C, 0x10, 0x48, 0x43, +0xC3, 0x4A, 0xFF, 0x6F, 0xEC, 0xEA, 0x04, 0x5A, +0x35, 0x60, 0x00, 0x6A, 0xC8, 0x75, 0x13, 0x10, +0x02, 0x77, 0x08, 0x61, 0xE8, 0x43, 0xCB, 0x4F, +0x4C, 0xEF, 0x02, 0x5F, 0x2B, 0x60, 0x00, 0x6A, +0xBE, 0x75, 0x09, 0x10, 0x01, 0x77, 0x26, 0x61, +0xE8, 0x43, 0xD5, 0x4F, 0x4C, 0xEF, 0x02, 0x5F, +0x21, 0x60, 0x00, 0x6A, 0xB4, 0x75, 0x01, 0x60, +0x01, 0x6A, 0x15, 0x22, 0x05, 0x26, 0x80, 0x6D, +0x41, 0x43, 0xAB, 0xED, 0xAD, 0xEA, 0x03, 0x10, +0x80, 0x6A, 0x4B, 0xEA, 0x6D, 0xEA, 0xFF, 0x6D, +0x01, 0x4B, 0xAC, 0xEA, 0xB2, 0xA4, 0x65, 0xC4, +0x19, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, 0x08, 0x6D, +0xAD, 0xEB, 0x72, 0xC4, 0x08, 0x10, 0x41, 0x43, +0x80, 0x6B, 0x6B, 0xEB, 0x6D, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x01, 0x10, 0xFF, 0x6A, 0x01, 0x90, +0x01, 0x63, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD1, +0x00, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, 0x05, 0x67, +0x30, 0xF0, 0x20, 0x69, 0x44, 0xF2, 0xA0, 0x42, +0x62, 0xF3, 0x10, 0x49, 0xA4, 0x35, 0x06, 0x93, +0x35, 0xE5, 0xFF, 0xF7, 0x1F, 0x6C, 0x26, 0xAD, +0x8C, 0xEE, 0x8C, 0xEF, 0x8C, 0xEB, 0xD3, 0xE4, +0x22, 0xEC, 0x03, 0x61, 0x39, 0xE6, 0xC6, 0xCD, +0x03, 0x10, 0x01, 0x6C, 0x8B, 0xEC, 0x86, 0xCD, +0x30, 0xF0, 0x20, 0x6D, 0xC4, 0xF1, 0x80, 0x42, +0x62, 0xF3, 0x10, 0x4D, 0x84, 0x34, 0xB1, 0xE4, +0xA6, 0xAC, 0xFF, 0xF7, 0x1F, 0x6E, 0xFB, 0xE6, +0xA2, 0xEE, 0x03, 0x61, 0xBD, 0xE7, 0xE6, 0xCC, +0x03, 0x10, 0x01, 0x6D, 0xAB, 0xED, 0xA6, 0xCC, +0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, 0x10, 0x4C, +0x88, 0xF5, 0xAC, 0x9C, 0x6F, 0xEE, 0xA3, 0xEE, +0xAD, 0xE3, 0x02, 0x60, 0x01, 0x6B, 0x6B, 0xEB, +0x88, 0xF5, 0x6C, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0xC4, 0xF2, 0x60, 0x42, 0x62, 0xF3, 0x10, 0x4C, +0x64, 0x33, 0x07, 0x96, 0x8D, 0xE3, 0x88, 0xAB, +0xFF, 0xF7, 0x1F, 0x6D, 0xD7, 0xE5, 0x83, 0xED, +0x91, 0xE6, 0x02, 0x60, 0x01, 0x6C, 0x8B, 0xEC, +0x88, 0xCB, 0x44, 0xF3, 0x00, 0x4A, 0x30, 0xF0, +0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, 0x44, 0x32, +0x69, 0xE2, 0x68, 0xAA, 0xFF, 0xF7, 0x1F, 0x6C, +0x13, 0xE4, 0x63, 0xEC, 0x03, 0x61, 0x61, 0xE0, +0x08, 0xCA, 0x03, 0x10, 0x01, 0x6B, 0x6B, 0xEB, +0x68, 0xCA, 0x01, 0x91, 0x00, 0x90, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xED, +0x6C, 0xEC, 0x0F, 0x2D, 0x48, 0x44, 0xFC, 0x4A, +0x6C, 0xEA, 0x08, 0x5A, 0x1D, 0x61, 0x48, 0x44, +0xF4, 0x4A, 0x6C, 0xEA, 0x08, 0x5A, 0x16, 0x61, +0x48, 0x44, 0xEC, 0x4A, 0x6C, 0xEA, 0x08, 0x5A, +0x0E, 0x10, 0x48, 0x44, 0xDC, 0x4A, 0x6C, 0xEA, +0x0A, 0x5A, 0x0E, 0x61, 0x48, 0x44, 0xD2, 0x4A, +0x6C, 0xEA, 0x0A, 0x5A, 0x07, 0x61, 0x48, 0x44, +0xC8, 0x4A, 0x6C, 0xEA, 0x0A, 0x5A, 0x03, 0x6A, +0x06, 0x61, 0x04, 0x10, 0x02, 0x6A, 0x03, 0x10, +0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x0B, 0xF3, 0x6D, 0xA3, 0x03, 0x73, +0x22, 0x61, 0x03, 0x72, 0x35, 0x60, 0x02, 0x72, +0x11, 0x61, 0x08, 0x2D, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF2, 0x08, 0x4A, 0x51, 0xE4, 0xFF, 0xF7, +0x4C, 0xA4, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF3, 0x08, 0x4A, 0x51, 0xE4, 0xDF, 0xF7, +0x4A, 0xA4, 0x20, 0xE8, 0x01, 0x72, 0x22, 0x61, +0x05, 0x2D, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, +0x00, 0x4A, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF2, 0x1C, 0x4A, 0x11, 0x10, 0x02, 0x72, +0x13, 0x60, 0x01, 0x72, 0x13, 0x61, 0x08, 0x2D, +0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF2, 0x18, 0x4A, +0x51, 0xE4, 0xFF, 0xF7, 0x54, 0xA4, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x10, 0x4A, +0x51, 0xE4, 0xDF, 0xF7, 0x54, 0xA4, 0x20, 0xE8, +0x44, 0x67, 0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x6A, 0xA2, +0x28, 0x5B, 0x0F, 0x61, 0x00, 0x6B, 0x62, 0xF3, +0x6A, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x58, 0x9A, 0x40, 0xA2, 0x00, 0xF6, 0x40, 0x32, +0x00, 0xF6, 0x43, 0x32, 0x00, 0x52, 0x23, 0x60, +0x04, 0x10, 0x01, 0x4B, 0x62, 0xF3, 0x6A, 0xC2, +0x1E, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xE6, 0xF1, +0x15, 0x48, 0x00, 0x69, 0x91, 0x67, 0x00, 0x18, +0x8A, 0x10, 0x60, 0xA0, 0xEC, 0xA0, 0x30, 0xF0, +0x20, 0x6C, 0x04, 0xD3, 0xFF, 0xF7, 0x7F, 0xA0, +0xB1, 0x67, 0xC2, 0x67, 0xA0, 0xF7, 0x1C, 0x4C, +0x01, 0x49, 0x05, 0xD3, 0x00, 0x18, 0x21, 0x12, +0x00, 0x6A, 0x03, 0x71, 0xFF, 0xF7, 0x5F, 0xC0, +0x40, 0xC0, 0x2A, 0x48, 0xE7, 0x61, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x2A, 0x68, 0x18, 0xEC, +0x4C, 0xEF, 0x30, 0xF0, 0x20, 0x6B, 0x0C, 0xD6, +0x0B, 0xD5, 0x05, 0xD7, 0xE6, 0xF1, 0x08, 0x4B, +0x20, 0xA5, 0x12, 0xE8, 0x01, 0xE3, 0x60, 0xA6, +0x04, 0xD3, 0xB1, 0xA0, 0x03, 0x6B, 0x04, 0x96, +0xAC, 0xEB, 0x83, 0x67, 0x4C, 0xEC, 0xC2, 0xEC, +0x03, 0x60, 0x0C, 0x92, 0x60, 0xC2, 0xB0, 0x10, +0xA0, 0xF0, 0x0E, 0x24, 0x2F, 0x59, 0xA0, 0xF0, +0x0B, 0x60, 0x30, 0x6B, 0xAC, 0xEB, 0x4C, 0xEB, +0xA0, 0xF0, 0x06, 0x23, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0D, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x09, 0x61, 0x05, 0x95, +0x04, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF7, +0x18, 0x4C, 0xF1, 0x67, 0x00, 0x18, 0x21, 0x12, +0x05, 0x93, 0x01, 0x73, 0x03, 0x60, 0x05, 0x6B, +0x01, 0x6A, 0x47, 0x10, 0x04, 0x6B, 0x00, 0x6A, +0x44, 0x10, 0x05, 0x94, 0x01, 0x74, 0x02, 0x61, +0x01, 0x4A, 0x01, 0x10, 0xFF, 0x4A, 0xFF, 0x6B, +0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x34, +0x40, 0xF0, 0x04, 0x4B, 0x6D, 0xE4, 0xC0, 0xAB, +0xFF, 0x6C, 0x03, 0x6D, 0x66, 0x67, 0x8C, 0xEB, +0x04, 0xD3, 0xC2, 0x33, 0x8C, 0xEB, 0x91, 0xA0, +0x00, 0x69, 0xE4, 0x67, 0xAC, 0xEF, 0x62, 0xEF, +0x08, 0x61, 0x0D, 0x6F, 0x6C, 0xED, 0xEB, 0xEF, +0xA8, 0x35, 0x8C, 0xEF, 0xAD, 0xEF, 0xF1, 0xC0, +0x01, 0x69, 0x30, 0xF0, 0x20, 0x6C, 0x40, 0xF0, +0x04, 0x4C, 0x48, 0x32, 0x49, 0xE4, 0xE1, 0xAA, +0xB1, 0xA0, 0x03, 0x6C, 0xE2, 0x32, 0xAC, 0xEC, +0x42, 0xEC, 0x36, 0x61, 0xE5, 0xC0, 0x20, 0xF0, +0x48, 0xC0, 0x45, 0xA0, 0xFF, 0x72, 0x30, 0x60, +0x92, 0xA0, 0x19, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, +0x08, 0x6C, 0x8D, 0xEA, 0x52, 0xC0, 0x28, 0x10, +0x01, 0x4A, 0xFF, 0x6C, 0x8C, 0xEA, 0x63, 0xEA, +0x4A, 0x60, 0x30, 0xF0, 0x20, 0x6C, 0x48, 0x35, +0x40, 0xF0, 0x04, 0x4C, 0x91, 0xE5, 0xA0, 0xAC, +0xFF, 0x6C, 0xC5, 0x67, 0x8C, 0xEE, 0x2E, 0xEE, +0x05, 0x2E, 0xA2, 0x35, 0x8C, 0xED, 0x04, 0x94, +0x8E, 0xED, 0xAB, 0x25, 0x30, 0xF0, 0x20, 0x6C, +0x48, 0x35, 0x40, 0xF0, 0x04, 0x4C, 0xB1, 0xE4, +0xA1, 0xAC, 0xFF, 0x6C, 0xC5, 0x67, 0x8C, 0xEE, +0x2E, 0xEE, 0xDE, 0x2E, 0x04, 0x96, 0xA2, 0x35, +0x8C, 0xED, 0xCE, 0xED, 0xD9, 0x2D, 0x99, 0x17, +0x00, 0x68, 0x09, 0x21, 0x5D, 0x67, 0x87, 0x42, +0x09, 0x4C, 0x0B, 0x92, 0x80, 0xA4, 0x01, 0x68, +0x80, 0xC2, 0x0C, 0x92, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x0D, 0x23, +0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, 0x09, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF7, 0x14, 0x4C, +0xB0, 0x67, 0x00, 0x18, 0x21, 0x12, 0x01, 0x10, +0x00, 0x68, 0x50, 0x67, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x68, +0xF0, 0x67, 0xD0, 0x67, 0xE0, 0x17, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x65, 0x67, 0x01, 0x74, 0x4C, 0xEB, 0x4C, 0xEE, +0xC0, 0xF0, 0x08, 0x61, 0xC0, 0xF0, 0x06, 0x2E, +0x8C, 0x43, 0x4C, 0xEC, 0x08, 0x5C, 0x1B, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x9C, 0x9A, 0x01, 0x6D, 0xAC, 0xEC, +0xA0, 0xF0, 0x18, 0x24, 0x63, 0xF3, 0x40, 0x9A, +0x05, 0x5A, 0xA0, 0xF0, 0x13, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x01, 0xF5, 0x00, 0x4A, 0x4D, 0xE3, +0x30, 0xF0, 0x20, 0x6C, 0x01, 0xF0, 0x0C, 0x4C, +0xFF, 0xF7, 0xBC, 0xA3, 0xA5, 0x10, 0x04, 0x5B, +0x1A, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x43, 0xF3, 0x9C, 0x9A, 0x01, 0x6D, +0xAC, 0xEC, 0x80, 0xF0, 0x1B, 0x24, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x80, 0xF0, 0x16, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF5, 0x08, 0x4A, +0x4D, 0xE3, 0x30, 0xF0, 0x20, 0x6C, 0x01, 0xF0, +0x18, 0x4C, 0xA0, 0xA3, 0x89, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x62, 0xF3, 0x10, 0x4C, 0xA3, 0xF6, +0xD3, 0xA4, 0x30, 0x6D, 0xCC, 0xED, 0x4C, 0xED, +0x10, 0x75, 0x3D, 0x61, 0xA8, 0x43, 0xDC, 0x4D, +0xC5, 0x67, 0x4C, 0xEE, 0x0A, 0x5E, 0x0E, 0x60, +0x43, 0xF3, 0x5C, 0x9C, 0x01, 0x6B, 0x6C, 0xEA, +0x75, 0x22, 0x63, 0xF3, 0x40, 0x9C, 0x05, 0x5A, +0x71, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF0, +0x04, 0x4C, 0x6A, 0x10, 0xA8, 0x43, 0xD2, 0x4D, +0xC5, 0x67, 0x4C, 0xEE, 0x0A, 0x5E, 0x0E, 0x60, +0x43, 0xF3, 0x5C, 0x9C, 0x01, 0x6B, 0x6C, 0xEA, +0x61, 0x22, 0x63, 0xF3, 0x40, 0x9C, 0x05, 0x5A, +0x5D, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF0, +0x10, 0x4C, 0x56, 0x10, 0xA8, 0x43, 0xC8, 0x4D, +0x4C, 0xED, 0x0A, 0x5D, 0x53, 0x60, 0x43, 0xF3, +0x5C, 0x9C, 0x01, 0x6D, 0xAC, 0xEA, 0x4E, 0x22, +0x63, 0xF3, 0x40, 0x9C, 0x05, 0x5A, 0x4A, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0xA8, 0x43, 0x21, 0xF0, +0x1C, 0x4C, 0xC8, 0x4D, 0x41, 0x10, 0x42, 0x2D, +0xA8, 0x43, 0xFC, 0x4D, 0x4C, 0xED, 0x0A, 0x5D, +0x10, 0x60, 0x43, 0xF3, 0x5C, 0x9C, 0x01, 0x6D, +0xAC, 0xEA, 0x38, 0x22, 0x63, 0xF3, 0x40, 0x9C, +0x05, 0x5A, 0x34, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0xA8, 0x43, 0x41, 0xF0, 0x08, 0x4C, 0xDC, 0x4D, +0x2B, 0x10, 0xA8, 0x43, 0xF2, 0x4D, 0x4C, 0xED, +0x0A, 0x5D, 0x10, 0x60, 0x43, 0xF3, 0x5C, 0x9C, +0x01, 0x6D, 0xAC, 0xEA, 0x23, 0x22, 0x63, 0xF3, +0x40, 0x9C, 0x05, 0x5A, 0x1F, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0xA8, 0x43, 0x41, 0xF0, 0x14, 0x4C, +0xF2, 0x4D, 0x16, 0x10, 0xA8, 0x43, 0xE8, 0x4D, +0x4C, 0xED, 0x04, 0x5D, 0x13, 0x60, 0x43, 0xF3, +0x5C, 0x9C, 0x01, 0x6C, 0x8C, 0xEA, 0x0E, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF6, 0x50, 0x9A, +0x05, 0x5A, 0x08, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0xA8, 0x43, 0x61, 0xF0, 0x00, 0x4C, 0xE8, 0x4D, +0x00, 0x18, 0x21, 0x12, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6B, 0x44, 0x67, 0x6C, 0xEA, 0xAC, 0xEB, +0x01, 0x73, 0x0B, 0x60, 0x03, 0x23, 0x02, 0x73, +0x0F, 0x60, 0x16, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF3, 0x10, 0x4B, 0x6D, 0xE2, 0x01, 0x6C, +0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, +0x10, 0x4B, 0x6D, 0xE2, 0x03, 0x6C, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, +0x6D, 0xE2, 0x07, 0x6C, 0x63, 0xF6, 0x90, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, +0x43, 0xF3, 0x9C, 0x9B, 0x10, 0x6D, 0xAC, 0xEC, +0x0E, 0x24, 0x63, 0xF3, 0x80, 0x9B, 0x05, 0x5C, +0x0A, 0x61, 0x6D, 0xE2, 0x63, 0xF6, 0xD0, 0xA3, +0x30, 0xF0, 0x20, 0x6C, 0x61, 0xF0, 0x0C, 0x4C, +0xA2, 0x67, 0x00, 0x18, 0x21, 0x12, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0xFF, 0x6E, 0x44, 0x67, 0x20, 0xF4, 0x0D, 0x6B, +0x9D, 0x67, 0x68, 0xCC, 0xCC, 0xEA, 0x20, 0xF4, +0x0F, 0x6B, 0x69, 0xCC, 0x44, 0x33, 0x6D, 0xE4, +0x68, 0xAB, 0x1F, 0xF7, 0x00, 0x6C, 0xAC, 0xEE, +0x6C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, +0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF2, +0x9C, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0xC0, 0xF2, 0x80, 0x9C, 0x91, 0xE3, 0xA0, 0xA4, +0xF1, 0x6C, 0xAC, 0xEC, 0xC4, 0x35, 0x8D, 0xED, +0x00, 0xF6, 0xA0, 0x34, 0x00, 0xF6, 0x83, 0x34, +0xFF, 0x6D, 0xAC, 0xEC, 0x1F, 0xF7, 0x00, 0x6D, +0x6C, 0xED, 0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, +0x05, 0x2D, 0x30, 0xF0, 0x20, 0x6D, 0xA0, 0xF2, +0xBC, 0x9D, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6D, +0xC0, 0xF2, 0xA0, 0x9D, 0xAD, 0xE3, 0x80, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, +0x43, 0xF3, 0x9C, 0x9B, 0x10, 0x6D, 0xAC, 0xEC, +0x0B, 0x24, 0x63, 0xF3, 0x60, 0x9B, 0x05, 0x5B, +0x07, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x81, 0xF0, +0x04, 0x4C, 0xA2, 0x67, 0x00, 0x18, 0x21, 0x12, +0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x8C, 0xE9, +0x62, 0xF3, 0x10, 0x48, 0x09, 0xE1, 0x63, 0xF6, +0xB0, 0xA2, 0x91, 0x67, 0x04, 0xD2, 0x00, 0x18, +0x25, 0x19, 0x43, 0xF3, 0x5C, 0x98, 0x10, 0x6B, +0x6C, 0xEA, 0x0E, 0x22, 0x63, 0xF3, 0x40, 0x98, +0x05, 0x5A, 0x0A, 0x61, 0x04, 0x92, 0x30, 0xF0, +0x20, 0x6C, 0x81, 0xF0, 0x1C, 0x4C, 0x63, 0xF6, +0xD0, 0xA2, 0xB1, 0x67, 0x00, 0x18, 0x21, 0x12, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, +0x0E, 0xD1, 0x0D, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0x6A, 0xC0, 0xF3, 0x7C, 0x9B, 0x4C, 0xEC, +0x08, 0xD4, 0x00, 0xA3, 0x10, 0x6B, 0x30, 0xF0, +0x20, 0x69, 0x6C, 0xE8, 0x13, 0x30, 0x4C, 0xE8, +0x62, 0xF3, 0x10, 0x49, 0x35, 0xE0, 0x63, 0xF6, +0x4C, 0xA5, 0x06, 0xD5, 0x82, 0x67, 0x07, 0xD2, +0x00, 0x18, 0x8A, 0x10, 0x82, 0x67, 0x09, 0xD2, +0x00, 0x18, 0xEA, 0x16, 0x06, 0x93, 0x0A, 0xD2, +0x43, 0xF3, 0x5C, 0x99, 0x63, 0xF6, 0x6E, 0xA3, +0x10, 0x6D, 0xAC, 0xEA, 0x06, 0xD3, 0x10, 0x22, +0x63, 0xF3, 0x40, 0x99, 0x05, 0x5A, 0x0C, 0x61, +0x63, 0xF6, 0x54, 0xA1, 0x07, 0x95, 0x08, 0x96, +0x09, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0xA1, 0xF0, +0x14, 0x4C, 0x04, 0xD2, 0x00, 0x18, 0x21, 0x12, +0x08, 0x92, 0x12, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x63, 0xF6, 0xB3, 0xA2, +0x01, 0x6C, 0x64, 0x67, 0x64, 0xE8, 0xAD, 0xEB, +0x63, 0xF6, 0x73, 0xC2, 0x06, 0x93, 0x0A, 0x95, +0x01, 0x4B, 0xAE, 0xEB, 0x27, 0x2B, 0x0D, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x63, 0xF6, 0x93, 0xA2, 0x01, 0x6B, 0x64, 0xE8, +0x6F, 0xEB, 0x8C, 0xEB, 0x63, 0xF6, 0x73, 0xC2, +0x19, 0x10, 0x63, 0xF6, 0x74, 0xA2, 0x67, 0xE8, +0x8C, 0xEB, 0x14, 0x23, 0x43, 0xF3, 0x7C, 0x9A, +0x10, 0x6C, 0x8C, 0xEB, 0x0B, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x07, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0xC1, 0xF0, 0x14, 0x4C, 0xB0, 0x67, +0x00, 0x18, 0x21, 0x12, 0x90, 0x67, 0x00, 0x18, +0x50, 0x19, 0x18, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, +0x10, 0x6C, 0x8C, 0xEB, 0x0B, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x07, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0xE1, 0xF0, 0x00, 0x4C, 0xB0, 0x67, +0x00, 0x18, 0x21, 0x12, 0x90, 0x67, 0x00, 0x6D, +0x00, 0x18, 0x25, 0x19, 0x0F, 0x97, 0x0E, 0x91, +0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x69, +0x06, 0xD2, 0xC6, 0xF1, 0x1C, 0x49, 0x00, 0x68, +0x40, 0xA1, 0x06, 0x93, 0x6E, 0xEA, 0x80, 0xF0, +0x1D, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x07, 0xD2, 0x63, 0xF6, 0x52, 0xA2, +0x01, 0x6B, 0x47, 0xE8, 0x6C, 0xEA, 0x80, 0xF0, +0x11, 0x22, 0x06, 0x94, 0x00, 0x18, 0x8A, 0x10, +0x62, 0xA1, 0x82, 0x67, 0x09, 0xD2, 0x08, 0xD3, +0x00, 0x18, 0xEA, 0x16, 0x07, 0x93, 0x0A, 0xD2, +0x43, 0xF3, 0x5C, 0x9B, 0x10, 0x6B, 0x6C, 0xEA, +0x10, 0x22, 0x07, 0x93, 0x63, 0xF3, 0x40, 0x9B, +0x05, 0x5A, 0x0B, 0x61, 0x08, 0x92, 0x06, 0x95, +0x09, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0xE1, 0xF0, +0x0C, 0x4C, 0xD0, 0x67, 0x04, 0xD2, 0x00, 0x18, +0x21, 0x12, 0x08, 0x92, 0x0A, 0x93, 0x01, 0x4A, +0x62, 0xEA, 0x21, 0x60, 0x90, 0x67, 0x00, 0x6D, +0x00, 0x18, 0x25, 0x19, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x63, 0xF6, 0x94, 0xA2, +0x01, 0x6B, 0x64, 0xE8, 0x6F, 0xEB, 0x8C, 0xEB, +0x63, 0xF6, 0x74, 0xC2, 0x43, 0xF3, 0x7C, 0x9A, +0x10, 0x6C, 0x8C, 0xEB, 0x57, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x53, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x01, 0xF1, 0x14, 0x4C, 0xB0, 0x67, +0x00, 0x18, 0x21, 0x12, 0x4B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x63, 0xF6, +0x94, 0xA2, 0x01, 0x6B, 0x64, 0xE8, 0x8D, 0xEB, +0x63, 0xF6, 0x74, 0xC2, 0x43, 0xF3, 0x7C, 0x9A, +0x10, 0x6C, 0x8C, 0xEB, 0x0B, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x07, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x21, 0xF1, 0x00, 0x4C, 0xB0, 0x67, +0x00, 0x18, 0x21, 0x12, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x63, 0xF6, 0x73, 0xA2, +0x01, 0x6C, 0x67, 0xE8, 0x8C, 0xEB, 0x13, 0x23, +0x43, 0xF3, 0x7C, 0x9A, 0x10, 0x6C, 0x8C, 0xEB, +0x0A, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF1, +0x0C, 0x4C, 0x00, 0x18, 0x21, 0x12, 0x90, 0x67, +0x00, 0x18, 0x50, 0x19, 0x13, 0x10, 0x43, 0xF3, +0x7C, 0x9A, 0x10, 0x6C, 0x8C, 0xEB, 0x0A, 0x23, +0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF1, 0x18, 0x4C, +0x00, 0x18, 0x21, 0x12, 0x90, 0x67, 0x00, 0x6D, +0x00, 0x18, 0x25, 0x19, 0x01, 0x48, 0x02, 0x70, +0x01, 0x49, 0x5F, 0xF7, 0x19, 0x61, 0x0F, 0x97, +0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0xFF, 0x6A, 0x4C, 0xEE, 0x2A, 0x68, 0x18, 0xEE, +0x30, 0xF0, 0x20, 0x6B, 0xE6, 0xF1, 0x08, 0x4B, +0x4C, 0xEC, 0x4C, 0xEF, 0x4C, 0xED, 0x07, 0xD6, +0x08, 0xD7, 0x12, 0xE8, 0x01, 0xE3, 0x7F, 0x6B, +0x6C, 0xEC, 0x1F, 0x2D, 0x0C, 0x5C, 0x07, 0x60, +0x30, 0xF0, 0x20, 0x69, 0x21, 0xF6, 0x10, 0x49, +0x85, 0xE1, 0x01, 0x6A, 0x37, 0x10, 0x08, 0x93, +0xF4, 0x4C, 0x4C, 0xEC, 0x08, 0x2B, 0x03, 0x69, +0x38, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0xA1, 0xF7, +0x00, 0x4A, 0x12, 0xEC, 0x29, 0x10, 0xE0, 0x4C, +0x4C, 0xEC, 0x03, 0x69, 0x38, 0xEC, 0x30, 0xF0, +0x20, 0x6A, 0x41, 0xF7, 0x04, 0x4A, 0x12, 0xEC, +0x1F, 0x10, 0x0C, 0x5C, 0x08, 0x60, 0x30, 0xF0, +0x20, 0x69, 0x21, 0xF6, 0x1C, 0x49, 0x01, 0x6B, +0x85, 0xE1, 0x06, 0xD3, 0x18, 0x10, 0x08, 0x95, +0xF4, 0x4C, 0x4C, 0xEC, 0x08, 0x2D, 0x03, 0x69, +0x38, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF0, +0x04, 0x4A, 0x12, 0xEC, 0x09, 0x10, 0xE0, 0x4C, +0x4C, 0xEC, 0x03, 0x69, 0x38, 0xEC, 0x30, 0xF0, +0x20, 0x6A, 0xE1, 0xF7, 0x08, 0x4A, 0x12, 0xEC, +0x85, 0xE2, 0x00, 0x6A, 0x06, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x0D, 0x23, +0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, 0x09, 0x61, +0xA0, 0xA1, 0xC1, 0xA1, 0xE2, 0xA1, 0x30, 0xF0, +0x20, 0x6C, 0x41, 0xF1, 0x04, 0x4C, 0x00, 0x18, +0x21, 0x12, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x0C, 0x23, 0x63, 0xF3, 0x40, 0x9A, +0x05, 0x5A, 0x08, 0x61, 0x06, 0x95, 0x30, 0xF0, +0x20, 0x6C, 0x41, 0xF1, 0x18, 0x4C, 0x03, 0x6E, +0x00, 0x18, 0x21, 0x12, 0x07, 0x94, 0xC0, 0xA1, +0x04, 0x6D, 0x00, 0x18, 0xDB, 0x14, 0x07, 0x94, +0xC1, 0xA1, 0x05, 0x6D, 0x00, 0x18, 0xDB, 0x14, +0x07, 0x94, 0xC2, 0xA1, 0x06, 0x6D, 0x00, 0x18, +0xDB, 0x14, 0x06, 0x93, 0x0D, 0x2B, 0x01, 0x6A, +0x4B, 0xEA, 0x9D, 0x67, 0x00, 0x6D, 0x0A, 0xD1, +0x50, 0xC4, 0x51, 0xC4, 0x52, 0xC4, 0x06, 0xD5, +0x25, 0x67, 0x09, 0xD5, 0x0B, 0xD0, 0x0B, 0x10, +0x80, 0xA1, 0x07, 0x95, 0x08, 0x96, 0x00, 0x18, +0xCD, 0x16, 0x92, 0xA0, 0x19, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x72, 0xC0, 0x9F, 0x10, 0x0A, 0x92, +0x00, 0xA2, 0x2C, 0x70, 0x04, 0x61, 0x08, 0x93, +0x2C, 0x68, 0x01, 0x2B, 0x0C, 0x68, 0x07, 0x95, +0x08, 0x96, 0x90, 0x67, 0x01, 0x49, 0x00, 0x18, +0xCD, 0x16, 0xFF, 0x72, 0xFF, 0x6B, 0x6C, 0xE9, +0x07, 0x61, 0x46, 0x70, 0x11, 0x60, 0x09, 0x94, +0x91, 0xE1, 0x6C, 0xEC, 0x09, 0xD4, 0x07, 0x10, +0x06, 0x96, 0xBD, 0x67, 0xD1, 0xE5, 0x01, 0x4E, +0x6C, 0xEE, 0x50, 0xC4, 0x06, 0xD6, 0x0A, 0x92, +0x03, 0x71, 0x01, 0x4A, 0x0A, 0xD2, 0xDB, 0x61, +0x06, 0x92, 0x0B, 0x90, 0x03, 0x6B, 0xFF, 0x4A, +0x6C, 0xEA, 0xB2, 0xA0, 0x4C, 0x34, 0x19, 0x6A, +0x4B, 0xEA, 0xAC, 0xEA, 0x8D, 0xEA, 0x52, 0xC0, +0x09, 0x94, 0xFF, 0x6A, 0x06, 0x5C, 0x6A, 0x60, +0x34, 0xA0, 0x02, 0x6A, 0x32, 0x31, 0x6C, 0xE9, +0x7E, 0xA0, 0x6C, 0xEA, 0x2C, 0x22, 0x6F, 0x41, +0x01, 0x6A, 0x63, 0xEA, 0x28, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, 0x43, 0xF3, +0x9C, 0x9B, 0x4C, 0xEC, 0x0A, 0x24, 0x63, 0xF3, +0x40, 0x9B, 0x05, 0x5A, 0x06, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x61, 0xF1, 0x10, 0x4C, 0x00, 0x18, +0x21, 0x12, 0xBD, 0x67, 0x90, 0xA5, 0x00, 0x18, +0x64, 0x14, 0x11, 0x2A, 0xDD, 0x67, 0x91, 0xA6, +0x00, 0x18, 0x64, 0x14, 0x00, 0xF0, 0x11, 0x04, +0x07, 0x2A, 0x5D, 0x67, 0x92, 0xA2, 0x00, 0x18, +0x64, 0x14, 0x05, 0x22, 0x00, 0xF0, 0x12, 0x04, +0x04, 0x05, 0x00, 0x18, 0xA0, 0x16, 0x7E, 0xA0, +0x40, 0x6A, 0x6C, 0xEA, 0x19, 0x22, 0x08, 0x93, +0x05, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, +0x0C, 0x4A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF3, 0x04, 0x4A, 0xFF, 0x49, 0x01, 0x6B, +0x23, 0xEB, 0x0A, 0x61, 0xBD, 0x67, 0x91, 0xA5, +0x40, 0x9A, 0x64, 0xEC, 0x4C, 0xEB, 0x04, 0x23, +0x01, 0x6A, 0x4B, 0xEA, 0x90, 0xC5, 0x51, 0xC5, +0xDD, 0x67, 0x71, 0xA6, 0xFF, 0x73, 0x05, 0x60, +0x52, 0xA6, 0xFF, 0x72, 0x02, 0x60, 0x66, 0xC0, +0x0E, 0x10, 0x7D, 0x67, 0x51, 0xA3, 0xFF, 0x72, +0x03, 0x60, 0x72, 0xA3, 0xFF, 0x73, 0x07, 0x60, +0x9D, 0x67, 0x51, 0xA4, 0xFF, 0x72, 0x04, 0x61, +0x52, 0xA4, 0xFF, 0x72, 0x01, 0x60, 0x45, 0xC0, +0xBD, 0x67, 0x50, 0xA5, 0x0F, 0x97, 0x0E, 0x91, +0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x69, 0x00, 0x6B, 0x8C, 0xE9, 0x43, 0x67, +0x91, 0x67, 0x87, 0xEB, 0x01, 0x6D, 0xAC, 0xEC, +0x03, 0x24, 0x01, 0x4A, 0xFF, 0x6C, 0x8C, 0xEA, +0x01, 0x4B, 0x04, 0x73, 0xF5, 0x61, 0x01, 0x72, +0x2C, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, +0xA8, 0x9A, 0x21, 0xF1, 0x1C, 0x68, 0x90, 0x67, +0xD1, 0x67, 0x00, 0x18, 0x05, 0x0D, 0x01, 0x71, +0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x90, 0x67, +0xC0, 0xF2, 0xA4, 0x9A, 0x07, 0x10, 0x02, 0x71, +0x07, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, +0xAC, 0x9A, 0x90, 0x67, 0x00, 0x6E, 0xD2, 0x11, +0x04, 0x71, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x90, 0x67, 0xE0, 0xF3, 0xB0, 0x9A, 0xF6, 0x17, +0x08, 0x71, 0xC0, 0xF1, 0x09, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x90, 0x67, 0xE0, 0xF3, 0xB4, 0x9A, +0xED, 0x17, 0x02, 0x72, 0xA0, 0xF0, 0x11, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0xA8, 0x9A, +0x21, 0xF1, 0x1C, 0x68, 0x90, 0x67, 0xD1, 0x67, +0x00, 0x18, 0x05, 0x0D, 0x41, 0xF1, 0x00, 0x6C, +0xF0, 0x6D, 0xD1, 0x67, 0x00, 0x18, 0x05, 0x0D, +0x03, 0x71, 0x1C, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0xA4, 0x9A, 0x90, 0x67, 0x00, 0x6E, +0x00, 0x18, 0x05, 0x0D, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0xAC, 0x9A, 0x90, 0x67, 0x01, 0x6E, +0x00, 0x18, 0x05, 0x0D, 0x41, 0xF1, 0x00, 0x6C, +0x00, 0xF3, 0x00, 0x6D, 0x00, 0x6E, 0x00, 0x18, +0x05, 0x0D, 0x41, 0xF1, 0x00, 0x6C, 0x01, 0xF4, +0x00, 0x6D, 0x81, 0x10, 0x05, 0x71, 0x15, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0xA4, 0x9A, +0x90, 0x67, 0x00, 0x6E, 0x00, 0x18, 0x05, 0x0D, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0xB0, 0x9A, +0x90, 0x67, 0x01, 0x6E, 0x00, 0x18, 0x05, 0x0D, +0x41, 0xF1, 0x00, 0x6C, 0x00, 0xF3, 0x00, 0x6D, +0x2D, 0x10, 0x09, 0x71, 0x15, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF2, 0xA4, 0x9A, 0x90, 0x67, +0x00, 0x6E, 0x00, 0x18, 0x05, 0x0D, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF3, 0xB4, 0x9A, 0x90, 0x67, +0x01, 0x6E, 0x00, 0x18, 0x05, 0x0D, 0x41, 0xF1, +0x00, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x4C, 0x10, +0x06, 0x71, 0x1C, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0xAC, 0x9A, 0x90, 0x67, 0x00, 0x6E, +0x00, 0x18, 0x05, 0x0D, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0xB0, 0x9A, 0x90, 0x67, 0x01, 0x6E, +0x00, 0x18, 0x05, 0x0D, 0x41, 0xF1, 0x00, 0x6C, +0x01, 0xF4, 0x00, 0x6D, 0x00, 0x6E, 0x00, 0x18, +0x05, 0x0D, 0x41, 0xF1, 0x00, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x35, 0x10, 0x0A, 0x71, 0x15, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0xAC, 0x9A, +0x90, 0x67, 0x00, 0x6E, 0x00, 0x18, 0x05, 0x0D, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0xB4, 0x9A, +0x90, 0x67, 0x01, 0x6E, 0x00, 0x18, 0x05, 0x0D, +0x41, 0xF1, 0x00, 0x6C, 0x01, 0xF4, 0x00, 0x6D, +0x17, 0x10, 0x0C, 0x71, 0x20, 0xF1, 0x0C, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0xB0, 0x9A, +0x90, 0x67, 0x00, 0x6E, 0x00, 0x18, 0x05, 0x0D, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0xB4, 0x9A, +0x90, 0x67, 0x01, 0x6E, 0x00, 0x18, 0x05, 0x0D, +0x41, 0xF1, 0x00, 0x6C, 0x06, 0xF0, 0x00, 0x6D, +0x00, 0x6E, 0x00, 0x18, 0x05, 0x0D, 0x41, 0xF1, +0x00, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x01, 0x6E, +0x0D, 0x11, 0x03, 0x72, 0x00, 0xF1, 0x0C, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0xA8, 0x9A, +0x21, 0xF1, 0x1C, 0x6C, 0xD1, 0x67, 0x41, 0xF1, +0x00, 0x68, 0x00, 0x18, 0x05, 0x0D, 0x90, 0x67, +0xF0, 0x6D, 0xD1, 0x67, 0x00, 0x18, 0x05, 0x0D, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0xB8, 0x9A, +0x90, 0x67, 0xD1, 0x67, 0x00, 0x18, 0x05, 0x0D, +0x07, 0x71, 0x2C, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x24, 0x9A, 0x21, 0xF1, 0x1C, 0x6C, +0x00, 0x6E, 0xB1, 0x67, 0x00, 0x18, 0x05, 0x0D, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0xAC, 0x9A, +0x21, 0xF1, 0x1C, 0x6C, 0x01, 0x6E, 0x00, 0x18, +0x05, 0x0D, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, +0xB0, 0x9A, 0x21, 0xF1, 0x1C, 0x6C, 0x02, 0x6E, +0x00, 0x18, 0x05, 0x0D, 0x90, 0x67, 0x00, 0xF3, +0x00, 0x6D, 0x00, 0x6E, 0x00, 0x18, 0x05, 0x0D, +0x90, 0x67, 0x01, 0xF4, 0x00, 0x6D, 0x01, 0x6E, +0x00, 0x18, 0x05, 0x0D, 0x90, 0x67, 0x06, 0xF0, +0x00, 0x6D, 0x2D, 0x10, 0x0B, 0x71, 0x3C, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0xA4, 0x9A, +0x21, 0xF1, 0x1C, 0x6C, 0x00, 0x6E, 0x00, 0x18, +0x05, 0x0D, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, +0x2C, 0x9A, 0x21, 0xF1, 0x1C, 0x6C, 0x01, 0x6E, +0xB1, 0x67, 0x00, 0x18, 0x05, 0x0D, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF3, 0xB4, 0x9A, 0x21, 0xF1, +0x1C, 0x6C, 0x02, 0x6E, 0x00, 0x18, 0x05, 0x0D, +0x90, 0x67, 0x00, 0xF3, 0x00, 0x6D, 0x00, 0x6E, +0x00, 0x18, 0x05, 0x0D, 0x90, 0x67, 0x01, 0xF4, +0x00, 0x6D, 0x01, 0x6E, 0x00, 0x18, 0x05, 0x0D, +0x90, 0x67, 0x18, 0xF0, 0x00, 0x6D, 0x02, 0x6E, +0x00, 0x18, 0x05, 0x0D, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0xBC, 0x9A, 0x90, 0x67, 0x00, 0x6E, +0x00, 0x18, 0x05, 0x0D, 0x30, 0xF0, 0x20, 0x6A, +0x90, 0x67, 0x00, 0xF4, 0xA0, 0x9A, 0x80, 0x10, +0x0D, 0x71, 0x41, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x24, 0x9A, 0x21, 0xF1, 0x1C, 0x6C, +0x00, 0x6E, 0xB1, 0x67, 0x00, 0x18, 0x05, 0x0D, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0xB0, 0x9A, +0x21, 0xF1, 0x1C, 0x6C, 0x01, 0x6E, 0x00, 0x18, +0x05, 0x0D, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, +0xB4, 0x9A, 0x21, 0xF1, 0x1C, 0x6C, 0x02, 0x6E, +0x00, 0x18, 0x05, 0x0D, 0x90, 0x67, 0x00, 0xF3, +0x00, 0x6D, 0x00, 0x6E, 0x00, 0x18, 0x05, 0x0D, +0x90, 0x67, 0x06, 0xF0, 0x00, 0x6D, 0x01, 0x6E, +0x00, 0x18, 0x05, 0x0D, 0x90, 0x67, 0x18, 0xF0, +0x00, 0x6D, 0x02, 0x6E, 0x00, 0x18, 0x05, 0x0D, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0xBC, 0x9A, +0x90, 0x67, 0x00, 0x6E, 0x00, 0x18, 0x05, 0x0D, +0x90, 0x67, 0xB1, 0x67, 0x01, 0x6E, 0x00, 0x18, +0x05, 0x0D, 0x30, 0xF0, 0x20, 0x6A, 0x90, 0x67, +0xE0, 0xF3, 0xAC, 0x9A, 0x42, 0x10, 0x0E, 0x71, +0x43, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, +0x2C, 0x9A, 0x21, 0xF1, 0x1C, 0x6C, 0x00, 0x6E, +0xB1, 0x67, 0x00, 0x18, 0x05, 0x0D, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF3, 0xB0, 0x9A, 0x21, 0xF1, +0x1C, 0x6C, 0x01, 0x6E, 0x00, 0x18, 0x05, 0x0D, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0xB4, 0x9A, +0x21, 0xF1, 0x1C, 0x6C, 0x02, 0x6E, 0x00, 0x18, +0x05, 0x0D, 0x90, 0x67, 0x01, 0xF4, 0x00, 0x6D, +0x00, 0x6E, 0x00, 0x18, 0x05, 0x0D, 0x90, 0x67, +0x06, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x00, 0x18, +0x05, 0x0D, 0x90, 0x67, 0x18, 0xF0, 0x00, 0x6D, +0x02, 0x6E, 0x00, 0x18, 0x05, 0x0D, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0xA0, 0x9A, 0x90, 0x67, +0x00, 0x6E, 0x00, 0x18, 0x05, 0x0D, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF2, 0xA4, 0x9A, 0x90, 0x67, +0x01, 0x6E, 0x00, 0x18, 0x05, 0x0D, 0x90, 0x67, +0xB1, 0x67, 0x02, 0x6E, 0x00, 0x18, 0x05, 0x0D, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF6, 0x63, 0x13, 0x62, +0x12, 0xD1, 0x11, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x0B, 0xF3, 0x4E, 0xA2, 0x30, 0xF0, 0x20, 0x6C, +0x61, 0xF1, 0x18, 0x4C, 0xA2, 0x67, 0x0D, 0xD2, +0x00, 0x18, 0x21, 0x12, 0x0D, 0x92, 0x2B, 0x2A, +0x00, 0x68, 0x90, 0x67, 0x00, 0x18, 0x74, 0x05, +0x20, 0x22, 0x2A, 0x6B, 0x78, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0xE6, 0xF1, 0x08, 0x4A, 0xFF, 0x69, +0x12, 0xEB, 0x69, 0xE2, 0x71, 0xA2, 0x80, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x2C, 0xEA, 0x11, 0x2A, +0x90, 0x67, 0x00, 0x18, 0x8A, 0x10, 0x01, 0x70, +0x09, 0x61, 0x7F, 0x6D, 0x4C, 0xED, 0x30, 0xF0, +0x20, 0x6C, 0x81, 0xF1, 0x04, 0x4C, 0x2C, 0xED, +0x00, 0x18, 0x21, 0x12, 0x90, 0x67, 0x00, 0x18, +0x9E, 0x23, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, +0x80, 0x70, 0xD7, 0x61, 0xA8, 0x10, 0x0D, 0x92, +0xFF, 0x6B, 0xFF, 0x4A, 0x6C, 0xEA, 0x03, 0x5A, +0x80, 0xF0, 0x1E, 0x60, 0x00, 0x69, 0x91, 0x67, +0x00, 0x18, 0x74, 0x05, 0x80, 0xF0, 0x12, 0x22, +0x2A, 0x6B, 0x78, 0xE9, 0x30, 0xF0, 0x20, 0x6A, +0xE6, 0xF1, 0x08, 0x4A, 0x12, 0xEB, 0x69, 0xE2, +0x0C, 0xD2, 0x71, 0xA2, 0x80, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x80, 0xF0, +0x01, 0x2A, 0x14, 0x6D, 0xB8, 0xE9, 0x30, 0xF0, +0x20, 0x6A, 0x61, 0xF5, 0x80, 0x41, 0x62, 0xF3, +0x10, 0x4A, 0x88, 0x34, 0x91, 0xE2, 0x49, 0xE1, +0x88, 0xF1, 0x4C, 0xA2, 0x83, 0x9C, 0x06, 0x00, +0x0F, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x6C, 0xEC, +0xE9, 0xF2, 0x1C, 0x4A, 0x0E, 0xD4, 0x14, 0x6E, +0x90, 0x67, 0x12, 0xED, 0xB5, 0xE2, 0x00, 0x18, +0x26, 0x08, 0x0E, 0x96, 0x0F, 0x97, 0x91, 0x67, +0xB0, 0x67, 0x00, 0x18, 0xAF, 0x16, 0x0C, 0x93, +0x0D, 0x94, 0x01, 0x71, 0x81, 0xE3, 0x64, 0x6B, +0x4B, 0xE3, 0x20, 0xF0, 0x43, 0xC0, 0x1C, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x81, 0xF1, 0x10, 0x4C, +0x01, 0x6D, 0x00, 0x18, 0x21, 0x12, 0x09, 0x92, +0x06, 0x95, 0x07, 0x96, 0x04, 0xD2, 0x08, 0x97, +0x0A, 0x92, 0x30, 0xF0, 0x20, 0x6C, 0x81, 0xF1, +0x18, 0x4C, 0x05, 0xD2, 0x00, 0x18, 0x21, 0x12, +0x20, 0xF0, 0xA3, 0xA0, 0x30, 0xF0, 0x20, 0x6C, +0xA1, 0xF1, 0x1C, 0x4C, 0x00, 0x18, 0x21, 0x12, +0x91, 0x67, 0x00, 0x18, 0x9E, 0x23, 0x0D, 0x92, +0x03, 0x72, 0x34, 0x61, 0x0C, 0x93, 0x20, 0xF0, +0x44, 0xA3, 0x20, 0xF0, 0x65, 0xA3, 0x63, 0xEA, +0x06, 0x61, 0x0C, 0x94, 0x00, 0x68, 0x20, 0xF0, +0x66, 0xA4, 0x63, 0xEA, 0x0B, 0x60, 0x0C, 0x92, +0x20, 0xF0, 0x05, 0xA2, 0x20, 0xF0, 0x46, 0xA2, +0x43, 0xE8, 0x18, 0x67, 0x01, 0x58, 0x18, 0x67, +0x02, 0x6A, 0x03, 0xE2, 0x01, 0x71, 0x1A, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x49, 0xE0, 0x88, 0xF7, 0x99, 0xA2, 0x0C, 0xD2, +0x00, 0x18, 0xB2, 0x1A, 0x30, 0xF0, 0x20, 0x6C, +0xC1, 0xF1, 0x04, 0x4C, 0xB0, 0x67, 0x00, 0x18, +0x21, 0x12, 0x0C, 0x92, 0x30, 0xF0, 0x20, 0x6C, +0xC1, 0xF1, 0x10, 0x4C, 0x88, 0xF7, 0xB9, 0xA2, +0x00, 0x18, 0x21, 0x12, 0x01, 0x49, 0xFF, 0x6A, +0x4C, 0xE9, 0x80, 0x71, 0x7F, 0xF7, 0x03, 0x61, +0x0D, 0x93, 0x03, 0x5B, 0x1B, 0x60, 0x0D, 0x94, +0x30, 0xF0, 0x20, 0x68, 0x62, 0xF3, 0x10, 0x48, +0x05, 0xE4, 0x88, 0xF7, 0xB9, 0xA1, 0x30, 0xF0, +0x20, 0x6C, 0xE1, 0xF1, 0x00, 0x4C, 0x00, 0x18, +0x21, 0x12, 0x88, 0xF7, 0x99, 0xA1, 0x00, 0x18, +0xB2, 0x1A, 0x01, 0x6A, 0x88, 0xF7, 0x5F, 0xC0, +0x88, 0xF7, 0x5E, 0xA0, 0x01, 0x4A, 0x88, 0xF7, +0x5E, 0xC0, 0x12, 0x10, 0x0D, 0x90, 0x03, 0x6A, +0x4E, 0xE8, 0x0E, 0x28, 0x30, 0xF0, 0x20, 0x6C, +0xE1, 0xF1, 0x10, 0x4C, 0x00, 0x18, 0x21, 0x12, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x88, 0xF7, 0x1F, 0xC2, 0x88, 0xF7, 0x1E, 0xC2, +0x13, 0x97, 0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x4C, 0xEE, +0x2A, 0x68, 0x18, 0xEE, 0x10, 0x93, 0x27, 0x67, +0x4C, 0xE9, 0x4C, 0xEC, 0x4C, 0xED, 0x4C, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF1, 0x08, 0x4A, +0x12, 0xE8, 0x01, 0xE2, 0x5C, 0xA0, 0x2E, 0xEA, +0x15, 0x22, 0xA4, 0x35, 0x5D, 0x67, 0x8D, 0xED, +0xD3, 0xC2, 0x76, 0xC2, 0x32, 0xC2, 0xB4, 0xC2, +0x59, 0xA0, 0x7D, 0x67, 0x06, 0x96, 0x57, 0xC3, +0x0C, 0x6A, 0x50, 0xC3, 0x06, 0x6A, 0x4F, 0xCB, +0x04, 0x94, 0x05, 0x95, 0x07, 0x97, 0x00, 0x18, +0x15, 0x11, 0x3C, 0xC0, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0x7D, 0x67, 0x4C, 0xEE, 0x4C, 0xEF, +0x20, 0xF0, 0xBC, 0xC3, 0x07, 0xD6, 0x08, 0xD7, +0x24, 0x67, 0x20, 0xF0, 0x9C, 0xA3, 0x30, 0xF0, +0x20, 0x6B, 0x40, 0xF3, 0x78, 0x9B, 0x4C, 0xE9, +0x06, 0xD4, 0x34, 0x34, 0x6D, 0xE4, 0x60, 0xA3, +0x91, 0x67, 0x0F, 0x05, 0x6C, 0xEA, 0xC7, 0x67, +0x09, 0xD2, 0x00, 0x18, 0x10, 0x17, 0xE0, 0xF0, +0x08, 0x2A, 0x2A, 0x68, 0x18, 0xE9, 0x30, 0xF0, +0x20, 0x6A, 0xE6, 0xF1, 0x08, 0x4A, 0x12, 0xE8, +0x01, 0xE2, 0x07, 0x92, 0x3A, 0x2A, 0x72, 0xA0, +0xBF, 0x4A, 0xD1, 0x67, 0x6C, 0xEA, 0x52, 0xC0, +0x7D, 0x67, 0x20, 0xF0, 0x5C, 0xA3, 0x87, 0x43, +0x15, 0x4C, 0x43, 0xC0, 0x80, 0xA4, 0x47, 0x43, +0x15, 0x4A, 0x99, 0xC0, 0x40, 0xA2, 0x6E, 0xA0, +0x5A, 0xC0, 0x10, 0x6A, 0x6D, 0xEA, 0x4E, 0xC0, +0x07, 0x94, 0x7D, 0x67, 0x20, 0xF0, 0xFC, 0xA3, +0x04, 0xD4, 0x00, 0x6C, 0xA4, 0x67, 0x00, 0x18, +0x43, 0x1C, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x75, 0x23, 0x63, 0xF3, 0x40, 0x9A, +0x05, 0x5A, 0x71, 0x61, 0x5D, 0x67, 0x20, 0xF0, +0xDC, 0xA2, 0x08, 0x97, 0x30, 0xF0, 0x20, 0x6C, +0xE1, 0xF1, 0x18, 0x4C, 0xB1, 0x67, 0x00, 0x18, +0x21, 0x12, 0x00, 0x6B, 0x06, 0xD3, 0x43, 0x67, +0x68, 0x10, 0x06, 0x94, 0x7F, 0x6A, 0x40, 0x6B, +0x8C, 0xEA, 0x92, 0xA0, 0x8D, 0xEB, 0x72, 0xC0, +0x9D, 0x67, 0x20, 0xF0, 0x7C, 0xA4, 0x8E, 0xA0, +0x63, 0xC0, 0x11, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x30, 0xF0, 0x20, 0x6C, 0x6E, 0xC0, 0x62, 0xF3, +0x10, 0x4C, 0x30, 0xF0, 0x20, 0x6B, 0x41, 0xF6, +0x08, 0x4B, 0x91, 0xE2, 0x6D, 0xE2, 0x26, 0xF4, +0x84, 0xA4, 0x60, 0xA3, 0xA4, 0x44, 0x62, 0xED, +0x01, 0x60, 0x8F, 0xE3, 0x78, 0xC0, 0x30, 0xF0, +0x20, 0x6B, 0x82, 0xF0, 0x0C, 0x4B, 0x69, 0xE2, +0x9B, 0xA0, 0x40, 0xA2, 0x43, 0xEC, 0x03, 0x60, +0x58, 0xA0, 0x04, 0x4A, 0x58, 0xC0, 0x7D, 0x67, +0x20, 0xF0, 0x5C, 0x83, 0x00, 0x52, 0x03, 0x60, +0x58, 0xA0, 0x05, 0x4A, 0x58, 0xC0, 0x6E, 0xA0, +0x08, 0x6A, 0x6C, 0xEA, 0x0B, 0x22, 0x5D, 0x67, +0x20, 0xF0, 0xDC, 0xA2, 0xF8, 0xA0, 0x30, 0xF0, +0x20, 0x6C, 0x01, 0xF2, 0x0C, 0x4C, 0xB1, 0x67, +0x00, 0x18, 0x21, 0x12, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x17, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x13, 0x61, 0x7D, 0x67, +0x20, 0xF0, 0xDC, 0xA3, 0x58, 0xA0, 0x08, 0x97, +0x30, 0xF0, 0x20, 0x6C, 0x01, 0xF2, 0x1C, 0x4C, +0xB1, 0x67, 0x04, 0xD2, 0x00, 0x18, 0x21, 0x12, +0x01, 0x6C, 0x06, 0xD4, 0x05, 0x10, 0x00, 0x6A, +0x06, 0xD2, 0x03, 0x10, 0x01, 0x6B, 0x06, 0xD3, +0x40, 0x6A, 0x09, 0x94, 0x07, 0x6B, 0x00, 0x6D, +0x8C, 0xEB, 0x08, 0x94, 0x8C, 0x30, 0x01, 0xE3, +0x4D, 0xE8, 0x00, 0xF6, 0x00, 0x30, 0xFF, 0x6A, +0x00, 0xF6, 0x03, 0x30, 0x4C, 0xE8, 0x5D, 0x67, +0x20, 0xF0, 0xDC, 0xA2, 0x91, 0x67, 0x00, 0x18, +0xDB, 0x14, 0x91, 0x67, 0x01, 0x6D, 0xD0, 0x67, +0x00, 0x18, 0xDB, 0x14, 0x91, 0x67, 0x00, 0x18, +0xAE, 0x19, 0x7D, 0x67, 0x20, 0xF0, 0xBC, 0xA3, +0x07, 0x96, 0x91, 0x67, 0x34, 0x31, 0x00, 0x18, +0x9C, 0x18, 0x30, 0xF0, 0x20, 0x6A, 0x9D, 0x67, +0x40, 0xF3, 0x5C, 0x9A, 0x20, 0xF0, 0x7C, 0xA4, +0x49, 0xE1, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF3, 0x58, 0x9A, 0x49, 0xE1, 0x00, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x44, 0x9A, +0x45, 0xE1, 0x47, 0x44, 0x11, 0x4A, 0x40, 0xA2, +0x40, 0xC1, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xF8, 0x63, 0x0F, 0x62, +0x0E, 0xD1, 0x0D, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0x2A, 0x68, 0x18, 0xEC, 0x4C, 0xED, 0x30, 0xF0, +0x20, 0x6A, 0xE6, 0xF1, 0x08, 0x4A, 0x08, 0xD4, +0x01, 0x6C, 0x0A, 0xD5, 0x12, 0xE8, 0x01, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x8C, 0xEB, 0x0A, 0x23, +0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF2, 0x14, 0x4C, +0x00, 0x18, 0x21, 0x12, 0x08, 0x94, 0x00, 0x18, +0x8A, 0x10, 0x7D, 0x67, 0x50, 0xC3, 0x90, 0xA3, +0x03, 0x6A, 0x06, 0xD4, 0xA0, 0xA0, 0x06, 0x91, +0x7F, 0x6C, 0x07, 0xD5, 0x71, 0xA0, 0x8C, 0xE9, +0x72, 0x36, 0x6A, 0x33, 0x4C, 0xEB, 0x4C, 0xEE, +0x5D, 0x67, 0xA7, 0x42, 0x11, 0x4D, 0xA0, 0xA5, +0x71, 0xC2, 0x09, 0xD6, 0xA8, 0xC0, 0xB2, 0xA0, +0x04, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0x6D, 0xEA, +0x01, 0x6B, 0x6B, 0xEB, 0x65, 0xC0, 0x66, 0xC0, +0x20, 0xF0, 0x68, 0xC0, 0x20, 0xF0, 0x69, 0xC0, +0x73, 0xA0, 0x6C, 0xEC, 0x80, 0x6B, 0x6B, 0xEB, +0x6D, 0xEA, 0x67, 0x4B, 0x6C, 0xEA, 0x52, 0xC0, +0x00, 0x6A, 0x55, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x93, 0xC0, 0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x0B, 0x23, +0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, 0x07, 0x61, +0x06, 0x95, 0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF2, +0x1C, 0x4C, 0x00, 0x18, 0x21, 0x12, 0x7E, 0xA0, +0x40, 0x6A, 0x6C, 0xEA, 0x30, 0x2A, 0x08, 0x94, +0x04, 0x05, 0x00, 0xF0, 0x11, 0x06, 0x01, 0x6F, +0x00, 0x18, 0x2E, 0x18, 0xC0, 0xF0, 0x04, 0x2A, +0xB1, 0xA0, 0xDD, 0x67, 0x51, 0xA6, 0x03, 0x6B, +0x85, 0x67, 0x6C, 0xEC, 0x82, 0xEA, 0x24, 0x60, +0x01, 0x4A, 0x0D, 0x6C, 0x51, 0xC6, 0x8B, 0xEC, +0x6C, 0xEA, 0x48, 0x32, 0xAC, 0xEC, 0x4D, 0xEC, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xC6, 0x62, 0xF3, +0x10, 0x4A, 0x91, 0xC0, 0x43, 0xF3, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x11, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x0D, 0x61, 0xB1, 0xA6, +0x30, 0xF0, 0x20, 0x6C, 0x41, 0xF2, 0x04, 0x4C, +0x00, 0x18, 0x21, 0x12, 0x05, 0x10, 0x71, 0xA0, +0x03, 0x6A, 0xBD, 0x67, 0x6C, 0xEA, 0x51, 0xC5, +0x07, 0x96, 0xC3, 0xE9, 0x50, 0x60, 0x5D, 0x67, +0xB0, 0xA2, 0x08, 0x94, 0x00, 0x18, 0x6B, 0x17, +0x7D, 0x67, 0x50, 0xC3, 0xB0, 0xA3, 0xFF, 0x75, +0x06, 0x61, 0x87, 0x41, 0x4C, 0x4C, 0xFF, 0x6A, +0x4C, 0xEC, 0x06, 0xD4, 0x17, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x7C, 0x23, +0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, 0x78, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x41, 0xF2, 0x14, 0x4C, +0x00, 0x18, 0x21, 0x12, 0x71, 0x10, 0x01, 0x49, +0xFF, 0x6A, 0x4C, 0xE9, 0x08, 0x96, 0x09, 0x97, +0x91, 0x67, 0x00, 0x6D, 0x00, 0x18, 0x0A, 0x1A, +0xBD, 0x67, 0x50, 0xC5, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0B, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x07, 0x61, 0xB0, 0xA5, +0x30, 0xF0, 0x20, 0x6C, 0x41, 0xF2, 0x1C, 0x4C, +0x00, 0x18, 0x21, 0x12, 0xDD, 0x67, 0x50, 0xA6, +0xFF, 0x72, 0x4E, 0x61, 0x07, 0x92, 0x43, 0xE9, +0x02, 0x61, 0x50, 0xC6, 0x49, 0x10, 0x06, 0x94, +0x8A, 0xE9, 0xD5, 0x61, 0x45, 0x10, 0x07, 0x95, +0xAE, 0xE9, 0x27, 0x29, 0x72, 0xA0, 0x04, 0x6A, +0x6C, 0xEA, 0x66, 0x22, 0x06, 0x96, 0x80, 0x6A, +0x4B, 0xEA, 0xCC, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x5F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x0C, 0x23, 0x63, 0xF3, 0x40, 0x9A, +0x05, 0x5A, 0x08, 0x61, 0x5D, 0x67, 0xB0, 0xA2, +0x30, 0xF0, 0x20, 0x6C, 0x61, 0xF2, 0x04, 0x4C, +0x00, 0x18, 0x21, 0x12, 0x07, 0x93, 0x80, 0x6A, +0x4B, 0xEA, 0x6D, 0xEA, 0x9D, 0x67, 0x50, 0xC4, +0x1B, 0x10, 0xBD, 0x67, 0xC7, 0x45, 0x15, 0x4E, +0xC0, 0xA6, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0xD0, 0xC5, 0xC8, 0xC0, 0x43, 0xF3, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x10, 0x23, +0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, 0x0C, 0x61, +0xB0, 0xA5, 0x30, 0xF0, 0x20, 0x6C, 0x61, 0xF2, +0x0C, 0x4C, 0x00, 0x18, 0x21, 0x12, 0x04, 0x10, +0x0A, 0x93, 0x01, 0x69, 0x01, 0x73, 0x06, 0x61, +0x72, 0xA0, 0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x52, 0xC0, 0x00, 0x69, 0x9D, 0x67, 0x71, 0xA4, +0x03, 0x6A, 0x91, 0xA0, 0x6C, 0xEA, 0x48, 0x33, +0x0D, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x6D, 0xEA, +0x51, 0xC0, 0x08, 0x94, 0x02, 0x6D, 0x00, 0x6E, +0x00, 0x18, 0xDB, 0x14, 0x6F, 0xA0, 0x0F, 0x6A, +0xDD, 0x67, 0x6C, 0xEA, 0x10, 0x6B, 0x6D, 0xEA, +0x4F, 0xC0, 0x5D, 0x67, 0xB0, 0xA6, 0x08, 0x94, +0xF1, 0xA2, 0xD1, 0x67, 0x00, 0x18, 0x5C, 0x1C, +0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF7, 0x63, 0x11, 0x62, +0x10, 0xD1, 0x0F, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0x2A, 0x68, 0x18, 0xEC, 0x4C, 0xED, 0x4C, 0xEE, +0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF1, 0x08, 0x4A, +0x08, 0xD4, 0x01, 0x6C, 0x07, 0xD5, 0x0D, 0xD6, +0x12, 0xE8, 0x01, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, +0x8C, 0xEB, 0x0A, 0x23, 0x63, 0xF3, 0x40, 0x9A, +0x05, 0x5A, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0x61, 0xF2, 0x14, 0x4C, 0x00, 0x18, 0x21, 0x12, +0x08, 0x94, 0x00, 0x18, 0x8A, 0x10, 0x7D, 0x67, +0x50, 0xC3, 0x81, 0xA0, 0x40, 0xA0, 0x30, 0xA3, +0x0B, 0xD4, 0x91, 0xA0, 0x03, 0x6B, 0x7F, 0x6D, +0x92, 0x36, 0x8A, 0x34, 0x6C, 0xEC, 0x6C, 0xEE, +0x7D, 0x67, 0x91, 0xC3, 0x0C, 0xD6, 0xD2, 0xA0, +0x04, 0x6B, 0x6B, 0xEB, 0xCC, 0xEB, 0x8D, 0xEB, +0x01, 0x6C, 0x8B, 0xEC, 0x85, 0xC0, 0x86, 0xC0, +0x20, 0xF0, 0x88, 0xC0, 0x20, 0xF0, 0x89, 0xC0, +0x93, 0xA0, 0xAC, 0xE9, 0x23, 0xEA, 0x8C, 0xED, +0x80, 0x6C, 0x8B, 0xEC, 0x8D, 0xEB, 0x67, 0x4C, +0x8C, 0xEB, 0x72, 0xC0, 0x00, 0x6B, 0xB3, 0xC0, +0x75, 0xC0, 0x02, 0x60, 0x9D, 0x67, 0x50, 0xC4, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0C, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x08, 0x61, 0xDD, 0x67, 0xB0, 0xA6, 0x30, 0xF0, +0x20, 0x6C, 0x21, 0xF2, 0x1C, 0x4C, 0x00, 0x18, +0x21, 0x12, 0x07, 0x93, 0x00, 0x6A, 0x06, 0xD2, +0xE0, 0xF0, 0x0C, 0x23, 0xDD, 0x67, 0x08, 0x94, +0xB0, 0xA6, 0x00, 0x18, 0x33, 0x17, 0x07, 0x93, +0xFF, 0x72, 0x09, 0xD3, 0x0A, 0x60, 0x9D, 0x67, +0x50, 0xC4, 0x30, 0xA4, 0x7F, 0x6A, 0xA3, 0x67, +0x4C, 0xE9, 0xFF, 0x4D, 0xFF, 0x6A, 0x4C, 0xED, +0x09, 0xD5, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x0C, 0x23, 0x63, 0xF3, 0x40, 0x9A, +0x05, 0x5A, 0x08, 0x61, 0xDD, 0x67, 0xB0, 0xA6, +0x30, 0xF0, 0x20, 0x6C, 0x41, 0xF2, 0x1C, 0x4C, +0x00, 0x18, 0x21, 0x12, 0x09, 0x92, 0xA0, 0xF0, +0x1F, 0x22, 0x7E, 0xA0, 0x40, 0x6A, 0x6C, 0xEA, +0x1F, 0x2A, 0x08, 0x94, 0x04, 0x05, 0x00, 0xF0, +0x11, 0x06, 0x02, 0x6F, 0x00, 0x18, 0x2E, 0x18, +0xA0, 0xF0, 0x12, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x12, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x0E, 0x61, 0x7D, 0x67, +0xB0, 0xA3, 0x30, 0xF0, 0x20, 0x6C, 0x61, 0xF2, +0x04, 0x4C, 0x00, 0x18, 0x21, 0x12, 0x05, 0x10, +0x71, 0xA0, 0x03, 0x6A, 0x9D, 0x67, 0x6C, 0xEA, +0x51, 0xC4, 0x0B, 0x95, 0x00, 0x6E, 0x0A, 0xD6, +0xA3, 0xE9, 0x76, 0x60, 0x5D, 0x67, 0x67, 0x42, +0x25, 0x4B, 0x60, 0xA3, 0x06, 0xD6, 0x70, 0xC2, +0x8D, 0x10, 0x08, 0x96, 0x0C, 0x97, 0x91, 0x67, +0x01, 0x6D, 0x00, 0x18, 0x0A, 0x1A, 0x07, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0C, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x08, 0x61, 0x07, 0x95, 0x09, 0x96, 0x30, 0xF0, +0x20, 0x6C, 0x61, 0xF2, 0x1C, 0x4C, 0x00, 0x18, +0x21, 0x12, 0x07, 0x95, 0x06, 0xD1, 0xFF, 0x75, +0x2E, 0x61, 0xC8, 0x41, 0xB4, 0x4E, 0xFF, 0x6A, +0x4C, 0xEE, 0x07, 0xD6, 0x06, 0x92, 0xFF, 0x4A, +0x06, 0xD2, 0x06, 0x93, 0xFF, 0x6A, 0x4C, 0xEB, +0x06, 0xD3, 0x06, 0x95, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF2, 0x10, 0x4A, 0x24, 0x33, 0xA4, 0x34, +0x4D, 0xE3, 0x49, 0xE4, 0x60, 0xAB, 0x40, 0xAA, +0x63, 0xEA, 0x0F, 0x60, 0x85, 0x67, 0x0C, 0x96, +0x08, 0x95, 0x00, 0x18, 0xCD, 0x16, 0xFF, 0x72, +0x08, 0x60, 0x72, 0xA0, 0x19, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x52, 0xC0, 0x06, 0x96, 0x07, 0xD6, +0x06, 0x10, 0x06, 0x92, 0x07, 0x93, 0x6A, 0xEA, +0xD9, 0x61, 0xFF, 0x6C, 0x07, 0xD4, 0x07, 0x95, +0x0B, 0x96, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF2, +0x10, 0x4A, 0xA4, 0x33, 0xC4, 0x34, 0x4D, 0xE3, +0x49, 0xE4, 0x60, 0xAB, 0x40, 0xAA, 0x43, 0xEB, +0x08, 0x60, 0x5D, 0x67, 0xD0, 0xC2, 0x72, 0xA0, +0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x52, 0xC0, +0x05, 0x10, 0x9D, 0x67, 0xA7, 0x44, 0x15, 0x4D, +0xA0, 0xA5, 0xB0, 0xC4, 0x0A, 0x96, 0xFF, 0x6A, +0x06, 0x91, 0x01, 0x4E, 0x4C, 0xEE, 0x0A, 0xD6, +0x0A, 0x92, 0x09, 0x93, 0x63, 0xEA, 0x8D, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0F, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x0B, 0x61, 0xDD, 0x67, 0xB0, 0xA6, 0x30, 0xF0, +0x20, 0x6C, 0x61, 0xF2, 0x0C, 0x4C, 0x00, 0x18, +0x21, 0x12, 0x01, 0x6A, 0x06, 0xD2, 0x02, 0x10, +0x01, 0x6B, 0x06, 0xD3, 0x0D, 0x94, 0x01, 0x74, +0x04, 0x60, 0x72, 0xA0, 0x18, 0x6A, 0x6C, 0xEA, +0x07, 0x2A, 0x72, 0xA0, 0x19, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x00, 0x6D, 0x52, 0xC0, 0x06, 0xD5, +0xDD, 0x67, 0x50, 0xA6, 0x91, 0xA0, 0x02, 0x6D, +0x48, 0xC0, 0x71, 0xA6, 0x03, 0x6A, 0x00, 0x6E, +0x6C, 0xEA, 0x48, 0x33, 0x0D, 0x6A, 0x4B, 0xEA, +0x8C, 0xEA, 0x6D, 0xEA, 0x51, 0xC0, 0x08, 0x94, +0x00, 0x18, 0xDB, 0x14, 0x6F, 0xA0, 0x0F, 0x6A, +0x6C, 0xEA, 0x20, 0x6B, 0x6D, 0xEA, 0x4F, 0xC0, +0x5D, 0x67, 0xF1, 0xA2, 0x08, 0x94, 0xB0, 0xA2, +0x06, 0x96, 0x00, 0x18, 0x5C, 0x1C, 0x11, 0x97, +0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, +0xF2, 0x63, 0x1B, 0x62, 0x1A, 0xD1, 0x19, 0xD0, +0x00, 0x18, 0x0E, 0x18, 0x00, 0x6A, 0x15, 0xD2, +0x10, 0xD2, 0x10, 0x92, 0x2A, 0x69, 0x10, 0x94, +0x38, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF1, +0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, +0x10, 0x4B, 0x0F, 0xD3, 0x12, 0xE9, 0x25, 0xE2, +0x10, 0x92, 0x61, 0xF5, 0x00, 0x4A, 0x48, 0x32, +0x49, 0xE3, 0x03, 0x9A, 0x00, 0x18, 0x8A, 0x10, +0x0E, 0xD2, 0x80, 0xA1, 0x10, 0x96, 0x0F, 0x97, +0x14, 0xD4, 0x51, 0xA1, 0x08, 0x04, 0x4A, 0x32, +0x13, 0xD2, 0x13, 0x95, 0x03, 0x6A, 0x4C, 0xED, +0xE9, 0xE6, 0x88, 0xF1, 0x4C, 0xA2, 0x13, 0xD5, +0x30, 0xF0, 0x20, 0x6D, 0x12, 0xD2, 0x14, 0x6A, +0x58, 0xEE, 0xE9, 0xF2, 0x1C, 0x4D, 0x14, 0x6E, +0x12, 0xEA, 0x55, 0xE5, 0x00, 0x18, 0x26, 0x08, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x58, 0x9A, +0x60, 0xA2, 0x20, 0x6A, 0x6C, 0xEA, 0x35, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, 0x48, 0x9A, +0x00, 0x6E, 0xA0, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF4, 0x48, 0x9A, 0xE0, 0xA2, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x4C, 0x9A, 0x80, 0xA2, +0xFF, 0x6A, 0x4C, 0xED, 0x4C, 0xEC, 0x4C, 0xEF, +0x00, 0x18, 0x5C, 0x1C, 0x10, 0x94, 0x12, 0x97, +0x08, 0x05, 0xD0, 0x67, 0x00, 0x18, 0xAF, 0x16, +0x0C, 0x94, 0xB0, 0x67, 0x00, 0x18, 0x84, 0x16, +0x0F, 0x93, 0x43, 0xF3, 0x5C, 0x9B, 0x01, 0x6B, +0x6C, 0xEA, 0x40, 0xF5, 0x12, 0x22, 0x0F, 0x94, +0x63, 0xF3, 0x40, 0x9C, 0x05, 0x5A, 0x40, 0xF5, +0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x81, 0xF2, +0x0C, 0x4C, 0x00, 0x18, 0x21, 0x12, 0x40, 0xF5, +0x04, 0x10, 0x10, 0x94, 0x00, 0x18, 0x74, 0x05, +0x40, 0xF5, 0x17, 0x22, 0x40, 0xF5, 0x15, 0x20, +0x71, 0xA1, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xFF, 0x6D, 0xAC, 0xEA, 0x40, 0xF5, 0x0D, 0x2A, +0x0F, 0x96, 0x01, 0x6B, 0x43, 0xF3, 0x5C, 0x9E, +0x6C, 0xEA, 0x0B, 0x22, 0x63, 0xF3, 0x40, 0x9E, +0x05, 0x5A, 0x07, 0x61, 0x10, 0x95, 0x30, 0xF0, +0x20, 0x6C, 0x81, 0xF2, 0x14, 0x4C, 0x00, 0x18, +0x21, 0x12, 0x92, 0xA1, 0x40, 0x6B, 0xFF, 0x6A, +0x8C, 0xEB, 0x05, 0x2B, 0x91, 0xA1, 0x80, 0x4B, +0x8C, 0xEB, 0x4C, 0xEB, 0x15, 0x23, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x00, 0xF5, +0x10, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x00, 0xF5, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0x81, 0xF2, 0x1C, 0x4C, 0x10, 0x95, 0x26, 0x10, +0x09, 0x58, 0x28, 0x61, 0x93, 0xA1, 0x07, 0x6B, +0xA4, 0x67, 0x6C, 0xED, 0xC5, 0x67, 0x4C, 0xEE, +0x21, 0x26, 0x08, 0x6E, 0xFF, 0x4D, 0xCB, 0xEE, +0x6C, 0xED, 0x8C, 0xEE, 0xAD, 0xEE, 0x30, 0xF0, +0x20, 0x6C, 0xD3, 0xC1, 0x62, 0xF3, 0x10, 0x4C, +0x43, 0xF3, 0xBC, 0x9C, 0x01, 0x6F, 0xEC, 0xED, +0xE0, 0xF4, 0x0B, 0x25, 0x63, 0xF3, 0x80, 0x9C, +0x05, 0x5C, 0xE0, 0xF4, 0x06, 0x61, 0xA6, 0x67, +0x6C, 0xED, 0x30, 0xF0, 0x20, 0x6C, 0xA1, 0xF2, +0x08, 0x4C, 0x4C, 0xED, 0x00, 0x18, 0x21, 0x12, +0xC0, 0xF4, 0x1B, 0x10, 0x0E, 0x92, 0x0E, 0x94, +0x7F, 0x6F, 0x80, 0x6B, 0xEC, 0xEA, 0x6C, 0xEC, +0x11, 0xD2, 0x16, 0xD4, 0x73, 0xA1, 0x08, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x53, 0xC1, 0x0A, 0x96, +0x09, 0x95, 0x0B, 0x93, 0x0C, 0x97, 0xA9, 0xE6, +0x69, 0xE2, 0x08, 0x94, 0xFF, 0x65, 0xE9, 0xE2, +0xFF, 0xF7, 0x1F, 0x6F, 0xEC, 0xEA, 0x91, 0xE2, +0x1C, 0x65, 0x04, 0xD2, 0xB1, 0xE3, 0xC4, 0x32, +0x49, 0xE4, 0x64, 0x33, 0x69, 0xE2, 0x7F, 0x67, +0x68, 0x35, 0xA9, 0xE2, 0x10, 0x94, 0x12, 0x96, +0x05, 0xD2, 0x58, 0x67, 0xB0, 0x67, 0x4C, 0xEF, +0x00, 0x18, 0xA3, 0x17, 0x11, 0x93, 0x14, 0x94, +0x63, 0xEC, 0x22, 0x60, 0x16, 0x95, 0x0E, 0xD4, +0x07, 0x25, 0x80, 0x6E, 0xCB, 0xEE, 0xE4, 0x67, +0xCD, 0xEF, 0xFF, 0x6A, 0x4C, 0xEF, 0x0E, 0xD7, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0D, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x09, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0xA1, 0xF2, +0x14, 0x4C, 0x00, 0x18, 0x21, 0x12, 0x14, 0x92, +0x11, 0xD2, 0x02, 0x10, 0x14, 0x93, 0x11, 0xD3, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0D, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x09, 0x61, 0x08, 0x96, 0x0C, 0x97, 0x30, 0xF0, +0x20, 0x6C, 0xA1, 0xF2, 0x1C, 0x4C, 0xB0, 0x67, +0x00, 0x18, 0x21, 0x12, 0x4F, 0x40, 0x07, 0x5A, +0x12, 0x60, 0x76, 0xA1, 0x01, 0x6A, 0x6C, 0xEA, +0x0E, 0x2A, 0x4E, 0xA1, 0x56, 0x33, 0x03, 0x53, +0x04, 0x60, 0x20, 0x4A, 0x4E, 0xC1, 0x60, 0xF4, +0x04, 0x10, 0x1F, 0x6B, 0x4C, 0xEB, 0x60, 0x6A, +0x4D, 0xEB, 0x6E, 0xC1, 0x04, 0x10, 0x6E, 0xA1, +0x1F, 0x6A, 0x6C, 0xEA, 0x4E, 0xC1, 0x6E, 0xA1, +0x20, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6C, +0x8C, 0xEA, 0xA0, 0x72, 0x53, 0x61, 0x10, 0x94, +0x05, 0x6D, 0x00, 0x6E, 0x00, 0x18, 0xDB, 0x14, +0x0C, 0x92, 0x0B, 0x93, 0x12, 0x95, 0x4D, 0xE3, +0xAD, 0xE3, 0x0A, 0x32, 0x63, 0xEA, 0x14, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0xE0, 0xF0, 0x0A, 0x23, 0x63, 0xF3, 0x40, 0x9A, +0x05, 0x5A, 0xE0, 0xF0, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0xC1, 0xF2, 0x0C, 0x4C, 0xDE, 0x10, +0x12, 0x96, 0x14, 0x26, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0xC0, 0xF0, 0x14, 0x23, +0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, 0xC0, 0xF0, +0x0F, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0xC1, 0xF2, +0x14, 0x4C, 0xC8, 0x10, 0x08, 0x92, 0x03, 0xEA, +0x00, 0xF4, 0x17, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0A, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x06, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0xE1, 0xF2, 0x00, 0x4C, 0x00, 0x18, +0x21, 0x12, 0x10, 0x94, 0x01, 0x6D, 0x00, 0x18, +0xE3, 0x1C, 0xFF, 0x13, 0x12, 0x97, 0x10, 0x94, +0x08, 0x05, 0xD0, 0x67, 0x00, 0x18, 0xAF, 0x16, +0x0C, 0x94, 0xB0, 0x67, 0x0F, 0xD2, 0x00, 0x18, +0x84, 0x16, 0x17, 0xD2, 0x6E, 0xA1, 0x10, 0x6A, +0xFF, 0x6F, 0x6C, 0xEA, 0xEC, 0xEA, 0x0B, 0x22, +0x0F, 0x94, 0x86, 0x32, 0x59, 0xC1, 0x17, 0x95, +0xA6, 0x32, 0x5A, 0xC1, 0x11, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x4E, 0xC1, 0x0E, 0x10, 0x59, 0xA1, +0x0F, 0x96, 0x44, 0x33, 0x49, 0xE3, 0xC9, 0xE2, +0x4B, 0x32, 0x59, 0xC1, 0x17, 0x97, 0x7A, 0xA1, +0xE4, 0x32, 0x6D, 0xE7, 0x49, 0xE3, 0x4B, 0x32, +0x5A, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x58, 0x9A, 0x60, 0xA2, 0x40, 0x6A, 0x6C, 0xEA, +0x27, 0x22, 0x0B, 0x94, 0x09, 0x92, 0x0C, 0x95, +0x0A, 0x96, 0x1A, 0x65, 0x49, 0xE4, 0xA9, 0xE2, +0xC4, 0x33, 0x6D, 0xE2, 0x89, 0xE5, 0x44, 0x32, +0xB8, 0x67, 0xFF, 0xF7, 0x1F, 0x6F, 0x49, 0xE3, +0xAD, 0xE6, 0x12, 0x96, 0xEC, 0xEA, 0x04, 0xD2, +0x09, 0xE2, 0xCB, 0xE2, 0xEC, 0xEA, 0x05, 0xD2, +0x0F, 0x92, 0x91, 0xE3, 0x08, 0x93, 0x06, 0xD2, +0x59, 0xA1, 0x10, 0x95, 0x0E, 0x96, 0x6D, 0xE4, +0x30, 0xF0, 0x20, 0x6C, 0xE1, 0xF2, 0x08, 0x4C, +0x6C, 0xEF, 0x07, 0xD2, 0x00, 0x18, 0x21, 0x12, +0x99, 0xA1, 0x11, 0x95, 0x16, 0x96, 0x00, 0x18, +0xA3, 0x16, 0x13, 0x93, 0x05, 0x2B, 0x40, 0x32, +0x5C, 0x32, 0x42, 0x32, 0x42, 0x32, 0x07, 0x10, +0x13, 0x94, 0x02, 0x74, 0x04, 0x61, 0x44, 0x32, +0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, 0x45, 0xC9, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0C, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x08, 0x61, 0xB9, 0xA1, 0xDA, 0xA1, 0x30, 0xF0, +0x20, 0x6C, 0x01, 0xF3, 0x10, 0x4C, 0x00, 0x18, +0x21, 0x12, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, 0x02, 0x6C, +0x8C, 0xEB, 0x0C, 0x23, 0x63, 0xF3, 0x40, 0x9A, +0x05, 0x5A, 0x08, 0x61, 0xB9, 0xA1, 0xDA, 0xA1, +0x30, 0xF0, 0x20, 0x6C, 0x01, 0xF3, 0x10, 0x4C, +0x00, 0x18, 0x21, 0x12, 0x12, 0x95, 0x08, 0x5D, +0x19, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x0A, 0x23, 0x63, 0xF3, 0x40, 0x9A, +0x05, 0x5A, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0x21, 0xF3, 0x00, 0x4C, 0x00, 0x18, 0x21, 0x12, +0x10, 0x94, 0x01, 0x6D, 0xC5, 0x67, 0x00, 0x18, +0x97, 0x1D, 0x4B, 0x13, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0B, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x07, 0x61, 0xBD, 0xA1, +0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF3, 0x08, 0x4C, +0x00, 0x18, 0x21, 0x12, 0x11, 0x96, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x49, 0xE6, +0x66, 0xF4, 0x18, 0xA2, 0x0F, 0x97, 0x03, 0xEF, +0x15, 0x60, 0xEB, 0xE0, 0x0E, 0xD2, 0x0E, 0x93, +0xFF, 0x6A, 0x0F, 0x6C, 0x4C, 0xEB, 0x0E, 0xD3, +0x70, 0xA1, 0x01, 0x6D, 0x6E, 0x32, 0x8C, 0xEA, +0x44, 0x32, 0xAD, 0xEA, 0x8C, 0xEA, 0x80, 0x4C, +0xF8, 0x4C, 0x4C, 0x32, 0x6C, 0xEC, 0x4D, 0xEC, +0x90, 0xC1, 0x11, 0x10, 0x0F, 0x94, 0xFF, 0x6A, +0x13, 0xE4, 0x4C, 0xEC, 0x0E, 0xD4, 0x70, 0xA1, +0x0F, 0x6C, 0x6E, 0x32, 0x8C, 0xEA, 0x44, 0x32, +0x8C, 0xEA, 0x4C, 0x34, 0x79, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x8D, 0xEA, 0x50, 0xC1, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x12, 0x23, +0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, 0x0E, 0x61, +0x50, 0xA1, 0x0F, 0x96, 0x0E, 0x97, 0x4E, 0x32, +0x0F, 0x6B, 0x30, 0xF0, 0x20, 0x6C, 0x6C, 0xEA, +0x21, 0xF3, 0x14, 0x4C, 0xB0, 0x67, 0x04, 0xD2, +0x00, 0x18, 0x21, 0x12, 0x0E, 0x95, 0x04, 0x5D, +0x21, 0x61, 0x10, 0x33, 0x0F, 0x96, 0xFF, 0xF7, +0x1F, 0x6A, 0x0F, 0xE3, 0x4C, 0xEB, 0xCD, 0xE3, +0x4C, 0xEB, 0x6F, 0x33, 0x4C, 0xEB, 0x50, 0xA1, +0x01, 0x6C, 0x4E, 0x32, 0x8C, 0xEA, 0x08, 0x22, +0x11, 0x97, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x49, 0xE7, 0x66, 0x33, 0x08, 0x10, +0x11, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x66, 0x33, 0x49, 0xE4, 0x01, 0x4B, +0x66, 0xF4, 0x78, 0xC2, 0x11, 0x95, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x4D, 0xE5, +0x66, 0xF4, 0x78, 0xA3, 0x01, 0x6C, 0x0F, 0xD3, +0x65, 0x67, 0x63, 0xF2, 0x00, 0x4B, 0x64, 0x33, +0x4D, 0xE3, 0x0C, 0xA3, 0x43, 0xF3, 0x7C, 0x9A, +0x8C, 0xEB, 0x0C, 0x23, 0x63, 0xF3, 0x40, 0x9A, +0x05, 0x5A, 0x08, 0x61, 0x0F, 0x95, 0x30, 0xF0, +0x20, 0x6C, 0x61, 0xF3, 0x00, 0x4C, 0xD0, 0x67, +0x00, 0x18, 0x21, 0x12, 0x0E, 0x93, 0xDD, 0x67, +0xE7, 0x46, 0x31, 0x4F, 0x0F, 0x5B, 0x40, 0xA7, +0x01, 0x61, 0x0E, 0x6A, 0xFF, 0x6B, 0x4C, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x49, 0xE3, 0x66, 0xF5, 0x54, 0xA2, 0x0B, 0x5A, +0x07, 0x61, 0x50, 0xA1, 0x03, 0x6C, 0x4E, 0x32, +0x8C, 0xEA, 0x15, 0x22, 0x03, 0x72, 0x13, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x4D, 0xE3, 0x66, 0xF5, 0x54, 0xA3, 0x41, 0xE0, +0xFF, 0x6A, 0x4C, 0xE8, 0x0A, 0x58, 0x03, 0x60, +0x00, 0x68, 0x01, 0x6D, 0x08, 0x10, 0xF6, 0x48, +0x4C, 0xE8, 0x01, 0x6D, 0x01, 0x10, 0x00, 0x6D, +0x1A, 0x58, 0x01, 0x61, 0x19, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x0B, 0x23, +0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, 0x07, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x61, 0xF3, 0x1C, 0x4C, +0xD0, 0x67, 0x00, 0x18, 0x21, 0x12, 0x11, 0x93, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x63, 0xF2, 0x00, 0x4B, 0x64, 0x33, 0x49, 0xE3, +0x0B, 0x58, 0x06, 0xCA, 0x02, 0x6A, 0x09, 0x60, +0x06, 0x58, 0x03, 0x6A, 0x06, 0x60, 0x03, 0x58, +0x58, 0x67, 0x01, 0x5A, 0x58, 0x67, 0x05, 0x6B, +0x4B, 0xE3, 0x0F, 0x93, 0x12, 0xD0, 0x0B, 0x5B, +0x08, 0x61, 0xF6, 0x4B, 0x67, 0xEA, 0x6D, 0xE0, +0x12, 0xD3, 0x12, 0x94, 0xFF, 0x6B, 0x6C, 0xEC, +0x12, 0xD4, 0x0F, 0x93, 0x12, 0x95, 0xF6, 0x4B, +0x67, 0xEA, 0x6D, 0xE5, 0xFF, 0x6A, 0x4C, 0xEB, +0x28, 0x5D, 0x14, 0xD3, 0x02, 0x61, 0x28, 0x6E, +0x12, 0xD6, 0x03, 0x58, 0x05, 0x60, 0x17, 0x97, +0xFF, 0x6A, 0xE6, 0x37, 0x4C, 0xEF, 0x15, 0xD7, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0D, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x09, 0x61, 0x12, 0x95, 0x15, 0x96, 0x14, 0x97, +0x30, 0xF0, 0x20, 0x6C, 0x81, 0xF3, 0x10, 0x4C, +0x00, 0x18, 0x21, 0x12, 0x16, 0x92, 0x13, 0x22, +0x11, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x49, 0xE3, 0xC6, 0xF3, 0x50, 0xA2, +0x00, 0x6C, 0x0E, 0xD4, 0x02, 0x5A, 0x10, 0x61, +0xFF, 0x4A, 0x0E, 0xD2, 0x0E, 0x95, 0xFF, 0x6A, +0x4C, 0xED, 0x0E, 0xD5, 0x09, 0x10, 0x11, 0x96, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x49, 0xE6, 0xC6, 0xF3, 0x50, 0xA2, 0x0E, 0xD2, +0x11, 0x97, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x49, 0xE7, 0x66, 0xF3, 0x5C, 0xA2, +0xFF, 0x68, 0x0F, 0xD2, 0x76, 0xA1, 0x01, 0x6A, +0x6C, 0xEA, 0x1A, 0x22, 0x87, 0x67, 0x00, 0x18, +0xCB, 0x14, 0x05, 0x22, 0x0E, 0x92, 0x02, 0x4A, +0x0C, 0xEA, 0x0E, 0xD2, 0x11, 0x10, 0x11, 0x94, +0x00, 0x18, 0xB7, 0x14, 0x05, 0x22, 0x0E, 0x93, +0x05, 0x4B, 0x0C, 0xEB, 0x0E, 0xD3, 0x08, 0x10, +0x0F, 0x94, 0x0E, 0x95, 0x03, 0x4C, 0x06, 0x4D, +0x0C, 0xEC, 0x0C, 0xED, 0x0F, 0xD4, 0x0E, 0xD5, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x50, 0x9A, +0xFF, 0x6B, 0x80, 0xA2, 0x7F, 0x6A, 0x8C, 0xEA, +0x08, 0x22, 0x0F, 0x96, 0x0E, 0x97, 0x02, 0x4E, +0x05, 0x4F, 0x6C, 0xEE, 0x6C, 0xEF, 0x0F, 0xD6, +0x0E, 0xD7, 0x12, 0x92, 0x15, 0x93, 0x43, 0xEB, +0x3A, 0x60, 0x14, 0x94, 0x0E, 0x95, 0x15, 0x96, +0x0F, 0x97, 0x6F, 0xE4, 0x6D, 0xE5, 0xD7, 0xE2, +0xA9, 0xE7, 0x11, 0x97, 0x30, 0xF0, 0x20, 0x6E, +0xFF, 0x6C, 0x62, 0xF3, 0x10, 0x4E, 0x8C, 0xEB, +0xAB, 0x35, 0xD9, 0xE7, 0x26, 0xF4, 0xA4, 0xC6, +0xA3, 0x67, 0x8C, 0xEB, 0x47, 0x5B, 0x8C, 0xEA, +0x01, 0x61, 0x46, 0x6D, 0xFF, 0x6C, 0x65, 0x67, +0x8C, 0xEB, 0x0E, 0xD3, 0x62, 0x67, 0x8C, 0xEA, +0x29, 0x5A, 0x01, 0x61, 0x28, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0xFF, 0x6C, 0x62, 0xF3, 0x10, 0x4A, +0x6C, 0xEC, 0x43, 0xF3, 0x7C, 0x9A, 0x0F, 0xD4, +0x01, 0x6C, 0x8C, 0xEB, 0x0C, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x08, 0x61, 0x0F, 0x95, +0x0E, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0xA1, 0xF3, +0x04, 0x4C, 0x00, 0x18, 0x21, 0x12, 0x20, 0xF0, +0x07, 0xA1, 0x3F, 0x6A, 0x4C, 0xE8, 0x20, 0xF0, +0x47, 0x81, 0x00, 0x52, 0x17, 0x60, 0x0E, 0x95, +0x03, 0xED, 0x03, 0x60, 0x00, 0x6E, 0x0E, 0xD6, +0x05, 0x10, 0x0E, 0x97, 0xFF, 0x6A, 0x1F, 0xE7, +0x4C, 0xEF, 0x0E, 0xD7, 0x0F, 0x92, 0x03, 0xEA, +0x03, 0x60, 0x00, 0x6B, 0x0F, 0xD3, 0x10, 0x10, +0x0F, 0x94, 0xFF, 0x6A, 0x13, 0xE4, 0x4C, 0xEC, +0x0F, 0xD4, 0x0A, 0x10, 0x09, 0x20, 0x0E, 0x95, +0x0F, 0x96, 0xFF, 0x6A, 0x15, 0xE5, 0x19, 0xE6, +0x4C, 0xED, 0x4C, 0xEE, 0x0E, 0xD5, 0x0F, 0xD6, +0x0E, 0x94, 0xFD, 0x67, 0x67, 0x47, 0x31, 0x4B, +0x5B, 0x5C, 0x40, 0xA3, 0x01, 0x61, 0x5A, 0x6A, +0x0F, 0x94, 0xFF, 0x6B, 0xA2, 0x67, 0xDD, 0x67, +0x6C, 0xED, 0xE7, 0x46, 0x8C, 0xEB, 0x35, 0x4F, +0x42, 0x5B, 0x11, 0xD5, 0x40, 0xA7, 0x01, 0x61, +0x41, 0x6A, 0xFF, 0x6D, 0x4C, 0xED, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, +0x7C, 0x9A, 0x01, 0x6C, 0x0E, 0xD5, 0x8C, 0xEB, +0x0E, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x0A, 0x61, 0x20, 0xF0, 0xA7, 0xA1, 0x0E, 0x96, +0x11, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0xA1, 0xF3, +0x1C, 0x4C, 0x00, 0x18, 0x21, 0x12, 0x11, 0x96, +0x20, 0xF0, 0x47, 0xA1, 0x0E, 0x97, 0x01, 0x6C, +0x06, 0xD6, 0x04, 0x6E, 0x5E, 0x32, 0xA4, 0x67, +0x07, 0xD7, 0xE6, 0x67, 0x04, 0xD2, 0x05, 0xD0, +0x00, 0x18, 0x4E, 0x13, 0xB2, 0xA1, 0x03, 0x6C, +0xFF, 0x6A, 0xAE, 0x35, 0x8C, 0xED, 0x63, 0x45, +0x8C, 0xEB, 0x02, 0x5B, 0x4D, 0x60, 0x30, 0xF0, +0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, 0x43, 0xF3, +0x9C, 0x9B, 0x01, 0x6E, 0x0F, 0x45, 0xCC, 0xEC, +0x4C, 0xE8, 0x0B, 0x24, 0x63, 0xF3, 0x60, 0x9B, +0x05, 0x5B, 0x07, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0xE1, 0xF3, 0x00, 0x4C, 0x4C, 0xED, 0x00, 0x18, +0x21, 0x12, 0xB2, 0xA1, 0x03, 0x6B, 0x11, 0xE1, +0xAE, 0x32, 0x6C, 0xEA, 0xFF, 0x4A, 0x6C, 0xEA, +0x4C, 0x36, 0x19, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, +0xCD, 0xEA, 0x05, 0xA4, 0x52, 0xC1, 0x20, 0xF0, +0x48, 0xA4, 0xFF, 0x72, 0x09, 0x60, 0x13, 0xD2, +0x91, 0xA1, 0x4C, 0xEB, 0x0D, 0x6A, 0x4B, 0xEA, +0x68, 0x33, 0x8C, 0xEA, 0x6D, 0xEA, 0x51, 0xC1, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0C, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x08, 0x61, 0x13, 0x95, 0x30, 0xF0, 0x20, 0x6C, +0xE1, 0xF3, 0x0C, 0x4C, 0xD0, 0x67, 0x00, 0x18, +0x21, 0x12, 0x10, 0x94, 0x13, 0x97, 0xB0, 0x67, +0x01, 0x6E, 0x00, 0x18, 0x5C, 0x1C, 0xC5, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x58, 0x9A, +0x60, 0xA2, 0x40, 0x6A, 0x6C, 0xEA, 0x04, 0x22, +0x6E, 0xA1, 0x08, 0x6A, 0x6D, 0xEA, 0x04, 0x10, +0x6E, 0xA1, 0x09, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x4E, 0xC1, 0x5A, 0xA1, 0x17, 0x5A, 0x17, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0A, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0xE1, 0xF3, +0x18, 0x4C, 0x00, 0x18, 0x21, 0x12, 0x01, 0x6D, +0x10, 0x94, 0xC5, 0x67, 0x2F, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x0C, 0x23, +0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, 0x08, 0x61, +0x0E, 0x95, 0x11, 0x96, 0x30, 0xF0, 0x20, 0x6C, +0xE1, 0xF3, 0x1C, 0x4C, 0x00, 0x18, 0x21, 0x12, +0x59, 0xA1, 0x11, 0x93, 0x43, 0xEB, 0x1E, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0A, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x01, 0xF4, +0x0C, 0x4C, 0x00, 0x18, 0x21, 0x12, 0x10, 0x94, +0x01, 0x6D, 0x00, 0x6E, 0x00, 0x18, 0x97, 0x1D, +0x00, 0x6A, 0x49, 0xC1, 0x4C, 0xA1, 0x01, 0x4A, +0x4C, 0xC1, 0x63, 0x10, 0x0E, 0x94, 0x83, 0xEA, +0x44, 0x60, 0x49, 0xA1, 0x01, 0x6C, 0x01, 0x4A, +0x49, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, 0x8C, 0xEB, +0x0A, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0xE1, 0xF2, +0x04, 0x4C, 0x00, 0x18, 0x21, 0x12, 0x55, 0xA1, +0xE9, 0xA1, 0x02, 0x4A, 0x42, 0xEF, 0x45, 0x61, +0x6E, 0xA1, 0x08, 0x6A, 0x6C, 0xEA, 0x08, 0x22, +0x10, 0x95, 0xD9, 0xA1, 0x30, 0xF0, 0x20, 0x6C, +0x01, 0xF4, 0x10, 0x4C, 0x00, 0x18, 0x21, 0x12, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0A, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF4, +0x00, 0x4C, 0x00, 0x18, 0x21, 0x12, 0x10, 0x94, +0x00, 0x6D, 0x00, 0x18, 0xE3, 0x1C, 0x00, 0x6A, +0x49, 0xC1, 0x4D, 0xA1, 0x01, 0x4A, 0x4D, 0xC1, +0x1C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x0A, 0x23, 0x63, 0xF3, 0x40, 0x9A, +0x05, 0x5A, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0x21, 0xF4, 0x08, 0x4C, 0x00, 0x18, 0x21, 0x12, +0x10, 0x94, 0x04, 0x6D, 0x00, 0x6E, 0x00, 0x18, +0xDB, 0x14, 0x6F, 0xA1, 0x0F, 0x6A, 0x6C, 0xEA, +0x4F, 0xC1, 0x00, 0x18, 0x17, 0x15, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x0A, 0x23, +0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF4, 0x0C, 0x4C, +0x00, 0x18, 0x21, 0x12, 0x10, 0x94, 0x00, 0x18, +0x9E, 0x23, 0x10, 0x95, 0xFF, 0x6A, 0x01, 0x4D, +0x4C, 0xED, 0x80, 0x75, 0x10, 0xD5, 0x3F, 0xF2, +0x0C, 0x61, 0x1B, 0x97, 0x1A, 0x91, 0x19, 0x90, +0x0E, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x69, 0xA2, +0x01, 0x4B, 0x62, 0xF3, 0x69, 0xC2, 0x62, 0xF3, +0x69, 0xA2, 0x02, 0x5B, 0x03, 0x61, 0x00, 0x6B, +0x62, 0xF3, 0x69, 0xC2, 0x00, 0x18, 0x5E, 0x1E, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x2C, 0xEC, 0x2A, 0x6A, 0x58, 0xEC, +0x30, 0xF0, 0x20, 0x6B, 0xE6, 0xF1, 0x08, 0x4B, +0x04, 0xD4, 0x03, 0x6D, 0x12, 0xEA, 0x49, 0xE3, +0xD2, 0xA2, 0xF1, 0xA2, 0x68, 0xA2, 0xCC, 0xED, +0xA8, 0x36, 0xAC, 0xE9, 0x0D, 0x6D, 0xAB, 0xED, +0xEC, 0xED, 0xCD, 0xED, 0x80, 0xA2, 0xB1, 0xC2, +0x7F, 0x6D, 0x6C, 0xED, 0xA3, 0xEC, 0x01, 0x60, +0x64, 0x67, 0x48, 0xA2, 0x80, 0x68, 0x0B, 0xE8, +0x4C, 0xE8, 0x6D, 0xE8, 0x00, 0xF6, 0x00, 0x30, +0xFF, 0x6A, 0x00, 0xF6, 0x03, 0x30, 0x4C, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0C, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF4, +0x18, 0x4C, 0xB0, 0x67, 0xD1, 0x67, 0x00, 0x18, +0x21, 0x12, 0x04, 0x94, 0xB0, 0x67, 0xF1, 0x67, +0x00, 0x6E, 0x00, 0x18, 0x5C, 0x1C, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x69, 0x8C, 0xE9, 0x2A, 0x68, 0x18, 0xE9, +0xFF, 0x6A, 0xAC, 0xEA, 0x06, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0xE6, 0xF1, 0x08, 0x4A, 0x91, 0x67, +0x12, 0xE8, 0x01, 0xE2, 0x00, 0x18, 0x8A, 0x10, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF3, +0x58, 0x9A, 0x34, 0x33, 0x91, 0x67, 0x49, 0xE3, +0x40, 0xA2, 0xFF, 0x6B, 0x4C, 0xEB, 0x05, 0xD3, +0x00, 0x18, 0x74, 0x05, 0x52, 0xA0, 0x01, 0x6B, +0xFF, 0x6C, 0x5A, 0x32, 0x6C, 0xEA, 0x8C, 0xEA, +0x00, 0xF1, 0x06, 0x22, 0x06, 0x92, 0x63, 0x22, +0x8F, 0xA0, 0x10, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, +0x4F, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x43, 0xF3, 0x9C, 0x9A, 0x6C, 0xEC, +0x0B, 0x24, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x07, 0x61, 0x04, 0x95, 0x30, 0xF0, 0x20, 0x6C, +0x41, 0xF4, 0x08, 0x4C, 0x00, 0x18, 0x21, 0x12, +0x91, 0x67, 0x06, 0x6D, 0x00, 0x6E, 0x00, 0x18, +0xDB, 0x14, 0x54, 0xA0, 0x10, 0x6B, 0x6B, 0xEB, +0x6C, 0xEA, 0x54, 0xC0, 0x05, 0x94, 0x18, 0x6F, +0x04, 0x95, 0x8C, 0xEF, 0x00, 0x6E, 0x91, 0x67, +0xEE, 0x37, 0x00, 0x18, 0x5C, 0x1C, 0x72, 0xA0, +0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x52, 0xC0, +0x4F, 0xA0, 0x10, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x10, 0x6C, 0x8E, 0xEA, +0x01, 0x22, 0x03, 0x6A, 0x73, 0xA0, 0x55, 0xC0, +0x00, 0x6A, 0x59, 0xC0, 0x5A, 0xC0, 0x7F, 0x6A, +0x4C, 0xEB, 0x73, 0xC0, 0x72, 0xA0, 0x6C, 0xEA, +0x6E, 0xA0, 0x52, 0xC0, 0x10, 0x6A, 0x6D, 0xEA, +0x08, 0x6B, 0x4C, 0xEB, 0x4E, 0xC0, 0xA0, 0xF0, +0x0B, 0x23, 0x6F, 0xA0, 0x10, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x10, 0x72, +0x05, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x41, 0xF4, +0x14, 0x4C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0x61, 0xF4, 0x04, 0x4C, 0x04, 0x96, 0xB1, 0x67, +0x00, 0x18, 0x21, 0x12, 0x95, 0x10, 0x6E, 0xA0, +0x08, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x15, 0x22, 0x6F, 0xA0, 0x10, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x10, 0x72, +0x05, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x61, 0xF4, +0x14, 0x4C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0x81, 0xF4, 0x04, 0x4C, 0x04, 0x96, 0xB1, 0x67, +0x00, 0x18, 0x21, 0x12, 0x72, 0xA0, 0x18, 0x6A, +0x6C, 0xEA, 0x4C, 0x2A, 0x4F, 0xA0, 0x10, 0x6B, +0x6B, 0xEB, 0x6C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, +0x10, 0x72, 0x3F, 0x61, 0x54, 0xA0, 0x0F, 0x6C, +0xA2, 0x67, 0x8C, 0xED, 0x01, 0x4D, 0x8C, 0xED, +0x6C, 0xEA, 0xAD, 0xEA, 0x4C, 0xEC, 0x03, 0x54, +0x54, 0xC0, 0x0E, 0x61, 0x6C, 0xEA, 0x54, 0xC0, +0x04, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0x7F, 0x6B, +0x8C, 0xEB, 0xE1, 0xF6, 0x10, 0x4A, 0x49, 0xE3, +0x40, 0xA2, 0x44, 0x32, 0x0A, 0x4A, 0x55, 0xC0, +0x6E, 0xA0, 0x08, 0x6A, 0x6C, 0xEA, 0x0C, 0x22, +0x74, 0xA0, 0x0F, 0x6A, 0xD5, 0xA0, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0xFF, 0x6D, 0x81, 0xF4, +0x14, 0x4C, 0x4C, 0xED, 0x00, 0x18, 0x21, 0x12, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x11, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x0D, 0x61, 0xB5, 0xA0, 0x30, 0xF0, 0x20, 0x6C, +0xA1, 0xF4, 0x04, 0x4C, 0x00, 0x18, 0x21, 0x12, +0x05, 0x10, 0x54, 0xA0, 0x4C, 0xEB, 0x03, 0x6A, +0x74, 0xC0, 0x55, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0D, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x09, 0x61, 0x54, 0xA0, +0x30, 0xF0, 0x20, 0x6C, 0x0F, 0x6D, 0xA1, 0xF4, +0x10, 0x4C, 0x4C, 0xED, 0x00, 0x18, 0x21, 0x12, +0x6E, 0xA0, 0x11, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x4E, 0xC0, 0x91, 0x67, 0x07, 0x6D, 0x00, 0x6E, +0x00, 0x18, 0xDB, 0x14, 0x91, 0x67, 0x00, 0x18, +0x5A, 0x21, 0x73, 0xA0, 0x7F, 0x6A, 0x4C, 0xEB, +0x73, 0xC0, 0x72, 0xA0, 0x6C, 0xEA, 0x52, 0xC0, +0x72, 0xA0, 0x41, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x73, 0xA0, 0x52, 0xC0, 0x08, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x02, 0x6B, 0x6D, 0xEA, 0x53, 0xC0, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0x25, 0x67, 0x2A, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, +0x20, 0x6B, 0xE6, 0xF1, 0x08, 0x4B, 0x04, 0xD4, +0x4C, 0xE9, 0xE6, 0x67, 0x38, 0x59, 0x4C, 0xEF, +0x12, 0xED, 0xB5, 0xE3, 0x80, 0xA5, 0x62, 0xA5, +0xA1, 0xA5, 0x04, 0x67, 0x08, 0x60, 0x24, 0x59, +0x63, 0xE4, 0x04, 0x60, 0x15, 0x59, 0x05, 0x67, +0x02, 0x61, 0xA1, 0xE3, 0x4C, 0xE8, 0x04, 0x94, +0xB0, 0x67, 0x00, 0x6E, 0x00, 0x18, 0x5C, 0x1C, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, +0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0D, 0x23, 0x63, 0xF3, 0x40, 0x9A, 0x05, 0x5A, +0x09, 0x61, 0x04, 0x96, 0x30, 0xF0, 0x20, 0x6C, +0xA1, 0xF4, 0x1C, 0x4C, 0xB1, 0x67, 0xF0, 0x67, +0x00, 0x18, 0x21, 0x12, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0x8C, 0xEA, 0x2A, 0x68, 0x18, 0xEA, +0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF1, +0x08, 0x4A, 0x12, 0xE8, 0x01, 0xE2, 0x84, 0xA0, +0x0F, 0x5C, 0x48, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x88, 0x33, 0xC0, 0xF0, 0x00, 0x4A, 0x69, 0xE2, +0x40, 0x9A, 0x00, 0xEA, 0x1B, 0x6A, 0x34, 0x10, +0x3D, 0x6A, 0x6E, 0xA0, 0x47, 0xC0, 0x08, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x02, 0x6B, 0x6D, 0xEA, +0x39, 0x10, 0x6E, 0xA0, 0x13, 0x6A, 0x47, 0xC0, +0x08, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x01, 0x6B, +0x6D, 0xEA, 0x4E, 0xC0, 0x6E, 0xA0, 0x33, 0x6A, +0x47, 0xC0, 0x08, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x01, 0x6B, 0x6D, 0xEA, 0x02, 0x6D, 0x4E, 0xC0, +0x07, 0xD5, 0x27, 0x10, 0x6E, 0xA0, 0x0B, 0x6A, +0x47, 0xC0, 0x08, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x01, 0x6E, 0x4E, 0xC0, 0x07, 0xD6, 0x1D, 0x10, +0x6E, 0xA0, 0x47, 0x6A, 0x47, 0xC0, 0x08, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0x6B, 0x6D, 0xEA, +0x4E, 0xC0, 0x07, 0xD3, 0x12, 0x10, 0x23, 0x6A, +0x6E, 0xA0, 0x47, 0xC0, 0x08, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x03, 0x6B, 0x6D, 0xEA, 0x4E, 0xC0, +0x07, 0xD3, 0x07, 0x10, 0x6E, 0xA0, 0x08, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0x6B, 0x4E, 0xC0, +0x07, 0xD3, 0x05, 0x96, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF3, 0x44, 0x9A, 0xCC, 0x35, 0x8C, 0x34, +0x55, 0xE5, 0x30, 0xF0, 0x20, 0x6A, 0xA1, 0xF5, +0x18, 0x4A, 0x91, 0xE2, 0xE5, 0x67, 0x1D, 0x65, +0x00, 0x6A, 0x48, 0x33, 0xAD, 0xE3, 0xC0, 0x9C, +0x60, 0x9B, 0x31, 0xA0, 0xCC, 0xEB, 0x03, 0x6E, +0x2C, 0xEE, 0x02, 0x69, 0x2E, 0xEE, 0x07, 0x2E, +0xFF, 0x6E, 0x4C, 0xEE, 0x01, 0x69, 0x2E, 0xEE, +0x02, 0x2E, 0xBF, 0x4E, 0xCC, 0xEB, 0x48, 0x36, +0xE5, 0xE6, 0x60, 0xD9, 0x78, 0x67, 0x79, 0xE6, +0x60, 0x9E, 0x01, 0x4A, 0x02, 0x6B, 0x4E, 0xEB, +0x04, 0x4C, 0xE3, 0x2B, 0x51, 0xA0, 0x05, 0x95, +0x03, 0x6B, 0x52, 0x32, 0xAC, 0x34, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6D, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF3, 0x64, 0x9B, 0x60, 0xF3, 0xA8, 0x9D, +0x6D, 0xE4, 0xB1, 0xE4, 0x60, 0x9B, 0xE0, 0x9C, +0x03, 0x2F, 0xC3, 0x67, 0x00, 0x69, 0x02, 0x10, +0xC7, 0x67, 0x20, 0x69, 0x1F, 0x6C, 0x01, 0x6D, +0xA4, 0xEC, 0xCC, 0xED, 0x09, 0x25, 0x25, 0xE4, +0xFF, 0x6C, 0x8C, 0xE9, 0x0B, 0x22, 0x0C, 0x59, +0x09, 0x61, 0x20, 0x49, 0x8C, 0xE9, 0x06, 0x10, +0xFF, 0x4C, 0xFF, 0x6D, 0xAC, 0xEC, 0xFF, 0x74, +0xEE, 0x61, 0x00, 0x69, 0x20, 0x6E, 0x02, 0x23, +0xE3, 0x67, 0x00, 0x6E, 0x00, 0x6C, 0xFF, 0x6B, +0xA4, 0x67, 0x6C, 0xED, 0x1D, 0x65, 0x01, 0x6D, +0xA4, 0xEC, 0xEC, 0xED, 0x0B, 0x25, 0x98, 0x67, +0xD1, 0xE4, 0x6C, 0xEC, 0x04, 0xD4, 0x0B, 0x22, +0x0C, 0x5C, 0x09, 0x61, 0x20, 0x4C, 0x6C, 0xEC, +0x04, 0xD4, 0x05, 0x10, 0x01, 0x4C, 0x20, 0x74, +0xEA, 0x61, 0x00, 0x6D, 0x04, 0xD5, 0x5D, 0x67, +0x67, 0x42, 0x20, 0xC0, 0x09, 0x4B, 0x40, 0xA3, +0x41, 0xC0, 0x05, 0x94, 0x00, 0x18, 0x8A, 0x10, +0x05, 0x94, 0x7F, 0x6B, 0x4C, 0xEB, 0x08, 0xD3, +0x00, 0x18, 0x8A, 0x10, 0x08, 0x94, 0x62, 0x67, +0x06, 0xD1, 0x83, 0xE9, 0x12, 0x61, 0xBD, 0x67, +0xC7, 0x45, 0x19, 0x4E, 0x40, 0xA6, 0x08, 0x95, +0x04, 0x96, 0xFF, 0x6C, 0x8C, 0xED, 0xCC, 0xEC, +0x83, 0xED, 0x04, 0x60, 0x9D, 0x67, 0xA7, 0x44, +0x09, 0x4D, 0x40, 0xA5, 0xFF, 0x6E, 0x4C, 0xEE, +0x06, 0xD6, 0x92, 0xA0, 0x04, 0x6A, 0x8C, 0xEA, +0x08, 0x22, 0x80, 0x6A, 0x6C, 0xEA, 0x05, 0x22, +0x06, 0x93, 0x4D, 0xEB, 0xFF, 0x6A, 0x4C, 0xEB, +0x06, 0xD3, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x43, 0xF3, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x0F, 0x23, 0x63, 0xF3, 0x40, 0x9A, +0x05, 0x5A, 0x0B, 0x61, 0x51, 0xA0, 0x05, 0x95, +0x06, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0x6F, +0xC1, 0xF4, 0x10, 0x4C, 0x4C, 0xEF, 0x00, 0x18, +0x21, 0x12, 0x51, 0xA0, 0x05, 0x94, 0x06, 0x95, +0x03, 0x6F, 0x00, 0x6E, 0x4C, 0xEF, 0x00, 0x18, +0x5C, 0x1C, 0x9D, 0x67, 0xA7, 0x44, 0x15, 0x4D, +0x80, 0xA5, 0x4A, 0x59, 0x82, 0xC0, 0x06, 0x61, +0x73, 0xA0, 0x79, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x48, 0x6B, 0x3F, 0x10, 0x40, 0x59, 0x06, 0x61, +0x73, 0xA0, 0x79, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x40, 0x6B, 0x37, 0x10, 0x36, 0x59, 0x06, 0x61, +0x73, 0xA0, 0x79, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x38, 0x6B, 0x2F, 0x10, 0x2C, 0x59, 0x06, 0x61, +0x73, 0xA0, 0x79, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x30, 0x6B, 0x27, 0x10, 0x24, 0x59, 0x06, 0x61, +0x73, 0xA0, 0x79, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x28, 0x6B, 0x1F, 0x10, 0x1C, 0x59, 0x06, 0x61, +0x73, 0xA0, 0x79, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x20, 0x6B, 0x17, 0x10, 0x14, 0x59, 0x06, 0x61, +0x73, 0xA0, 0x79, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x18, 0x6B, 0x0F, 0x10, 0x0C, 0x59, 0x06, 0x61, +0x73, 0xA0, 0x79, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x10, 0x6B, 0x07, 0x10, 0x04, 0x59, 0x07, 0x61, +0x73, 0xA0, 0x79, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x08, 0x6B, 0x6D, 0xEA, 0x04, 0x10, 0x73, 0xA0, +0x79, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x53, 0xC0, +0x00, 0x18, 0x17, 0x15, 0x30, 0xF0, 0x20, 0x6A, +0xE8, 0xF6, 0x6B, 0xA2, 0x03, 0x6A, 0x6C, 0xEA, +0x18, 0x22, 0x01, 0x72, 0x38, 0x6D, 0x04, 0x60, +0x02, 0x72, 0x2D, 0x6D, 0x01, 0x60, 0x15, 0x6D, +0x51, 0xA0, 0x05, 0x94, 0x03, 0x6E, 0x4C, 0xEE, +0x00, 0x18, 0x1B, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x66, 0xF3, 0x9B, 0xA2, +0x04, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x66, 0xF3, +0x7B, 0xC2, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x86, 0xF5, 0x27, 0xA2, +0x2A, 0x68, 0x86, 0xF5, 0x46, 0xA2, 0x18, 0xE9, +0x30, 0xF0, 0x20, 0x6B, 0xE6, 0xF1, 0x08, 0x4B, +0x02, 0x72, 0x12, 0xE8, 0x01, 0xE3, 0x30, 0x60, +0x03, 0x5A, 0x03, 0x60, 0x01, 0x72, 0x07, 0x60, +0xA7, 0x10, 0x03, 0x72, 0x70, 0x60, 0x04, 0x72, +0x80, 0xF0, 0x0B, 0x60, 0xA1, 0x10, 0x0C, 0x6A, +0x7D, 0x67, 0x4F, 0xCB, 0x9D, 0x67, 0x0E, 0x6B, +0x70, 0xC4, 0x52, 0xC4, 0x5B, 0xA0, 0x03, 0x6B, +0xBD, 0x67, 0x53, 0xC4, 0x43, 0xA0, 0x54, 0xC4, +0x51, 0xA0, 0x4A, 0x34, 0x6C, 0xEC, 0x95, 0xC5, +0x82, 0x67, 0x6C, 0xEC, 0x96, 0xC5, 0x85, 0xA0, +0x97, 0xC5, 0x86, 0xA0, 0x98, 0xC5, 0x5E, 0x34, +0x52, 0x32, 0x6C, 0xEA, 0x99, 0xC5, 0x5A, 0xC5, +0x52, 0xA0, 0x01, 0x6B, 0x4A, 0x32, 0x6C, 0xEA, +0x5B, 0xC5, 0x58, 0xA0, 0x5C, 0xC5, 0x62, 0x10, +0x7D, 0x67, 0x0C, 0x6A, 0x4F, 0xCB, 0x0E, 0x6A, +0x50, 0xC3, 0x0D, 0x6A, 0x52, 0xC3, 0x44, 0xA0, +0x2C, 0x31, 0x53, 0xC3, 0x40, 0xA0, 0x54, 0xC3, +0x41, 0xA0, 0x55, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF3, 0x44, 0x9A, 0x49, 0xE1, 0x40, 0xA2, +0x56, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0x54, 0x9A, 0x49, 0xE1, 0x40, 0xA2, 0x57, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, +0x49, 0xE1, 0x40, 0xA2, 0x58, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x49, 0xE1, +0x40, 0xA2, 0x59, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF3, 0x48, 0x9A, 0x49, 0xE1, 0x40, 0xA2, +0x5A, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, +0x40, 0x9A, 0x49, 0xE1, 0x40, 0xA2, 0x5B, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x44, 0x9A, +0x49, 0xE1, 0x40, 0xA2, 0x5C, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF4, 0x48, 0x9A, 0x45, 0xE1, +0x40, 0xA1, 0x5D, 0xC3, 0x2F, 0x10, 0x9D, 0x67, +0x0C, 0x6A, 0x4F, 0xCC, 0x0E, 0x6A, 0x50, 0xC4, +0x52, 0xC4, 0x59, 0xA0, 0x53, 0xC4, 0x20, 0xF0, +0x42, 0xA0, 0x57, 0xC4, 0x20, 0xF0, 0x43, 0xA0, +0x58, 0xC4, 0x91, 0x67, 0x00, 0x18, 0x8A, 0x10, +0xBD, 0x67, 0x59, 0xC5, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF3, 0x58, 0x9A, 0x34, 0x31, 0x45, 0xE1, +0x40, 0xA1, 0x5A, 0xC5, 0x48, 0xA0, 0x5D, 0xC5, +0x11, 0x10, 0x7D, 0x67, 0x03, 0x6A, 0x4F, 0xCB, +0x0E, 0x6A, 0x50, 0xC3, 0x0F, 0x6A, 0x52, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF0, 0x78, 0xA2, +0x40, 0xF0, 0x18, 0x4A, 0x41, 0xA2, 0x9D, 0x67, +0x73, 0xC4, 0x54, 0xC4, 0x04, 0x94, 0x05, 0x95, +0x06, 0x96, 0x07, 0x97, 0x00, 0x18, 0x15, 0x11, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x00, 0x6B, 0x14, 0x6D, +0xB8, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, +0x10, 0x4C, 0x61, 0xF5, 0xC0, 0x43, 0x00, 0x6A, +0xC8, 0x36, 0xD9, 0xE4, 0x12, 0xED, 0xB5, 0xE4, +0x86, 0xF7, 0x4C, 0xDD, 0x86, 0xF7, 0x50, 0xDD, +0x86, 0xF7, 0x54, 0xDD, 0x86, 0xF7, 0x58, 0xDD, +0x86, 0xF7, 0x5C, 0xDD, 0x95, 0xE3, 0x88, 0xF1, +0x4C, 0xC5, 0x43, 0xDE, 0x08, 0xF2, 0x4C, 0xC5, +0x88, 0xF2, 0x4C, 0xC5, 0x44, 0xF2, 0xA0, 0x43, +0xA4, 0x35, 0x95, 0xE5, 0x46, 0xCD, 0xC4, 0xF1, +0xA0, 0x43, 0xA4, 0x35, 0x95, 0xE5, 0x46, 0xCD, +0xC4, 0xF2, 0xA0, 0x43, 0xA4, 0x35, 0x95, 0xE5, +0x48, 0xCD, 0x44, 0xF3, 0xA0, 0x43, 0xA4, 0x35, +0x95, 0xE5, 0x48, 0xCD, 0x01, 0x4B, 0xFF, 0x6A, +0x4C, 0xEB, 0x80, 0x73, 0xC8, 0x61, 0x58, 0x67, +0x88, 0xF5, 0x4C, 0xDC, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x8C, 0xEA, 0x44, 0xF2, 0xA0, 0x42, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, +0xA4, 0x35, 0x00, 0x6C, 0x75, 0xE5, 0x86, 0xCD, +0xC4, 0xF1, 0xA0, 0x42, 0xA4, 0x35, 0x75, 0xE5, +0x86, 0xCD, 0xC4, 0xF2, 0xA0, 0x42, 0x44, 0xF3, +0x00, 0x4A, 0xA4, 0x35, 0x44, 0x32, 0x75, 0xE5, +0x6D, 0xE2, 0x88, 0xCD, 0x88, 0xCB, 0x20, 0xE8, +0xFF, 0x6A, 0x8C, 0xEA, 0x14, 0x6D, 0xB8, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, 0x10, 0x4C, +0x00, 0x6B, 0x12, 0xED, 0xB5, 0xE4, 0x86, 0xF7, +0x6C, 0xDD, 0x86, 0xF7, 0x70, 0xDD, 0x86, 0xF7, +0x74, 0xDD, 0x86, 0xF7, 0x78, 0xDD, 0x86, 0xF7, +0x7C, 0xDD, 0x95, 0xE2, 0x61, 0xF5, 0x00, 0x4A, +0x48, 0x32, 0x51, 0xE4, 0x88, 0xF1, 0x6C, 0xC5, +0x63, 0xDC, 0x20, 0xE8, 0xFF, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, 0x8C, 0xEA, +0x69, 0xE2, 0x00, 0x6B, 0x08, 0xF2, 0x6C, 0xC2, +0x88, 0xF2, 0x6C, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0x20, 0xF4, +0x6C, 0x9B, 0x4C, 0xEC, 0x8C, 0x31, 0x6D, 0xE1, +0x80, 0xA3, 0x30, 0xF0, 0x20, 0x68, 0x10, 0x6B, +0x62, 0xF3, 0x10, 0x48, 0x8C, 0xEB, 0x88, 0xF7, +0x76, 0xC0, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, +0x70, 0x9B, 0x6D, 0xE1, 0x80, 0xA3, 0x3F, 0x6B, +0x6C, 0xEC, 0x88, 0xF7, 0x91, 0xC0, 0x30, 0xF0, +0x20, 0x6C, 0x20, 0xF4, 0x94, 0x9C, 0x91, 0xE1, +0x80, 0xA4, 0x6C, 0xEC, 0x88, 0xF7, 0x92, 0xC0, +0x30, 0xF0, 0x20, 0x6C, 0x20, 0xF4, 0x98, 0x9C, +0x91, 0xE1, 0x80, 0xA4, 0x8C, 0xEB, 0x88, 0xF7, +0x73, 0xC0, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, +0x7C, 0x9B, 0x6D, 0xE1, 0x60, 0xA3, 0x88, 0xF7, +0x70, 0xC0, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, +0x60, 0x9B, 0x88, 0xF7, 0x90, 0xA0, 0x6D, 0xE1, +0x60, 0xA3, 0x6C, 0xEA, 0x56, 0x32, 0x88, 0xF7, +0x54, 0xC0, 0x00, 0x18, 0x8A, 0x10, 0x7F, 0x6B, +0x4C, 0xEB, 0x01, 0x6A, 0x4B, 0xEA, 0x88, 0xF7, +0x57, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, +0x44, 0x9A, 0x88, 0xF7, 0x75, 0xC0, 0x07, 0x97, +0x45, 0xE1, 0x40, 0xA1, 0x06, 0x91, 0x88, 0xF7, +0x58, 0xC0, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0x8C, 0xEA, 0x82, 0x67, 0x05, 0xD2, +0x00, 0x18, 0xB4, 0x23, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x88, 0xF7, 0x10, 0xA2, +0x2A, 0x69, 0x30, 0xF0, 0x20, 0x6B, 0x38, 0xE8, +0xE6, 0xF1, 0x08, 0x4B, 0x88, 0xF7, 0x92, 0xA2, +0x88, 0xF7, 0xB3, 0xA2, 0x08, 0xD4, 0x88, 0xF7, +0x98, 0xA2, 0x07, 0xD5, 0x04, 0xD4, 0x12, 0xE9, +0x25, 0xE3, 0x88, 0xF7, 0x71, 0xA2, 0x06, 0xD3, +0x88, 0xF7, 0x75, 0xA2, 0x09, 0xD3, 0x88, 0xF7, +0x76, 0xA2, 0x0F, 0x23, 0x43, 0xF3, 0x7C, 0x9A, +0x02, 0x6C, 0x8C, 0xEB, 0x0A, 0x23, 0x63, 0xF3, +0x40, 0x9A, 0x05, 0x5A, 0x06, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0xE1, 0xF4, 0x04, 0x4C, 0x00, 0x18, +0x21, 0x12, 0x71, 0xA1, 0x80, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0xFF, 0x6D, 0xAC, 0xEA, 0xA0, 0xF0, +0x04, 0x2A, 0x04, 0x93, 0x01, 0x6A, 0x4C, 0xEB, +0x80, 0xF0, 0x1F, 0x2B, 0x09, 0x93, 0x49, 0x6C, +0x8E, 0xEB, 0x01, 0x5B, 0x98, 0x67, 0x02, 0x6B, +0x93, 0xE3, 0x04, 0xD4, 0x76, 0xA1, 0x6C, 0xEA, +0xAC, 0xEA, 0x09, 0x22, 0x90, 0x67, 0x00, 0x18, +0x8A, 0x10, 0x72, 0xA1, 0x40, 0x6A, 0xFF, 0x6D, +0x6C, 0xEA, 0xAC, 0xEA, 0x13, 0x10, 0x05, 0x92, +0x4C, 0x33, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, +0x54, 0x9A, 0x49, 0xE3, 0x40, 0xA2, 0x00, 0xF6, +0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, 0x00, 0x52, +0x06, 0x60, 0x72, 0xA1, 0x40, 0x6A, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x72, 0x2A, 0x06, 0x93, +0x9D, 0x67, 0xA7, 0x44, 0x11, 0x4D, 0x05, 0x5B, +0x40, 0xA5, 0x01, 0x61, 0x04, 0x6A, 0x05, 0x6C, +0x98, 0xE8, 0xFF, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x08, 0x95, +0x12, 0xEC, 0x6D, 0xE4, 0xE1, 0xF5, 0x00, 0x4B, +0x68, 0x33, 0x6D, 0xE2, 0x83, 0x9B, 0xB1, 0xE4, +0x83, 0xDB, 0x4D, 0xE0, 0x88, 0xF1, 0x8C, 0xA3, +0x07, 0x95, 0x61, 0xF5, 0x00, 0x48, 0x08, 0x30, +0x91, 0xE5, 0x88, 0xF1, 0x8C, 0xC3, 0x08, 0x93, +0x09, 0xE2, 0x71, 0xE5, 0x63, 0x9A, 0x6D, 0xE4, +0x63, 0xDA, 0x4B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x10, 0x4A, 0x49, 0xE0, 0x08, 0xF2, +0x6C, 0xA2, 0x01, 0x4B, 0x08, 0xF2, 0x6C, 0xC2, +0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x10, 0x4A, 0x49, 0xE0, 0x88, 0xF2, 0x6C, 0xA2, +0x01, 0x4B, 0x88, 0xF2, 0x6C, 0xC2, 0x6E, 0xA1, +0x08, 0x6A, 0x6C, 0xEA, 0x0F, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x10, 0x4A, 0x49, 0xE0, +0x08, 0xF2, 0xAC, 0xA2, 0x88, 0xF2, 0xCC, 0xA2, +0x30, 0xF0, 0x20, 0x6C, 0xE1, 0xF4, 0x10, 0x4C, +0x00, 0x18, 0x21, 0x12, 0x2A, 0x6C, 0x98, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, +0x69, 0xE0, 0x12, 0xEC, 0x6D, 0xE4, 0x83, 0xF6, +0x70, 0xA3, 0x08, 0xF2, 0x8C, 0xA2, 0x63, 0xEC, +0x03, 0x61, 0x90, 0x67, 0x01, 0x6D, 0x07, 0x10, +0x88, 0xF2, 0x4C, 0xA2, 0x04, 0x93, 0x63, 0xEA, +0x0C, 0x61, 0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, +0x80, 0x21, 0x90, 0x67, 0x00, 0x18, 0xAD, 0x23, +0x04, 0x10, 0x06, 0x94, 0x02, 0x5C, 0xC1, 0x60, +0xB5, 0x17, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0x61, 0x13, 0x00, 0x00, +0x14, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +u32 array_length_mp_8814a_fw_ap = 42248; + +#endif /*defined(CONFIG_AP_WOWLAN) || (DM_ODM_SUPPORT_TYPE & (ODM_AP))*/ + +#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN)) || (DM_ODM_SUPPORT_TYPE & (ODM_CE)) + +u8 array_mp_8814a_fw_nic[] = { +0x14, 0x88, 0x00, 0x00, 0x21, 0x00, 0x06, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x06, 0x0B, 0x15, 0x0F, 0xE3, 0x07, 0x00, 0x00, +0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, +0x00, 0x00, 0x20, 0x80, 0x98, 0x16, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xF8, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x10, 0x12, 0x80, 0x00, 0x00, 0x00, 0x80, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xE9, 0x03, 0x00, 0x80, 0xD9, 0x03, 0x00, 0x80, +0xC9, 0x03, 0x00, 0x80, 0xB9, 0x03, 0x00, 0x80, +0xA9, 0x03, 0x00, 0x80, 0x99, 0x03, 0x00, 0x80, +0xE1, 0x02, 0x00, 0x80, 0x95, 0x03, 0x00, 0x80, +0x95, 0x03, 0x00, 0x80, 0x95, 0x03, 0x00, 0x80, +0x95, 0x03, 0x00, 0x80, 0x95, 0x03, 0x00, 0x80, +0x95, 0x03, 0x00, 0x80, 0x95, 0x03, 0x00, 0x80, +0x95, 0x03, 0x00, 0x80, 0x2C, 0x00, 0x04, 0x00, +0x2D, 0x00, 0x2C, 0x01, 0x2D, 0x01, 0x2C, 0x02, +0x2E, 0x01, 0xFF, 0x00, 0x2D, 0x02, 0xFF, 0x00, +0x03, 0x02, 0x00, 0x00, 0x3F, 0x1F, 0x00, 0x80, +0x55, 0x1F, 0x00, 0x80, 0x6B, 0x1F, 0x00, 0x80, +0x81, 0x1F, 0x00, 0x80, 0x9B, 0x1F, 0x00, 0x80, +0xF3, 0x1F, 0x00, 0x80, 0x09, 0x20, 0x00, 0x80, +0x27, 0x20, 0x00, 0x80, 0x59, 0x20, 0x00, 0x80, +0x83, 0x20, 0x00, 0x80, 0xAD, 0x2D, 0x00, 0x80, +0x95, 0x2E, 0x00, 0x80, 0x0F, 0x2E, 0x00, 0x80, +0x95, 0x2E, 0x00, 0x80, 0x55, 0x2D, 0x00, 0x80, +0x95, 0x2E, 0x00, 0x80, 0x95, 0x2E, 0x00, 0x80, +0x95, 0x2E, 0x00, 0x80, 0x77, 0x2E, 0x00, 0x80, +0x95, 0x2E, 0x00, 0x80, 0x95, 0x2E, 0x00, 0x80, +0x95, 0x2E, 0x00, 0x80, 0xEF, 0x2C, 0x00, 0x80, +0x0B, 0x36, 0x00, 0x80, 0x15, 0x36, 0x00, 0x80, +0x1F, 0x36, 0x00, 0x80, 0x29, 0x36, 0x00, 0x80, +0x33, 0x36, 0x00, 0x80, 0x7B, 0x37, 0x00, 0x80, +0x9B, 0x37, 0x00, 0x80, 0xBB, 0x37, 0x00, 0x80, +0xDB, 0x37, 0x00, 0x80, 0xFB, 0x37, 0x00, 0x80, +0xB3, 0x0B, 0x00, 0x80, 0xBD, 0x0B, 0x00, 0x80, +0xC7, 0x0B, 0x00, 0x80, 0xD1, 0x0B, 0x00, 0x80, +0xDB, 0x0B, 0x00, 0x80, 0x7D, 0x41, 0x00, 0x80, +0x77, 0x41, 0x00, 0x80, 0x83, 0x41, 0x00, 0x80, +0x89, 0x41, 0x00, 0x80, 0x8F, 0x41, 0x00, 0x80, +0x95, 0x41, 0x00, 0x80, 0x19, 0x32, 0x64, 0x00, +0x01, 0xB3, 0x00, 0x80, 0x3F, 0xB3, 0x00, 0x80, +0x09, 0xB3, 0x00, 0x80, 0x37, 0xB3, 0x00, 0x80, +0x45, 0xB3, 0x00, 0x80, 0x45, 0xB3, 0x00, 0x80, +0x11, 0xB3, 0x00, 0x80, 0x19, 0xB3, 0x00, 0x80, +0x21, 0xB3, 0x00, 0x80, 0x29, 0xB3, 0x00, 0x80, +0x45, 0xB3, 0x00, 0x80, 0x31, 0xB3, 0x00, 0x80, +0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0A, 0x0A, +0x0A, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0C, 0x14, +0x1C, 0x24, 0x2C, 0x36, 0x40, 0x00, 0x00, 0x00, +0xC1, 0xEB, 0x00, 0x80, 0xD7, 0xEB, 0x00, 0x80, +0xC1, 0xEB, 0x00, 0x80, 0xD7, 0xEB, 0x00, 0x80, +0xC1, 0xEB, 0x00, 0x80, 0xD7, 0xEB, 0x00, 0x80, +0x01, 0xEC, 0x00, 0x80, 0x01, 0xEC, 0x00, 0x80, +0x01, 0xEC, 0x00, 0x80, 0xC5, 0xEB, 0x00, 0x80, +0xE9, 0xEB, 0x00, 0x80, 0xE9, 0xEB, 0x00, 0x80, +0xC5, 0xEB, 0x00, 0x80, 0x15, 0xEC, 0x00, 0x80, +0x2B, 0xEC, 0x00, 0x80, 0x06, 0x07, 0x08, 0x09, +0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, +0x12, 0x13, 0x14, 0x00, 0x24, 0x24, 0x28, 0x24, +0x14, 0x12, 0x0F, 0x0F, 0x10, 0x0E, 0x09, 0x08, +0x18, 0x18, 0x11, 0x0F, 0x10, 0x0C, 0x09, 0x08, +0x18, 0x18, 0x11, 0x0F, 0x10, 0x0C, 0x09, 0x08, +0x18, 0x18, 0x11, 0x0F, 0x10, 0x0C, 0x09, 0x08, +0x18, 0x18, 0x11, 0x0F, 0x10, 0x0C, 0x09, 0x08, +0x18, 0x18, 0x11, 0x0F, 0x10, 0x0C, 0x09, 0x08, +0x0A, 0x07, 0x18, 0x18, 0x11, 0x0F, 0x10, 0x0C, +0x09, 0x08, 0x0A, 0x07, 0x18, 0x18, 0x11, 0x0F, +0x10, 0x0C, 0x09, 0x08, 0x0A, 0x07, 0x0A, 0x0A, +0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, +0x30, 0x30, 0x3C, 0x30, 0x2D, 0x23, 0x19, 0x1E, +0x19, 0x1E, 0x19, 0x0F, 0x30, 0x30, 0x23, 0x1C, +0x20, 0x1A, 0x0F, 0x0E, 0x30, 0x30, 0x23, 0x1C, +0x20, 0x1A, 0x0F, 0x0E, 0x30, 0x30, 0x23, 0x1C, +0x20, 0x1A, 0x0F, 0x0D, 0x30, 0x30, 0x23, 0x1C, +0x20, 0x1A, 0x0F, 0x0D, 0x30, 0x30, 0x23, 0x1C, +0x23, 0x1B, 0x0F, 0x0F, 0x14, 0x0F, 0x30, 0x30, +0x23, 0x1C, 0x23, 0x1B, 0x0F, 0x0F, 0x14, 0x0F, +0x30, 0x2A, 0x23, 0x1C, 0x23, 0x1B, 0x0F, 0x0F, +0x14, 0x0F, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, +0x0A, 0x0A, 0x0A, 0x0A, 0x67, 0x4A, 0x00, 0x80, +0x63, 0x4A, 0x00, 0x80, 0x6D, 0x4A, 0x00, 0x80, +0x71, 0x4A, 0x00, 0x80, 0x75, 0x4A, 0x00, 0x80, +0x7B, 0x4A, 0x00, 0x80, 0x83, 0x4A, 0x00, 0x80, +0xAD, 0x4A, 0x00, 0x80, 0x0F, 0x0F, 0x00, 0x80, +0x0B, 0x0F, 0x00, 0x80, 0x0F, 0x0F, 0x00, 0x80, +0x0B, 0x0F, 0x00, 0x80, 0x2F, 0x0F, 0x00, 0x80, +0x0B, 0x0F, 0x00, 0x80, 0x2F, 0x0F, 0x00, 0x80, +0x0B, 0x0F, 0x00, 0x80, 0x4F, 0x0F, 0x00, 0x80, +0x0B, 0x0F, 0x00, 0x80, 0x4F, 0x0F, 0x00, 0x80, +0x0B, 0x0F, 0x00, 0x80, 0x6F, 0x0F, 0x00, 0x80, +0x0B, 0x0F, 0x00, 0x80, 0x6F, 0x0F, 0x00, 0x80, +0x93, 0x10, 0x00, 0x80, 0x97, 0x10, 0x00, 0x80, +0x9B, 0x10, 0x00, 0x80, 0x9F, 0x10, 0x00, 0x80, +0xA3, 0x10, 0x00, 0x80, 0xB1, 0x17, 0x00, 0x80, +0xD3, 0x17, 0x00, 0x80, 0xF5, 0x17, 0x00, 0x80, +0x17, 0x18, 0x00, 0x80, 0x3B, 0x18, 0x00, 0x80, +0x75, 0x18, 0x00, 0x80, 0x99, 0x18, 0x00, 0x80, +0xBD, 0x18, 0x00, 0x80, 0xE1, 0x18, 0x00, 0x80, +0x07, 0x19, 0x00, 0x80, 0x67, 0x6B, 0x00, 0x80, +0x67, 0x6B, 0x00, 0x80, 0x67, 0x6B, 0x00, 0x80, +0x75, 0x6B, 0x00, 0x80, 0x83, 0x6B, 0x00, 0x80, +0xB9, 0x6B, 0x00, 0x80, 0x0F, 0x6C, 0x00, 0x80, +0x1D, 0x6C, 0x00, 0x80, 0x5F, 0x6C, 0x00, 0x80, +0xA9, 0x6C, 0x00, 0x80, 0x5F, 0x6C, 0x00, 0x80, +0x01, 0x6D, 0x00, 0x80, 0xF9, 0x14, 0x00, 0x80, +0xF9, 0x14, 0x00, 0x80, 0xF9, 0x14, 0x00, 0x80, +0xF9, 0x14, 0x00, 0x80, 0x19, 0x15, 0x00, 0x80, +0x19, 0x15, 0x00, 0x80, 0x19, 0x15, 0x00, 0x80, +0x19, 0x15, 0x00, 0x80, 0x39, 0x15, 0x00, 0x80, +0x39, 0x15, 0x00, 0x80, 0x39, 0x15, 0x00, 0x80, +0x39, 0x15, 0x00, 0x80, 0x59, 0x15, 0x00, 0x80, +0x59, 0x15, 0x00, 0x80, 0x59, 0x15, 0x00, 0x80, +0x59, 0x15, 0x00, 0x80, 0x73, 0x78, 0x00, 0x80, +0x83, 0x78, 0x00, 0x80, 0x8D, 0x78, 0x00, 0x80, +0x97, 0x78, 0x00, 0x80, 0xA9, 0x78, 0x00, 0x80, +0x29, 0x86, 0x00, 0x80, 0x4F, 0x86, 0x00, 0x80, +0xE1, 0x86, 0x00, 0x80, 0xE1, 0x86, 0x00, 0x80, +0x71, 0x86, 0x00, 0x80, 0x97, 0x86, 0x00, 0x80, +0xA7, 0x86, 0x00, 0x80, 0xD1, 0x86, 0x00, 0x80, +0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, +0x0B, 0x02, 0x02, 0x02, 0x0E, 0x00, 0x00, 0x00, +0x4B, 0xA1, 0x00, 0x80, 0x73, 0xA1, 0x00, 0x80, +0x99, 0xA1, 0x00, 0x80, 0xBF, 0xA1, 0x00, 0x80, +0xE5, 0xA1, 0x00, 0x80, 0x54, 0x05, 0x64, 0xB8, +0x50, 0x05, 0x64, 0xB8, 0x51, 0x05, 0x64, 0xB8, +0x78, 0x05, 0x64, 0xB8, 0x79, 0x05, 0x64, 0xB8, +0x7A, 0x05, 0x64, 0xB8, 0xFF, 0xFF, 0xFF, 0x8F, +0x60, 0x05, 0x60, 0xB8, 0x60, 0x05, 0x64, 0xB8, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, +0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x40, +0xBF, 0x01, 0x64, 0xB8, 0x89, 0x00, 0x60, 0xB8, +0x8A, 0x00, 0x60, 0xB8, 0x1A, 0x04, 0x64, 0xB8, +0x1B, 0x04, 0x64, 0xB8, 0x87, 0x02, 0x64, 0xB8, +0x96, 0x02, 0x64, 0xB8, 0x86, 0x02, 0x64, 0xB8, +0x58, 0x05, 0x64, 0xB8, 0x22, 0x05, 0x64, 0xB8, +0x00, 0x00, 0x1E, 0x00, 0x0A, 0x06, 0x64, 0xB8, +0x57, 0x01, 0x64, 0xB8, 0x3C, 0x01, 0x64, 0xB8, +0x5B, 0x01, 0x64, 0xB8, 0xFE, 0x11, 0x64, 0xB8, +0xA8, 0x06, 0x64, 0xB8, 0x10, 0x07, 0x64, 0xB8, +0x00, 0x16, 0x64, 0xB8, 0x04, 0x16, 0x64, 0xB8, +0x08, 0x16, 0x64, 0xB8, 0xAB, 0x06, 0x64, 0xB8, +0xAA, 0x06, 0x64, 0xB8, 0x13, 0x07, 0x64, 0xB8, +0x12, 0x07, 0x64, 0xB8, 0x03, 0x16, 0x64, 0xB8, +0x02, 0x16, 0x64, 0xB8, 0x07, 0x16, 0x64, 0xB8, +0x06, 0x16, 0x64, 0xB8, 0x0B, 0x16, 0x64, 0xB8, +0x0A, 0x16, 0x64, 0xB8, 0xFC, 0x11, 0x64, 0xB8, +0x04, 0x06, 0x64, 0xB8, 0xFF, 0xFF, 0xFF, 0xFE, +0x00, 0x00, 0x00, 0x01, 0x0D, 0x00, 0x78, 0xB8, +0x12, 0x00, 0x78, 0xB8, 0x11, 0x00, 0x78, 0xB8, +0x06, 0x00, 0x78, 0xB8, 0xA7, 0x04, 0x64, 0xB8, +0xA6, 0x04, 0x64, 0xB8, 0xA5, 0x04, 0x64, 0xB8, +0xA4, 0x04, 0x64, 0xB8, 0x14, 0x00, 0x78, 0xB8, +0x09, 0x00, 0x78, 0xB8, 0x29, 0x00, 0x78, 0xB8, +0x2A, 0x00, 0x78, 0xB8, 0x2B, 0x00, 0x78, 0xB8, +0x1D, 0x04, 0x64, 0xB8, 0x7A, 0x04, 0x64, 0xB8, +0x24, 0x04, 0x64, 0xB8, 0x10, 0x05, 0x64, 0xB8, +0x11, 0x05, 0x64, 0xB8, 0x88, 0x00, 0x60, 0xB8, +0x8B, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x60, 0xB8, +0x00, 0x00, 0x64, 0xB8, 0x00, 0x00, 0x00, 0x03, +0x00, 0x00, 0x00, 0x42, 0xE0, 0x00, 0x60, 0xB8, +0xFF, 0xFF, 0xFF, 0xFD, 0xE3, 0x00, 0x60, 0xB8, +0xE1, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x00, 0x60, +0xE8, 0x12, 0x64, 0xB8, 0xF8, 0x10, 0x60, 0xB8, +0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, +0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xFF, 0xFB, +0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0x1F, +0x04, 0x00, 0x60, 0xB8, 0x04, 0x00, 0x64, 0xB8, +0x08, 0x00, 0x60, 0xB8, 0x08, 0x00, 0x64, 0xB8, +0x80, 0x00, 0x60, 0xB8, 0xFC, 0x10, 0x60, 0xB8, +0xFA, 0xFA, 0xFA, 0xFA, 0x4C, 0x04, 0x64, 0xB8, +0x50, 0x04, 0x64, 0xB8, 0x8C, 0x04, 0x64, 0xB8, +0x90, 0x04, 0x64, 0xB8, 0x94, 0x04, 0x64, 0xB8, +0x98, 0x04, 0x64, 0xB8, 0x9C, 0x04, 0x64, 0xB8, +0xA0, 0x04, 0x64, 0xB8, 0xA8, 0x04, 0x64, 0xB8, +0xC0, 0x01, 0x64, 0xB8, 0xC4, 0x01, 0x64, 0xB8, +0xB8, 0x01, 0x64, 0xB8, 0x00, 0x0C, 0x01, 0x00, +0x01, 0x00, 0x66, 0xB8, 0x00, 0x00, 0x66, 0xB8, +0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0x66, 0xB8, +0x04, 0x1C, 0x66, 0xB8, 0xCD, 0x9B, 0x78, 0x56, +0x00, 0xF0, 0x0F, 0x00, 0x00, 0xF0, 0x3F, 0x00, +0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xC0, 0xFF, +0x00, 0x00, 0x00, 0xF0, 0x00, 0xFC, 0x0F, 0x00, +0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x01, 0x06, +0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x38, +0xE0, 0x80, 0x03, 0x00, 0x00, 0x00, 0x30, 0xC0, +0x00, 0x03, 0x0C, 0x00, 0x4A, 0x04, 0x64, 0xB8, +0x49, 0x04, 0x64, 0xB8, 0x01, 0x00, 0x60, 0xB8, +0x01, 0x00, 0x64, 0xB8, 0x02, 0x00, 0x60, 0xB8, +0x02, 0x00, 0x64, 0xB8, 0x03, 0x00, 0x60, 0xB8, +0x03, 0x00, 0x64, 0xB8, 0x23, 0x04, 0x64, 0xB8, +0x30, 0x04, 0x64, 0xB8, 0x34, 0x04, 0x64, 0xB8, +0x01, 0x02, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, +0x53, 0x04, 0x64, 0xB8, 0x2D, 0x04, 0x64, 0xB8, +0xCF, 0x04, 0x64, 0xB8, 0xF0, 0x10, 0x60, 0xB8, +0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0C, +0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x0F, 0x00, +0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xC0, 0x00, +0x06, 0x00, 0x66, 0xB8, 0x51, 0x04, 0x64, 0xB8, +0x52, 0x04, 0x64, 0xB8, 0x20, 0x04, 0x64, 0xB8, +0x01, 0x1C, 0x66, 0xB8, 0x02, 0x1C, 0x66, 0xB8, +0x03, 0x1C, 0x66, 0xB8, 0x05, 0x1C, 0x66, 0xB8, +0x06, 0x1C, 0x66, 0xB8, 0x07, 0x1C, 0x66, 0xB8, +0x07, 0x10, 0x66, 0xB8, 0x00, 0x10, 0x66, 0xB8, +0x04, 0x10, 0x66, 0xB8, 0x05, 0x10, 0x66, 0xB8, +0x02, 0x10, 0x66, 0xB8, 0x01, 0x10, 0x66, 0xB8, +0x06, 0x10, 0x66, 0xB8, 0xA3, 0x00, 0x60, 0xB8, +0xA0, 0x00, 0x60, 0xB8, 0x65, 0x07, 0x64, 0xB8, +0x40, 0x00, 0x60, 0xB8, 0x68, 0x00, 0x60, 0xB8, +0x6E, 0x07, 0x64, 0xB8, 0xCC, 0x06, 0x64, 0xB8, +0x64, 0x07, 0x64, 0xB8, 0x23, 0x05, 0x64, 0xB8, +0x64, 0x00, 0x60, 0xB8, 0xFF, 0xFF, 0x40, 0xFF, +0xFF, 0xFF, 0xFF, 0xE0, 0x28, 0x00, 0x60, 0xB8, +0x24, 0x00, 0x60, 0xB8, 0xFF, 0xFF, 0xFF, 0x81, +0x00, 0x00, 0x70, 0xB8, 0x18, 0x00, 0x70, 0xB8, +0x0B, 0x00, 0x70, 0xB8, 0x00, 0x00, 0x08, 0x00, +0x02, 0x00, 0x70, 0xB8, 0x1C, 0x01, 0x64, 0xB8, +0x94, 0x02, 0x64, 0xB8, 0x97, 0x02, 0x64, 0xB8, +0x1C, 0x04, 0x64, 0xB8, 0xCC, 0x01, 0x64, 0xB8, +0xD4, 0x04, 0x60, 0xB8, 0xD4, 0x04, 0x64, 0xB8, +0x84, 0x04, 0x60, 0xB8, 0x84, 0x04, 0x64, 0xB8, +0xC8, 0x04, 0x60, 0xB8, 0xC8, 0x04, 0x64, 0xB8, +0x78, 0x04, 0x60, 0xB8, 0x78, 0x04, 0x64, 0xB8, +0x30, 0x01, 0x64, 0xB8, 0x27, 0x05, 0x64, 0xB8, +0xB5, 0x05, 0x64, 0xB8, 0xB7, 0x05, 0x64, 0xB8, +0x3C, 0x11, 0x64, 0xB8, 0x40, 0x05, 0x64, 0xB8, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x05, +0x64, 0x01, 0x64, 0xB8, 0x53, 0x05, 0x64, 0xB8, +0x77, 0x05, 0x64, 0xB8, 0x68, 0x05, 0x64, 0xB8, +0x94, 0x01, 0x64, 0xB8, 0x34, 0x01, 0x64, 0xB8, +0x24, 0x01, 0x64, 0xB8, 0x20, 0x01, 0x64, 0xB8, +0x24, 0x11, 0x64, 0xB8, 0x20, 0x11, 0x64, 0xB8, +0x2C, 0x11, 0x64, 0xB8, 0x28, 0x11, 0x64, 0xB8, +0x34, 0x11, 0x64, 0xB8, 0x30, 0x11, 0x64, 0xB8, +0x38, 0x01, 0x64, 0xB8, 0x38, 0x11, 0x64, 0xB8, +0x50, 0x00, 0x60, 0xB8, 0x54, 0x00, 0x60, 0xB8, +0x00, 0x40, 0xE0, 0x03, 0x9A, 0x01, 0x64, 0xB8, +0x99, 0x01, 0x64, 0xB8, 0xC7, 0x01, 0x64, 0xB8, +0xC6, 0x01, 0x64, 0xB8, 0xE0, 0x12, 0x64, 0xB8, +0xF0, 0x00, 0x60, 0xB8, 0x09, 0x02, 0x64, 0xB8, +0x00, 0x00, 0x78, 0xB8, 0xF0, 0x14, 0x88, 0x47, +0x06, 0x01, 0x64, 0xB8, 0x67, 0x05, 0x64, 0xB8, +0x66, 0x05, 0x64, 0xB8, 0x65, 0x05, 0x64, 0xB8, +0x64, 0x05, 0x64, 0xB8, 0x63, 0x05, 0x64, 0xB8, +0x62, 0x05, 0x64, 0xB8, 0x61, 0x05, 0x64, 0xB8, +0xE0, 0x04, 0x64, 0xB8, 0x2F, 0x01, 0x64, 0xB8, +0x00, 0x28, 0x64, 0xB8, 0x00, 0x2C, 0x64, 0xB8, +0x00, 0x38, 0x64, 0xB8, 0x00, 0x3C, 0x64, 0xB8, +0x54, 0x04, 0x64, 0xB8, 0x68, 0x06, 0x64, 0xB8, +0x69, 0x06, 0x64, 0xB8, 0x77, 0x77, 0x77, 0x77, +0x00, 0x00, 0xF0, 0x3F, 0x70, 0x77, 0x33, 0x54, +0x00, 0x00, 0x10, 0x00, 0x17, 0x77, 0x33, 0x77, +0x77, 0x77, 0x33, 0x77, 0x17, 0x77, 0x33, 0x54, +0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x33, 0x00, +0xC3, 0x03, 0x30, 0x00, 0x00, 0x02, 0x30, 0x00, +0x00, 0x00, 0x1C, 0x00, 0x01, 0x02, 0x30, 0x00, +0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x80, 0x01, +0x02, 0x02, 0x30, 0x00, 0x00, 0x00, 0x40, 0x01, +0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, +0x83, 0x04, 0x64, 0xB8, 0x00, 0x00, 0xFE, 0x1F, +0x00, 0x03, 0x07, 0x00, 0xFF, 0x03, 0x07, 0x00, +0x83, 0x00, 0x60, 0xB8, 0x90, 0x00, 0x60, 0xB8, +0x92, 0x06, 0x64, 0xB8, 0x08, 0x01, 0x64, 0xB8, +0x92, 0x00, 0x60, 0xB8, 0xF8, 0x05, 0x64, 0xB8, +0xF9, 0x05, 0x64, 0xB8, 0xFA, 0x05, 0x64, 0xB8, +0xFB, 0x05, 0x64, 0xB8, 0x38, 0x00, 0x78, 0xB8, +0x1F, 0x07, 0x64, 0xB8, 0x1C, 0x07, 0x64, 0xB8, +0x2C, 0x04, 0x64, 0xB8, 0x28, 0x00, 0x78, 0xB8, +0x1F, 0x04, 0x64, 0xB8, 0x5F, 0x01, 0x64, 0xB8, +0xB8, 0x05, 0x64, 0xB8, 0xBC, 0x05, 0x64, 0xB8, +0x5F, 0x11, 0x64, 0xB8, 0x4C, 0x00, 0x00, 0xB5, +0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x04, 0x04, +0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x10, 0x10, +0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x40, 0x40, +0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x20, 0x00, +0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, +0x00, 0x00, 0x04, 0x00, 0x7E, 0x04, 0x64, 0xB8, +0x21, 0x04, 0x64, 0xB8, 0x7D, 0x04, 0x64, 0xB8, +0x7C, 0x04, 0x64, 0xB8, 0xF4, 0x00, 0x60, 0xB8, +0x00, 0x01, 0x64, 0xB8, 0x9B, 0x01, 0x64, 0xB8, +0x98, 0x01, 0x64, 0xB8, 0xC0, 0xA3, 0x02, 0x80, +0xC0, 0xA7, 0x02, 0x80, 0x00, 0xC0, 0x00, 0x80, +0x73, 0x05, 0x64, 0xB8, 0x01, 0x01, 0x64, 0xB8, +0xB7, 0x06, 0x64, 0xB8, 0xB4, 0x06, 0x64, 0xB8, +0x02, 0x10, 0x60, 0xB8, 0xF0, 0xFF, 0x03, 0x00, +0x78, 0x07, 0x64, 0xB8, 0xBC, 0x1A, 0x64, 0xB8, +0x00, 0x00, 0x62, 0x76, 0x00, 0x00, 0x72, 0x77, +0x00, 0x00, 0x71, 0x77, 0x08, 0x34, 0x00, 0xB8, +0x00, 0x34, 0x00, 0xB8, 0x01, 0x34, 0x00, 0xB8, +0x02, 0x34, 0x00, 0xB8, 0x18, 0x34, 0x00, 0xB8, +0x10, 0x34, 0x00, 0xB8, 0x8D, 0xE7, 0xFF, 0x47, +0x70, 0x07, 0x64, 0xB8, 0x74, 0x07, 0x64, 0xB8, +0x20, 0x34, 0x00, 0xB8, 0x2C, 0x00, 0x78, 0xB8, +0xC4, 0x06, 0x64, 0xB8, 0xFF, 0xFF, 0xFF, 0xEF, +0xFF, 0xFF, 0xCF, 0xFF, 0x5C, 0x05, 0x64, 0xB8, +0x38, 0x06, 0x64, 0xB8, 0x31, 0x00, 0x60, 0xB8, +0x32, 0x00, 0x60, 0xB8, 0x33, 0x00, 0x60, 0xB8, +0x30, 0x00, 0x60, 0xB8, 0xB2, 0x05, 0x64, 0xB8, +0xB3, 0x05, 0x64, 0xB8, 0x43, 0x05, 0x64, 0xB8, +0x7D, 0x05, 0x64, 0xB8, 0x7F, 0x05, 0x64, 0xB8, +0x20, 0x00, 0x78, 0xB8, 0x10, 0x00, 0x78, 0xB8, +0x03, 0x00, 0x78, 0xB8, 0xFF, 0xFF, 0x01, 0xFF, +0x05, 0x00, 0x78, 0xB8, 0x12, 0x05, 0x64, 0xB8, +0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, +0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, +0x00, 0x00, 0x00, 0x00, 0x53, 0x65, 0x74, 0x5F, +0x43, 0x61, 0x6E, 0x64, 0x69, 0x5F, 0x33, 0x3A, +0x20, 0x5B, 0x31, 0x5D, 0x3D, 0x30, 0x78, 0x25, +0x62, 0x58, 0x2C, 0x20, 0x20, 0x5B, 0x32, 0x5D, +0x3D, 0x30, 0x78, 0x25, 0x62, 0x58, 0x2C, 0x20, +0x20, 0x5B, 0x33, 0x5D, 0x3D, 0x30, 0x78, 0x25, +0x62, 0x58, 0x00, 0x00, 0x53, 0x65, 0x74, 0x5F, +0x43, 0x61, 0x6E, 0x64, 0x69, 0x5F, 0x32, 0x3A, +0x20, 0x5B, 0x31, 0x5D, 0x3D, 0x30, 0x78, 0x25, +0x62, 0x58, 0x2C, 0x20, 0x20, 0x5B, 0x32, 0x5D, +0x3D, 0x30, 0x78, 0x25, 0x62, 0x58, 0x20, 0x00, +0x4D, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x62, 0x44, +0x52, 0x61, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x62, +0x44, 0x50, 0x54, 0x3A, 0x25, 0x62, 0x78, 0x2C, +0x52, 0x61, 0x49, 0x64, 0x3A, 0x25, 0x62, 0x78, +0x2C, 0x49, 0x6E, 0x69, 0x42, 0x77, 0x3A, 0x25, +0x62, 0x78, 0x2C, 0x42, 0x77, 0x53, 0x65, 0x74, +0x25, 0x62, 0x78, 0x2C, 0x62, 0x53, 0x47, 0x3A, +0x25, 0x62, 0x78, 0x2C, 0x56, 0x45, 0x4E, 0x3A, +0x25, 0x62, 0x78, 0x00, 0x4D, 0x61, 0x73, 0x6B, +0x30, 0x20, 0x25, 0x78, 0x00, 0x00, 0x00, 0x00, +0x53, 0x65, 0x74, 0x5F, 0x50, 0x6E, 0x74, 0x79, +0x00, 0x00, 0x00, 0x00, 0x53, 0x65, 0x74, 0x5F, +0x52, 0x41, 0x5F, 0x55, 0x70, 0x5F, 0x72, 0x61, +0x74, 0x69, 0x6F, 0x5F, 0x66, 0x6F, 0x72, 0x5F, +0x52, 0x41, 0x5F, 0x64, 0x65, 0x62, 0x75, 0x67, +0x00, 0x00, 0x00, 0x00, 0x53, 0x65, 0x74, 0x5F, +0x44, 0x6F, 0x77, 0x6E, 0x5F, 0x72, 0x61, 0x74, +0x69, 0x6F, 0x00, 0x00, 0x76, 0x61, 0x6C, 0x75, +0x65, 0x38, 0x3D, 0x30, 0x78, 0x25, 0x62, 0x58, +0x2C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x31, +0x36, 0x3D, 0x30, 0x78, 0x25, 0x77, 0x78, 0x2C, +0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x33, 0x32, +0x3D, 0x30, 0x78, 0x25, 0x78, 0x00, 0x00, 0x00, +0x48, 0x32, 0x43, 0x42, 0x46, 0x45, 0x6E, 0x74, +0x00, 0x00, 0x00, 0x00, 0x45, 0x6E, 0x3A, 0x25, +0x62, 0x78, 0x20, 0x4E, 0x63, 0x3A, 0x25, 0x62, +0x78, 0x20, 0x4D, 0x3A, 0x25, 0x62, 0x78, 0x00, +0x44, 0x69, 0x73, 0x3A, 0x25, 0x62, 0x78, 0x20, +0x4E, 0x63, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x4D, +0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x20, +0x53, 0x74, 0x61, 0x72, 0x74, 0x62, 0x79, 0x52, +0x53, 0x53, 0x49, 0x3A, 0x25, 0x62, 0x58, 0x20, +0x25, 0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x00, +0x52, 0x53, 0x53, 0x49, 0x43, 0x4D, 0x44, 0x3A, +0x25, 0x62, 0x58, 0x20, 0x25, 0x62, 0x78, 0x20, +0x25, 0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x00, +0x52, 0x53, 0x53, 0x49, 0x43, 0x4D, 0x44, 0x20, +0x44, 0x72, 0x76, 0x46, 0x69, 0x78, 0x3A, 0x25, +0x62, 0x58, 0x20, 0x25, 0x62, 0x78, 0x20, 0x25, +0x62, 0x78, 0x00, 0x00, 0x4D, 0x3A, 0x25, 0x62, +0x58, 0x2C, 0x52, 0x3A, 0x25, 0x62, 0x58, 0x2C, +0x25, 0x62, 0x78, 0x2C, 0x25, 0x62, 0x78, 0x2C, +0x25, 0x62, 0x78, 0x2C, 0x20, 0x25, 0x78, 0x00, +0x4D, 0x74, 0x42, 0x77, 0x20, 0x55, 0x70, 0x44, +0x77, 0x25, 0x62, 0x78, 0x20, 0x42, 0x57, 0x25, +0x62, 0x78, 0x20, 0x52, 0x74, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x48, 0x69, 0x74, 0x25, +0x62, 0x78, 0x20, 0x52, 0x74, 0x30, 0x3D, 0x25, +0x77, 0x78, 0x20, 0x52, 0x74, 0x31, 0x3D, 0x25, +0x77, 0x78, 0x00, 0x00, 0x52, 0x41, 0x3A, 0x4F, +0x46, 0x44, 0x4D, 0x25, 0x62, 0x58, 0x00, 0x00, +0x52, 0x41, 0x3A, 0x43, 0x43, 0x4B, 0x25, 0x62, +0x58, 0x00, 0x00, 0x00, 0x52, 0x41, 0x3A, 0x56, +0x31, 0x2D, 0x4D, 0x25, 0x62, 0x58, 0x00, 0x00, +0x52, 0x41, 0x3A, 0x56, 0x32, 0x2D, 0x4D, 0x25, +0x62, 0x58, 0x00, 0x00, 0x52, 0x41, 0x3A, 0x56, +0x33, 0x2D, 0x4D, 0x25, 0x62, 0x58, 0x00, 0x00, +0x52, 0x41, 0x3A, 0x48, 0x2D, 0x4D, 0x25, 0x62, +0x58, 0x00, 0x00, 0x00, 0x52, 0x41, 0x3A, 0x48, +0x2D, 0x4D, 0x31, 0x2C, 0x25, 0x62, 0x58, 0x00, +0x52, 0x41, 0x3A, 0x48, 0x2D, 0x4D, 0x32, 0x2C, +0x25, 0x62, 0x58, 0x00, 0x53, 0x74, 0x6F, 0x72, +0x45, 0x6E, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x42, +0x46, 0x63, 0x74, 0x72, 0x6C, 0x3A, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x57, 0x72, 0x69, 0x74, +0x65, 0x45, 0x6E, 0x3A, 0x25, 0x62, 0x78, 0x20, +0x42, 0x46, 0x63, 0x74, 0x72, 0x6C, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x52, 0x65, 0x63, 0x45, +0x6E, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x42, 0x46, +0x63, 0x74, 0x72, 0x6C, 0x3A, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x53, 0x6E, 0x64, 0x44, +0x20, 0x4D, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x52, +0x3A, 0x25, 0x62, 0x78, 0x20, 0x52, 0x25, 0x62, +0x78, 0x20, 0x43, 0x74, 0x3A, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x41, 0x70, 0x70, 0x6C, +0x56, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x4E, 0x61, 0x70, 0x70, 0x6C, 0x56, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x43, 0x68, 0x54, 0x78, +0x42, 0x46, 0x73, 0x74, 0x73, 0x20, 0x4D, 0x3A, +0x25, 0x62, 0x78, 0x20, 0x45, 0x6E, 0x74, 0x3A, +0x25, 0x62, 0x78, 0x20, 0x52, 0x61, 0x3A, 0x25, +0x62, 0x78, 0x20, 0x4E, 0x63, 0x3A, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x45, 0x72, 0x72, 0x4E, +0x63, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x43, 0x6F, 0x72, 0x72, 0x4E, 0x63, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x53, 0x6E, 0x64, 0x44, +0x6F, 0x6E, 0x53, 0x75, 0x00, 0x00, 0x00, 0x00, +0x53, 0x6E, 0x64, 0x44, 0x6F, 0x6E, 0x46, 0x61, +0x00, 0x00, 0x00, 0x00, 0x53, 0x65, 0x61, 0x72, +0x63, 0x68, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x25, +0x62, 0x78, 0x2C, 0x25, 0x62, 0x78, 0x00, 0x00, +0x42, 0x47, 0x20, 0x3A, 0x25, 0x62, 0x78, 0x20, +0x2C, 0x20, 0x6E, 0x75, 0x6D, 0x74, 0x72, 0x79, +0x3A, 0x20, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x53, 0x54, 0x42, 0x43, 0x20, 0x6F, 0x6E, 0x00, +0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x25, 0x62, +0x58, 0x20, 0x00, 0x00, 0x72, 0x61, 0x74, 0x65, +0x3A, 0x20, 0x25, 0x62, 0x58, 0x00, 0x00, 0x00, +0x49, 0x44, 0x3A, 0x25, 0x62, 0x58, 0x00, 0x00, +0x52, 0x5B, 0x30, 0x3A, 0x34, 0x5D, 0x20, 0x25, +0x62, 0x58, 0x20, 0x2C, 0x20, 0x25, 0x62, 0x58, +0x2C, 0x20, 0x25, 0x62, 0x58, 0x2C, 0x20, 0x25, +0x62, 0x58, 0x2C, 0x20, 0x25, 0x62, 0x58, 0x20, +0x00, 0x00, 0x00, 0x00, 0x55, 0x3A, 0x20, 0x25, +0x62, 0x58, 0x20, 0x00, 0x54, 0x47, 0x3A, 0x20, +0x25, 0x62, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, +0x54, 0x47, 0x70, 0x61, 0x74, 0x68, 0x3A, 0x20, +0x25, 0x62, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, +0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x3A, +0x20, 0x25, 0x62, 0x58, 0x20, 0x00, 0x00, 0x00, +0x44, 0x54, 0x50, 0x5F, 0x65, 0x6E, 0x64, 0x00, +0x53, 0x65, 0x74, 0x52, 0x5F, 0x4E, 0x54, 0x3A, +0x25, 0x62, 0x58, 0x20, 0x25, 0x62, 0x78, 0x20, +0x25, 0x62, 0x78, 0x00, 0x54, 0x72, 0x25, 0x62, +0x78, 0x2C, 0x25, 0x62, 0x78, 0x2C, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x53, 0x65, 0x74, 0x52, +0x5F, 0x54, 0x3A, 0x25, 0x62, 0x58, 0x20, 0x25, +0x62, 0x58, 0x20, 0x25, 0x62, 0x78, 0x20, 0x25, +0x62, 0x78, 0x00, 0x00, 0x52, 0x61, 0x55, 0x70, +0x00, 0x00, 0x00, 0x00, 0x31, 0x72, 0x61, 0x25, +0x62, 0x78, 0x00, 0x00, 0x30, 0x55, 0x70, 0x64, +0x74, 0x5F, 0x42, 0x57, 0x3D, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0x61, 0x25, +0x62, 0x78, 0x00, 0x00, 0x33, 0x72, 0x61, 0x25, +0x62, 0x78, 0x00, 0x00, 0x34, 0x72, 0x61, 0x25, +0x62, 0x78, 0x00, 0x00, 0x35, 0x72, 0x61, 0x25, +0x62, 0x78, 0x00, 0x00, 0x52, 0x61, 0x44, 0x6E, +0x00, 0x00, 0x00, 0x00, 0x52, 0x64, 0x53, 0x3A, +0x25, 0x62, 0x78, 0x2C, 0x25, 0x62, 0x78, 0x2C, +0x25, 0x62, 0x78, 0x00, 0x46, 0x57, 0x46, 0x69, +0x78, 0x00, 0x00, 0x00, 0x50, 0x43, 0x52, 0x3A, +0x25, 0x62, 0x78, 0x00, 0x62, 0x54, 0x52, 0x59, +0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x54, 0x72, 0x44, 0x6F, 0x6E, 0x43, 0x6E, 0x25, +0x62, 0x78, 0x00, 0x00, 0x45, 0x72, 0x72, 0x6F, +0x72, 0x31, 0x00, 0x00, 0x50, 0x6B, 0x74, 0x3A, +0x25, 0x62, 0x58, 0x2C, 0x25, 0x62, 0x58, 0x2C, +0x25, 0x62, 0x58, 0x00, 0x46, 0x44, 0x3A, 0x20, +0x52, 0x44, 0x00, 0x00, 0x46, 0x44, 0x3A, 0x20, +0x44, 0x72, 0x6F, 0x70, 0x00, 0x00, 0x00, 0x00, +0x46, 0x44, 0x3A, 0x20, 0x52, 0x55, 0x00, 0x00, +0x4D, 0x25, 0x62, 0x78, 0x20, 0x52, 0x25, 0x62, +0x78, 0x20, 0x53, 0x50, 0x25, 0x77, 0x78, 0x20, +0x52, 0x50, 0x25, 0x77, 0x78, 0x20, 0x54, 0x50, +0x25, 0x77, 0x78, 0x20, 0x52, 0x52, 0x25, 0x62, +0x78, 0x20, 0x53, 0x52, 0x25, 0x62, 0x78, 0x00, +0x52, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x52, 0x34, +0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x44, 0x72, 0x6F, 0x70, 0x3A, 0x52, 0x44, 0x00, +0x3D, 0x3E, 0x53, 0x5F, 0x52, 0x41, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x72, 0x74, 0x79, 0x6D, +0x61, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x72, +0x74, 0x79, 0x72, 0x61, 0x74, 0x3A, 0x25, 0x62, +0x78, 0x2C, 0x20, 0x64, 0x69, 0x66, 0x66, 0x3A, +0x25, 0x62, 0x78, 0x2C, 0x20, 0x75, 0x70, 0x64, +0x6E, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x72, 0x74, 0x79, 0x6D, 0x61, 0x5F, 0x72, 0x61, +0x74, 0x65, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x72, +0x74, 0x79, 0x5F, 0x76, 0x61, 0x72, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x62, 0x76, 0x61, 0x72, +0x3A, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x76, 0x61, +0x72, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x44, 0x65, 0x4F, 0x46, 0x46, 0x3A, 0x25, 0x62, +0x78, 0x2C, 0x20, 0x25, 0x62, 0x58, 0x2C, 0x20, +0x25, 0x62, 0x78, 0x00, 0x4D, 0x6F, 0x64, 0x54, +0x48, 0x3A, 0x20, 0x55, 0x70, 0x54, 0x48, 0x25, +0x62, 0x78, 0x2C, 0x20, 0x44, 0x6E, 0x54, 0x48, +0x25, 0x62, 0x78, 0x00, 0x44, 0x72, 0x76, 0x4F, +0x66, 0x66, 0x73, 0x65, 0x74, 0x3A, 0x20, 0x53, +0x68, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x55, 0x70, +0x54, 0x48, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x44, +0x6E, 0x54, 0x48, 0x25, 0x62, 0x78, 0x00, 0x00, +0x4D, 0x52, 0x61, 0x74, 0x65, 0x20, 0x3D, 0x20, +0x25, 0x62, 0x78, 0x00, 0x42, 0x57, 0x25, 0x62, +0x78, 0x20, 0x52, 0x74, 0x25, 0x62, 0x78, 0x00, +0x52, 0x44, 0x31, 0x00, 0x55, 0x70, 0x3A, 0x25, +0x62, 0x58, 0x2C, 0x44, 0x6E, 0x3A, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x52, 0x44, 0x32, 0x00, +0x52, 0x55, 0x20, 0x25, 0x62, 0x78, 0x20, 0x25, +0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x00, 0x00, +0x52, 0x55, 0x5F, 0x53, 0x00, 0x00, 0x00, 0x00, +0x52, 0x53, 0x00, 0x00, 0x52, 0x53, 0x54, 0x54, +0x78, 0x52, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, +0x44, 0x6E, 0x54, 0x72, 0x79, 0x52, 0x3D, 0x25, +0x62, 0x58, 0x2C, 0x25, 0x62, 0x78, 0x00, 0x00, +0x54, 0x72, 0x79, 0x53, 0x75, 0x3A, 0x25, 0x62, +0x58, 0x00, 0x00, 0x00, 0x55, 0x70, 0x54, 0x72, +0x79, 0x53, 0x25, 0x62, 0x78, 0x20, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x44, 0x6E, 0x54, 0x72, +0x79, 0x53, 0x25, 0x62, 0x78, 0x20, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x55, 0x70, 0x54, 0x72, +0x79, 0x46, 0x25, 0x62, 0x78, 0x20, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x44, 0x6E, 0x54, 0x72, +0x79, 0x46, 0x25, 0x62, 0x78, 0x20, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x54, 0x72, 0x79, 0x46, +0x50, 0x25, 0x62, 0x78, 0x20, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x50, 0x65, 0x6E, 0x64, +0x3A, 0x25, 0x77, 0x58, 0x20, 0x00, 0x00, 0x00, +0x54, 0x72, 0x79, 0x46, 0x3A, 0x25, 0x62, 0x58, +0x20, 0x00, 0x00, 0x00, 0x52, 0x53, 0x53, 0x49, +0x3A, 0x25, 0x62, 0x78, 0x2C, 0x4D, 0x25, 0x62, +0x78, 0x2C, 0x52, 0x25, 0x62, 0x78, 0x00, 0x00, +0x41, 0x52, 0x46, 0x52, 0x43, 0x4D, 0x44, 0x3A, +0x25, 0x62, 0x58, 0x20, 0x25, 0x62, 0x78, 0x20, +0x25, 0x62, 0x78, 0x00, 0x50, 0x6F, 0x6C, 0x6C, +0x75, 0x74, 0x65, 0x64, 0x00, 0x00, 0x00, 0x00, +0x54, 0x52, 0x59, 0x25, 0x62, 0x78, 0x2C, 0x25, +0x62, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x06, 0x09, 0x0C, 0x12, 0x18, 0x24, 0x30, 0x36, +0x01, 0x02, 0x05, 0x0B, 0x00, 0x00, 0x00, 0x00, +0x0A, 0x08, 0x03, 0x03, 0x00, 0x04, 0x09, 0x07, +0x03, 0x03, 0x00, 0x04, 0x08, 0x06, 0x03, 0x02, +0x00, 0x04, 0x08, 0x05, 0x03, 0x01, 0x00, 0x04, +0x0D, 0x0A, 0x07, 0x05, 0x00, 0x08, 0x0C, 0x0A, +0x07, 0x04, 0x00, 0x08, 0x0B, 0x0A, 0x06, 0x05, +0x00, 0x08, 0x0B, 0x0A, 0x05, 0x03, 0x00, 0x08, +0x0B, 0x0A, 0x03, 0x02, 0x00, 0x08, 0x14, 0x12, +0x0C, 0x04, 0x00, 0x10, 0x14, 0x12, 0x09, 0x04, +0x00, 0x10, 0x24, 0x22, 0x1C, 0x12, 0x00, 0x20, +0x24, 0x22, 0x18, 0x0C, 0x00, 0x20, 0x24, 0x22, +0x14, 0x06, 0x00, 0x20, 0x24, 0x22, 0x0F, 0x04, +0x00, 0x20, 0x24, 0x21, 0x0A, 0x04, 0x00, 0x20, +0x23, 0x21, 0x0C, 0x04, 0x00, 0x20, 0x23, 0x1F, +0x0A, 0x04, 0x00, 0x20, 0x22, 0x1F, 0x0F, 0x04, +0x00, 0x20, 0x21, 0x1F, 0x16, 0x0C, 0x00, 0x20, +0x31, 0x2F, 0x20, 0x14, 0x00, 0x30, 0x31, 0x2F, +0x18, 0x10, 0x00, 0x30, 0x31, 0x2C, 0x18, 0x0C, +0x00, 0x30, 0x31, 0x2A, 0x14, 0x0C, 0x00, 0x30, +0x31, 0x28, 0x14, 0x00, 0x00, 0x30, 0x31, 0x24, +0x14, 0x00, 0x00, 0x30, 0x31, 0x1E, 0x14, 0x00, +0x00, 0x30, 0x31, 0x18, 0x0A, 0x00, 0x00, 0x30, +0x15, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x15, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x05, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x05, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x10, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x10, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, +0xF5, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x15, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x15, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, +0x15, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, +0x01, 0x02, 0x03, 0x06, 0x05, 0x06, 0x07, 0x08, +0x09, 0x0A, 0x0B, 0x2C, 0xFF, 0x00, 0x01, 0x02, +0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, +0x02, 0x02, 0x02, 0x04, 0x02, 0x04, 0x06, 0x06, +0x08, 0x08, 0x09, 0x09, 0x03, 0x06, 0x08, 0x08, +0x0A, 0x0E, 0x10, 0x18, 0x05, 0x08, 0x08, 0x08, +0x0A, 0x0E, 0x10, 0x18, 0x05, 0x08, 0x08, 0x09, +0x10, 0x14, 0x1C, 0x20, 0x04, 0x06, 0x08, 0x0A, +0x10, 0x18, 0x18, 0x20, 0x03, 0x06, 0x08, 0x09, +0x10, 0x14, 0x1C, 0x24, 0x34, 0x3A, 0x05, 0x07, +0x09, 0x0A, 0x10, 0x14, 0x1C, 0x28, 0x34, 0x3C, +0x06, 0x08, 0x0A, 0x0C, 0x12, 0x18, 0x1E, 0x2E, +0x36, 0x40, 0x0A, 0x0C, 0x0C, 0x12, 0x16, 0x1C, +0x20, 0x24, 0x24, 0x30, 0x01, 0x01, 0x01, 0x01, +0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, +0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, +0x02, 0x04, 0x06, 0x07, 0x08, 0x0A, 0x0B, 0x0C, +0x03, 0x05, 0x06, 0x07, 0x08, 0x0A, 0x0B, 0x0C, +0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, +0x02, 0x04, 0x06, 0x07, 0x08, 0x09, 0x0B, 0x0C, +0x0C, 0x0C, 0x03, 0x05, 0x06, 0x07, 0x08, 0x09, +0x0B, 0x0C, 0x0C, 0x0C, 0x05, 0x06, 0x07, 0x08, +0x09, 0x0A, 0x0B, 0x0C, 0x0C, 0x0C, 0x05, 0x06, +0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0C, 0x0C, +0x02, 0x04, 0x08, 0x10, 0x10, 0x14, 0x18, 0x1C, +0x1C, 0x20, 0x20, 0x20, 0x10, 0x14, 0x18, 0x1C, +0x1C, 0x20, 0x20, 0x20, 0x10, 0x14, 0x18, 0x1C, +0x1C, 0x20, 0x20, 0x20, 0x10, 0x14, 0x18, 0x1C, +0x1C, 0x20, 0x20, 0x20, 0x10, 0x14, 0x18, 0x1C, +0x1C, 0x20, 0x20, 0x20, 0x10, 0x14, 0x18, 0x1C, +0x1C, 0x20, 0x20, 0x20, 0x24, 0x28, 0x10, 0x14, +0x18, 0x1C, 0x1C, 0x20, 0x20, 0x20, 0x24, 0x28, +0x10, 0x14, 0x18, 0x1C, 0x1C, 0x20, 0x20, 0x20, +0x24, 0x28, 0x10, 0x14, 0x18, 0x1C, 0x1C, 0x20, +0x20, 0x20, 0x24, 0x28, 0x2D, 0xFF, 0xFF, 0x2E, +0x36, 0xFF, 0x2F, 0x37, 0xFF, 0x38, 0x30, 0x41, +0x39, 0x31, 0x42, 0x42, 0x3A, 0x32, 0x43, 0x3A, +0x33, 0x43, 0x3A, 0x34, 0x3A, 0x44, 0x35, 0x44, +0x3B, 0xFF, 0x2E, 0x37, 0x40, 0x38, 0x30, 0x41, +0x39, 0x42, 0x31, 0x3A, 0x42, 0x32, 0x3B, 0x43, +0x35, 0x3C, 0x44, 0xFF, 0x3D, 0x45, 0xFF, 0x3E, +0x45, 0xFF, 0x45, 0x3F, 0xFF, 0x46, 0xFF, 0xFF, +0x37, 0x41, 0x2F, 0x39, 0x42, 0x31, 0x43, 0x3A, +0x33, 0x44, 0x3B, 0x35, 0x45, 0x3D, 0xFF, 0x46, +0x47, 0x3E, 0x47, 0xFF, 0xFF, 0x48, 0xFF, 0xFF, +0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x0D, 0xFF, 0xFF, 0x0E, 0x14, 0xFF, 0x15, 0x0F, +0xFF, 0x16, 0x10, 0xFF, 0x17, 0x11, 0x1E, 0x1E, +0x18, 0x12, 0x1F, 0x18, 0x13, 0x18, 0x1F, 0xFF, +0x15, 0x0E, 0xFF, 0x16, 0x1D, 0x10, 0x17, 0x1E, +0x10, 0x18, 0x1E, 0x11, 0x19, 0x1F, 0xFF, 0x1A, +0x20, 0xFF, 0x21, 0x1B, 0xFF, 0x21, 0xFF, 0xFF, +0x15, 0x13, 0x0F, 0x17, 0x1E, 0x11, 0x18, 0x1F, +0x13, 0x20, 0x19, 0xFF, 0x21, 0x1B, 0xFF, 0x22, +0xFF, 0xFF, 0x23, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0x04, 0x04, 0x04, 0x2C, 0xFF, 0xFF, 0x2D, 0x36, +0xFF, 0x2E, 0x37, 0xFF, 0x2F, 0x38, 0x41, 0x30, +0x39, 0x42, 0x43, 0x39, 0x31, 0x42, 0x39, 0x32, +0x43, 0x3A, 0x33, 0x43, 0x3A, 0x34, 0x2D, 0x2C, +0xFF, 0x36, 0x2E, 0xFF, 0x37, 0x2F, 0x40, 0x38, +0x30, 0x41, 0x42, 0x33, 0x39, 0x43, 0x35, 0x3A, +0x3B, 0x43, 0x34, 0x44, 0x3C, 0x3B, 0x45, 0x3D, +0x3C, 0x45, 0x3E, 0x3D, 0x37, 0x2E, 0xFF, 0x38, +0x2F, 0x40, 0x39, 0x31, 0x41, 0x3A, 0x42, 0xFF, +0x43, 0x3B, 0xFF, 0x44, 0x3C, 0xFF, 0x45, 0x3D, +0x3C, 0x46, 0x3F, 0x45, 0x47, 0x46, 0x45, 0x48, +0x47, 0x47, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0x0C, +0xFF, 0xFF, 0x0D, 0x14, 0xFF, 0x0E, 0x15, 0xFF, +0x0F, 0x16, 0xFF, 0x10, 0x17, 0xFF, 0x17, 0x11, +0xFF, 0x17, 0x12, 0xFF, 0x0D, 0x0C, 0xFF, 0x14, +0x0E, 0xFF, 0x15, 0x0F, 0xFF, 0x16, 0x1D, 0x10, +0x17, 0x1E, 0x12, 0x18, 0x1F, 0x13, 0x19, 0x20, +0x19, 0x20, 0x1A, 0x19, 0x14, 0x0E, 0xFF, 0x15, +0x1C, 0xFF, 0x17, 0x1D, 0x11, 0x18, 0x1E, 0x13, +0x19, 0x1F, 0x1E, 0x20, 0x1A, 0x1F, 0x21, 0x1B, +0x20, 0x22, 0x21, 0x1B, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x26, 0x2A, +0x00, 0x00, 0x00, 0x1F, 0x21, 0x25, 0x27, 0x28, +0x00, 0x00, 0x00, 0x00, 0x23, 0x26, 0x28, 0x30, +0x00, 0x00, 0x00, 0x00, 0x23, 0x26, 0x28, 0x2A, +0x00, 0x00, 0x00, 0x00, 0x23, 0x26, 0x28, 0x2A, +0x00, 0x00, 0x00, 0x00, 0x24, 0x28, 0x2A, 0x2C, +0x2E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x26, 0x29, +0x2B, 0x2D, 0x2F, 0x31, 0x00, 0x00, 0x00, 0x00, +0x28, 0x2A, 0x2C, 0x2E, 0x30, 0x32, 0x00, 0x00, +0x00, 0x1F, 0x23, 0x26, 0x28, 0x2A, 0x2A, 0x2A, +0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, +0x18, 0x00, 0x24, 0x00, 0x30, 0x00, 0x48, 0x00, +0x60, 0x00, 0x90, 0x00, 0xC0, 0x00, 0xD8, 0x00, +0x50, 0x00, 0x64, 0x00, 0x78, 0x00, 0xA0, 0x00, +0xF0, 0x00, 0x40, 0x01, 0x90, 0x01, 0xE0, 0x01, +0xC8, 0x00, 0xF0, 0x00, 0x40, 0x01, 0x90, 0x01, +0x58, 0x02, 0x20, 0x03, 0xB0, 0x04, 0x40, 0x06, +0xC8, 0x00, 0x18, 0x01, 0xE0, 0x01, 0xF4, 0x01, +0x84, 0x03, 0x20, 0x03, 0xB0, 0x04, 0x40, 0x06, +0xC8, 0x00, 0x18, 0x01, 0xE0, 0x01, 0xD0, 0x02, +0x20, 0x03, 0xE8, 0x03, 0xB0, 0x04, 0x40, 0x06, +0x3C, 0x00, 0x64, 0x00, 0x78, 0x00, 0xA0, 0x00, +0xF0, 0x00, 0x40, 0x01, 0x90, 0x01, 0xE0, 0x01, +0x58, 0x02, 0x20, 0x03, 0x78, 0x00, 0xF0, 0x00, +0x68, 0x01, 0xA4, 0x01, 0xE0, 0x01, 0x1C, 0x02, +0x58, 0x02, 0x20, 0x03, 0xE8, 0x03, 0xB0, 0x04, +0xB4, 0x00, 0x2C, 0x01, 0xA4, 0x01, 0xE0, 0x01, +0x1C, 0x02, 0x58, 0x02, 0x20, 0x03, 0xE8, 0x03, +0xB0, 0x04, 0x78, 0x05, 0xC8, 0x00, 0x18, 0x01, +0xE0, 0x01, 0xD0, 0x02, 0xE8, 0x03, 0xB0, 0x04, +0x40, 0x06, 0xD0, 0x07, 0xD0, 0x07, 0xD0, 0x07, +0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, +0x0C, 0x00, 0x12, 0x00, 0x18, 0x00, 0x24, 0x00, +0x30, 0x00, 0x48, 0x00, 0x60, 0x00, 0x6C, 0x00, +0x28, 0x00, 0x32, 0x00, 0x3C, 0x00, 0x50, 0x00, +0x78, 0x00, 0xA0, 0x00, 0xC8, 0x00, 0xF0, 0x00, +0x64, 0x00, 0x78, 0x00, 0xA0, 0x00, 0xC8, 0x00, +0x2C, 0x01, 0x90, 0x01, 0x58, 0x02, 0x20, 0x03, +0x64, 0x00, 0x8C, 0x00, 0xF0, 0x00, 0xFA, 0x00, +0xC2, 0x01, 0x90, 0x01, 0x58, 0x02, 0x20, 0x03, +0x64, 0x00, 0x8C, 0x00, 0xF0, 0x00, 0x68, 0x01, +0xF4, 0x01, 0x20, 0x03, 0xE8, 0x03, 0x78, 0x05, +0x1E, 0x00, 0x32, 0x00, 0x3C, 0x00, 0x50, 0x00, +0x78, 0x00, 0xA0, 0x00, 0xC8, 0x00, 0xF0, 0x00, +0x2C, 0x01, 0x90, 0x01, 0x3C, 0x00, 0x78, 0x00, +0xB4, 0x00, 0xD2, 0x00, 0xF0, 0x00, 0x0E, 0x01, +0x2C, 0x01, 0x90, 0x01, 0xF4, 0x01, 0x58, 0x02, +0x5A, 0x00, 0x96, 0x00, 0xD2, 0x00, 0xF0, 0x00, +0x0E, 0x01, 0x2C, 0x01, 0x90, 0x01, 0xF4, 0x01, +0x58, 0x02, 0xBC, 0x02, 0x64, 0x00, 0x8C, 0x00, +0xF0, 0x00, 0x68, 0x01, 0xF4, 0x01, 0x58, 0x02, +0x20, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, +0x01, 0x00, 0x02, 0x00, 0x05, 0x00, 0x0B, 0x00, +0x06, 0x00, 0x09, 0x00, 0x0C, 0x00, 0x12, 0x00, +0x18, 0x00, 0x24, 0x00, 0x30, 0x00, 0x36, 0x00, +0x0E, 0x00, 0x1B, 0x00, 0x29, 0x00, 0x36, 0x00, +0x51, 0x00, 0x6C, 0x00, 0x7A, 0x00, 0x87, 0x00, +0x1B, 0x00, 0x36, 0x00, 0x51, 0x00, 0x6C, 0x00, +0xA2, 0x00, 0xD8, 0x00, 0xF3, 0x00, 0x0E, 0x01, +0x29, 0x00, 0x51, 0x00, 0x7A, 0x00, 0xA2, 0x00, +0xF3, 0x00, 0x44, 0x01, 0x6D, 0x01, 0x95, 0x01, +0x36, 0x00, 0x6C, 0x00, 0xA2, 0x00, 0xD8, 0x00, +0x44, 0x01, 0xB0, 0x01, 0xE6, 0x01, 0x1C, 0x02, +0x0E, 0x00, 0x1B, 0x00, 0x29, 0x00, 0x36, 0x00, +0x51, 0x00, 0x6C, 0x00, 0x7A, 0x00, 0x87, 0x00, +0xA2, 0x00, 0xB4, 0x00, 0x1B, 0x00, 0x36, 0x00, +0x51, 0x00, 0x6C, 0x00, 0xA2, 0x00, 0xD8, 0x00, +0xF3, 0x00, 0xFF, 0x00, 0x23, 0x01, 0x44, 0x01, +0x29, 0x00, 0x51, 0x00, 0x7A, 0x00, 0xA2, 0x00, +0xF3, 0x00, 0x44, 0x01, 0x64, 0x01, 0x64, 0x01, +0xB5, 0x01, 0xE6, 0x01, 0x36, 0x00, 0x6C, 0x00, +0xA2, 0x00, 0xD8, 0x00, 0x44, 0x01, 0xB0, 0x01, +0xE6, 0x01, 0x1C, 0x02, 0x88, 0x02, 0xD0, 0x02, +0x14, 0x14, 0x15, 0x15, 0x16, 0x17, 0x17, 0x18, +0x1C, 0x1C, 0x1C, 0x1C, 0x1D, 0x1D, 0x1E, 0x1E, +0x1C, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x20, 0x20, +0x36, 0x36, 0x37, 0x37, 0x38, 0x39, 0x39, 0x3A, +0x3A, 0x3A, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, +0x41, 0x41, 0x42, 0x42, 0x43, 0x43, 0x00, 0x00, +0x40, 0x40, 0x41, 0x42, 0x43, 0x44, 0x44, 0x44, +0x45, 0x46, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, +0x00, 0x00, 0x30, 0xC0, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x0C, 0x0E, 0x38, 0x18, 0x00, 0x00, 0x00, +0x00, 0x83, 0x01, 0x06, 0x80, 0x03, 0x00, 0x00, +0x00, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x74, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x58, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x79, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x10, 0xF0, 0x20, 0x68, 0xE0, 0xF3, 0x19, 0x48, +0x00, 0x65, 0x00, 0xE8, 0x00, 0x65, 0x1A, 0xB8, +0x00, 0x65, 0x3B, 0xB8, 0x00, 0x65, 0x00, 0xBA, +0x00, 0xBA, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6C, 0x0D, 0xF0, 0x00, 0x4C, +0x03, 0xF0, 0x00, 0x4C, 0xBC, 0x65, 0x00, 0xF0, +0x21, 0x6C, 0x1F, 0xF4, 0x00, 0x4C, 0x8C, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x94, 0xB8, +0x00, 0x6D, 0xFE, 0xF7, 0x1F, 0x4D, 0xAC, 0xEC, +0x94, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0xF4, +0x00, 0x6D, 0xAD, 0xEC, 0x94, 0xB9, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6C, 0x00, 0xF0, 0x00, 0x4C, +0x00, 0x6E, 0x30, 0xF0, 0x20, 0x6F, 0x00, 0xF0, +0x00, 0x4F, 0xC0, 0xDC, 0x04, 0x4C, 0xE3, 0xEC, +0xB8, 0x67, 0xFB, 0x2D, 0x30, 0xF0, 0x20, 0x6C, +0x82, 0xF6, 0x18, 0x4C, 0x00, 0x6E, 0x30, 0xF0, +0x20, 0x6F, 0x6C, 0xF0, 0x10, 0x4F, 0xC0, 0xDC, +0x04, 0x4C, 0xE3, 0xEC, 0xB8, 0x67, 0xFB, 0x2D, +0x10, 0xF0, 0x20, 0x6C, 0x60, 0xF2, 0x1D, 0x4C, +0x00, 0xEC, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF5, 0x74, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0x60, 0xF2, 0x1D, 0x4A, +0x40, 0xDB, 0x00, 0x18, 0xAE, 0x05, 0x00, 0x18, +0x85, 0x05, 0x00, 0x18, 0x20, 0x07, 0x00, 0x18, +0xBB, 0x05, 0x00, 0x18, 0xCB, 0x06, 0x00, 0x18, +0x44, 0x07, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF5, +0x70, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, +0x00, 0x6D, 0x40, 0xAB, 0xAB, 0xED, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x00, 0x18, +0x88, 0x07, 0x00, 0x18, 0x98, 0x16, 0x01, 0x72, +0x02, 0x61, 0x00, 0x18, 0x2C, 0x17, 0x00, 0x6C, +0x00, 0x18, 0x9F, 0x10, 0xFF, 0x17, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF5, 0x78, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF5, 0x54, 0x9A, +0x60, 0xDA, 0xC8, 0xB8, 0xAD, 0xB8, 0x4E, 0xB8, +0x6C, 0xB8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF0, +0xE0, 0x9C, 0x00, 0xF5, 0x5C, 0x9A, 0xE0, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x40, 0x9A, +0xC0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x44, 0x9A, 0xA0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF5, 0x48, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x7B, 0x9C, 0x20, 0xF5, 0x4C, 0x9A, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x7D, 0x9C, +0x20, 0xF5, 0x50, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0x9C, 0x20, 0xF5, 0x54, 0x9A, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x65, 0x9C, +0x20, 0xF5, 0x58, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x66, 0x9C, 0x80, 0xF4, 0x48, 0x9A, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x67, 0x9C, +0x20, 0xF5, 0x5C, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0x9C, 0x40, 0xF5, 0x40, 0x9A, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0x9C, +0x40, 0xF5, 0x44, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x70, 0x9C, 0x40, 0xF5, 0x48, 0x9A, +0x60, 0xDA, 0xFF, 0x17, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x42, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x53, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x5E, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xF7, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x05, 0x02, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x3C, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x69, 0x0D, 0xF0, 0x08, 0x49, +0x42, 0xD9, 0x63, 0xD9, 0x84, 0xD9, 0xA5, 0xD9, +0xC6, 0xD9, 0xE7, 0xD9, 0x58, 0x67, 0x58, 0xD9, +0x5D, 0x67, 0x5B, 0xD9, 0x5F, 0x67, 0x5D, 0xD9, +0x12, 0xEC, 0x10, 0xED, 0xCE, 0xB8, 0x9E, 0xD9, +0xBF, 0xD9, 0x80, 0xF0, 0xC0, 0xD9, 0x0D, 0xB8, +0x7F, 0x69, 0x0C, 0xE9, 0x2D, 0x21, 0x00, 0x65, +0x3D, 0x67, 0x00, 0xF3, 0x22, 0x31, 0x00, 0xF3, +0x20, 0x31, 0x08, 0x49, 0x42, 0xD9, 0x63, 0xD9, +0x84, 0xD9, 0xA5, 0xD9, 0xC6, 0xD9, 0xE7, 0xD9, +0x58, 0x67, 0x58, 0xD9, 0x5D, 0x67, 0x5B, 0xD9, +0x5F, 0x67, 0x5D, 0xD9, 0x12, 0xEC, 0x10, 0xED, +0xCE, 0xB8, 0x9E, 0xD9, 0xBF, 0xD9, 0x80, 0xF0, +0xC0, 0xD9, 0x00, 0xF0, 0x20, 0x6D, 0xA0, 0xF1, +0x1C, 0x4D, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x68, +0x00, 0xF0, 0x08, 0x48, 0x18, 0x48, 0x20, 0x98, +0x00, 0x65, 0x20, 0xDD, 0x00, 0x65, 0x1D, 0x67, +0x01, 0xDD, 0x00, 0x65, 0x00, 0xE9, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x69, 0x00, 0xF0, 0x08, 0x49, +0x1F, 0xF4, 0x00, 0x6C, 0x8C, 0xE8, 0x80, 0xF2, +0x02, 0x30, 0x0B, 0x20, 0x01, 0x6A, 0x0C, 0xEA, +0x04, 0x22, 0x40, 0x99, 0x00, 0x65, 0x40, 0xEA, +0x00, 0x65, 0x06, 0x30, 0x24, 0x41, 0xF5, 0x17, +0x00, 0x65, 0x30, 0xF0, 0x20, 0x69, 0x0D, 0xF0, +0x08, 0x49, 0x58, 0x99, 0x1A, 0x65, 0x5B, 0x99, +0xBA, 0x65, 0x5D, 0x99, 0xFA, 0x65, 0x9E, 0x99, +0xBF, 0x99, 0x32, 0xEC, 0x30, 0xED, 0x42, 0x99, +0x63, 0x99, 0x84, 0x99, 0xA5, 0x99, 0xC6, 0x99, +0xE7, 0x99, 0x80, 0xF0, 0x20, 0x99, 0xC9, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x1A, 0xB8, +0x00, 0x65, 0x3B, 0xB8, 0x00, 0x65, 0x00, 0xBA, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF5, 0x74, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, 0x11, 0x4A, +0x40, 0xDB, 0x01, 0x4A, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF5, 0x74, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0x00, 0xF5, 0x09, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x21, 0xF0, +0x5C, 0x9A, 0x40, 0x9A, 0x08, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF4, 0x64, 0x9A, 0xFF, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF5, 0x74, 0x9B, 0x10, 0xF0, +0x20, 0x6A, 0x00, 0xF5, 0x0A, 0x4A, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF5, 0x34, 0x9A, 0x10, 0xF0, 0x20, 0x68, +0x40, 0xF5, 0x0D, 0x48, 0x00, 0xD9, 0x01, 0x48, +0x00, 0x18, 0x00, 0x22, 0x00, 0xD9, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF5, 0x74, 0x9B, 0x10, 0xF0, 0x20, 0x6A, +0x60, 0xF5, 0x19, 0x4A, 0x40, 0xDB, 0x00, 0x18, +0x85, 0x17, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, +0x74, 0x9A, 0x6C, 0x23, 0x01, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0xAD, 0x17, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF6, 0x54, 0x9A, 0x02, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xB3, 0x19, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, 0x54, 0x9A, +0x04, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x9A, 0x19, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, +0x54, 0x9A, 0x08, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x96, 0x19, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF6, 0x54, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0xAE, 0x17, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF6, 0x54, 0x9A, 0x20, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x92, 0x19, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, 0x54, 0x9A, +0x40, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x82, 0x19, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, +0x54, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xAF, 0x17, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF6, 0x74, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x7A, 0x19, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0x74, 0x9B, +0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xB0, 0x17, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF6, 0x74, 0x9B, 0x08, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xB1, 0x17, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0x74, 0x9B, +0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xB2, 0x17, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF6, 0x78, 0x9A, 0xA0, 0xF0, 0x0B, 0x23, +0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x60, 0x19, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, +0x58, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xB3, 0x17, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF6, 0x78, 0x9B, 0x04, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0xB4, 0x18, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, +0x78, 0x9B, 0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x3E, 0x18, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0x78, 0x9B, +0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xC9, 0x17, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x41, 0xF0, 0x40, 0x9A, +0xE2, 0xF6, 0x78, 0x9B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xD3, 0x17, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x41, 0xF0, 0x44, 0x9A, +0xE2, 0xF6, 0x78, 0x9B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xDD, 0x17, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF6, 0x58, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x45, 0x19, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF6, 0x58, 0x9A, 0x80, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xFA, 0x18, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0x78, 0x9B, +0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x2A, 0x19, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF6, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xE5, 0x18, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0x78, 0x9B, +0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x0F, 0x19, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF6, 0x78, 0x9B, 0x01, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xD0, 0x18, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0x78, 0x9B, +0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xB4, 0x17, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, 0x48, 0x9A, +0xE2, 0xF6, 0x78, 0x9B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xE8, 0x17, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x41, 0xF0, 0x48, 0x9A, +0xE2, 0xF6, 0x78, 0x9B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xE9, 0x17, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF5, 0x74, 0x9B, 0x10, 0xF0, 0x20, 0x6A, +0x60, 0xF5, 0x1A, 0x4A, 0x40, 0xDB, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF5, 0x34, 0x9A, 0x10, 0xF0, 0x20, 0x68, +0xC0, 0xF7, 0x1D, 0x48, 0x00, 0xD9, 0x00, 0x18, +0x55, 0x17, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, +0x44, 0x9A, 0x02, 0x22, 0x01, 0x48, 0x00, 0xD9, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF5, 0x74, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0x01, 0xF0, 0x15, 0x4A, +0x40, 0xDB, 0x00, 0x18, 0x5C, 0x17, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF6, 0x64, 0x9A, 0xA0, 0xF0, +0x06, 0x23, 0x08, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0xF0, 0x17, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF6, 0x44, 0x9A, 0x10, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x0E, 0x1A, +0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, 0x44, 0x9A, +0x20, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x92, 0x17, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, +0x44, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x93, 0x17, 0x30, 0xF0, 0x20, 0x6A, +0xC2, 0xF6, 0x44, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x28, 0x20, 0x30, 0xF0, +0x20, 0x6B, 0xC2, 0xF6, 0x64, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x0A, 0x1A, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, +0x64, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x06, 0x1A, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x41, 0xF0, +0x4C, 0x9A, 0xC2, 0xF6, 0x64, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x94, 0x17, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x41, 0xF0, 0x50, 0x9A, 0xC2, 0xF6, 0x64, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, +0x94, 0x17, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x41, 0xF0, 0x54, 0x9A, 0xC2, 0xF6, +0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, +0x00, 0x18, 0x94, 0x17, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x41, 0xF0, 0x58, 0x9A, +0xC2, 0xF6, 0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x03, 0x6C, 0x00, 0x18, 0x94, 0x17, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x41, 0xF0, +0x5C, 0x9A, 0xC2, 0xF6, 0x64, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0x94, 0x17, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x61, 0xF0, 0x40, 0x9A, 0xC2, 0xF6, 0x64, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x05, 0x6C, 0x00, 0x18, +0x94, 0x17, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x61, 0xF0, 0x44, 0x9A, 0xC2, 0xF6, +0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x06, 0x6C, +0x00, 0x18, 0x94, 0x17, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x61, 0xF0, 0x48, 0x9A, +0xC2, 0xF6, 0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x07, 0x6C, 0x00, 0x18, 0x94, 0x17, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF6, 0x68, 0x9A, 0x7B, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0x61, 0xF0, 0x4C, 0x9A, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0x9A, 0x18, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x61, 0xF0, 0x50, 0x9A, 0xC2, 0xF6, +0x68, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, +0x00, 0x18, 0x9A, 0x18, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x61, 0xF0, 0x54, 0x9A, +0xC2, 0xF6, 0x68, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x02, 0x6C, 0x00, 0x18, 0x9A, 0x18, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, +0x48, 0x9A, 0xC2, 0xF6, 0x68, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0x9A, 0x18, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x41, 0xF0, 0x48, 0x9A, 0xC2, 0xF6, 0x68, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, +0x9A, 0x18, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x41, 0xF0, 0x44, 0x9A, 0xC2, 0xF6, +0x68, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0x83, 0x18, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x61, 0xF0, 0x58, 0x9A, +0xC2, 0xF6, 0x68, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0x1E, 0x18, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, +0x44, 0x9A, 0xC2, 0xF6, 0x68, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x69, 0x18, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF7, 0x40, 0x9A, 0xC2, 0xF6, 0x68, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0x08, 0x18, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, +0x68, 0x9B, 0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x02, 0x1A, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF6, 0x6C, 0x9A, 0x32, 0x23, +0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0xCC, 0x19, 0x30, 0xF0, 0x20, 0x6B, +0xC2, 0xF6, 0x6C, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, +0xCC, 0x19, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, +0x6C, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0xCC, 0x19, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x6C, 0x9B, +0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x03, 0x6C, 0x00, 0x18, 0xCC, 0x19, 0x30, 0xF0, +0x20, 0x6B, 0xC2, 0xF6, 0x6C, 0x9B, 0x01, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, +0x00, 0x18, 0xCC, 0x19, 0x30, 0xF0, 0x20, 0x6A, +0xC2, 0xF6, 0x50, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0xBE, 0x19, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x70, 0x9B, +0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x03, 0x22, +0x01, 0x6C, 0x00, 0x18, 0xBE, 0x19, 0x30, 0xF0, +0x20, 0x6B, 0xC2, 0xF6, 0x70, 0x9B, 0x00, 0xF2, +0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, +0x00, 0x18, 0xBE, 0x19, 0x30, 0xF0, 0x20, 0x6B, +0xC2, 0xF6, 0x70, 0x9B, 0x00, 0xF4, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, +0xBE, 0x19, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, +0x70, 0x9B, 0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0xBE, 0x19, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x70, 0x9B, +0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0x20, 0x05, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF5, 0x74, 0x9B, 0x10, 0xF0, +0x20, 0x6A, 0x01, 0xF0, 0x16, 0x4A, 0x40, 0xDB, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6A, 0x8C, 0xEA, 0x05, 0x5A, 0x00, 0x68, +0x24, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x34, +0xE0, 0xF0, 0x00, 0x4B, 0x8D, 0xE3, 0x60, 0x9B, +0x00, 0xEB, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, +0x60, 0x9B, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF4, 0x64, 0x9B, 0x0E, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x20, 0xF4, 0x68, 0x9B, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x6C, 0x9B, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, +0x70, 0x9B, 0x60, 0xAB, 0xFF, 0xF7, 0x1F, 0x68, +0x6C, 0xE8, 0x18, 0xF0, 0x00, 0x6B, 0x0C, 0xEB, +0x0F, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x10, 0x4B, 0xE3, 0xF2, 0x98, 0xA3, 0x02, 0x6A, +0x4B, 0xEA, 0x8C, 0xEA, 0x03, 0x6C, 0x8B, 0xEC, +0x8C, 0xEA, 0xE3, 0xF2, 0x58, 0xC3, 0x73, 0x10, +0x08, 0xF0, 0x00, 0x6B, 0x0C, 0xEB, 0x3F, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x80, 0xF0, 0xD9, 0xA3, 0x7F, 0x6D, 0xFF, 0x6C, +0xCC, 0xED, 0x02, 0x75, 0x1F, 0x61, 0x80, 0xF0, +0x5C, 0xA3, 0x01, 0x6D, 0xAC, 0xEA, 0x8C, 0xEA, +0x06, 0x2A, 0xE3, 0xF2, 0x58, 0xA3, 0x4D, 0xED, +0xE3, 0xF2, 0xB8, 0xC3, 0x21, 0x10, 0x80, 0xF0, +0xBA, 0xA3, 0x10, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, +0x8C, 0xEA, 0x10, 0x72, 0x2B, 0x61, 0xE3, 0xF2, +0x98, 0xA3, 0x04, 0x6A, 0x00, 0x6D, 0x8D, 0xEA, +0xE3, 0xF2, 0x58, 0xC3, 0x01, 0x6C, 0x00, 0x18, +0x15, 0x0F, 0x20, 0x10, 0xE3, 0xF2, 0xD8, 0xA3, +0x01, 0x6D, 0xCD, 0xED, 0xE3, 0xF2, 0xB8, 0xC3, +0x80, 0xF0, 0xBA, 0xA3, 0x10, 0x6B, 0x6B, 0xEB, +0xAC, 0xEB, 0x8C, 0xEB, 0x20, 0x73, 0x03, 0x60, +0x00, 0x18, 0x3B, 0x0F, 0x0F, 0x10, 0x82, 0x67, +0x00, 0x18, 0x19, 0x0D, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xE3, 0xF2, +0x98, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0xE3, 0xF2, 0x78, 0xC2, 0x02, 0x30, 0x1E, 0x30, +0x17, 0x20, 0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, +0x10, 0x48, 0xE3, 0xF2, 0x58, 0xA0, 0x02, 0x69, +0xA0, 0xF0, 0xC1, 0xA0, 0x2D, 0xEA, 0xFF, 0x6C, +0xE3, 0xF2, 0x58, 0xC0, 0x55, 0x4C, 0x00, 0x6D, +0x00, 0x18, 0x3C, 0x16, 0xE3, 0xF2, 0x54, 0xA0, +0x4D, 0xE9, 0xE3, 0xF2, 0x34, 0xC0, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0xE3, 0xF2, 0x98, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xE3, 0xF2, 0x78, 0xC2, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x50, 0x9A, 0x60, 0xA2, +0x3D, 0x23, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x54, 0x9A, 0x02, 0x6B, +0x30, 0xF0, 0x20, 0x68, 0x60, 0xC2, 0xA2, 0xF6, +0x10, 0x48, 0xE3, 0xF2, 0x74, 0xA0, 0x02, 0x6A, +0xFF, 0x6C, 0x6C, 0xEA, 0x8C, 0xEA, 0x0B, 0x22, +0x03, 0x6A, 0x4B, 0xEA, 0x4C, 0xEB, 0xE3, 0xF2, +0x74, 0xC0, 0xE3, 0xF2, 0x78, 0xA0, 0x6C, 0xEA, +0xE3, 0xF2, 0x58, 0xC0, 0x1F, 0x10, 0xE3, 0xF2, +0x5F, 0xA0, 0xE3, 0xF2, 0x78, 0xA0, 0x01, 0x4A, +0xE3, 0xF2, 0x5F, 0xC0, 0x11, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0xE3, 0xF2, 0x58, 0xC0, 0xE3, 0xF2, +0x7F, 0xA0, 0xA0, 0xF0, 0x40, 0xA0, 0x63, 0xEA, +0x0D, 0x60, 0xA0, 0xF0, 0x96, 0xA0, 0x00, 0x18, +0x94, 0x07, 0x01, 0x72, 0x07, 0x61, 0xE3, 0xF2, +0x74, 0xA0, 0x21, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xE3, 0xF2, 0x54, 0xC0, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x00, 0x18, +0x5B, 0x08, 0x03, 0x2A, 0x90, 0x67, 0x00, 0x18, +0xFD, 0x0C, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xFC, 0x26, 0x01, 0x72, 0x01, 0x6C, +0x01, 0x60, 0x02, 0x6C, 0x00, 0x18, 0x44, 0x28, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6C, +0x42, 0xF7, 0x08, 0x4C, 0x00, 0x6D, 0x01, 0x6E, +0x00, 0x18, 0xB6, 0x11, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, 0x78, 0xA2, +0x03, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0xC3, 0xF2, +0xB8, 0xA2, 0x80, 0xF0, 0x78, 0xC2, 0x02, 0x6B, +0x6B, 0xEB, 0xAC, 0xEB, 0x8C, 0xEB, 0xC3, 0xF2, +0x78, 0xC2, 0x00, 0x6B, 0xC3, 0xF2, 0x79, 0xC2, +0x0C, 0x6B, 0xC3, 0xF2, 0x7A, 0xC2, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x4C, 0xED, +0xFF, 0x75, 0x4C, 0xEC, 0xCC, 0xEA, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x71, 0xE4, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x71, 0xE4, 0xA3, 0xF2, +0x6C, 0xA4, 0xAC, 0xEA, 0xAF, 0xED, 0x6C, 0xED, +0xAD, 0xEA, 0xA3, 0xF2, 0x4C, 0xC4, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xEC, 0xFF, 0x74, 0xAC, 0xEA, +0x05, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x46, 0xF1, +0x5A, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0xA3, 0xF2, 0xAA, 0xA3, +0x8C, 0xEA, 0x8F, 0xEC, 0xAC, 0xEC, 0x8D, 0xEA, +0xA3, 0xF2, 0x4A, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0xF7, 0x63, 0x11, 0x62, 0x10, 0xD1, 0x0F, 0xD0, +0x40, 0xA4, 0x08, 0xD2, 0x08, 0x93, 0x1F, 0x6A, +0x4C, 0xEB, 0x08, 0xD3, 0x42, 0xA4, 0x61, 0xA4, +0x0D, 0xD2, 0x43, 0xA4, 0x84, 0xA4, 0x09, 0xD4, +0x08, 0x94, 0x08, 0x5C, 0x80, 0xF0, 0x0C, 0x60, +0xFF, 0x68, 0x84, 0x31, 0x24, 0x22, 0x09, 0x94, +0x22, 0x24, 0x0C, 0xEA, 0x0C, 0xEB, 0xA2, 0x67, +0xC3, 0x67, 0x91, 0x67, 0x0B, 0xD2, 0x0C, 0xD3, +0x00, 0x18, 0x87, 0x03, 0x09, 0x93, 0x0D, 0x94, +0x41, 0x41, 0x0C, 0xEA, 0x0C, 0xEB, 0x8C, 0xE8, +0xA3, 0x67, 0x82, 0x67, 0xD0, 0x67, 0x0A, 0xD2, +0x09, 0xD3, 0x00, 0x18, 0x87, 0x03, 0x0B, 0x95, +0x0C, 0x96, 0x91, 0x67, 0x01, 0x6F, 0x00, 0x18, +0x30, 0x05, 0x0A, 0x94, 0x09, 0x95, 0xD0, 0x67, +0x02, 0x6F, 0x00, 0x18, 0x30, 0x05, 0x0F, 0x59, +0x08, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x28, 0x33, +0x60, 0xF2, 0x0C, 0x4A, 0x69, 0xE2, 0x40, 0x9A, +0x00, 0xEA, 0x00, 0x6A, 0x44, 0x10, 0xD0, 0xF4, +0x44, 0x41, 0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF6, +0x40, 0x9A, 0x34, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF6, 0x44, 0x9A, 0x2F, 0x10, 0x80, 0xF4, +0x44, 0x41, 0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF6, +0x48, 0x9A, 0x24, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF6, 0x4C, 0x9A, 0x1F, 0x10, 0xC0, 0xF4, +0x48, 0x41, 0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF6, +0x50, 0x9A, 0x14, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF6, 0x54, 0x9A, 0x0F, 0x10, 0x70, 0xF4, +0x48, 0x41, 0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF6, +0x58, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF6, 0x5C, 0x9A, 0x49, 0xE1, 0x60, 0xAA, +0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x7D, 0x67, +0x53, 0xC3, 0x42, 0x32, 0x54, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x45, 0xE1, +0xA3, 0xF2, 0x4C, 0xA1, 0x55, 0xC3, 0xA3, 0xF2, +0x4D, 0xA1, 0x56, 0xC3, 0xA3, 0xF2, 0x5C, 0xA1, +0x57, 0xC3, 0xA3, 0xF2, 0x5D, 0xA1, 0x58, 0xC3, +0x9D, 0x67, 0x21, 0x6A, 0x50, 0xC4, 0x07, 0x6A, +0x4F, 0xCC, 0x47, 0x44, 0x19, 0x4A, 0x40, 0xA2, +0x52, 0xC4, 0x04, 0x04, 0x00, 0x18, 0x32, 0x13, +0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x01, 0xA4, 0x20, 0xA4, +0x09, 0x20, 0x90, 0x67, 0xB1, 0x67, 0x00, 0x18, +0x94, 0x03, 0x90, 0x67, 0xB1, 0x67, 0x53, 0x6E, +0x00, 0x18, 0x49, 0x1D, 0x7D, 0x67, 0x20, 0x6A, +0x50, 0xC3, 0x03, 0x6A, 0x4F, 0xCB, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x44, 0x9A, 0x9D, 0x67, +0x40, 0xA2, 0x52, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xA3, 0xF2, 0x6A, 0xA2, +0xA3, 0xF2, 0x4B, 0xA2, 0x73, 0xC4, 0x54, 0xC4, +0x04, 0x04, 0x00, 0x18, 0x32, 0x13, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xA2, 0xA4, 0x41, 0xA4, +0x80, 0xA4, 0xA0, 0x35, 0x55, 0xE5, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xED, 0x00, 0x18, 0xDD, 0x28, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0xA4, 0x67, +0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF7, 0x05, 0x4C, +0x07, 0x6E, 0x00, 0x18, 0xBB, 0x11, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF7, 0x45, 0xA2, 0x05, 0x5A, +0x13, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, +0xA0, 0xF2, 0x08, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, +0x00, 0xEA, 0x00, 0x6C, 0x07, 0x10, 0x01, 0x6C, +0x05, 0x10, 0x02, 0x6C, 0x03, 0x10, 0x03, 0x6C, +0x01, 0x10, 0x04, 0x6C, 0x00, 0x18, 0x70, 0x16, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0xA3, 0xF3, 0x48, 0xA3, 0x1F, 0x6C, 0x01, 0x6D, +0x4A, 0x32, 0x8C, 0xEA, 0xA0, 0xF0, 0x95, 0xA3, +0x47, 0xEC, 0xAC, 0xEA, 0x03, 0x22, 0xA3, 0xF3, +0x89, 0xC3, 0x04, 0x10, 0x01, 0x6A, 0x4B, 0xEA, +0xA3, 0xF3, 0x49, 0xC3, 0x30, 0xF0, 0x20, 0x68, +0xA2, 0xF6, 0x10, 0x48, 0xA3, 0xF3, 0x68, 0xA0, +0x02, 0x6A, 0x6C, 0xEA, 0x20, 0x22, 0x03, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xA3, 0xF3, 0x48, 0xC0, +0x00, 0x18, 0x15, 0x1E, 0x7D, 0x67, 0x48, 0xCB, +0x68, 0xAB, 0xA3, 0xF3, 0x8A, 0xA8, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xEB, 0x8E, 0xEB, 0x05, 0x23, +0x7D, 0x67, 0x88, 0xAB, 0x4C, 0xEC, 0x00, 0x18, +0x34, 0x1E, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0xA3, 0xF3, 0x88, 0xA2, 0x02, 0x6B, +0x8D, 0xEB, 0xA3, 0xF3, 0x68, 0xC2, 0x07, 0x97, +0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xA4, 0x67, 0x30, 0xF0, +0x20, 0x6C, 0x07, 0x6E, 0x42, 0xF7, 0x17, 0x4C, +0x00, 0x18, 0xBB, 0x11, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xA0, 0xF0, 0x68, 0xA2, +0x01, 0x6C, 0x00, 0x6D, 0xFF, 0x4B, 0x63, 0xF3, +0x6C, 0xC2, 0xA0, 0xF0, 0x47, 0xA2, 0x4C, 0xEC, +0x00, 0x18, 0xD7, 0x09, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF6, 0x04, 0x9A, 0x0A, 0xD4, 0x0A, 0x95, +0x40, 0xA0, 0xFF, 0x69, 0x30, 0xF0, 0x20, 0x6C, +0x62, 0x67, 0x2C, 0xEB, 0x42, 0xF7, 0x08, 0x4C, +0x01, 0x6E, 0x05, 0xD3, 0x00, 0x18, 0xBB, 0x11, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, 0x68, 0x9A, +0xF8, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, 0x4C, 0x9A, +0x00, 0x6B, 0x60, 0xC2, 0x0A, 0x94, 0x02, 0x6B, +0x40, 0xA4, 0x6C, 0xEA, 0x2C, 0xEA, 0xA0, 0xF0, +0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF6, +0x10, 0x4C, 0x04, 0xD4, 0x80, 0xF0, 0x78, 0xA4, +0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x80, 0xF0, +0x14, 0x22, 0x01, 0x6C, 0xC0, 0x6D, 0x00, 0x18, +0x4B, 0x06, 0x04, 0x94, 0x05, 0x92, 0x20, 0x68, +0x80, 0xF0, 0x78, 0xA4, 0x4D, 0xE8, 0x04, 0x6A, +0x6C, 0xEA, 0x2C, 0xEA, 0x2C, 0xE8, 0x17, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, 0x50, 0x9A, +0x01, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x60, 0xA2, +0x2C, 0xEB, 0x60, 0xC2, 0x00, 0x18, 0x4B, 0x06, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x70, 0x9A, +0x02, 0x6C, 0x40, 0xA3, 0x2C, 0xEA, 0x8D, 0xEA, +0x2C, 0xEA, 0x40, 0xC3, 0x11, 0x10, 0x04, 0x92, +0x01, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0xC3, 0xF2, +0x78, 0xA2, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x03, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, 0x04, 0x93, +0xC3, 0xF2, 0x58, 0xC3, 0x00, 0x18, 0x5F, 0x06, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, 0x88, 0xA2, +0x08, 0x6A, 0xFF, 0x6B, 0x8C, 0xEA, 0x0D, 0x22, +0x02, 0x6A, 0x4D, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x90, 0x9A, 0x01, 0x6D, 0x6C, 0xE8, +0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, +0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0x88, 0xA2, 0x10, 0x6A, 0xFF, 0x6B, 0x8C, 0xEA, +0x0D, 0x22, 0x04, 0x6A, 0x4D, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x90, 0x9A, 0x01, 0x6D, +0x6C, 0xE8, 0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, +0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, +0x42, 0xF7, 0x68, 0xA2, 0x20, 0x6A, 0x6C, 0xEA, +0x05, 0x22, 0x80, 0x6A, 0x4B, 0xEA, 0x4D, 0xE8, +0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x42, 0xF7, 0x68, 0xA2, 0x40, 0x6A, 0x4C, 0xEB, +0x03, 0x2B, 0x4D, 0xE8, 0xFF, 0x6A, 0x4C, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, 0x44, 0x9A, +0x00, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF1, +0x49, 0xA2, 0x03, 0x2A, 0x01, 0x6C, 0x00, 0x18, +0x44, 0x28, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0x68, 0xA2, 0x40, 0x6A, 0x04, 0x6C, 0x6C, 0xEA, +0x05, 0x2A, 0x00, 0x18, 0xFC, 0x26, 0x01, 0x6C, +0x01, 0x2A, 0x02, 0x6C, 0x00, 0x18, 0x44, 0x28, +0x98, 0x10, 0x40, 0xC0, 0x04, 0x94, 0xC3, 0xF2, +0x59, 0xA4, 0x04, 0x72, 0xA0, 0xF0, 0x13, 0x61, +0x00, 0x6C, 0x00, 0x18, 0x44, 0x28, 0xAF, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x04, 0xD2, 0x80, 0xF0, 0x58, 0xA2, 0x01, 0x6B, +0x6C, 0xEA, 0x2C, 0xEA, 0x80, 0xF0, 0x08, 0x22, +0x83, 0x67, 0xC0, 0x6D, 0x00, 0x18, 0x4B, 0x06, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x10, 0x4B, +0x60, 0x9B, 0x05, 0x94, 0x20, 0x68, 0x40, 0xA3, +0x8D, 0xE8, 0x01, 0x6C, 0x2C, 0xEA, 0x8D, 0xEA, +0x2C, 0xEA, 0x40, 0xC3, 0x04, 0x94, 0x04, 0x6A, +0x2C, 0xE8, 0x80, 0xF0, 0x78, 0xA4, 0x6C, 0xEA, +0x2C, 0xEA, 0x18, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF6, 0x50, 0x9A, 0x01, 0x6C, 0x10, 0xF0, +0x00, 0x6D, 0x60, 0xA2, 0x2C, 0xEB, 0x60, 0xC2, +0x00, 0x18, 0x4B, 0x06, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF3, 0x10, 0x4B, 0x60, 0x9B, 0x02, 0x6C, +0x40, 0xA3, 0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, +0x40, 0xC3, 0x05, 0x10, 0x01, 0x6C, 0x10, 0xF0, +0x00, 0x6D, 0x00, 0x18, 0x5F, 0x06, 0x30, 0xF0, +0x20, 0x6A, 0x42, 0xF7, 0x68, 0xA2, 0x08, 0x6A, +0x6C, 0xEA, 0x04, 0x22, 0x02, 0x6A, 0x4D, 0xE8, +0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x42, 0xF7, 0x68, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, +0x04, 0x22, 0x04, 0x6A, 0x4D, 0xE8, 0xFF, 0x6A, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, +0x64, 0x9A, 0x40, 0x6D, 0xFF, 0x6C, 0x00, 0xC3, +0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, +0x80, 0xF0, 0x58, 0xA0, 0xAC, 0xEA, 0x07, 0x22, +0xC3, 0xF2, 0x5A, 0xA0, 0x02, 0x72, 0x21, 0x60, +0x02, 0x6C, 0x00, 0x6D, 0x16, 0x10, 0x40, 0xA3, +0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, +0xC3, 0xF2, 0x5A, 0xA0, 0x02, 0x72, 0x11, 0x61, +0x00, 0x18, 0x78, 0x0A, 0x00, 0x18, 0xFC, 0x26, +0x01, 0x72, 0x05, 0x61, 0x80, 0xF0, 0x9D, 0xA0, +0x01, 0x6D, 0x00, 0x6E, 0x03, 0x10, 0x00, 0x6C, +0xA4, 0x67, 0xC5, 0x67, 0x00, 0x18, 0x29, 0x0B, +0x04, 0x10, 0xE3, 0xF2, 0x57, 0xA0, 0xC3, 0xF2, +0x5A, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, +0x54, 0x9A, 0x22, 0x6B, 0x60, 0xC2, 0x1B, 0x10, +0x40, 0xC0, 0x04, 0x94, 0xC3, 0xF2, 0x5A, 0xA4, +0x04, 0x6C, 0x02, 0x72, 0x03, 0x60, 0x08, 0x72, +0x05, 0x61, 0x0C, 0x6C, 0x01, 0x6D, 0x00, 0x6E, +0x00, 0x18, 0x29, 0x0B, 0x00, 0x6C, 0x00, 0x18, +0x65, 0x03, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0x8D, 0xA2, 0x01, 0x6D, 0x00, 0x6E, 0x00, 0x18, +0x29, 0x0B, 0x00, 0x18, 0x74, 0x03, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x90, 0x67, 0x00, 0x18, 0xCD, 0x0B, +0x90, 0x67, 0x00, 0x18, 0xC0, 0x1F, 0x01, 0x6C, +0x00, 0x18, 0x21, 0x0A, 0x30, 0xF0, 0x20, 0x6A, +0x82, 0xF7, 0x68, 0xA2, 0x07, 0x6A, 0x6C, 0xEA, +0x0E, 0xEA, 0x02, 0x2A, 0x00, 0x18, 0xC5, 0x25, +0x90, 0x67, 0x00, 0x18, 0x04, 0x0A, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6A, 0x27, 0x67, 0x4C, 0xE9, 0x6F, 0x41, +0x4C, 0xEB, 0x04, 0x67, 0x02, 0x5B, 0x4C, 0xE8, +0x4C, 0xED, 0x4C, 0xEE, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0xB2, 0x1C, 0x10, 0x58, 0x55, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0x33, 0x00, 0xF3, +0x14, 0x4A, 0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0xD0, 0xF4, 0x44, 0x40, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF6, 0x60, 0x9A, 0x34, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF6, 0x64, 0x9A, 0x2F, 0x10, +0x80, 0xF4, 0x44, 0x40, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF6, 0x68, 0x9A, 0x24, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF6, 0x6C, 0x9A, 0x1F, 0x10, +0xC0, 0xF4, 0x48, 0x40, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF6, 0x70, 0x9A, 0x14, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF6, 0x74, 0x9A, 0x0F, 0x10, +0x70, 0xF4, 0x48, 0x40, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF6, 0x78, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF6, 0x7C, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x6D, 0xE0, +0x41, 0xE0, 0xA3, 0xF2, 0x8C, 0xA0, 0xA3, 0xF2, +0x5C, 0xA0, 0x8D, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF1, +0x39, 0xC2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x10, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0x09, 0x4B, 0x00, 0xF0, 0x68, 0xDA, +0x10, 0xF0, 0x20, 0x6B, 0x00, 0xF0, 0x08, 0x4A, +0xC0, 0xF3, 0x19, 0x4B, 0x61, 0xDA, 0x10, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x09, 0x4B, 0x62, 0xDA, +0x10, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x19, 0x4B, +0x63, 0xDA, 0x10, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, +0x09, 0x4B, 0x64, 0xDA, 0x10, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x19, 0x4B, 0x65, 0xDA, 0x10, 0xF0, +0x20, 0x6B, 0xE0, 0xF2, 0x01, 0x4B, 0x66, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x00, 0x6B, 0x80, 0xF0, 0x6C, 0xDA, 0x40, 0xF1, +0x77, 0xC2, 0x00, 0x18, 0x70, 0x05, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x46, 0xF1, +0x1C, 0x4A, 0x66, 0xF1, 0x0C, 0x4C, 0x00, 0x6B, +0x60, 0xC2, 0x70, 0xC2, 0x01, 0x4A, 0x62, 0x67, +0x8E, 0xEB, 0xF9, 0x2B, 0x05, 0x97, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xA3, 0xF2, +0x69, 0xC2, 0xA3, 0xF2, 0x6A, 0xC2, 0xA3, 0xF2, +0x6B, 0xC2, 0xA3, 0xF2, 0x68, 0xC2, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x46, 0xF1, 0x08, 0x4A, 0x67, 0x42, 0x09, 0x4B, +0x00, 0x6C, 0x80, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, +0xFB, 0x61, 0x42, 0xF4, 0x10, 0x6A, 0x1F, 0xF7, +0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF4, 0x7C, 0x9B, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF4, 0x60, 0x9B, 0x6D, 0xE2, +0x04, 0x4A, 0x00, 0x6C, 0x62, 0xF4, 0x00, 0x72, +0x80, 0xDB, 0xE9, 0x61, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF5, 0x50, 0x9A, 0x03, 0x6B, 0xC8, 0x6C, +0x40, 0x9A, 0x42, 0x32, 0x52, 0x32, 0x6C, 0xEA, +0x03, 0x72, 0x06, 0x60, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF1, 0x0C, 0x4B, 0x69, 0xE2, 0x80, 0xA2, +0x00, 0x18, 0xD4, 0x06, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x9B, 0x05, 0x00, 0x18, 0xCB, 0x05, +0x00, 0x18, 0x2F, 0x07, 0x00, 0x18, 0xA7, 0x29, +0x00, 0x18, 0x5F, 0x1D, 0x00, 0x18, 0x4D, 0x23, +0x00, 0x18, 0x41, 0x23, 0x00, 0x18, 0xA0, 0x0C, +0x00, 0x18, 0x99, 0x0C, 0x00, 0x18, 0x74, 0x03, +0x00, 0x18, 0x84, 0x28, 0x00, 0x18, 0x72, 0x1F, +0x00, 0x18, 0x58, 0x1F, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x00, 0x6B, 0x40, 0xF6, +0x7A, 0xC2, 0x40, 0xF6, 0x7B, 0xC2, 0x40, 0xF1, +0x77, 0xC2, 0x40, 0xF1, 0x78, 0xC2, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF6, 0x40, 0x9A, +0x01, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF6, 0x84, 0x9A, +0xFF, 0x6B, 0x20, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF6, 0x88, 0x9A, 0x08, 0x6D, +0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, +0x40, 0xC4, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF6, 0x70, 0x9A, 0xFF, 0x6C, 0x01, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0x05, 0x5C, 0x5E, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0xA0, 0xF2, +0x1C, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x50, 0x9B, +0xAD, 0xEA, 0xA2, 0xF6, 0x50, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE0, 0xF6, 0x74, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, 0x60, 0x9B, +0x32, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x10, 0x4B, 0x41, 0x9B, 0xAD, 0xEA, 0x41, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF6, 0x78, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF6, +0x7C, 0x9B, 0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x42, 0x9B, 0xAD, 0xEA, +0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, +0x60, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF7, 0x64, 0x9B, 0x10, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, 0x43, 0x9B, +0xAD, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF7, 0x68, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF7, 0x6C, 0x9B, 0x40, 0xDB, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x10, 0x4B, 0x44, 0x9B, 0xAD, 0xEA, 0x44, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, 0x70, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, +0x74, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x05, 0x5C, 0x63, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x88, 0x34, 0xC0, 0xF2, 0x10, 0x4A, 0x89, 0xE2, +0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x90, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, +0xA2, 0xF6, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF6, 0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF6, 0x54, 0x9A, 0x35, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x81, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x41, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF6, 0x7C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF6, +0x58, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x82, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF7, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF7, 0x40, 0x9A, 0x11, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x83, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x43, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, 0x6C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF7, +0x48, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, 0x84, 0x9B, +0xAF, 0xEA, 0x8C, 0xEA, 0x44, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF7, 0x74, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF7, 0x50, 0x9A, +0xA0, 0xDA, 0x20, 0xE8, 0x03, 0x24, 0x01, 0x74, +0x12, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x4E, 0x9B, 0xAD, 0xEA, +0x4E, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, +0x74, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF7, 0x78, 0x9B, 0x10, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, 0x4F, 0x9B, +0xAD, 0xEA, 0x4F, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF6, 0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF7, 0x7C, 0x9B, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0x03, 0x24, 0x01, 0x74, +0x13, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x8E, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x4E, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF7, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x54, 0x9A, 0x11, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x8F, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x4F, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, 0x7C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, +0x50, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, 0x80, 0x9C, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x50, 0xDB, 0xA2, 0xF6, 0x10, 0x4B, 0x41, 0xDB, +0x42, 0xDB, 0x43, 0xDB, 0x44, 0xDB, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF6, 0x9C, 0x9C, +0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0x00, 0xF7, +0x84, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0x00, 0xF7, 0x8C, 0x9C, 0x40, 0xDC, 0x30, 0xF0, +0x20, 0x6C, 0x00, 0xF7, 0x94, 0x9C, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0x00, 0xF7, 0x98, 0x9C, +0x4E, 0xDB, 0x4F, 0xDB, 0x40, 0xDC, 0x30, 0xF0, +0x20, 0x6C, 0x00, 0xF7, 0x9C, 0x9C, 0x40, 0xDC, +0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF7, +0x60, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF6, 0x74, 0x9B, +0x01, 0x6A, 0x4B, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE0, 0xF6, 0x78, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, 0x60, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, +0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF4, 0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF6, 0x70, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF7, 0x64, 0x9B, +0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF7, 0xA8, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x10, 0x6E, 0xA2, 0xF6, 0xD0, 0xDB, +0x01, 0xF7, 0x01, 0x6A, 0xA2, 0xF6, 0x10, 0x4B, +0x00, 0x6C, 0x42, 0xDB, 0x43, 0xDB, 0xA1, 0xDB, +0x84, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, +0x60, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF6, 0x7C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF7, 0x64, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, 0x6C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF7, +0x54, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x00, 0x6B, 0x6C, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF7, 0x40, 0x9A, 0x60, 0xDA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x6C, 0xA2, 0xF6, +0x10, 0x4A, 0x6F, 0x4C, 0x0E, 0xF0, 0x01, 0x6B, +0x8E, 0xDA, 0x6F, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF7, 0x58, 0x9A, 0x80, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF7, 0x5C, 0x9A, 0x60, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x74, 0x06, 0x00, 0x18, 0x90, 0x06, +0x00, 0x18, 0xA3, 0x06, 0x00, 0x18, 0xC0, 0x06, +0x00, 0x18, 0xBA, 0x06, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x69, 0x11, +0x00, 0x18, 0x9F, 0x11, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF7, +0x6C, 0x9A, 0xC0, 0x6A, 0xFF, 0x68, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x0A, 0x6C, 0x00, 0x18, +0xAA, 0x11, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF7, +0x50, 0x9A, 0x01, 0x6B, 0x05, 0x97, 0x40, 0xA2, +0x0C, 0xEA, 0x5E, 0x32, 0x6E, 0xEA, 0x6C, 0xEA, +0x0C, 0xEA, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF5, 0x74, 0x9B, 0x10, 0xF0, +0x20, 0x6A, 0xA3, 0xF3, 0x01, 0x4A, 0x40, 0xDB, +0x00, 0x68, 0x25, 0x10, 0x82, 0xF3, 0x08, 0x70, +0x11, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, +0x64, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF7, 0x54, 0x9A, 0x03, 0x6B, 0x6B, 0xEB, +0x60, 0xC2, 0x15, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, +0x01, 0x48, 0x4C, 0xE8, 0x14, 0x6C, 0x00, 0x18, +0xAA, 0x11, 0x33, 0x58, 0x08, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF7, 0x58, 0x9A, 0x60, 0xA2, +0x08, 0x6A, 0x6C, 0xEA, 0x04, 0x2A, 0x00, 0x18, +0xD9, 0x06, 0x01, 0x72, 0xD7, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF7, 0x54, 0x9A, 0x02, 0x6B, +0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF5, 0x74, 0x9B, 0x10, 0xF0, 0x20, 0x6A, +0xA3, 0xF3, 0x02, 0x4A, 0x40, 0xDB, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF5, 0x14, 0x9A, 0x00, 0x6D, +0x02, 0xF0, 0x00, 0x6E, 0x90, 0x67, 0x00, 0x18, +0xB6, 0x11, 0x04, 0x6A, 0x40, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF6, 0x44, 0x9A, 0x20, 0x48, +0x0E, 0xEA, 0xF7, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF5, 0x9C, 0x9A, 0x00, 0x6D, 0x00, 0xF4, +0x00, 0x6E, 0x00, 0x18, 0xB6, 0x11, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x3B, 0x07, +0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF3, 0x5C, 0xC3, +0x00, 0x18, 0xE1, 0x05, 0x00, 0x18, 0x51, 0x07, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF7, 0x5C, 0x9A, +0x3F, 0x6B, 0x60, 0xC2, 0x00, 0x18, 0xD2, 0x05, +0x00, 0x18, 0xD6, 0x05, 0x00, 0x18, 0x3F, 0x1A, +0x00, 0x18, 0x0E, 0x07, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x61, 0xF0, 0x5C, 0x9A, 0xE0, 0xF1, 0x1B, 0x6B, +0x6B, 0xEB, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0x81, 0xF0, 0x40, 0x9A, 0x0F, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF6, 0x64, 0x9A, +0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x81, 0xF0, 0x4C, 0x9A, 0xFF, 0x6B, 0x40, 0xA2, +0x4C, 0xEB, 0x6A, 0x33, 0x03, 0x6A, 0x4C, 0xEB, +0x02, 0x6A, 0x04, 0x23, 0x03, 0x73, 0x03, 0x6A, +0x01, 0x60, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x00, 0x6A, 0xA2, 0xF6, 0x10, 0x48, +0x01, 0x6C, 0x02, 0x6D, 0x00, 0x6E, 0x40, 0xF0, +0x50, 0xC8, 0x00, 0x18, 0xE2, 0x0F, 0x40, 0xF0, +0xD0, 0xA8, 0x01, 0x6C, 0x03, 0x6D, 0xC2, 0x36, +0x00, 0x18, 0xE2, 0x0F, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF5, 0x08, 0x9A, 0xFF, 0xF6, 0x1F, 0x6A, +0x01, 0x6D, 0x60, 0xA8, 0xFF, 0xF7, 0x1F, 0x6C, +0xFF, 0x69, 0x6C, 0xEA, 0x40, 0xC8, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF6, 0x70, 0x9A, 0x40, 0x9B, +0xAD, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x81, 0xF0, 0x70, 0x9A, 0xE0, 0xF3, 0x1F, 0x4D, +0x40, 0xAB, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF7, +0x4C, 0x9A, 0xC0, 0x6C, 0x60, 0xA2, 0x8C, 0xEB, +0x60, 0xC2, 0x0A, 0x6C, 0x00, 0x18, 0xAA, 0x11, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF7, 0x70, 0x9A, +0x40, 0x6C, 0x8B, 0xEC, 0x40, 0xA3, 0x2C, 0xEA, +0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x81, 0xF0, 0x54, 0x9A, 0x80, 0x6B, +0x6B, 0xEB, 0x60, 0xC2, 0x40, 0xA0, 0xC0, 0x6B, +0x6C, 0xEA, 0x40, 0x72, 0x08, 0x61, 0x0A, 0x6C, +0x00, 0x18, 0xAA, 0x11, 0x30, 0xF0, 0x20, 0x6A, +0x81, 0xF0, 0x7C, 0x9A, 0x09, 0x10, 0x80, 0x72, +0x0C, 0x61, 0x0A, 0x6C, 0x00, 0x18, 0xAA, 0x11, +0x30, 0xF0, 0x20, 0x6A, 0xA1, 0xF0, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x81, 0xF0, 0x58, 0x9A, +0x60, 0xDA, 0x0A, 0x6C, 0x00, 0x18, 0xAA, 0x11, +0x30, 0xF0, 0x20, 0x6A, 0xA1, 0xF0, 0x64, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x81, 0xF0, 0x58, 0x9A, +0x60, 0xDA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0x00, 0x00, 0x00, 0x00, +0x60, 0xBA, 0x20, 0xE8, 0x40, 0xBA, 0x20, 0xE8, +0x4C, 0xB8, 0x00, 0x65, 0x80, 0x34, 0x8D, 0xEA, +0x8A, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x4C, 0xB8, 0x00, 0x65, +0x80, 0x34, 0x8F, 0xEC, 0x8C, 0xEA, 0x8A, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x8E, 0x35, 0xA2, 0xF6, 0x10, 0x4B, 0xAD, 0xE3, +0x83, 0xF2, 0x78, 0xA3, 0x07, 0x6D, 0x8C, 0xED, +0x67, 0xED, 0x01, 0x6C, 0x8C, 0xEB, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x24, 0x67, +0x4C, 0xE9, 0x4C, 0xED, 0x2E, 0x34, 0x07, 0x6B, +0x01, 0x75, 0x4C, 0xEC, 0x2C, 0xEB, 0x1F, 0x61, +0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, +0x11, 0xE4, 0x01, 0x6A, 0x44, 0xEB, 0x83, 0xF2, +0x78, 0xA4, 0x00, 0x6D, 0x6D, 0xEA, 0x83, 0xF2, +0x58, 0xC4, 0x91, 0x67, 0x00, 0x18, 0x95, 0x26, +0xA0, 0xF0, 0x56, 0xA0, 0x4E, 0xE9, 0x1C, 0x29, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x4C, 0x9A, +0x40, 0x9A, 0x50, 0x32, 0x00, 0xF5, 0x42, 0x32, +0xE3, 0xF2, 0x5A, 0xC8, 0x11, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x51, 0xE4, +0x01, 0x6A, 0x44, 0xEB, 0x83, 0xF2, 0x78, 0xA4, +0x4F, 0xEA, 0x01, 0x6D, 0x6C, 0xEA, 0x83, 0xF2, +0x58, 0xC4, 0x91, 0x67, 0x00, 0x18, 0x95, 0x26, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x6D, 0x00, 0x18, +0x95, 0x26, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x00, 0x6D, 0x00, 0x18, 0x95, 0x26, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x4C, 0xEC, +0x05, 0x5C, 0xAC, 0xEA, 0x4B, 0x60, 0x30, 0xF0, +0x20, 0x6B, 0x88, 0x34, 0x40, 0xF0, 0x1C, 0x4B, +0x8D, 0xE3, 0x60, 0x9B, 0x00, 0xEB, 0x05, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x70, 0x9A, +0x2D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x70, 0x9A, 0x20, 0x10, 0x05, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x74, 0x9A, 0x22, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x74, 0x9A, +0x15, 0x10, 0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x78, 0x9A, 0x17, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x78, 0x9A, 0x0A, 0x10, +0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x7C, 0x9A, 0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x7C, 0x9A, 0x80, 0xA3, 0xF7, 0x6A, +0x0A, 0x10, 0x0C, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x60, 0x9A, 0x40, 0xA3, 0xFF, 0x6C, +0x08, 0x6D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x60, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x6B, 0xAC, 0xEA, +0x6E, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x05, 0x5C, +0x48, 0x32, 0x08, 0x60, 0x30, 0xF0, 0x20, 0x6B, +0x88, 0x34, 0x60, 0xF0, 0x10, 0x4B, 0x8D, 0xE3, +0x60, 0x9B, 0x00, 0xEB, 0x01, 0x6A, 0x4B, 0xEA, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, +0x8C, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0xC0, 0xF3, +0xA4, 0x9D, 0x60, 0x9C, 0xAC, 0xEB, 0x1E, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x8C, 0x9B, +0x30, 0xF0, 0x20, 0x6D, 0xC0, 0xF3, 0xA4, 0x9D, +0x60, 0x9C, 0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, +0xC0, 0xF3, 0xB0, 0x9D, 0x0E, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xA0, 0xF3, 0x8C, 0x9B, 0x30, 0xF0, +0x20, 0x6D, 0xC0, 0xF3, 0xA4, 0x9D, 0x60, 0x9C, +0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, 0xC0, 0xF3, +0xB4, 0x9D, 0xAD, 0xEB, 0x60, 0xDC, 0x60, 0xF5, +0x60, 0x42, 0x1F, 0xF7, 0x00, 0x6C, 0x8C, 0xEB, +0x02, 0xF0, 0x00, 0x73, 0x10, 0x61, 0x2E, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x8C, 0x9B, +0x30, 0xF0, 0x20, 0x6D, 0xC0, 0xF3, 0xA4, 0x9D, +0x60, 0x9C, 0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, +0xC0, 0xF3, 0xB8, 0x9D, 0xE6, 0x17, 0x1E, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x6C, 0x9B, +0x1D, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, +0x8C, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0xC0, 0xF3, +0xA4, 0x9D, 0x60, 0x9C, 0xAC, 0xEB, 0x30, 0xF0, +0x20, 0x6D, 0xC0, 0xF3, 0xBC, 0x9D, 0xAD, 0xEB, +0x60, 0xDC, 0x60, 0xF5, 0x60, 0x42, 0x1F, 0xF7, +0x00, 0x6C, 0x8C, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x01, 0x60, 0x07, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x68, 0x9B, 0x69, 0xE2, 0x40, 0x9A, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x6C, 0x9B, 0x69, 0xE2, 0x40, 0x9A, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x74, 0xAC, 0xEA, +0x13, 0x60, 0x03, 0x24, 0x02, 0x74, 0x15, 0x60, +0x18, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x10, 0x4B, 0xE3, 0xF2, 0xD4, 0xA3, 0x01, 0x6D, +0x4C, 0xED, 0x02, 0x6A, 0x4B, 0xEA, 0xCC, 0xEA, +0xAD, 0xEA, 0xE3, 0xF2, 0x54, 0xC3, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF1, 0x47, 0xC3, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF7, +0x4D, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, +0x40, 0x9A, 0x60, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, +0x24, 0x22, 0x02, 0x5C, 0x03, 0x61, 0x02, 0x74, +0x17, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0xE3, 0xF2, 0x94, 0xA3, +0x01, 0x6A, 0x8C, 0xEA, 0xE3, 0xF2, 0x97, 0xA3, +0x7F, 0x6B, 0x5C, 0x32, 0x8C, 0xEB, 0x6D, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF3, 0x64, 0x9B, 0x40, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, 0x6D, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x48, 0x9A, +0x60, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0x4C, 0x9A, 0x60, 0xA2, 0xFF, 0x6A, +0x6C, 0xEA, 0xFF, 0x72, 0x00, 0x6A, 0x0B, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x50, 0x9A, +0x60, 0xA2, 0x07, 0x6A, 0x6C, 0xEA, 0x07, 0x6B, +0x6E, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x74, 0xAC, 0xEA, +0x03, 0x60, 0x02, 0x74, 0x09, 0x60, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x02, 0x6B, 0xE3, 0xF2, 0x7C, 0xC2, 0x15, 0x10, +0x09, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0xA0, 0xF0, 0x63, 0xA2, 0xE3, 0xF2, +0x7C, 0xC2, 0x05, 0x10, 0xFF, 0x4A, 0x30, 0xF0, +0x20, 0x6B, 0xA6, 0xF1, 0x4C, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xE3, 0xF2, +0x7C, 0xA2, 0xE3, 0xF2, 0x94, 0xA2, 0xE3, 0xF2, +0x7D, 0xC2, 0x40, 0x6B, 0x8D, 0xEB, 0xE3, 0xF2, +0x74, 0xC2, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0xA0, 0xF0, 0x9C, 0xA2, 0x01, 0x6B, 0x6C, 0xEC, +0x07, 0x24, 0x63, 0xF3, 0x50, 0xA2, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x13, 0x2A, 0x04, 0x10, +0x00, 0x18, 0x5B, 0x08, 0x01, 0x72, 0x0E, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0xE3, 0xF2, 0x94, 0xA2, 0x04, 0x6B, 0x8C, 0xEB, +0x05, 0x2B, 0x80, 0xF0, 0x5D, 0xA2, 0x05, 0x5A, +0x58, 0x67, 0x01, 0x10, 0x00, 0x6A, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xA2, 0xF6, 0x10, 0x48, 0xA0, 0xF0, 0x7C, 0xA0, +0x01, 0x6A, 0xFF, 0x69, 0x4C, 0xEB, 0x09, 0x23, +0x63, 0xF3, 0x71, 0xA0, 0x6C, 0xEA, 0x2C, 0xEA, +0x21, 0x2A, 0x80, 0xF0, 0x5D, 0xA0, 0x1E, 0x2A, +0x18, 0x10, 0x00, 0x18, 0x5B, 0x08, 0x01, 0x72, +0x19, 0x61, 0xE3, 0xF2, 0x78, 0xA0, 0x03, 0x6A, +0x6C, 0xEA, 0x14, 0x2A, 0x80, 0xF0, 0x5D, 0xA0, +0x11, 0x2A, 0x04, 0x6A, 0x6C, 0xEA, 0x0E, 0x2A, +0x10, 0x6A, 0x6C, 0xEA, 0x0B, 0x2A, 0xE3, 0xF2, +0x74, 0xA0, 0x20, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x05, 0x22, 0xC3, 0xF2, 0x4C, 0xA0, 0x01, 0x5A, +0x58, 0x67, 0x01, 0x10, 0x00, 0x6A, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, 0x57, 0xA2, +0x02, 0x6B, 0x4C, 0xEB, 0x01, 0x6A, 0x18, 0x2B, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x54, 0x9A, +0x40, 0xA2, 0x11, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0x58, 0x9A, 0x40, 0xA2, 0x0B, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x5C, 0x9A, +0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, 0x46, 0x32, +0x01, 0x6B, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0xE3, 0xF2, 0x15, 0xA3, 0x20, 0x6F, 0xFF, 0x6A, +0x0C, 0xEF, 0x4C, 0xEF, 0x4C, 0xEC, 0x4C, 0xED, +0x4C, 0xEE, 0x6E, 0x2F, 0xE3, 0xF2, 0x14, 0xA3, +0x01, 0x6F, 0x0C, 0xEF, 0x4C, 0xEF, 0x09, 0x27, +0x03, 0xF3, 0x54, 0xA3, 0xE4, 0x42, 0x03, 0x4A, +0x03, 0xF3, 0xEF, 0xC3, 0x03, 0xF3, 0x4E, 0xC3, +0x08, 0x10, 0x05, 0x6F, 0x03, 0xF3, 0xEF, 0xC3, +0x05, 0x4E, 0x04, 0x6F, 0x03, 0xF3, 0xEE, 0xC3, +0x4C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x03, 0xF3, 0xED, 0xA2, 0x03, 0xF3, +0x6E, 0xA2, 0xE3, 0xEB, 0x09, 0x61, 0x03, 0xF3, +0x6F, 0xA2, 0xE3, 0xF2, 0xDE, 0xC2, 0x71, 0xE4, +0xB7, 0xE4, 0x03, 0xF3, 0xB0, 0xC2, 0x09, 0x10, +0x03, 0xF3, 0x8F, 0xA2, 0x77, 0xE5, 0xB9, 0xE6, +0x6F, 0xE4, 0xE3, 0xF2, 0xDE, 0xC2, 0x03, 0xF3, +0x70, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x03, 0xF3, 0x6F, 0xA2, 0x03, 0xF3, +0x90, 0xA2, 0x0A, 0x4B, 0x82, 0xEB, 0x02, 0x60, +0x03, 0xF3, 0x70, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x03, 0xF3, 0x70, 0xA2, +0xE3, 0xF2, 0x9E, 0xA2, 0x23, 0x4B, 0x82, 0xEB, +0x02, 0x60, 0xE3, 0xF2, 0x7E, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x03, 0xF3, +0x70, 0xA2, 0xFF, 0x6C, 0x03, 0xF3, 0x66, 0xCA, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x60, 0x9B, +0x03, 0xF3, 0x46, 0xAA, 0xA0, 0xA3, 0x8C, 0xED, +0x4E, 0xED, 0x02, 0x25, 0x4C, 0xEC, 0x80, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0xE3, 0xF2, 0x95, 0xA2, 0x41, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xE3, 0xF2, 0x75, 0xC2, 0x04, 0x10, +0x40, 0x6A, 0x0D, 0xEA, 0xE3, 0xF2, 0x55, 0xC3, +0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x04, 0x6B, 0x63, 0xF3, 0x64, 0xC2, 0x03, 0x6B, +0x63, 0xF3, 0x65, 0xC2, 0x64, 0x6B, 0x63, 0xF3, +0x66, 0xCA, 0x01, 0x6B, 0x63, 0xF3, 0x68, 0xC2, +0x05, 0x6B, 0x63, 0xF3, 0x69, 0xC2, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xE3, 0xF2, 0x7F, 0xA2, +0xA0, 0xF0, 0x80, 0xA2, 0x63, 0xEC, 0x22, 0x60, +0x03, 0xF3, 0x82, 0xA2, 0x01, 0x4C, 0x03, 0xF3, +0x82, 0xC2, 0x03, 0xF3, 0xA2, 0xA2, 0x63, 0xF3, +0x89, 0xA2, 0xA3, 0xEC, 0x17, 0x61, 0x03, 0x6D, +0xB8, 0xEB, 0x03, 0xF3, 0x8C, 0xA2, 0x03, 0xF3, +0xAD, 0xA2, 0x04, 0x6F, 0x01, 0x4C, 0x03, 0xF3, +0x8C, 0xC2, 0xE3, 0xF2, 0x9E, 0xA2, 0xFE, 0x4C, +0x12, 0xEB, 0x6D, 0xE4, 0x03, 0xF3, 0x71, 0xC2, +0x03, 0xF3, 0x8C, 0xA2, 0x03, 0xF3, 0xD1, 0xA2, +0x00, 0x18, 0xBF, 0x08, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0xC6, 0xF1, 0x05, 0x4B, 0xFF, 0x6A, 0xA7, 0x43, +0x8C, 0xEA, 0x26, 0x4D, 0x00, 0x6C, 0x80, 0xC3, +0x01, 0x4B, 0x83, 0x67, 0xAE, 0xEC, 0xFA, 0x2C, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x03, 0xF3, 0x81, 0xC3, 0x03, 0xF3, 0x82, 0xC3, +0x03, 0xF3, 0x8C, 0xC3, 0x01, 0x6C, 0x8E, 0xEA, +0x05, 0x2A, 0x2D, 0x6C, 0x03, 0xF3, 0x92, 0xC3, +0x03, 0xF3, 0x53, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x0C, 0xEC, 0x00, 0x6D, 0x00, 0x18, 0xF2, 0x07, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x43, 0xF3, 0x88, 0x9B, 0x43, 0xF3, 0x44, 0xDB, +0x83, 0xEA, 0x31, 0x61, 0xE3, 0xF2, 0xD4, 0xA3, +0x01, 0x6D, 0xCC, 0xED, 0x0C, 0xED, 0x0E, 0x25, +0x03, 0xF3, 0xD4, 0xA3, 0x03, 0xF3, 0xB0, 0xA3, +0x93, 0xE2, 0x0E, 0x4E, 0xBB, 0xE6, 0x63, 0xF3, +0xA4, 0xA3, 0x82, 0x34, 0x8A, 0x34, 0xAF, 0xE6, +0x89, 0xE3, 0x0B, 0x10, 0x63, 0xF3, 0xC5, 0xA3, +0x03, 0xF3, 0xB0, 0xA3, 0x8B, 0xE2, 0xCB, 0xEE, +0xAF, 0xE6, 0x42, 0x32, 0x0A, 0x4B, 0x4A, 0x32, +0x49, 0xE3, 0x0C, 0xEA, 0x2D, 0x5A, 0x0F, 0x60, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x69, 0xE2, 0x03, 0xF3, 0x95, 0xA2, 0x01, 0x4C, +0x03, 0xF3, 0x95, 0xC2, 0x03, 0xF3, 0x41, 0xA3, +0x01, 0x4A, 0x03, 0xF3, 0x41, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x03, 0xF3, +0x81, 0xA2, 0x63, 0xF3, 0x66, 0xAA, 0x63, 0xEC, +0x7A, 0x60, 0x82, 0x10, 0xA0, 0xA4, 0xAD, 0xE3, +0xFF, 0x6D, 0xAC, 0xEB, 0x63, 0xEE, 0x02, 0x60, +0xC2, 0x67, 0x06, 0x10, 0x01, 0x4A, 0xAC, 0xEA, +0x2D, 0x72, 0x01, 0x4C, 0xF3, 0x61, 0x00, 0x6E, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x63, 0xF3, 0xE6, 0xAA, 0x63, 0xF3, 0x48, 0xA2, +0x30, 0xF0, 0x20, 0x6D, 0x00, 0x6C, 0x5F, 0xE7, +0xC6, 0xF1, 0x05, 0x4D, 0x64, 0x67, 0x40, 0xA5, +0x51, 0xE4, 0xFF, 0x6A, 0x4C, 0xEC, 0x82, 0xEF, +0x06, 0x61, 0x01, 0x4B, 0x4C, 0xEB, 0x2D, 0x73, +0x01, 0x4D, 0xF5, 0x61, 0x00, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x03, 0xF3, +0xD2, 0xC2, 0x03, 0xF3, 0x73, 0xC2, 0x03, 0xF3, +0x72, 0xA2, 0x0A, 0x5B, 0x05, 0x61, 0xF6, 0x4B, +0x03, 0xF3, 0x6D, 0xC2, 0x00, 0x6B, 0x05, 0x10, +0x00, 0x6C, 0x03, 0xF3, 0x8D, 0xC2, 0x0A, 0x6C, +0x6F, 0xE4, 0x03, 0xF3, 0x6C, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x03, 0xF3, +0x72, 0xA2, 0x03, 0xF3, 0x93, 0xA2, 0xE3, 0xF2, +0xB4, 0xA2, 0x73, 0xE4, 0x01, 0x6B, 0xAC, 0xEB, +0x03, 0x23, 0x63, 0xF3, 0x64, 0xA2, 0x02, 0x10, +0x63, 0xF3, 0x65, 0xA2, 0x71, 0xE4, 0x01, 0x4C, +0x03, 0xF3, 0x91, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x03, 0xF3, 0x71, 0xA2, +0x10, 0x5B, 0x03, 0x60, 0x10, 0x6B, 0x03, 0xF3, +0x71, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x03, 0xF3, 0x71, 0xA2, 0x03, 0xF3, +0x8C, 0xA2, 0x03, 0xF3, 0xAD, 0xA2, 0x02, 0x4B, +0x03, 0xF3, 0x71, 0xC2, 0x03, 0xF3, 0xD1, 0xA2, +0x03, 0x6F, 0x00, 0x18, 0xBF, 0x08, 0x00, 0x6C, +0x00, 0x18, 0x25, 0x09, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x00, 0x6B, 0x63, 0xF3, 0xC8, 0xA2, +0xC6, 0xF1, 0x05, 0x4C, 0x43, 0x67, 0x7E, 0x17, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xFF, 0x68, +0x8C, 0xE8, 0xE3, 0xF2, 0x94, 0xA2, 0x03, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x00, 0x6C, 0xE3, 0xF2, +0x9F, 0xC2, 0xE3, 0xF2, 0x98, 0xC2, 0x41, 0x6C, +0x8B, 0xEC, 0x8C, 0xEB, 0xE3, 0xF2, 0x95, 0xA2, +0xE3, 0xF2, 0x74, 0xC2, 0x11, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x90, 0x67, 0xE3, 0xF2, 0x75, 0xC2, +0x00, 0x18, 0xC7, 0x1F, 0x90, 0x67, 0x00, 0x18, +0xC0, 0x1F, 0x90, 0x67, 0x00, 0x18, 0xD5, 0x1F, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xAD, 0x20, +0x00, 0x6D, 0xC5, 0x67, 0xFF, 0x6C, 0x00, 0x18, +0x49, 0x1D, 0x0C, 0x6D, 0x01, 0x6C, 0x00, 0x18, +0x34, 0x08, 0x0C, 0x6C, 0x00, 0x18, 0x29, 0x27, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x00, 0x18, 0xAD, 0x20, 0x05, 0x20, +0x00, 0x6D, 0xFF, 0x6C, 0xC5, 0x67, 0x00, 0x18, +0x49, 0x1D, 0x04, 0x6D, 0x01, 0x6C, 0x00, 0x18, +0x34, 0x08, 0x04, 0x6C, 0x00, 0x18, 0x29, 0x27, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6C, 0x2F, 0x6E, +0xA4, 0x67, 0x00, 0x18, 0x49, 0x1D, 0x00, 0x18, +0x86, 0x20, 0x00, 0x18, 0xF4, 0x20, 0x08, 0x6D, +0x01, 0x6C, 0x00, 0x18, 0x34, 0x08, 0x08, 0x6C, +0x00, 0x18, 0x29, 0x27, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, +0x01, 0x74, 0xAC, 0xE8, 0x1C, 0x61, 0x30, 0xF0, +0x20, 0x69, 0xA2, 0xF6, 0x10, 0x49, 0xA0, 0xF0, +0x49, 0xA1, 0x09, 0x22, 0x90, 0x67, 0x00, 0x18, +0xB6, 0x1F, 0xA0, 0xF0, 0xA9, 0xA1, 0x90, 0x67, +0x00, 0x18, 0x82, 0x20, 0x09, 0x10, 0x90, 0x67, +0x00, 0x18, 0xD5, 0x1F, 0x90, 0x67, 0x00, 0x18, +0xE6, 0x1F, 0x90, 0x67, 0x00, 0x18, 0xDF, 0x1F, +0x00, 0x18, 0xCC, 0x09, 0x14, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x42, 0xF7, 0x59, 0xA2, 0x04, 0x22, +0x90, 0x67, 0x00, 0x18, 0xB6, 0x1F, 0x03, 0x10, +0x90, 0x67, 0x00, 0x18, 0xD5, 0x1F, 0x90, 0x67, +0x00, 0x18, 0xC0, 0x1F, 0x90, 0x67, 0x00, 0x18, +0xC7, 0x1F, 0x00, 0x18, 0xB6, 0x09, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF3, 0x6C, 0xA2, +0xFF, 0x6D, 0x8C, 0xED, 0x06, 0x23, 0xFF, 0x4B, +0x63, 0xF3, 0x6C, 0xC2, 0x00, 0x18, 0xCC, 0x09, +0x08, 0x10, 0xA0, 0xF0, 0x68, 0xA2, 0x00, 0x6C, +0xFF, 0x4B, 0x63, 0xF3, 0x6C, 0xC2, 0x00, 0x18, +0xD7, 0x09, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, +0x24, 0x67, 0xA0, 0xF0, 0x87, 0xA0, 0x01, 0x6B, +0xFF, 0x6A, 0x8C, 0xEB, 0x4C, 0xEB, 0x4C, 0xE9, +0x0C, 0x23, 0xA0, 0xF0, 0x49, 0xA0, 0x02, 0x5A, +0x08, 0x61, 0x91, 0x67, 0x00, 0x18, 0xF6, 0x09, +0xA0, 0xF0, 0xA9, 0xA0, 0x91, 0x67, 0x00, 0x18, +0x82, 0x20, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6D, 0xA2, 0xF6, 0x10, 0x4D, +0xA0, 0xF0, 0xC7, 0xA5, 0x01, 0x6B, 0xFF, 0x6A, +0xCC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x06, 0x23, +0xA0, 0xF0, 0x49, 0xA5, 0x01, 0x72, 0x02, 0x61, +0x00, 0x18, 0xF6, 0x09, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF7, 0xAC, 0xA3, +0x04, 0x6B, 0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, +0x4C, 0xEC, 0x09, 0x23, 0x7D, 0x67, 0x1E, 0x6A, +0x50, 0xC3, 0x01, 0x6A, 0x92, 0xC3, 0x4F, 0xCB, +0x04, 0x04, 0x00, 0x18, 0x32, 0x13, 0x09, 0x97, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x30, 0xF0, +0x20, 0x68, 0x2C, 0xEC, 0xA2, 0xF6, 0x10, 0x48, +0x04, 0xD4, 0xA0, 0xF0, 0x96, 0xA0, 0x00, 0x18, +0x94, 0x07, 0x01, 0x72, 0x2F, 0x61, 0xE3, 0xF2, +0x75, 0xA0, 0x09, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x91, 0x67, 0x6F, 0x6D, 0x2C, 0x6E, 0xE3, 0xF2, +0x55, 0xC0, 0x00, 0x18, 0x49, 0x1D, 0x80, 0xF0, +0x92, 0xA0, 0x04, 0x97, 0x01, 0x6D, 0x08, 0x6E, +0x00, 0x18, 0x73, 0x0F, 0x01, 0x72, 0x1A, 0x61, +0xE3, 0xF2, 0x55, 0xA0, 0x02, 0x6B, 0xA0, 0xF0, +0x9C, 0xA0, 0x6D, 0xEA, 0xE3, 0xF2, 0x55, 0xC0, +0x01, 0x6A, 0x8C, 0xEA, 0x2C, 0xEA, 0x07, 0x22, +0x63, 0xF3, 0x50, 0xA0, 0x6D, 0xEA, 0xF9, 0x4B, +0x6C, 0xEA, 0x63, 0xF3, 0x50, 0xC0, 0x01, 0x6C, +0x0E, 0x6D, 0x00, 0x18, 0x34, 0x08, 0x0E, 0x6C, +0x00, 0x18, 0x29, 0x27, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x6C, 0x00, 0x18, +0x7D, 0x20, 0x00, 0x18, 0xF7, 0x1C, 0x00, 0x18, +0xE3, 0x1C, 0x01, 0x6C, 0x00, 0x18, 0x7D, 0x20, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xA6, 0xF1, 0x47, 0xA2, 0x02, 0x22, 0x08, 0x72, +0x06, 0x61, 0x00, 0x18, 0xAE, 0x08, 0x01, 0x72, +0x02, 0x61, 0x00, 0x18, 0x50, 0x0A, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0xE3, 0xF2, 0xB4, 0xA2, 0x01, 0x6B, 0xFF, 0x6C, +0x6C, 0xED, 0x1F, 0x25, 0x80, 0xF0, 0xB8, 0xA2, +0x6C, 0xED, 0x8C, 0xED, 0x05, 0x2D, 0xC3, 0xF2, +0x5C, 0xA2, 0x4C, 0xEB, 0x8C, 0xEB, 0x13, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x80, 0xF0, 0x98, 0xA2, 0x02, 0x6B, 0x6C, 0xEC, +0x06, 0x2C, 0xC3, 0xF2, 0x5C, 0xA2, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x04, 0x22, 0x00, 0x18, +0x17, 0x27, 0x01, 0x72, 0x02, 0x61, 0x00, 0x18, +0x58, 0x0A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x6D, +0xC5, 0x67, 0xFF, 0x6C, 0x00, 0x18, 0x49, 0x1D, +0x04, 0x6D, 0x01, 0x6C, 0x00, 0x18, 0x34, 0x08, +0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF1, 0x0E, 0xA2, +0x90, 0x67, 0x00, 0x18, 0xE0, 0x26, 0x40, 0x6B, +0x4D, 0xEB, 0xFF, 0x6D, 0x90, 0x67, 0x6C, 0xED, +0x00, 0x18, 0xD3, 0x26, 0x04, 0x6C, 0x00, 0x18, +0x29, 0x27, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x2E, 0x6E, 0xFF, 0x6C, 0x6F, 0x6D, +0x00, 0x18, 0x49, 0x1D, 0x02, 0x6D, 0x01, 0x6C, +0x00, 0x18, 0x34, 0x08, 0x30, 0xF0, 0x20, 0x6A, +0x86, 0xF1, 0x0E, 0xA2, 0x90, 0x67, 0x00, 0x18, +0xE0, 0x26, 0xBF, 0x6D, 0x90, 0x67, 0x4C, 0xED, +0x00, 0x18, 0xD3, 0x26, 0x02, 0x6C, 0x00, 0x18, +0x29, 0x27, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF4, 0x64, 0x9B, 0xFF, 0x6A, 0x24, 0x67, +0x00, 0xA3, 0x82, 0x67, 0xA2, 0x67, 0x2D, 0x6E, +0x4C, 0xE9, 0x4C, 0xE8, 0x00, 0x18, 0x49, 0x1D, +0x00, 0x18, 0x86, 0x20, 0x06, 0x2A, 0xFF, 0x6C, +0xB0, 0x67, 0x2D, 0x6E, 0x00, 0x18, 0x49, 0x1D, +0x0E, 0x10, 0x04, 0x29, 0x00, 0x6C, 0x08, 0x6D, +0x00, 0x18, 0xE7, 0x05, 0x00, 0x18, 0xF4, 0x20, +0x01, 0x6C, 0x00, 0x6D, 0x00, 0x18, 0x34, 0x08, +0x00, 0x6C, 0x00, 0x18, 0x29, 0x27, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, +0xE3, 0xF2, 0x75, 0xA0, 0x08, 0x6A, 0xFF, 0x69, +0x6C, 0xEA, 0x2C, 0xEA, 0x2C, 0xEC, 0x05, 0x2A, +0x01, 0x6C, 0x0C, 0x6D, 0x00, 0x18, 0x34, 0x08, +0x41, 0x10, 0x01, 0x6D, 0x00, 0x18, 0x6F, 0x0E, +0x01, 0x6C, 0x04, 0x6D, 0x00, 0x18, 0x34, 0x08, +0x80, 0xF0, 0x78, 0xA0, 0x01, 0x6A, 0x4C, 0xEB, +0x2C, 0xEB, 0x05, 0x2B, 0xC3, 0xF2, 0x7C, 0xA0, +0x6C, 0xEA, 0x2C, 0xEA, 0x2C, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, +0x98, 0xA2, 0x04, 0x6B, 0x6C, 0xEC, 0x06, 0x2C, +0xC3, 0xF2, 0x5C, 0xA2, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x1D, 0x22, 0x30, 0xF0, 0x20, 0x68, +0xA2, 0xF6, 0x10, 0x48, 0xC3, 0xF2, 0x3E, 0xA0, +0x91, 0x67, 0x00, 0x18, 0xE0, 0x26, 0x80, 0x6D, +0xAB, 0xED, 0x4D, 0xED, 0xFF, 0x6A, 0x4C, 0xED, +0x91, 0x67, 0x00, 0x18, 0xD3, 0x26, 0xC3, 0xF2, +0x1E, 0xA0, 0x90, 0x67, 0x00, 0x18, 0xE0, 0x26, +0x20, 0x6D, 0x4D, 0xED, 0xFF, 0x6A, 0x90, 0x67, +0x4C, 0xED, 0x00, 0x18, 0xD3, 0x26, 0x04, 0x6C, +0x00, 0x18, 0x29, 0x27, 0x00, 0x6D, 0xFF, 0x6C, +0xC5, 0x67, 0x00, 0x18, 0x49, 0x1D, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x69, 0xA2, 0xF6, 0x10, 0x49, +0xE3, 0xF2, 0xB5, 0xA1, 0x04, 0x6B, 0xFF, 0x6A, +0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x08, 0x2B, +0x03, 0x6D, 0x00, 0x18, 0x6F, 0x0E, 0x01, 0x6C, +0x04, 0x6D, 0x00, 0x18, 0x34, 0x08, 0x1E, 0x10, +0x00, 0x6D, 0x00, 0x18, 0x6F, 0x0E, 0x0C, 0x6D, +0x01, 0x6C, 0x00, 0x18, 0x34, 0x08, 0xC3, 0xF2, +0x1E, 0xA1, 0x90, 0x67, 0x00, 0x18, 0xE0, 0x26, +0x7F, 0x6D, 0x90, 0x67, 0x4C, 0xED, 0x00, 0x18, +0xD3, 0x26, 0xC3, 0xF2, 0x1E, 0xA1, 0x90, 0x67, +0x00, 0x18, 0xE0, 0x26, 0xDF, 0x6D, 0x90, 0x67, +0x4C, 0xED, 0x00, 0x18, 0xD3, 0x26, 0x0C, 0x6C, +0x00, 0x18, 0x29, 0x27, 0x00, 0x6D, 0xFF, 0x6C, +0xC5, 0x67, 0x00, 0x18, 0x49, 0x1D, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x00, 0x6D, 0x00, 0x18, 0x6F, 0x0E, 0x00, 0x6D, +0xC5, 0x67, 0xFF, 0x6C, 0x00, 0x18, 0x49, 0x1D, +0x01, 0x6C, 0x0C, 0x6D, 0x00, 0x18, 0x34, 0x08, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x69, 0x2C, 0xEC, 0xAC, 0xE9, 0x30, 0x24, +0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, +0xA0, 0xF0, 0x96, 0xA0, 0x00, 0x18, 0x94, 0x07, +0x01, 0x72, 0x26, 0x61, 0xE3, 0xF2, 0x75, 0xA0, +0x05, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x2B, 0x6E, +0xFF, 0x6C, 0x0F, 0x6D, 0xE3, 0xF2, 0x55, 0xC0, +0x00, 0x18, 0x49, 0x1D, 0x91, 0x67, 0x02, 0x6D, +0x00, 0x18, 0x6F, 0x0E, 0x80, 0xF0, 0x92, 0xA0, +0x00, 0x6D, 0x08, 0x6E, 0xF1, 0x67, 0x00, 0x18, +0x73, 0x0F, 0x01, 0x72, 0x0D, 0x61, 0xE3, 0xF2, +0x75, 0xA0, 0x01, 0x6A, 0x01, 0x6C, 0x6D, 0xEA, +0x06, 0x6D, 0xE3, 0xF2, 0x55, 0xC0, 0x00, 0x18, +0x34, 0x08, 0x06, 0x6C, 0x00, 0x18, 0x29, 0x27, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x25, 0x67, 0x30, 0xF0, +0x20, 0x6D, 0xA2, 0xF6, 0x10, 0x4D, 0x06, 0x67, +0xE3, 0xF2, 0xD5, 0xA5, 0x03, 0x6B, 0xFF, 0x6A, +0xCC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x4C, 0xE9, +0x4C, 0xE8, 0xE0, 0xF0, 0x03, 0x2B, 0xE3, 0xF2, +0x57, 0xA5, 0x8E, 0xEA, 0xC0, 0xF0, 0x1E, 0x22, +0x0D, 0x5C, 0xC0, 0xF0, 0x1B, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x88, 0x34, 0x80, 0xF0, 0x04, 0x4A, +0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xA6, 0xF1, 0x47, 0xA2, 0x0E, 0x72, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0xB0, 0x0A, +0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, 0x47, 0xA2, +0x03, 0x2A, 0x01, 0x6C, 0x00, 0x18, 0xC0, 0x09, +0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, 0x47, 0xA2, +0x06, 0x72, 0x03, 0x61, 0x90, 0x67, 0x00, 0x18, +0xE0, 0x0A, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, +0x47, 0xA2, 0x04, 0x72, 0x09, 0x61, 0x05, 0x21, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x18, 0x0A, 0x0B, +0x03, 0x10, 0x90, 0x67, 0x00, 0x18, 0x00, 0x0B, +0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, 0x47, 0xA2, +0x08, 0x72, 0xA0, 0xF0, 0x03, 0x61, 0x00, 0x18, +0xB6, 0x09, 0xA0, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA6, 0xF1, 0x47, 0xA2, 0x03, 0x2A, 0x01, 0x6C, +0x00, 0x18, 0xC0, 0x09, 0x30, 0xF0, 0x20, 0x6A, +0xA6, 0xF1, 0x47, 0xA2, 0x06, 0x72, 0x03, 0x61, +0x90, 0x67, 0x00, 0x18, 0xE0, 0x0A, 0x30, 0xF0, +0x20, 0x6A, 0xA6, 0xF1, 0x47, 0xA2, 0x0E, 0x72, +0x07, 0x61, 0x00, 0x18, 0x7D, 0x08, 0x01, 0x72, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0xB0, 0x0A, +0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, 0x47, 0xA2, +0x0C, 0x72, 0x7C, 0x61, 0x00, 0x18, 0x7D, 0x08, +0x01, 0x72, 0x78, 0x61, 0x90, 0x67, 0x00, 0x18, +0x2D, 0x0A, 0x74, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA6, 0xF1, 0x47, 0xA2, 0x0E, 0x72, 0x07, 0x61, +0x00, 0x18, 0x7D, 0x08, 0x01, 0x72, 0x03, 0x61, +0x90, 0x67, 0x00, 0x18, 0xB0, 0x0A, 0x30, 0xF0, +0x20, 0x6A, 0xA6, 0xF1, 0x47, 0xA2, 0x06, 0x72, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0xE0, 0x0A, +0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, 0x47, 0xA2, +0x0C, 0x72, 0x07, 0x61, 0x00, 0x18, 0x7D, 0x08, +0x01, 0x72, 0x03, 0x61, 0x90, 0x67, 0x00, 0x18, +0x2D, 0x0A, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, +0x47, 0xA2, 0x04, 0x72, 0x4B, 0x61, 0x00, 0x18, +0x91, 0x08, 0x01, 0x72, 0x47, 0x61, 0x90, 0x67, +0x00, 0x18, 0x99, 0x0A, 0x43, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA6, 0xF1, 0x47, 0xA2, 0x0E, 0x72, +0x07, 0x61, 0x00, 0x18, 0x7D, 0x08, 0x01, 0x72, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0xB0, 0x0A, +0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, 0x47, 0xA2, +0x06, 0x72, 0x03, 0x61, 0x90, 0x67, 0x00, 0x18, +0xE0, 0x0A, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, +0x47, 0xA2, 0x0C, 0x72, 0x07, 0x61, 0x00, 0x18, +0x7D, 0x08, 0x01, 0x72, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0x2D, 0x0A, 0x30, 0xF0, 0x20, 0x6A, +0xA6, 0xF1, 0x47, 0xA2, 0x03, 0x2A, 0x01, 0x6C, +0x00, 0x18, 0xC0, 0x09, 0x30, 0xF0, 0x20, 0x6A, +0xA6, 0xF1, 0x47, 0xA2, 0x04, 0x72, 0x12, 0x61, +0x00, 0x18, 0x89, 0x0A, 0x0F, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xE3, 0xF2, +0x77, 0xA2, 0x0C, 0x73, 0x07, 0x61, 0xE3, 0xF2, +0x74, 0xA2, 0x20, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xCC, 0x09, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, +0xE3, 0xF2, 0x78, 0xA0, 0x10, 0x6A, 0xFF, 0x69, +0x6D, 0xEA, 0xE3, 0xF2, 0x58, 0xC0, 0xE3, 0xF2, +0x5F, 0xA0, 0x8C, 0xE9, 0x02, 0x5A, 0x0D, 0x60, +0xE3, 0xF2, 0xDE, 0xA0, 0xFF, 0x6C, 0x55, 0x4C, +0xD9, 0xE2, 0x00, 0x6D, 0x00, 0x18, 0x3C, 0x16, +0xE3, 0xF2, 0x7F, 0xA0, 0xE3, 0xF2, 0x5E, 0xA0, +0x14, 0x10, 0x03, 0x6B, 0x78, 0xEA, 0xE3, 0xF2, +0xDE, 0xA0, 0xFF, 0x6C, 0x55, 0x4C, 0xFE, 0x4E, +0x00, 0x6D, 0x12, 0xEA, 0x59, 0xE6, 0x00, 0x18, +0x3C, 0x16, 0xE3, 0xF2, 0x5F, 0xA0, 0x03, 0x6C, +0xE3, 0xF2, 0x7E, 0xA0, 0x98, 0xEA, 0xFE, 0x4B, +0x12, 0xEA, 0x49, 0xE3, 0x03, 0xF3, 0x51, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, 0x47, 0xA2, +0x04, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, 0x83, 0x67, +0x01, 0x6D, 0xD1, 0x67, 0x00, 0x18, 0x29, 0x0B, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, +0x30, 0xF0, 0x20, 0x68, 0x04, 0xD4, 0xA2, 0xF6, +0x10, 0x48, 0x80, 0xF0, 0x79, 0xA0, 0x7F, 0x6A, +0x6C, 0xEA, 0x2C, 0xEA, 0x36, 0x22, 0xA0, 0xF0, +0x96, 0xA0, 0x00, 0x18, 0x94, 0x07, 0x01, 0x72, +0x78, 0x67, 0x05, 0xD3, 0x2E, 0x2B, 0x04, 0x94, +0xE3, 0xF2, 0xBC, 0xA0, 0x00, 0x18, 0x82, 0x20, +0x04, 0x94, 0x00, 0x6D, 0x00, 0x18, 0xF2, 0x07, +0xE3, 0xF2, 0x75, 0xA0, 0x43, 0xF3, 0x48, 0xD8, +0x20, 0x6A, 0x6D, 0xEA, 0xE3, 0xF2, 0x55, 0xC0, +0x5D, 0x67, 0x67, 0x42, 0x0D, 0x4B, 0x40, 0xA3, +0x80, 0xF0, 0x78, 0xA0, 0xE3, 0xF2, 0x5D, 0xC0, +0x01, 0x6A, 0x4C, 0xEB, 0x2C, 0xEB, 0x05, 0x2B, +0xC3, 0xF2, 0x7C, 0xA0, 0x6C, 0xEA, 0x2C, 0xEA, +0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF1, +0x0A, 0xA2, 0x00, 0x18, 0xFC, 0x26, 0x05, 0x22, +0x02, 0x70, 0x03, 0x60, 0x04, 0x94, 0x00, 0x18, +0xA8, 0x0B, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xA2, 0xF6, 0x10, 0x48, 0x80, 0xF0, 0x79, 0xA0, +0x7F, 0x6A, 0xFF, 0x69, 0x6C, 0xEA, 0x2C, 0xEC, +0x2C, 0xEA, 0x04, 0xD4, 0x40, 0x22, 0xA0, 0xF0, +0x96, 0xA0, 0x00, 0x18, 0x94, 0x07, 0x01, 0x72, +0x3A, 0x61, 0x04, 0x94, 0x00, 0x6D, 0x00, 0x18, +0xF2, 0x07, 0xE3, 0xF2, 0x75, 0xA0, 0x43, 0xF3, +0x48, 0xD8, 0x20, 0x6A, 0x6D, 0xEA, 0x80, 0xF0, +0x7A, 0xA0, 0xE3, 0xF2, 0x55, 0xC0, 0x0F, 0x6A, +0x6C, 0xEA, 0x2C, 0xEA, 0x01, 0x69, 0x06, 0x22, +0xE3, 0xF2, 0x35, 0xA0, 0x01, 0x6A, 0x32, 0x31, +0x4E, 0xE9, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, 0x98, 0xA2, +0x01, 0x6B, 0x6C, 0xEC, 0x06, 0x2C, 0xC3, 0xF2, +0x5C, 0xA2, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x0E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF1, +0x6A, 0xA2, 0x02, 0x6A, 0x4E, 0xEB, 0x6B, 0xEA, +0x6D, 0xEA, 0xC0, 0xF7, 0x43, 0x32, 0x4C, 0xE9, +0x00, 0x18, 0xFC, 0x26, 0x04, 0x22, 0x03, 0x21, +0x04, 0x94, 0x00, 0x18, 0xA8, 0x0B, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x80, 0xF0, 0xB8, 0xA3, +0xC4, 0x67, 0x01, 0x6C, 0xFF, 0x6A, 0x8C, 0xED, +0x4C, 0xED, 0x4C, 0xEE, 0x05, 0x2D, 0xC3, 0xF2, +0xBC, 0xA3, 0xAC, 0xEC, 0x4C, 0xEC, 0x07, 0x24, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, 0x8D, 0xA2, +0x00, 0x18, 0x59, 0x27, 0x05, 0x10, 0x80, 0xF0, +0x9D, 0xA3, 0x01, 0x6D, 0x00, 0x18, 0x29, 0x0B, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x69, 0x8C, 0xE9, 0x0B, 0x29, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0xA8, 0x9A, 0x01, 0x6C, +0x00, 0x18, 0xE7, 0x05, 0x00, 0x6C, 0x08, 0x6D, +0x00, 0x18, 0xE7, 0x05, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF4, 0x8C, 0x9A, 0xFF, 0x6B, 0x07, 0x6D, +0x40, 0xA4, 0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, +0x10, 0x48, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, +0x40, 0xC4, 0x03, 0xF3, 0x46, 0xA8, 0x4C, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x40, 0x9A, +0x60, 0xC2, 0xA0, 0xF0, 0x96, 0xA0, 0x00, 0x18, +0x94, 0x07, 0x01, 0x72, 0x12, 0x61, 0xE3, 0xF2, +0x74, 0xA0, 0x21, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xE3, 0xF2, 0x54, 0xC0, 0xE3, 0xF2, 0x57, 0xA0, +0x04, 0x6B, 0x6C, 0xEA, 0x0C, 0x2A, 0x83, 0x67, +0x01, 0x6D, 0xD1, 0x67, 0x00, 0x18, 0x29, 0x0B, +0x06, 0x10, 0xE3, 0xF2, 0x74, 0xA0, 0x20, 0x6A, +0x6D, 0xEA, 0xE3, 0xF2, 0x54, 0xC0, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x69, 0x2C, 0xEC, 0xAC, 0xE9, 0x4A, 0x2C, +0x0B, 0x29, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0xA8, 0x9A, 0x01, 0x6C, 0x00, 0x18, 0x18, 0x06, +0x00, 0x6C, 0x08, 0x6D, 0x00, 0x18, 0x18, 0x06, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x50, 0x9A, +0x00, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x54, 0x9A, +0x02, 0x6B, 0xA2, 0xF6, 0x10, 0x48, 0x60, 0xDA, +0xA0, 0xF0, 0x96, 0xA0, 0x00, 0x18, 0x94, 0x07, +0x10, 0x2A, 0x00, 0x18, 0xAD, 0x20, 0x91, 0x67, +0x00, 0x18, 0x00, 0x0B, 0xE3, 0xF2, 0x75, 0xA0, +0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0x6B, +0x6B, 0xEB, 0x6C, 0xEA, 0xE3, 0xF2, 0x55, 0xC0, +0x05, 0x10, 0x0C, 0x6C, 0x01, 0x6D, 0xD1, 0x67, +0x00, 0x18, 0x29, 0x0B, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xE3, 0xF2, 0x94, 0xA2, +0x05, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xE3, 0xF2, +0x74, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0x6C, 0x9A, 0xF8, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x05, 0x10, 0x01, 0x74, 0x03, 0x61, +0x91, 0x67, 0x00, 0x18, 0x30, 0x0C, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, +0xA2, 0xF6, 0x10, 0x48, 0x04, 0xD4, 0x00, 0x18, +0xA0, 0x09, 0x80, 0xF0, 0x99, 0xA0, 0x7F, 0x6A, +0x04, 0x95, 0x4C, 0xEC, 0x2C, 0xEC, 0x00, 0x18, +0x56, 0x0C, 0x80, 0xF0, 0x59, 0xA0, 0x7F, 0x6B, +0x6C, 0xEA, 0x2C, 0xEA, 0x09, 0x22, 0x80, 0xF0, +0x5A, 0xA0, 0x0F, 0x6C, 0x80, 0xF0, 0xBB, 0xA0, +0x4C, 0xEC, 0x2C, 0xEC, 0x00, 0x18, 0x66, 0x08, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF7, 0x05, 0x4C, +0x00, 0x6D, 0x07, 0x6E, 0x00, 0x18, 0xB6, 0x11, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6C, 0xA6, 0xF1, 0x04, 0x4C, +0x00, 0x6D, 0x70, 0x6E, 0x00, 0x18, 0xB6, 0x11, +0x30, 0xF0, 0x20, 0x6C, 0x07, 0x6E, 0x42, 0xF7, +0x17, 0x4C, 0x00, 0x6D, 0x30, 0xF0, 0x20, 0x68, +0x00, 0x18, 0xB6, 0x11, 0xA2, 0xF6, 0x10, 0x48, +0x02, 0x6A, 0x80, 0xF0, 0x5B, 0xC0, 0x01, 0x6A, +0xE3, 0xF2, 0x5C, 0xC0, 0xE3, 0xF2, 0x5D, 0xC0, +0x05, 0x6A, 0x03, 0xF3, 0x46, 0xC8, 0x03, 0xF3, +0x54, 0xA0, 0x10, 0x69, 0xE3, 0xF2, 0x3E, 0xC0, +0x04, 0x4A, 0x03, 0xF3, 0x50, 0xC0, 0x03, 0xF3, +0x31, 0xC0, 0x00, 0x18, 0x02, 0x09, 0x00, 0x6C, +0xA4, 0x67, 0x00, 0x18, 0x34, 0x08, 0x02, 0x6C, +0x0C, 0x6D, 0x00, 0x18, 0x34, 0x08, 0x01, 0x6C, +0x0C, 0x6D, 0x00, 0x18, 0x34, 0x08, 0x30, 0xF0, +0x20, 0x6C, 0x00, 0x6D, 0xA6, 0xF1, 0x14, 0x4C, +0x00, 0x18, 0x73, 0x20, 0xA0, 0xF0, 0x62, 0xA0, +0x02, 0x6A, 0xA0, 0xF0, 0x40, 0xC0, 0x0F, 0x6A, +0xA0, 0xF0, 0x41, 0xC0, 0x01, 0x6A, 0x6C, 0xEA, +0x28, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x42, 0xC0, +0x07, 0x6A, 0xA0, 0xF0, 0x43, 0xC0, 0x03, 0xF3, +0x54, 0xA0, 0x01, 0x6C, 0x03, 0xF3, 0x31, 0xC0, +0x04, 0x4A, 0x03, 0xF3, 0x50, 0xC0, 0x00, 0x18, +0x25, 0x09, 0x00, 0x6C, 0xA4, 0x67, 0x00, 0x18, +0x6F, 0x0E, 0x01, 0x6C, 0x00, 0x6D, 0x00, 0x18, +0x6F, 0x0E, 0x02, 0x6C, 0x00, 0x6D, 0x00, 0x18, +0x6F, 0x0E, 0x03, 0x6C, 0x00, 0x6D, 0x00, 0x18, +0x6F, 0x0E, 0x04, 0x6C, 0x00, 0x6D, 0x00, 0x18, +0x6F, 0x0E, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0x6C, 0x9A, 0xF8, 0x6A, 0x00, 0x6D, 0x80, 0xA3, +0xC5, 0x67, 0x8C, 0xEA, 0x40, 0xC3, 0xFF, 0x6C, +0x00, 0x18, 0x49, 0x1D, 0x00, 0x6A, 0xC3, 0xF2, +0x4C, 0xC0, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xA6, 0xF1, 0xA4, 0xA3, 0x04, 0x6B, 0xFF, 0x6A, +0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x06, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, +0x00, 0x6B, 0x60, 0xC2, 0x02, 0x6D, 0x00, 0x18, +0xAA, 0x1C, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0x54, 0x9A, 0x04, 0x69, 0x30, 0xF0, 0x20, 0x68, +0x20, 0xDA, 0xA2, 0xF6, 0x10, 0x48, 0xA0, 0xF0, +0xC2, 0xA0, 0xFF, 0x6C, 0x59, 0x4C, 0x00, 0x6D, +0xC6, 0x36, 0x00, 0x18, 0x3C, 0x16, 0xE3, 0xF2, +0x54, 0xA0, 0x07, 0x97, 0x4D, 0xE9, 0xE3, 0xF2, +0x34, 0xC0, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x10, 0x4B, 0xA0, 0xF0, 0xBC, 0xA3, 0x04, 0x67, +0x01, 0x6C, 0xFF, 0x6A, 0xAC, 0xEC, 0x4C, 0xEC, +0x4C, 0xE8, 0x23, 0x2C, 0x80, 0xF0, 0xB9, 0xA3, +0x7F, 0x6C, 0xAC, 0xEC, 0x01, 0x74, 0x1D, 0x61, +0x80, 0xF0, 0xBA, 0xA3, 0x10, 0x6C, 0x8B, 0xEC, +0xAC, 0xEC, 0x4C, 0xEC, 0x0E, 0x24, 0xD0, 0x67, +0x0C, 0x6C, 0x00, 0x6D, 0x00, 0x18, 0x29, 0x0B, +0x00, 0x6D, 0xFF, 0x6C, 0xC5, 0x67, 0x00, 0x18, +0x49, 0x1D, 0x90, 0x67, 0x00, 0x18, 0xE3, 0x0C, +0x08, 0x10, 0xE3, 0xF2, 0x57, 0xA3, 0x05, 0x2A, +0x04, 0x6C, 0x01, 0x6D, 0xD0, 0x67, 0x00, 0x18, +0x29, 0x0B, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x8C, 0xE9, +0x30, 0xF0, 0x20, 0x68, 0x91, 0x67, 0xA2, 0xF6, +0x10, 0x48, 0x00, 0x18, 0xE3, 0x0C, 0xE3, 0xF2, +0x57, 0xA0, 0x0C, 0x72, 0x17, 0x60, 0x0C, 0x6C, +0x00, 0x6D, 0xD1, 0x67, 0x00, 0x18, 0x29, 0x0B, +0x00, 0x6D, 0xC5, 0x67, 0xFF, 0x6C, 0x00, 0x18, +0x49, 0x1D, 0xE3, 0xF2, 0x75, 0xA0, 0x80, 0xF0, +0x92, 0xA0, 0x01, 0x6A, 0x6D, 0xEA, 0x00, 0x6D, +0x08, 0x6E, 0xF1, 0x67, 0xE3, 0xF2, 0x55, 0xC0, +0x00, 0x18, 0x73, 0x0F, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x24, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF6, +0x10, 0x4C, 0xE3, 0xF2, 0xB4, 0xA4, 0x40, 0x6B, +0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xE9, +0x09, 0x23, 0xE3, 0xF2, 0x95, 0xA4, 0x10, 0x6B, +0x8C, 0xEB, 0x4C, 0xEB, 0x03, 0x23, 0x91, 0x67, +0x00, 0x18, 0xDF, 0x1F, 0x30, 0xF0, 0x20, 0x68, +0xA2, 0xF6, 0x10, 0x48, 0xE3, 0xF2, 0x74, 0xA0, +0x02, 0x6A, 0x6C, 0xEA, 0x10, 0x22, 0x03, 0x6A, +0x4B, 0xEA, 0x4C, 0xEB, 0xE3, 0xF2, 0x74, 0xC0, +0xE3, 0xF2, 0x78, 0xA0, 0x6C, 0xEA, 0xE3, 0xF2, +0x58, 0xC0, 0xE3, 0xF2, 0x58, 0xA0, 0x07, 0x6B, +0x6C, 0xEA, 0x5C, 0x2A, 0x58, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x7C, 0x9A, 0xFF, 0xF7, +0x1F, 0x6C, 0x40, 0xAB, 0x8C, 0xEA, 0x01, 0x4A, +0x8C, 0xEA, 0x40, 0xCB, 0xE3, 0xF2, 0x5F, 0xA0, +0xE3, 0xF2, 0x78, 0xA0, 0x01, 0x4A, 0xE3, 0xF2, +0x5F, 0xC0, 0x11, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xE3, 0xF2, 0x58, 0xC0, 0xE3, 0xF2, 0x7F, 0xA0, +0xA0, 0xF0, 0x40, 0xA0, 0x63, 0xEA, 0x3B, 0x60, +0xA0, 0xF0, 0x96, 0xA0, 0x00, 0x18, 0x94, 0x07, +0x01, 0x72, 0x78, 0x67, 0x04, 0xD3, 0x36, 0x2B, +0x00, 0x18, 0x0C, 0x09, 0x80, 0xF0, 0x7A, 0xA0, +0x10, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x07, 0x2A, 0xE3, 0xF2, 0x74, 0xA0, +0xDF, 0x4A, 0x6C, 0xEA, 0xE3, 0xF2, 0x54, 0xC0, +0x25, 0x10, 0x03, 0xF3, 0x40, 0xA0, 0x01, 0x4A, +0x03, 0xF3, 0x40, 0xC0, 0x03, 0xF3, 0x40, 0xA0, +0x03, 0x5A, 0x0E, 0x61, 0xE3, 0xF2, 0x74, 0xA0, +0x21, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xE3, 0xF2, +0x54, 0xC0, 0x5D, 0x67, 0x67, 0x42, 0x09, 0x4B, +0x40, 0xA3, 0x03, 0xF3, 0x40, 0xC0, 0x03, 0x10, +0x91, 0x67, 0x00, 0x18, 0x19, 0x0D, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x00, 0x6B, +0xE3, 0xF2, 0x7F, 0xC2, 0x03, 0x10, 0x91, 0x67, +0x00, 0x18, 0x1E, 0x0C, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6A, 0x8C, 0xEA, 0x05, 0x5A, 0x00, 0x68, +0x24, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x34, +0xA0, 0xF0, 0x18, 0x4B, 0x8D, 0xE3, 0x60, 0x9B, +0x00, 0xEB, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, +0x60, 0x9B, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF4, 0x64, 0x9B, 0x0E, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x20, 0xF4, 0x68, 0x9B, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x6C, 0x9B, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, +0x70, 0x9B, 0x60, 0xAB, 0xFF, 0xF7, 0x1F, 0x68, +0x6C, 0xE8, 0x18, 0xF0, 0x00, 0x6B, 0x0C, 0xEB, +0x13, 0x2B, 0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF6, +0x10, 0x4C, 0xE3, 0xF2, 0xB8, 0xA4, 0xFE, 0x4B, +0xAC, 0xEB, 0x05, 0x6D, 0xAB, 0xED, 0xAC, 0xEB, +0x02, 0x4D, 0xAC, 0xEB, 0xE3, 0xF2, 0x78, 0xC4, +0x82, 0x67, 0x00, 0x18, 0x1E, 0x0C, 0x57, 0x10, +0x08, 0xF0, 0x00, 0x6B, 0x0C, 0xEB, 0x20, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x80, 0xF0, 0xB9, 0xA3, 0x7F, 0x6C, 0xAC, 0xEC, +0x01, 0x74, 0x24, 0x61, 0xE3, 0xF2, 0xB8, 0xA3, +0x01, 0x6C, 0xAD, 0xEC, 0xE3, 0xF2, 0x98, 0xC3, +0x80, 0xF0, 0x9A, 0xA3, 0x10, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, 0x20, 0x73, +0x03, 0x60, 0x00, 0x18, 0x3B, 0x0F, 0x12, 0x10, +0x82, 0x67, 0x00, 0x18, 0x19, 0x0D, 0x0E, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0xE3, 0xF2, 0x98, 0xA3, 0x02, 0x6A, 0x4B, 0xEA, +0x8C, 0xEA, 0x05, 0x6C, 0x8B, 0xEC, 0x8C, 0xEA, +0xE3, 0xF2, 0x58, 0xC3, 0x02, 0x30, 0x1E, 0x30, +0x17, 0x20, 0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, +0x10, 0x48, 0xE3, 0xF2, 0x58, 0xA0, 0x02, 0x69, +0xA0, 0xF0, 0xC1, 0xA0, 0x2D, 0xEA, 0xFF, 0x6C, +0xE3, 0xF2, 0x58, 0xC0, 0x55, 0x4C, 0x00, 0x6D, +0x00, 0x18, 0x3C, 0x16, 0xE3, 0xF2, 0x54, 0xA0, +0x4D, 0xE9, 0xE3, 0xF2, 0x34, 0xC0, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0xE3, 0xF2, 0x98, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xE3, 0xF2, 0x78, 0xC2, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xFF, 0x69, 0xA2, 0xF6, +0x10, 0x48, 0x8C, 0xE9, 0xA0, 0xF0, 0x96, 0xA0, +0x00, 0x18, 0x94, 0x07, 0x01, 0x72, 0x00, 0xF1, +0x1B, 0x61, 0x80, 0xF0, 0x79, 0xA0, 0x7F, 0x6A, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x00, 0xF1, +0x13, 0x22, 0x80, 0xF0, 0x7A, 0xA0, 0x0F, 0x6A, +0x6C, 0xEA, 0x01, 0x72, 0x69, 0x61, 0x05, 0x59, +0x5A, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x28, 0x33, +0xC0, 0xF0, 0x0C, 0x4A, 0x69, 0xE2, 0x40, 0x9A, +0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, +0x54, 0x9A, 0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xE3, 0xF2, 0x7D, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x78, 0x9B, +0x3F, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, +0x5C, 0x9A, 0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xE3, 0xF2, 0x7D, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x60, 0x9B, +0x2F, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, +0x44, 0x9A, 0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xE3, 0xF2, 0x7D, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x68, 0x9B, +0x1F, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, +0x4C, 0x9A, 0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xE3, 0xF2, 0x7D, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x70, 0x9B, +0x0F, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, +0x54, 0x9A, 0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xE3, 0xF2, 0x7D, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x78, 0x9B, +0x60, 0xA3, 0xE3, 0xF2, 0x7C, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xE3, 0xF2, +0x7D, 0xA2, 0x02, 0x2B, 0xE3, 0xF2, 0x7C, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, 0x6D, 0xC2, +0x91, 0x67, 0x00, 0x18, 0x36, 0x09, 0x30, 0xF0, +0x20, 0x6B, 0x40, 0xF4, 0xBC, 0x9B, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x00, 0x6C, +0xE3, 0xF2, 0x9F, 0xC2, 0x60, 0xAD, 0xFF, 0xF7, +0x1F, 0x6E, 0xCC, 0xEB, 0x01, 0x4B, 0xCC, 0xEB, +0x60, 0xCD, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, +0xA6, 0xA2, 0x00, 0xF4, 0x60, 0x9B, 0xA0, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x70, 0x9B, +0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, +0x74, 0x9B, 0x01, 0x6C, 0x80, 0xC3, 0xE3, 0xF2, +0x98, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x11, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0x80, 0xF0, +0x98, 0xA2, 0xE3, 0xF2, 0x78, 0xC2, 0x01, 0x6B, +0x6C, 0xEC, 0x06, 0x2C, 0xC3, 0xF2, 0x5C, 0xA2, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x04, 0x22, +0x91, 0x67, 0x00, 0x18, 0xE4, 0x02, 0x03, 0x10, +0x91, 0x67, 0x00, 0x18, 0x7A, 0x0D, 0x30, 0xF0, +0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, 0xE3, 0xF2, +0x74, 0xA0, 0x40, 0x6A, 0x6C, 0xEA, 0x4E, 0x22, +0xE3, 0xF2, 0x95, 0xA0, 0x10, 0x6B, 0xFF, 0x6D, +0x44, 0x67, 0x6C, 0xEA, 0xAC, 0xEA, 0x1B, 0x2A, +0xE3, 0xF2, 0x5D, 0xA0, 0xE3, 0xF2, 0xBC, 0xA0, +0xAE, 0xEA, 0x40, 0x2A, 0x8D, 0xEB, 0x91, 0x67, +0xE3, 0xF2, 0x75, 0xC0, 0x00, 0x18, 0x82, 0x20, +0x91, 0x67, 0x00, 0x18, 0xB6, 0x1F, 0x91, 0x67, +0x00, 0x18, 0xE6, 0x1F, 0x91, 0x67, 0x00, 0x18, +0xDF, 0x1F, 0xE3, 0xF2, 0x5D, 0xA0, 0xFF, 0x4A, +0xE3, 0xF2, 0x5D, 0xC0, 0x2B, 0x10, 0x80, 0xF0, +0x7A, 0xA0, 0x0F, 0x6A, 0x6C, 0xEA, 0x01, 0x72, +0x25, 0x61, 0xE3, 0xF2, 0x5D, 0xA0, 0x04, 0xD2, +0x04, 0x93, 0xE3, 0xF2, 0x5C, 0xA0, 0x6E, 0xEA, +0x1D, 0x22, 0x91, 0x67, 0x00, 0x18, 0x7E, 0x20, +0x04, 0x95, 0xAE, 0xEA, 0x17, 0x22, 0xE3, 0xF2, +0x74, 0xA0, 0x20, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x10, 0x22, 0xE3, 0xF2, 0x75, 0xA0, +0x11, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x91, 0x67, +0xE3, 0xF2, 0x55, 0xC0, 0x00, 0x18, 0xD5, 0x1F, +0x91, 0x67, 0x00, 0x18, 0xC7, 0x1F, 0x91, 0x67, +0x00, 0x18, 0xC0, 0x1F, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xE3, 0xF2, 0x94, 0xA2, +0x20, 0x6B, 0x8D, 0xEB, 0xE3, 0xF2, 0x74, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x80, 0xF0, 0x98, 0xA2, 0x02, 0x6B, 0x6C, 0xEC, +0x06, 0x24, 0xC3, 0xF2, 0x5C, 0xA2, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x0A, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xE3, 0xF2, +0x94, 0xA2, 0x20, 0x6B, 0x8D, 0xEB, 0xE3, 0xF2, +0x74, 0xC2, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x4C, 0xEC, +0xAC, 0xEA, 0x0B, 0x2A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF4, 0xA0, 0x9B, 0x30, 0xF0, 0x20, 0x6E, +0x60, 0xF4, 0xC4, 0x9E, 0x60, 0x9D, 0xCC, 0xEB, +0x0C, 0x10, 0x01, 0x72, 0x0B, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x60, 0xF4, 0xA0, 0x9B, 0x30, 0xF0, +0x20, 0x6E, 0x60, 0xF4, 0xC8, 0x9E, 0x60, 0x9D, +0xCD, 0xEB, 0x60, 0xDD, 0x33, 0x2C, 0x07, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x60, 0x9A, +0x7F, 0x6A, 0x80, 0xA3, 0x1B, 0x10, 0x01, 0x72, +0x11, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, +0x60, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, +0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, +0x40, 0xA3, 0x80, 0x4D, 0xC0, 0x4D, 0x8C, 0xEA, +0xAD, 0xEA, 0x08, 0x10, 0x02, 0x72, 0x09, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x60, 0x9A, +0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x20, 0xE8, 0x03, 0x72, 0x0B, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF4, 0x60, 0x9A, 0xFF, 0x6C, +0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0xAC, 0x9A, +0xFF, 0x6A, 0x01, 0x6E, 0xB5, 0xE4, 0x60, 0xA5, +0x4C, 0xEB, 0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC5, +0xC0, 0xA5, 0xFB, 0x6B, 0xCC, 0xEB, 0x60, 0xC5, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, 0xB0, 0x9B, +0x06, 0x6E, 0xCB, 0xEE, 0xB5, 0xE4, 0x60, 0xA5, +0x4C, 0xEB, 0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC5, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, 0xB4, 0x9B, +0x1F, 0x6E, 0xB5, 0xE4, 0x60, 0xA5, 0x4C, 0xEB, +0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC5, 0x30, 0xF0, +0x20, 0x6B, 0x60, 0xF4, 0xB8, 0x9B, 0x0E, 0x6E, +0xB5, 0xE4, 0x60, 0xA5, 0x4C, 0xEB, 0xCD, 0xEB, +0x4C, 0xEB, 0x60, 0xC5, 0x30, 0xF0, 0x20, 0x6D, +0x60, 0xF4, 0xBC, 0x9D, 0x00, 0x6B, 0x60, 0xC5, +0x30, 0xF0, 0x20, 0x6D, 0x80, 0xF4, 0xA0, 0x9D, +0x60, 0xC5, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, +0x64, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0xA0, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x68, 0x9B, +0x03, 0x6D, 0xAB, 0xED, 0xA0, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF4, 0x6C, 0x9B, 0x71, 0xE4, +0xA0, 0xA4, 0x40, 0x6B, 0x6B, 0xEB, 0x4C, 0xEB, +0xAC, 0xEB, 0x60, 0xC4, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF4, 0x70, 0x9B, 0xFF, 0x6A, 0x3F, 0x6F, +0x6D, 0xE5, 0x00, 0xA3, 0x4C, 0xEC, 0x4C, 0xEE, +0x0C, 0xEF, 0xE0, 0xC3, 0x10, 0x24, 0x30, 0xF0, +0x20, 0x6C, 0x80, 0xF4, 0xF4, 0x9C, 0x10, 0x68, +0xFD, 0xE5, 0x80, 0xA7, 0x4C, 0xEC, 0x0D, 0xEC, +0x4C, 0xEC, 0x80, 0xC7, 0x80, 0xA3, 0x80, 0x6F, +0xEB, 0xEF, 0x4C, 0xEC, 0x0C, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x80, 0xF4, 0xF4, 0x9C, 0xEF, 0x6C, +0xFD, 0xE5, 0x00, 0xA7, 0x0C, 0xEC, 0x80, 0xC7, +0x80, 0xA3, 0x40, 0x6F, 0x4C, 0xEC, 0xED, 0xEC, +0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, +0x4C, 0x9A, 0x80, 0xC3, 0x80, 0xF4, 0xC0, 0x36, +0x55, 0xE5, 0x40, 0x9D, 0x4D, 0xEE, 0xC0, 0xDD, +0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0xF7, 0x1F, 0x6A, 0xAC, 0xEA, 0xFF, 0x6B, +0xA2, 0x67, 0x42, 0x32, 0x6C, 0xED, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x78, 0x9B, +0x6D, 0xE4, 0xA0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF4, 0x7C, 0x9B, 0x71, 0xE4, 0x40, 0xC4, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0xF7, 0x1F, 0x68, 0xA0, 0xF4, 0x60, 0x9B, +0x0C, 0xED, 0x04, 0xD5, 0x60, 0xA3, 0xFF, 0x6A, +0x24, 0x67, 0x4C, 0xE9, 0x21, 0x23, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF4, 0x64, 0x9B, 0x00, 0x6C, +0xFF, 0x6D, 0x60, 0xA3, 0x36, 0x6E, 0x6C, 0xEA, +0x05, 0xD2, 0x00, 0x18, 0x49, 0x1D, 0x00, 0x18, +0x86, 0x20, 0x01, 0x72, 0x0B, 0x61, 0x00, 0x6E, +0x91, 0x67, 0x01, 0x6D, 0xE6, 0x67, 0x00, 0x18, +0x97, 0x28, 0x04, 0x95, 0x82, 0x67, 0x0C, 0xEC, +0x00, 0x18, 0xE2, 0x0E, 0x05, 0x95, 0x00, 0x6C, +0x37, 0x6E, 0x00, 0x18, 0x49, 0x1D, 0x0B, 0x10, +0x00, 0x6E, 0x91, 0x67, 0x01, 0x6D, 0xE6, 0x67, +0x00, 0x18, 0x97, 0x28, 0x04, 0x95, 0x82, 0x67, +0x0C, 0xEC, 0x00, 0x18, 0xE2, 0x0E, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x44, 0x9A, 0x6F, 0x6D, +0x90, 0x6C, 0x40, 0xA2, 0x38, 0x6E, 0x4C, 0xED, +0x00, 0x18, 0x49, 0x1D, 0x00, 0x18, 0x71, 0x14, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF4, 0x60, 0x9B, 0xFF, 0x6A, 0x04, 0x67, +0x60, 0xA3, 0x25, 0x67, 0x4C, 0xE8, 0x4C, 0xEB, +0x72, 0x33, 0x4C, 0xEB, 0x4C, 0xE9, 0x24, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x64, 0x9B, +0x00, 0x6C, 0xFF, 0x6D, 0x60, 0xA3, 0x29, 0x6E, +0x6C, 0xEA, 0x04, 0xD2, 0x00, 0x18, 0x49, 0x1D, +0x00, 0x18, 0x86, 0x20, 0x01, 0x72, 0x0E, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, 0x83, 0xA2, +0x01, 0x6D, 0x08, 0x6E, 0x00, 0x6F, 0x00, 0x18, +0x97, 0x28, 0xA2, 0x67, 0x90, 0x67, 0xD1, 0x67, +0x00, 0x18, 0xC4, 0x0E, 0x04, 0x95, 0x00, 0x6C, +0x2A, 0x6E, 0x00, 0x18, 0x49, 0x1D, 0x0E, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, 0x83, 0xA2, +0x01, 0x6D, 0x08, 0x6E, 0x00, 0x6F, 0x00, 0x18, +0x97, 0x28, 0xA2, 0x67, 0x90, 0x67, 0xD1, 0x67, +0x00, 0x18, 0xC4, 0x0E, 0x00, 0x18, 0x71, 0x14, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF4, 0x40, 0x9A, 0xA2, 0xF6, 0x10, 0x4B, +0x80, 0xF0, 0xDE, 0xA3, 0xA0, 0xA2, 0x10, 0x6A, +0xFF, 0x6C, 0xCC, 0xEA, 0x8C, 0xEA, 0x8C, 0xED, +0x0C, 0x2A, 0xB2, 0x32, 0x8C, 0xEA, 0x09, 0x2A, +0x80, 0xF0, 0x91, 0xA3, 0x00, 0x6D, 0x18, 0x6E, +0xE5, 0x67, 0x00, 0x18, 0x97, 0x28, 0x00, 0x18, +0x71, 0x14, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6E, 0x64, 0x67, 0x85, 0x67, 0x30, 0xF0, +0x20, 0x6D, 0xA0, 0xF4, 0xA4, 0x9D, 0xA0, 0xF4, +0xC8, 0x9E, 0x30, 0xF0, 0x20, 0x68, 0xE0, 0xAD, +0xC0, 0xAE, 0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEF, +0xA2, 0xF6, 0x10, 0x48, 0xCC, 0xED, 0xBB, 0xE7, +0x80, 0xF0, 0xB2, 0xA0, 0xFF, 0x6A, 0x4C, 0xEE, +0xAE, 0xEE, 0x4C, 0xEB, 0x4C, 0xEC, 0x29, 0x2E, +0xE3, 0xF2, 0x57, 0xA0, 0x0E, 0x72, 0x10, 0x61, +0x24, 0x2B, 0xE3, 0xF2, 0x75, 0xA0, 0x03, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x00, 0x6D, 0xE3, 0xF2, +0x55, 0xC0, 0x00, 0x18, 0x6F, 0x0E, 0x01, 0x6C, +0x0C, 0x6D, 0x00, 0x18, 0x34, 0x08, 0x10, 0x10, +0x06, 0x72, 0x13, 0x61, 0x12, 0x23, 0xE3, 0xF2, +0x75, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x01, 0x6D, 0xE3, 0xF2, 0x55, 0xC0, 0x00, 0x18, +0x6F, 0x0E, 0x04, 0x6A, 0xE3, 0xF2, 0x57, 0xC0, +0x00, 0x6D, 0xFF, 0x6C, 0xC5, 0x67, 0x00, 0x18, +0x49, 0x1D, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0xF7, 0x1F, 0x68, 0x8C, 0xE8, 0x62, 0xF7, +0x8C, 0xA3, 0x01, 0x6B, 0xFF, 0x6A, 0x8C, 0xEB, +0x25, 0x67, 0x4C, 0xEE, 0x4C, 0xEF, 0x4C, 0xEB, +0x4C, 0xE9, 0x05, 0xD6, 0x04, 0xD7, 0x0B, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF4, 0x6C, 0x9B, +0x00, 0x6A, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF4, 0x70, 0x9B, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF4, 0x40, 0x9A, 0x60, 0xA2, +0xFF, 0x6A, 0x4C, 0xEB, 0x72, 0x33, 0x4C, 0xEB, +0x29, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, +0x64, 0x9B, 0x00, 0x6C, 0xFF, 0x6D, 0x60, 0xA3, +0x26, 0x6E, 0x6C, 0xEA, 0x06, 0xD2, 0x00, 0x18, +0x49, 0x1D, 0x00, 0x18, 0x86, 0x20, 0x01, 0x72, +0x0F, 0x61, 0x05, 0x96, 0x90, 0x67, 0x01, 0x6D, +0x00, 0x6F, 0x00, 0x18, 0x97, 0x28, 0x04, 0x96, +0x02, 0x67, 0x91, 0x67, 0xA2, 0x67, 0x00, 0x18, +0xC4, 0x0E, 0x90, 0x67, 0x00, 0x18, 0x98, 0x0E, +0x06, 0x95, 0x00, 0x6C, 0x27, 0x6E, 0x00, 0x18, +0x49, 0x1D, 0x04, 0x95, 0x91, 0x67, 0x00, 0x18, +0x4C, 0x0F, 0x13, 0x10, 0x04, 0x95, 0x91, 0x67, +0x00, 0x18, 0x4C, 0x0F, 0x05, 0x96, 0x90, 0x67, +0x01, 0x6D, 0x00, 0x6F, 0x00, 0x18, 0x97, 0x28, +0x04, 0x96, 0x02, 0x67, 0x91, 0x67, 0xA2, 0x67, +0x00, 0x18, 0xC4, 0x0E, 0x90, 0x67, 0x00, 0x18, +0x98, 0x0E, 0x00, 0x18, 0x71, 0x14, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, 0x54, 0x9A, +0xFF, 0x6B, 0x80, 0xA2, 0x00, 0xF6, 0x80, 0x34, +0x00, 0xF6, 0x83, 0x34, 0x00, 0x54, 0x24, 0x60, +0xA0, 0xA2, 0x7F, 0x6C, 0xAC, 0xEC, 0x80, 0xC2, +0x80, 0xA2, 0x40, 0x6D, 0x6C, 0xEC, 0xAD, 0xEC, +0x6C, 0xEC, 0x80, 0xC2, 0x80, 0xA2, 0x30, 0xF0, +0x20, 0x6C, 0xE0, 0xF3, 0x84, 0x9C, 0x3F, 0x6D, +0x80, 0xA4, 0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF3, +0x88, 0x9C, 0x80, 0xA4, 0x30, 0xF0, 0x20, 0x6C, +0xA0, 0xF4, 0x98, 0x9C, 0x80, 0xA4, 0x80, 0xA2, +0x6C, 0xEC, 0xAD, 0xEC, 0x6C, 0xEC, 0x80, 0xC2, +0x80, 0xA2, 0xBF, 0x6B, 0x8C, 0xEB, 0x60, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0x0E, 0x90, 0x24, 0x67, 0x4C, 0xE9, 0x03, 0x6B, +0x4C, 0xEF, 0x2C, 0xEB, 0x00, 0x6A, 0x0B, 0xD5, +0x0C, 0xD6, 0x04, 0xD7, 0x40, 0xC8, 0x00, 0x6A, +0x07, 0x23, 0x25, 0x10, 0x0A, 0x6C, 0x00, 0x18, +0xAA, 0x11, 0x40, 0xA8, 0x01, 0x4A, 0x40, 0xC8, +0x1F, 0xF7, 0x00, 0x6A, 0x2C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF4, 0x5C, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0x40, 0x9A, +0x49, 0xE1, 0x0B, 0x93, 0x40, 0x9A, 0x6C, 0xEA, +0x0C, 0x93, 0x6E, 0xEA, 0x04, 0x22, 0x40, 0xA8, +0x04, 0x93, 0x63, 0xEA, 0xDF, 0x61, 0x40, 0xA8, +0x04, 0x93, 0x63, 0xEA, 0x58, 0x67, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFF, 0x6A, 0xA0, 0x35, 0x4C, 0xEC, 0xA0, 0x35, +0xCC, 0xEA, 0x4D, 0xED, 0x05, 0x2C, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF4, 0x44, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0x48, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, 0x8C, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, 0x70, 0x9B, +0xAD, 0xEA, 0x40, 0xDC, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF4, 0x54, 0x9A, 0x60, 0xDC, +0x00, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0xFF, 0xF7, 0x1F, 0x6B, 0x8C, 0xEA, +0xAC, 0xEB, 0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF4, 0x48, 0x9A, 0x60, 0x33, +0x60, 0x33, 0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0x4C, 0x9A, 0x00, 0x6C, 0x60, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, 0x74, 0x9B, +0x40, 0xA2, 0x80, 0xC3, 0xFF, 0x6B, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF4, 0x7C, 0x9B, 0xFF, 0x6A, 0xCC, 0xEA, +0x6D, 0xEA, 0xE0, 0xF1, 0x1F, 0x6B, 0xAC, 0xEB, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF4, 0x8C, 0x9C, +0x60, 0x33, 0x60, 0x33, 0x6D, 0xEA, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x54, 0x9A, +0x6D, 0xEA, 0x40, 0xDC, 0x20, 0xE8, 0x00, 0x65, +0xE0, 0xF1, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x74, 0x9B, 0xAC, 0xEA, 0x40, 0x32, +0x40, 0x32, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF4, 0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF4, 0x58, 0x9A, 0xFF, 0x6B, +0x40, 0xA2, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, 0x40, 0x9A, +0x40, 0xAA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF4, 0x40, 0x9A, 0x40, 0xAA, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x04, 0xF7, +0x10, 0x68, 0x10, 0x10, 0x05, 0x6C, 0xFF, 0x48, +0x00, 0x18, 0xAA, 0x11, 0x0B, 0x28, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF4, 0x64, 0x9A, 0x08, 0xF0, +0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x00, 0x6A, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF4, 0x40, 0x9A, 0x60, 0xAA, 0x3F, 0x6A, +0x6C, 0xEA, 0xE8, 0x2A, 0x01, 0x6A, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x01, 0x68, 0x04, 0xEC, 0x82, 0xF3, 0x08, 0x69, +0x10, 0x10, 0x01, 0x6C, 0xFF, 0x49, 0x00, 0x18, +0xAA, 0x11, 0x0B, 0x29, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF4, 0x64, 0x9A, 0x08, 0xF0, 0x00, 0x6C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x00, 0x6A, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, +0x40, 0x9A, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, +0x6C, 0xEA, 0x0C, 0xEA, 0xE6, 0x2A, 0x01, 0x6A, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x0E, 0x92, 0x04, 0x67, +0x0F, 0x91, 0x04, 0xD2, 0x04, 0x93, 0xFF, 0x6A, +0x4C, 0xE8, 0x4C, 0xEB, 0x90, 0x67, 0x0B, 0xD5, +0x0C, 0xD6, 0x0D, 0xD7, 0x04, 0xD3, 0x4C, 0xE9, +0x00, 0x18, 0x38, 0x10, 0x80, 0xF0, 0x07, 0x22, +0x06, 0x58, 0x80, 0xF0, 0x04, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0x30, 0xE0, 0xF0, 0x14, 0x4A, +0x09, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x02, 0xF2, +0x10, 0x6A, 0x0E, 0x10, 0x02, 0xF2, 0x00, 0x6A, +0x0B, 0x10, 0x22, 0xF2, 0x00, 0x6A, 0x08, 0x10, +0x22, 0xF2, 0x10, 0x6A, 0x05, 0x10, 0x42, 0xF2, +0x00, 0x6A, 0x02, 0x10, 0x42, 0xF2, 0x10, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x0D, 0x94, 0xE0, 0xF4, +0x68, 0x9B, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0xE0, 0xF4, 0x8C, 0x9C, 0x8D, 0xEB, 0x06, 0x21, +0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF4, 0x90, 0x9C, +0x6D, 0xEC, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0xE0, 0xF4, 0x94, 0x9C, 0x6C, 0xEC, 0x04, 0x96, +0x06, 0x26, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x74, 0x9B, 0x8D, 0xEB, 0x05, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xE0, 0xF4, 0x78, 0x9B, 0x8C, 0xEB, +0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, +0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0xF4, 0xBC, 0x9C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF4, 0xA0, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0x0B, 0x96, 0xE0, 0xF4, +0x9C, 0x9C, 0xB5, 0xE2, 0xCC, 0xEC, 0x80, 0xDD, +0x84, 0x42, 0x1F, 0xF7, 0x00, 0x6D, 0xAC, 0xEC, +0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0x00, 0xF5, 0xA0, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x00, 0xF5, +0xA4, 0x9C, 0x30, 0xF0, 0x20, 0x6C, 0x0C, 0x96, +0xE0, 0xF4, 0x9C, 0x9C, 0xB5, 0xE2, 0xCC, 0xEC, +0x80, 0xDD, 0x87, 0x42, 0x01, 0x4C, 0x1F, 0xF7, +0x00, 0x6D, 0xAC, 0xEC, 0x02, 0xF0, 0x00, 0x74, +0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, +0x00, 0xF5, 0x88, 0x9C, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x00, 0xF5, 0x8C, 0x9C, 0x89, 0xE2, +0x60, 0xDA, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x00, 0x68, 0x01, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF5, 0x74, 0x9B, 0x4E, 0xE8, +0x10, 0xF0, 0x20, 0x6A, 0x68, 0xF2, 0x1D, 0x4A, +0x09, 0xE2, 0x40, 0xDB, 0x00, 0x18, 0x89, 0x07, +0x00, 0x18, 0xAA, 0x0F, 0x00, 0x18, 0x88, 0x07, +0x00, 0x18, 0x89, 0x07, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, 0x8C, 0x9A, +0x02, 0x6B, 0x8C, 0xEB, 0x07, 0x23, 0x03, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x80, 0xF0, 0x6C, 0xDA, +0x00, 0x18, 0x0D, 0x16, 0x00, 0x18, 0x88, 0x07, +0x00, 0x18, 0x89, 0x07, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, 0x8C, 0x9A, +0x04, 0x6B, 0x8C, 0xEB, 0x09, 0x23, 0x05, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x80, 0xF0, 0x6C, 0xDA, +0x00, 0x18, 0x56, 0x14, 0x00, 0x18, 0x11, 0x14, +0x00, 0x18, 0x88, 0x07, 0x00, 0x18, 0x89, 0x07, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x80, 0xF0, 0x99, 0xA2, 0x7F, 0x6B, 0x8C, 0xEB, +0x09, 0x23, 0x80, 0xF0, 0x7D, 0xA2, 0xE3, 0xF2, +0x57, 0xA2, 0x6E, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0x1E, 0x0C, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF7, 0x5C, 0x9A, 0x02, 0x2A, 0x00, 0x18, +0x61, 0x0A, 0x00, 0x18, 0x88, 0x07, 0x00, 0x18, +0x89, 0x07, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x80, 0xF0, 0x8C, 0x9A, 0x10, 0x6B, +0x8C, 0xEB, 0x07, 0x23, 0x11, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x80, 0xF0, 0x6C, 0xDA, 0x00, 0x18, +0xF6, 0x39, 0x00, 0x18, 0x88, 0x07, 0x00, 0x18, +0x89, 0x07, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x80, 0xF0, 0x8C, 0x9A, 0xFF, 0x6B, +0x01, 0x4B, 0x8C, 0xEB, 0x08, 0x23, 0xFF, 0x6B, +0x02, 0x4B, 0x6B, 0xEB, 0x8C, 0xEB, 0x80, 0xF0, +0x6C, 0xDA, 0x00, 0x18, 0xBA, 0x12, 0x00, 0x18, +0x88, 0x07, 0x00, 0x18, 0x89, 0x07, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, +0x8C, 0x9A, 0x02, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, +0x08, 0x23, 0x02, 0xF0, 0x01, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x80, 0xF0, 0x6C, 0xDA, 0x00, 0x18, +0x33, 0x1F, 0x00, 0x18, 0x88, 0x07, 0x66, 0x17, +0x00, 0x6A, 0x64, 0x67, 0x66, 0xEA, 0x01, 0x6D, +0xAC, 0xEB, 0x04, 0x2B, 0x01, 0x4A, 0x20, 0x72, +0xF8, 0x61, 0x20, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0x40, 0x9A, +0x25, 0x67, 0x49, 0xE4, 0x00, 0x9A, 0x85, 0x67, +0x00, 0x18, 0xEE, 0x10, 0x2C, 0xE8, 0x06, 0xEA, +0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x41, 0x45, 0x05, 0x67, +0x0C, 0xD6, 0x13, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0x20, 0x9A, 0x0F, 0xE8, 0x25, 0xE4, +0x40, 0x99, 0x85, 0x67, 0x04, 0xD2, 0x00, 0x18, +0xEE, 0x10, 0x0C, 0x93, 0x64, 0xEA, 0x43, 0x67, +0x04, 0x93, 0x6C, 0xE8, 0x0D, 0xEA, 0x40, 0xD9, +0x07, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, +0x20, 0x9A, 0x0C, 0x92, 0x31, 0xE4, 0x40, 0xDC, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x41, 0x45, 0x0C, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0x40, 0x9A, +0xAF, 0xEB, 0xCC, 0xED, 0x51, 0xE4, 0x40, 0x9C, +0x6C, 0xEA, 0xAD, 0xEA, 0x40, 0xDC, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0x40, 0x9A, +0x51, 0xE4, 0xC0, 0xDC, 0x20, 0xE8, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x6A, 0xFF, 0xF7, 0x1F, 0x6B, 0x4C, 0xED, +0x4C, 0xEE, 0x24, 0x67, 0x6C, 0xEF, 0x10, 0x90, +0x6C, 0xE9, 0x05, 0xD5, 0x06, 0xD6, 0x04, 0xD7, +0x00, 0x6A, 0x05, 0x10, 0x0A, 0x6C, 0x00, 0x18, +0xAA, 0x11, 0x40, 0xA8, 0x01, 0x4A, 0x40, 0xC8, +0x1F, 0xF7, 0x00, 0x6A, 0x2C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF4, 0x5C, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0x40, 0x9A, +0x49, 0xE1, 0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, +0x05, 0x93, 0x6C, 0xEA, 0x06, 0x93, 0x6E, 0xEA, +0x04, 0x22, 0x40, 0xA8, 0x04, 0x93, 0x63, 0xEA, +0xDD, 0x61, 0x40, 0xA8, 0x04, 0x93, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x63, 0xEA, 0x58, 0x67, +0x06, 0x63, 0x00, 0xEF, 0x03, 0x6F, 0x8C, 0xEF, +0x64, 0x67, 0x46, 0x67, 0x04, 0x27, 0x0B, 0x10, +0xA0, 0xDB, 0xFC, 0x4A, 0x04, 0x4B, 0x04, 0x5A, +0xFB, 0x60, 0x03, 0x6A, 0x4C, 0xEE, 0x03, 0x10, +0xA0, 0xC4, 0xFF, 0x4E, 0x01, 0x4C, 0xFC, 0x2E, +0x00, 0x6A, 0x20, 0xE8, 0xFF, 0x6A, 0xAC, 0xEA, +0x03, 0x10, 0x40, 0xC4, 0xFF, 0x4E, 0x01, 0x4C, +0xFC, 0x2E, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0x03, 0x6B, 0x05, 0x67, +0x6C, 0xE8, 0x44, 0x67, 0xE4, 0x67, 0x85, 0x67, +0x12, 0x28, 0x4C, 0xEB, 0x10, 0x2B, 0x86, 0x67, +0x06, 0x10, 0x61, 0xE5, 0x00, 0x98, 0x7D, 0xE2, +0xFC, 0x4C, 0x00, 0xDF, 0x04, 0x4B, 0x04, 0x5C, +0xF8, 0x60, 0xCA, 0x34, 0x88, 0x34, 0x03, 0x6B, +0x9D, 0xE2, 0x6C, 0xEE, 0x91, 0xE5, 0x00, 0x6B, +0x06, 0x10, 0x61, 0xE4, 0x00, 0xA0, 0x75, 0xE7, +0xFF, 0x4E, 0x00, 0xC5, 0x01, 0x4B, 0xF9, 0x2E, +0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0x00, 0x6B, 0x43, 0x67, 0x0C, 0x10, 0x7D, 0xE4, +0x69, 0xE5, 0xE0, 0xA7, 0x40, 0xA2, 0x01, 0x4B, +0x4B, 0xE7, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, +0x43, 0x32, 0x02, 0x2A, 0xFF, 0x4E, 0xF3, 0x2E, +0x20, 0xE8, 0x00, 0x65, 0x06, 0x2C, 0x64, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x7C, 0xDA, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, +0x9C, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, +0x5C, 0x9A, 0x28, 0x72, 0x2D, 0x60, 0x29, 0x5A, +0x07, 0x60, 0x14, 0x72, 0x19, 0x60, 0x19, 0x72, +0x1F, 0x60, 0x0A, 0x72, 0x0D, 0x60, 0x20, 0xE8, +0x50, 0x72, 0x32, 0x60, 0x51, 0x5A, 0x03, 0x60, +0x32, 0x72, 0x26, 0x60, 0x20, 0xE8, 0x64, 0x72, +0x33, 0x60, 0xC8, 0x72, 0x39, 0x60, 0x20, 0xE8, +0x02, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x60, 0xDA, 0xE0, 0xF7, 0x1E, 0x4B, 0x39, 0x10, +0x03, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x60, 0xDA, 0xE1, 0xF3, 0x1D, 0x4B, 0x31, 0x10, +0x09, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x60, 0xDA, 0xE4, 0xF3, 0x17, 0x4B, 0x29, 0x10, +0x05, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x60, 0xDA, 0xE2, 0xF3, 0x1B, 0x4B, 0x21, 0x10, +0x11, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x60, 0xDA, 0xE8, 0xF3, 0x0F, 0x4B, 0x19, 0x10, +0x0A, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x60, 0xDA, 0xE4, 0xF7, 0x16, 0x4B, 0x11, 0x10, +0x22, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x60, 0xDA, 0x11, 0xF0, 0x00, 0x6B, 0x09, 0x10, +0x43, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, +0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x64, 0xDA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x82, 0xF6, 0x5C, 0x9A, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x44, 0x9A, +0xFF, 0x63, 0x58, 0xEC, 0x12, 0xEA, 0x00, 0xD2, +0x00, 0x92, 0xFF, 0x4A, 0x00, 0xD2, 0x00, 0x92, +0xFB, 0x2A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x40, 0x9A, +0xFF, 0x63, 0x58, 0xEC, 0x12, 0xEA, 0x00, 0xD2, +0x00, 0x92, 0xFF, 0x4A, 0x00, 0xD2, 0x00, 0x92, +0xFB, 0x2A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x60, 0x11, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xED, +0x00, 0x18, 0x47, 0x11, 0x05, 0x97, 0x00, 0x6A, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xEE, +0x00, 0x18, 0x4C, 0x11, 0x50, 0x67, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0xC0, 0xA4, 0xC0, 0xF0, 0xE3, 0xA3, 0x02, 0x6A, +0x01, 0x6D, 0x4B, 0xEA, 0xAC, 0xEE, 0xEC, 0xEA, +0xCD, 0xEA, 0xC0, 0xF0, 0x43, 0xC3, 0x80, 0xA4, +0x86, 0x34, 0xAC, 0xEC, 0x84, 0x35, 0x03, 0x6C, +0x8B, 0xEC, 0x4C, 0xEC, 0xAD, 0xEC, 0xC0, 0xF0, +0x83, 0xC3, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD1, +0x00, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xA4, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF3, 0xB1, 0xA2, +0x01, 0x6C, 0x8C, 0xEB, 0x1C, 0x65, 0xF6, 0x4C, +0x6C, 0x33, 0xAC, 0xEC, 0x6D, 0xEC, 0x30, 0xF0, +0x20, 0x6B, 0x20, 0xF5, 0x74, 0x9B, 0x63, 0xF3, +0x91, 0xC2, 0xFE, 0x6E, 0xA0, 0xA3, 0x08, 0x6F, +0xEC, 0xEC, 0xCC, 0xED, 0xA0, 0xC3, 0xFF, 0x6D, +0x36, 0x24, 0x30, 0xF0, 0x20, 0x6C, 0x20, 0xF6, +0x1C, 0x9C, 0x08, 0x69, 0x2B, 0xE9, 0x80, 0xA0, +0xAC, 0xEC, 0x2C, 0xEC, 0x05, 0x69, 0x2D, 0xEC, +0xAC, 0xEC, 0x80, 0xC0, 0x30, 0xF0, 0x20, 0x6C, +0x40, 0xF6, 0x80, 0x9C, 0x00, 0xA4, 0x0F, 0x6C, +0x0C, 0xEC, 0x04, 0x68, 0x0E, 0xEC, 0x18, 0x2C, +0x63, 0xF3, 0x90, 0xA2, 0x8C, 0xEF, 0xAC, 0xEF, +0x1A, 0x2F, 0x83, 0xF3, 0x9F, 0xA2, 0xAD, 0x74, +0x04, 0x61, 0xA3, 0xF3, 0x40, 0xA2, 0x35, 0x72, +0x12, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x74, 0x9A, 0xFF, 0x6C, 0x01, 0x6D, 0x40, 0xA3, +0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x05, 0x10, +0x40, 0xA3, 0x98, 0x67, 0xAC, 0xEA, 0x8D, 0xEA, +0xAC, 0xEA, 0x40, 0xC3, 0x03, 0x10, 0x40, 0xA3, +0x4C, 0xEE, 0xC0, 0xC3, 0x01, 0x91, 0x00, 0x90, +0x01, 0x63, 0x20, 0xE8, 0x40, 0xA4, 0x0C, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF6, 0x64, 0x9A, +0xFF, 0x6C, 0x18, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x26, 0xF2, 0x60, 0xA2, +0x08, 0x6A, 0x6C, 0xEA, 0x08, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF6, 0x64, 0x9A, 0xE7, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0xA0, 0xA4, 0xC0, 0xF0, 0xCA, 0xA2, 0x02, 0x6B, +0x01, 0x6C, 0x6B, 0xEB, 0x8C, 0xED, 0xCC, 0xEB, +0xAD, 0xEB, 0xC0, 0xF0, 0x6A, 0xC2, 0x8C, 0xEB, +0x01, 0x23, 0x18, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF6, 0x44, 0x9A, 0x60, 0xC2, 0x20, 0xE8, +0x60, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0xC0, 0xF0, 0xB8, 0xA2, 0x07, 0x6C, +0x6C, 0xEC, 0x08, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, +0x8D, 0xEB, 0xC0, 0xF0, 0x78, 0xC2, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xA0, 0xA4, 0xC0, 0xF0, +0xD1, 0xA2, 0x02, 0x6B, 0x01, 0x6C, 0x6B, 0xEB, +0x8C, 0xED, 0xCC, 0xEB, 0xAD, 0xEB, 0xC0, 0xF0, +0x71, 0xC2, 0x8C, 0xEB, 0xFF, 0x6A, 0x42, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x88, 0x9B, +0xE5, 0x6D, 0xAB, 0xED, 0x60, 0xA4, 0x4C, 0xEB, +0xAC, 0xEB, 0xA4, 0x6D, 0xAD, 0xEB, 0x60, 0xDC, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x6C, 0x9B, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF6, 0x50, 0x9A, 0x42, 0xF2, +0x15, 0x6B, 0x01, 0x6C, 0x60, 0xCA, 0x00, 0x18, +0x33, 0x21, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF6, +0x74, 0x9A, 0x03, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF6, +0x78, 0x9A, 0xFE, 0xF5, 0x1C, 0x4C, 0x40, 0x9B, +0x8C, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF6, 0x7C, 0x9A, 0x81, 0xF1, 0x00, 0x4C, +0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF6, 0x60, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x60, 0xF6, 0x84, 0x9C, 0x40, 0x9B, +0x8C, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x01, 0x6D, 0x04, 0x67, 0xAB, 0xED, +0x41, 0xF4, 0x18, 0x6C, 0x00, 0x18, 0xAB, 0x1A, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x63, 0xF3, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6D, +0x80, 0xA0, 0x60, 0xF6, 0xA8, 0x9D, 0x05, 0x97, +0x04, 0x90, 0x4C, 0xED, 0x00, 0xF6, 0x80, 0x34, +0xAD, 0xEC, 0x63, 0xF3, 0x94, 0xDB, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xA4, 0x24, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x02, 0x6D, 0xC4, 0x67, 0x38, 0x6C, 0x00, 0x18, +0x78, 0x22, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x01, 0x6D, 0xC4, 0x67, +0x28, 0x6C, 0x00, 0x18, 0x78, 0x22, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x40, 0xA4, 0x7D, 0x67, 0x07, 0x6D, 0x50, 0xC3, +0x41, 0xA4, 0x04, 0x06, 0x51, 0xC3, 0x42, 0xA4, +0x52, 0xC3, 0x43, 0xA4, 0x53, 0xC3, 0x44, 0xA4, +0x30, 0x6C, 0x54, 0xC3, 0x00, 0x6A, 0x55, 0xC3, +0x56, 0xC3, 0x00, 0x18, 0x78, 0x22, 0x07, 0x97, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x03, 0x6D, 0xC4, 0x67, 0x11, 0x6C, 0x00, 0x18, +0x78, 0x22, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x01, 0x6D, 0xC4, 0x67, +0x1B, 0x6C, 0x00, 0x18, 0x78, 0x22, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x01, 0x6D, 0xC4, 0x67, 0x17, 0x6C, 0x00, 0x18, +0x78, 0x22, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x01, 0x6D, 0xC4, 0x67, +0x23, 0x6C, 0x00, 0x18, 0x78, 0x22, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x61, 0xA4, 0xBD, 0x67, 0x40, 0xA4, 0x70, 0xC5, +0x62, 0xA4, 0x08, 0x5A, 0x71, 0xC5, 0x63, 0xA4, +0x72, 0xC5, 0x64, 0xA4, 0x73, 0xC5, 0x65, 0xA4, +0x74, 0xC5, 0x66, 0xA4, 0xFF, 0x6C, 0x75, 0xC5, +0x44, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, +0x40, 0xF2, 0x0C, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, +0x00, 0xEA, 0x2A, 0x6C, 0x08, 0x10, 0x29, 0x6C, +0x02, 0x6D, 0x38, 0x10, 0x31, 0x6C, 0x35, 0x10, +0x32, 0x6C, 0x33, 0x10, 0x33, 0x6C, 0x06, 0x6D, +0x31, 0x10, 0x04, 0x04, 0x00, 0x18, 0x37, 0x22, +0x30, 0x10, 0x9D, 0x67, 0x70, 0xA4, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF3, +0x7F, 0xC2, 0x71, 0xA4, 0x83, 0xF3, 0x60, 0xC2, +0x72, 0xA4, 0x83, 0xF3, 0x61, 0xC2, 0x73, 0xA4, +0x83, 0xF3, 0x62, 0xC2, 0x74, 0xA4, 0x83, 0xF3, +0x63, 0xC2, 0x1B, 0x10, 0xBD, 0x67, 0x50, 0xA5, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x93, 0xA5, 0x83, 0xF3, 0x4E, 0xC3, 0x54, 0xA5, +0x80, 0x34, 0x80, 0x34, 0x00, 0xF6, 0x40, 0x32, +0x8D, 0xEA, 0x91, 0xA5, 0x8D, 0xEA, 0x92, 0xA5, +0x80, 0x34, 0x8D, 0xEA, 0x83, 0xF3, 0x44, 0xDB, +0x04, 0x10, 0x01, 0x6D, 0x04, 0x06, 0x00, 0x18, +0x78, 0x22, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, +0x83, 0xF3, 0x5D, 0xA0, 0x02, 0x6C, 0x27, 0x72, +0x4B, 0x60, 0x28, 0x5A, 0x06, 0x60, 0x15, 0x72, +0x0C, 0x60, 0x23, 0x72, 0x01, 0x6C, 0x44, 0x60, +0xA7, 0x10, 0x34, 0x72, 0x4A, 0x60, 0x39, 0x72, +0x80, 0xF0, 0x04, 0x60, 0x30, 0x72, 0x3F, 0x60, +0x9F, 0x10, 0x83, 0xF3, 0x9F, 0xA0, 0x40, 0x6A, +0x8C, 0xEA, 0x0E, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF6, 0x4C, 0x9A, 0x3F, 0x6D, 0xAF, 0xEB, +0x40, 0x9A, 0x8D, 0xEB, 0x46, 0x32, 0xAC, 0xEA, +0x49, 0xE3, 0xFF, 0x6B, 0x6C, 0xEA, 0x0A, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF6, 0x4C, 0x9A, +0x60, 0x9A, 0x3F, 0x6A, 0x66, 0x33, 0x4C, 0xEB, +0x8C, 0xEA, 0x49, 0xE3, 0x40, 0x5A, 0x78, 0x67, +0x6B, 0xEB, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF6, 0xB0, 0x9B, 0x30, 0xF0, 0x20, 0x6E, +0x60, 0xF6, 0xD4, 0x9E, 0x80, 0x9D, 0x40, 0xF6, +0x40, 0x33, 0x44, 0x32, 0xCC, 0xEC, 0x8D, 0xEB, +0x60, 0xDD, 0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF6, +0x8C, 0x9B, 0x7F, 0x6D, 0xAB, 0xED, 0x60, 0x9C, +0xAC, 0xEB, 0x6D, 0xEA, 0x40, 0xDC, 0x64, 0x10, +0x00, 0x18, 0x44, 0x22, 0x61, 0x10, 0x00, 0x6D, +0x01, 0x6C, 0xC5, 0x67, 0x00, 0x18, 0x1E, 0x22, +0x5B, 0x10, 0x83, 0xF3, 0x5F, 0xA0, 0x01, 0x69, +0x2C, 0xEA, 0x23, 0x22, 0x63, 0xF3, 0x51, 0xA0, +0x08, 0x6B, 0x6C, 0xEA, 0x51, 0x2A, 0x9D, 0x67, +0x30, 0xC4, 0xB1, 0x67, 0x34, 0x6C, 0x04, 0x06, +0x00, 0x18, 0x78, 0x22, 0x02, 0x6C, 0x00, 0x18, +0xD7, 0x21, 0x63, 0xF3, 0x50, 0xA0, 0x08, 0x6B, +0xFF, 0x6C, 0x6D, 0xEA, 0x30, 0x6B, 0x63, 0xF3, +0x7E, 0xC0, 0x10, 0x6B, 0x6D, 0xEA, 0x63, 0xF3, +0x50, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x74, 0x9A, 0x40, 0xA3, 0x8C, 0xEA, 0x2D, 0xEA, +0x12, 0x10, 0x03, 0x6C, 0x00, 0x18, 0xD7, 0x21, +0x00, 0x18, 0xCD, 0x21, 0x63, 0xF3, 0x70, 0xA0, +0x09, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x63, 0xF3, +0x50, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x74, 0x9A, 0xFD, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x1E, 0x10, 0xA0, 0xF0, 0x9C, 0xA0, +0x01, 0x6A, 0xFF, 0x6B, 0x8C, 0xEA, 0x18, 0x22, +0xC0, 0xF0, 0x80, 0xA0, 0x04, 0x6A, 0x8C, 0xEA, +0x6C, 0xEA, 0x12, 0x22, 0x63, 0xF3, 0x90, 0xA0, +0x80, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x6C, 0xEA, +0x0B, 0x22, 0x63, 0xF3, 0x5D, 0xA0, 0x02, 0x22, +0x03, 0x72, 0x06, 0x61, 0xFF, 0x6C, 0x69, 0x4C, +0x00, 0x6D, 0x05, 0x6E, 0x00, 0x18, 0x3C, 0x16, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6C, 0x60, 0xF6, 0x78, 0x9B, 0x60, 0xF6, +0x9C, 0x9C, 0x6D, 0xE5, 0x91, 0xE5, 0x00, 0x6E, +0xC0, 0xDB, 0x04, 0x4B, 0x8A, 0xEB, 0xFB, 0x61, +0xE7, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF4, 0x4C, 0x9A, 0x10, 0x6C, +0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF6, +0x58, 0x9A, 0x49, 0xE5, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x40, 0x9A, 0xFF, 0x6B, +0x55, 0xE5, 0x40, 0xA5, 0x6C, 0xEA, 0x8D, 0xEA, +0x6C, 0xEA, 0x40, 0xC5, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, 0x80, 0xF0, +0x4C, 0x98, 0x04, 0x6B, 0xA4, 0x67, 0x6D, 0xEA, +0x80, 0xF0, 0x4C, 0xD8, 0x40, 0xF6, 0x5A, 0xA8, +0x09, 0xF7, 0x00, 0x72, 0x07, 0x60, 0x40, 0xF6, +0x7A, 0xA0, 0x40, 0xF6, 0x5B, 0xA0, 0xFF, 0x4B, +0x4E, 0xEB, 0x0A, 0x2B, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF4, 0x64, 0x9A, 0x00, 0xF2, 0x00, 0x6C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x13, 0x10, +0x50, 0x32, 0x11, 0xE2, 0x40, 0xF1, 0x1A, 0x4C, +0x10, 0x6E, 0x00, 0x18, 0x4C, 0x11, 0x40, 0xF6, +0x5B, 0xA0, 0x50, 0x6B, 0x01, 0x4A, 0x40, 0xF6, +0x5B, 0xC0, 0x40, 0xF6, 0x5B, 0xA0, 0x6E, 0xEA, +0x02, 0x2A, 0x40, 0xF6, 0x5B, 0xC0, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0xC2, 0xF4, 0x7F, 0xA2, 0xA4, 0x67, 0x04, 0x2B, +0xE2, 0xF4, 0x40, 0xA2, 0x0F, 0x72, 0x0B, 0x60, +0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, +0xC2, 0xF4, 0x5F, 0xA0, 0xE2, 0xF4, 0x60, 0xA0, +0xFF, 0x4A, 0x6E, 0xEA, 0x0C, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF4, 0x64, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x80, 0xF6, 0x84, 0x9C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x9F, 0x10, 0x23, 0xA5, +0xFF, 0xF7, 0x1F, 0x6A, 0x04, 0x49, 0x4C, 0xE9, +0xC2, 0xF4, 0x5C, 0xA8, 0x1C, 0x2A, 0xE8, 0x6C, +0x98, 0xEB, 0xE8, 0x6E, 0x12, 0xEB, 0x11, 0xE3, +0x40, 0xF6, 0x1C, 0x4C, 0x00, 0x18, 0x4C, 0x11, +0xE2, 0xF4, 0x40, 0xA0, 0xC2, 0xF4, 0x7F, 0xA0, +0xC2, 0xF4, 0x3C, 0xC8, 0x4E, 0xEB, 0x72, 0x2B, +0x01, 0x4A, 0xE2, 0xF4, 0x40, 0xC0, 0xE2, 0xF4, +0x40, 0xA0, 0x10, 0x6B, 0x6E, 0xEA, 0x6A, 0x2A, +0xE2, 0xF4, 0x40, 0xC0, 0x67, 0x10, 0x62, 0xA5, +0x34, 0x2B, 0x4D, 0xE1, 0xE3, 0x53, 0x31, 0x60, +0xC2, 0xF4, 0x7E, 0xA0, 0xE8, 0x6C, 0x98, 0xEB, +0x12, 0xEB, 0x0D, 0xE3, 0x40, 0xF6, 0x9E, 0xA3, +0x28, 0x2C, 0x40, 0xF6, 0x9F, 0xA3, 0xFF, 0x6E, +0xFC, 0x4A, 0xFF, 0x4C, 0x40, 0xF6, 0x9F, 0xC3, +0xC2, 0xF4, 0x7C, 0xA8, 0xE8, 0x6C, 0xCC, 0xEA, +0xFF, 0x4B, 0xC2, 0xF4, 0x7C, 0xC8, 0xC2, 0xF4, +0x7E, 0xA0, 0x2C, 0xEE, 0x98, 0xEB, 0x12, 0xEB, +0x6D, 0xE0, 0x49, 0xE3, 0x50, 0xF6, 0x8F, 0x42, +0x00, 0x18, 0xBB, 0x11, 0xC2, 0xF4, 0x5E, 0xA0, +0xE8, 0x6B, 0x78, 0xEA, 0x12, 0xEA, 0x09, 0xE2, +0x40, 0xF6, 0x7F, 0xA2, 0x6D, 0xE1, 0x40, 0xF6, +0x7F, 0xC2, 0xC2, 0xF4, 0x5C, 0xA8, 0x45, 0xE1, +0x2F, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0xE2, 0xF4, 0x60, 0xA2, 0x10, 0x6C, +0x01, 0x4B, 0xE2, 0xF4, 0x60, 0xC2, 0xE2, 0xF4, +0x60, 0xA2, 0x8E, 0xEB, 0x02, 0x2B, 0xE2, 0xF4, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0xC2, 0xF4, 0x7E, 0xA2, 0x10, 0x6C, +0x01, 0x4B, 0xC2, 0xF4, 0x7E, 0xC2, 0xC2, 0xF4, +0x7E, 0xA2, 0x8E, 0xEB, 0x02, 0x2B, 0xC2, 0xF4, +0x7E, 0xC2, 0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, +0x10, 0x48, 0xC2, 0xF4, 0x9E, 0xA0, 0xE8, 0x6A, +0xC2, 0x67, 0x58, 0xEC, 0x12, 0xEC, 0x11, 0xE4, +0x40, 0xF6, 0x1C, 0x4C, 0x00, 0x18, 0x4C, 0x11, +0xC2, 0xF4, 0x3C, 0xC8, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xC2, 0xF4, 0x9E, 0xA2, +0xE8, 0x6B, 0x78, 0xEC, 0xC2, 0xF4, 0x9C, 0xAA, +0x12, 0xEB, 0x4D, 0xE3, 0x40, 0xF7, 0x83, 0xC3, +0x80, 0xF0, 0x6C, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, +0x80, 0xF0, 0x6C, 0xDA, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0xA2, 0xF6, 0x4B, 0xA3, 0xFF, 0x6F, +0xE0, 0xF0, 0xC7, 0xA5, 0x41, 0xC5, 0x43, 0xA5, +0xA2, 0xF6, 0x6B, 0xA3, 0x03, 0x4A, 0xEC, 0xEA, +0x09, 0x10, 0xED, 0x42, 0xFF, 0x68, 0x0C, 0xEF, +0xFD, 0xE5, 0x64, 0xC7, 0xE6, 0xA7, 0x03, 0x4F, +0xE9, 0xE2, 0x0C, 0xEA, 0xEF, 0x46, 0xE2, 0xEA, +0xF4, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x6B, 0xA2, 0x01, 0x4B, 0xA2, 0xF6, 0x6B, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF6, 0x58, 0x9A, +0x51, 0xE4, 0x00, 0x18, 0xBB, 0x11, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x6C, 0xA2, +0x24, 0x67, 0x02, 0x6E, 0x61, 0xC5, 0x01, 0x4B, +0xA2, 0xF6, 0x6C, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF6, 0x98, 0x9A, 0x05, 0x67, 0x91, 0xE1, +0x00, 0x18, 0xBB, 0x11, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x88, 0x9A, 0xCE, 0xA0, 0xA2, 0x40, +0x91, 0xE1, 0x00, 0x18, 0xBB, 0x11, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, +0x14, 0x10, 0xE0, 0xF3, 0x08, 0x70, 0x0A, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, 0x64, 0x9A, +0x80, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x00, 0x6A, 0x10, 0x10, 0x01, 0x48, 0xFF, 0xF7, +0x1F, 0x6A, 0x0A, 0x6C, 0x4C, 0xE8, 0x00, 0x18, +0xAA, 0x11, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, +0x58, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0xE4, 0x2A, 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x24, 0x67, 0x00, 0x18, +0xE0, 0x13, 0x00, 0x6B, 0x2C, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x4C, 0x9A, 0x0F, 0x6C, +0xFF, 0xF7, 0x1F, 0x6B, 0x00, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF4, 0x48, 0x9A, 0x4C, 0xE8, +0xA1, 0x40, 0xA2, 0x32, 0x42, 0x32, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF6, 0x90, 0x9C, +0xAC, 0xEB, 0x60, 0xCC, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x74, 0x9B, 0x40, 0xC3, 0xE0, 0xF0, +0x87, 0xA1, 0x00, 0x18, 0x1B, 0x13, 0x87, 0x40, +0x12, 0x4C, 0xB1, 0x67, 0x00, 0x18, 0xB6, 0x13, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x58, 0x9A, +0x01, 0x6B, 0x60, 0xC2, 0x01, 0x6B, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x43, 0x67, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, +0x10, 0x48, 0xC2, 0xF4, 0x5F, 0xA0, 0xE2, 0xF4, +0x60, 0xA0, 0x4E, 0xEB, 0x33, 0x23, 0xE8, 0x6B, +0x78, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF5, +0x0C, 0x4B, 0x12, 0xEA, 0x51, 0xE3, 0x00, 0x18, +0xF3, 0x13, 0x07, 0x2A, 0x80, 0xF0, 0x4C, 0x98, +0x04, 0x6B, 0x6D, 0xEA, 0x80, 0xF0, 0x4C, 0xD8, +0x21, 0x10, 0xC2, 0xF4, 0x5F, 0xA0, 0x10, 0x6B, +0x01, 0x4A, 0xC2, 0xF4, 0x5F, 0xC0, 0xC2, 0xF4, +0x5F, 0xA0, 0x6E, 0xEA, 0x02, 0x2A, 0xC2, 0xF4, +0x5F, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0xC2, 0xF4, 0x9F, 0xA2, 0xE2, 0xF4, +0x60, 0xA2, 0x8E, 0xEB, 0x07, 0x23, 0x80, 0xF0, +0x6C, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, 0x80, 0xF0, +0x6C, 0xDA, 0x04, 0x10, 0xC2, 0xF4, 0x9E, 0xC2, +0xC2, 0xF4, 0x7C, 0xCA, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x24, 0x67, 0x00, 0x18, +0xE0, 0x13, 0x00, 0x6B, 0x36, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x4C, 0x9A, 0xFF, 0xF7, +0x1F, 0x6E, 0xFF, 0x6F, 0x00, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF4, 0x48, 0x9A, 0x10, 0x6C, +0x8B, 0xEC, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xA1, 0x40, 0x80, 0xF6, 0x50, 0x9A, 0x65, 0x67, +0xCC, 0xEB, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x54, 0x9A, 0x60, 0xA2, 0xFA, 0x65, +0xA2, 0x32, 0xEC, 0xEB, 0x8C, 0xEB, 0x42, 0x32, +0x6D, 0xEA, 0xEC, 0xEA, 0x7F, 0x67, 0x40, 0xC3, +0x87, 0xA9, 0x02, 0x4C, 0xCC, 0xEC, 0x00, 0x18, +0x1B, 0x13, 0x87, 0x40, 0x12, 0x4C, 0xB1, 0x67, +0x00, 0x18, 0xCE, 0x13, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0x58, 0x9A, 0x01, 0x6B, 0x60, 0xC2, +0x01, 0x6B, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x43, 0x67, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, 0x40, 0xF6, +0x9A, 0xA0, 0x40, 0xF6, 0x5B, 0xA0, 0x8E, 0xEA, +0x25, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x90, 0x34, +0x03, 0xF0, 0x0A, 0x4A, 0x91, 0xE2, 0x00, 0x18, +0x33, 0x14, 0x1C, 0x22, 0x40, 0xF6, 0x5A, 0xA0, +0x01, 0x4A, 0x40, 0xF6, 0x5A, 0xC0, 0x40, 0xF6, +0x7A, 0xA0, 0x40, 0xF6, 0x5B, 0xA0, 0x6E, 0xEA, +0x06, 0x22, 0x80, 0xF0, 0x4C, 0x98, 0x04, 0x6B, +0x6D, 0xEA, 0x80, 0xF0, 0x4C, 0xD8, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x40, 0xF6, +0x7A, 0xA2, 0x50, 0x6C, 0x8E, 0xEB, 0x02, 0x2B, +0x40, 0xF6, 0x7A, 0xC2, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x78, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, 0x94, 0x9C, +0x40, 0x9B, 0x20, 0x6D, 0x00, 0x6E, 0x8D, 0xEA, +0x40, 0xDB, 0x00, 0xF4, 0x1F, 0x6C, 0x06, 0x02, +0x04, 0xF7, 0x10, 0x6F, 0x04, 0xD2, 0x00, 0x18, +0x1E, 0x11, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, +0xFE, 0x63, 0x03, 0xD1, 0x02, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x5C, 0x9A, 0x0F, 0x6B, +0x40, 0xA2, 0x4C, 0xEB, 0x0A, 0x23, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, +0x8C, 0x9A, 0x02, 0x6D, 0xAD, 0xEC, 0x80, 0xF0, +0x8C, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, +0x47, 0xA2, 0x00, 0xD2, 0xFF, 0x4A, 0x01, 0xD2, +0xD7, 0x10, 0x00, 0x92, 0x06, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF0, 0x48, 0xA2, 0x07, 0x72, +0x09, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x40, 0xF1, 0x18, 0xA2, 0x01, 0x94, +0x8A, 0xE8, 0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF4, 0x64, 0x9A, 0xFF, 0x6C, 0x01, 0x4C, +0x40, 0x9B, 0xBB, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0xA2, 0xF6, 0x8D, 0xA4, 0xA3, 0x67, 0xA7, 0xEC, +0x85, 0x67, 0x01, 0x6D, 0xAC, 0xEC, 0xA0, 0xF0, +0x0A, 0x24, 0x0C, 0x35, 0xB5, 0xE2, 0x00, 0xF1, +0x1B, 0x4D, 0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6E, +0xA2, 0xF6, 0xED, 0xA6, 0xFF, 0x6C, 0x1F, 0xF7, +0x00, 0x69, 0x8C, 0xEF, 0x74, 0x4F, 0xE8, 0x37, +0xFD, 0xE2, 0x2C, 0xEF, 0x02, 0xF0, 0x00, 0x77, +0x08, 0x60, 0xA2, 0xF6, 0xED, 0xA6, 0x8C, 0xEF, +0x74, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, +0x0F, 0x2F, 0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF6, +0x2D, 0xA4, 0xFF, 0x6C, 0x30, 0xF0, 0x20, 0x6E, +0x8C, 0xE9, 0x74, 0x49, 0x28, 0x31, 0xE2, 0x67, +0x25, 0xE2, 0xA0, 0xF4, 0xDC, 0x9E, 0x0B, 0x10, +0xA2, 0xF6, 0x2D, 0xA6, 0x30, 0xF0, 0x20, 0x6E, +0xC0, 0xF4, 0xC0, 0x9E, 0x8C, 0xE9, 0x74, 0x49, +0x28, 0x31, 0xE2, 0x67, 0x25, 0xE2, 0xD9, 0xE1, +0xC0, 0xA6, 0x0C, 0x31, 0xCC, 0xEC, 0x30, 0xF0, +0x20, 0x6E, 0xA2, 0xF6, 0x10, 0x4E, 0xD9, 0xE1, +0xF9, 0xE6, 0x00, 0xF1, 0x97, 0xC6, 0x30, 0xF0, +0x20, 0x6E, 0xA2, 0xF6, 0xED, 0xA6, 0xFF, 0x6C, +0x1F, 0xF7, 0x00, 0x69, 0x8C, 0xEF, 0x7C, 0x4F, +0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, 0x02, 0xF0, +0x00, 0x77, 0x08, 0x60, 0xA2, 0xF6, 0xED, 0xA6, +0x8C, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, +0x2C, 0xEF, 0x0E, 0x2F, 0x30, 0xF0, 0x20, 0x6C, +0xA2, 0xF6, 0xED, 0xA4, 0xFF, 0x6C, 0x30, 0xF0, +0x20, 0x6E, 0x8C, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, +0xFD, 0xE2, 0xA0, 0xF4, 0xDC, 0x9E, 0x0A, 0x10, +0xA2, 0xF6, 0xED, 0xA6, 0x30, 0xF0, 0x20, 0x6E, +0xC0, 0xF4, 0xC0, 0x9E, 0x8C, 0xEF, 0x7C, 0x4F, +0xE8, 0x37, 0xFD, 0xE2, 0xD9, 0xE7, 0xC0, 0xA6, +0x01, 0x4A, 0x04, 0x72, 0xCC, 0xEC, 0x80, 0xC5, +0x01, 0x4D, 0x8C, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0xAD, 0xA2, 0x01, 0x6C, 0xC4, 0x67, +0xC4, 0xED, 0xCF, 0xED, 0xA2, 0xF6, 0xCD, 0xA2, +0xAC, 0xEB, 0xFF, 0x6D, 0x84, 0xEE, 0x30, 0xF0, +0x20, 0x6E, 0x80, 0xF6, 0xDC, 0x9E, 0xAC, 0xEC, +0x80, 0xC6, 0xA2, 0xF6, 0x8D, 0xA2, 0xAC, 0xEC, +0x01, 0x4C, 0xAC, 0xEC, 0xA2, 0xF6, 0x8D, 0xC2, +0xA2, 0xF6, 0xAD, 0xA2, 0x03, 0x6C, 0xAC, 0xEC, +0xA2, 0xF6, 0x8D, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x40, 0xF1, 0x98, 0xA2, +0x08, 0x6D, 0x01, 0x4C, 0x40, 0xF1, 0x98, 0xC2, +0x40, 0xF1, 0x98, 0xA2, 0xAE, 0xEC, 0x0C, 0x2C, +0x40, 0xF1, 0x98, 0xC2, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF4, 0x64, 0x9A, 0x02, 0x6C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x02, 0x10, +0x3F, 0xF7, 0x07, 0x2B, 0x03, 0x91, 0x02, 0x90, +0x02, 0x63, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x00, 0xA4, 0x07, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x06, 0x35, 0x4C, 0xED, +0x58, 0xED, 0xA2, 0xF6, 0x10, 0x4B, 0x01, 0x6F, +0xEC, 0xE8, 0x12, 0xED, 0x79, 0xE5, 0xC0, 0xF0, +0xBF, 0xA6, 0x1D, 0x65, 0x02, 0x6D, 0xAB, 0xED, +0x38, 0x67, 0x2C, 0xED, 0x0D, 0xED, 0xC0, 0xF0, +0xBF, 0xC6, 0xA0, 0xA4, 0xA6, 0x36, 0x4C, 0xEE, +0x58, 0xEE, 0xBA, 0x35, 0xEC, 0xED, 0xB8, 0x37, +0x41, 0x6D, 0xAB, 0xED, 0x12, 0xEE, 0x79, 0xE6, +0xC0, 0xF0, 0x1F, 0xA6, 0x0C, 0xED, 0xED, 0xED, +0xC0, 0xF0, 0xBF, 0xC6, 0xE0, 0xA4, 0xE6, 0x35, +0x4C, 0xED, 0x58, 0xED, 0xFE, 0x37, 0xFC, 0x37, +0x12, 0xED, 0x79, 0xE5, 0xC0, 0xF0, 0x1F, 0xA6, +0x7F, 0x6D, 0x0C, 0xED, 0xED, 0xED, 0xC0, 0xF0, +0xBF, 0xC6, 0xA0, 0xA4, 0x81, 0xA4, 0xA6, 0x35, +0x4C, 0xED, 0x58, 0xED, 0x12, 0xEA, 0x69, 0xE2, +0xE0, 0xF0, 0x80, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF4, 0x48, 0x9A, 0xE0, 0xF7, 0x1F, 0x6C, +0x40, 0x9A, 0x8C, 0xEA, 0xE2, 0xF4, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, 0x40, 0x9A, +0xA0, 0x9A, 0x00, 0x6A, 0x62, 0x67, 0x07, 0x6E, +0xD8, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF6, +0x10, 0x4C, 0x12, 0xEE, 0x91, 0xE6, 0xC0, 0xF0, +0xDF, 0xA4, 0x01, 0x6C, 0x8C, 0xEE, 0x08, 0x26, +0x84, 0xEA, 0x6D, 0xEC, 0x00, 0xF6, 0x80, 0x33, +0x00, 0xF6, 0x63, 0x33, 0xFF, 0x6C, 0x8C, 0xEB, +0x01, 0x4A, 0x08, 0x72, 0xE8, 0x61, 0x60, 0x32, +0x40, 0x32, 0x00, 0xF6, 0x60, 0x33, 0x6D, 0xEA, +0x00, 0x6C, 0x4D, 0xED, 0x00, 0x18, 0xE7, 0x05, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x42, 0xF7, +0x00, 0x4C, 0x08, 0x6E, 0x00, 0x18, 0xBB, 0x11, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xA4, 0x67, 0x30, 0xF0, +0x20, 0x6C, 0x07, 0x6E, 0x42, 0xF7, 0x09, 0x4C, +0x00, 0x18, 0xBB, 0x11, 0x30, 0xF0, 0x20, 0x6A, +0x42, 0xF7, 0x8C, 0xA2, 0x96, 0x34, 0x00, 0x18, +0x84, 0x0C, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x08, 0xD4, 0x41, 0xA4, 0x24, 0x67, 0x06, 0xD2, +0x60, 0xA4, 0x02, 0x6A, 0x6C, 0xEA, 0x06, 0x93, +0x07, 0xD3, 0x02, 0x22, 0x42, 0xA4, 0x07, 0xD2, +0x06, 0x90, 0x15, 0x10, 0x08, 0x93, 0x01, 0x6D, +0x90, 0x67, 0x40, 0xA3, 0x4C, 0xED, 0x00, 0x18, +0x9D, 0x07, 0x90, 0x67, 0x00, 0x18, 0x94, 0x07, +0x04, 0x2A, 0x90, 0x67, 0x00, 0x18, 0xBF, 0x07, +0x03, 0x10, 0x90, 0x67, 0x00, 0x18, 0xC4, 0x07, +0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x07, 0x92, +0x03, 0xEA, 0xE8, 0x60, 0x30, 0xF0, 0x20, 0x68, +0xA2, 0xF6, 0x10, 0x48, 0xA0, 0xF0, 0x96, 0xA0, +0x06, 0x92, 0x8E, 0xEA, 0x1B, 0x2A, 0x00, 0x18, +0x94, 0x07, 0x18, 0x2A, 0x00, 0x18, 0xAD, 0x20, +0x80, 0xF0, 0x9C, 0xA0, 0x96, 0x34, 0x00, 0x18, +0x00, 0x0B, 0xE3, 0xF2, 0x74, 0xA0, 0x05, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xE3, 0xF2, 0x75, 0xA0, +0xE3, 0xF2, 0x54, 0xC0, 0x02, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x03, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, +0xE3, 0xF2, 0x55, 0xC0, 0x60, 0xA1, 0x01, 0x6A, +0x6C, 0xEA, 0x13, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xA3, 0xF3, 0x88, 0xA2, +0x1E, 0x6D, 0x8A, 0x33, 0xAC, 0xEB, 0x68, 0x35, +0x7D, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xAD, 0xEB, +0xA3, 0xF3, 0x68, 0xC2, 0x01, 0x6B, 0x6B, 0xEB, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0xA3, 0xF3, 0x88, 0xA2, 0x04, 0x6B, +0x8D, 0xEB, 0xA3, 0xF3, 0x68, 0xC2, 0x00, 0x6B, +0x30, 0xF0, 0x20, 0x68, 0xA3, 0xF3, 0x69, 0xC2, +0xA2, 0xF6, 0x10, 0x48, 0xA3, 0xF3, 0x68, 0xA0, +0x02, 0x6A, 0x6C, 0xEA, 0x20, 0x22, 0x03, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xA3, 0xF3, 0x48, 0xC0, +0x00, 0x18, 0x15, 0x1E, 0x7D, 0x67, 0x48, 0xCB, +0x68, 0xAB, 0xA3, 0xF3, 0x8A, 0xA8, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xEB, 0x8E, 0xEB, 0x05, 0x23, +0x7D, 0x67, 0x88, 0xAB, 0x4C, 0xEC, 0x00, 0x18, +0x34, 0x1E, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0xA3, 0xF3, 0x88, 0xA2, 0x02, 0x6B, +0x8D, 0xEB, 0xA3, 0xF3, 0x68, 0xC2, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x68, 0x44, 0xC8, 0x4B, 0x4C, 0xEB, 0x20, 0x5B, +0x03, 0x60, 0x00, 0x18, 0xB7, 0x2C, 0xD6, 0x10, +0x61, 0x74, 0xA0, 0xF0, 0x03, 0x60, 0x62, 0x5C, +0x2E, 0x60, 0x1F, 0x74, 0x67, 0x60, 0x20, 0x5C, +0x12, 0x60, 0x14, 0x74, 0xC0, 0xF0, 0x0A, 0x60, +0x15, 0x5C, 0x06, 0x60, 0x01, 0x74, 0x4E, 0x60, +0x49, 0x24, 0x0B, 0x74, 0x4F, 0x60, 0xBA, 0x10, +0x1D, 0x74, 0x54, 0x60, 0x1E, 0x5C, 0x5A, 0x60, +0x1C, 0x74, 0x4C, 0x60, 0xB3, 0x10, 0x24, 0x74, +0x5D, 0x60, 0x25, 0x5C, 0x07, 0x60, 0x21, 0x74, +0xA0, 0xF0, 0x14, 0x60, 0x21, 0x5C, 0x52, 0x61, +0x23, 0x74, 0x05, 0x10, 0x27, 0x74, 0x56, 0x60, +0x28, 0x5C, 0x04, 0x60, 0x25, 0x74, 0xA0, 0xF0, +0x09, 0x60, 0xA0, 0x10, 0x2C, 0x74, 0x52, 0x60, +0x60, 0x74, 0x54, 0x60, 0x9B, 0x10, 0x69, 0x74, +0x80, 0xF0, 0x08, 0x60, 0x6A, 0x5C, 0x0E, 0x60, +0x65, 0x74, 0x54, 0x60, 0x66, 0x5C, 0x05, 0x60, +0x63, 0x74, 0x70, 0x60, 0x64, 0x5C, 0x4A, 0x60, +0x69, 0x10, 0x67, 0x74, 0x73, 0x60, 0x68, 0x5C, +0x75, 0x60, 0x6C, 0x10, 0x6F, 0x74, 0x52, 0x60, +0x70, 0x5C, 0x07, 0x60, 0x6D, 0x74, 0x46, 0x60, +0x6E, 0x5C, 0x48, 0x60, 0x6C, 0x74, 0x72, 0x60, +0x7D, 0x10, 0x71, 0x74, 0x4F, 0x60, 0x71, 0x5C, +0x49, 0x61, 0x87, 0x74, 0x6F, 0x60, 0xC5, 0x74, +0x71, 0x60, 0x74, 0x10, 0x85, 0x67, 0x00, 0x18, +0x39, 0x15, 0x78, 0x10, 0x85, 0x67, 0x00, 0x18, +0x4A, 0x15, 0x74, 0x10, 0x85, 0x67, 0x00, 0x18, +0x10, 0x04, 0x70, 0x10, 0x85, 0x67, 0x00, 0x18, +0x4B, 0x20, 0x6C, 0x10, 0x85, 0x67, 0x00, 0x18, +0x4A, 0x20, 0x68, 0x10, 0x85, 0x67, 0x00, 0x18, +0xA0, 0x03, 0x64, 0x10, 0x85, 0x67, 0x00, 0x18, +0xF9, 0x03, 0x60, 0x10, 0x85, 0x67, 0x00, 0x18, +0x40, 0x15, 0x5C, 0x10, 0x85, 0x67, 0x00, 0x18, +0x5B, 0x04, 0x58, 0x10, 0x85, 0x67, 0x00, 0x18, +0x4C, 0x04, 0x54, 0x10, 0x85, 0x67, 0x00, 0x18, +0x18, 0x04, 0x50, 0x10, 0x85, 0x67, 0x00, 0x18, +0x5D, 0x12, 0x4C, 0x10, 0x85, 0x67, 0x00, 0x18, +0x4D, 0x12, 0x48, 0x10, 0x85, 0x67, 0x00, 0x18, +0xC2, 0x11, 0x44, 0x10, 0x85, 0x67, 0x00, 0x18, +0xCF, 0x11, 0x40, 0x10, 0x85, 0x67, 0x00, 0x18, +0xFD, 0x11, 0x3C, 0x10, 0x85, 0x67, 0x00, 0x18, +0x0C, 0x12, 0x38, 0x10, 0x85, 0x67, 0x00, 0x18, +0x20, 0x12, 0x34, 0x10, 0x85, 0x67, 0x00, 0x18, +0x18, 0x12, 0x30, 0x10, 0x85, 0x67, 0x00, 0x18, +0x86, 0x12, 0x2C, 0x10, 0x85, 0x67, 0x00, 0x18, +0x81, 0x12, 0x28, 0x10, 0x85, 0x67, 0x00, 0x18, +0x7C, 0x12, 0x24, 0x10, 0x85, 0x67, 0x00, 0x18, +0x77, 0x12, 0x20, 0x10, 0x85, 0x67, 0x00, 0x18, +0x6B, 0x12, 0x1C, 0x10, 0x85, 0x67, 0x00, 0x18, +0x66, 0x12, 0x18, 0x10, 0x85, 0x67, 0x00, 0x18, +0x8B, 0x12, 0x14, 0x10, 0x85, 0x67, 0x00, 0x18, +0x61, 0x12, 0x10, 0x10, 0x85, 0x67, 0x00, 0x18, +0x5F, 0x20, 0x0C, 0x10, 0x85, 0x67, 0x00, 0x18, +0xFB, 0x14, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF4, 0x64, 0x9A, 0x01, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, +0x10, 0x48, 0x40, 0xF1, 0x57, 0xA0, 0x40, 0xF1, +0x78, 0xA0, 0x4E, 0xEB, 0x29, 0x23, 0x67, 0x42, +0x1B, 0x4B, 0x6C, 0x33, 0x0D, 0xE3, 0x4C, 0x32, +0x87, 0xA3, 0x55, 0xE0, 0x00, 0xF1, 0x18, 0x4D, +0x00, 0x18, 0x9A, 0x15, 0x40, 0xF1, 0x57, 0xA0, +0x01, 0x4A, 0x40, 0xF1, 0x57, 0xC0, 0x40, 0xF1, +0x77, 0xA0, 0x40, 0xF1, 0x58, 0xA0, 0x6E, 0xEA, +0x06, 0x22, 0x80, 0xF0, 0x4C, 0x98, 0x02, 0x6B, +0x6D, 0xEA, 0x80, 0xF0, 0x4C, 0xD8, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x40, 0xF1, +0x77, 0xA2, 0x08, 0x6C, 0x8E, 0xEB, 0x02, 0x2B, +0x40, 0xF1, 0x77, 0xC2, 0x00, 0x18, 0x7E, 0x14, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFF, 0xF7, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x8C, 0xEA, 0xC0, 0xF6, 0x78, 0x9B, 0x30, 0xF0, +0x20, 0x6C, 0xC0, 0xF6, 0x9C, 0x9C, 0xCC, 0xEB, +0x40, 0xF6, 0xA0, 0x35, 0x8D, 0xEB, 0x1F, 0xF7, +0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, +0xAD, 0xEB, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0xF4, 0x9C, 0x9C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF4, 0x80, 0x9C, +0x89, 0xE2, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x1F, 0xF7, +0x00, 0x6C, 0x4C, 0xEC, 0xFF, 0x6B, 0x02, 0xF0, +0x00, 0x74, 0xAC, 0xEB, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF4, 0x9C, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF4, +0x80, 0x9C, 0x91, 0xE2, 0x00, 0x6D, 0xA0, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, 0x98, 0x9C, +0xD4, 0x36, 0x40, 0xF6, 0x60, 0x33, 0x8C, 0xEE, +0x6D, 0xEE, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, +0x7C, 0x9B, 0x6D, 0xEE, 0x1F, 0xF7, 0x00, 0x6B, +0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, +0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF4, +0x7C, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF4, 0x60, 0x9B, 0x69, 0xE2, 0xC0, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x0F, 0xF5, 0x00, 0x6B, +0x78, 0xEE, 0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, 0x98, 0x9C, +0x40, 0xF6, 0xA0, 0x35, 0x12, 0xEB, 0x8C, 0xEB, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, 0x9C, 0x9C, +0xAD, 0xEB, 0x8D, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, +0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, +0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF4, +0x9C, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0xC0, 0xF4, 0x80, 0x9C, 0x89, 0xE2, 0x60, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF6, 0x4C, 0x9A, 0x40, 0x9A, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x69, 0x8C, 0xE9, 0x00, 0x68, 0xFF, 0x6A, +0x0C, 0xEA, 0x2E, 0xEA, 0x10, 0x2A, 0x91, 0x67, +0x00, 0x18, 0xC0, 0x1F, 0x91, 0x67, 0x00, 0x18, +0xAF, 0x1F, 0x91, 0x67, 0x00, 0x18, 0xC7, 0x1F, +0x91, 0x67, 0x00, 0x18, 0x9A, 0x1F, 0x91, 0x67, +0x00, 0x18, 0x93, 0x1F, 0x0F, 0x10, 0x90, 0x67, +0x00, 0x18, 0xDF, 0x1F, 0x90, 0x67, 0x00, 0x18, +0xCE, 0x1F, 0x90, 0x67, 0x00, 0x18, 0xE6, 0x1F, +0x90, 0x67, 0x00, 0x18, 0xA8, 0x1F, 0x90, 0x67, +0x00, 0x18, 0xA1, 0x1F, 0x01, 0x48, 0x05, 0x70, +0xDA, 0x61, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0x1F, 0x6B, 0x8C, 0xEB, +0x01, 0x6A, 0x00, 0x6C, 0xA3, 0x67, 0xA7, 0xEC, +0x01, 0x6E, 0xCC, 0xED, 0x03, 0x2D, 0x02, 0x4A, +0xFF, 0x6D, 0xAC, 0xEA, 0x01, 0x4C, 0x04, 0x74, +0xF5, 0x61, 0x20, 0xE8, 0xFF, 0x6B, 0x6C, 0xED, +0x6C, 0xEC, 0x03, 0x2D, 0x92, 0x32, 0x6C, 0xEA, +0x20, 0xE8, 0xF0, 0x6A, 0xAC, 0xEA, 0x96, 0x34, +0x47, 0x32, 0x8D, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF7, 0x40, 0x9A, +0x40, 0xA2, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, +0x43, 0x32, 0x00, 0x52, 0x0B, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF4, 0x64, 0x9A, 0x10, 0xF0, +0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x01, 0x6A, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF4, 0x64, 0x9A, 0x10, 0xF0, 0x01, 0x6C, +0x8B, 0xEC, 0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, +0x00, 0x6A, 0x20, 0xE8, 0xF8, 0x63, 0x0F, 0x62, +0x0E, 0xD1, 0x0D, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF7, 0x44, 0x9A, 0x30, 0xF0, 0x20, 0x69, +0xA5, 0xF3, 0x00, 0x49, 0x40, 0xA2, 0x00, 0x6A, +0x06, 0xD2, 0x02, 0x67, 0x08, 0xD2, 0x07, 0xD2, +0x07, 0x92, 0x04, 0x05, 0x01, 0x72, 0x58, 0x67, +0x07, 0xD2, 0x10, 0xF0, 0x20, 0x6A, 0x78, 0x67, +0xAB, 0xF2, 0x05, 0x4A, 0x69, 0xE2, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF5, 0x74, 0x9B, 0x40, 0xDB, +0x06, 0x94, 0x00, 0x18, 0x75, 0x26, 0x01, 0x72, +0x02, 0x60, 0x00, 0x6A, 0xD8, 0x10, 0x0C, 0x28, +0xBD, 0x67, 0x90, 0xA5, 0xFF, 0x74, 0x1F, 0x60, +0x1F, 0x6A, 0x8C, 0xEA, 0x0F, 0x72, 0x01, 0x68, +0x03, 0x60, 0x00, 0x18, 0x89, 0x16, 0x02, 0x67, +0x7D, 0x67, 0x50, 0xA3, 0x08, 0x94, 0x06, 0x95, +0x40, 0xC1, 0x01, 0x4C, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xEC, 0x01, 0x4D, 0x00, 0xF4, 0x00, 0x74, +0x08, 0xD4, 0x06, 0xD5, 0x01, 0x49, 0x04, 0x60, +0xFF, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0xC8, 0x17, +0x00, 0xF4, 0x00, 0x6A, 0x08, 0xD2, 0x08, 0x92, +0xFF, 0xF7, 0x1F, 0x6B, 0x01, 0x4A, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x6D, 0xE2, 0xE2, 0xF4, 0x8E, 0xA3, 0xFF, 0x4A, +0xE2, 0xF4, 0x90, 0xC3, 0xFF, 0xF7, 0x1F, 0x6B, +0x6C, 0xEA, 0x02, 0x5A, 0xF1, 0x60, 0x00, 0x6B, +0x02, 0x6C, 0x07, 0xD3, 0x06, 0xD4, 0x24, 0x67, +0x0A, 0xD3, 0x0A, 0x92, 0x01, 0x72, 0x58, 0x67, +0x0A, 0xD2, 0x10, 0xF0, 0x20, 0x6A, 0x78, 0x67, +0xAB, 0xF2, 0x07, 0x4A, 0x69, 0xE2, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF5, 0x74, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x49, 0xE1, 0xE2, 0xF4, 0x90, 0xA2, 0x09, 0xD2, +0x1F, 0x6A, 0x8C, 0xEA, 0x0F, 0x72, 0x0E, 0x61, +0x09, 0x95, 0xE2, 0xF4, 0x91, 0xA5, 0x00, 0x18, +0x89, 0x16, 0x01, 0x42, 0xFF, 0x6A, 0x4C, 0xE8, +0x09, 0x92, 0xE2, 0xF4, 0x90, 0xA2, 0xE2, 0xF4, +0xB1, 0xA2, 0x07, 0x10, 0x00, 0x18, 0x89, 0x16, +0x09, 0x93, 0x02, 0x67, 0x00, 0x6D, 0xE2, 0xF4, +0x90, 0xA3, 0x00, 0x18, 0x91, 0x16, 0x26, 0x5A, +0x11, 0x60, 0x06, 0x92, 0x30, 0xF0, 0x20, 0x6D, +0xA5, 0xF3, 0x00, 0x4D, 0x51, 0xE5, 0xD0, 0x67, +0x35, 0xE5, 0x00, 0x18, 0xBB, 0x11, 0x06, 0x93, +0xFF, 0xF7, 0x1F, 0x6A, 0x6D, 0xE0, 0x4C, 0xEB, +0x06, 0xD3, 0x15, 0x10, 0x38, 0x5A, 0x13, 0x61, +0x07, 0x92, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, +0x20, 0x6D, 0xA5, 0xF7, 0x00, 0x4C, 0xA5, 0xF3, +0x00, 0x4D, 0x51, 0xE4, 0x35, 0xE5, 0xD0, 0x67, +0x00, 0x18, 0xBB, 0x11, 0x07, 0x93, 0xFF, 0x6A, +0x6D, 0xE0, 0x4C, 0xEB, 0x07, 0xD3, 0x08, 0x94, +0x25, 0xE0, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, +0x23, 0xEC, 0x9F, 0x60, 0xBD, 0x67, 0x67, 0x45, +0x11, 0x4B, 0xA0, 0xA3, 0x06, 0x94, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xE2, 0xF4, +0xB0, 0xC2, 0x82, 0x33, 0xBD, 0x67, 0xE2, 0xF4, +0x71, 0xC2, 0x67, 0x45, 0x15, 0x4B, 0xA0, 0xA3, +0x00, 0x6B, 0x63, 0xF1, 0xB0, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF7, 0x48, 0x9A, 0x01, 0x6C, +0x30, 0xF0, 0x20, 0x6D, 0x8E, 0xEB, 0x00, 0xF5, +0xB4, 0x9D, 0x10, 0xF0, 0x20, 0x6C, 0xAB, 0xF2, +0x09, 0x4C, 0x71, 0xE4, 0x80, 0xDD, 0x30, 0xF0, +0x20, 0x6D, 0x40, 0xF7, 0xAC, 0x9D, 0x30, 0xF0, +0x20, 0x6C, 0xA2, 0xF6, 0x10, 0x4C, 0x51, 0xE4, +0xB1, 0xE4, 0x80, 0xA4, 0x80, 0xC2, 0x06, 0x95, +0x01, 0x4A, 0xFF, 0xF7, 0x1F, 0x6C, 0x4C, 0xEC, +0xA3, 0xEC, 0xE1, 0x61, 0x01, 0x6A, 0x0F, 0x97, +0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x00, 0x69, 0x43, 0x10, 0x01, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x4E, 0xE9, 0x00, 0xF5, 0x74, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0xAB, 0xF4, 0x11, 0x4A, +0x29, 0xE2, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF4, 0x54, 0x9A, 0x00, 0xA2, 0xFF, 0x6A, +0x4C, 0xE8, 0x0F, 0x6A, 0x0C, 0xEA, 0x2D, 0x22, +0x01, 0x6A, 0x0C, 0xEA, 0x02, 0x22, 0xEE, 0x6A, +0x22, 0x10, 0x02, 0x6A, 0x0C, 0xEA, 0x15, 0x22, +0x20, 0x6A, 0x0C, 0xEA, 0x70, 0x67, 0x0E, 0x2A, +0x00, 0x18, 0xA9, 0x16, 0x70, 0x67, 0x04, 0x2A, +0x20, 0x6A, 0x4D, 0xEB, 0xFF, 0x6A, 0x4C, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF7, 0x50, 0x9A, +0x00, 0x6C, 0x80, 0xC2, 0xFD, 0x6A, 0x6C, 0xEA, +0x0B, 0x10, 0x04, 0x6A, 0x0C, 0xEA, 0x02, 0x22, +0xFB, 0x6A, 0x05, 0x10, 0x08, 0x6B, 0x0C, 0xEB, +0x50, 0x67, 0x02, 0x23, 0xF7, 0x6A, 0x0C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF4, 0x74, 0x9B, +0x40, 0xC3, 0x00, 0x18, 0x98, 0x16, 0xBA, 0x2A, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF7, 0x84, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0xA0, 0x9C, 0x4C, 0x9B, +0xAC, 0xEA, 0x4D, 0xDB, 0x40, 0xDC, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0xD1, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF6, 0x34, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF6, 0x18, 0x4A, 0x40, 0x9A, +0x60, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF7, 0x40, 0x9A, +0x00, 0xF7, 0x08, 0x4C, 0x80, 0x9C, 0x00, 0x9A, +0x1A, 0x65, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0x9C, +0x00, 0xF7, 0x10, 0x4A, 0x40, 0x9A, 0x01, 0xD4, +0x30, 0xF0, 0x20, 0x6C, 0x40, 0x9A, 0xA2, 0xF6, +0xF0, 0x9C, 0x00, 0xD2, 0x44, 0x67, 0xA2, 0xF6, +0x10, 0x4A, 0xC1, 0x9A, 0x83, 0x9A, 0x6C, 0xEF, +0xAC, 0xEE, 0x01, 0x93, 0xA2, 0x9A, 0xE5, 0xDA, +0x6C, 0xEC, 0x0C, 0xED, 0x64, 0x9A, 0x00, 0x90, +0x88, 0xDA, 0xC6, 0xDA, 0x0C, 0xEB, 0xA7, 0xDA, +0x69, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF6, +0x18, 0x4A, 0x40, 0x9A, 0xE0, 0xD9, 0x18, 0x67, +0xC0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF7, +0x08, 0x4A, 0x40, 0x9A, 0xA0, 0xD8, 0x80, 0xDA, +0x30, 0xF0, 0x20, 0x6C, 0x00, 0xF7, 0x10, 0x4C, +0x80, 0x9C, 0x60, 0xDC, 0x05, 0x91, 0x04, 0x90, +0x03, 0x63, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF4, 0xD4, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF6, 0xB0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x60, 0x9E, 0x8E, 0x9A, +0xE0, 0x9D, 0x6C, 0xEC, 0x6F, 0x9A, 0x91, 0xDA, +0xEC, 0xEB, 0x72, 0xDA, 0x80, 0xDE, 0x60, 0xDD, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0x07, 0x6D, 0xB8, 0xEC, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x01, 0x6E, 0x12, 0xEC, 0x71, 0xE4, 0xC0, 0xF0, +0xBF, 0xA4, 0xCC, 0xED, 0x1D, 0x25, 0xE0, 0xF0, +0xA0, 0xA4, 0xE2, 0xF4, 0x68, 0x9B, 0xC0, 0xF0, +0x9F, 0xA4, 0x75, 0xE5, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF7, 0x68, 0x9B, 0xBC, 0x35, 0x21, 0x4D, +0x75, 0xE5, 0xE0, 0xA5, 0x9E, 0x33, 0x9A, 0x34, +0xCC, 0xEC, 0x78, 0x33, 0x9C, 0x34, 0x4C, 0xEF, +0x8D, 0xEB, 0xED, 0xEB, 0x00, 0xF6, 0x60, 0x33, +0x00, 0xF6, 0x63, 0x33, 0x4C, 0xEB, 0x60, 0xC5, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF7, 0x54, 0x9A, +0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF7, +0x58, 0x9A, 0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF7, 0x5C, 0x9A, 0x40, 0xA2, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF7, 0x40, 0x9A, 0x40, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF7, 0x44, 0x9A, +0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF7, +0x48, 0x9A, 0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF7, 0x4C, 0x9A, 0x40, 0xA2, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x4C, 0x9A, 0x40, 0xA2, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, 0x98, 0xA2, +0x01, 0x6B, 0x8C, 0xEB, 0x0A, 0x23, 0xC3, 0xF2, +0x98, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x03, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0xC3, 0xF2, +0x78, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, 0x98, 0xA2, +0x01, 0x6B, 0x8C, 0xEB, 0x0A, 0x23, 0xC3, 0xF2, +0x98, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x03, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0xC3, 0xF2, +0x78, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, 0x98, 0xA2, +0x01, 0x6B, 0x8C, 0xEB, 0x0A, 0x23, 0xC3, 0xF2, +0x98, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x03, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0xC3, 0xF2, +0x78, 0xC2, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x80, 0xF0, 0xD8, 0xAB, +0x0F, 0xF7, 0x01, 0x6D, 0xFF, 0x6A, 0xCC, 0xED, +0x4C, 0xEC, 0x06, 0x2D, 0xC3, 0xF2, 0xBC, 0xA3, +0x01, 0x6B, 0xAC, 0xEB, 0x4C, 0xEB, 0x18, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x80, 0xF0, 0xB8, 0xA2, 0x01, 0x6B, 0x6C, 0xED, +0x06, 0x2D, 0xC3, 0xF2, 0x5C, 0xA2, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x07, 0x22, 0x00, 0x18, +0xFC, 0x26, 0x01, 0x72, 0x05, 0x61, 0x00, 0x18, +0x31, 0x27, 0x02, 0x10, 0x00, 0x18, 0xFD, 0x0C, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, +0xA2, 0xF6, 0x10, 0x48, 0x04, 0xD4, 0xA0, 0xF0, +0x96, 0xA0, 0x00, 0x18, 0x94, 0x07, 0x01, 0x72, +0x15, 0x61, 0x80, 0xF0, 0x79, 0xA0, 0x7F, 0x6A, +0x6C, 0xEA, 0x2C, 0xEA, 0x0F, 0x22, 0xE3, 0xF2, +0x78, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xE3, 0xF2, 0x58, 0xC0, 0xE3, 0xF2, 0x58, 0xA0, +0x07, 0x6B, 0x6C, 0xEA, 0x03, 0x2A, 0x04, 0x94, +0x00, 0x18, 0x1E, 0x0C, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, +0xA2, 0xF6, 0x10, 0x48, 0x04, 0xD4, 0xA0, 0xF0, +0x96, 0xA0, 0x00, 0x18, 0x94, 0x07, 0x01, 0x6B, +0x6E, 0xEA, 0x29, 0x2A, 0x80, 0xF0, 0x99, 0xA0, +0x7F, 0x6B, 0x8C, 0xEB, 0x2C, 0xEB, 0x23, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x70, 0x9B, +0x02, 0x6C, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF7, 0x78, 0x9A, 0x40, 0xA3, 0x2C, 0xEA, +0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, 0xE3, 0xF2, +0x74, 0xA0, 0x03, 0x6A, 0x4B, 0xEA, 0x4C, 0xEB, +0xE3, 0xF2, 0x74, 0xC0, 0xE3, 0xF2, 0x78, 0xA0, +0x6C, 0xEA, 0xE3, 0xF2, 0x58, 0xC0, 0xE3, 0xF2, +0x58, 0xA0, 0x07, 0x6B, 0x6C, 0xEA, 0x03, 0x2A, +0x04, 0x94, 0x00, 0x18, 0x1E, 0x0C, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0xE3, 0xF2, 0xF5, 0xA3, +0x02, 0x6E, 0xFF, 0x6A, 0xA7, 0x67, 0xCC, 0xED, +0x4C, 0xED, 0x4C, 0xEC, 0x1E, 0x25, 0xFF, 0xF6, +0x1E, 0x4A, 0xEC, 0xEA, 0xE3, 0xF2, 0x55, 0xC3, +0x0F, 0x2C, 0x30, 0xF0, 0x20, 0x6D, 0x60, 0xF7, +0xB0, 0x9D, 0xA0, 0xA5, 0xAC, 0xEE, 0x03, 0x26, +0x08, 0x6D, 0x4D, 0xED, 0x03, 0x10, 0x09, 0x6D, +0xAB, 0xED, 0x4C, 0xED, 0xE3, 0xF2, 0xB5, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, 0x69, 0xA2, +0x7F, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x1E, 0x0C, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0xC0, 0xF0, 0x80, 0xA2, 0x40, 0x6B, +0x8C, 0xEB, 0x1C, 0x23, 0x63, 0xF3, 0xB0, 0xA2, +0x02, 0x6C, 0xFF, 0x6E, 0x65, 0x67, 0x8C, 0xEB, +0xCC, 0xEB, 0x14, 0x23, 0x03, 0x6B, 0x6B, 0xEB, +0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, 0x60, 0xF7, +0xB0, 0x9D, 0x63, 0xF3, 0x70, 0xC2, 0xA0, 0xA5, +0xAC, 0xEC, 0x03, 0x24, 0x04, 0x6C, 0x6D, 0xEC, +0x03, 0x10, 0x05, 0x6C, 0x8B, 0xEC, 0x6C, 0xEC, +0x63, 0xF3, 0x90, 0xC2, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x30, 0xF0, +0x20, 0x68, 0x2C, 0xEC, 0xA2, 0xF6, 0x10, 0x48, +0x04, 0xD4, 0xA0, 0xF0, 0x96, 0xA0, 0x00, 0x18, +0x94, 0x07, 0x01, 0x72, 0x1E, 0x61, 0x80, 0xF0, +0x79, 0xA0, 0x7F, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x18, 0x22, 0x80, 0xF0, 0x9A, 0xA0, 0x10, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x2C, 0xEB, 0x20, 0x73, +0x05, 0x60, 0x01, 0x72, 0x03, 0x61, 0x00, 0x18, +0x3B, 0x0F, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x42, 0xF7, 0x69, 0xA2, 0x7F, 0x6A, 0x6C, 0xEA, +0x02, 0x72, 0x03, 0x60, 0x04, 0x94, 0x00, 0x18, +0x19, 0x0D, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, +0x10, 0x48, 0xA0, 0xF0, 0x96, 0xA0, 0x00, 0x18, +0x94, 0x07, 0x01, 0x6B, 0x6E, 0xEA, 0x1B, 0x2A, +0x80, 0xF0, 0xB9, 0xA0, 0x7F, 0x6B, 0xFF, 0x6C, +0xAC, 0xEB, 0x15, 0x23, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF4, 0x70, 0x9B, 0x02, 0x6D, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF7, 0x78, 0x9A, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0xA0, 0xF0, 0xC1, 0xA0, 0x55, 0x4C, +0x00, 0x6D, 0x00, 0x18, 0x3C, 0x16, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x80, 0xF0, 0xB8, 0xA3, +0x01, 0x6E, 0xFF, 0x6A, 0xCC, 0xED, 0x4C, 0xED, +0x4C, 0xEC, 0x05, 0x2D, 0xC3, 0xF2, 0x7C, 0xA3, +0xCC, 0xEB, 0x4C, 0xEB, 0x06, 0x23, 0x30, 0xF0, +0x20, 0x6A, 0x86, 0xF1, 0x4A, 0xA2, 0x02, 0x72, +0x17, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x80, 0xF0, 0xB8, 0xAA, 0x0F, 0xF7, +0x01, 0x6B, 0xAC, 0xEB, 0x05, 0x2B, 0xC3, 0xF2, +0x7C, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x08, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, 0x47, 0xA2, +0x02, 0x72, 0x02, 0x60, 0x00, 0x18, 0xCA, 0x0D, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0xE3, 0xF2, 0xF5, 0xA3, +0xC4, 0x67, 0x01, 0x6D, 0x87, 0x67, 0xFF, 0x6A, +0xAC, 0xEC, 0x4C, 0xEC, 0x4C, 0xEE, 0x24, 0x24, +0xFF, 0xF6, 0x1F, 0x4A, 0xEC, 0xEA, 0xE3, 0xF2, +0x55, 0xC3, 0x0F, 0x2E, 0x30, 0xF0, 0x20, 0x6C, +0x60, 0xF7, 0x90, 0x9C, 0x80, 0xA4, 0x8C, 0xED, +0x03, 0x25, 0x04, 0x6C, 0x4D, 0xEC, 0x03, 0x10, +0x05, 0x6C, 0x8B, 0xEC, 0x4C, 0xEC, 0xE3, 0xF2, +0x95, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x26, 0xF2, +0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x05, 0x22, +0x0C, 0x6C, 0x01, 0x6D, 0x00, 0x18, 0x29, 0x0B, +0x03, 0x10, 0x86, 0x67, 0x00, 0x18, 0x1E, 0x0C, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x80, 0xF0, 0xB8, 0xA3, +0x01, 0x6C, 0xFF, 0x6A, 0xAC, 0xEC, 0x1A, 0x24, +0xC3, 0xF2, 0x99, 0xA3, 0x04, 0x74, 0x16, 0x60, +0xC3, 0xF2, 0x7A, 0xA3, 0x02, 0x73, 0x12, 0x60, +0x02, 0x6B, 0xAC, 0xEB, 0x4C, 0xEB, 0x03, 0x23, +0x00, 0x18, 0x6D, 0x03, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF4, 0x60, 0x9B, 0xFF, 0x6C, +0x6D, 0x4C, 0xC0, 0xA3, 0x00, 0x6D, 0x4C, 0xEE, +0x00, 0x18, 0x3C, 0x16, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x80, 0xF0, 0xB8, 0xA3, 0x01, 0x6C, 0xFF, 0x6A, +0xAC, 0xEC, 0x1A, 0x24, 0xC3, 0xF2, 0x99, 0xA3, +0x04, 0x74, 0x16, 0x60, 0xC3, 0xF2, 0x7A, 0xA3, +0x02, 0x73, 0x12, 0x60, 0x02, 0x6B, 0xAC, 0xEB, +0x4C, 0xEB, 0x03, 0x23, 0x00, 0x18, 0x6D, 0x03, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, +0x60, 0x9B, 0xFF, 0x6C, 0x6D, 0x4C, 0xC0, 0xA3, +0x00, 0x6D, 0x4C, 0xEE, 0x00, 0x18, 0x3C, 0x16, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x80, 0xF0, 0xB8, 0xA3, +0x01, 0x6C, 0xFF, 0x6A, 0xAC, 0xEC, 0x1A, 0x24, +0xC3, 0xF2, 0x99, 0xA3, 0x04, 0x74, 0x16, 0x60, +0xC3, 0xF2, 0x7A, 0xA3, 0x02, 0x73, 0x12, 0x60, +0x02, 0x6B, 0xAC, 0xEB, 0x4C, 0xEB, 0x03, 0x23, +0x00, 0x18, 0x6D, 0x03, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF4, 0x60, 0x9B, 0xFF, 0x6C, +0x6D, 0x4C, 0xC0, 0xA3, 0x00, 0x6D, 0x4C, 0xEE, +0x00, 0x18, 0x3C, 0x16, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, +0x10, 0x48, 0x80, 0xF0, 0x78, 0xA0, 0x01, 0x6A, +0x6C, 0xEA, 0x25, 0x22, 0xC3, 0xF2, 0x59, 0xA0, +0x04, 0x72, 0x21, 0x60, 0xC3, 0xF2, 0x5A, 0xA0, +0x02, 0x72, 0x1D, 0x60, 0x02, 0x6A, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x18, +0x6D, 0x03, 0x15, 0x10, 0xFF, 0x6C, 0xA4, 0x67, +0xC4, 0x67, 0x00, 0x18, 0x49, 0x1D, 0x00, 0x18, +0x40, 0x03, 0xC3, 0xF2, 0x5A, 0xA0, 0x0C, 0x72, +0x03, 0x61, 0x08, 0x6C, 0x00, 0x6D, 0x04, 0x10, +0x04, 0x72, 0x05, 0x61, 0x00, 0x6C, 0xA4, 0x67, +0xC5, 0x67, 0x00, 0x18, 0x29, 0x0B, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, 0x80, 0xF0, +0x78, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x25, 0x22, +0xC3, 0xF2, 0x59, 0xA0, 0x04, 0x72, 0x21, 0x60, +0xC3, 0xF2, 0x5A, 0xA0, 0x02, 0x72, 0x1D, 0x60, +0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x00, 0x18, 0x6D, 0x03, 0x15, 0x10, +0xFF, 0x6C, 0xA4, 0x67, 0xC4, 0x67, 0x00, 0x18, +0x49, 0x1D, 0x00, 0x18, 0x40, 0x03, 0xC3, 0xF2, +0x5A, 0xA0, 0x0C, 0x72, 0x03, 0x61, 0x08, 0x6C, +0x00, 0x6D, 0x04, 0x10, 0x04, 0x72, 0x05, 0x61, +0x00, 0x6C, 0xA4, 0x67, 0xC5, 0x67, 0x00, 0x18, +0x29, 0x0B, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, +0x10, 0x48, 0x80, 0xF0, 0x78, 0xA0, 0x01, 0x6A, +0x6C, 0xEA, 0x25, 0x22, 0xC3, 0xF2, 0x59, 0xA0, +0x04, 0x72, 0x21, 0x60, 0xC3, 0xF2, 0x5A, 0xA0, +0x02, 0x72, 0x1D, 0x60, 0x02, 0x6A, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x18, +0x6D, 0x03, 0x15, 0x10, 0xFF, 0x6C, 0xA4, 0x67, +0xC4, 0x67, 0x00, 0x18, 0x49, 0x1D, 0x00, 0x18, +0x40, 0x03, 0xC3, 0xF2, 0x5A, 0xA0, 0x0C, 0x72, +0x03, 0x61, 0x08, 0x6C, 0x00, 0x6D, 0x04, 0x10, +0x04, 0x72, 0x05, 0x61, 0x00, 0x6C, 0xA4, 0x67, +0xC5, 0x67, 0x00, 0x18, 0x29, 0x0B, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x18, +0x89, 0x1C, 0x02, 0x67, 0x01, 0x6A, 0x0C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x01, 0x6D, 0x02, 0x10, +0x00, 0x6C, 0xA4, 0x67, 0x00, 0x18, 0x34, 0x08, +0x40, 0x6A, 0x0C, 0xEA, 0x0F, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF7, 0x54, 0x9A, 0x60, 0xA2, +0x00, 0xF6, 0x60, 0x33, 0x00, 0xF6, 0x63, 0x33, +0x00, 0x53, 0x00, 0x6B, 0x02, 0x61, 0x80, 0x6B, +0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x03, 0xF3, 0x8C, 0xA2, +0x03, 0xF3, 0xAD, 0xA2, 0x03, 0xF3, 0xD1, 0xA2, +0x02, 0x6F, 0x00, 0x18, 0xBF, 0x08, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x46, 0xF2, 0x78, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0xD2, 0x1E, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, 0x00, 0x18, +0x1F, 0x26, 0x80, 0xF0, 0x78, 0xA0, 0x01, 0x6A, +0x6C, 0xEA, 0x0D, 0x22, 0x00, 0x18, 0x46, 0x27, +0xC3, 0xF2, 0x5A, 0xA0, 0x0C, 0x6C, 0x08, 0x72, +0x02, 0x60, 0x05, 0x2A, 0x04, 0x6C, 0x00, 0x6D, +0xC5, 0x67, 0x00, 0x18, 0x29, 0x0B, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xFF, 0x24, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xF3, 0x1D, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, +0x80, 0xF0, 0x79, 0xA0, 0x7F, 0x6A, 0xFF, 0x69, +0x6C, 0xEA, 0x1E, 0x22, 0x80, 0xF0, 0x9C, 0xA0, +0x96, 0x34, 0x2C, 0xEC, 0x00, 0x18, 0xAE, 0x1C, +0x02, 0x6B, 0x4C, 0xEB, 0x2C, 0xEB, 0x07, 0x23, +0x80, 0xF0, 0x9C, 0xA0, 0x96, 0x34, 0x2C, 0xEC, +0x00, 0x18, 0xE3, 0x0C, 0x0D, 0x10, 0x80, 0xF0, +0x9C, 0xA0, 0xE3, 0xF2, 0x74, 0xA0, 0x05, 0x6A, +0x4B, 0xEA, 0x96, 0x34, 0x6C, 0xEA, 0x2C, 0xEC, +0xE3, 0xF2, 0x54, 0xC0, 0x00, 0x18, 0x1E, 0x0C, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x80, 0xF0, 0x99, 0xA2, 0x7F, 0x6B, 0x8C, 0xEB, +0x07, 0x23, 0x80, 0xF0, 0x9C, 0xA2, 0xFF, 0x6A, +0x96, 0x34, 0x4C, 0xEC, 0x00, 0x18, 0x30, 0x0D, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x00, 0x18, 0x72, 0x27, 0x90, 0x67, +0x00, 0x18, 0xF3, 0x0B, 0x00, 0x6C, 0x00, 0x18, +0x21, 0x0A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, +0x68, 0xA2, 0x07, 0x6A, 0x6C, 0xEA, 0x4E, 0xE8, +0x02, 0x28, 0x00, 0x18, 0xC5, 0x25, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, 0x68, 0xA2, +0xFF, 0x69, 0x07, 0x6A, 0x8C, 0xE9, 0x6C, 0xEA, +0x2E, 0xEA, 0x02, 0x2A, 0x00, 0x18, 0x30, 0x25, +0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, +0x00, 0x18, 0x21, 0x27, 0x80, 0xF0, 0x79, 0xA0, +0x7F, 0x6A, 0x6C, 0xEA, 0x26, 0x22, 0xE3, 0xF2, +0x55, 0xA0, 0x21, 0x6B, 0x6B, 0xEB, 0x4C, 0xEB, +0x40, 0x6A, 0x6C, 0xEA, 0xE3, 0xF2, 0x75, 0xC0, +0xFF, 0x6B, 0x6C, 0xEA, 0x10, 0x22, 0x03, 0xF3, +0x8C, 0xA0, 0x03, 0xF3, 0xAD, 0xA0, 0x03, 0xF3, +0xD1, 0xA0, 0x05, 0x6F, 0x00, 0x18, 0xBF, 0x08, +0xE3, 0xF2, 0x75, 0xA0, 0x41, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0xE3, 0xF2, 0x55, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0xA6, 0xF1, 0x64, 0xA2, 0x40, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x91, 0x67, 0x00, 0x18, +0xDF, 0x1F, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0xA3, 0xF3, 0x69, 0xA2, 0x2E, 0xEB, +0x11, 0x2B, 0xA3, 0xF3, 0x68, 0xA2, 0x1F, 0x6C, +0x6A, 0x32, 0x8C, 0xEA, 0x47, 0xE9, 0x01, 0x6C, +0x8C, 0xEA, 0x08, 0x22, 0x02, 0x6A, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0xD2, 0x1E, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, 0x6C, 0x9A, +0x10, 0x6C, 0x8D, 0xEB, 0x80, 0xF0, 0x6C, 0xDA, +0x91, 0x67, 0x00, 0x18, 0x15, 0x0A, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x79, 0x1D, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x23, 0x10, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x20, 0x10, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x7E, 0x14, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF7, 0x68, 0x9B, 0xFF, 0x6A, 0x4C, 0xEE, +0x6D, 0xE4, 0x08, 0x68, 0x80, 0xA3, 0xDB, 0xE0, +0x02, 0x67, 0x4C, 0xED, 0x07, 0xEE, 0xD0, 0x67, +0x4C, 0xEF, 0x04, 0xED, 0x4C, 0xEC, 0xCC, 0xEF, +0x0F, 0xE8, 0x8C, 0xE8, 0xE4, 0xED, 0xED, 0xE8, +0x4C, 0xE8, 0x00, 0xC3, 0x01, 0x90, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF7, 0x48, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, +0x8C, 0xEB, 0x4D, 0xE3, 0x40, 0xA3, 0xFF, 0x6C, +0x8C, 0xEE, 0x08, 0x6B, 0xDB, 0xE3, 0x8C, 0xED, +0x8C, 0xEA, 0x64, 0x67, 0x47, 0xED, 0x67, 0xEE, +0x6C, 0xEA, 0x8C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x01, 0x74, 0x0D, 0x60, 0x06, 0x24, 0x02, 0x74, +0x10, 0x60, 0x03, 0x74, 0x00, 0x6A, 0x1C, 0x61, +0x14, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA8, 0x35, +0x60, 0xF7, 0x58, 0x9A, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA8, 0x35, 0x60, 0xF7, 0x5C, 0x9A, +0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF7, +0x40, 0x9A, 0xA8, 0x35, 0x55, 0xE5, 0x40, 0x9D, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF7, +0x44, 0x9A, 0xA8, 0x35, 0x55, 0xE5, 0x40, 0x9D, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x81, 0xF4, 0x10, 0x6B, +0x63, 0xF1, 0x74, 0xDA, 0x00, 0xF2, 0x00, 0x4B, +0x63, 0xF1, 0x78, 0xDA, 0x01, 0xF2, 0x00, 0x4B, +0x63, 0xF1, 0x7C, 0xDA, 0x00, 0xF2, 0x00, 0x4B, +0x83, 0xF1, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF7, 0x48, 0x9A, +0xFF, 0x6B, 0x40, 0xA2, 0x6C, 0xEA, 0x5E, 0x32, +0x6C, 0xEA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF7, 0xAC, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, +0xE0, 0xAD, 0xFF, 0xF7, 0x1F, 0x6E, 0x01, 0x74, +0xCC, 0xEF, 0x08, 0x60, 0x03, 0x24, 0x02, 0x74, +0x0B, 0x60, 0x20, 0xE8, 0x7F, 0xF6, 0x1F, 0x6B, +0xEC, 0xEB, 0x0E, 0x10, 0x80, 0xF1, 0x01, 0x6B, +0x6B, 0xEB, 0xEC, 0xEB, 0x80, 0x6C, 0x06, 0x10, +0x80, 0xF1, 0x01, 0x6B, 0x6B, 0xEB, 0xFF, 0x6C, +0xEC, 0xEB, 0x01, 0x4C, 0x8D, 0xEB, 0xCC, 0xEB, +0x83, 0x67, 0x62, 0x33, 0x4C, 0xEC, 0x4C, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF7, 0x50, 0x9A, +0x80, 0xC5, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0x02, 0x74, 0x4C, 0xED, +0xCC, 0xEA, 0x1C, 0x61, 0x01, 0x75, 0x0A, 0x6C, +0x04, 0x60, 0x02, 0x75, 0x00, 0x6C, 0x01, 0x61, +0x09, 0x6C, 0x01, 0x72, 0x04, 0x61, 0x01, 0x75, +0x04, 0x6B, 0x07, 0x61, 0x1D, 0x10, 0x02, 0x72, +0x07, 0x61, 0x01, 0x75, 0x02, 0x6B, 0x04, 0x61, +0x17, 0x10, 0x02, 0x75, 0x01, 0x6B, 0x04, 0x10, +0x02, 0x72, 0x11, 0x61, 0x02, 0x75, 0x03, 0x6B, +0x0E, 0x61, 0x0E, 0x10, 0x01, 0x74, 0x08, 0x61, +0x02, 0x72, 0x01, 0x6B, 0x03, 0x60, 0x01, 0x72, +0x03, 0x61, 0x02, 0x6B, 0x00, 0x6C, 0x04, 0x10, +0x00, 0x6B, 0x83, 0x67, 0x01, 0x10, 0x00, 0x6B, +0x90, 0x32, 0x6D, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6B, 0x6C, 0xEC, 0x1F, 0x6D, 0x8C, 0xED, +0x96, 0x34, 0x6C, 0xEC, 0x01, 0x74, 0x03, 0x6A, +0x0A, 0x60, 0x10, 0x24, 0x04, 0x74, 0x05, 0x60, +0x06, 0x74, 0x00, 0x6A, 0x12, 0x61, 0xEF, 0x4A, +0x02, 0x10, 0x07, 0x6A, 0x4B, 0xEA, 0xAB, 0xE2, +0x44, 0x32, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, +0x43, 0x32, 0x20, 0xE8, 0x08, 0x6A, 0xAB, 0xE2, +0x44, 0x32, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, +0x43, 0x32, 0x20, 0xE8, 0x00, 0xF6, 0x80, 0x34, +0x00, 0xF6, 0x83, 0x34, 0x47, 0x44, 0x5C, 0x4A, +0xFF, 0x6B, 0x6C, 0xEA, 0x77, 0x5A, 0x00, 0x6A, +0x06, 0x60, 0x00, 0x54, 0x64, 0x6A, 0x03, 0x60, +0x47, 0x44, 0x5D, 0x4A, 0x6C, 0xEA, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6B, 0x8C, 0xEB, 0xFF, 0xF7, 0x1F, 0x6A, +0x81, 0x46, 0x26, 0x67, 0xAC, 0xEA, 0x06, 0x2C, +0x83, 0x67, 0xA2, 0x67, 0x00, 0x18, 0x2C, 0x1A, +0x02, 0x67, 0x0A, 0x10, 0x83, 0x67, 0xA2, 0x67, +0x00, 0x18, 0x2C, 0x1A, 0x02, 0x67, 0x91, 0x67, +0x00, 0x18, 0xEE, 0x10, 0x2C, 0xE8, 0x06, 0xEA, +0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF4, 0x60, 0x9B, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x69, 0xE2, 0x00, 0x9A, 0x41, 0x45, +0x25, 0x67, 0x05, 0x22, 0x85, 0x67, 0x00, 0x18, +0xEE, 0x10, 0x2C, 0xE8, 0x06, 0xEA, 0x50, 0x67, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, +0x41, 0x45, 0x25, 0x67, 0x0C, 0xD6, 0x8C, 0xE8, +0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, +0x40, 0x9A, 0x41, 0xE0, 0xC0, 0xD8, 0x17, 0x10, +0x01, 0x6D, 0x90, 0x67, 0xAB, 0xED, 0x00, 0x18, +0xAB, 0x1A, 0x91, 0x67, 0x04, 0xD2, 0x00, 0x18, +0xEE, 0x10, 0x0C, 0x93, 0x64, 0xEA, 0x43, 0x67, +0x04, 0x93, 0x2C, 0xEA, 0x2F, 0xE9, 0x6C, 0xE9, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, 0x60, 0x9B, +0x2D, 0xEA, 0x61, 0xE0, 0x40, 0xD8, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x54, 0x2C, +0x06, 0x5A, 0xE0, 0xF0, 0x1E, 0x60, 0x30, 0xF0, +0x20, 0x6B, 0x48, 0x32, 0xE0, 0xF2, 0x04, 0x4B, +0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, 0x01, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xE8, 0x80, 0xF7, +0x34, 0x9A, 0x5A, 0x10, 0x01, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0x0B, 0xE8, 0x80, 0xF7, 0x3C, 0x9A, +0x99, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF7, +0x34, 0x9A, 0x01, 0x68, 0x0B, 0xE8, 0xB0, 0x67, +0xD1, 0x67, 0xA1, 0xF4, 0x10, 0x6C, 0x00, 0x18, +0xB9, 0x1A, 0xB0, 0x67, 0xD1, 0x67, 0xA1, 0xF6, +0x10, 0x6C, 0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF7, 0x18, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF7, 0x20, 0x9A, 0x6D, 0x10, +0xA1, 0xF4, 0x10, 0x6C, 0xFF, 0x6D, 0x77, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF7, 0xD4, 0x9A, 0x01, 0x6D, 0xA1, 0xF6, +0x10, 0x6C, 0xAB, 0xED, 0x00, 0x18, 0xB9, 0x1A, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0xA8, 0x9A, +0xA1, 0xF4, 0x14, 0x6C, 0x00, 0x6E, 0x00, 0x18, +0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, 0xA1, 0xF6, +0x14, 0x6C, 0x80, 0xF7, 0xB8, 0x9A, 0x31, 0x10, +0x06, 0x5A, 0xA0, 0xF0, 0x0A, 0x60, 0x30, 0xF0, +0x20, 0x6B, 0x48, 0x32, 0xE0, 0xF2, 0x1C, 0x4B, +0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, 0x01, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xE8, 0xA0, 0xF7, +0x24, 0x9A, 0x27, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF7, 0x24, 0x9A, 0x01, 0x68, 0x0B, 0xE8, +0xB0, 0x67, 0xA1, 0xF4, 0x10, 0x6C, 0xD1, 0x67, +0x00, 0x18, 0xB9, 0x1A, 0xB0, 0x67, 0xA1, 0xF6, +0x10, 0x6C, 0xD1, 0x67, 0x00, 0x18, 0xB9, 0x1A, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF7, 0x18, 0x9A, +0xA1, 0xF4, 0x14, 0x6C, 0x00, 0x6E, 0xB0, 0x67, +0x00, 0x18, 0xB9, 0x1A, 0xA1, 0xF6, 0x14, 0x6C, +0xB0, 0x67, 0x00, 0x6E, 0x78, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF7, 0x28, 0x9A, 0x01, 0x68, +0x0B, 0xE8, 0xB0, 0x67, 0xD1, 0x67, 0xA1, 0xF4, +0x10, 0x6C, 0x00, 0x18, 0xB9, 0x1A, 0xB0, 0x67, +0xD1, 0x67, 0xA1, 0xF6, 0x10, 0x6C, 0x00, 0x18, +0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF7, +0x18, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, +0x28, 0x9A, 0xA1, 0xF4, 0x14, 0x6C, 0xB0, 0x67, +0xD1, 0x67, 0x00, 0x18, 0xB9, 0x1A, 0xA1, 0xF6, +0x14, 0x6C, 0xB0, 0x67, 0xD1, 0x67, 0x53, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF7, 0x2C, 0x9A, +0x01, 0x68, 0x0B, 0xE8, 0xB0, 0x67, 0xD1, 0x67, +0xA1, 0xF4, 0x10, 0x6C, 0x00, 0x18, 0xB9, 0x1A, +0xB0, 0x67, 0xD1, 0x67, 0xA1, 0xF6, 0x10, 0x6C, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF7, 0x18, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF4, 0x28, 0x9A, 0xA1, 0xF4, 0x14, 0x6C, +0xB0, 0x67, 0xD1, 0x67, 0x00, 0x18, 0xB9, 0x1A, +0xA1, 0xF6, 0x14, 0x6C, 0xB0, 0x67, 0xD1, 0x67, +0x00, 0x18, 0xB9, 0x1A, 0x01, 0xF1, 0x00, 0x6C, +0x00, 0xF3, 0x03, 0x6D, 0x01, 0x6E, 0x27, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF7, 0xB0, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF7, 0xD4, 0x9A, +0xA1, 0xF4, 0x10, 0x6C, 0x00, 0x18, 0xB9, 0x1A, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF7, 0xC8, 0x9A, +0x01, 0x6D, 0xA1, 0xF6, 0x10, 0x6C, 0xAB, 0xED, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF4, 0x08, 0x9A, 0xA1, 0xF4, 0x14, 0x6C, +0xB0, 0x67, 0xD0, 0x67, 0x00, 0x18, 0xB9, 0x1A, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF7, 0xB8, 0x9A, +0xA1, 0xF6, 0x14, 0x6C, 0xD0, 0x67, 0x00, 0x18, +0xB9, 0x1A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, +0x4C, 0xEC, 0x04, 0xD5, 0x28, 0x2C, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x18, 0x9A, 0x01, 0xF0, +0x08, 0x69, 0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x21, 0xF0, 0x10, 0x6C, +0x0E, 0x6D, 0x08, 0x6E, 0x00, 0x18, 0xB9, 0x1A, +0x01, 0x6E, 0x21, 0xF0, 0x14, 0x6C, 0x03, 0x6D, +0x00, 0x18, 0xB9, 0x1A, 0x04, 0x95, 0x00, 0x6C, +0x00, 0x18, 0xD0, 0x1A, 0x91, 0x67, 0xB0, 0x67, +0xD0, 0x67, 0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF7, 0x68, 0x9A, 0x7F, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x0C, 0xEC, 0x0F, 0x5C, 0xAC, 0xE8, 0x09, 0x60, +0x00, 0x18, 0x4A, 0x1A, 0x10, 0x22, 0x00, 0x18, +0x4A, 0x1A, 0x01, 0x72, 0x00, 0x6C, 0x0B, 0x61, +0x04, 0x10, 0x00, 0x18, 0x4A, 0x1A, 0x05, 0x2A, +0x01, 0x6C, 0xB0, 0x67, 0x00, 0x18, 0x57, 0x1B, +0x02, 0x10, 0x00, 0x18, 0x4A, 0x1A, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0xAC, 0xE8, +0x01, 0x6D, 0x21, 0xF0, 0x14, 0x6C, 0xAB, 0xED, +0x00, 0x18, 0xAB, 0x1A, 0x01, 0x71, 0x04, 0xD2, +0x24, 0x60, 0x03, 0x21, 0x02, 0x71, 0x71, 0x60, +0xB4, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF7, +0xB8, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF7, +0xDC, 0x9A, 0xA1, 0xF0, 0x0C, 0x6C, 0x00, 0x18, +0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0xBC, 0x9A, 0xC1, 0xF0, 0x04, 0x6C, 0x00, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF7, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x61, 0xF0, 0x04, 0x6C, 0xA0, 0xF7, 0xC0, 0x9A, +0x92, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF7, +0xB8, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, +0xC4, 0x9A, 0xA1, 0xF0, 0x0C, 0x69, 0x91, 0x67, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0xBC, 0x9A, 0xC1, 0xF0, 0x04, 0x6C, +0x00, 0x6E, 0x00, 0x18, 0xB9, 0x1A, 0x91, 0x67, +0x3C, 0x6D, 0x08, 0x36, 0x00, 0x18, 0xB9, 0x1A, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0xB8, 0x9A, +0x21, 0xF0, 0x18, 0x6C, 0x00, 0xF7, 0x00, 0x36, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF7, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0xC4, 0x9A, 0x61, 0xF0, 0x04, 0x6C, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF4, 0x50, 0x9A, 0x04, 0x93, 0x6C, 0xEA, +0x0C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, +0xA8, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, +0xCC, 0x9A, 0x41, 0xF0, 0x08, 0x6C, 0x00, 0x18, +0xB9, 0x1A, 0x01, 0x70, 0x05, 0x61, 0x10, 0x6D, +0x01, 0xF2, 0x00, 0x6C, 0xC5, 0x67, 0x47, 0x10, +0x01, 0xF2, 0x00, 0x6C, 0x10, 0x6D, 0x00, 0x6E, +0x42, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF7, +0xB8, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, +0xD0, 0x9A, 0xA1, 0xF0, 0x0C, 0x69, 0x91, 0x67, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0xDC, 0x9A, 0xC1, 0xF0, 0x04, 0x6C, +0xA6, 0x67, 0x00, 0x18, 0xB9, 0x1A, 0x91, 0x67, +0x3C, 0x6D, 0x08, 0x36, 0x00, 0x18, 0xB9, 0x1A, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0xB8, 0x9A, +0x21, 0xF0, 0x18, 0x6C, 0x00, 0xF7, 0x00, 0x36, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF7, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0xC4, 0x9A, 0x61, 0xF0, 0x04, 0x6C, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF4, 0x50, 0x9A, 0x04, 0x93, 0x6C, 0xEA, +0x0C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, +0xA8, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, +0xD4, 0x9A, 0x41, 0xF0, 0x08, 0x6C, 0x00, 0x18, +0xB9, 0x1A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x26, 0xF0, 0x04, 0x4A, +0x88, 0x34, 0x91, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF7, 0x58, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF5, 0xA0, 0x35, 0xCC, 0xEA, 0xC0, 0xF7, +0xDC, 0x9B, 0x80, 0xAC, 0xAD, 0xEA, 0x01, 0x6D, +0xAB, 0xED, 0x4C, 0xEE, 0x00, 0x18, 0xB9, 0x1A, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x46, 0x67, 0xFF, 0x68, 0xFF, 0xF7, 0x1F, 0x69, +0x01, 0x4A, 0x0C, 0xD6, 0x0D, 0xD7, 0x8C, 0xE8, +0xAC, 0xE9, 0x04, 0x2A, 0x90, 0x67, 0xB1, 0x67, +0xC7, 0x67, 0x12, 0x10, 0xB1, 0x67, 0x90, 0x67, +0x00, 0x18, 0x2C, 0x1A, 0x0C, 0x94, 0x04, 0xD2, +0x00, 0x18, 0xEE, 0x10, 0x0D, 0x96, 0x90, 0x67, +0xB1, 0x67, 0xC4, 0xEA, 0x0C, 0x92, 0x4C, 0xEE, +0x4F, 0xEB, 0x04, 0x92, 0x4C, 0xEB, 0x6D, 0xEE, +0x00, 0x18, 0xE9, 0x1B, 0x01, 0x6C, 0x00, 0x18, +0xAA, 0x11, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, +0x01, 0x72, 0x11, 0x60, 0x03, 0x22, 0x02, 0x72, +0x1D, 0x60, 0x2A, 0x10, 0x01, 0xF4, 0x00, 0x68, +0x00, 0x6C, 0x18, 0x6D, 0xD0, 0x67, 0xF0, 0x67, +0x00, 0x18, 0xF8, 0x1B, 0x01, 0x6C, 0x18, 0x6D, +0xD0, 0x67, 0xF0, 0x67, 0x1B, 0x10, 0x01, 0xF4, +0x00, 0x68, 0x00, 0xF4, 0x00, 0x69, 0x00, 0x6C, +0x18, 0x6D, 0xD0, 0x67, 0xF1, 0x67, 0x00, 0x18, +0xF8, 0x1B, 0x01, 0x6C, 0x18, 0x6D, 0xD0, 0x67, +0xF1, 0x67, 0x0C, 0x10, 0x00, 0x6C, 0x01, 0xF4, +0x00, 0x68, 0xE4, 0x67, 0x18, 0x6D, 0xD0, 0x67, +0x00, 0x18, 0xF8, 0x1B, 0x01, 0x6C, 0x18, 0x6D, +0xD0, 0x67, 0x00, 0x6F, 0x00, 0x18, 0xF8, 0x1B, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x68, 0x24, 0x67, +0x0C, 0xE9, 0x0C, 0xED, 0x91, 0x67, 0x04, 0xD5, +0xCC, 0xE8, 0x00, 0x18, 0x4F, 0x1A, 0x04, 0x95, +0xD0, 0x67, 0x91, 0x67, 0x00, 0x18, 0x66, 0x1A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF7, 0x60, 0x9B, +0x91, 0x67, 0xA2, 0x67, 0x40, 0xC3, 0x00, 0x18, +0x82, 0x1B, 0x91, 0x67, 0x00, 0x18, 0x0F, 0x1C, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x04, 0x67, +0x4C, 0xE8, 0x68, 0x40, 0xE4, 0x4B, 0x4C, 0xEB, +0x0D, 0x5B, 0x09, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x61, 0xF0, 0x00, 0x6C, 0xE0, 0xF7, 0xA4, 0x9A, +0x80, 0xF4, 0x14, 0x6E, 0x2F, 0x10, 0x68, 0x40, +0xD6, 0x4B, 0x4C, 0xEB, 0x0F, 0x5B, 0x09, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x61, 0xF0, 0x00, 0x6C, +0xE0, 0xF7, 0xA4, 0x9A, 0x40, 0xF4, 0x13, 0x6E, +0x21, 0x10, 0x68, 0x40, 0xA4, 0x4B, 0x4C, 0xEB, +0x11, 0x5B, 0x09, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x61, 0xF0, 0x00, 0x6C, 0xE0, 0xF7, 0xA4, 0x9A, +0x40, 0xF4, 0x12, 0x6E, 0x13, 0x10, 0x76, 0x58, +0x09, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x61, 0xF0, +0x00, 0x6C, 0xE0, 0xF7, 0xA4, 0x9A, 0x00, 0xF4, +0x12, 0x6E, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF7, 0xA4, 0x9A, 0x61, 0xF0, 0x00, 0x6C, +0x61, 0xF1, 0x0A, 0x6E, 0x00, 0x18, 0xB9, 0x1A, +0x00, 0x69, 0x68, 0x40, 0xE4, 0x4B, 0xFF, 0x6A, +0x4C, 0xEB, 0x1D, 0x5B, 0x02, 0x60, 0x02, 0x4A, +0x0E, 0x10, 0x68, 0x40, 0xA4, 0x4B, 0x4C, 0xEB, +0x29, 0x5B, 0x03, 0x60, 0x00, 0xF3, 0x01, 0x6A, +0x06, 0x10, 0x00, 0x6A, 0x8D, 0x58, 0x04, 0xD2, +0x03, 0x61, 0x00, 0xF5, 0x01, 0x4A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF7, 0x88, 0x9A, +0x00, 0x18, 0xEE, 0x10, 0x04, 0x97, 0x91, 0x67, +0x18, 0x6D, 0xE4, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF7, 0xCC, 0x9A, 0x0D, 0xEF, 0x01, 0x49, +0x00, 0x18, 0xF8, 0x1B, 0x04, 0x71, 0xD5, 0x61, +0x68, 0x40, 0xE4, 0x4B, 0xFF, 0x6A, 0x4C, 0xEB, +0x1D, 0x5B, 0x05, 0x60, 0x41, 0xF1, 0x18, 0x6C, +0x1F, 0x6D, 0x01, 0x6E, 0x10, 0x10, 0x68, 0x40, +0xA4, 0x4B, 0x4C, 0xEB, 0x2D, 0x5B, 0x05, 0x60, +0x41, 0xF1, 0x18, 0x6C, 0x1F, 0x6D, 0x02, 0x6E, +0x06, 0x10, 0x95, 0x58, 0x06, 0x61, 0x41, 0xF1, +0x18, 0x6C, 0x1F, 0x6D, 0x03, 0x6E, 0x00, 0x18, +0xB9, 0x1A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF5, 0x74, 0x9B, 0x10, 0xF0, 0x20, 0x6A, +0x2E, 0xF2, 0x05, 0x4A, 0x40, 0xDB, 0x00, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF7, 0xB0, 0x9A, +0xFF, 0x6C, 0x40, 0xA5, 0xA0, 0xA5, 0x8C, 0xEA, +0xAC, 0xEC, 0x4E, 0xEC, 0x10, 0x24, 0x64, 0x73, +0x09, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF4, +0x84, 0x9B, 0x40, 0x6D, 0x60, 0x9C, 0xAD, 0xEB, +0x60, 0xDC, 0x20, 0xE8, 0x01, 0x4B, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xEB, 0xE5, 0x17, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF5, 0x74, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0x6E, 0xF2, 0x11, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF7, +0x54, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF5, +0x74, 0x9B, 0x10, 0xF0, 0x20, 0x6A, 0x6E, 0xF2, +0x12, 0x4A, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF7, 0x78, 0x9B, +0xFF, 0x6A, 0xAC, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF7, 0x58, 0x9A, +0xFF, 0x6B, 0x40, 0xA2, 0x6C, 0xEA, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xED, 0xFF, 0x75, 0x4C, 0xEC, +0xCC, 0xEA, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x71, 0xE4, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x71, 0xE4, 0xA3, 0xF2, 0x7C, 0xA4, 0xAC, 0xEA, +0xAF, 0xED, 0x6C, 0xED, 0xAD, 0xEA, 0xA3, 0xF2, +0x5C, 0xC4, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF5, 0x74, 0x9B, 0x10, 0xF0, 0x20, 0x6A, +0xFF, 0x69, 0xEE, 0xF2, 0x1D, 0x4A, 0x8C, 0xE9, +0x40, 0xDB, 0x00, 0x68, 0x1D, 0x10, 0x82, 0xF3, +0x08, 0x70, 0x09, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF4, 0x64, 0x9A, 0x10, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x1C, 0x10, 0xFF, 0xF7, +0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x14, 0x6C, +0x00, 0x18, 0xAA, 0x11, 0x33, 0x58, 0x08, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF7, 0x58, 0x9A, +0x01, 0x6B, 0x40, 0xA2, 0x6C, 0xEA, 0x0B, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF7, 0x5C, 0x9A, +0x01, 0x6B, 0x40, 0x9A, 0x42, 0x32, 0x5E, 0x32, +0x6C, 0xEA, 0x2E, 0xEA, 0xD8, 0x2A, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF5, 0x74, 0x9B, 0x10, 0xF0, +0x20, 0x6A, 0xEE, 0xF2, 0x1E, 0x4A, 0x40, 0xDB, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, +0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x6E, 0x98, +0x00, 0xF7, 0x58, 0x9A, 0x60, 0xDA, 0x00, 0x18, +0x9C, 0x1C, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF5, +0x68, 0x9A, 0xEF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x00, 0x6C, 0x00, 0x18, 0xBF, 0x1C, +0x01, 0x6C, 0x00, 0x18, 0xD7, 0x21, 0xE3, 0xF2, +0x74, 0xA0, 0x7F, 0x6A, 0x05, 0x97, 0x6C, 0xEA, +0xE3, 0xF2, 0x54, 0xC0, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0xE3, 0xF2, 0x94, 0xA2, 0x80, 0x6B, +0x6B, 0xEB, 0x8D, 0xEB, 0xE3, 0xF2, 0x74, 0xC2, +0x03, 0xF3, 0x64, 0xAA, 0x30, 0xF0, 0x20, 0x6A, +0x01, 0xF0, 0x40, 0x9A, 0x00, 0x6C, 0xFF, 0x68, +0x60, 0xCA, 0x00, 0x18, 0xD7, 0x21, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF5, 0x68, 0x9A, 0x10, 0x6C, +0x40, 0xA3, 0x0C, 0xEA, 0x8D, 0xEA, 0x0C, 0xEA, +0x40, 0xC3, 0x01, 0x6C, 0x00, 0x18, 0xBF, 0x1C, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF7, 0x58, 0x9A, +0x00, 0x6B, 0x01, 0x6C, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF7, 0x74, 0x9A, 0x40, 0xA3, +0x0C, 0xEA, 0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, +0x14, 0x6C, 0x00, 0x18, 0xAA, 0x11, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF5, 0x74, 0x9B, 0x10, 0xF0, +0x20, 0x6A, 0x4E, 0xF4, 0x19, 0x4A, 0x40, 0xDB, +0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF0, +0x44, 0x9A, 0x40, 0xA2, 0x12, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x01, 0xF0, 0x48, 0x9A, 0x40, 0xA2, +0x0C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF0, +0x4C, 0x9A, 0x40, 0xA2, 0x06, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x01, 0xF0, 0x50, 0x9A, 0x40, 0xA2, +0x23, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, +0x70, 0xA2, 0x40, 0x6A, 0x6C, 0xEA, 0x07, 0x22, +0xFF, 0xF7, 0x1F, 0x6A, 0x0C, 0xEA, 0x04, 0x5A, +0x08, 0x60, 0x01, 0x6C, 0x11, 0x10, 0xFF, 0xF7, +0x1F, 0x6A, 0x0C, 0xEA, 0xE0, 0xF3, 0x09, 0x5A, +0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, +0x64, 0x9A, 0x20, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x00, 0x6A, 0x06, 0x10, 0x32, 0x6C, +0x00, 0x18, 0xAA, 0x11, 0x01, 0x48, 0xC5, 0x17, +0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, +0xFF, 0x74, 0xAC, 0xEA, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x46, 0xF1, 0x5B, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0xA3, 0xF2, 0xAB, 0xA3, 0x8C, 0xEA, 0x8F, 0xEC, +0xAC, 0xEC, 0x8D, 0xEA, 0xA3, 0xF2, 0x4B, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x26, 0x67, +0x0C, 0xE9, 0x53, 0x71, 0x0C, 0xEC, 0x0C, 0xED, +0x09, 0x60, 0x06, 0x2C, 0x30, 0xF0, 0x20, 0x6A, +0x46, 0xF1, 0x5A, 0xA2, 0xAD, 0xEA, 0x0B, 0x10, +0x00, 0x18, 0x3D, 0x1D, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xA3, 0xF2, 0x6B, 0xA2, +0xA3, 0xF2, 0x4A, 0xA2, 0x6D, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF4, 0x64, 0x9B, 0x0C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF1, +0x38, 0xC2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xC3, 0xF2, 0xB5, 0xA2, +0xE1, 0xF7, 0x1F, 0x6B, 0xC3, 0xF2, 0x70, 0xCA, +0x04, 0x6B, 0x00, 0x6C, 0x6B, 0xEB, 0xAC, 0xEB, +0xC3, 0xF2, 0x92, 0xCA, 0xC3, 0xF2, 0x94, 0xC2, +0x02, 0x6D, 0xC3, 0xF2, 0x96, 0xCA, 0x05, 0x6C, +0xAD, 0xEB, 0x8B, 0xEC, 0x8C, 0xEB, 0xC3, 0xF2, +0x75, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0xC3, 0xF2, 0xD4, 0xA3, +0x3F, 0x6D, 0x30, 0xF0, 0x20, 0x6A, 0xBB, 0xEE, +0x01, 0x2D, 0xE5, 0xE8, 0x01, 0xF0, 0x54, 0x9A, +0x49, 0xE4, 0x10, 0xED, 0xA8, 0x35, 0xA0, 0xC2, +0xC3, 0xF2, 0x54, 0xA3, 0x01, 0x4A, 0xC3, 0xF2, +0x54, 0xC3, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF0, +0x78, 0x9A, 0x7F, 0x6A, 0x01, 0x68, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x01, 0xF0, 0x5C, 0x9A, 0x60, 0xA2, 0xFF, 0x6A, +0x6C, 0xE8, 0x2A, 0x20, 0x30, 0xF0, 0x20, 0x6B, +0x86, 0xF1, 0x85, 0xA3, 0x04, 0x6B, 0x8C, 0xEB, +0x4C, 0xEB, 0x22, 0x23, 0x03, 0x6B, 0x8C, 0xEB, +0x4C, 0xEB, 0x01, 0x73, 0x0B, 0x60, 0x02, 0x73, +0x11, 0x60, 0x1A, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF5, 0x94, 0x9B, 0x02, 0x6D, 0x60, 0xA4, +0x4C, 0xEB, 0x0F, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF5, 0x94, 0x9B, 0x06, 0x6D, 0x60, 0xA4, +0x4C, 0xEB, 0x07, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF5, 0x94, 0x9B, 0x0E, 0x6D, 0x60, 0xA4, +0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0xC3, 0xF2, 0x95, 0xA2, 0x05, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xC3, 0xF2, 0x75, 0xC2, 0x90, 0x67, +0x00, 0x18, 0x0F, 0x32, 0x5D, 0x67, 0x7D, 0x67, +0x12, 0xC2, 0x02, 0x6A, 0x50, 0xC3, 0x01, 0x6A, +0x4F, 0xCB, 0x04, 0x04, 0x00, 0x18, 0x32, 0x13, +0x09, 0x97, 0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, 0x48, 0x9A, +0xFF, 0xF7, 0x1F, 0x6C, 0xFF, 0x69, 0x40, 0xAA, +0x00, 0x68, 0x62, 0x67, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF4, 0x44, 0x9A, 0x8C, 0xEB, 0x04, 0xD3, +0x40, 0xA2, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, +0x21, 0xF0, 0x60, 0x9A, 0xEE, 0xF1, 0x1F, 0x6A, +0xA0, 0xAB, 0xAC, 0xEA, 0x10, 0xF0, 0x00, 0x6D, +0xAB, 0xED, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, +0x18, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0xC3, 0xF2, 0x70, 0xAA, 0xE1, 0xF7, +0x1F, 0x73, 0x08, 0x61, 0xC3, 0xF2, 0x95, 0xA2, +0x05, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xC3, 0xF2, +0x75, 0xC2, 0x5F, 0x10, 0x01, 0x6C, 0x00, 0x18, +0xAA, 0x11, 0x01, 0x48, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x58, 0x9A, 0x60, 0xAA, 0x02, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0xC0, 0xF7, 0x10, 0x70, +0xDC, 0x61, 0x04, 0x93, 0xE1, 0xF7, 0x1F, 0x6A, +0x01, 0x6D, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x86, 0xF1, 0x80, 0xAB, 0xFF, 0xF7, 0x1F, 0x6B, +0x18, 0x6E, 0x53, 0xE4, 0x6C, 0xEC, 0x07, 0x6F, +0x00, 0x18, 0x97, 0x28, 0x02, 0x67, 0x30, 0xF0, +0x20, 0x6A, 0x21, 0xF0, 0x44, 0x9A, 0x49, 0xE0, +0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, 0x54, 0x72, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0x6D, 0x1D, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x4C, 0x9A, +0xFF, 0x6B, 0x6F, 0x6D, 0x41, 0xE0, 0x40, 0xA0, +0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, +0xC3, 0xF2, 0x95, 0xA0, 0x4C, 0xEB, 0x76, 0x33, +0x03, 0x6A, 0x4C, 0xEB, 0xF9, 0x4A, 0x8C, 0xEA, +0x6D, 0xEA, 0xC3, 0xF2, 0x55, 0xC0, 0x90, 0x6C, +0x2C, 0xED, 0x19, 0x6E, 0x00, 0x18, 0x49, 0x1D, +0x30, 0xF0, 0x20, 0x6A, 0x21, 0xF0, 0x48, 0x9A, +0x20, 0x6B, 0x60, 0xC2, 0xC3, 0xF2, 0x56, 0xA8, +0xC3, 0xF2, 0x75, 0xA0, 0x01, 0x4A, 0xC3, 0xF2, +0x56, 0xC8, 0x04, 0x6A, 0x6D, 0xEA, 0xC3, 0xF2, +0x55, 0xC0, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xA6, 0x1D, 0x30, 0xF0, 0x20, 0x6A, +0x86, 0xF1, 0xC2, 0xAA, 0x06, 0x26, 0xFF, 0x6C, +0x5D, 0x4C, 0x00, 0x6D, 0x00, 0x18, 0x3C, 0x16, +0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x21, 0xF0, +0x4C, 0x9A, 0xC0, 0xC2, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x41, 0xA4, 0x60, 0xA4, 0x40, 0x32, 0x6D, 0xEA, +0xE1, 0xF7, 0x1F, 0x6B, 0x4E, 0xEB, 0x0F, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0xC3, 0xF2, 0x50, 0xCB, 0x82, 0xA4, 0x0A, 0x6A, +0x58, 0xEC, 0x12, 0xEA, 0xC3, 0xF2, 0x52, 0xCB, +0x00, 0x18, 0xF3, 0x1D, 0x10, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xE1, 0xF7, +0x1F, 0x6C, 0xC3, 0xF2, 0x72, 0xCA, 0xC3, 0xF2, +0x90, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x21, 0xF0, +0x4C, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x46, 0xF2, 0x59, 0xA2, 0xFF, 0x63, 0x05, 0x5A, +0x2C, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, +0x40, 0xF3, 0x14, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, +0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x4C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0x9A, +0x1A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x4C, 0x9A, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x21, 0xF0, 0x50, 0x9A, 0x0D, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x21, 0xF0, 0x50, 0x9A, 0x40, 0x9A, +0x50, 0x32, 0x00, 0xF5, 0x42, 0x32, 0x0A, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x21, 0xF0, 0x54, 0x9A, +0x40, 0x9A, 0xE1, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, +0x01, 0x10, 0x64, 0x6A, 0x7D, 0x67, 0x40, 0xCB, +0x7D, 0x67, 0x40, 0xAB, 0xFF, 0xF7, 0x1F, 0x6B, +0x01, 0x63, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0xA3, 0xF3, 0xA8, 0xA3, +0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x03, 0x6C, +0x8B, 0xEC, 0xAC, 0xEC, 0xA3, 0xF3, 0x88, 0xC3, +0xA3, 0xF3, 0xEA, 0xAB, 0x30, 0xF0, 0x20, 0x6B, +0x66, 0xF2, 0x08, 0x4B, 0x00, 0x6D, 0x14, 0x6E, +0xD8, 0xED, 0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF6, +0x10, 0x4C, 0x12, 0xEE, 0x91, 0xE6, 0xA3, 0xF3, +0x14, 0xA4, 0x01, 0x6E, 0xCC, 0xE8, 0x19, 0x20, +0xA3, 0xF3, 0x94, 0xA4, 0xFF, 0x68, 0x86, 0x34, +0xCC, 0xEC, 0x0C, 0xEC, 0x12, 0x24, 0x80, 0xAB, +0x5B, 0xEC, 0x01, 0x2A, 0xE5, 0xE8, 0x12, 0xEC, +0x81, 0xCB, 0x82, 0xAB, 0x98, 0xEF, 0x12, 0xEC, +0x5A, 0xEC, 0x01, 0x2A, 0xE5, 0xE8, 0x12, 0xEC, +0x82, 0xCB, 0x81, 0xAB, 0x02, 0x2C, 0xC1, 0xCB, +0x82, 0xCB, 0x01, 0x4D, 0x0A, 0x75, 0x14, 0x4B, +0xD6, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x10, 0x4B, 0xA3, 0xF3, 0x4A, 0xCB, 0xA3, 0xF3, +0x8A, 0xAB, 0xA3, 0xF3, 0x4C, 0xAB, 0x01, 0x90, +0x5B, 0xEC, 0x01, 0x2A, 0xE5, 0xE8, 0xA3, 0xF3, +0x88, 0xA3, 0x12, 0xEA, 0xA3, 0xF3, 0x4E, 0xCB, +0x58, 0x67, 0xA3, 0xF3, 0x50, 0xCB, 0x02, 0x6A, +0x8D, 0xEA, 0xA3, 0xF3, 0x48, 0xC3, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0xA3, 0xF3, 0xA8, 0xA3, +0x02, 0x6C, 0x00, 0x6A, 0xAC, 0xEC, 0x0C, 0x24, +0x30, 0xF0, 0x20, 0x6A, 0x21, 0xF0, 0x58, 0x9A, +0x00, 0x6C, 0x80, 0xC2, 0x03, 0x6A, 0x4B, 0xEA, +0xAC, 0xEA, 0xA3, 0xF3, 0x48, 0xC3, 0x01, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0x00, 0x6A, 0x14, 0x6C, +0x98, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x10, 0x4B, 0x01, 0x4A, 0x0A, 0x72, 0x12, 0xEC, +0x71, 0xE4, 0xA3, 0xF3, 0xB4, 0xA4, 0x02, 0x6B, +0x6B, 0xEB, 0xAC, 0xEB, 0xA3, 0xF3, 0x74, 0xC4, +0xEE, 0x61, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x46, 0xF2, 0x58, 0xA2, 0x01, 0x6B, 0x4C, 0xEB, +0x00, 0x6A, 0x1C, 0x23, 0x30, 0xF0, 0x20, 0x6A, +0x66, 0xF2, 0x10, 0x4A, 0x00, 0x6B, 0xA0, 0x9A, +0x8E, 0xED, 0x0F, 0x2D, 0x14, 0x6E, 0xD8, 0xEB, +0x30, 0xF0, 0x20, 0x6D, 0xA2, 0xF6, 0x10, 0x4D, +0x12, 0xEE, 0xB9, 0xE6, 0xA3, 0xF3, 0xF4, 0xA6, +0x02, 0x6D, 0xAB, 0xED, 0xEC, 0xED, 0xA3, 0xF3, +0xB4, 0xC6, 0x01, 0x4B, 0x0A, 0x73, 0x14, 0x4A, +0xEA, 0x61, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0xF7, 0x1F, 0x6A, 0x7D, 0x67, 0x0B, 0xD5, +0x4C, 0xEE, 0x20, 0xF0, 0xB8, 0xA3, 0x30, 0xF0, +0x20, 0x6B, 0x0A, 0xD4, 0x04, 0xD6, 0xA2, 0xF6, +0x10, 0x4B, 0xA3, 0xF3, 0xC8, 0xA3, 0x01, 0x6C, +0x00, 0xF6, 0xE0, 0x31, 0xCC, 0xEC, 0x00, 0xF6, +0x23, 0x31, 0x6C, 0x24, 0x18, 0x25, 0x01, 0x75, +0x69, 0x61, 0x0A, 0x94, 0x67, 0x24, 0x04, 0x95, +0x4A, 0xED, 0x64, 0x60, 0x7F, 0x71, 0x62, 0x60, +0xFF, 0xF7, 0x1F, 0x51, 0x5F, 0x61, 0xA3, 0xF3, +0x0A, 0xAB, 0x1B, 0xED, 0x01, 0x28, 0xE5, 0xE8, +0x12, 0xE8, 0x4C, 0xE8, 0x01, 0x6A, 0x05, 0xD2, +0x18, 0x28, 0x02, 0x67, 0x16, 0x10, 0x0A, 0x94, +0x51, 0x24, 0x04, 0x95, 0xFF, 0xF7, 0x1F, 0x75, +0x4D, 0x60, 0x7F, 0x71, 0x4B, 0x60, 0xFF, 0xF7, +0x1F, 0x51, 0x48, 0x61, 0xA3, 0xF3, 0x0C, 0xAB, +0x1B, 0xED, 0x01, 0x28, 0xE5, 0xE8, 0x12, 0xE8, +0x4C, 0xE8, 0x00, 0x6A, 0x05, 0xD2, 0x01, 0x28, +0x01, 0x68, 0x0A, 0x94, 0x00, 0x18, 0x79, 0x1E, +0x00, 0x6B, 0x14, 0x6C, 0x98, 0xEB, 0x30, 0xF0, +0x20, 0x6E, 0x1C, 0x65, 0xA2, 0xF6, 0x10, 0x4E, +0x01, 0x6D, 0xFF, 0x6A, 0xE3, 0x67, 0x4C, 0xEF, +0x12, 0xEC, 0xD1, 0xE4, 0xA3, 0xF3, 0x94, 0xA4, +0xAC, 0xEC, 0x4C, 0xEC, 0x24, 0x2C, 0x78, 0x67, +0x78, 0xEF, 0x05, 0x97, 0xE9, 0x4B, 0x12, 0xEA, +0xC9, 0xE2, 0xE4, 0x36, 0xA3, 0xF3, 0xF4, 0xA2, +0xEC, 0xEB, 0xCD, 0xEB, 0x0A, 0x96, 0xAD, 0xEB, +0xC3, 0xF3, 0xC0, 0xDA, 0x0B, 0x97, 0xDD, 0x67, +0xC3, 0xF3, 0xE4, 0xDA, 0xE7, 0x46, 0x09, 0x4F, +0xC0, 0xAF, 0xA3, 0xF3, 0x9C, 0xCA, 0xA3, 0xF3, +0x1A, 0xCA, 0xA3, 0xF3, 0xD8, 0xCA, 0xA3, 0xF3, +0x36, 0xC2, 0xA3, 0xF3, 0x95, 0xC2, 0xA3, 0xF3, +0x74, 0xC2, 0x45, 0x67, 0x04, 0x10, 0x01, 0x4B, +0x0A, 0x73, 0xC7, 0x61, 0x00, 0x6A, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF2, +0x0C, 0x4A, 0x00, 0x6C, 0x57, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x66, 0xF2, 0x0C, 0x4A, 0x00, 0x6B, +0x14, 0x6D, 0xB8, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0xA2, 0xF6, 0x10, 0x4C, 0x12, 0xED, 0x91, 0xE5, +0xA3, 0xF3, 0xD4, 0xA4, 0x01, 0x6D, 0xAC, 0xEE, +0x08, 0x26, 0xA3, 0xF3, 0x94, 0xA4, 0x86, 0x34, +0xAC, 0xEC, 0x03, 0x24, 0x80, 0xAA, 0x01, 0x4C, +0x80, 0xCA, 0x01, 0x4B, 0x0A, 0x73, 0x14, 0x4A, +0xE7, 0x61, 0x00, 0x18, 0x15, 0x1E, 0x7D, 0x67, +0x48, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x80, 0xF0, 0x7C, 0xA2, 0xA3, 0xF3, +0xA9, 0xA2, 0xFF, 0x6C, 0x76, 0x33, 0xAE, 0xEB, +0x18, 0x2B, 0x80, 0xF0, 0xB9, 0xA2, 0x7F, 0x6B, +0xAC, 0xEB, 0x8C, 0xEB, 0x12, 0x23, 0x80, 0xF0, +0xBA, 0xA2, 0x0F, 0x6B, 0xAC, 0xEB, 0x8C, 0xEB, +0x0C, 0x23, 0x7D, 0x67, 0xA8, 0xAB, 0xE3, 0xF2, +0x9C, 0xA2, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xED, +0x98, 0xED, 0x12, 0xEA, 0x6C, 0xEA, 0x7D, 0x67, +0x48, 0xCB, 0x5D, 0x67, 0x68, 0xAA, 0x30, 0xF0, +0x20, 0x6C, 0x46, 0xF2, 0x9A, 0xAC, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xEB, 0x8E, 0xEB, 0x57, 0x23, +0x7D, 0x67, 0x88, 0xAB, 0x4C, 0xEC, 0x00, 0x18, +0x34, 0x1E, 0x51, 0x10, 0x14, 0x6D, 0xB8, 0xEC, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x12, 0xED, 0x6D, 0xE5, 0xA3, 0xF3, 0xD4, 0xA3, +0x01, 0x6D, 0xAC, 0xEE, 0x0A, 0x26, 0xA3, 0xF3, +0x74, 0xA3, 0x66, 0x33, 0xAC, 0xEB, 0xFF, 0x6D, +0xAC, 0xEB, 0x03, 0x2B, 0x60, 0xAA, 0x01, 0x4B, +0x60, 0xCA, 0x01, 0x4C, 0x0A, 0x74, 0x14, 0x4A, +0xE5, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0xA3, 0xF3, 0x69, 0xA2, 0xFF, 0x73, +0x2E, 0x61, 0xA3, 0xF3, 0x70, 0xAA, 0x01, 0x4B, +0xA3, 0xF3, 0x70, 0xCA, 0xA3, 0xF3, 0x70, 0xAA, +0xA3, 0xF3, 0x4E, 0xAA, 0x6E, 0xEA, 0x23, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF2, 0x0C, 0x4A, +0x00, 0x6B, 0x14, 0x6D, 0xB8, 0xEB, 0x30, 0xF0, +0x20, 0x6C, 0xA2, 0xF6, 0x10, 0x4C, 0x12, 0xED, +0x91, 0xE5, 0xA3, 0xF3, 0xD4, 0xA4, 0x01, 0x6D, +0xAC, 0xEE, 0x08, 0x26, 0xA3, 0xF3, 0x94, 0xA4, +0x86, 0x34, 0xAC, 0xEC, 0x03, 0x24, 0x80, 0xAA, +0x01, 0x4C, 0x80, 0xCA, 0x01, 0x4B, 0x0A, 0x73, +0x14, 0x4A, 0xE7, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x78, 0x67, 0x66, 0xF2, 0x60, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, +0x6C, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x8D, 0xEB, +0x80, 0xF0, 0x6C, 0xDA, 0x07, 0x97, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x66, 0xF2, 0x0A, 0x48, 0x00, 0x69, 0x14, 0x6A, +0x58, 0xE9, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x10, 0x4B, 0x12, 0xEA, 0x69, 0xE2, 0xA3, 0xF3, +0x94, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x2B, 0x23, +0x81, 0xA8, 0x60, 0xA8, 0x63, 0xEC, 0x27, 0x61, +0xFF, 0xF7, 0x7C, 0x80, 0x81, 0x43, 0x04, 0xD4, +0x0A, 0x2C, 0x00, 0xF0, 0x46, 0x98, 0x00, 0xF0, +0x8A, 0x98, 0x40, 0xEA, 0x5D, 0x67, 0x67, 0x42, +0x09, 0x4B, 0x40, 0xAB, 0x17, 0x10, 0xFF, 0xF7, +0x9B, 0xA0, 0x01, 0x4C, 0xFF, 0xF7, 0x9B, 0xC0, +0xFF, 0xF7, 0x9B, 0xA0, 0x82, 0xEB, 0x08, 0x60, +0xA3, 0xF3, 0x94, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xA3, 0xF3, 0x74, 0xC2, 0x07, 0x10, +0x00, 0xF0, 0x46, 0x98, 0x00, 0xF0, 0x8A, 0x98, +0x40, 0xEA, 0x00, 0x6A, 0x41, 0xC8, 0x01, 0x49, +0x0A, 0x71, 0x14, 0x48, 0xC4, 0x61, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, 0xA3, 0xF3, +0x88, 0xA0, 0x01, 0x6B, 0x00, 0x6A, 0x8C, 0xEB, +0x23, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x21, 0xF0, +0x58, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x03, 0x6A, +0x4B, 0xEA, 0x8C, 0xEA, 0xA3, 0xF3, 0x48, 0xC0, +0x00, 0x18, 0x15, 0x1E, 0x7D, 0x67, 0x48, 0xCB, +0x48, 0xAB, 0xFF, 0xF7, 0x1F, 0x6C, 0x4C, 0xEC, +0x00, 0x18, 0x34, 0x1E, 0xA3, 0xF3, 0x68, 0xA0, +0xA3, 0xF3, 0xCC, 0xA8, 0x02, 0x6A, 0x6D, 0xEA, +0x42, 0xF1, 0x1C, 0x6C, 0x01, 0x6D, 0xA3, 0xF3, +0x48, 0xC0, 0x00, 0x18, 0x3C, 0x16, 0x01, 0x6A, +0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, 0xA3, 0xF3, +0x48, 0xA0, 0x03, 0x6B, 0x4C, 0xEB, 0x00, 0x6A, +0x24, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x21, 0xF0, +0x58, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x46, 0xF2, +0x18, 0x4C, 0x60, 0xC2, 0x00, 0x6D, 0xD4, 0x6E, +0x00, 0x18, 0xB6, 0x11, 0x01, 0x6A, 0xA3, 0xF3, +0x4C, 0xC8, 0x64, 0x6A, 0xA3, 0xF3, 0x4A, 0xC8, +0x64, 0x6A, 0xA3, 0xF3, 0x4E, 0xC8, 0x01, 0x6A, +0xA3, 0xF3, 0x68, 0xA0, 0x4B, 0xEA, 0xA3, 0xF3, +0x49, 0xC0, 0x7D, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x01, 0x6B, 0x6D, 0xEA, 0xA3, 0xF3, 0x48, 0xC0, +0x43, 0x67, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, +0x0F, 0x6A, 0x8C, 0xEA, 0x03, 0x2A, 0x92, 0x32, +0x6C, 0xEA, 0x20, 0xE8, 0x07, 0x4A, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x05, 0x2A, 0x01, 0x6C, +0x08, 0xF0, 0x00, 0x6D, 0x00, 0x18, 0x4B, 0x06, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x05, 0x2A, 0x01, 0x6C, 0x04, 0xF0, 0x00, 0x6D, +0x00, 0x18, 0x4B, 0x06, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x05, 0x2A, 0x01, 0x6C, +0x08, 0xF0, 0x00, 0x6D, 0x00, 0x18, 0x5F, 0x06, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x05, 0x2A, 0x01, 0x6C, 0x04, 0xF0, 0x00, 0x6D, +0x00, 0x18, 0x5F, 0x06, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6D, 0x8C, 0xED, 0x01, 0x6C, 0x44, 0x67, +0x15, 0x4D, 0x44, 0xED, 0xA2, 0x67, 0x00, 0x18, +0xE7, 0x05, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, +0x04, 0x2D, 0x03, 0x6C, 0x10, 0xF0, 0x00, 0x6D, +0x05, 0x10, 0x1B, 0x4D, 0x01, 0x6A, 0x44, 0xED, +0x03, 0x6C, 0xA2, 0x67, 0x00, 0x18, 0xE7, 0x05, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x00, 0x18, 0x8D, 0x1F, 0x01, 0x6D, 0x02, 0x6C, +0xA4, 0xEA, 0x00, 0x18, 0xE7, 0x05, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x8D, 0x1F, +0x01, 0x6D, 0x03, 0x6C, 0xA4, 0xEA, 0x00, 0x18, +0xE7, 0x05, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, +0x01, 0x6C, 0x44, 0x67, 0x15, 0x4D, 0x44, 0xED, +0xA2, 0x67, 0x00, 0x18, 0x18, 0x06, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6D, 0x8C, 0xED, 0x04, 0x2D, 0x03, 0x6C, +0x10, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x1B, 0x4D, +0x01, 0x6A, 0x44, 0xED, 0x03, 0x6C, 0xA2, 0x67, +0x00, 0x18, 0x18, 0x06, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x8D, 0x1F, +0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, 0x00, 0x18, +0x18, 0x06, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x00, 0x18, 0x8D, 0x1F, 0x01, 0x6D, 0x03, 0x6C, +0xA4, 0xEA, 0x00, 0x18, 0x18, 0x06, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0x6A, 0x20, 0xF6, 0x64, 0x9B, 0x8C, 0xEA, +0x4C, 0x32, 0x6D, 0xE2, 0x80, 0xA3, 0x30, 0xF0, +0x20, 0x6C, 0x20, 0xF6, 0x94, 0x9C, 0x91, 0xE2, +0xA0, 0xA4, 0x80, 0xA4, 0x60, 0x9B, 0x30, 0xF0, +0x20, 0x6B, 0x20, 0xF6, 0x68, 0x9B, 0x69, 0xE2, +0x60, 0xA2, 0x40, 0x9A, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0x20, 0xF6, +0x64, 0x9B, 0x8C, 0xEA, 0x4C, 0x32, 0x6D, 0xE2, +0x80, 0xA3, 0x80, 0xA3, 0x30, 0xF0, 0x20, 0x6C, +0x20, 0xF6, 0x94, 0x9C, 0x91, 0xE2, 0xA0, 0xA4, +0x80, 0xA4, 0x60, 0x9B, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF6, 0x68, 0x9B, 0x6D, 0xE2, 0x60, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x6C, 0x9B, +0x6D, 0xE2, 0x80, 0xA3, 0x60, 0xA3, 0x30, 0xF0, +0x20, 0x6B, 0x20, 0xF6, 0x78, 0x9B, 0x6D, 0xE2, +0x60, 0xA3, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, +0x60, 0x9B, 0x69, 0xE2, 0x40, 0xA2, 0x20, 0xE8, +0xDE, 0x63, 0x43, 0x62, 0x42, 0xD1, 0x41, 0xD0, +0x01, 0x6A, 0x7D, 0x67, 0x4B, 0xEA, 0x54, 0xC3, +0x0F, 0x6A, 0x56, 0xC3, 0x08, 0x6A, 0x57, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF6, 0x44, 0x9A, +0xFF, 0x68, 0x8C, 0xE8, 0x0C, 0x30, 0x49, 0xE0, +0x40, 0x9A, 0x04, 0x01, 0x06, 0x04, 0xB1, 0x67, +0x04, 0x6E, 0x04, 0xD2, 0x00, 0x18, 0xBB, 0x11, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF6, 0x48, 0x9A, +0xB1, 0x67, 0x07, 0x04, 0x41, 0xE0, 0x40, 0x98, +0x04, 0x6E, 0x04, 0xD2, 0x00, 0x18, 0xBB, 0x11, +0x05, 0x04, 0x00, 0x18, 0x50, 0x13, 0x43, 0x97, +0x42, 0x91, 0x41, 0x90, 0x22, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x81, 0xF0, 0x44, 0x9A, 0x81, 0xF0, 0x68, 0x9B, +0x00, 0xA2, 0x20, 0xA3, 0xFF, 0x6A, 0x4C, 0xE8, +0x4C, 0xE9, 0x2A, 0xE8, 0x2C, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF6, 0x44, 0x9A, 0x0C, 0x33, +0x49, 0xE3, 0x40, 0xA2, 0xFF, 0x6B, 0x6C, 0xEA, +0x5A, 0x32, 0x6C, 0xEA, 0x01, 0x72, 0x0A, 0x60, +0x05, 0x22, 0x02, 0x72, 0x0B, 0x60, 0x03, 0x72, +0x0D, 0x60, 0x0F, 0x10, 0x90, 0x67, 0x00, 0x18, +0x89, 0x3C, 0x0B, 0x10, 0x90, 0x67, 0x00, 0x18, +0x10, 0x20, 0x07, 0x10, 0x90, 0x67, 0x00, 0x18, +0xED, 0x1F, 0x03, 0x10, 0x90, 0x67, 0x00, 0x18, +0xFA, 0x1F, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, +0x0A, 0xE9, 0xD9, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x81, 0xF0, 0x44, 0x9A, 0x20, 0xC2, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x20, 0xE8, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xA1, 0xA4, 0x42, 0xA4, +0x04, 0x67, 0x80, 0xA4, 0x07, 0x69, 0x03, 0x6B, +0xAA, 0x36, 0x0F, 0x6F, 0x4C, 0xEF, 0x6C, 0xED, +0x2C, 0xEE, 0x00, 0x18, 0x3F, 0x1C, 0x81, 0xA0, +0x03, 0x6A, 0xA4, 0x67, 0x8A, 0x36, 0x2C, 0xEE, +0x4C, 0xEC, 0xB6, 0x35, 0x00, 0x18, 0x2D, 0x1C, +0x7D, 0x67, 0x10, 0x6A, 0x2F, 0xCB, 0x50, 0xC3, +0x40, 0xA0, 0x04, 0x04, 0x52, 0xC3, 0x00, 0x18, +0x32, 0x13, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD0, 0x04, 0x67, 0xE2, 0xA0, 0x80, 0xA4, +0x00, 0x6D, 0xC5, 0x67, 0x00, 0x18, 0x3F, 0x1C, +0x01, 0x6E, 0x00, 0x6C, 0x18, 0x6D, 0xCB, 0xEE, +0x00, 0x18, 0x9A, 0x1A, 0x80, 0xA0, 0xFF, 0x6B, +0x4C, 0xEB, 0x8E, 0xEB, 0x05, 0x23, 0xE2, 0xA0, +0x00, 0x6D, 0xC5, 0x67, 0x00, 0x18, 0x3F, 0x1C, +0x7D, 0x67, 0x10, 0x6A, 0x50, 0xC3, 0x07, 0x6A, +0x4F, 0xCB, 0x40, 0xA0, 0x04, 0x04, 0x52, 0xC3, +0x00, 0x18, 0x32, 0x13, 0x09, 0x97, 0x08, 0x90, +0x05, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x85, 0xF3, 0x5C, 0xA2, 0x01, 0x72, 0x03, 0x61, +0xCC, 0xF4, 0x00, 0x6A, 0x04, 0x10, 0x03, 0x72, +0x04, 0x61, 0x2D, 0xF5, 0x00, 0x6A, 0x4B, 0xEA, +0x02, 0x10, 0x48, 0xF2, 0x00, 0x6A, 0x40, 0xCC, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xA1, 0xF0, 0x48, 0x9A, +0xFF, 0x6B, 0x40, 0xA2, 0x6C, 0xEA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xA1, 0xF0, 0x68, 0x9B, +0xFF, 0x6A, 0xAC, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF5, 0x74, 0x9B, 0x10, 0xF0, +0x21, 0x6A, 0x10, 0xF2, 0x19, 0x4A, 0x40, 0xDB, +0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF0, +0x44, 0x9A, 0x40, 0xA2, 0x12, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x01, 0xF0, 0x48, 0x9A, 0x40, 0xA2, +0x0C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF0, +0x4C, 0x9A, 0x40, 0xA2, 0x06, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x01, 0xF0, 0x50, 0x9A, 0x40, 0xA2, +0x23, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, +0x70, 0xA2, 0x40, 0x6A, 0x6C, 0xEA, 0x07, 0x22, +0xFF, 0xF7, 0x1F, 0x6A, 0x0C, 0xEA, 0x04, 0x5A, +0x08, 0x60, 0x01, 0x6C, 0x11, 0x10, 0xFF, 0xF7, +0x1F, 0x6A, 0x0C, 0xEA, 0xE0, 0xF3, 0x09, 0x5A, +0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, +0x64, 0x9A, 0x20, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x00, 0x6A, 0x06, 0x10, 0x32, 0x6C, +0x00, 0x18, 0xAA, 0x11, 0x01, 0x48, 0xC5, 0x17, +0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xA1, 0xF0, 0x8C, 0x9A, 0xFF, 0x6B, 0x02, 0x6D, +0x40, 0xA4, 0x01, 0x68, 0x0B, 0xE8, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x81, 0xF0, 0x50, 0x9A, 0x01, 0x6C, +0x8B, 0xEC, 0x80, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xA1, 0xF0, 0x50, 0x9A, 0x09, 0x6C, 0x01, 0x6D, +0x80, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA1, 0xF0, +0x54, 0x9A, 0x7A, 0x6C, 0x8B, 0xEC, 0x80, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xA1, 0xF0, 0x98, 0x9A, +0xA1, 0xF0, 0x14, 0x69, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0xB0, 0x67, 0x40, 0xC4, +0x91, 0x67, 0x00, 0x18, 0xAB, 0x1A, 0x41, 0x6E, +0xCB, 0xEE, 0x91, 0x67, 0xB0, 0x67, 0x4C, 0xEE, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xA1, 0xF0, 0x3C, 0x9A, 0xB0, 0x67, 0x81, 0xF4, +0x10, 0x6C, 0xD1, 0x67, 0x00, 0x18, 0xB9, 0x1A, +0xB0, 0x67, 0xD1, 0x67, 0x81, 0xF6, 0x10, 0x6C, +0x00, 0x18, 0xB9, 0x1A, 0xB0, 0x67, 0xD1, 0x67, +0x83, 0xF0, 0x10, 0x6C, 0x00, 0x18, 0xB9, 0x1A, +0xD1, 0x67, 0xB0, 0x67, 0x83, 0xF2, 0x10, 0x6C, +0x00, 0x18, 0xB9, 0x1A, 0xB0, 0x67, 0x01, 0xF4, +0x00, 0x6C, 0x00, 0x18, 0xAB, 0x1A, 0x03, 0x69, +0xC2, 0x67, 0x2D, 0xEE, 0xB0, 0x67, 0x01, 0xF4, +0x00, 0x6C, 0x00, 0x18, 0xB9, 0x1A, 0xB0, 0x67, +0x01, 0xF6, 0x00, 0x6C, 0x00, 0x18, 0xAB, 0x1A, +0xC2, 0x67, 0x2D, 0xEE, 0xB0, 0x67, 0x01, 0xF6, +0x00, 0x6C, 0x00, 0x18, 0xB9, 0x1A, 0xB0, 0x67, +0x03, 0xF0, 0x00, 0x6C, 0x00, 0x18, 0xAB, 0x1A, +0xC2, 0x67, 0x2D, 0xEE, 0xB0, 0x67, 0x03, 0xF0, +0x00, 0x6C, 0x00, 0x18, 0xB9, 0x1A, 0xB0, 0x67, +0x03, 0xF2, 0x00, 0x6C, 0x00, 0x18, 0xAB, 0x1A, +0xC2, 0x67, 0xB0, 0x67, 0x2D, 0xEE, 0x03, 0xF2, +0x00, 0x6C, 0x00, 0x18, 0xB9, 0x1A, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x01, 0x68, 0x0B, 0xE8, 0x00, 0x18, 0x86, 0x20, +0x01, 0xF4, 0x00, 0x6C, 0xB0, 0x67, 0x00, 0x18, +0xAB, 0x1A, 0x04, 0x69, 0x2B, 0xE9, 0xC2, 0x67, +0x2C, 0xEE, 0x01, 0xF4, 0x00, 0x6C, 0xB0, 0x67, +0x00, 0x18, 0xB9, 0x1A, 0x01, 0xF6, 0x00, 0x6C, +0xB0, 0x67, 0x00, 0x18, 0xAB, 0x1A, 0xC2, 0x67, +0x2C, 0xEE, 0x01, 0xF6, 0x00, 0x6C, 0xB0, 0x67, +0x00, 0x18, 0xB9, 0x1A, 0x03, 0xF0, 0x00, 0x6C, +0xB0, 0x67, 0x00, 0x18, 0xAB, 0x1A, 0xC2, 0x67, +0x2C, 0xEE, 0x03, 0xF0, 0x00, 0x6C, 0xB0, 0x67, +0x00, 0x18, 0xB9, 0x1A, 0x03, 0xF2, 0x00, 0x6C, +0xB0, 0x67, 0x00, 0x18, 0xAB, 0x1A, 0xC2, 0x67, +0x2C, 0xEE, 0x03, 0xF2, 0x00, 0x6C, 0xB0, 0x67, +0x00, 0x18, 0xB9, 0x1A, 0x81, 0xF4, 0x10, 0x6C, +0xB0, 0x67, 0x00, 0x6E, 0x00, 0x18, 0xB9, 0x1A, +0x81, 0xF6, 0x10, 0x6C, 0xB0, 0x67, 0x00, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x83, 0xF0, 0x10, 0x6C, +0xB0, 0x67, 0x00, 0x6E, 0x00, 0x18, 0xB9, 0x1A, +0xA1, 0xF0, 0x18, 0x49, 0x00, 0x6E, 0x83, 0xF2, +0x10, 0x6C, 0xB0, 0x67, 0x00, 0x18, 0xB9, 0x1A, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x18, 0xAB, 0x1A, +0x40, 0x6E, 0x4D, 0xEE, 0x91, 0x67, 0xB0, 0x67, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xA1, 0xF0, 0x78, 0x9A, 0xFE, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x00, 0x18, 0x5B, 0x08, +0x01, 0x72, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x81, 0xF0, 0x50, 0x9A, 0x3F, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xA1, 0xF0, 0x6C, 0x9A, +0xFD, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xC0, 0xF0, 0xAA, 0xA2, +0x01, 0x6E, 0xFF, 0x6B, 0xCC, 0xED, 0x6C, 0xED, +0x6C, 0xEC, 0x07, 0x25, 0x30, 0xF0, 0x20, 0x6A, +0xC1, 0xF0, 0x40, 0x9A, 0x09, 0x6B, 0x60, 0xC2, +0x20, 0xE8, 0xC0, 0xF0, 0x51, 0xA2, 0xCC, 0xEA, +0x6C, 0xEA, 0x0B, 0x22, 0x4F, 0x44, 0x6C, 0xEA, +0x0D, 0x5A, 0x02, 0x6C, 0x06, 0x60, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF3, 0x08, 0x4B, 0x69, 0xE2, +0x80, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0xC1, 0xF0, +0x40, 0x9A, 0x80, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0x08, 0x74, 0x11, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF7, 0x6F, 0xA2, 0x40, 0x6A, 0xFF, 0x6C, +0x6C, 0xEA, 0x12, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF6, 0x74, 0x9A, 0x03, 0x6D, 0x40, 0xA3, +0x8C, 0xEA, 0xAD, 0xEA, 0x0F, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF7, 0x70, 0xA2, 0x10, 0x6A, +0xFF, 0x6D, 0x6C, 0xEA, 0x14, 0x22, 0x09, 0x2C, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF6, 0x74, 0x9A, +0xFC, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF6, +0x74, 0x9A, 0x03, 0x6C, 0x40, 0xA3, 0xAC, 0xEA, +0x8D, 0xEA, 0xAC, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x03, 0x24, 0x01, 0x74, +0x22, 0x60, 0x2A, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xC0, 0xF0, 0x80, 0xA2, +0x01, 0x6B, 0xFF, 0x6D, 0x8C, 0xEB, 0x27, 0x2B, +0xA0, 0xF0, 0x9C, 0xA2, 0x40, 0x6B, 0x8C, 0xEB, +0xAC, 0xEB, 0x0D, 0x6C, 0x25, 0x2B, 0xA0, 0xF0, +0x7F, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, 0xAC, 0xEA, +0x05, 0x22, 0x04, 0x6A, 0x6C, 0xEA, 0xAC, 0xEA, +0x1A, 0x2A, 0x17, 0x10, 0x02, 0x6A, 0x6C, 0xEA, +0xAC, 0xEA, 0x13, 0x2A, 0x14, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF7, 0x70, 0xA2, 0x80, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x05, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x6F, 0xA2, +0x08, 0x6A, 0x6C, 0xEA, 0x02, 0x2A, 0x01, 0x6C, +0x03, 0x10, 0x03, 0x6C, 0x01, 0x10, 0x09, 0x6C, +0x00, 0x18, 0x33, 0x21, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF7, 0x6F, 0xA2, 0x40, 0x6A, 0x6C, 0xEA, +0x80, 0xF0, 0x0E, 0x2A, 0x08, 0x5C, 0x64, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x60, 0xF3, +0x08, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0xA0, 0xF0, 0x9C, 0xA3, 0x80, 0x6A, 0x4B, 0xEA, +0x8C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x57, 0x22, +0xA0, 0xF0, 0x7F, 0xA3, 0x20, 0x6A, 0x6C, 0xEA, +0x8C, 0xEA, 0x53, 0x22, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xA0, 0xF0, +0x9C, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, 0x47, 0x23, +0xA0, 0xF0, 0x7F, 0xA2, 0x20, 0x6A, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x44, 0x22, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0xA0, 0xF0, 0x9C, 0xA3, 0x7E, 0x6A, 0x4B, 0xEA, +0x8C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x54, 0x22, +0xA0, 0xF0, 0x5C, 0xA3, 0x01, 0x6B, 0x4E, 0x32, +0x6E, 0xEA, 0x6C, 0xEA, 0x31, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x42, 0xF7, 0x6E, 0xA2, 0x02, 0x6A, +0x6C, 0xEA, 0x25, 0x22, 0x26, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF3, +0xB0, 0xA2, 0x10, 0x6B, 0xFF, 0x6C, 0xAC, 0xEB, +0x3B, 0x2B, 0x80, 0xF0, 0x7E, 0xA2, 0x02, 0x6A, +0x6C, 0xEA, 0x8C, 0xEA, 0x35, 0x22, 0x20, 0x6A, +0x6C, 0xEA, 0x8C, 0xEA, 0x10, 0x2A, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, 0x6E, 0xA2, +0x02, 0x6A, 0x6C, 0xEA, 0x0C, 0x2A, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x6C, 0xA2, +0x08, 0x6A, 0x6C, 0xEA, 0x04, 0x22, 0x02, 0x6A, +0x03, 0x10, 0x00, 0x6A, 0x01, 0x10, 0x01, 0x6A, +0x01, 0x72, 0x11, 0x60, 0x02, 0x72, 0x05, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xC1, 0xF0, 0x68, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC1, 0xF0, +0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC1, 0xF0, +0x44, 0x9A, 0x60, 0xDA, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0xC1, 0xF0, 0x70, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xC1, 0xF0, 0x44, 0x9A, 0x60, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF3, 0x90, 0xA2, +0x11, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x63, 0xF3, +0x9E, 0xA2, 0x63, 0xF3, 0x70, 0xC2, 0x10, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x63, 0xF3, 0x7E, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, 0x30, 0xF0, +0x20, 0x6A, 0xC1, 0xF0, 0x54, 0x9A, 0x01, 0x6B, +0x40, 0xA2, 0x4C, 0xEB, 0x00, 0x6A, 0x42, 0x2B, +0x30, 0xF0, 0x20, 0x6A, 0xC1, 0xF0, 0x58, 0x9A, +0x30, 0x74, 0x80, 0xC2, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xC1, 0xF0, 0x5C, 0x9A, 0x20, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC1, 0xF0, 0x5C, 0x9A, +0xA0, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xE1, 0xF0, +0x60, 0x9A, 0x69, 0xE5, 0x04, 0x10, 0x80, 0xA6, +0x01, 0x4E, 0x80, 0xC3, 0x01, 0x4B, 0x4A, 0xEB, +0xFA, 0x61, 0x45, 0x67, 0x0A, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xE1, 0xF0, 0x60, 0x9B, 0x00, 0x6C, +0x6D, 0xE2, 0x80, 0xC3, 0x01, 0x4A, 0xFF, 0x6B, +0x6C, 0xEA, 0x06, 0x5A, 0xF4, 0x61, 0x0A, 0x10, +0x60, 0xA6, 0x01, 0x4E, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6B, 0xC1, 0xF0, 0x74, 0x9B, 0x01, 0x4A, +0x4E, 0xEB, 0xF6, 0x2B, 0x30, 0xF0, 0x20, 0x6A, +0xC1, 0xF0, 0x74, 0x9A, 0xFF, 0x6C, 0x01, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x45, 0x67, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xE1, 0xF0, 0x44, 0x9A, +0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x25, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xE1, 0xF0, 0x68, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6A, +0xE1, 0xF0, 0x8C, 0x9C, 0xC0, 0xA3, 0xA2, 0xF6, +0x10, 0x4A, 0x7D, 0xE2, 0x91, 0xE7, 0xC0, 0xC4, +0x30, 0xF0, 0x20, 0x6C, 0xE1, 0xF0, 0x84, 0x9C, +0x01, 0x4B, 0xFF, 0x6D, 0x8A, 0xEB, 0xEC, 0x61, +0x60, 0xA4, 0x01, 0x6E, 0xAC, 0xEB, 0xCD, 0xEB, +0xAC, 0xEB, 0x60, 0xC4, 0x80, 0xF0, 0x6C, 0x9A, +0xFF, 0x6C, 0x01, 0x4C, 0x8D, 0xEB, 0x80, 0xF0, +0x6C, 0xDA, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, +0x15, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x92, 0xC3, +0x01, 0x6A, 0x04, 0x04, 0x4F, 0xCB, 0x00, 0x18, +0x32, 0x13, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x0B, 0x6B, 0x4C, 0xED, 0xCC, 0xEA, 0xDD, 0x67, +0x70, 0xC6, 0x07, 0x6B, 0x6F, 0xCE, 0x92, 0xC6, +0x17, 0x24, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0xA3, 0xF3, 0x60, 0xA2, 0x73, 0xC6, +0x83, 0xF3, 0x7E, 0xA2, 0x74, 0xC6, 0xA3, 0xF3, +0x61, 0xA2, 0x75, 0xC6, 0xA3, 0xF3, 0x62, 0xA2, +0x76, 0xC6, 0xA3, 0xF3, 0x63, 0xA2, 0xA3, 0xF3, +0x44, 0xA2, 0x77, 0xC6, 0x58, 0xC6, 0x07, 0x10, +0x7D, 0x67, 0xB3, 0xC3, 0x54, 0xC3, 0x95, 0xC3, +0x96, 0xC3, 0x97, 0xC3, 0x98, 0xC3, 0x04, 0x04, +0x00, 0x18, 0x32, 0x13, 0x09, 0x97, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x0A, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x06, 0x6A, +0x4F, 0xCB, 0x40, 0xA4, 0x52, 0xC3, 0x41, 0xA4, +0x53, 0xC3, 0x42, 0xA4, 0x54, 0xC3, 0x43, 0xA4, +0x55, 0xC3, 0x44, 0xA4, 0x56, 0xC3, 0x45, 0xA4, +0x04, 0x04, 0x57, 0xC3, 0x00, 0x18, 0x32, 0x13, +0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x09, 0x6B, 0xBD, 0x67, +0xFF, 0x6A, 0x4C, 0xEC, 0x70, 0xC5, 0x07, 0x6B, +0x6F, 0xCD, 0x92, 0xC5, 0x2E, 0x2C, 0x30, 0xF0, +0x20, 0x6B, 0x26, 0xF2, 0x80, 0xA3, 0x20, 0x6B, +0x8C, 0xEB, 0x4C, 0xEB, 0x1C, 0x23, 0x40, 0x6B, +0x8C, 0xEB, 0x4C, 0xEB, 0x04, 0x23, 0x01, 0x6A, +0x7D, 0x67, 0x53, 0xC3, 0x16, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xE1, 0xF0, 0x70, 0x9B, 0x60, 0xA3, +0x07, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xE1, 0xF0, +0x74, 0x9B, 0x60, 0xA3, 0x6C, 0xEA, 0x04, 0x22, +0x01, 0x6A, 0x9D, 0x67, 0x53, 0xC4, 0x05, 0x10, +0xBD, 0x67, 0x53, 0xC5, 0x02, 0x10, 0x5D, 0x67, +0x73, 0xC2, 0x00, 0x6A, 0x7D, 0x67, 0x54, 0xC3, +0x55, 0xC3, 0x56, 0xC3, 0x57, 0xC3, 0x58, 0xC3, +0x28, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x83, 0xF3, 0x7F, 0xA2, 0x9D, 0x67, +0xBD, 0x67, 0x73, 0xC4, 0xA3, 0xF3, 0x80, 0xA2, +0x94, 0xC5, 0xA3, 0xF3, 0x81, 0xA2, 0x95, 0xC5, +0xA3, 0xF3, 0x82, 0xA2, 0x96, 0xC5, 0xA3, 0xF3, +0x83, 0xA2, 0x97, 0xC5, 0xA3, 0xF3, 0x84, 0xA2, +0x98, 0xC5, 0x63, 0xF3, 0xD0, 0xA2, 0x01, 0x6C, +0x6C, 0xEC, 0x21, 0x6B, 0x6B, 0xEB, 0x94, 0x35, +0xCC, 0xEB, 0xAD, 0xEB, 0x41, 0x6D, 0xAB, 0xED, +0x98, 0x34, 0xAC, 0xEB, 0x8D, 0xEB, 0x63, 0xF3, +0x70, 0xC2, 0x04, 0x04, 0x00, 0x18, 0x32, 0x13, +0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, 0x23, 0x70, +0x26, 0x67, 0x4C, 0xED, 0x0C, 0x60, 0x24, 0x58, +0x05, 0x60, 0x11, 0x70, 0x1B, 0x60, 0x1B, 0x70, +0x0E, 0x60, 0x3E, 0x10, 0x28, 0x70, 0x32, 0x60, +0x30, 0x70, 0x28, 0x60, 0x39, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x83, 0xF3, +0x90, 0xA2, 0x04, 0x6B, 0x07, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x83, 0xF3, +0x90, 0xA2, 0x10, 0x6B, 0x8D, 0xEB, 0x83, 0xF3, +0x70, 0xC2, 0x26, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x83, 0xF3, 0x90, 0xA2, +0x01, 0x6B, 0x8D, 0xEB, 0x83, 0xF3, 0x70, 0xC2, +0x60, 0xA6, 0x83, 0xF3, 0x75, 0xC2, 0x61, 0xA6, +0x83, 0xF3, 0x75, 0xC2, 0x62, 0xA6, 0x83, 0xF3, +0x75, 0xC2, 0x12, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x83, 0xF3, 0x90, 0xA2, +0x40, 0x6B, 0xE0, 0x17, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x83, 0xF3, 0x91, 0xA2, +0x01, 0x6B, 0x8D, 0xEB, 0x83, 0xF3, 0x71, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF2, 0x60, 0xAA, +0xA0, 0xF2, 0x0A, 0x6A, 0x6C, 0xEA, 0x02, 0x6B, +0x16, 0x2A, 0x90, 0x67, 0xD1, 0x67, 0x00, 0x18, +0xD8, 0x21, 0x01, 0x6B, 0x10, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x81, 0xF0, 0x50, 0x9A, 0x02, 0xF0, +0x01, 0x6C, 0x8B, 0xEC, 0x60, 0x9A, 0x8C, 0xEB, +0x60, 0xDA, 0x60, 0x9A, 0x04, 0xF0, 0x01, 0x4C, +0x8D, 0xEB, 0x60, 0xDA, 0x01, 0x6B, 0x23, 0x70, +0x0C, 0x60, 0x24, 0x58, 0x05, 0x60, 0x11, 0x70, +0x3B, 0x60, 0x1B, 0x70, 0x19, 0x60, 0x71, 0x10, +0x28, 0x70, 0x5A, 0x60, 0x30, 0x70, 0x41, 0x60, +0x6C, 0x10, 0x01, 0x6A, 0x4E, 0xEB, 0x0A, 0x2B, +0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF6, 0x10, 0x4C, +0x83, 0xF3, 0xB0, 0xA4, 0xFA, 0x4A, 0xAC, 0xEA, +0x08, 0x6D, 0x12, 0x10, 0x60, 0xA1, 0x30, 0xF0, +0x20, 0x6A, 0x46, 0xF2, 0x62, 0xC2, 0x59, 0x10, +0x01, 0x6A, 0x4E, 0xEB, 0x17, 0x2B, 0x30, 0xF0, +0x20, 0x6C, 0xA2, 0xF6, 0x10, 0x4C, 0x83, 0xF3, +0xB0, 0xA4, 0xEE, 0x4A, 0xAC, 0xEA, 0x20, 0x6D, +0xAD, 0xEA, 0x83, 0xF3, 0x50, 0xC4, 0x10, 0xF0, +0x21, 0x6C, 0xB1, 0xF3, 0x1D, 0x4C, 0x00, 0x6D, +0x0A, 0x6E, 0x01, 0x6F, 0x04, 0xD3, 0x00, 0x18, +0x8C, 0x1E, 0x3F, 0x10, 0x60, 0xA1, 0x30, 0xF0, +0x20, 0x6A, 0x46, 0xF2, 0x63, 0xC2, 0x39, 0x10, +0x01, 0x6A, 0x4E, 0xEB, 0x36, 0x2B, 0x30, 0xF0, +0x20, 0x6C, 0xA2, 0xF6, 0x10, 0x4C, 0x83, 0xF3, +0xB0, 0xA4, 0xFD, 0x4A, 0xAC, 0xEA, 0x02, 0x6D, +0xDF, 0x17, 0x01, 0x6A, 0x4E, 0xEB, 0x0B, 0x2B, +0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF6, 0x10, 0x4C, +0x83, 0xF3, 0xB0, 0xA4, 0xBE, 0x4A, 0xAC, 0xEA, +0x80, 0x6D, 0xAB, 0xED, 0xD1, 0x17, 0x30, 0xF0, +0x20, 0x6C, 0x46, 0xF2, 0x08, 0x4C, 0xB1, 0x67, +0x05, 0x6E, 0x00, 0x18, 0xBB, 0x11, 0x15, 0x10, +0x01, 0x6A, 0x4E, 0xEB, 0x0D, 0x2B, 0x30, 0xF0, +0x20, 0x6C, 0xA2, 0xF6, 0x10, 0x4C, 0x83, 0xF3, +0xB1, 0xA4, 0xFD, 0x4A, 0xAC, 0xEA, 0x02, 0x6D, +0xAD, 0xEA, 0x83, 0xF3, 0x51, 0xC4, 0xBB, 0x17, +0x60, 0xA1, 0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF2, +0x64, 0xC2, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x83, 0xF3, 0x90, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, +0x05, 0x23, 0x03, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x83, 0xF3, 0x70, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x83, 0xF3, 0x90, 0xA2, +0x08, 0x6B, 0x8C, 0xEB, 0x10, 0x23, 0x09, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x83, 0xF3, 0x70, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xC1, 0xF0, 0x54, 0x9A, +0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0x44, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x83, 0xF3, +0x90, 0xA2, 0x20, 0x6B, 0x8C, 0xEB, 0x05, 0x23, +0x21, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x83, 0xF3, +0x70, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x83, 0xF3, 0x90, 0xA2, 0x80, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0xFF, 0x6D, 0xAC, 0xEB, +0x12, 0x23, 0x7F, 0x6B, 0x8C, 0xEB, 0x83, 0xF3, +0x70, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0xC1, 0xF0, +0x74, 0x9B, 0x01, 0x6D, 0x83, 0xF3, 0xD8, 0xA2, +0x60, 0xA3, 0x00, 0x6C, 0x6C, 0xED, 0x01, 0x6B, +0x6E, 0xED, 0x00, 0x18, 0x1E, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x83, 0xF3, +0x91, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, 0x05, 0x23, +0x03, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x83, 0xF3, +0x71, 0xC2, 0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF6, +0x10, 0x4C, 0x83, 0xF3, 0xB0, 0xA4, 0x01, 0x6E, +0x46, 0x67, 0xAC, 0xEA, 0xFF, 0x6B, 0x07, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0x46, 0xF2, 0x05, 0x4C, +0x00, 0x18, 0x77, 0x12, 0x2C, 0x10, 0x10, 0x6A, +0xAC, 0xEA, 0x6C, 0xEA, 0x07, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0x46, 0xF2, 0x03, 0x4C, 0x00, 0x18, +0x7C, 0x12, 0x21, 0x10, 0x04, 0x6A, 0xAC, 0xEA, +0x6C, 0xEA, 0x07, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x46, 0xF2, 0x02, 0x4C, 0x00, 0x18, 0x86, 0x12, +0x16, 0x10, 0x40, 0x6A, 0xAC, 0xEA, 0x6C, 0xEA, +0x07, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x46, 0xF2, +0x08, 0x4C, 0x00, 0x18, 0x6B, 0x12, 0x0B, 0x10, +0x83, 0xF3, 0x51, 0xA4, 0xCC, 0xEA, 0x6C, 0xEA, +0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x46, 0xF2, +0x04, 0x4C, 0x00, 0x18, 0x66, 0x12, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xE1, 0xF0, 0x64, 0x9A, +0xFF, 0x6C, 0x02, 0x6D, 0x40, 0xA3, 0x15, 0x6E, +0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x30, 0xF0, +0x20, 0x6C, 0x40, 0xC3, 0x46, 0xF2, 0x00, 0x4C, +0x00, 0x6D, 0x00, 0x18, 0x47, 0x11, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF7, +0x0C, 0x4C, 0x00, 0x6D, 0x07, 0x6E, 0x30, 0xF0, +0x20, 0x68, 0x00, 0x18, 0x47, 0x11, 0xA2, 0xF6, +0x10, 0x48, 0x0B, 0x6A, 0xA0, 0xF0, 0x5D, 0xC0, +0x08, 0x6A, 0xA0, 0xF0, 0x5E, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0xE1, 0xF0, 0x58, 0x9A, 0xA0, 0xF0, +0x9F, 0xA0, 0x00, 0x6D, 0x60, 0xA2, 0xFF, 0x6A, +0x20, 0x6E, 0x6C, 0xEA, 0x4A, 0x32, 0x01, 0x6B, +0x6C, 0xEA, 0x58, 0x33, 0x41, 0x6A, 0x4B, 0xEA, +0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x6D, 0xEA, +0x26, 0xF2, 0x00, 0x4C, 0xA0, 0xF0, 0x5F, 0xC0, +0x00, 0x18, 0x47, 0x11, 0x63, 0xF3, 0x70, 0xA0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x6D, 0xEA, +0x00, 0x6D, 0x07, 0x6E, 0x82, 0xF7, 0x01, 0x4C, +0x63, 0xF3, 0x50, 0xC0, 0x00, 0x18, 0x47, 0x11, +0xC0, 0xF0, 0x78, 0xA0, 0x08, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x01, 0x6C, 0xC0, 0xF0, 0x58, 0xC0, +0x00, 0x18, 0x33, 0x21, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6C, 0xA4, 0x67, 0x12, 0x6E, 0x00, 0x18, +0x49, 0x1D, 0x01, 0x6C, 0x00, 0x18, 0x33, 0x21, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x73, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x63, 0xF3, 0xDE, 0xA2, 0x63, 0xF3, 0x7E, 0xA2, +0x0F, 0x6C, 0x8C, 0xEE, 0x72, 0x35, 0xA2, 0xEE, +0x03, 0x61, 0x00, 0x18, 0xCD, 0x21, 0x0A, 0x10, +0xA3, 0x67, 0x8C, 0xED, 0x01, 0x4D, 0x8C, 0xED, +0x10, 0x6C, 0x8B, 0xEC, 0x6C, 0xEC, 0xAD, 0xEC, +0x63, 0xF3, 0x9E, 0xC2, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x68, 0x0C, 0xEE, +0x04, 0xD6, 0x0E, 0x96, 0xFF, 0xF7, 0x1F, 0x69, +0xAC, 0xE9, 0x0C, 0xEF, 0x0C, 0xEC, 0xB1, 0x67, +0x0C, 0xEE, 0x05, 0xD7, 0x00, 0x18, 0xC4, 0x0E, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x6C, 0x9A, +0x80, 0x6C, 0x8B, 0xEC, 0x6D, 0xE1, 0x40, 0xA3, +0x0C, 0xEA, 0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, +0x80, 0xA3, 0xEF, 0x6A, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x70, 0x9A, +0x02, 0x6C, 0x6D, 0xE1, 0x40, 0xA3, 0x0C, 0xEA, +0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, 0x80, 0xA3, +0x03, 0x6A, 0x8C, 0xEA, 0x40, 0xC3, 0x7D, 0x67, +0x87, 0x43, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, +0x58, 0x9A, 0x09, 0x4C, 0x60, 0xA4, 0x49, 0xE1, +0x9D, 0x67, 0x60, 0xC2, 0x67, 0x44, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF4, 0x5C, 0x9A, 0x0D, 0x4B, +0x80, 0xA3, 0x49, 0xE1, 0x80, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xE1, 0xF0, 0x5C, 0x9A, 0x45, 0xE1, +0x40, 0xA1, 0x0C, 0xEA, 0x02, 0x4A, 0x0C, 0xEA, +0x40, 0xC1, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0x6A, 0xA0, 0xF4, 0x60, 0x9B, 0x4C, 0xED, +0x4C, 0xEE, 0x06, 0xD5, 0x07, 0xD6, 0x60, 0xA3, +0x24, 0x67, 0x07, 0x67, 0x4C, 0xE9, 0x4C, 0xE8, +0x28, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, +0x64, 0x9B, 0x00, 0x6C, 0xFF, 0x6D, 0x60, 0xA3, +0x01, 0x6E, 0x6C, 0xEA, 0x08, 0xD2, 0x00, 0x18, +0x49, 0x1D, 0x00, 0x18, 0x86, 0x20, 0x01, 0x72, +0x12, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0x84, 0xA2, 0x01, 0x6D, 0xE5, 0x67, 0x08, 0x6E, +0x00, 0x18, 0x97, 0x28, 0x06, 0x96, 0x07, 0x97, +0xFF, 0xF7, 0x1F, 0x6D, 0x91, 0x67, 0x4C, 0xED, +0x04, 0xD0, 0x00, 0x18, 0x8B, 0x23, 0x08, 0x95, +0x00, 0x6C, 0x02, 0x6E, 0x00, 0x18, 0x49, 0x1D, +0x12, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0x84, 0xA2, 0x01, 0x6D, 0xE5, 0x67, 0x08, 0x6E, +0x00, 0x18, 0x97, 0x28, 0x06, 0x96, 0x07, 0x97, +0xFF, 0xF7, 0x1F, 0x6D, 0x91, 0x67, 0x4C, 0xED, +0x04, 0xD0, 0x00, 0x18, 0x8B, 0x23, 0x00, 0x18, +0x71, 0x14, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x01, 0x74, 0xE0, 0xF0, +0x19, 0x60, 0x06, 0x24, 0x02, 0x74, 0x5B, 0x60, +0x04, 0x74, 0x40, 0xF1, 0x1D, 0x60, 0x57, 0x11, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0xA0, 0xF0, 0xBC, 0xA3, 0x20, 0x6C, 0xFF, 0x6A, +0xAC, 0xEC, 0x31, 0x2C, 0x10, 0x6C, 0xAC, 0xEC, +0x4C, 0xEC, 0x1A, 0x24, 0x63, 0xF3, 0xB0, 0xA3, +0x01, 0x6C, 0xAD, 0xEC, 0x63, 0xF3, 0x90, 0xC3, +0x63, 0xF3, 0x9D, 0xA3, 0x01, 0x74, 0x23, 0x60, +0xC3, 0xF2, 0x8C, 0xA3, 0x06, 0x24, 0xC0, 0xF0, +0x78, 0xA3, 0x07, 0x6E, 0x04, 0x6C, 0x6C, 0xEE, +0x05, 0x10, 0xC0, 0xF0, 0x78, 0xA3, 0x07, 0x6E, +0x0C, 0x6C, 0x6C, 0xEE, 0x01, 0x6D, 0x10, 0x10, +0x63, 0xF3, 0x9D, 0xA3, 0x03, 0x74, 0x0F, 0x61, +0x80, 0xF0, 0xB9, 0xA3, 0x7F, 0x6C, 0xAC, 0xEC, +0x4C, 0xEC, 0x09, 0x24, 0xC0, 0xF0, 0x78, 0xA3, +0x07, 0x6E, 0x04, 0x6C, 0x6C, 0xEE, 0x00, 0x6D, +0x4C, 0xEE, 0x00, 0x18, 0x29, 0x0B, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xC3, 0xF2, +0x6C, 0xA2, 0x00, 0xF1, 0x14, 0x23, 0x63, 0xF3, +0x5D, 0xA2, 0x04, 0x2A, 0xFF, 0x6C, 0x6F, 0x6D, +0x04, 0x6E, 0x10, 0x11, 0x01, 0x72, 0x04, 0x61, +0xFF, 0x6C, 0x6F, 0x6D, 0x05, 0x6E, 0x0A, 0x11, +0x03, 0x72, 0x00, 0xF1, 0x09, 0x61, 0xFF, 0x6C, +0x6F, 0x6D, 0x0B, 0x6E, 0x03, 0x11, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xA0, 0xF0, +0x9C, 0xA2, 0x20, 0x6B, 0x8C, 0xEB, 0x07, 0x2B, +0xC0, 0xF0, 0x60, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x55, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xA0, 0xF0, +0x9F, 0xA2, 0x10, 0x6B, 0x8C, 0xEB, 0x03, 0x23, +0x63, 0xF3, 0x1C, 0xA2, 0x07, 0x10, 0x63, 0xF3, +0x7D, 0xA2, 0x01, 0x73, 0x06, 0x61, 0x63, 0xF3, +0x1C, 0xA2, 0x06, 0x30, 0xA0, 0xF0, 0x5D, 0xA2, +0x08, 0x10, 0x04, 0x73, 0x00, 0x68, 0x0E, 0x61, +0x63, 0xF3, 0x1C, 0xA2, 0xA0, 0xF0, 0x5E, 0xA2, +0x06, 0x30, 0x43, 0xE0, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xE8, 0x20, 0x58, 0x03, 0x61, 0xEF, 0xF7, +0x1F, 0x68, 0x05, 0x10, 0x00, 0x30, 0x08, 0x30, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xC0, 0xF0, +0x80, 0xA2, 0x08, 0x6B, 0x8C, 0xEB, 0x05, 0x23, +0x80, 0xF0, 0x95, 0xA2, 0xB0, 0x67, 0x00, 0x18, +0xED, 0x0E, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x10, 0x4B, 0xA0, 0xF0, 0xBC, 0xA3, 0x20, 0x6C, +0xFF, 0x6A, 0x8C, 0xED, 0x11, 0x25, 0xC0, 0xF0, +0xA0, 0xA3, 0xAC, 0xEC, 0x4C, 0xEC, 0x0C, 0x24, +0xC0, 0xF0, 0x78, 0xA3, 0x07, 0x6F, 0x02, 0x36, +0x6C, 0xEF, 0xB0, 0x67, 0x00, 0x6C, 0x4C, 0xED, +0x4C, 0xEE, 0x4C, 0xEF, 0x00, 0x18, 0xB5, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0xA0, 0xF0, 0xBC, 0xA3, 0x20, 0x6C, 0xFF, 0x6A, +0xAC, 0xEC, 0x80, 0xF0, 0x15, 0x2C, 0x10, 0x6C, +0xAC, 0xEC, 0x4C, 0xEC, 0x10, 0x24, 0x63, 0xF3, +0xB0, 0xA3, 0x02, 0x6C, 0x8B, 0xEC, 0xAC, 0xEC, +0x63, 0xF3, 0x90, 0xC3, 0xC0, 0xF0, 0x78, 0xA3, +0x07, 0x6E, 0x04, 0x6C, 0x6C, 0xEE, 0x00, 0x6D, +0x4C, 0xEE, 0x00, 0x18, 0x29, 0x0B, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xA0, 0xF0, +0x9F, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x78, 0x2B, +0x63, 0xF3, 0x5D, 0xA2, 0x01, 0x72, 0x04, 0x61, +0xFF, 0x6C, 0x6F, 0x6D, 0x06, 0x6E, 0x6E, 0x10, +0x04, 0x72, 0x6E, 0x61, 0xFF, 0x6C, 0x6F, 0x6D, +0x0C, 0x6E, 0x68, 0x10, 0x30, 0xF0, 0x20, 0x68, +0xA2, 0xF6, 0x10, 0x48, 0xA0, 0xF0, 0x7C, 0xA0, +0x20, 0x6A, 0xFF, 0x69, 0x6C, 0xEA, 0x15, 0x22, +0xA0, 0xF0, 0x7F, 0xA0, 0x01, 0x6A, 0x91, 0x67, +0x6C, 0xEA, 0x2C, 0xEA, 0x55, 0x2A, 0x63, 0xF3, +0x5D, 0xA0, 0x02, 0x72, 0x04, 0x61, 0xFF, 0x6C, +0x6F, 0x6D, 0x07, 0x6E, 0x4F, 0x10, 0x05, 0x72, +0x4F, 0x61, 0xFF, 0x6C, 0x6F, 0x6D, 0x0D, 0x6E, +0x49, 0x10, 0x10, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x1E, 0x22, 0xC0, 0xF0, 0x58, 0xA0, 0x07, 0x6E, +0x80, 0xF0, 0x9D, 0xA0, 0x4C, 0xEE, 0x00, 0x6D, +0x2C, 0xEE, 0x00, 0x18, 0x29, 0x0B, 0xA0, 0xF0, +0x7F, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x32, 0x2A, 0x63, 0xF3, 0x5D, 0xA0, 0x02, 0x72, +0x04, 0x61, 0xFF, 0x6C, 0x6F, 0x6D, 0x08, 0x6E, +0x2D, 0x10, 0x05, 0x72, 0x2D, 0x61, 0xFF, 0x6C, +0x6F, 0x6D, 0x0E, 0x6E, 0x27, 0x10, 0x80, 0xF0, +0x79, 0xA0, 0x7F, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x23, 0x22, 0xC0, 0xF0, 0x58, 0xA0, 0x07, 0x6E, +0x80, 0xF0, 0x9D, 0xA0, 0x4C, 0xEE, 0x00, 0x6D, +0x2C, 0xEE, 0x00, 0x18, 0x29, 0x0B, 0xA0, 0xF0, +0x7F, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x0E, 0x2A, 0x63, 0xF3, 0x5D, 0xA0, 0x02, 0x72, +0x04, 0x61, 0xFF, 0x6C, 0x6F, 0x6D, 0x09, 0x6E, +0x09, 0x10, 0x05, 0x72, 0x09, 0x61, 0xFF, 0x6C, +0x6F, 0x6D, 0x0F, 0x6E, 0x03, 0x10, 0xFF, 0x6C, +0x00, 0x6D, 0xC5, 0x67, 0x00, 0x18, 0x49, 0x1D, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x01, 0x74, 0x09, 0x61, 0x01, 0x6D, 0x30, 0xF0, +0x20, 0x6A, 0x41, 0xF4, 0x18, 0x6C, 0xAB, 0xED, +0x26, 0xF2, 0xC8, 0x9A, 0x08, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x26, 0xF2, 0xC4, 0x9A, 0x01, 0x6D, +0x41, 0xF4, 0x18, 0x6C, 0xAB, 0xED, 0x00, 0x18, +0xB9, 0x1A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x04, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF7, +0x0C, 0x4C, 0xB0, 0x67, 0x05, 0x6E, 0x00, 0x18, +0xBB, 0x11, 0x60, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, +0x66, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x4C, 0x9A, 0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xA0, 0xF0, 0x9F, 0xA2, +0x63, 0xF3, 0x7C, 0xC2, 0x10, 0x6B, 0x8C, 0xEB, +0xFF, 0x6C, 0x8C, 0xEB, 0x07, 0x23, 0x61, 0xA0, +0xA0, 0xF0, 0x7D, 0xC2, 0x62, 0xA0, 0xA0, 0xF0, +0x7E, 0xC2, 0x1A, 0x10, 0x61, 0xA0, 0x2A, 0x5B, +0x04, 0x60, 0x03, 0x5B, 0x03, 0x60, 0x03, 0x6B, +0x01, 0x10, 0x2A, 0x6B, 0xA0, 0xF0, 0x7D, 0xC2, +0x42, 0xA0, 0x2A, 0x6B, 0x2A, 0x5A, 0x08, 0x60, +0x03, 0x5A, 0x03, 0x6B, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x62, 0xF7, 0x4E, 0xC3, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x6E, 0xC2, +0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, +0x63, 0xF3, 0x71, 0xA0, 0x07, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x00, 0x69, 0x63, 0xF3, 0x51, 0xC0, +0x04, 0x6C, 0x63, 0xF3, 0x32, 0xC0, 0x63, 0xF3, +0x33, 0xC0, 0x00, 0x18, 0x81, 0x21, 0x04, 0x6C, +0x00, 0x18, 0xDF, 0x23, 0xA0, 0xF0, 0x7C, 0xA0, +0x04, 0x6A, 0x6C, 0xEA, 0x0C, 0x22, 0x01, 0x6A, +0x83, 0xF3, 0x4C, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x01, 0xF1, 0x40, 0x9A, 0x83, 0xF3, 0x2D, 0xC0, +0x40, 0x9A, 0x83, 0xF3, 0x48, 0xD8, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x40, 0x9A, 0x05, 0x6B, +0x60, 0xC2, 0x06, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x26, 0xF2, 0x6D, 0xC2, 0x1B, 0x10, 0x03, 0x6C, +0x00, 0x18, 0x81, 0x21, 0x03, 0x6C, 0x00, 0x18, +0x60, 0x21, 0x03, 0x6C, 0x00, 0x18, 0xDF, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x63, 0xF3, 0x91, 0xA2, 0x07, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xC0, 0xF0, 0x80, 0xA2, 0x63, 0xF3, +0x71, 0xC2, 0x41, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0xC0, 0xF0, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF3, 0x90, 0xA2, +0x02, 0x6B, 0x6B, 0xEB, 0x6C, 0xEC, 0x63, 0xF3, +0x90, 0xC2, 0x63, 0xF3, 0x91, 0xA2, 0x8C, 0xEB, +0x63, 0xF3, 0x71, 0xC2, 0xA0, 0xF0, 0x7F, 0xA2, +0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, +0x97, 0x24, 0x08, 0x6C, 0x00, 0x18, 0x48, 0x21, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xA2, 0xF6, 0x10, 0x48, 0xA0, 0xF0, 0x7C, 0xA0, +0x01, 0x6A, 0xFF, 0x69, 0x6C, 0xEA, 0x43, 0x22, +0xC0, 0xF0, 0x60, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, +0x2C, 0xEA, 0x3D, 0x22, 0x00, 0x6C, 0x00, 0x18, +0x48, 0x21, 0x00, 0x6C, 0x00, 0x18, 0x60, 0x21, +0x00, 0x6C, 0x00, 0x18, 0x81, 0x21, 0x00, 0x6C, +0x00, 0x18, 0xDF, 0x23, 0xA0, 0xF0, 0x7F, 0xA0, +0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x2C, 0xEA, +0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0x97, 0x24, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x70, 0xA2, +0x02, 0x6A, 0x6C, 0xEA, 0x10, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF6, 0x54, 0x9A, 0x02, 0xF0, +0x00, 0x6C, 0x60, 0x9A, 0x8D, 0xEB, 0x60, 0xDA, +0x30, 0xF0, 0x20, 0x6C, 0x60, 0x9A, 0xC0, 0xF3, +0x90, 0x9C, 0x8D, 0xEB, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF3, +0x91, 0xA2, 0x01, 0x6B, 0x8D, 0xEB, 0x63, 0xF3, +0x90, 0xA2, 0x63, 0xF3, 0x71, 0xC2, 0x7F, 0x6B, +0x8C, 0xEB, 0x63, 0xF3, 0x70, 0xC2, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6E, 0x8C, 0xEE, +0xFF, 0x6C, 0x6D, 0x4C, 0x00, 0x6D, 0x00, 0x18, +0x3C, 0x16, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, +0xA0, 0xF0, 0x5C, 0xA0, 0x01, 0x69, 0x2C, 0xEA, +0x18, 0x22, 0x63, 0xF3, 0x5D, 0xA0, 0x15, 0x2A, +0x63, 0xF3, 0x70, 0xA0, 0x10, 0x6A, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x18, +0x7A, 0x23, 0x0B, 0x10, 0xA0, 0xF0, 0x9D, 0xA0, +0x00, 0x18, 0x2A, 0x25, 0x63, 0xF3, 0x51, 0xA0, +0x63, 0xF3, 0x3D, 0xC0, 0x4D, 0xE9, 0x63, 0xF3, +0x31, 0xC0, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x01, 0x6C, 0x00, 0x18, 0xDF, 0x23, 0x01, 0x6C, +0x00, 0x18, 0x48, 0x21, 0x01, 0x6C, 0x00, 0x18, +0x60, 0x21, 0x01, 0x6C, 0x00, 0x18, 0x81, 0x21, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x6F, 0xA2, +0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0x97, 0x24, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, +0x70, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, 0x11, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF6, 0x54, 0x9A, +0x02, 0xF0, 0x01, 0x6C, 0x8B, 0xEC, 0x60, 0x9A, +0x8C, 0xEB, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6C, +0x60, 0x9A, 0x01, 0xF1, 0x84, 0x9C, 0x8C, 0xEB, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x63, 0xF3, 0x7D, 0xA2, 0x02, 0x73, +0x22, 0x61, 0xC0, 0xF0, 0x80, 0xA2, 0x40, 0x6B, +0xFF, 0x6D, 0x8C, 0xEB, 0x08, 0x23, 0x63, 0xF3, +0x9C, 0xA2, 0xA0, 0xF0, 0x5D, 0xA2, 0x86, 0x34, +0x53, 0xE4, 0xFD, 0x4C, 0x11, 0x10, 0x63, 0xF3, +0x9C, 0xA2, 0xA0, 0xF0, 0x7D, 0xA2, 0x86, 0x34, +0x66, 0x33, 0x73, 0xE4, 0x63, 0xF3, 0x73, 0xA2, +0x63, 0xF3, 0x52, 0xA2, 0x49, 0xE3, 0x4F, 0xEA, +0x03, 0x6B, 0x78, 0xEA, 0x12, 0xEA, 0x51, 0xE4, +0xAC, 0xEC, 0x00, 0x18, 0x2A, 0x25, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF3, +0x91, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x63, 0xF3, 0x71, 0xC2, 0x63, 0xF3, 0x7D, 0xA2, +0x02, 0x73, 0x02, 0x61, 0x01, 0x4B, 0x03, 0x10, +0x05, 0x6C, 0x8E, 0xEB, 0x02, 0x2B, 0x63, 0xF3, +0x7D, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x03, 0x6C, 0x00, 0x18, +0x2A, 0x25, 0x02, 0x6C, 0x00, 0x18, 0xDF, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0xC0, 0xF0, 0x80, 0xA2, 0x40, 0x6B, 0x8C, 0xEB, +0x15, 0x23, 0x63, 0xF3, 0x91, 0xA2, 0x07, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x04, 0x6C, 0x8D, 0xEB, +0x63, 0xF3, 0x71, 0xC2, 0x00, 0x6B, 0x63, 0xF3, +0x73, 0xC2, 0xC3, 0xF2, 0x6C, 0xA2, 0x14, 0x23, +0x63, 0xF3, 0x70, 0xA2, 0x6D, 0xEC, 0x63, 0xF3, +0x90, 0xC2, 0x0E, 0x10, 0xA0, 0xF0, 0x9F, 0xA2, +0x10, 0x6B, 0x8C, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, +0x02, 0x23, 0x05, 0x6B, 0x03, 0x10, 0x63, 0xF3, +0x7D, 0xA2, 0x01, 0x4B, 0x63, 0xF3, 0x7D, 0xC2, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x6C, +0x00, 0x18, 0x48, 0x21, 0x00, 0x6C, 0x00, 0x18, +0x60, 0x21, 0x00, 0x6C, 0x00, 0x18, 0x81, 0x21, +0x00, 0x6C, 0x00, 0x18, 0xDF, 0x23, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF7, 0x6F, 0xA2, 0x80, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0x97, 0x24, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x70, 0xA2, +0x02, 0x6A, 0x6C, 0xEA, 0x10, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF6, 0x54, 0x9A, 0x02, 0xF0, +0x00, 0x6C, 0x60, 0x9A, 0x8D, 0xEB, 0x60, 0xDA, +0x30, 0xF0, 0x20, 0x6C, 0x60, 0x9A, 0xC0, 0xF3, +0x90, 0x9C, 0x8D, 0xEB, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, 0x63, 0xF3, +0x5D, 0xA0, 0x03, 0x72, 0x09, 0x61, 0xA0, 0xF0, +0x9E, 0xA0, 0x00, 0x18, 0x2A, 0x25, 0x63, 0xF3, +0x5D, 0xA0, 0x01, 0x4A, 0x63, 0xF3, 0x5D, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x63, 0xF3, 0x91, 0xA2, 0x01, 0x6B, 0x8D, 0xEB, +0x63, 0xF3, 0x71, 0xC2, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0xA0, 0xF0, 0xBC, 0xA2, 0x01, 0x6B, 0xFF, 0x6C, +0xAC, 0xEB, 0x3B, 0x23, 0x63, 0xF3, 0xD0, 0xA2, +0x00, 0x6B, 0x63, 0xF3, 0x7D, 0xC2, 0x10, 0x6B, +0xCC, 0xEB, 0x8C, 0xEB, 0x32, 0x2B, 0x80, 0x6F, +0xEB, 0xEF, 0xCD, 0xEF, 0x04, 0x6E, 0xAC, 0xEE, +0x8C, 0xEE, 0x63, 0xF3, 0xF0, 0xC2, 0x1B, 0x26, +0x83, 0xF3, 0x8D, 0xA2, 0x83, 0xF3, 0xAE, 0xA2, +0xA3, 0xEC, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0x83, 0xF3, 0xA4, 0x9A, 0x01, 0xF1, 0x80, 0x9C, +0xA0, 0xDC, 0x83, 0xF3, 0x6D, 0xC2, 0x17, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, 0xA8, 0x9A, +0x01, 0xF1, 0x60, 0x9B, 0x01, 0x4C, 0xA0, 0xDB, +0x83, 0xF3, 0x8D, 0xC2, 0x0C, 0x10, 0x83, 0xF3, +0x6C, 0xA2, 0x09, 0x23, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF3, 0x88, 0x9A, 0x01, 0xF1, 0x60, 0x9B, +0x80, 0xDB, 0x83, 0xF3, 0xCC, 0xC2, 0x00, 0x18, +0x9C, 0x25, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xA2, 0xF6, 0x10, 0x48, +0x63, 0xF3, 0x91, 0xA0, 0x03, 0x6D, 0xFF, 0x69, +0x86, 0x32, 0xAC, 0xEA, 0xFF, 0x4A, 0x02, 0x5A, +0x01, 0x6A, 0x52, 0x60, 0x63, 0xF3, 0x73, 0xA0, +0xB8, 0xEB, 0x12, 0xED, 0x0A, 0x55, 0x02, 0x60, +0x04, 0x5B, 0x19, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF3, 0x91, 0xA2, +0x07, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, +0x9F, 0xA2, 0x63, 0xF3, 0x71, 0xC2, 0x10, 0x6B, +0x8C, 0xEB, 0x02, 0x23, 0x05, 0x6B, 0x03, 0x10, +0x63, 0xF3, 0x7D, 0xA2, 0x01, 0x4B, 0x63, 0xF3, +0x7D, 0xC2, 0x01, 0x6A, 0x31, 0x10, 0x63, 0xF3, +0xD0, 0xA0, 0x04, 0x6D, 0xCC, 0xED, 0x2C, 0xED, +0x1B, 0x25, 0x03, 0x6B, 0x6B, 0xEB, 0x05, 0x6D, +0xCC, 0xEB, 0xAB, 0xED, 0xAC, 0xEB, 0x63, 0xF3, +0x70, 0xC0, 0x07, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0xA0, 0xF0, 0x9F, 0xA0, 0x63, 0xF3, 0x71, 0xC0, +0x10, 0x6B, 0x8C, 0xEB, 0x2C, 0xEB, 0x02, 0x23, +0x05, 0x6B, 0x03, 0x10, 0x63, 0xF3, 0x7D, 0xA0, +0x01, 0x4B, 0x63, 0xF3, 0x7D, 0xC0, 0x10, 0x10, +0x01, 0x4B, 0x03, 0x6C, 0x63, 0xF3, 0x73, 0xC0, +0x00, 0x18, 0x2A, 0x25, 0xC0, 0xF0, 0x58, 0xA0, +0x07, 0x6E, 0x04, 0x6C, 0x4C, 0xEE, 0x00, 0x6D, +0x2C, 0xEE, 0x00, 0x18, 0x29, 0x0B, 0x00, 0x6A, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0xA0, 0xF0, 0xBC, 0xA2, 0x01, 0x6B, 0xFF, 0x6C, +0xAC, 0xEB, 0x37, 0x23, 0x63, 0xF3, 0xB0, 0xA2, +0x10, 0x6B, 0xAC, 0xEB, 0x8C, 0xEB, 0x03, 0x23, +0x00, 0x18, 0x73, 0x23, 0x2E, 0x10, 0xC0, 0xF0, +0x60, 0xA2, 0x40, 0x6A, 0x6C, 0xEA, 0x8C, 0xEA, +0x03, 0x22, 0x00, 0x18, 0xEA, 0x25, 0x25, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x63, 0xF3, 0x7D, 0xA2, 0x06, 0x5B, 0x1D, 0x60, +0x63, 0xF3, 0x9D, 0x82, 0x01, 0x6B, 0x64, 0xEC, +0x24, 0x6C, 0x6C, 0xEC, 0x0A, 0x2C, 0x12, 0x6C, +0x6C, 0xEC, 0x04, 0x2C, 0x09, 0x6C, 0x6C, 0xEC, +0x07, 0x2C, 0x0F, 0x10, 0x00, 0x18, 0x80, 0x25, +0x0C, 0x10, 0x00, 0x18, 0x45, 0x25, 0x09, 0x10, +0x63, 0xF3, 0x90, 0xA2, 0x80, 0x6B, 0x6B, 0xEB, +0x8D, 0xEB, 0x63, 0xF3, 0x70, 0xC2, 0x00, 0x18, +0x9C, 0x25, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF7, 0x6C, 0x9B, +0xFF, 0x6A, 0x8C, 0xEA, 0x60, 0x9B, 0x80, 0xF1, +0x01, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0x30, 0xF0, +0x20, 0x6C, 0x60, 0xF6, 0x90, 0x9C, 0x01, 0x72, +0x80, 0x9C, 0x04, 0x60, 0x02, 0x72, 0x80, 0x6A, +0x03, 0x60, 0x03, 0x10, 0xFF, 0x6A, 0x01, 0x4A, +0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF7, +0x4C, 0x9A, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x01, 0xF1, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF6, 0x70, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF1, 0x6C, 0x9B, +0x50, 0x6A, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x01, 0xF1, 0x70, 0x9B, 0x40, 0xC3, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, +0x4C, 0xED, 0x04, 0x67, 0x01, 0x75, 0x86, 0x67, +0x4C, 0xE8, 0x4C, 0xEC, 0x03, 0x60, 0x03, 0x75, +0x0A, 0x6B, 0x01, 0x61, 0x09, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF7, 0x40, 0x9A, 0x0F, 0x6F, +0xAC, 0xEF, 0x70, 0x33, 0xED, 0xEB, 0x60, 0xC2, +0x00, 0x18, 0x42, 0x26, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF7, 0x48, 0x9A, 0x24, 0x58, 0x60, 0xA2, +0x7F, 0x6A, 0x6C, 0xEA, 0x05, 0x61, 0x80, 0x6B, +0x6B, 0xEB, 0x6D, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF7, 0x68, 0x9B, +0x40, 0xC3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x01, 0xF1, +0x94, 0x9C, 0xFF, 0x6B, 0xC2, 0x67, 0x6C, 0xEE, +0xC0, 0xC4, 0x30, 0xF0, 0x20, 0x6C, 0x01, 0xF1, +0xD8, 0x9C, 0x03, 0x6F, 0x42, 0x32, 0x80, 0xA6, +0xEC, 0xEA, 0xF9, 0x4F, 0x6C, 0xEC, 0xEC, 0xEC, +0x8D, 0xEA, 0x6C, 0xEA, 0x40, 0xC6, 0x30, 0xF0, +0x20, 0x6A, 0x01, 0xF1, 0x7C, 0x9A, 0x7F, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x00, 0x6A, +0x03, 0x10, 0x01, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF1, 0x7C, 0x9B, +0x60, 0xA3, 0x00, 0xF6, 0x60, 0x33, 0x00, 0xF6, +0x63, 0x33, 0x00, 0x53, 0x03, 0x61, 0x64, 0x72, +0xF0, 0x61, 0x0A, 0x10, 0x64, 0x5A, 0x08, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x21, 0xF1, 0x40, 0x9A, +0x40, 0xA2, 0x40, 0xC5, 0x01, 0x6A, 0x20, 0xE8, +0x00, 0x6A, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, +0x07, 0x6B, 0x8C, 0xEB, 0x4C, 0xED, 0x8E, 0x34, +0x42, 0xF4, 0x10, 0x4C, 0x36, 0x25, 0x1F, 0xF7, +0x00, 0x6D, 0x8C, 0xED, 0x02, 0xF0, 0x00, 0x75, +0x01, 0x60, 0x21, 0x2D, 0x1F, 0xF7, 0x00, 0x6A, +0x8C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, +0xBC, 0x9A, 0xB5, 0xE4, 0x80, 0xA5, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, 0xBC, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0x40, 0x9A, +0xB5, 0xE4, 0x51, 0xE4, 0x80, 0xA4, 0x00, 0xF6, +0x80, 0x34, 0x01, 0x6A, 0x00, 0xF6, 0x83, 0x34, +0x44, 0xEB, 0x8D, 0xEA, 0x36, 0x10, 0x30, 0xF0, +0x20, 0x6D, 0xC0, 0xF4, 0xA0, 0x9D, 0x01, 0x6E, +0xC4, 0xEB, 0xB1, 0xE4, 0xA0, 0xA4, 0x00, 0xF6, +0xA0, 0x35, 0x00, 0xF6, 0xA3, 0x35, 0xCD, 0xED, +0x3A, 0x10, 0x1F, 0xF7, 0x00, 0x6D, 0x8C, 0xED, +0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x25, 0x2D, +0x1F, 0xF7, 0x00, 0x6A, 0x8C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x07, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF4, 0xBC, 0x9A, 0xB5, 0xE4, +0x80, 0xA5, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF4, 0xBC, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0x40, 0x9A, 0xB5, 0xE4, 0x51, 0xE4, +0x80, 0xA4, 0x01, 0x6A, 0x00, 0xF6, 0x80, 0x34, +0x44, 0xEB, 0x00, 0xF6, 0x83, 0x34, 0x4F, 0xEA, +0x8C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x40, 0xC5, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6D, 0xC0, 0xF4, +0xA0, 0x9D, 0x01, 0x6E, 0xC4, 0xEB, 0xB1, 0xE4, +0xA0, 0xA4, 0xCF, 0xEE, 0x00, 0xF6, 0xA0, 0x35, +0x00, 0xF6, 0xA3, 0x35, 0xCC, 0xED, 0x4C, 0xED, +0xA0, 0xC4, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, +0x01, 0x74, 0xAC, 0xEA, 0x09, 0x60, 0x03, 0x24, +0x02, 0x74, 0x0B, 0x60, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF6, 0x64, 0x9B, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x21, 0xF1, 0x64, 0x9B, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x21, 0xF1, +0x68, 0x9B, 0x40, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6B, 0x6C, 0xEC, 0x01, 0x74, 0x0A, 0x60, +0x04, 0x24, 0x02, 0x74, 0x00, 0x6A, 0x13, 0x61, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, +0x44, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x21, 0xF1, 0x44, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x21, 0xF1, +0x48, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x20, 0xE8, +0xFF, 0x6B, 0x6C, 0xEC, 0x01, 0x74, 0x0A, 0x60, +0x04, 0x24, 0x02, 0x74, 0x00, 0x6A, 0x13, 0x61, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x21, 0xF1, +0x4C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x21, 0xF1, 0x50, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x21, 0xF1, +0x54, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, 0x48, 0xA2, +0x01, 0x6B, 0x4C, 0xEB, 0x00, 0x6A, 0x07, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0x21, 0xF1, 0x4C, 0x9A, +0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, 0x5E, 0x32, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, 0x98, 0xA2, +0x02, 0x6B, 0x8C, 0xEB, 0x0B, 0x23, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF6, 0x84, 0x9B, 0xBF, 0x6B, +0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x00, 0x6B, +0xC3, 0xF2, 0x79, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x80, 0xF0, 0x98, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, +0x03, 0x23, 0x01, 0x6B, 0xC3, 0xF2, 0x79, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x80, 0xF0, 0x58, 0xA3, +0x01, 0x6C, 0x4C, 0xEC, 0x01, 0x6A, 0x06, 0x24, +0xC3, 0xF2, 0x59, 0xA3, 0x02, 0x6B, 0x6E, 0xEA, +0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x65, +0x00, 0x6A, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, 0x98, 0xA2, +0x01, 0x6B, 0x8C, 0xEB, 0x06, 0x23, 0xC3, 0xF2, +0x98, 0xA2, 0x02, 0x6B, 0x8D, 0xEB, 0xC3, 0xF2, +0x78, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6D, +0xA2, 0xF6, 0x10, 0x4D, 0x80, 0xF0, 0xD8, 0xA5, +0x02, 0x6B, 0xFF, 0x6A, 0xCC, 0xEB, 0x4C, 0xEB, +0x4C, 0xEC, 0x02, 0x2B, 0xC3, 0xF2, 0x9A, 0xC5, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xA2, 0xF6, 0x10, 0x48, 0x80, 0xF0, 0x79, 0xA0, +0x7F, 0x6A, 0xFF, 0x69, 0x6C, 0xEA, 0x02, 0x72, +0x15, 0x60, 0x80, 0xF0, 0x7A, 0xA0, 0x10, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x2C, 0xEA, 0x0E, 0x22, +0x00, 0x18, 0x5B, 0x08, 0x0B, 0x2A, 0x80, 0xF0, +0x78, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x05, 0x22, 0x00, 0x6D, 0x0C, 0x6C, 0xC5, 0x67, +0x00, 0x18, 0x29, 0x0B, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, 0x98, 0xA2, +0x01, 0x6B, 0x6C, 0xEC, 0x15, 0x24, 0x80, 0xF0, +0xB8, 0xA2, 0xC3, 0xF2, 0x9A, 0xA2, 0xBA, 0x32, +0x6C, 0xEA, 0x0C, 0x22, 0x02, 0x74, 0x0E, 0x60, +0xAC, 0xEB, 0xFF, 0x6A, 0x4C, 0xEB, 0x08, 0x23, +0x02, 0x6C, 0x01, 0x6D, 0x00, 0x6E, 0x00, 0x18, +0x29, 0x0B, 0x02, 0x10, 0x02, 0x74, 0x02, 0x60, +0x00, 0x18, 0x31, 0x27, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x24, 0x67, 0x80, 0xF0, +0x98, 0xA3, 0x01, 0x6D, 0xFF, 0x6A, 0xAC, 0xEC, +0x4C, 0xEC, 0x4C, 0xE9, 0x00, 0x68, 0x05, 0x24, +0x80, 0xF0, 0x18, 0xA3, 0x1A, 0x30, 0xAC, 0xE8, +0x4C, 0xE8, 0x00, 0x18, 0xFC, 0x26, 0x01, 0x72, +0x10, 0x61, 0x0F, 0x28, 0x30, 0xF0, 0x20, 0x6A, +0x42, 0xF7, 0x48, 0xA2, 0x01, 0x6B, 0x4C, 0xEB, +0x01, 0x6A, 0x08, 0x23, 0xA2, 0x67, 0x91, 0x67, +0x00, 0x6E, 0x00, 0x18, 0x29, 0x0B, 0x01, 0x6A, +0x01, 0x10, 0x00, 0x6A, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, 0x78, 0xA2, +0x01, 0x6C, 0xA4, 0x67, 0x6C, 0xED, 0x0C, 0x25, +0xC3, 0xF2, 0xB8, 0xA2, 0xAD, 0xEC, 0xC3, 0xF2, +0x98, 0xC2, 0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x6D, 0x03, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6C, 0x6F, 0x6D, +0x25, 0x6E, 0x00, 0x18, 0x49, 0x1D, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, +0x98, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, 0x0B, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, 0x84, 0x9B, +0xBF, 0x6B, 0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, +0x04, 0x6B, 0xC3, 0xF2, 0x79, 0xC2, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x6D, 0xFF, 0x6C, 0xC5, 0x67, 0x00, 0x18, +0x49, 0x1D, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x80, 0xF0, 0x98, 0xA2, 0x02, 0x6B, +0x8C, 0xEB, 0x03, 0x23, 0x01, 0x6B, 0xC3, 0xF2, +0x79, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x8F, 0x27, +0x00, 0x18, 0x05, 0x27, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6C, 0xA4, 0x67, 0x22, 0x6E, 0x00, 0x18, +0x49, 0x1D, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x10, 0x4B, 0x80, 0xF0, 0x98, 0xA3, 0x02, 0x6A, +0xFF, 0x6D, 0x8C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF6, 0x84, 0x9A, 0x40, 0x6E, +0x40, 0xA4, 0xAC, 0xEA, 0xCD, 0xEA, 0xAC, 0xEA, +0x40, 0xC4, 0x03, 0x6A, 0xC3, 0xF2, 0x59, 0xC3, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x6D, 0xFF, 0x6C, +0xC5, 0x67, 0x00, 0x18, 0x49, 0x1D, 0x30, 0xF0, +0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, 0x80, 0xF0, +0x98, 0xA3, 0x02, 0x6A, 0xFF, 0x6D, 0x8C, 0xEA, +0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, +0x84, 0x9A, 0x40, 0x6E, 0x40, 0xA4, 0xAC, 0xEA, +0xCD, 0xEA, 0xAC, 0xEA, 0x40, 0xC4, 0x01, 0x6A, +0xC3, 0xF2, 0x59, 0xC3, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xB0, 0x27, 0x00, 0x18, 0x05, 0x27, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6C, 0xA4, 0x67, +0x21, 0x6E, 0x00, 0x18, 0x49, 0x1D, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, +0x98, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, 0x03, 0x23, +0x03, 0x6B, 0xC3, 0xF2, 0x79, 0xC2, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x10, 0x27, 0x00, 0x18, 0xC6, 0x27, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6C, 0x6F, 0x6D, +0x1F, 0x6E, 0x00, 0x18, 0x49, 0x1D, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, +0x98, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, 0x0B, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, 0x84, 0x9B, +0xBF, 0x6B, 0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, +0x04, 0x6B, 0xC3, 0xF2, 0x79, 0xC2, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x10, 0x27, 0x00, 0x18, 0xD6, 0x27, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xF4, 0x20, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x80, 0xF0, 0x98, 0xA2, 0x02, 0x6B, 0x6C, 0xEC, +0x02, 0x24, 0xC3, 0xF2, 0x79, 0xC2, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, 0x68, 0xA2, +0x02, 0x6A, 0xFF, 0x6C, 0x6C, 0xEA, 0x0A, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, 0x64, 0x9A, +0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0xFF, 0x6C, 0xA4, 0x67, +0x23, 0x6E, 0x00, 0x18, 0x49, 0x1D, 0x00, 0x18, +0xF4, 0x20, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x80, 0xF0, 0x98, 0xA2, 0x02, 0x6B, +0x6C, 0xEC, 0x02, 0x24, 0xC3, 0xF2, 0x79, 0xC2, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6C, 0xA4, 0x67, +0x20, 0x6E, 0x00, 0x18, 0x49, 0x1D, 0x00, 0x18, +0xF4, 0x20, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x80, 0xF0, 0x98, 0xA2, 0x02, 0x6B, +0x6C, 0xEC, 0x02, 0x24, 0xC3, 0xF2, 0x79, 0xC2, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x10, 0x27, +0x00, 0x18, 0x08, 0x28, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xAD, 0x20, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, 0x98, 0xA2, +0x02, 0x6B, 0x8C, 0xEB, 0x03, 0x23, 0x03, 0x6B, +0xC3, 0xF2, 0x79, 0xC2, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xAD, 0x20, 0xFF, 0x6C, 0x6F, 0x6D, +0x24, 0x6E, 0x00, 0x18, 0x49, 0x1D, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, +0x98, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, 0x0B, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, 0x84, 0x9B, +0xBF, 0x6B, 0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, +0x04, 0x6B, 0xC3, 0xF2, 0x79, 0xC2, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xAD, 0x20, 0x00, 0x6D, 0xFF, 0x6C, +0xC5, 0x67, 0x00, 0x18, 0x49, 0x1D, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x80, 0xF0, +0x98, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, 0x03, 0x23, +0x01, 0x6B, 0xC3, 0xF2, 0x79, 0xC2, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x33, 0x28, 0x00, 0x18, 0x05, 0x27, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6D, +0xA2, 0xF6, 0x10, 0x4D, 0x80, 0xF0, 0xD8, 0xA5, +0x02, 0x6B, 0xFF, 0x6A, 0xCC, 0xEB, 0x4C, 0xEB, +0x4C, 0xEC, 0x00, 0x6A, 0x02, 0x23, 0xC3, 0xF2, +0x59, 0xA5, 0x8A, 0xEA, 0x69, 0x60, 0x05, 0x5C, +0x67, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x88, 0x34, +0x80, 0xF3, 0x18, 0x4B, 0x8D, 0xE3, 0x60, 0x9B, +0x00, 0xEB, 0x04, 0x72, 0x03, 0x61, 0x00, 0x18, +0xC1, 0x27, 0x5A, 0x10, 0x02, 0x72, 0x03, 0x61, +0x00, 0x18, 0x3F, 0x28, 0x55, 0x10, 0x03, 0x72, +0x03, 0x61, 0x00, 0x18, 0x9A, 0x27, 0x50, 0x10, +0x01, 0x72, 0x4E, 0x61, 0x00, 0x18, 0x05, 0x27, +0x4B, 0x10, 0x04, 0x72, 0x03, 0x61, 0x00, 0x18, +0xB0, 0x27, 0x46, 0x10, 0x02, 0x72, 0x03, 0x61, +0x00, 0x18, 0x33, 0x28, 0x41, 0x10, 0x03, 0x72, +0x03, 0x61, 0x00, 0x18, 0x8F, 0x27, 0x3C, 0x10, +0x3B, 0x2A, 0x00, 0x18, 0x10, 0x27, 0x38, 0x10, +0x04, 0x72, 0x03, 0x61, 0x00, 0x18, 0xF3, 0x27, +0x33, 0x10, 0x01, 0x72, 0x03, 0x61, 0x00, 0x18, +0x08, 0x28, 0x2E, 0x10, 0x03, 0x72, 0x03, 0x61, +0x00, 0x18, 0xEA, 0x27, 0x29, 0x10, 0x28, 0x2A, +0x00, 0x18, 0x14, 0x28, 0x25, 0x10, 0x04, 0x72, +0x03, 0x61, 0x00, 0x18, 0x9F, 0x27, 0x20, 0x10, +0x01, 0x72, 0x03, 0x61, 0x00, 0x18, 0xC6, 0x27, +0x1B, 0x10, 0x02, 0x72, 0x03, 0x61, 0x00, 0x18, +0x19, 0x28, 0x16, 0x10, 0x15, 0x2A, 0x00, 0x18, +0xD1, 0x27, 0x12, 0x10, 0x03, 0x72, 0x03, 0x61, +0x00, 0x18, 0x80, 0x27, 0x0D, 0x10, 0x01, 0x72, +0x03, 0x61, 0x00, 0x18, 0xD6, 0x27, 0x08, 0x10, +0x02, 0x72, 0x03, 0x61, 0x00, 0x18, 0x23, 0x28, +0x03, 0x10, 0x02, 0x2A, 0x00, 0x18, 0xE5, 0x27, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6C, +0x86, 0xF1, 0x0C, 0x4C, 0x00, 0x6D, 0x18, 0x6E, +0x00, 0x18, 0xB6, 0x11, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xC3, 0xF2, 0x7C, 0xA2, +0x03, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0xC3, 0xF2, +0xB8, 0xA2, 0xC3, 0xF2, 0x7C, 0xC2, 0x02, 0x6B, +0x6B, 0xEB, 0xAC, 0xEB, 0x8C, 0xEB, 0xC3, 0xF2, +0x78, 0xC2, 0x00, 0x6B, 0xC3, 0xF2, 0x79, 0xC2, +0x0C, 0x6B, 0xC3, 0xF2, 0x7A, 0xC2, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFF, 0x63, 0x01, 0xD0, +0xFF, 0x6A, 0x4C, 0xED, 0x4C, 0xEE, 0x4C, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, 0x48, 0x9A, +0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEC, 0x00, 0xAA, +0xE1, 0xF7, 0x1F, 0x6A, 0x0C, 0xEA, 0x30, 0xF0, +0x20, 0x68, 0xA0, 0xF4, 0x04, 0x98, 0x51, 0xE4, +0x6C, 0xEC, 0x80, 0xC8, 0x9C, 0x32, 0x30, 0xF0, +0x20, 0x6C, 0x21, 0xF1, 0x98, 0x9C, 0x30, 0xF0, +0x20, 0x68, 0x21, 0xF1, 0x1C, 0x98, 0x91, 0xE2, +0x80, 0xAC, 0x01, 0xE2, 0x00, 0x98, 0x6C, 0xEC, +0x05, 0x25, 0x10, 0xF0, 0x00, 0x6D, 0xAB, 0xED, +0xAD, 0xEC, 0x6C, 0xEC, 0xD8, 0xF0, 0x00, 0x6B, +0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF1, +0x98, 0x9C, 0x91, 0xE2, 0x60, 0xCC, 0x30, 0xF0, +0x20, 0x6B, 0x41, 0xF1, 0x60, 0x9B, 0x6D, 0xE2, +0x80, 0xA3, 0x01, 0x6B, 0x8C, 0xEB, 0x05, 0x23, +0x03, 0xF7, 0x01, 0x6B, 0x6B, 0xEB, 0x0C, 0xEB, +0x06, 0x10, 0x1F, 0xF7, 0x01, 0x6B, 0x6B, 0xEB, +0x0C, 0xEB, 0xE0, 0x37, 0xED, 0xEB, 0x30, 0xF0, +0x20, 0x6C, 0x41, 0xF1, 0x84, 0x9C, 0x80, 0xF4, +0xC0, 0x36, 0xFF, 0x6D, 0x6C, 0xEC, 0x30, 0xF0, +0x20, 0x6B, 0x41, 0xF0, 0x64, 0x9B, 0x6D, 0xEE, +0x30, 0xF0, 0x20, 0x6B, 0x21, 0xF1, 0x7C, 0x9B, +0x8D, 0xEE, 0x6D, 0xE2, 0xC0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x62, 0xF7, 0x8C, 0xA3, 0x01, 0x6B, +0x8C, 0xEB, 0x13, 0x23, 0x30, 0xF0, 0x20, 0x6B, +0x41, 0xF1, 0x88, 0x9B, 0x80, 0x6E, 0xCB, 0xEE, +0x91, 0xE2, 0x60, 0xA4, 0xAC, 0xEB, 0xCD, 0xEB, +0xAC, 0xEB, 0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, +0x41, 0xF1, 0x6C, 0x9B, 0x00, 0x6C, 0x80, 0xC3, +0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x41, 0xF1, +0x88, 0x9B, 0x7F, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, +0xAC, 0xEB, 0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF4, 0x94, 0x9B, 0xF7, 0x6B, 0x91, 0xE2, +0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x01, 0x90, +0x01, 0x63, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x6B, +0xAC, 0xEB, 0x05, 0xD3, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF4, 0x68, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, +0x80, 0xAB, 0xE1, 0xF7, 0x1F, 0x6B, 0x00, 0x68, +0x8C, 0xEB, 0x69, 0xE2, 0x30, 0xF0, 0x20, 0x6B, +0x21, 0xF0, 0x84, 0x9B, 0x5C, 0x32, 0x91, 0xE2, +0x04, 0xD4, 0x18, 0x10, 0x04, 0x92, 0x20, 0x9A, +0x07, 0x28, 0x01, 0x6D, 0x83, 0xF1, 0x18, 0x6C, +0xAB, 0xED, 0xD1, 0x67, 0x00, 0x18, 0xB9, 0x1A, +0x01, 0x6D, 0x83, 0xF1, 0x18, 0x6C, 0xAB, 0xED, +0xD1, 0x67, 0x00, 0x18, 0xB9, 0x1A, 0x04, 0x93, +0x01, 0x48, 0xFF, 0xF7, 0x1F, 0x6A, 0x04, 0x4B, +0x4C, 0xE8, 0x04, 0xD3, 0x05, 0x92, 0x43, 0xE8, +0xE5, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x05, 0x6B, 0x83, 0xF4, +0x60, 0xDA, 0x09, 0x6B, 0x63, 0xF4, 0x7C, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF5, 0xBC, 0x9A, 0x03, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x40, 0xC5, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF5, 0x80, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF4, 0xC8, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF5, 0x44, 0x9A, 0xC0, 0xF5, 0x68, 0x9B, +0x02, 0x6F, 0xC0, 0xDC, 0x60, 0xDA, 0xE0, 0xC5, +0x01, 0x6F, 0xC0, 0xDC, 0x60, 0xDA, 0xE0, 0xC5, +0x30, 0xF0, 0x20, 0x6F, 0xC0, 0xF5, 0xEC, 0x9F, +0xE0, 0xDC, 0x00, 0x6F, 0x60, 0xDA, 0xE0, 0xC5, +0xC0, 0xDC, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF5, 0x74, 0x9B, +0xFF, 0x6A, 0x4C, 0xEC, 0x94, 0x34, 0x71, 0xE4, +0x60, 0xA4, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0xE5, 0x63, 0x35, 0x62, 0x34, 0xD1, 0x33, 0xD0, +0x30, 0xF0, 0x20, 0x6D, 0x08, 0x04, 0xE0, 0xF1, +0x18, 0x4D, 0x54, 0x6E, 0x00, 0x18, 0x4C, 0x11, +0x30, 0xF0, 0x20, 0x6D, 0x1D, 0x04, 0xA0, 0xF1, +0x04, 0x4D, 0x54, 0x6E, 0x00, 0x18, 0x4C, 0x11, +0x30, 0xF0, 0x20, 0x6D, 0x80, 0xF1, 0x14, 0x4D, +0x04, 0x04, 0x0F, 0x6E, 0x00, 0x18, 0x4C, 0x11, +0x00, 0x6D, 0x2A, 0x6A, 0x58, 0xED, 0x30, 0xF0, +0x20, 0x6B, 0x46, 0xF6, 0x08, 0x4B, 0x04, 0x6F, +0x31, 0x69, 0x2B, 0xE9, 0x00, 0x6E, 0x01, 0x4D, +0x12, 0xEA, 0x49, 0xE3, 0x49, 0x6B, 0x1B, 0x65, +0x60, 0xC2, 0x2C, 0x6B, 0x91, 0xA2, 0x63, 0xC2, +0x09, 0x6B, 0x64, 0xC2, 0x0D, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x04, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, +0x92, 0xA2, 0x16, 0xA2, 0xC1, 0xC2, 0x8D, 0xEF, +0x02, 0x6C, 0x8B, 0xEC, 0x0C, 0xEC, 0x1E, 0xA2, +0x96, 0xC2, 0x03, 0x6C, 0x8B, 0xEC, 0x0C, 0xEC, +0x41, 0x68, 0x0B, 0xE8, 0xF8, 0x65, 0x0C, 0xEC, +0x14, 0xA2, 0xDD, 0xC2, 0xD5, 0xC2, 0x2C, 0xE8, +0x3F, 0x67, 0x2C, 0xEF, 0xF2, 0xC2, 0xEE, 0xA2, +0xC9, 0xC2, 0xD9, 0xC2, 0xFF, 0x65, 0x08, 0x6F, +0xEB, 0xEF, 0x3F, 0x67, 0xEC, 0xE9, 0x21, 0x6E, +0x2E, 0xC2, 0xCB, 0xEE, 0x33, 0xA2, 0xCC, 0xEC, +0x9E, 0xC2, 0xD0, 0xA2, 0x98, 0x67, 0x87, 0xC2, +0xF9, 0x65, 0x80, 0x6C, 0x8B, 0xEC, 0x3F, 0x67, +0x2C, 0xEF, 0x8D, 0xEE, 0xF3, 0xC2, 0xD0, 0xC2, +0x10, 0x6F, 0x31, 0x6E, 0xCB, 0xEE, 0xEB, 0xEF, +0xEC, 0xE8, 0xCC, 0xEB, 0x10, 0x6E, 0x14, 0xC2, +0xCD, 0xEB, 0x40, 0x68, 0x0D, 0xEB, 0x8D, 0xEB, +0x71, 0xC2, 0xFF, 0x6A, 0x4C, 0xED, 0x80, 0x75, +0xA4, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF5, +0x58, 0x9A, 0x03, 0x6B, 0xF8, 0x67, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF7, 0xEF, 0xC2, +0x00, 0x18, 0xA5, 0x2D, 0x00, 0x18, 0x01, 0x29, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF5, 0x5C, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x1D, 0x05, 0x00, 0xC2, +0x49, 0xF3, 0x0C, 0x4C, 0x54, 0x6E, 0x00, 0x18, +0xBB, 0x11, 0x30, 0xF0, 0x20, 0x6C, 0x08, 0x05, +0xA9, 0xF3, 0x00, 0x4C, 0x54, 0x6E, 0x00, 0x18, +0xBB, 0x11, 0x30, 0xF0, 0x20, 0x6C, 0x49, 0xF5, +0x04, 0x4C, 0x04, 0x05, 0x0F, 0x6E, 0x00, 0x18, +0xBB, 0x11, 0x35, 0x97, 0x34, 0x91, 0x33, 0x90, +0x1B, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x1F, 0xF7, 0x00, 0x6A, +0xAC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x26, 0x67, +0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF4, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF4, 0x40, 0x9A, 0x55, 0xE5, +0x00, 0x9D, 0x91, 0x67, 0x00, 0x18, 0xEE, 0x10, +0x2C, 0xE8, 0x06, 0xEA, 0x50, 0x67, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x46, 0x67, 0x01, 0x4A, 0x05, 0x67, 0x0C, 0xD6, +0x27, 0x67, 0x1C, 0x22, 0x1F, 0xF7, 0x00, 0x6A, +0xAC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, +0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0x40, 0x9A, 0x49, 0xE0, 0x40, 0x9A, +0x0C, 0x94, 0x04, 0xD2, 0x00, 0x18, 0xEE, 0x10, +0x0C, 0x93, 0x24, 0xEA, 0x6F, 0xEA, 0x04, 0x93, +0x6C, 0xEA, 0x4D, 0xE9, 0x1F, 0xF7, 0x00, 0x6A, +0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, +0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0x40, 0x9A, 0x41, 0xE0, 0x20, 0xD8, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x06, 0xD4, 0x06, 0x04, 0x09, 0xD7, 0x07, 0xD5, +0x08, 0xD6, 0x00, 0x18, 0x32, 0x13, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF5, +0x70, 0x9B, 0x54, 0x34, 0x01, 0x4A, 0x71, 0xE4, +0xA0, 0xA4, 0xF8, 0x6B, 0xAC, 0xEB, 0x60, 0xC4, +0xFF, 0x6B, 0x6C, 0xEA, 0x80, 0x72, 0xF1, 0x61, +0x00, 0x18, 0xFB, 0x28, 0x00, 0x18, 0x1C, 0x29, +0x00, 0x18, 0x18, 0x3C, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0xD1, +0x08, 0xD0, 0x0A, 0xD4, 0x44, 0x67, 0x82, 0x10, +0x25, 0x73, 0x04, 0x60, 0x60, 0xA5, 0x60, 0xC2, +0x01, 0x4A, 0x7B, 0x10, 0x61, 0x85, 0x62, 0x73, +0x7D, 0x67, 0x20, 0x61, 0x62, 0x85, 0x78, 0x73, +0x03, 0x60, 0x58, 0x73, 0x7D, 0x67, 0x1A, 0x61, +0x82, 0x85, 0x60, 0xA6, 0x78, 0x6F, 0xEE, 0xEC, +0x30, 0xF0, 0x20, 0x6F, 0x72, 0x30, 0x41, 0xF1, +0x10, 0x4F, 0xE1, 0xE0, 0x00, 0xA0, 0x01, 0x5C, +0x98, 0x67, 0x94, 0x34, 0x8D, 0xE8, 0x3D, 0x67, +0x00, 0xC1, 0x0F, 0x68, 0x6C, 0xE8, 0xFD, 0xE0, +0x60, 0xA7, 0x02, 0x4D, 0x8D, 0xEB, 0x61, 0xC1, +0x00, 0xF0, 0x02, 0x03, 0x81, 0x85, 0x77, 0x74, +0x26, 0x61, 0x82, 0x85, 0x78, 0x74, 0x02, 0x60, +0x58, 0x74, 0x21, 0x61, 0x80, 0xAE, 0x06, 0xD3, +0x07, 0xD4, 0x82, 0x85, 0x78, 0x74, 0xF8, 0x67, +0x01, 0x5F, 0x18, 0x67, 0x14, 0x30, 0x18, 0x65, +0x0C, 0x6C, 0x07, 0x97, 0x0F, 0x68, 0x30, 0xF0, +0x20, 0x69, 0xE7, 0xEC, 0x0C, 0xEF, 0x41, 0xF1, +0x10, 0x49, 0x3D, 0xE7, 0xE0, 0xA7, 0x06, 0x90, +0x38, 0x67, 0x2D, 0xEF, 0xFC, 0x4C, 0xE0, 0xC0, +0x01, 0x48, 0xE4, 0x44, 0x06, 0xD0, 0xED, 0x2F, +0x04, 0x4B, 0x02, 0x4D, 0x25, 0x10, 0x81, 0x85, +0x78, 0x74, 0x02, 0x60, 0x58, 0x74, 0x20, 0x61, +0x81, 0x85, 0x20, 0x9E, 0x06, 0xD3, 0x78, 0x74, +0x98, 0x67, 0x01, 0x5C, 0xF8, 0x67, 0xF4, 0x37, +0x07, 0xD1, 0x1F, 0x65, 0x1C, 0x6C, 0x07, 0x97, +0x0F, 0x68, 0x30, 0xF0, 0x20, 0x69, 0xE6, 0xEC, +0x0C, 0xEF, 0x41, 0xF1, 0x10, 0x49, 0x3D, 0xE7, +0xE0, 0xA7, 0x06, 0x91, 0x18, 0x67, 0x0D, 0xEF, +0xFC, 0x4C, 0xE0, 0xC1, 0x01, 0x49, 0xE4, 0x44, +0x06, 0xD1, 0xED, 0x2F, 0x08, 0x4B, 0x01, 0x4D, +0x9D, 0x67, 0x04, 0x10, 0xE0, 0xA4, 0x01, 0x4C, +0xE0, 0xC2, 0x01, 0x4A, 0x63, 0xEC, 0xFA, 0x61, +0x04, 0x4E, 0x01, 0x4D, 0x60, 0x85, 0x7F, 0xF7, +0x1B, 0x2B, 0x0A, 0x94, 0x01, 0x24, 0x60, 0xC2, +0x0A, 0x97, 0x09, 0x91, 0x08, 0x90, 0xEB, 0xE2, +0x05, 0x63, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD0, 0x60, 0xA4, 0x41, 0xA4, 0x82, 0xA4, +0x00, 0xF0, 0x12, 0x06, 0x00, 0xF0, 0x1E, 0x07, +0x00, 0x6D, 0xA0, 0xC6, 0x01, 0x4E, 0xA6, 0x67, +0xEE, 0xED, 0xFA, 0x2D, 0x01, 0x6E, 0xE4, 0x67, +0xCC, 0xEF, 0x1D, 0x27, 0x81, 0x5B, 0x1B, 0x61, +0x81, 0x5A, 0x19, 0x61, 0x5D, 0x67, 0xD2, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0xA8, 0xF6, 0x6C, 0x9A, 0x9D, 0x67, 0xDD, 0x67, +0x73, 0xC4, 0x62, 0x34, 0x00, 0xF6, 0x62, 0x33, +0x76, 0xC6, 0x0D, 0x6B, 0x94, 0xC6, 0x70, 0xC6, +0x82, 0x34, 0x05, 0x6B, 0x95, 0xC6, 0x6F, 0xCE, +0xA8, 0xF6, 0xAC, 0xDA, 0xA0, 0x10, 0x02, 0x6E, +0xA4, 0x67, 0xCC, 0xED, 0x44, 0x25, 0xFD, 0x67, +0x81, 0x5B, 0xD2, 0xC7, 0x18, 0x60, 0xD4, 0xF3, +0xA0, 0x43, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF3, +0x10, 0x4B, 0xA2, 0xF6, 0x10, 0x4C, 0x64, 0x33, +0xA4, 0x35, 0x95, 0xE5, 0x91, 0xE3, 0x68, 0xAC, +0xC8, 0xAD, 0x75, 0xC7, 0x62, 0x33, 0xD3, 0xC7, +0x76, 0xC7, 0xC2, 0x36, 0x00, 0x6B, 0x68, 0xCD, +0xD4, 0xC7, 0x68, 0xCC, 0x04, 0x10, 0x16, 0x6B, +0x6B, 0xEB, 0x1D, 0x67, 0x73, 0xC0, 0x81, 0x5A, +0x19, 0x60, 0xD4, 0xF3, 0x80, 0x42, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF3, 0x10, 0x4A, 0xA2, 0xF6, +0x10, 0x4B, 0x44, 0x32, 0x84, 0x34, 0x71, 0xE4, +0x6D, 0xE2, 0x48, 0xAB, 0xA8, 0xAC, 0xDD, 0x67, +0x59, 0xC6, 0x42, 0x32, 0xB7, 0xC6, 0x5A, 0xC6, +0xA2, 0x35, 0x00, 0x6A, 0x48, 0xCC, 0xB8, 0xC6, +0x48, 0xCB, 0x04, 0x10, 0x16, 0x6A, 0x4B, 0xEA, +0xFD, 0x67, 0x57, 0xC7, 0x0D, 0x6A, 0x1D, 0x67, +0x50, 0xC0, 0x09, 0x6A, 0x52, 0x10, 0x53, 0x2C, +0x81, 0x5B, 0x22, 0x60, 0xBD, 0x67, 0x72, 0xC5, +0x54, 0xF2, 0xC0, 0x43, 0x30, 0xF0, 0x20, 0x6D, +0xA2, 0xF6, 0x10, 0x4D, 0xC4, 0x36, 0xB9, 0xE6, +0xE6, 0xAE, 0x1D, 0x67, 0xF3, 0xC0, 0xE2, 0x37, +0xF4, 0xC0, 0xD4, 0xF2, 0xE0, 0x43, 0xE4, 0x37, +0xB5, 0xE7, 0xE6, 0xAD, 0x74, 0x33, 0xF5, 0xC0, +0xE2, 0x37, 0xF6, 0xC0, 0x30, 0xF0, 0x20, 0x6F, +0x40, 0xF5, 0xF4, 0x9F, 0xED, 0xE3, 0x60, 0xA3, +0x86, 0xCE, 0x86, 0xCD, 0x77, 0xC0, 0x02, 0x10, +0x9D, 0x67, 0x72, 0xC4, 0x81, 0x5A, 0x23, 0x60, +0x54, 0xF2, 0x80, 0x42, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x84, 0x34, 0x71, 0xE4, +0xBD, 0x67, 0x58, 0xC5, 0xA6, 0xAC, 0xDD, 0x67, +0xB9, 0xC6, 0xA2, 0x35, 0xBA, 0xC6, 0xD4, 0xF2, +0xA0, 0x42, 0xA4, 0x35, 0x6D, 0xE5, 0xA6, 0xAB, +0x54, 0x32, 0xBB, 0xC6, 0xA2, 0x35, 0xBC, 0xC6, +0x30, 0xF0, 0x20, 0x6D, 0x40, 0xF5, 0xB4, 0x9D, +0xA9, 0xE2, 0x40, 0xA2, 0x5D, 0xC6, 0x00, 0x6A, +0x46, 0xCC, 0x46, 0xCB, 0x02, 0x10, 0xFD, 0x67, +0x58, 0xC7, 0x04, 0x6A, 0x1D, 0x67, 0x50, 0xC0, +0x0C, 0x6A, 0x4F, 0xC8, 0x04, 0x10, 0x7D, 0x67, +0x04, 0x6A, 0x50, 0xC3, 0xAF, 0xCB, 0x04, 0x04, +0x00, 0x18, 0x32, 0x13, 0x09, 0x97, 0x08, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xF8, 0x63, 0x0F, 0x62, +0x0E, 0xD1, 0x0D, 0xD0, 0x00, 0x6A, 0x10, 0xD4, +0x01, 0x68, 0x62, 0x67, 0xA0, 0xA4, 0x0E, 0x25, +0xFF, 0x6D, 0x01, 0x4B, 0xAC, 0xEB, 0x01, 0x4A, +0x0B, 0x73, 0xAC, 0xEA, 0x03, 0x61, 0x01, 0x48, +0xAC, 0xE8, 0x00, 0x6B, 0x37, 0x72, 0x01, 0x4C, +0xF1, 0x61, 0x37, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0xA6, 0xF6, 0x84, 0xA3, +0x0F, 0x5C, 0x01, 0x4C, 0x01, 0x61, 0x00, 0x6C, +0xA6, 0xF6, 0x84, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x49, 0xF5, 0x74, 0xA3, 0x0B, 0x6D, 0x2F, 0x40, +0x70, 0x33, 0x0A, 0xD3, 0x0A, 0x94, 0xFF, 0x6B, +0x6C, 0xE9, 0x6C, 0xEC, 0x0A, 0xD4, 0x01, 0x6C, +0x13, 0xE4, 0xB8, 0xEC, 0x12, 0xEC, 0x91, 0xE2, +0x6C, 0xEC, 0x09, 0xD4, 0x00, 0x6A, 0x01, 0x4C, +0x0B, 0xD4, 0x08, 0xD2, 0x3C, 0x10, 0x08, 0x94, +0x0B, 0x6B, 0x0A, 0x95, 0x78, 0xEC, 0x9D, 0x67, +0x12, 0xEB, 0x4C, 0xEB, 0x0F, 0x6A, 0x2C, 0xEA, +0xAD, 0xEA, 0x08, 0x95, 0x52, 0xC4, 0x4F, 0x40, +0xAE, 0xEA, 0x07, 0x22, 0x10, 0x92, 0x00, 0xF0, +0x1E, 0x04, 0x6D, 0xE2, 0x00, 0xF0, 0x13, 0x02, +0x0F, 0x10, 0x10, 0x94, 0x09, 0x95, 0x00, 0xF0, +0x13, 0x02, 0x6D, 0xE4, 0xB1, 0xE2, 0x04, 0x10, +0xA0, 0xA3, 0x01, 0x4B, 0xA0, 0xC2, 0x01, 0x4A, +0x8A, 0xEA, 0xFA, 0x61, 0x0B, 0x92, 0x07, 0x10, +0xA0, 0xA3, 0x01, 0x4B, 0xA0, 0xC2, 0x01, 0x4A, +0x8A, 0xEA, 0xFA, 0x61, 0x0C, 0x6A, 0x9D, 0x67, +0x00, 0x6B, 0x4F, 0xCC, 0x70, 0xC4, 0x05, 0x95, +0x04, 0x94, 0x06, 0x96, 0x07, 0x97, 0xFF, 0x49, +0x00, 0x18, 0xA1, 0x29, 0x08, 0x95, 0xFF, 0x6A, +0x4C, 0xE9, 0x01, 0x4D, 0x08, 0xD5, 0x08, 0x93, +0xFF, 0x6A, 0x4C, 0xEB, 0x03, 0xEB, 0xBF, 0x61, +0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x40, 0xF5, 0x58, 0x9A, 0x49, 0xF5, +0x74, 0x9B, 0x07, 0xD5, 0x08, 0xD6, 0x6C, 0xEA, +0x00, 0xF1, 0x00, 0x72, 0x09, 0xD7, 0x06, 0xD4, +0x0C, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x06, 0x95, +0x6B, 0xF7, 0x10, 0x48, 0x90, 0x67, 0x07, 0x06, +0x00, 0x18, 0xB5, 0x29, 0x90, 0x67, 0x00, 0x18, +0x6B, 0x2A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x60, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0xA9, 0xF0, 0x7C, 0xC2, 0xA1, 0xA4, +0x03, 0x73, 0xA9, 0xF0, 0xBD, 0xC2, 0x1F, 0x61, +0x62, 0xA4, 0xA9, 0xF0, 0x79, 0xC2, 0x63, 0xA4, +0xA9, 0xF0, 0x7A, 0xC2, 0x64, 0xA4, 0x04, 0x6C, +0xA9, 0xF0, 0x7B, 0xC2, 0x63, 0xF4, 0x7C, 0x9A, +0x8C, 0xEB, 0x30, 0x23, 0x83, 0xF4, 0x60, 0x9A, +0x05, 0x5B, 0x2C, 0x61, 0xA9, 0xF0, 0xB9, 0xA2, +0xA9, 0xF0, 0xDA, 0xA2, 0xA9, 0xF0, 0xFB, 0xA2, +0x30, 0xF0, 0x20, 0x6C, 0x61, 0xF1, 0x04, 0x4C, +0x00, 0x18, 0xAD, 0x2A, 0x1F, 0x10, 0x02, 0x73, +0x1D, 0x61, 0x62, 0xA4, 0xA9, 0xF0, 0x79, 0xC2, +0x63, 0xA4, 0x04, 0x6C, 0xA9, 0xF0, 0x7A, 0xC2, +0x01, 0x6B, 0x6B, 0xEB, 0xA9, 0xF0, 0x7B, 0xC2, +0x63, 0xF4, 0x7C, 0x9A, 0x8C, 0xEB, 0x0E, 0x23, +0x83, 0xF4, 0x60, 0x9A, 0x05, 0x5B, 0x0A, 0x61, +0xA9, 0xF0, 0xB9, 0xA2, 0xA9, 0xF0, 0xDA, 0xA2, +0x30, 0xF0, 0x20, 0x6C, 0x81, 0xF1, 0x14, 0x4C, +0x00, 0x18, 0xAD, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x05, 0x97, 0xA2, 0xF6, 0x10, 0x4A, 0x01, 0x6B, +0xA9, 0xF0, 0x7F, 0xC2, 0x00, 0x6B, 0xA9, 0xF0, +0x7E, 0xC2, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x00, 0xA4, 0x2A, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x78, 0xE8, 0x46, 0xF6, 0x08, 0x4A, 0xA2, 0xA4, +0x08, 0x6E, 0xAC, 0xEE, 0xBE, 0x35, 0xBC, 0x35, +0x12, 0xEB, 0x6D, 0xE2, 0xF1, 0xA3, 0x7F, 0x6A, +0xEC, 0xEA, 0xAD, 0xEA, 0x51, 0xC3, 0xE2, 0xA4, +0x40, 0x6D, 0xAC, 0xEF, 0x80, 0x4D, 0xFF, 0x4D, +0x4C, 0xED, 0xED, 0xED, 0xB1, 0xC3, 0xE1, 0xA4, +0x1F, 0x6A, 0xEC, 0xEA, 0x44, 0xC3, 0x22, 0xA4, +0x04, 0x6A, 0x03, 0x6F, 0x4B, 0xEA, 0xEC, 0xE9, +0xAC, 0xEA, 0x2D, 0xEA, 0x51, 0xC3, 0x08, 0x2E, +0xA2, 0xA4, 0xAC, 0xEF, 0x0D, 0x6D, 0xAB, 0xED, +0xE8, 0x37, 0x4C, 0xED, 0xED, 0xED, 0xB1, 0xC3, +0xA1, 0xA4, 0xD2, 0xA3, 0x05, 0x6A, 0xBE, 0x35, +0x4B, 0xEA, 0xA8, 0x35, 0xCC, 0xEA, 0xAD, 0xEA, +0x52, 0xC3, 0x41, 0xA4, 0x30, 0xF0, 0x20, 0x6D, +0xA2, 0xF6, 0x10, 0x4D, 0x60, 0x6E, 0x86, 0xF4, +0xFB, 0xA5, 0xCC, 0xEA, 0x56, 0x36, 0x04, 0x6A, +0x4B, 0xEA, 0xEC, 0xEA, 0xCD, 0xEA, 0x86, 0xF4, +0x5B, 0xC5, 0xA2, 0xA4, 0xD1, 0xA3, 0x30, 0x6A, +0x4C, 0xED, 0x9F, 0x4A, 0xCC, 0xEA, 0xAD, 0xEA, +0x51, 0xC3, 0x30, 0xF0, 0x20, 0x6E, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF5, 0x5C, 0x9A, 0x60, 0xF5, +0xC0, 0x9E, 0x0C, 0x35, 0x49, 0xE5, 0x03, 0x4C, +0xD5, 0xE5, 0xC0, 0xA4, 0x01, 0x4C, 0xC0, 0xC2, +0x01, 0x4A, 0xAA, 0xEA, 0xFA, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0xA2, 0xF6, 0x10, 0x4C, 0x63, 0xF4, +0xBC, 0x9C, 0x01, 0x6A, 0x4C, 0xED, 0x1F, 0x25, +0x83, 0xF4, 0x80, 0x9C, 0x05, 0x5C, 0x1B, 0x61, +0xD1, 0xA3, 0x84, 0xA3, 0xA6, 0x67, 0x04, 0xD4, +0x03, 0x6C, 0x8C, 0xED, 0x05, 0xD5, 0xCA, 0x35, +0x8C, 0xED, 0x06, 0xD5, 0x72, 0xA3, 0xDA, 0x37, +0xB0, 0x67, 0x6A, 0x33, 0x4C, 0xEB, 0x07, 0xD3, +0xD2, 0x33, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0xA1, 0xF1, 0x18, 0x4C, 0xDE, 0x36, 0x4C, 0xEF, +0x08, 0xD3, 0x00, 0x18, 0xAD, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x11, 0x23, +0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, 0x0D, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x5C, 0x9A, +0x0C, 0x30, 0x30, 0xF0, 0x20, 0x6C, 0x41, 0xE0, +0xA0, 0x98, 0xE1, 0xF1, 0x1C, 0x4C, 0x00, 0x18, +0xAD, 0x2A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xF6, 0x63, 0x13, 0x62, +0x12, 0xD1, 0x11, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0x6A, 0x8C, 0xEA, 0x40, 0xF1, 0x8C, 0x9B, +0x40, 0xF1, 0x0C, 0x4B, 0x01, 0x72, 0x04, 0xD4, +0x81, 0x9B, 0x68, 0xA3, 0x05, 0xD4, 0x9D, 0x67, +0x78, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF1, +0x80, 0x9B, 0x40, 0xF1, 0x00, 0x4B, 0x07, 0xD4, +0x81, 0x9B, 0x68, 0xA3, 0x08, 0xD4, 0x9D, 0x67, +0x20, 0xF0, 0x64, 0xC4, 0x20, 0x61, 0x00, 0x68, +0x5D, 0x67, 0x0D, 0xE2, 0x5C, 0xA3, 0x0B, 0x5A, +0x01, 0x61, 0x0A, 0x6A, 0xFF, 0x6B, 0x6C, 0xEA, +0x02, 0x4A, 0x7D, 0x67, 0x5B, 0xCB, 0x0E, 0x6A, +0x20, 0xF0, 0x48, 0xC3, 0x01, 0x6A, 0x20, 0xF0, +0x4A, 0xC3, 0x09, 0xE3, 0x50, 0xA2, 0x0B, 0x95, +0x0C, 0x96, 0x20, 0xF0, 0x4B, 0xC3, 0x0A, 0x94, +0x0D, 0x97, 0x01, 0x48, 0x00, 0x18, 0xA1, 0x29, +0x09, 0x70, 0xE2, 0x61, 0x71, 0x10, 0x08, 0x72, +0x37, 0x61, 0x20, 0xF0, 0x05, 0x04, 0x07, 0x00, +0x04, 0x01, 0x0E, 0xD4, 0x40, 0xA0, 0x0B, 0x5A, +0x01, 0x61, 0x0A, 0x6A, 0xFF, 0x6B, 0x4C, 0xEB, +0x9D, 0x67, 0x42, 0x43, 0x5B, 0xCC, 0x0E, 0x6A, +0x20, 0xF0, 0x48, 0xC4, 0x08, 0x6A, 0x20, 0xF0, +0x4A, 0xC4, 0x40, 0xA1, 0x20, 0xF0, 0x4B, 0xC4, +0x00, 0x6A, 0x0E, 0x10, 0x9D, 0x67, 0x55, 0xE4, +0xC0, 0xA1, 0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF6, +0x10, 0x4C, 0x91, 0xE2, 0xD1, 0xE4, 0x86, 0xF4, +0x9C, 0xA4, 0x01, 0x4A, 0x20, 0xF0, 0x8C, 0xC5, +0xFF, 0x6C, 0x4C, 0xEC, 0x63, 0xEC, 0xEE, 0x61, +0x0A, 0x94, 0x0B, 0x95, 0x0C, 0x96, 0x0D, 0x97, +0x01, 0x48, 0x01, 0x49, 0x00, 0x18, 0xA1, 0x29, +0x0E, 0x92, 0x4A, 0xE8, 0xCF, 0x61, 0x38, 0x10, +0x09, 0x72, 0x36, 0x61, 0x20, 0xF0, 0x05, 0x03, +0x07, 0x00, 0x04, 0x01, 0x0F, 0xD3, 0x40, 0xA0, +0x0B, 0x5A, 0x01, 0x61, 0x0A, 0x6A, 0xFF, 0x6B, +0x4C, 0xEB, 0x9D, 0x67, 0x42, 0x43, 0x5B, 0xCC, +0x0E, 0x6A, 0x20, 0xF0, 0x48, 0xC4, 0x09, 0x6A, +0x20, 0xF0, 0x4A, 0xC4, 0x40, 0xA1, 0x20, 0xF0, +0x4B, 0xC4, 0x00, 0x6A, 0x0E, 0x10, 0x9D, 0x67, +0x55, 0xE4, 0xC0, 0xA1, 0x30, 0xF0, 0x20, 0x6C, +0xA2, 0xF6, 0x10, 0x4C, 0x91, 0xE2, 0xD1, 0xE4, +0xE6, 0xF4, 0x90, 0xA4, 0x01, 0x4A, 0x20, 0xF0, +0x8C, 0xC5, 0xFF, 0x6C, 0x4C, 0xEC, 0x63, 0xEC, +0xEE, 0x61, 0x0A, 0x94, 0x0B, 0x95, 0x0C, 0x96, +0x0D, 0x97, 0x01, 0x48, 0x01, 0x49, 0x00, 0x18, +0xA1, 0x29, 0x0F, 0x92, 0x4A, 0xE8, 0xCF, 0x61, +0x13, 0x97, 0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x44, 0x67, 0x65, 0xA2, +0x02, 0x6D, 0x81, 0xA4, 0xAC, 0xEB, 0x03, 0x23, +0x00, 0x18, 0x43, 0x2B, 0x3D, 0x10, 0x01, 0x74, +0x22, 0xA2, 0x04, 0xA2, 0x43, 0xA2, 0x07, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x01, 0xF2, 0x08, 0x4C, +0x00, 0x18, 0x6B, 0x2A, 0x31, 0x10, 0x10, 0x30, +0x08, 0x74, 0x4D, 0xE8, 0x0E, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x01, 0xF2, 0x14, 0x4C, 0x00, 0x18, +0x6B, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x45, 0xE1, 0x86, 0xF4, 0x1C, 0xC1, +0x1F, 0x10, 0x09, 0x74, 0x0E, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x21, 0xF2, 0x14, 0x4C, 0x00, 0x18, +0x6B, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x45, 0xE1, 0xE6, 0xF4, 0x10, 0xC1, +0x0F, 0x10, 0x0A, 0x74, 0x0D, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF5, 0xE4, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x41, 0xF2, 0x04, 0x4C, 0xF9, 0x6D, +0x28, 0xF3, 0x01, 0x6E, 0x00, 0x18, 0xAD, 0x2A, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x2A, 0x6B, 0x78, 0xEC, +0x30, 0xF0, 0x20, 0x6E, 0x46, 0xF6, 0x08, 0x4E, +0xAC, 0xEA, 0x05, 0x6D, 0x12, 0xEB, 0x6D, 0xE6, +0xDD, 0x67, 0xAF, 0xCE, 0x0F, 0x6D, 0xB0, 0xC6, +0x92, 0xC6, 0x53, 0xC6, 0x20, 0xF0, 0x44, 0xA3, +0x07, 0x97, 0x04, 0x94, 0x54, 0xC6, 0x20, 0xF0, +0x45, 0xA3, 0x55, 0xC6, 0x20, 0xF0, 0x46, 0xA3, +0x56, 0xC6, 0x05, 0x95, 0x06, 0x96, 0x00, 0x18, +0xA1, 0x29, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0x14, 0x92, 0x15, 0x93, 0x16, 0x90, 0x0A, 0xD2, +0xFF, 0x6A, 0x1A, 0x65, 0xAC, 0xEA, 0x08, 0xD2, +0x58, 0x67, 0xCC, 0xEA, 0x17, 0x91, 0x1A, 0x65, +0x0A, 0x92, 0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEF, +0xAC, 0xEA, 0xAC, 0xEB, 0xAC, 0xE8, 0xAC, 0xE9, +0x30, 0xF0, 0x20, 0x6D, 0xA2, 0xF6, 0x10, 0x4D, +0x63, 0xF4, 0xDC, 0x9D, 0x0A, 0xD2, 0x8C, 0xEE, +0x36, 0x26, 0x83, 0xF4, 0x80, 0x9D, 0x05, 0x6A, +0x4E, 0xEC, 0x31, 0x2C, 0x30, 0xF0, 0x20, 0x6C, +0x40, 0xF5, 0x98, 0x9C, 0xA6, 0xF6, 0xA4, 0x9D, +0x7F, 0x4A, 0x7C, 0x4A, 0xAC, 0xEC, 0x4E, 0xEC, +0x26, 0x2C, 0x9D, 0x67, 0x47, 0x44, 0x19, 0x4A, +0x40, 0xA2, 0xF4, 0xC4, 0xE2, 0x37, 0x52, 0xC4, +0x58, 0x67, 0x53, 0xC4, 0x47, 0x44, 0x21, 0x4A, +0x40, 0xA2, 0xF5, 0xC4, 0x56, 0xC4, 0x0A, 0x94, +0x82, 0x32, 0x9D, 0x67, 0x57, 0xC4, 0x02, 0x6A, +0x4B, 0xEA, 0x78, 0xC4, 0x1A, 0xC4, 0x3C, 0xC4, +0x50, 0xC4, 0x62, 0x33, 0x02, 0x30, 0x22, 0x31, +0x0C, 0x6A, 0x79, 0xC4, 0x1B, 0xC4, 0x3D, 0xC4, +0x4F, 0xCC, 0x05, 0x95, 0x04, 0x94, 0x06, 0x96, +0x07, 0x97, 0x00, 0x18, 0xA1, 0x29, 0x0F, 0x97, +0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x40, 0xA4, 0x70, 0x69, 0x30, 0xF0, 0x20, 0x68, +0x06, 0xD2, 0x81, 0xA4, 0xA2, 0xF6, 0x10, 0x48, +0x05, 0xD4, 0x05, 0x92, 0x9E, 0x33, 0x07, 0xD3, +0x8C, 0xE9, 0x7D, 0x67, 0x03, 0x6C, 0x8C, 0xEA, +0x87, 0x43, 0x11, 0x4C, 0x60, 0xA4, 0x32, 0x31, +0x04, 0xD2, 0x9D, 0x67, 0x09, 0xE1, 0x83, 0xF7, +0x6C, 0xC2, 0x67, 0x44, 0x09, 0x4B, 0x80, 0xA3, +0x83, 0xF7, 0x8E, 0xC2, 0x30, 0xF0, 0x20, 0x6C, +0x61, 0xF2, 0x10, 0x4C, 0x00, 0x18, 0xAD, 0x2A, +0x07, 0x92, 0x21, 0x22, 0x83, 0xF7, 0x72, 0xA0, +0x01, 0x6A, 0x44, 0xE9, 0x6D, 0xEA, 0x83, 0xF7, +0x52, 0xC0, 0x63, 0xF4, 0x5C, 0x98, 0x10, 0x6B, +0x6C, 0xEA, 0x0D, 0x22, 0x83, 0xF4, 0x40, 0x98, +0x05, 0x5A, 0x09, 0x61, 0x04, 0x96, 0x06, 0x97, +0x30, 0xF0, 0x20, 0x6C, 0x61, 0xF2, 0x1C, 0x4C, +0xB1, 0x67, 0x00, 0x18, 0xAD, 0x2A, 0x05, 0x93, +0x0C, 0x6D, 0x91, 0x67, 0x6C, 0xED, 0xAA, 0x35, +0x00, 0x18, 0xB1, 0x31, 0x23, 0x10, 0x83, 0xF7, +0x72, 0xA0, 0x01, 0x6A, 0x44, 0xE9, 0x4F, 0xEA, +0x6C, 0xEA, 0x83, 0xF7, 0x52, 0xC0, 0x63, 0xF4, +0x5C, 0x98, 0x10, 0x6B, 0x6C, 0xEA, 0x0D, 0x22, +0x83, 0xF4, 0x40, 0x98, 0x05, 0x5A, 0x09, 0x61, +0x04, 0x96, 0x06, 0x97, 0x30, 0xF0, 0x20, 0x6C, +0x81, 0xF2, 0x10, 0x4C, 0xB1, 0x67, 0x00, 0x18, +0xAD, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x45, 0xE1, 0x01, 0x6A, 0x4B, 0xEA, +0x83, 0xF7, 0x4C, 0xC1, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x40, 0xA4, 0x2A, 0x69, 0x04, 0x67, 0x38, 0xEA, +0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF6, +0x08, 0x4A, 0x20, 0x6B, 0x12, 0xE9, 0x25, 0xE2, +0x42, 0xA4, 0xBE, 0xA1, 0x5B, 0xC1, 0x83, 0xA4, +0x21, 0x6A, 0x4B, 0xEA, 0x6C, 0xEC, 0xAC, 0xEA, +0x8D, 0xEA, 0x5E, 0xC1, 0xA3, 0xA0, 0x01, 0x6C, +0x8C, 0xED, 0xFD, 0x4C, 0x4C, 0xEC, 0xAD, 0xEC, +0x9E, 0xC1, 0xA3, 0xA0, 0x02, 0x6A, 0x4C, 0xED, +0xFB, 0x4A, 0x8C, 0xEA, 0xAD, 0xEA, 0x5E, 0xC1, +0xA3, 0xA0, 0x40, 0x6C, 0x8C, 0xED, 0x80, 0x4C, +0xFF, 0x4C, 0x4C, 0xEC, 0xAD, 0xEC, 0x9E, 0xC1, +0xA3, 0xA0, 0x7F, 0x6A, 0x8C, 0xEA, 0xBE, 0x35, +0xBC, 0x35, 0xAD, 0xEA, 0x5E, 0xC1, 0x83, 0xA0, +0x6C, 0xEA, 0x08, 0xD4, 0x84, 0xA0, 0x20, 0xF0, +0x87, 0xC1, 0x85, 0xA0, 0x07, 0xD4, 0x86, 0xA0, +0x09, 0xD4, 0x28, 0x22, 0x06, 0x94, 0x00, 0x18, +0x37, 0x3C, 0xD1, 0xA1, 0x03, 0x6A, 0x06, 0x94, +0xCA, 0x36, 0xBB, 0xA1, 0x4C, 0xEE, 0xFF, 0x6B, +0x6C, 0xEE, 0x00, 0x18, 0xC2, 0x3A, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x12, 0x23, +0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, 0x0E, 0x61, +0xF1, 0xA1, 0x03, 0x6A, 0x06, 0x95, 0xEA, 0x37, +0xDB, 0xA1, 0x4C, 0xEF, 0x30, 0xF0, 0x20, 0x6C, +0xFF, 0x6B, 0xA1, 0xF2, 0x08, 0x4C, 0x6C, 0xEF, +0x00, 0x18, 0xAD, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x10, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x0C, 0x61, 0xDB, 0xA1, +0xE3, 0xA0, 0x20, 0xF0, 0x47, 0xA1, 0x06, 0x95, +0x30, 0xF0, 0x20, 0x6C, 0xC1, 0xF2, 0x08, 0x4C, +0x04, 0xD2, 0x00, 0x18, 0xAD, 0x2A, 0x08, 0x94, +0x08, 0x6A, 0x8C, 0xEA, 0x1F, 0x22, 0x09, 0x92, +0x03, 0x68, 0x01, 0x6C, 0x4C, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, +0x7C, 0x9A, 0x8C, 0xEB, 0x0D, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x09, 0x61, 0x06, 0x95, +0x07, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0xE1, 0xF2, +0x00, 0x4C, 0xF0, 0x67, 0x00, 0x18, 0xAD, 0x2A, +0x06, 0x94, 0x07, 0x95, 0x00, 0x6E, 0xF0, 0x67, +0x00, 0x18, 0x03, 0x35, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x03, 0xA4, +0x44, 0xA4, 0xC0, 0xA4, 0x00, 0x30, 0x00, 0x30, +0x00, 0xF6, 0x40, 0x32, 0xA5, 0xA4, 0xE6, 0xA4, +0x0D, 0xEA, 0x01, 0xA4, 0x82, 0xA4, 0x30, 0xF0, +0x20, 0x6B, 0x0D, 0xEA, 0x80, 0x34, 0xA2, 0xF6, +0x10, 0x4B, 0x8D, 0xEA, 0x63, 0xF4, 0x5C, 0xDB, +0xA6, 0xF6, 0xC5, 0xC3, 0x0A, 0x26, 0x01, 0x6C, +0x4C, 0xEC, 0x07, 0x24, 0xA6, 0xF6, 0xA6, 0xC3, +0xA6, 0xF6, 0xE7, 0xC3, 0x02, 0x25, 0x00, 0x18, +0xB4, 0x3B, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0x67, 0x80, 0xA4, +0x60, 0xF5, 0x60, 0x9B, 0x8C, 0x35, 0x6D, 0xE5, +0xA3, 0xA2, 0xA0, 0xC3, 0x44, 0xA2, 0x01, 0x4B, +0x40, 0xC3, 0x00, 0x18, 0xE3, 0x3A, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0xC0, 0x4C, +0x4C, 0xEC, 0x0C, 0x5C, 0x05, 0x67, 0x2A, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x00, 0xF1, +0x10, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x85, 0x67, 0x00, 0x18, 0xEC, 0x2A, 0x1E, 0x10, +0x85, 0x67, 0x00, 0x18, 0x42, 0x2C, 0x1A, 0x10, +0x85, 0x67, 0x00, 0x18, 0xAD, 0x2C, 0x16, 0x10, +0x85, 0x67, 0x00, 0x18, 0x9F, 0x2B, 0x12, 0x10, +0x85, 0x67, 0x00, 0x18, 0xBF, 0x2A, 0x0E, 0x10, +0x85, 0x67, 0x00, 0x18, 0x98, 0x2C, 0x0A, 0x10, +0x85, 0x67, 0x00, 0x18, 0x08, 0x2C, 0x90, 0x67, +0x00, 0x18, 0xFF, 0x29, 0x03, 0x10, 0x85, 0x67, +0x00, 0x18, 0xFF, 0x1D, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFF, 0x6B, 0x8C, 0xEB, +0x20, 0x5B, 0x00, 0x6A, 0x02, 0x60, 0x01, 0x6A, +0x44, 0xEB, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, +0xE0, 0x4C, 0x8C, 0xEA, 0x20, 0x5A, 0x00, 0x6A, +0x02, 0x60, 0x01, 0x6A, 0x44, 0xEC, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xEC, 0x68, 0x44, 0xC8, 0x4B, +0x4C, 0xEB, 0x20, 0x5B, 0x00, 0x6A, 0x02, 0x60, +0x01, 0x6A, 0x44, 0xEC, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x0C, 0xEC, 0x00, 0x18, 0xD3, 0x2C, 0x0F, 0x6B, +0x4C, 0xEB, 0x43, 0x67, 0x0C, 0xEA, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x0C, 0xEC, 0x00, 0x18, 0xD3, 0x2C, 0x10, 0x6B, +0x6B, 0xEB, 0x4C, 0xEB, 0x43, 0x67, 0x0C, 0xEA, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x90, 0x67, 0x00, 0x18, 0xD3, 0x2C, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF5, 0x88, 0x9B, +0x01, 0x6B, 0x4C, 0xEC, 0x0A, 0x2C, 0x90, 0x67, +0x00, 0x18, 0xD7, 0x2C, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF5, 0x6C, 0x9B, 0x4C, 0xEB, 0x01, 0x23, +0x01, 0x6B, 0x05, 0x97, 0x04, 0x90, 0xFF, 0x6A, +0x6C, 0xEA, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x90, 0x67, 0x00, 0x18, 0xD3, 0x2C, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF5, 0x90, 0x9B, +0x01, 0x6B, 0x4C, 0xEC, 0x0A, 0x2C, 0x90, 0x67, +0x00, 0x18, 0xD7, 0x2C, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF5, 0x74, 0x9B, 0x4C, 0xEB, 0x01, 0x23, +0x01, 0x6B, 0x05, 0x97, 0x04, 0x90, 0xFF, 0x6A, +0x6C, 0xEA, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x90, 0x67, 0x00, 0x18, 0xD3, 0x2C, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF5, 0x78, 0x9B, +0x4C, 0xEB, 0x0D, 0x2B, 0x90, 0x67, 0x00, 0x18, +0xD7, 0x2C, 0x0F, 0x6B, 0x4C, 0xEB, 0x07, 0x2B, +0x90, 0x67, 0x00, 0x18, 0xDC, 0x2C, 0xE0, 0xF3, +0x1F, 0x6B, 0x4C, 0xEB, 0x01, 0x23, 0x01, 0x6B, +0x05, 0x97, 0x04, 0x90, 0xFF, 0x6A, 0x6C, 0xEA, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x90, 0x67, +0x00, 0x18, 0xD7, 0x2C, 0xE1, 0xF7, 0x10, 0x6C, +0x4C, 0xEC, 0x01, 0x6B, 0x0A, 0x2C, 0x90, 0x67, +0x00, 0x18, 0xDC, 0x2C, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF5, 0x7C, 0x9B, 0x4C, 0xEB, 0x01, 0x23, +0x01, 0x6B, 0x05, 0x97, 0x04, 0x90, 0xFF, 0x6A, +0x6C, 0xEA, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x90, 0x67, 0x00, 0x18, 0xD3, 0x2C, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x60, 0x9B, +0x4C, 0xEB, 0x10, 0x2B, 0x90, 0x67, 0x00, 0x18, +0xD7, 0x2C, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, +0x64, 0x9B, 0x4C, 0xEB, 0x07, 0x2B, 0x90, 0x67, +0x00, 0x18, 0xDC, 0x2C, 0x0C, 0xF0, 0x18, 0x6B, +0x4C, 0xEB, 0x01, 0x23, 0x01, 0x6B, 0x05, 0x97, +0x04, 0x90, 0xFF, 0x6A, 0x6C, 0xEA, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x90, 0x67, +0x00, 0x18, 0xD3, 0x2C, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF5, 0x68, 0x9B, 0x4C, 0xEB, 0x12, 0x2B, +0x90, 0x67, 0x00, 0x18, 0xD7, 0x2C, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF5, 0x6C, 0x9B, 0x4C, 0xEB, +0x09, 0x2B, 0x90, 0x67, 0x00, 0x18, 0xDC, 0x2C, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x70, 0x9B, +0x4C, 0xEB, 0x01, 0x23, 0x01, 0x6B, 0x05, 0x97, +0x04, 0x90, 0xFF, 0x6A, 0x6C, 0xEA, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x90, 0x67, +0x00, 0x18, 0xD7, 0x2C, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF5, 0x94, 0x9B, 0x01, 0x6B, 0x4C, 0xEC, +0x0A, 0x2C, 0x90, 0x67, 0x00, 0x18, 0xDC, 0x2C, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x78, 0x9B, +0x4C, 0xEB, 0x01, 0x23, 0x01, 0x6B, 0x05, 0x97, +0x04, 0x90, 0xFF, 0x6A, 0x6C, 0xEA, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD1, +0x00, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, +0x1C, 0x9B, 0x30, 0xF0, 0x20, 0x6F, 0xA2, 0xF6, +0x10, 0x4F, 0x60, 0xA0, 0xFF, 0x6A, 0x4C, 0xEC, +0x1B, 0x65, 0x38, 0x67, 0x7F, 0x6B, 0x2C, 0xEB, +0xA6, 0xF6, 0x69, 0xC7, 0x60, 0xA0, 0x80, 0x68, +0x0B, 0xE8, 0x4C, 0xEB, 0x0C, 0xEB, 0xA6, 0xF6, +0x6A, 0xC7, 0xA6, 0xF6, 0x69, 0xA7, 0x4C, 0xED, +0x4C, 0xEE, 0x6E, 0xEC, 0x53, 0x2C, 0x02, 0x5D, +0xF2, 0xF0, 0x60, 0x45, 0x09, 0x61, 0x8E, 0x45, +0x4C, 0xEC, 0x02, 0x5C, 0x44, 0x61, 0x08, 0x5D, +0x49, 0x60, 0xA6, 0xF6, 0x4A, 0xA7, 0x3F, 0x22, +0x1F, 0xF7, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF4, 0x5C, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0x40, 0x9A, +0x4D, 0xE3, 0xC0, 0xC3, 0x33, 0x10, 0x1F, 0x2A, +0x1F, 0xF7, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x07, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF4, 0x9C, 0x9A, 0x91, 0xE3, +0x40, 0xA4, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF4, 0x9C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0x40, 0x9A, 0x91, 0xE3, 0x4D, 0xE3, +0x40, 0xA3, 0xFF, 0x6B, 0x6C, 0xEA, 0x01, 0x4A, +0x6C, 0xEA, 0x40, 0xC4, 0x13, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF4, 0x40, 0x9A, 0xFF, 0x6C, +0x4D, 0xE3, 0x40, 0xA3, 0x8C, 0xEA, 0x01, 0x4A, +0x8C, 0xEA, 0x40, 0xC3, 0x07, 0x10, 0x1F, 0xF7, +0x00, 0x6A, 0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, +0xCE, 0x61, 0xCE, 0x17, 0x01, 0x91, 0x00, 0x90, +0x01, 0x63, 0x20, 0xE8, 0xFE, 0x63, 0x03, 0xD1, +0x02, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, +0x5C, 0x9A, 0xFF, 0x6B, 0x80, 0x6E, 0x80, 0xA2, +0xE0, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, +0xA0, 0x9A, 0xCB, 0xEE, 0x6C, 0xEC, 0x40, 0xA5, +0x00, 0xA5, 0x6C, 0xEA, 0xB0, 0x67, 0x6C, 0xED, +0x00, 0xD5, 0xA3, 0x67, 0xCC, 0xED, 0xEC, 0xED, +0xA0, 0xF2, 0x17, 0x25, 0xCC, 0xEA, 0x6C, 0xEA, +0x09, 0x22, 0xA0, 0xF4, 0x08, 0x6F, 0xA0, 0xF4, +0x04, 0x6D, 0x20, 0xF5, 0x00, 0x4E, 0x80, 0xF4, +0x1C, 0x6A, 0x08, 0x10, 0x80, 0xF4, 0x18, 0x6F, +0x80, 0xF4, 0x14, 0x6D, 0x80, 0xF4, 0x10, 0x6E, +0x80, 0xF4, 0x0C, 0x6A, 0x7F, 0x69, 0x2A, 0x68, +0x2C, 0xEC, 0x18, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x46, 0xF6, 0x08, 0x4B, 0x12, 0xE8, 0x0D, 0xE3, +0x00, 0x90, 0x2C, 0xE8, 0x01, 0x70, 0x80, 0xF1, +0x18, 0x60, 0x07, 0x20, 0x02, 0x70, 0xC0, 0xF0, +0x1A, 0x60, 0x03, 0x70, 0xE0, 0xF1, 0x19, 0x60, +0x8C, 0x12, 0x1F, 0xF7, 0x00, 0x68, 0x4C, 0xE8, +0x05, 0x28, 0x30, 0xF0, 0x20, 0x68, 0xA0, 0xF4, +0x1C, 0x98, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF4, 0x00, 0x98, 0x3B, 0xA3, 0x01, 0xE2, +0x20, 0xC0, 0x01, 0x42, 0x1F, 0xF7, 0x00, 0x69, +0x2C, 0xE8, 0x02, 0xF0, 0x00, 0x70, 0x01, 0x60, +0x09, 0x28, 0x30, 0xF0, 0x20, 0x68, 0xA0, 0xF5, +0x24, 0x98, 0x25, 0xE2, 0x00, 0xD1, 0x31, 0xA3, +0x19, 0x65, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x68, +0xA0, 0xF5, 0x28, 0x98, 0x25, 0xE2, 0x00, 0xD1, +0x11, 0xA3, 0x18, 0x65, 0x38, 0x67, 0x03, 0x68, +0x2C, 0xE8, 0x00, 0x91, 0x00, 0xC1, 0x02, 0x42, +0x1F, 0xF7, 0x00, 0x69, 0x2C, 0xE8, 0x02, 0xF0, +0x00, 0x70, 0x01, 0x60, 0x05, 0x28, 0x30, 0xF0, +0x20, 0x68, 0xA0, 0xF5, 0x0C, 0x98, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x68, 0xA0, 0xF5, 0x10, 0x98, +0x31, 0xA3, 0x01, 0xE2, 0x3E, 0x31, 0x20, 0xC0, +0x03, 0x42, 0x1F, 0xF7, 0x00, 0x69, 0x2C, 0xE8, +0x02, 0xF0, 0x00, 0x70, 0x01, 0x60, 0x05, 0x28, +0x30, 0xF0, 0x20, 0x68, 0xA0, 0xF5, 0x14, 0x98, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xA0, 0xF5, +0x18, 0x98, 0x09, 0xE2, 0x11, 0xA3, 0x03, 0x69, +0x12, 0x30, 0x2C, 0xE8, 0x00, 0xC2, 0x1F, 0xF7, +0x00, 0x6A, 0xCC, 0xEA, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF4, 0x5C, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0x40, 0x9A, +0x00, 0xA3, 0x49, 0xE6, 0x00, 0xC2, 0x41, 0x46, +0x1F, 0xF7, 0x00, 0x68, 0x0C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF5, 0x44, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, 0x48, 0x9A, +0x01, 0xA3, 0x49, 0xE6, 0x00, 0xC2, 0x42, 0x46, +0x1F, 0xF7, 0x00, 0x68, 0x0C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF5, 0x0C, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, 0x10, 0x9A, +0x52, 0xA3, 0x01, 0x69, 0x01, 0xE6, 0x4A, 0x32, +0x2C, 0xEA, 0x40, 0xC0, 0x43, 0x46, 0x1F, 0xF7, +0x00, 0x68, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, +0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF5, 0x54, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF5, 0x58, 0x9A, 0x59, 0xE6, +0x44, 0xA3, 0x40, 0xC6, 0x1F, 0xF7, 0x00, 0x6A, +0xAC, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF4, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF4, 0x40, 0x9A, 0x55, 0xE5, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x5C, 0x9A, +0x8C, 0x33, 0x49, 0xE3, 0x40, 0x9A, 0x40, 0xDD, +0x1F, 0xF7, 0x00, 0x6A, 0xEC, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, 0x5C, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, +0x40, 0x9A, 0x5D, 0xE7, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF5, 0x40, 0x9A, 0x8C, 0x34, 0x51, 0xE4, +0x40, 0x9C, 0x40, 0xDF, 0xB6, 0x11, 0x1F, 0xF7, +0x00, 0x6C, 0x4C, 0xEC, 0x09, 0x2C, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0xF4, 0xFC, 0x9C, 0x91, 0xA3, +0x03, 0x68, 0xFD, 0xE2, 0x8A, 0x34, 0x0A, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF4, 0xE0, 0x9C, +0x91, 0xA3, 0x03, 0x68, 0xFD, 0xE2, 0x8A, 0x34, +0x0C, 0xEC, 0xFF, 0x68, 0x0C, 0xEC, 0x80, 0xC7, +0x81, 0x42, 0x1F, 0xF7, 0x00, 0x6F, 0xEC, 0xEC, +0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF5, 0x84, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF5, +0x88, 0x9C, 0xE3, 0xA3, 0x91, 0xE2, 0xE0, 0xC4, +0x82, 0x42, 0x1F, 0xF7, 0x00, 0x6F, 0xEC, 0xEC, +0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF5, 0x8C, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF5, +0x90, 0x9C, 0xE5, 0xA3, 0x91, 0xE2, 0xE0, 0xC4, +0x83, 0x42, 0x1F, 0xF7, 0x00, 0x6F, 0xEC, 0xEC, +0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF5, 0x94, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF5, +0x98, 0x9C, 0x89, 0xE2, 0x86, 0xA3, 0x80, 0xC2, +0x1F, 0xF7, 0x00, 0x6A, 0xCC, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, 0x5C, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, +0x40, 0x9A, 0x59, 0xE6, 0x59, 0xA3, 0x40, 0xC6, +0x1F, 0xF7, 0x00, 0x6A, 0xAC, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, 0x5C, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, +0x40, 0x9A, 0x20, 0xF0, 0x82, 0xA3, 0x49, 0xE5, +0x80, 0xC2, 0x41, 0x45, 0x1F, 0xF7, 0x00, 0x6C, +0x8C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, +0x44, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF5, 0x48, 0x9A, 0x20, 0xF0, 0x63, 0xA3, +0x49, 0xE5, 0x60, 0xC2, 0x42, 0x45, 0x1F, 0xF7, +0x00, 0x6B, 0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, +0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF5, 0x4C, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF5, 0x50, 0x9A, 0x30, 0xF0, +0x20, 0x6B, 0x40, 0xF0, 0x78, 0xA3, 0x49, 0xE5, +0x60, 0xC2, 0x43, 0x45, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, +0x54, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF5, 0x58, 0x9A, 0x55, 0xE5, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF0, 0x59, 0xA2, 0x40, 0xC5, +0xFC, 0x10, 0x1F, 0xF7, 0x00, 0x6D, 0x4C, 0xED, +0x10, 0x2D, 0x30, 0xF0, 0x20, 0x6D, 0xA0, 0xF4, +0xDC, 0x9D, 0x30, 0xF0, 0x20, 0x6D, 0x40, 0xF5, +0xB4, 0x9D, 0x94, 0x37, 0xD9, 0xE2, 0xB5, 0xE7, +0xE0, 0xA5, 0xFF, 0x6D, 0xEC, 0xED, 0xA0, 0xC6, +0x0F, 0x10, 0x30, 0xF0, 0x20, 0x6E, 0x40, 0xF5, +0xD4, 0x9E, 0x94, 0x37, 0x30, 0xF0, 0x20, 0x6D, +0xD9, 0xE7, 0xC0, 0xA6, 0xC0, 0xF4, 0xA0, 0x9D, +0xFF, 0x69, 0x2C, 0xEE, 0xB5, 0xE2, 0xC0, 0xC5, +0xA1, 0x42, 0x1F, 0xF7, 0x00, 0x6E, 0xCC, 0xED, +0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x05, 0x2D, +0x30, 0xF0, 0x20, 0x6D, 0xA0, 0xF5, 0xA4, 0x9D, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0xA0, 0xF5, +0xA8, 0x9D, 0x30, 0xF0, 0x20, 0x6E, 0x40, 0xF5, +0xD0, 0x9E, 0x94, 0x34, 0xB5, 0xE2, 0xD1, 0xE4, +0xC0, 0xA4, 0xFF, 0x6C, 0xCC, 0xEC, 0x80, 0xC5, +0x82, 0x42, 0x1F, 0xF7, 0x00, 0x6D, 0xAC, 0xEC, +0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF5, 0x8C, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF5, +0x90, 0x9C, 0xB8, 0xA3, 0x91, 0xE2, 0xA0, 0xC4, +0x83, 0x42, 0x1F, 0xF7, 0x00, 0x6D, 0xAC, 0xEC, +0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF5, 0x94, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF5, +0x98, 0x9C, 0x68, 0xA3, 0x89, 0xE2, 0x60, 0xC2, +0x94, 0x10, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, +0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF4, +0x7C, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF4, 0x60, 0x9B, 0x69, 0xE2, 0xA1, 0xF5, +0x08, 0x44, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x10, 0x4B, 0x08, 0x30, 0x0D, 0xE3, 0x63, 0x9B, +0x60, 0xDA, 0x1F, 0xF7, 0x00, 0x6A, 0xCC, 0xEA, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, +0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0x40, 0x9A, 0x14, 0x6B, 0x78, 0xEC, +0x59, 0xE6, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x12, 0xEB, 0x69, 0xE2, 0xA7, 0xF0, +0x4C, 0x9A, 0x40, 0xDE, 0x1F, 0xF7, 0x00, 0x6A, +0xAC, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF4, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF4, 0x40, 0x9A, 0x14, 0x6B, +0x78, 0xEC, 0x55, 0xE5, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x12, 0xEB, 0x69, 0xE2, +0xA7, 0xF0, 0x50, 0x9A, 0x40, 0xDD, 0x1F, 0xF7, +0x00, 0x6A, 0xEC, 0xEA, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF4, 0x7C, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x49, 0xE4, 0xA8, 0xF2, 0x4C, 0xA2, 0x6D, 0xE7, +0x40, 0xC3, 0x41, 0x47, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, +0x64, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF5, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x49, 0xE4, 0xA8, 0xF3, +0x4C, 0xA2, 0x6D, 0xE7, 0x40, 0xC3, 0x42, 0x47, +0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF5, 0x4C, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, 0x50, 0x9A, +0x5D, 0xE7, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x51, 0xE4, 0x28, 0xF3, 0x4C, 0xA4, +0x40, 0xC7, 0x03, 0x91, 0x02, 0x90, 0x02, 0x63, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xAA, 0xEC, 0x64, 0x6A, 0x31, 0x60, 0x2F, 0x24, +0x83, 0xED, 0x2D, 0x61, 0x02, 0xF0, 0x00, 0x5D, +0x04, 0x6A, 0x0C, 0x61, 0x04, 0xF0, 0x00, 0x5D, +0x03, 0x6A, 0x08, 0x61, 0x08, 0xF0, 0x00, 0x5D, +0x02, 0x6A, 0x04, 0x61, 0xEF, 0xF7, 0x1E, 0x4A, +0x43, 0xED, 0x58, 0x67, 0xA4, 0xEA, 0x84, 0xEA, +0x00, 0x6B, 0x01, 0x6A, 0xA6, 0x35, 0x83, 0xED, +0x11, 0x60, 0x81, 0xF4, 0x00, 0x6E, 0xC7, 0xEB, +0xC9, 0xE2, 0x01, 0x75, 0xFF, 0xF7, 0x1F, 0x6E, +0xCC, 0xEA, 0xB3, 0xE4, 0x04, 0x61, 0x02, 0x5C, +0x04, 0x60, 0x01, 0x74, 0x06, 0x60, 0x02, 0x2C, +0x04, 0x10, 0x02, 0x6D, 0x01, 0x4B, 0x0C, 0x73, +0xE9, 0x61, 0x5A, 0x32, 0x01, 0x10, 0x00, 0x6A, +0xFF, 0x6B, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x40, 0xA4, 0x60, 0xA5, 0x60, 0xC4, 0x40, 0xC5, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xED, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0x35, 0x62, 0xF5, +0x10, 0x4A, 0x49, 0xE5, 0x40, 0xAA, 0x6C, 0xEC, +0xCC, 0xEB, 0x58, 0xEC, 0xFF, 0xF7, 0x1F, 0x6C, +0x12, 0xEA, 0x8C, 0xEA, 0x05, 0x23, 0x52, 0x35, +0x56, 0x33, 0x6D, 0xE5, 0x49, 0xE3, 0x8C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x63, 0x9D, 0x81, 0x9D, +0xFF, 0xF7, 0x1F, 0x6A, 0xEC, 0xEA, 0x61, 0xE4, +0xC1, 0xE0, 0xE2, 0x9D, 0xC4, 0x9D, 0x20, 0x9D, +0xE4, 0x35, 0xC1, 0xE0, 0xB5, 0xE0, 0x79, 0xE6, +0x55, 0xE5, 0x49, 0xE6, 0x44, 0x32, 0x55, 0xE5, +0x00, 0x6A, 0x0A, 0x25, 0x6B, 0xEB, 0xFF, 0xE3, +0x27, 0xE7, 0x93, 0xE1, 0xB1, 0xE4, 0x83, 0xED, +0x64, 0x6A, 0x02, 0x61, 0x00, 0x18, 0x12, 0x2F, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, +0x20, 0x5C, 0x01, 0x6B, 0x03, 0x60, 0xE0, 0x4C, +0x4C, 0xEC, 0x00, 0x6B, 0x68, 0x33, 0x75, 0xE5, +0x01, 0x6B, 0x64, 0xEC, 0x80, 0x9D, 0x00, 0x6A, +0x8C, 0xEB, 0x01, 0x23, 0x01, 0x6A, 0xFF, 0x6B, +0x6C, 0xEA, 0x20, 0xE8, 0xFF, 0x6B, 0x44, 0x67, +0x6C, 0xEA, 0x6C, 0xEE, 0x6C, 0xED, 0x82, 0x67, +0x03, 0x26, 0x88, 0x42, 0xE8, 0x4C, 0x6C, 0xEC, +0x20, 0x5C, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF5, 0x60, 0x9B, 0xAC, 0x35, 0xE0, 0x4C, +0x75, 0xE5, 0xFF, 0x6B, 0xA0, 0x9D, 0x6C, 0xEC, +0x07, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF5, +0x7C, 0x9B, 0xAC, 0x35, 0x75, 0xE5, 0xA0, 0x9D, +0x01, 0x6B, 0x64, 0xEC, 0xAC, 0xEB, 0x01, 0x2B, +0xFF, 0x6A, 0x20, 0xE8, 0xFF, 0x6A, 0x8C, 0xEA, +0x2A, 0x6B, 0x78, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x46, 0xF6, 0x08, 0x4B, 0x12, 0xEA, 0x49, 0xE3, +0x93, 0xA2, 0x7F, 0x6B, 0x6C, 0xEC, 0x93, 0xC2, +0x92, 0xA2, 0x8C, 0xEB, 0x72, 0xC2, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0xA2, 0xF6, +0x10, 0x4B, 0x4C, 0xEC, 0xAC, 0xEA, 0x63, 0xF3, +0xBF, 0xA3, 0x32, 0x25, 0x13, 0x74, 0x02, 0x60, +0x0B, 0x74, 0x05, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x26, 0xF2, 0x71, 0xA3, 0x14, 0x10, 0x12, 0x74, +0x02, 0x60, 0x0A, 0x74, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x26, 0xF2, 0x72, 0xA3, 0x0B, 0x10, +0x11, 0x74, 0x02, 0x60, 0x09, 0x74, 0x05, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0x26, 0xF2, 0x73, 0xA3, +0x02, 0x10, 0x83, 0xF3, 0x60, 0xA3, 0x7E, 0x34, +0x08, 0x2C, 0x1D, 0x5B, 0x10, 0x60, 0x4D, 0xE3, +0x1D, 0x53, 0x0D, 0x60, 0xFF, 0x6A, 0x6C, 0xEA, +0x20, 0xE8, 0x6B, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, +0x43, 0xEB, 0x02, 0x61, 0x00, 0x6A, 0x20, 0xE8, +0x6B, 0xE2, 0x8C, 0xEA, 0x20, 0xE8, 0x1C, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x7F, 0x68, 0x8C, 0xE8, 0x90, 0x67, +0x00, 0x18, 0xF2, 0x2C, 0x01, 0x6B, 0x12, 0x2A, +0x90, 0x67, 0x00, 0x18, 0x02, 0x2D, 0x02, 0x6B, +0x0D, 0x2A, 0x90, 0x67, 0x00, 0x18, 0x12, 0x2D, +0x03, 0x6B, 0x08, 0x2A, 0x90, 0x67, 0x00, 0x18, +0x23, 0x2D, 0x4B, 0xEB, 0x4D, 0xEB, 0xC0, 0xF7, +0x62, 0x33, 0x68, 0x33, 0x05, 0x97, 0x04, 0x90, +0x43, 0x67, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x63, 0xFF, 0x6B, 0xBD, 0x67, 0x20, 0xF4, +0x0D, 0x6A, 0x6C, 0xEC, 0x40, 0xCD, 0x84, 0x34, +0x20, 0xF4, 0x0F, 0x6A, 0x41, 0xCD, 0x91, 0xE5, +0x80, 0xAC, 0x1F, 0xF7, 0x00, 0x6A, 0x8C, 0xEA, +0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x0A, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, 0x5C, 0x9A, +0x51, 0xE4, 0x60, 0xA4, 0x0E, 0x6A, 0x6C, 0xEA, +0x46, 0x32, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0x40, 0x9A, 0x51, 0xE4, 0x80, 0xA4, +0x0E, 0x6A, 0x8C, 0xEA, 0x47, 0x32, 0x6C, 0xEA, +0x01, 0x63, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD1, +0x00, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, 0x2A, 0x6A, +0x58, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF6, +0x08, 0x4A, 0xCC, 0xE8, 0x60, 0xA5, 0x12, 0xEC, +0x91, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF5, +0x50, 0x9A, 0xE0, 0xA4, 0xC1, 0xA4, 0x40, 0xA2, +0x1A, 0x65, 0x38, 0x67, 0x20, 0x6A, 0x2C, 0xEA, +0x25, 0x2A, 0xFF, 0x73, 0x01, 0x6A, 0x23, 0x60, +0x7F, 0x69, 0x43, 0x67, 0x2C, 0xEA, 0x2C, 0xEF, +0x43, 0xEF, 0x05, 0x60, 0x80, 0x6E, 0xCB, 0xEE, +0x6C, 0xEE, 0xED, 0xEE, 0x02, 0x10, 0xC3, 0xEA, +0x01, 0x60, 0xC0, 0xC5, 0x46, 0x72, 0x12, 0x61, +0x02, 0x70, 0x10, 0x61, 0x6F, 0xA4, 0x10, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x10, 0x72, 0x47, 0x6B, 0x01, 0x60, 0x45, 0x6B, +0x80, 0xA5, 0x80, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, +0x6D, 0xEA, 0x40, 0xC5, 0x00, 0x6A, 0x01, 0x91, +0x00, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0x2A, 0x6B, 0x78, 0xEC, +0x30, 0xF0, 0x20, 0x6B, 0x46, 0xF6, 0x08, 0x4B, +0x19, 0x6E, 0xCB, 0xEE, 0x4C, 0xED, 0x12, 0xEC, +0x91, 0xE3, 0x72, 0xA4, 0x6C, 0xEE, 0x04, 0x6B, +0xCC, 0xEB, 0x4C, 0xEB, 0xD2, 0xC4, 0x53, 0x23, +0xD0, 0xA4, 0x80, 0x6B, 0x6B, 0xEB, 0xCC, 0xEB, +0x4C, 0xEB, 0x4D, 0x23, 0xEE, 0xA4, 0x07, 0x6E, +0x7F, 0x6B, 0xEC, 0xEE, 0x4C, 0xEE, 0x03, 0x76, +0xAC, 0xEB, 0x1C, 0x61, 0x47, 0x73, 0x06, 0x61, +0xD1, 0xA4, 0x0C, 0x6A, 0xCC, 0xEA, 0x08, 0x72, +0xC5, 0x6A, 0x44, 0x60, 0xC7, 0x75, 0x02, 0x60, +0x48, 0x75, 0x06, 0x61, 0xD1, 0xA4, 0x0C, 0x6A, +0xCC, 0xEA, 0x08, 0x72, 0x47, 0x6A, 0x3A, 0x60, +0xC5, 0x75, 0x33, 0x60, 0x46, 0x75, 0x31, 0x60, +0x48, 0x43, 0xC3, 0x4A, 0xFF, 0x6E, 0xCC, 0xEA, +0x05, 0x5A, 0x13, 0x10, 0x02, 0x76, 0x07, 0x61, +0xBD, 0x75, 0x29, 0x60, 0x3E, 0x75, 0x27, 0x60, +0xC8, 0x43, 0xCA, 0x4E, 0x08, 0x10, 0x01, 0x76, +0x1E, 0x61, 0xB3, 0x75, 0x22, 0x60, 0x34, 0x75, +0x20, 0x60, 0xC8, 0x43, 0xD4, 0x4E, 0x4C, 0xEE, +0x02, 0x5E, 0x15, 0x60, 0xBE, 0x35, 0x03, 0x25, +0x01, 0x4B, 0xFF, 0x6A, 0x4C, 0xEB, 0x80, 0x6D, +0x4E, 0x43, 0xAB, 0xED, 0xAD, 0xEA, 0xFF, 0x6D, +0xFF, 0x4B, 0xAC, 0xEA, 0xB2, 0xA4, 0x65, 0xC4, +0x19, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, 0x08, 0x6D, +0xAD, 0xEB, 0x72, 0xC4, 0x20, 0xE8, 0xFF, 0x6A, +0x20, 0xE8, 0x45, 0x6A, 0x20, 0xE8, 0x3D, 0x6A, +0x20, 0xE8, 0x33, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0x2A, 0x6B, 0x78, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x46, 0xF6, 0x08, 0x4B, 0x19, 0x6E, 0xCB, 0xEE, +0x4C, 0xED, 0x12, 0xEC, 0x91, 0xE3, 0x72, 0xA4, +0x6C, 0xEE, 0x04, 0x6B, 0xCC, 0xEB, 0x4C, 0xEB, +0xD2, 0xC4, 0x56, 0x23, 0xD0, 0xA4, 0x80, 0x6B, +0x6B, 0xEB, 0xCC, 0xEB, 0x4C, 0xEB, 0x50, 0x23, +0x0E, 0xA4, 0x07, 0x6F, 0x7F, 0x6B, 0x0C, 0xEF, +0x4C, 0xEF, 0x80, 0x6E, 0x03, 0x77, 0xAC, 0xEB, +0xAC, 0xEE, 0x14, 0x61, 0x45, 0x73, 0x09, 0x61, +0xF1, 0xA4, 0x0C, 0x6A, 0xEC, 0xEA, 0x08, 0x72, +0x04, 0x61, 0x47, 0x6A, 0x3E, 0x2E, 0xC5, 0x6A, +0x3C, 0x10, 0x48, 0x43, 0xC3, 0x4A, 0xFF, 0x6F, +0xEC, 0xEA, 0x04, 0x5A, 0x35, 0x60, 0x00, 0x6A, +0xC8, 0x75, 0x13, 0x10, 0x02, 0x77, 0x08, 0x61, +0xE8, 0x43, 0xCB, 0x4F, 0x4C, 0xEF, 0x02, 0x5F, +0x2B, 0x60, 0x00, 0x6A, 0xBE, 0x75, 0x09, 0x10, +0x01, 0x77, 0x26, 0x61, 0xE8, 0x43, 0xD5, 0x4F, +0x4C, 0xEF, 0x02, 0x5F, 0x21, 0x60, 0x00, 0x6A, +0xB4, 0x75, 0x01, 0x60, 0x01, 0x6A, 0x15, 0x22, +0x05, 0x26, 0x80, 0x6D, 0x41, 0x43, 0xAB, 0xED, +0xAD, 0xEA, 0x03, 0x10, 0x80, 0x6A, 0x4B, 0xEA, +0x6D, 0xEA, 0xFF, 0x6D, 0x01, 0x4B, 0xAC, 0xEA, +0xB2, 0xA4, 0x65, 0xC4, 0x19, 0x6B, 0x6B, 0xEB, +0xAC, 0xEB, 0x08, 0x6D, 0xAD, 0xEB, 0x72, 0xC4, +0x08, 0x10, 0x41, 0x43, 0x80, 0x6B, 0x6B, 0xEB, +0x6D, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x01, 0x10, +0xFF, 0x6A, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, +0xFF, 0x63, 0x01, 0xD1, 0x00, 0xD0, 0xFF, 0x6A, +0x8C, 0xEA, 0x05, 0x67, 0x30, 0xF0, 0x20, 0x69, +0xD4, 0xF2, 0xA0, 0x42, 0xA2, 0xF6, 0x10, 0x49, +0xA4, 0x35, 0x06, 0x93, 0x35, 0xE5, 0xFF, 0xF7, +0x1F, 0x6C, 0x26, 0xAD, 0x8C, 0xEE, 0x8C, 0xEF, +0x8C, 0xEB, 0xD3, 0xE4, 0x22, 0xEC, 0x03, 0x61, +0x39, 0xE6, 0xC6, 0xCD, 0x03, 0x10, 0x01, 0x6C, +0x8B, 0xEC, 0x86, 0xCD, 0x30, 0xF0, 0x20, 0x6D, +0x54, 0xF2, 0x80, 0x42, 0xA2, 0xF6, 0x10, 0x4D, +0x84, 0x34, 0xB1, 0xE4, 0xA6, 0xAC, 0xFF, 0xF7, +0x1F, 0x6E, 0xFB, 0xE6, 0xA2, 0xEE, 0x03, 0x61, +0xBD, 0xE7, 0xE6, 0xCC, 0x03, 0x10, 0x01, 0x6D, +0xAB, 0xED, 0xA6, 0xCC, 0x30, 0xF0, 0x20, 0x6C, +0xA2, 0xF6, 0x10, 0x4C, 0xA8, 0xF6, 0xAC, 0x9C, +0x6F, 0xEE, 0xA3, 0xEE, 0xAD, 0xE3, 0x02, 0x60, +0x01, 0x6B, 0x6B, 0xEB, 0xA8, 0xF6, 0x6C, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0x54, 0xF3, 0x60, 0x42, +0xA2, 0xF6, 0x10, 0x4C, 0x64, 0x33, 0x07, 0x96, +0x8D, 0xE3, 0x88, 0xAB, 0xFF, 0xF7, 0x1F, 0x6D, +0xD7, 0xE5, 0x83, 0xED, 0x91, 0xE6, 0x02, 0x60, +0x01, 0x6C, 0x8B, 0xEC, 0x88, 0xCB, 0xC4, 0xF3, +0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x10, 0x4B, 0x44, 0x32, 0x69, 0xE2, 0x68, 0xAA, +0xFF, 0xF7, 0x1F, 0x6C, 0x13, 0xE4, 0x63, 0xEC, +0x03, 0x61, 0x61, 0xE0, 0x08, 0xCA, 0x03, 0x10, +0x01, 0x6B, 0x6B, 0xEB, 0x68, 0xCA, 0x01, 0x91, +0x00, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6B, 0x6C, 0xED, 0x6C, 0xEC, 0x0F, 0x2D, +0x48, 0x44, 0xFC, 0x4A, 0x6C, 0xEA, 0x08, 0x5A, +0x1D, 0x61, 0x48, 0x44, 0xF4, 0x4A, 0x6C, 0xEA, +0x08, 0x5A, 0x16, 0x61, 0x48, 0x44, 0xEC, 0x4A, +0x6C, 0xEA, 0x08, 0x5A, 0x0E, 0x10, 0x48, 0x44, +0xDC, 0x4A, 0x6C, 0xEA, 0x0A, 0x5A, 0x0E, 0x61, +0x48, 0x44, 0xD2, 0x4A, 0x6C, 0xEA, 0x0A, 0x5A, +0x07, 0x61, 0x48, 0x44, 0xC8, 0x4A, 0x6C, 0xEA, +0x0A, 0x5A, 0x03, 0x6A, 0x06, 0x61, 0x04, 0x10, +0x02, 0x6A, 0x03, 0x10, 0x01, 0x6A, 0x01, 0x10, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF7, +0x6D, 0xA3, 0x03, 0x73, 0x22, 0x61, 0x03, 0x72, +0x35, 0x60, 0x02, 0x72, 0x11, 0x61, 0x08, 0x2D, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x08, 0x4A, +0x51, 0xE4, 0xFF, 0xF7, 0x4C, 0xA4, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, 0x08, 0x4A, +0x51, 0xE4, 0xDF, 0xF7, 0x4A, 0xA4, 0x20, 0xE8, +0x01, 0x72, 0x22, 0x61, 0x05, 0x2D, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0x00, 0x4A, 0x0E, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x1C, 0x4A, +0x11, 0x10, 0x02, 0x72, 0x13, 0x60, 0x01, 0x72, +0x13, 0x61, 0x08, 0x2D, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF6, 0x18, 0x4A, 0x51, 0xE4, 0xFF, 0xF7, +0x54, 0xA4, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF6, 0x10, 0x4A, 0x51, 0xE4, 0xDF, 0xF7, +0x54, 0xA4, 0x20, 0xE8, 0x44, 0x67, 0x20, 0xE8, +0x00, 0x6A, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x6A, 0xA2, 0x28, 0x5B, 0x0F, 0x61, +0x00, 0x6B, 0xA2, 0xF6, 0x6A, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF5, 0x50, 0x9A, 0x40, 0xA2, +0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, +0x00, 0x52, 0x23, 0x60, 0x04, 0x10, 0x01, 0x4B, +0xA2, 0xF6, 0x6A, 0xC2, 0x1E, 0x10, 0x30, 0xF0, +0x20, 0x68, 0x46, 0xF6, 0x15, 0x48, 0x00, 0x69, +0x91, 0x67, 0x00, 0x18, 0x16, 0x29, 0x60, 0xA0, +0xEC, 0xA0, 0x30, 0xF0, 0x20, 0x6C, 0x04, 0xD3, +0xFF, 0xF7, 0x7F, 0xA0, 0xB1, 0x67, 0xC2, 0x67, +0xE1, 0xF2, 0x1C, 0x4C, 0x01, 0x49, 0x05, 0xD3, +0x00, 0x18, 0xAD, 0x2A, 0x00, 0x6A, 0x03, 0x71, +0xFF, 0xF7, 0x5F, 0xC0, 0x40, 0xC0, 0x2A, 0x48, +0xE7, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0x2A, 0x68, 0x18, 0xEC, 0x4C, 0xEF, 0x30, 0xF0, +0x20, 0x6B, 0x0C, 0xD6, 0x0B, 0xD5, 0x05, 0xD7, +0x46, 0xF6, 0x08, 0x4B, 0x20, 0xA5, 0x12, 0xE8, +0x01, 0xE3, 0x60, 0xA6, 0x04, 0xD3, 0xB1, 0xA0, +0x03, 0x6B, 0x04, 0x96, 0xAC, 0xEB, 0x83, 0x67, +0x4C, 0xEC, 0xC2, 0xEC, 0x03, 0x60, 0x0C, 0x92, +0x60, 0xC2, 0xB0, 0x10, 0xA0, 0xF0, 0x0E, 0x24, +0x2F, 0x59, 0xA0, 0xF0, 0x0B, 0x60, 0x30, 0x6B, +0xAC, 0xEB, 0x4C, 0xEB, 0xA0, 0xF0, 0x06, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0D, 0x23, 0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, +0x09, 0x61, 0x05, 0x95, 0x04, 0x96, 0x30, 0xF0, +0x20, 0x6C, 0x01, 0xF3, 0x18, 0x4C, 0xF1, 0x67, +0x00, 0x18, 0xAD, 0x2A, 0x05, 0x93, 0x01, 0x73, +0x03, 0x60, 0x05, 0x6B, 0x01, 0x6A, 0x47, 0x10, +0x04, 0x6B, 0x00, 0x6A, 0x44, 0x10, 0x05, 0x94, +0x01, 0x74, 0x02, 0x61, 0x01, 0x4A, 0x01, 0x10, +0xFF, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x48, 0x34, 0x40, 0xF0, 0x04, 0x4B, +0x6D, 0xE4, 0xC0, 0xAB, 0xFF, 0x6C, 0x03, 0x6D, +0x66, 0x67, 0x8C, 0xEB, 0x04, 0xD3, 0xC2, 0x33, +0x8C, 0xEB, 0x91, 0xA0, 0x00, 0x69, 0xE4, 0x67, +0xAC, 0xEF, 0x62, 0xEF, 0x08, 0x61, 0x0D, 0x6F, +0x6C, 0xED, 0xEB, 0xEF, 0xA8, 0x35, 0x8C, 0xEF, +0xAD, 0xEF, 0xF1, 0xC0, 0x01, 0x69, 0x30, 0xF0, +0x20, 0x6C, 0x40, 0xF0, 0x04, 0x4C, 0x48, 0x32, +0x49, 0xE4, 0xE1, 0xAA, 0xB1, 0xA0, 0x03, 0x6C, +0xE2, 0x32, 0xAC, 0xEC, 0x42, 0xEC, 0x36, 0x61, +0xE5, 0xC0, 0x20, 0xF0, 0x48, 0xC0, 0x45, 0xA0, +0xFF, 0x72, 0x30, 0x60, 0x92, 0xA0, 0x19, 0x6A, +0x4B, 0xEA, 0x8C, 0xEA, 0x08, 0x6C, 0x8D, 0xEA, +0x52, 0xC0, 0x28, 0x10, 0x01, 0x4A, 0xFF, 0x6C, +0x8C, 0xEA, 0x63, 0xEA, 0x4A, 0x60, 0x30, 0xF0, +0x20, 0x6C, 0x48, 0x35, 0x40, 0xF0, 0x04, 0x4C, +0x91, 0xE5, 0xA0, 0xAC, 0xFF, 0x6C, 0xC5, 0x67, +0x8C, 0xEE, 0x2E, 0xEE, 0x05, 0x2E, 0xA2, 0x35, +0x8C, 0xED, 0x04, 0x94, 0x8E, 0xED, 0xAB, 0x25, +0x30, 0xF0, 0x20, 0x6C, 0x48, 0x35, 0x40, 0xF0, +0x04, 0x4C, 0xB1, 0xE4, 0xA1, 0xAC, 0xFF, 0x6C, +0xC5, 0x67, 0x8C, 0xEE, 0x2E, 0xEE, 0xDE, 0x2E, +0x04, 0x96, 0xA2, 0x35, 0x8C, 0xED, 0xCE, 0xED, +0xD9, 0x2D, 0x99, 0x17, 0x00, 0x68, 0x09, 0x21, +0x5D, 0x67, 0x87, 0x42, 0x09, 0x4C, 0x0B, 0x92, +0x80, 0xA4, 0x01, 0x68, 0x80, 0xC2, 0x0C, 0x92, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x0D, 0x23, 0x83, 0xF4, 0x40, 0x9A, +0x05, 0x5A, 0x09, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0x21, 0xF3, 0x14, 0x4C, 0xB0, 0x67, 0x00, 0x18, +0xAD, 0x2A, 0x01, 0x10, 0x00, 0x68, 0x50, 0x67, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x68, 0xF0, 0x67, 0xD0, 0x67, +0xE0, 0x17, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x65, 0x67, 0x4C, 0xEE, 0x4C, 0xEC, +0x4C, 0xEB, 0xC0, 0xF0, 0x08, 0x2E, 0xC0, 0xF0, +0x06, 0x2C, 0x8C, 0x43, 0x4C, 0xEC, 0x08, 0x5C, +0x1B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x63, 0xF4, 0x9C, 0x9A, 0x01, 0x6D, +0xAC, 0xEC, 0xA0, 0xF0, 0x18, 0x24, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0xA0, 0xF0, 0x13, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF0, 0x00, 0x4A, +0x4D, 0xE3, 0x30, 0xF0, 0x20, 0x6C, 0x41, 0xF3, +0x0C, 0x4C, 0xFF, 0xF7, 0xBC, 0xA3, 0xA5, 0x10, +0x04, 0x5B, 0x1A, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x9C, 0x9A, +0x01, 0x6D, 0xAC, 0xEC, 0x80, 0xF0, 0x1B, 0x24, +0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, 0x80, 0xF0, +0x16, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF0, +0x08, 0x4A, 0x4D, 0xE3, 0x30, 0xF0, 0x20, 0x6C, +0x41, 0xF3, 0x18, 0x4C, 0xA0, 0xA3, 0x89, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF6, 0x10, 0x4C, +0xA3, 0xF7, 0xC9, 0xA4, 0x30, 0x6D, 0xCC, 0xED, +0x4C, 0xED, 0x10, 0x75, 0x3D, 0x61, 0xA8, 0x43, +0xDC, 0x4D, 0xC5, 0x67, 0x4C, 0xEE, 0x0A, 0x5E, +0x0E, 0x60, 0x63, 0xF4, 0x5C, 0x9C, 0x01, 0x6B, +0x6C, 0xEA, 0x75, 0x22, 0x83, 0xF4, 0x40, 0x9C, +0x05, 0x5A, 0x71, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0x61, 0xF3, 0x04, 0x4C, 0x6A, 0x10, 0xA8, 0x43, +0xD2, 0x4D, 0xC5, 0x67, 0x4C, 0xEE, 0x0A, 0x5E, +0x0E, 0x60, 0x63, 0xF4, 0x5C, 0x9C, 0x01, 0x6B, +0x6C, 0xEA, 0x61, 0x22, 0x83, 0xF4, 0x40, 0x9C, +0x05, 0x5A, 0x5D, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0x61, 0xF3, 0x10, 0x4C, 0x56, 0x10, 0xA8, 0x43, +0xC8, 0x4D, 0x4C, 0xED, 0x0A, 0x5D, 0x53, 0x60, +0x63, 0xF4, 0x5C, 0x9C, 0x01, 0x6D, 0xAC, 0xEA, +0x4E, 0x22, 0x83, 0xF4, 0x40, 0x9C, 0x05, 0x5A, +0x4A, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0xA8, 0x43, +0x61, 0xF3, 0x1C, 0x4C, 0xC8, 0x4D, 0x41, 0x10, +0x42, 0x2D, 0xA8, 0x43, 0xFC, 0x4D, 0x4C, 0xED, +0x0A, 0x5D, 0x10, 0x60, 0x63, 0xF4, 0x5C, 0x9C, +0x01, 0x6D, 0xAC, 0xEA, 0x38, 0x22, 0x83, 0xF4, +0x40, 0x9C, 0x05, 0x5A, 0x34, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0xA8, 0x43, 0x81, 0xF3, 0x08, 0x4C, +0xDC, 0x4D, 0x2B, 0x10, 0xA8, 0x43, 0xF2, 0x4D, +0x4C, 0xED, 0x0A, 0x5D, 0x10, 0x60, 0x63, 0xF4, +0x5C, 0x9C, 0x01, 0x6D, 0xAC, 0xEA, 0x23, 0x22, +0x83, 0xF4, 0x40, 0x9C, 0x05, 0x5A, 0x1F, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0xA8, 0x43, 0x81, 0xF3, +0x14, 0x4C, 0xF2, 0x4D, 0x16, 0x10, 0xA8, 0x43, +0xE8, 0x4D, 0x4C, 0xED, 0x04, 0x5D, 0x13, 0x60, +0x63, 0xF4, 0x5C, 0x9C, 0x01, 0x6C, 0x8C, 0xEA, +0x0E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x26, 0xF3, +0x50, 0x9A, 0x05, 0x5A, 0x08, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0xA8, 0x43, 0xA1, 0xF3, 0x00, 0x4C, +0xE8, 0x4D, 0x00, 0x18, 0xAD, 0x2A, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6B, 0x44, 0x67, 0x6C, 0xEA, 0xAC, 0xEB, +0x01, 0x73, 0x0B, 0x60, 0x03, 0x23, 0x02, 0x73, +0x0F, 0x60, 0x16, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x6D, 0xE2, 0x01, 0x6C, +0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x10, 0x4B, 0x6D, 0xE2, 0x03, 0x6C, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x6D, 0xE2, 0x07, 0x6C, 0x83, 0xF7, 0x90, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x63, 0xF4, 0x9C, 0x9B, 0x10, 0x6D, 0xAC, 0xEC, +0x0E, 0x24, 0x83, 0xF4, 0x80, 0x9B, 0x05, 0x5C, +0x0A, 0x61, 0x6D, 0xE2, 0x83, 0xF7, 0xD0, 0xA3, +0x30, 0xF0, 0x20, 0x6C, 0xA1, 0xF3, 0x0C, 0x4C, +0xA2, 0x67, 0x00, 0x18, 0xAD, 0x2A, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0xFF, 0x6E, 0x44, 0x67, 0x20, 0xF4, 0x0D, 0x6B, +0x9D, 0x67, 0x68, 0xCC, 0xCC, 0xEA, 0x20, 0xF4, +0x0F, 0x6B, 0x69, 0xCC, 0x44, 0x33, 0x6D, 0xE4, +0x68, 0xAB, 0x1F, 0xF7, 0x00, 0x6C, 0xAC, 0xEE, +0x6C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, +0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF4, +0x9C, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0xC0, 0xF4, 0x80, 0x9C, 0x91, 0xE3, 0xA0, 0xA4, +0xF1, 0x6C, 0xAC, 0xEC, 0xC4, 0x35, 0x8D, 0xED, +0x00, 0xF6, 0xA0, 0x34, 0x00, 0xF6, 0x83, 0x34, +0xFF, 0x6D, 0xAC, 0xEC, 0x1F, 0xF7, 0x00, 0x6D, +0x6C, 0xED, 0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, +0x05, 0x2D, 0x30, 0xF0, 0x20, 0x6D, 0xA0, 0xF4, +0xBC, 0x9D, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6D, +0xC0, 0xF4, 0xA0, 0x9D, 0xAD, 0xE3, 0x80, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, +0x63, 0xF4, 0x9C, 0x9B, 0x10, 0x6D, 0xAC, 0xEC, +0x0B, 0x24, 0x83, 0xF4, 0x60, 0x9B, 0x05, 0x5B, +0x07, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0xC1, 0xF3, +0x04, 0x4C, 0xA2, 0x67, 0x00, 0x18, 0xAD, 0x2A, +0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x8C, 0xE9, +0xA2, 0xF6, 0x10, 0x48, 0x09, 0xE1, 0x83, 0xF7, +0xB0, 0xA2, 0x91, 0x67, 0x04, 0xD2, 0x00, 0x18, +0xCF, 0x31, 0x63, 0xF4, 0x5C, 0x98, 0x10, 0x6B, +0x6C, 0xEA, 0x0E, 0x22, 0x83, 0xF4, 0x40, 0x98, +0x05, 0x5A, 0x0A, 0x61, 0x04, 0x92, 0x30, 0xF0, +0x20, 0x6C, 0xC1, 0xF3, 0x1C, 0x4C, 0x83, 0xF7, +0xD0, 0xA2, 0xB1, 0x67, 0x00, 0x18, 0xAD, 0x2A, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, +0x0E, 0xD1, 0x0D, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0x6A, 0xC0, 0xF5, 0x74, 0x9B, 0x4C, 0xEC, +0x08, 0xD4, 0x00, 0xA3, 0x10, 0x6B, 0x30, 0xF0, +0x20, 0x69, 0x6C, 0xE8, 0x13, 0x30, 0x4C, 0xE8, +0xA2, 0xF6, 0x10, 0x49, 0x35, 0xE0, 0x83, 0xF7, +0x4C, 0xA5, 0x06, 0xD5, 0x82, 0x67, 0x07, 0xD2, +0x00, 0x18, 0x16, 0x29, 0x82, 0x67, 0x09, 0xD2, +0x00, 0x18, 0x95, 0x2F, 0x06, 0x93, 0x0A, 0xD2, +0x63, 0xF4, 0x5C, 0x99, 0x83, 0xF7, 0x6E, 0xA3, +0x10, 0x6D, 0xAC, 0xEA, 0x06, 0xD3, 0x10, 0x22, +0x83, 0xF4, 0x40, 0x99, 0x05, 0x5A, 0x0C, 0x61, +0x83, 0xF7, 0x54, 0xA1, 0x07, 0x95, 0x08, 0x96, +0x09, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0xE1, 0xF3, +0x14, 0x4C, 0x04, 0xD2, 0x00, 0x18, 0xAD, 0x2A, +0x08, 0x92, 0x12, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x83, 0xF7, 0xB3, 0xA2, +0x01, 0x6C, 0x64, 0x67, 0x64, 0xE8, 0xAD, 0xEB, +0x83, 0xF7, 0x73, 0xC2, 0x06, 0x93, 0x0A, 0x95, +0x01, 0x4B, 0xAE, 0xEB, 0x27, 0x2B, 0x0D, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x83, 0xF7, 0x93, 0xA2, 0x01, 0x6B, 0x64, 0xE8, +0x6F, 0xEB, 0x8C, 0xEB, 0x83, 0xF7, 0x73, 0xC2, +0x19, 0x10, 0x83, 0xF7, 0x74, 0xA2, 0x67, 0xE8, +0x8C, 0xEB, 0x14, 0x23, 0x63, 0xF4, 0x7C, 0x9A, +0x10, 0x6C, 0x8C, 0xEB, 0x0B, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x07, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x01, 0xF4, 0x14, 0x4C, 0xB0, 0x67, +0x00, 0x18, 0xAD, 0x2A, 0x90, 0x67, 0x00, 0x18, +0xFA, 0x31, 0x18, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x10, 0x6C, 0x8C, 0xEB, 0x0B, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x07, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x21, 0xF4, 0x00, 0x4C, 0xB0, 0x67, +0x00, 0x18, 0xAD, 0x2A, 0x90, 0x67, 0x00, 0x6D, +0x00, 0x18, 0xCF, 0x31, 0x0F, 0x97, 0x0E, 0x91, +0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x69, +0x06, 0xD2, 0x26, 0xF6, 0x1C, 0x49, 0x00, 0x68, +0x40, 0xA1, 0x06, 0x93, 0x6E, 0xEA, 0x80, 0xF0, +0x1D, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x07, 0xD2, 0x83, 0xF7, 0x52, 0xA2, +0x01, 0x6B, 0x47, 0xE8, 0x6C, 0xEA, 0x80, 0xF0, +0x11, 0x22, 0x06, 0x94, 0x00, 0x18, 0x16, 0x29, +0x62, 0xA1, 0x82, 0x67, 0x09, 0xD2, 0x08, 0xD3, +0x00, 0x18, 0x95, 0x2F, 0x07, 0x93, 0x0A, 0xD2, +0x63, 0xF4, 0x5C, 0x9B, 0x10, 0x6B, 0x6C, 0xEA, +0x10, 0x22, 0x07, 0x93, 0x83, 0xF4, 0x40, 0x9B, +0x05, 0x5A, 0x0B, 0x61, 0x08, 0x92, 0x06, 0x95, +0x09, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF4, +0x0C, 0x4C, 0xD0, 0x67, 0x04, 0xD2, 0x00, 0x18, +0xAD, 0x2A, 0x08, 0x92, 0x0A, 0x93, 0x01, 0x4A, +0x62, 0xEA, 0x21, 0x60, 0x90, 0x67, 0x00, 0x6D, +0x00, 0x18, 0xCF, 0x31, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x83, 0xF7, 0x94, 0xA2, +0x01, 0x6B, 0x64, 0xE8, 0x6F, 0xEB, 0x8C, 0xEB, +0x83, 0xF7, 0x74, 0xC2, 0x63, 0xF4, 0x7C, 0x9A, +0x10, 0x6C, 0x8C, 0xEB, 0x57, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x53, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x41, 0xF4, 0x14, 0x4C, 0xB0, 0x67, +0x00, 0x18, 0xAD, 0x2A, 0x4B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x83, 0xF7, +0x94, 0xA2, 0x01, 0x6B, 0x64, 0xE8, 0x8D, 0xEB, +0x83, 0xF7, 0x74, 0xC2, 0x63, 0xF4, 0x7C, 0x9A, +0x10, 0x6C, 0x8C, 0xEB, 0x0B, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x07, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x61, 0xF4, 0x00, 0x4C, 0xB0, 0x67, +0x00, 0x18, 0xAD, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x83, 0xF7, 0x73, 0xA2, +0x01, 0x6C, 0x67, 0xE8, 0x8C, 0xEB, 0x13, 0x23, +0x63, 0xF4, 0x7C, 0x9A, 0x10, 0x6C, 0x8C, 0xEB, +0x0A, 0x23, 0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, +0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x61, 0xF4, +0x0C, 0x4C, 0x00, 0x18, 0xAD, 0x2A, 0x90, 0x67, +0x00, 0x18, 0xFA, 0x31, 0x13, 0x10, 0x63, 0xF4, +0x7C, 0x9A, 0x10, 0x6C, 0x8C, 0xEB, 0x0A, 0x23, +0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x61, 0xF4, 0x18, 0x4C, +0x00, 0x18, 0xAD, 0x2A, 0x90, 0x67, 0x00, 0x6D, +0x00, 0x18, 0xCF, 0x31, 0x01, 0x48, 0x02, 0x70, +0x01, 0x49, 0x5F, 0xF7, 0x19, 0x61, 0x0F, 0x97, +0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0xFF, 0x6A, 0x4C, 0xEE, 0x2A, 0x68, 0x18, 0xEE, +0x30, 0xF0, 0x20, 0x6B, 0x46, 0xF6, 0x08, 0x4B, +0x4C, 0xEC, 0x4C, 0xEF, 0x4C, 0xED, 0x07, 0xD6, +0x08, 0xD7, 0x12, 0xE8, 0x01, 0xE3, 0x7F, 0x6B, +0x6C, 0xEC, 0x1F, 0x2D, 0x0C, 0x5C, 0x07, 0x60, +0x30, 0xF0, 0x20, 0x69, 0x62, 0xF1, 0x10, 0x49, +0x85, 0xE1, 0x01, 0x6A, 0x37, 0x10, 0x08, 0x93, +0xF4, 0x4C, 0x4C, 0xEC, 0x08, 0x2B, 0x03, 0x69, +0x38, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, +0x00, 0x4A, 0x12, 0xEC, 0x29, 0x10, 0xE0, 0x4C, +0x4C, 0xEC, 0x03, 0x69, 0x38, 0xEC, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF2, 0x04, 0x4A, 0x12, 0xEC, +0x1F, 0x10, 0x0C, 0x5C, 0x08, 0x60, 0x30, 0xF0, +0x20, 0x69, 0x62, 0xF1, 0x1C, 0x49, 0x01, 0x6B, +0x85, 0xE1, 0x06, 0xD3, 0x18, 0x10, 0x08, 0x95, +0xF4, 0x4C, 0x4C, 0xEC, 0x08, 0x2D, 0x03, 0x69, +0x38, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF3, +0x04, 0x4A, 0x12, 0xEC, 0x09, 0x10, 0xE0, 0x4C, +0x4C, 0xEC, 0x03, 0x69, 0x38, 0xEC, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF3, 0x08, 0x4A, 0x12, 0xEC, +0x85, 0xE2, 0x00, 0x6A, 0x06, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x0D, 0x23, +0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, 0x09, 0x61, +0xA0, 0xA1, 0xC1, 0xA1, 0xE2, 0xA1, 0x30, 0xF0, +0x20, 0x6C, 0x81, 0xF4, 0x04, 0x4C, 0x00, 0x18, +0xAD, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x0C, 0x23, 0x83, 0xF4, 0x40, 0x9A, +0x05, 0x5A, 0x08, 0x61, 0x06, 0x95, 0x30, 0xF0, +0x20, 0x6C, 0x81, 0xF4, 0x18, 0x4C, 0x03, 0x6E, +0x00, 0x18, 0xAD, 0x2A, 0x07, 0x94, 0xC0, 0xA1, +0x04, 0x6D, 0x00, 0x18, 0x69, 0x2D, 0x07, 0x94, +0xC1, 0xA1, 0x05, 0x6D, 0x00, 0x18, 0x69, 0x2D, +0x07, 0x94, 0xC2, 0xA1, 0x06, 0x6D, 0x00, 0x18, +0x69, 0x2D, 0x06, 0x93, 0x0C, 0x2B, 0x01, 0x6A, +0x4B, 0xEA, 0x9D, 0x67, 0x0A, 0xD1, 0x00, 0x69, +0x50, 0xC4, 0x51, 0xC4, 0x52, 0xC4, 0x09, 0xD1, +0x06, 0xD1, 0x0B, 0xD0, 0x0B, 0x10, 0x80, 0xA1, +0x07, 0x95, 0x08, 0x96, 0x00, 0x18, 0x5B, 0x2F, +0x92, 0xA0, 0x19, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x72, 0xC0, 0x9F, 0x10, 0x0A, 0x92, 0x00, 0xA2, +0x2C, 0x70, 0x04, 0x61, 0x08, 0x93, 0x2C, 0x68, +0x01, 0x2B, 0x0C, 0x68, 0x07, 0x95, 0x08, 0x96, +0x90, 0x67, 0x01, 0x49, 0x00, 0x18, 0x5B, 0x2F, +0xFF, 0x72, 0xFF, 0x6B, 0x6C, 0xE9, 0x07, 0x61, +0x46, 0x70, 0x11, 0x60, 0x09, 0x94, 0x91, 0xE1, +0x6C, 0xEC, 0x09, 0xD4, 0x07, 0x10, 0x06, 0x96, +0xBD, 0x67, 0xD1, 0xE5, 0x01, 0x4E, 0x6C, 0xEE, +0x50, 0xC4, 0x06, 0xD6, 0x0A, 0x92, 0x03, 0x71, +0x01, 0x4A, 0x0A, 0xD2, 0xDB, 0x61, 0x06, 0x92, +0x0B, 0x90, 0x03, 0x6B, 0xFF, 0x4A, 0x6C, 0xEA, +0xB2, 0xA0, 0x4C, 0x34, 0x19, 0x6A, 0x4B, 0xEA, +0xAC, 0xEA, 0x8D, 0xEA, 0x52, 0xC0, 0x09, 0x94, +0xFF, 0x6A, 0x06, 0x5C, 0x6A, 0x60, 0x34, 0xA0, +0x02, 0x6A, 0x32, 0x31, 0x6C, 0xE9, 0x7E, 0xA0, +0x6C, 0xEA, 0x2C, 0x22, 0x6F, 0x41, 0x01, 0x6A, +0x63, 0xEA, 0x28, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x63, 0xF4, 0x9C, 0x9B, +0x4C, 0xEC, 0x0A, 0x24, 0x83, 0xF4, 0x40, 0x9B, +0x05, 0x5A, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0xA1, 0xF4, 0x10, 0x4C, 0x00, 0x18, 0xAD, 0x2A, +0xBD, 0x67, 0x90, 0xA5, 0x00, 0x18, 0xF2, 0x2C, +0x11, 0x2A, 0xDD, 0x67, 0x91, 0xA6, 0x00, 0x18, +0xF2, 0x2C, 0x00, 0xF0, 0x11, 0x04, 0x07, 0x2A, +0x5D, 0x67, 0x92, 0xA2, 0x00, 0x18, 0xF2, 0x2C, +0x05, 0x22, 0x00, 0xF0, 0x12, 0x04, 0x04, 0x05, +0x00, 0x18, 0x2E, 0x2F, 0x7E, 0xA0, 0x40, 0x6A, +0x6C, 0xEA, 0x19, 0x22, 0x08, 0x93, 0x05, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x0C, 0x4A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, +0x04, 0x4A, 0xFF, 0x49, 0x01, 0x6B, 0x23, 0xEB, +0x0A, 0x61, 0xBD, 0x67, 0x91, 0xA5, 0x40, 0x9A, +0x64, 0xEC, 0x4C, 0xEB, 0x04, 0x23, 0x01, 0x6A, +0x4B, 0xEA, 0x90, 0xC5, 0x51, 0xC5, 0xDD, 0x67, +0x71, 0xA6, 0xFF, 0x73, 0x05, 0x60, 0x52, 0xA6, +0xFF, 0x72, 0x02, 0x60, 0x66, 0xC0, 0x0E, 0x10, +0x7D, 0x67, 0x51, 0xA3, 0xFF, 0x72, 0x03, 0x60, +0x72, 0xA3, 0xFF, 0x73, 0x07, 0x60, 0x9D, 0x67, +0x51, 0xA4, 0xFF, 0x72, 0x04, 0x61, 0x52, 0xA4, +0xFF, 0x72, 0x01, 0x60, 0x45, 0xC0, 0xBD, 0x67, +0x50, 0xA5, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, +0x08, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x00, 0x6B, +0x8C, 0xE9, 0x43, 0x67, 0x91, 0x67, 0x87, 0xEB, +0x01, 0x6D, 0xAC, 0xEC, 0x03, 0x24, 0x01, 0x4A, +0xFF, 0x6C, 0x8C, 0xEA, 0x01, 0x4B, 0x04, 0x73, +0xF5, 0x61, 0x01, 0x72, 0x2C, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF5, 0xA0, 0x9A, 0x21, 0xF1, +0x1C, 0x68, 0x90, 0x67, 0xD1, 0x67, 0x00, 0x18, +0xB9, 0x1A, 0x01, 0x71, 0x06, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x90, 0x67, 0xC0, 0xF4, 0xA4, 0x9A, +0x07, 0x10, 0x02, 0x71, 0x07, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF5, 0xA4, 0x9A, 0x90, 0x67, +0x00, 0x6E, 0xD2, 0x11, 0x04, 0x71, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x90, 0x67, 0xC0, 0xF3, +0xB8, 0x9A, 0xF6, 0x17, 0x08, 0x71, 0xC0, 0xF1, +0x09, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x90, 0x67, +0xE0, 0xF5, 0xA8, 0x9A, 0xED, 0x17, 0x02, 0x72, +0xA0, 0xF0, 0x11, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF5, 0xA0, 0x9A, 0x21, 0xF1, 0x1C, 0x68, +0x90, 0x67, 0xD1, 0x67, 0x00, 0x18, 0xB9, 0x1A, +0x41, 0xF1, 0x00, 0x6C, 0xF0, 0x6D, 0xD1, 0x67, +0x00, 0x18, 0xB9, 0x1A, 0x03, 0x71, 0x1C, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0xA4, 0x9A, +0x90, 0x67, 0x00, 0x6E, 0x00, 0x18, 0xB9, 0x1A, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF5, 0xA4, 0x9A, +0x90, 0x67, 0x01, 0x6E, 0x00, 0x18, 0xB9, 0x1A, +0x41, 0xF1, 0x00, 0x6C, 0x00, 0xF3, 0x00, 0x6D, +0x00, 0x6E, 0x00, 0x18, 0xB9, 0x1A, 0x41, 0xF1, +0x00, 0x6C, 0x01, 0xF4, 0x00, 0x6D, 0x81, 0x10, +0x05, 0x71, 0x15, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0xA4, 0x9A, 0x90, 0x67, 0x00, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0xB8, 0x9A, 0x90, 0x67, 0x01, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x41, 0xF1, 0x00, 0x6C, +0x00, 0xF3, 0x00, 0x6D, 0x2D, 0x10, 0x09, 0x71, +0x15, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, +0xA4, 0x9A, 0x90, 0x67, 0x00, 0x6E, 0x00, 0x18, +0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF5, +0xA8, 0x9A, 0x90, 0x67, 0x01, 0x6E, 0x00, 0x18, +0xB9, 0x1A, 0x41, 0xF1, 0x00, 0x6C, 0x00, 0xF3, +0x00, 0x6D, 0x4C, 0x10, 0x06, 0x71, 0x1C, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF5, 0xA4, 0x9A, +0x90, 0x67, 0x00, 0x6E, 0x00, 0x18, 0xB9, 0x1A, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0xB8, 0x9A, +0x90, 0x67, 0x01, 0x6E, 0x00, 0x18, 0xB9, 0x1A, +0x41, 0xF1, 0x00, 0x6C, 0x01, 0xF4, 0x00, 0x6D, +0x00, 0x6E, 0x00, 0x18, 0xB9, 0x1A, 0x41, 0xF1, +0x00, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x35, 0x10, +0x0A, 0x71, 0x15, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF5, 0xA4, 0x9A, 0x90, 0x67, 0x00, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF5, 0xA8, 0x9A, 0x90, 0x67, 0x01, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x41, 0xF1, 0x00, 0x6C, +0x01, 0xF4, 0x00, 0x6D, 0x17, 0x10, 0x0C, 0x71, +0x20, 0xF1, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0xB8, 0x9A, 0x90, 0x67, 0x00, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF5, 0xA8, 0x9A, 0x90, 0x67, 0x01, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x41, 0xF1, 0x00, 0x6C, +0x06, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x00, 0x18, +0xB9, 0x1A, 0x41, 0xF1, 0x00, 0x6C, 0x18, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x0D, 0x11, 0x03, 0x72, +0x00, 0xF1, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF5, 0xA0, 0x9A, 0x21, 0xF1, 0x1C, 0x6C, +0xD1, 0x67, 0x41, 0xF1, 0x00, 0x68, 0x00, 0x18, +0xB9, 0x1A, 0x90, 0x67, 0xF0, 0x6D, 0xD1, 0x67, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF5, 0xAC, 0x9A, 0x90, 0x67, 0xD1, 0x67, +0x00, 0x18, 0xB9, 0x1A, 0x07, 0x71, 0x2C, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0x24, 0x9A, +0x21, 0xF1, 0x1C, 0x6C, 0x00, 0x6E, 0xB1, 0x67, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF5, 0xA4, 0x9A, 0x21, 0xF1, 0x1C, 0x6C, +0x01, 0x6E, 0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0xB8, 0x9A, 0x21, 0xF1, +0x1C, 0x6C, 0x02, 0x6E, 0x00, 0x18, 0xB9, 0x1A, +0x90, 0x67, 0x00, 0xF3, 0x00, 0x6D, 0x00, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x90, 0x67, 0x01, 0xF4, +0x00, 0x6D, 0x01, 0x6E, 0x00, 0x18, 0xB9, 0x1A, +0x90, 0x67, 0x06, 0xF0, 0x00, 0x6D, 0x2D, 0x10, +0x0B, 0x71, 0x3C, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0xA4, 0x9A, 0x21, 0xF1, 0x1C, 0x6C, +0x00, 0x6E, 0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF5, 0x24, 0x9A, 0x21, 0xF1, +0x1C, 0x6C, 0x01, 0x6E, 0xB1, 0x67, 0x00, 0x18, +0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF5, +0xA8, 0x9A, 0x21, 0xF1, 0x1C, 0x6C, 0x02, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x90, 0x67, 0x00, 0xF3, +0x00, 0x6D, 0x00, 0x6E, 0x00, 0x18, 0xB9, 0x1A, +0x90, 0x67, 0x01, 0xF4, 0x00, 0x6D, 0x01, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x90, 0x67, 0x18, 0xF0, +0x00, 0x6D, 0x02, 0x6E, 0x00, 0x18, 0xB9, 0x1A, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF5, 0xB0, 0x9A, +0x90, 0x67, 0x00, 0x6E, 0x00, 0x18, 0xB9, 0x1A, +0x30, 0xF0, 0x20, 0x6A, 0x90, 0x67, 0xE0, 0xF5, +0xB4, 0x9A, 0x80, 0x10, 0x0D, 0x71, 0x41, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0x24, 0x9A, +0x21, 0xF1, 0x1C, 0x6C, 0x00, 0x6E, 0xB1, 0x67, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0xB8, 0x9A, 0x21, 0xF1, 0x1C, 0x6C, +0x01, 0x6E, 0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF5, 0xA8, 0x9A, 0x21, 0xF1, +0x1C, 0x6C, 0x02, 0x6E, 0x00, 0x18, 0xB9, 0x1A, +0x90, 0x67, 0x00, 0xF3, 0x00, 0x6D, 0x00, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x90, 0x67, 0x06, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x00, 0x18, 0xB9, 0x1A, +0x90, 0x67, 0x18, 0xF0, 0x00, 0x6D, 0x02, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF5, 0xB0, 0x9A, 0x90, 0x67, 0x00, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x90, 0x67, 0xB1, 0x67, +0x01, 0x6E, 0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, +0x20, 0x6A, 0x90, 0x67, 0xE0, 0xF5, 0xA4, 0x9A, +0x42, 0x10, 0x0E, 0x71, 0x43, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF5, 0x24, 0x9A, 0x21, 0xF1, +0x1C, 0x6C, 0x00, 0x6E, 0xB1, 0x67, 0x00, 0x18, +0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0xB8, 0x9A, 0x21, 0xF1, 0x1C, 0x6C, 0x01, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF5, 0xA8, 0x9A, 0x21, 0xF1, 0x1C, 0x6C, +0x02, 0x6E, 0x00, 0x18, 0xB9, 0x1A, 0x90, 0x67, +0x01, 0xF4, 0x00, 0x6D, 0x00, 0x6E, 0x00, 0x18, +0xB9, 0x1A, 0x90, 0x67, 0x06, 0xF0, 0x00, 0x6D, +0x01, 0x6E, 0x00, 0x18, 0xB9, 0x1A, 0x90, 0x67, +0x18, 0xF0, 0x00, 0x6D, 0x02, 0x6E, 0x00, 0x18, +0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF5, +0xB4, 0x9A, 0x90, 0x67, 0x00, 0x6E, 0x00, 0x18, +0xB9, 0x1A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, +0xA4, 0x9A, 0x90, 0x67, 0x01, 0x6E, 0x00, 0x18, +0xB9, 0x1A, 0x90, 0x67, 0xB1, 0x67, 0x02, 0x6E, +0x00, 0x18, 0xB9, 0x1A, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF6, 0x63, 0x13, 0x62, 0x12, 0xD1, 0x11, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF7, 0x4E, 0xA2, +0x30, 0xF0, 0x20, 0x6C, 0xA1, 0xF4, 0x18, 0x4C, +0xA2, 0x67, 0x0D, 0xD2, 0x00, 0x18, 0xAD, 0x2A, +0x0D, 0x92, 0x2A, 0x2A, 0x00, 0x68, 0x90, 0x67, +0x00, 0x18, 0x94, 0x07, 0x1F, 0x22, 0x2A, 0x6B, +0x78, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF6, +0x08, 0x4A, 0xFF, 0x69, 0x12, 0xEB, 0x69, 0xE2, +0x71, 0xA2, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x2C, 0xEA, 0x10, 0x2A, 0x90, 0x67, 0x00, 0x18, +0x16, 0x29, 0x09, 0x28, 0x7F, 0x6D, 0x4C, 0xED, +0x30, 0xF0, 0x20, 0x6C, 0xC1, 0xF4, 0x04, 0x4C, +0x2C, 0xED, 0x00, 0x18, 0xAD, 0x2A, 0x90, 0x67, +0x00, 0x18, 0x45, 0x3C, 0x01, 0x48, 0xFF, 0x6A, +0x4C, 0xE8, 0x80, 0x70, 0xD8, 0x61, 0xA5, 0x10, +0x0D, 0x92, 0xFF, 0x6B, 0xFF, 0x4A, 0x6C, 0xEA, +0x03, 0x5A, 0x80, 0xF0, 0x1B, 0x60, 0x00, 0x69, +0x91, 0x67, 0x00, 0x18, 0x94, 0x07, 0x80, 0xF0, +0x0F, 0x22, 0x2A, 0x6B, 0x78, 0xE9, 0x30, 0xF0, +0x20, 0x6A, 0x46, 0xF6, 0x08, 0x4A, 0x12, 0xEB, +0x69, 0xE2, 0x0C, 0xD2, 0x71, 0xA2, 0x80, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x7F, 0x2A, 0x14, 0x6D, 0xB8, 0xE9, 0x30, 0xF0, +0x20, 0x6A, 0xA1, 0xF5, 0x88, 0x41, 0xA2, 0xF6, +0x10, 0x4A, 0x88, 0x34, 0x91, 0xE2, 0x49, 0xE1, +0xA8, 0xF2, 0x4C, 0xA2, 0x83, 0x9C, 0x06, 0x00, +0x0F, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x6C, 0xEC, +0x49, 0xF7, 0x1C, 0x4A, 0x0E, 0xD4, 0x14, 0x6E, +0x90, 0x67, 0x12, 0xED, 0xB5, 0xE2, 0x00, 0x18, +0xBB, 0x11, 0x0E, 0x96, 0x0F, 0x97, 0x91, 0x67, +0xB0, 0x67, 0x00, 0x18, 0x3D, 0x2F, 0x0C, 0x93, +0x0D, 0x94, 0x81, 0xE3, 0x64, 0x6B, 0x4B, 0xE3, +0x20, 0xF0, 0x43, 0xC0, 0x1C, 0x29, 0x30, 0xF0, +0x20, 0x6C, 0xC1, 0xF4, 0x10, 0x4C, 0x00, 0x6D, +0x00, 0x18, 0xAD, 0x2A, 0x09, 0x92, 0x06, 0x95, +0x07, 0x96, 0x04, 0xD2, 0x08, 0x97, 0x0A, 0x92, +0x30, 0xF0, 0x20, 0x6C, 0xC1, 0xF4, 0x18, 0x4C, +0x05, 0xD2, 0x00, 0x18, 0xAD, 0x2A, 0x20, 0xF0, +0xA3, 0xA0, 0x30, 0xF0, 0x20, 0x6C, 0xE1, 0xF4, +0x1C, 0x4C, 0x00, 0x18, 0xAD, 0x2A, 0x91, 0x67, +0x00, 0x18, 0x45, 0x3C, 0x0D, 0x92, 0x03, 0x72, +0x33, 0x61, 0x0C, 0x93, 0x20, 0xF0, 0x44, 0xA3, +0x20, 0xF0, 0x65, 0xA3, 0x63, 0xEA, 0x06, 0x61, +0x0C, 0x94, 0x00, 0x68, 0x20, 0xF0, 0x66, 0xA4, +0x63, 0xEA, 0x0B, 0x60, 0x0C, 0x92, 0x20, 0xF0, +0x05, 0xA2, 0x20, 0xF0, 0x46, 0xA2, 0x43, 0xE8, +0x18, 0x67, 0x01, 0x58, 0x18, 0x67, 0x02, 0x6A, +0x03, 0xE2, 0x1A, 0x29, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x49, 0xE0, 0xA9, 0xF0, +0x99, 0xA2, 0x0C, 0xD2, 0x00, 0x18, 0x5B, 0x33, +0x30, 0xF0, 0x20, 0x6C, 0x01, 0xF5, 0x04, 0x4C, +0xB0, 0x67, 0x00, 0x18, 0xAD, 0x2A, 0x0C, 0x92, +0x30, 0xF0, 0x20, 0x6C, 0x01, 0xF5, 0x10, 0x4C, +0xA9, 0xF0, 0xB9, 0xA2, 0x00, 0x18, 0xAD, 0x2A, +0x01, 0x49, 0xFF, 0x6A, 0x4C, 0xE9, 0x80, 0x71, +0x7F, 0xF7, 0x06, 0x61, 0x0D, 0x93, 0x03, 0x5B, +0x1B, 0x60, 0x0D, 0x94, 0x30, 0xF0, 0x20, 0x68, +0xA2, 0xF6, 0x10, 0x48, 0x05, 0xE4, 0xA9, 0xF0, +0xB9, 0xA1, 0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF5, +0x00, 0x4C, 0x00, 0x18, 0xAD, 0x2A, 0xA9, 0xF0, +0x99, 0xA1, 0x00, 0x18, 0x5B, 0x33, 0x01, 0x6A, +0xA9, 0xF0, 0x5F, 0xC0, 0xA9, 0xF0, 0x5E, 0xA0, +0x01, 0x4A, 0xA9, 0xF0, 0x5E, 0xC0, 0x12, 0x10, +0x0D, 0x90, 0x03, 0x6A, 0x4E, 0xE8, 0x0E, 0x28, +0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF5, 0x10, 0x4C, +0x00, 0x18, 0xAD, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xA9, 0xF0, 0x1F, 0xC2, +0xA9, 0xF0, 0x1E, 0xC2, 0x13, 0x97, 0x12, 0x91, +0x11, 0x90, 0x0A, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x6A, 0x4C, 0xEE, 0x2A, 0x68, 0x18, 0xEE, +0x10, 0x93, 0x27, 0x67, 0x4C, 0xE9, 0x4C, 0xEC, +0x4C, 0xED, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x46, 0xF6, 0x08, 0x4A, 0x12, 0xE8, 0x01, 0xE2, +0x5C, 0xA0, 0x2E, 0xEA, 0x15, 0x22, 0xA4, 0x35, +0x5D, 0x67, 0x8D, 0xED, 0xD3, 0xC2, 0x76, 0xC2, +0x32, 0xC2, 0xB4, 0xC2, 0x59, 0xA0, 0x7D, 0x67, +0x06, 0x96, 0x57, 0xC3, 0x0C, 0x6A, 0x50, 0xC3, +0x06, 0x6A, 0x4F, 0xCB, 0x04, 0x94, 0x05, 0x95, +0x07, 0x97, 0x00, 0x18, 0xA1, 0x29, 0x3C, 0xC0, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x7D, 0x67, +0x4C, 0xEE, 0x4C, 0xEF, 0x20, 0xF0, 0xBC, 0xC3, +0x07, 0xD6, 0x08, 0xD7, 0x24, 0x67, 0x20, 0xF0, +0x9C, 0xA3, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF5, +0x70, 0x9B, 0x4C, 0xE9, 0x06, 0xD4, 0x34, 0x34, +0x6D, 0xE4, 0x60, 0xA3, 0x91, 0x67, 0x0F, 0x05, +0x6C, 0xEA, 0xC7, 0x67, 0x09, 0xD2, 0x00, 0x18, +0xBB, 0x2F, 0xE0, 0xF0, 0x08, 0x2A, 0x2A, 0x68, +0x18, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF6, +0x08, 0x4A, 0x12, 0xE8, 0x01, 0xE2, 0x07, 0x92, +0x3A, 0x2A, 0x72, 0xA0, 0xBF, 0x4A, 0xD1, 0x67, +0x6C, 0xEA, 0x52, 0xC0, 0x7D, 0x67, 0x20, 0xF0, +0x5C, 0xA3, 0x87, 0x43, 0x15, 0x4C, 0x43, 0xC0, +0x80, 0xA4, 0x47, 0x43, 0x15, 0x4A, 0x99, 0xC0, +0x40, 0xA2, 0x6E, 0xA0, 0x5A, 0xC0, 0x10, 0x6A, +0x6D, 0xEA, 0x4E, 0xC0, 0x07, 0x94, 0x7D, 0x67, +0x20, 0xF0, 0xFC, 0xA3, 0x04, 0xD4, 0x00, 0x6C, +0xA4, 0x67, 0x00, 0x18, 0xEA, 0x34, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x75, 0x23, +0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, 0x71, 0x61, +0x5D, 0x67, 0x20, 0xF0, 0xDC, 0xA2, 0x08, 0x97, +0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF5, 0x18, 0x4C, +0xB1, 0x67, 0x00, 0x18, 0xAD, 0x2A, 0x00, 0x6B, +0x06, 0xD3, 0x43, 0x67, 0x68, 0x10, 0x06, 0x94, +0x7F, 0x6A, 0x40, 0x6B, 0x8C, 0xEA, 0x92, 0xA0, +0x8D, 0xEB, 0x72, 0xC0, 0x9D, 0x67, 0x20, 0xF0, +0x7C, 0xA4, 0x8E, 0xA0, 0x63, 0xC0, 0x11, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0x6E, 0xC0, 0xA2, 0xF6, 0x10, 0x4C, 0x30, 0xF0, +0x20, 0x6B, 0x82, 0xF1, 0x08, 0x4B, 0x91, 0xE2, +0x6D, 0xE2, 0x46, 0xF5, 0x84, 0xA4, 0x60, 0xA3, +0xA4, 0x44, 0x62, 0xED, 0x01, 0x60, 0x8F, 0xE3, +0x78, 0xC0, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF3, +0x0C, 0x4B, 0x69, 0xE2, 0x9B, 0xA0, 0x40, 0xA2, +0x43, 0xEC, 0x03, 0x60, 0x58, 0xA0, 0x04, 0x4A, +0x58, 0xC0, 0x7D, 0x67, 0x20, 0xF0, 0x5C, 0x83, +0x00, 0x52, 0x03, 0x60, 0x58, 0xA0, 0x05, 0x4A, +0x58, 0xC0, 0x6E, 0xA0, 0x08, 0x6A, 0x6C, 0xEA, +0x0B, 0x22, 0x5D, 0x67, 0x20, 0xF0, 0xDC, 0xA2, +0xF8, 0xA0, 0x30, 0xF0, 0x20, 0x6C, 0x41, 0xF5, +0x0C, 0x4C, 0xB1, 0x67, 0x00, 0x18, 0xAD, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x17, 0x23, 0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, +0x13, 0x61, 0x7D, 0x67, 0x20, 0xF0, 0xDC, 0xA3, +0x58, 0xA0, 0x08, 0x97, 0x30, 0xF0, 0x20, 0x6C, +0x41, 0xF5, 0x1C, 0x4C, 0xB1, 0x67, 0x04, 0xD2, +0x00, 0x18, 0xAD, 0x2A, 0x01, 0x6C, 0x06, 0xD4, +0x05, 0x10, 0x00, 0x6A, 0x06, 0xD2, 0x03, 0x10, +0x01, 0x6B, 0x06, 0xD3, 0x40, 0x6A, 0x09, 0x94, +0x07, 0x6B, 0x00, 0x6D, 0x8C, 0xEB, 0x08, 0x94, +0x8C, 0x30, 0x01, 0xE3, 0x4D, 0xE8, 0x00, 0xF6, +0x00, 0x30, 0xFF, 0x6A, 0x00, 0xF6, 0x03, 0x30, +0x4C, 0xE8, 0x5D, 0x67, 0x20, 0xF0, 0xDC, 0xA2, +0x91, 0x67, 0x00, 0x18, 0x69, 0x2D, 0x91, 0x67, +0x01, 0x6D, 0xD0, 0x67, 0x00, 0x18, 0x69, 0x2D, +0x91, 0x67, 0x00, 0x18, 0x58, 0x32, 0x7D, 0x67, +0x20, 0xF0, 0xBC, 0xA3, 0x07, 0x96, 0x91, 0x67, +0x34, 0x31, 0x00, 0x18, 0x47, 0x31, 0x30, 0xF0, +0x20, 0x6A, 0x9D, 0x67, 0x40, 0xF5, 0x54, 0x9A, +0x20, 0xF0, 0x7C, 0xA4, 0x49, 0xE1, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x50, 0x9A, +0x49, 0xE1, 0x00, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF5, 0x58, 0x9A, 0x45, 0xE1, 0x47, 0x44, +0x11, 0x4A, 0x40, 0xA2, 0x40, 0xC1, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x2A, 0x68, 0x18, 0xEC, +0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF6, +0x08, 0x4A, 0x08, 0xD4, 0x01, 0x6C, 0x0A, 0xD5, +0x12, 0xE8, 0x01, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x8C, 0xEB, 0x0A, 0x23, 0x83, 0xF4, 0x40, 0x9A, +0x05, 0x5A, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0x61, 0xF5, 0x14, 0x4C, 0x00, 0x18, 0xAD, 0x2A, +0x08, 0x94, 0x00, 0x18, 0x16, 0x29, 0x7D, 0x67, +0x50, 0xC3, 0x90, 0xA3, 0x03, 0x6A, 0x06, 0xD4, +0xA0, 0xA0, 0x06, 0x91, 0x7F, 0x6C, 0x07, 0xD5, +0x71, 0xA0, 0x8C, 0xE9, 0x72, 0x36, 0x6A, 0x33, +0x4C, 0xEB, 0x4C, 0xEE, 0x5D, 0x67, 0xA7, 0x42, +0x11, 0x4D, 0xA0, 0xA5, 0x71, 0xC2, 0x09, 0xD6, +0xA8, 0xC0, 0xB2, 0xA0, 0x04, 0x6A, 0x4B, 0xEA, +0xAC, 0xEA, 0x6D, 0xEA, 0x01, 0x6B, 0x6B, 0xEB, +0x65, 0xC0, 0x66, 0xC0, 0x20, 0xF0, 0x68, 0xC0, +0x20, 0xF0, 0x69, 0xC0, 0x73, 0xA0, 0x6C, 0xEC, +0x80, 0x6B, 0x6B, 0xEB, 0x6D, 0xEA, 0x67, 0x4B, +0x6C, 0xEA, 0x52, 0xC0, 0x00, 0x6A, 0x55, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x93, 0xC0, 0xA2, 0xF6, +0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x0B, 0x23, 0x83, 0xF4, 0x40, 0x9A, +0x05, 0x5A, 0x07, 0x61, 0x06, 0x95, 0x30, 0xF0, +0x20, 0x6C, 0x61, 0xF5, 0x1C, 0x4C, 0x00, 0x18, +0xAD, 0x2A, 0x7E, 0xA0, 0x40, 0x6A, 0x6C, 0xEA, +0x30, 0x2A, 0x08, 0x94, 0x04, 0x05, 0x00, 0xF0, +0x11, 0x06, 0x01, 0x6F, 0x00, 0x18, 0xD9, 0x30, +0xC0, 0xF0, 0x04, 0x2A, 0xB1, 0xA0, 0xDD, 0x67, +0x51, 0xA6, 0x03, 0x6B, 0x85, 0x67, 0x6C, 0xEC, +0x82, 0xEA, 0x24, 0x60, 0x01, 0x4A, 0x0D, 0x6C, +0x51, 0xC6, 0x8B, 0xEC, 0x6C, 0xEA, 0x48, 0x32, +0xAC, 0xEC, 0x4D, 0xEC, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xC6, 0xA2, 0xF6, 0x10, 0x4A, 0x91, 0xC0, +0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x11, 0x23, 0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, +0x0D, 0x61, 0xB1, 0xA6, 0x30, 0xF0, 0x20, 0x6C, +0x81, 0xF5, 0x04, 0x4C, 0x00, 0x18, 0xAD, 0x2A, +0x05, 0x10, 0x71, 0xA0, 0x03, 0x6A, 0xBD, 0x67, +0x6C, 0xEA, 0x51, 0xC5, 0x07, 0x96, 0xC3, 0xE9, +0x50, 0x60, 0x5D, 0x67, 0xB0, 0xA2, 0x08, 0x94, +0x00, 0x18, 0x16, 0x30, 0x7D, 0x67, 0x50, 0xC3, +0xB0, 0xA3, 0xFF, 0x75, 0x06, 0x61, 0x87, 0x41, +0x4C, 0x4C, 0xFF, 0x6A, 0x4C, 0xEC, 0x06, 0xD4, +0x17, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x7C, 0x23, 0x83, 0xF4, 0x40, 0x9A, +0x05, 0x5A, 0x78, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0x81, 0xF5, 0x14, 0x4C, 0x00, 0x18, 0xAD, 0x2A, +0x71, 0x10, 0x01, 0x49, 0xFF, 0x6A, 0x4C, 0xE9, +0x08, 0x96, 0x09, 0x97, 0x91, 0x67, 0x00, 0x6D, +0x00, 0x18, 0xB4, 0x32, 0xBD, 0x67, 0x50, 0xC5, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0B, 0x23, 0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, +0x07, 0x61, 0xB0, 0xA5, 0x30, 0xF0, 0x20, 0x6C, +0x81, 0xF5, 0x1C, 0x4C, 0x00, 0x18, 0xAD, 0x2A, +0xDD, 0x67, 0x50, 0xA6, 0xFF, 0x72, 0x4E, 0x61, +0x07, 0x92, 0x43, 0xE9, 0x02, 0x61, 0x50, 0xC6, +0x49, 0x10, 0x06, 0x94, 0x8A, 0xE9, 0xD5, 0x61, +0x45, 0x10, 0x07, 0x95, 0xAE, 0xE9, 0x27, 0x29, +0x72, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, 0x66, 0x22, +0x06, 0x96, 0x80, 0x6A, 0x4B, 0xEA, 0xCC, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x5F, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x0C, 0x23, +0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, 0x08, 0x61, +0x5D, 0x67, 0xB0, 0xA2, 0x30, 0xF0, 0x20, 0x6C, +0xA1, 0xF5, 0x04, 0x4C, 0x00, 0x18, 0xAD, 0x2A, +0x07, 0x93, 0x80, 0x6A, 0x4B, 0xEA, 0x6D, 0xEA, +0x9D, 0x67, 0x50, 0xC4, 0x1B, 0x10, 0xBD, 0x67, +0xC7, 0x45, 0x15, 0x4E, 0xC0, 0xA6, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0xD0, 0xC5, +0xC8, 0xC0, 0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x10, 0x23, 0x83, 0xF4, 0x40, 0x9A, +0x05, 0x5A, 0x0C, 0x61, 0xB0, 0xA5, 0x30, 0xF0, +0x20, 0x6C, 0xA1, 0xF5, 0x0C, 0x4C, 0x00, 0x18, +0xAD, 0x2A, 0x04, 0x10, 0x0A, 0x93, 0x01, 0x69, +0x01, 0x73, 0x06, 0x61, 0x72, 0xA0, 0x19, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x52, 0xC0, 0x00, 0x69, +0x9D, 0x67, 0x71, 0xA4, 0x03, 0x6A, 0x91, 0xA0, +0x6C, 0xEA, 0x48, 0x33, 0x0D, 0x6A, 0x4B, 0xEA, +0x8C, 0xEA, 0x6D, 0xEA, 0x51, 0xC0, 0x08, 0x94, +0x02, 0x6D, 0x00, 0x6E, 0x00, 0x18, 0x69, 0x2D, +0x6F, 0xA0, 0x0F, 0x6A, 0xDD, 0x67, 0x6C, 0xEA, +0x10, 0x6B, 0x6D, 0xEA, 0x4F, 0xC0, 0x5D, 0x67, +0xB0, 0xA6, 0x08, 0x94, 0xF1, 0xA2, 0xD1, 0x67, +0x00, 0x18, 0x03, 0x35, 0x0F, 0x97, 0x0E, 0x91, +0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF7, 0x63, 0x11, 0x62, 0x10, 0xD1, 0x0F, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x2A, 0x68, 0x18, 0xEC, +0x4C, 0xED, 0x4C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, +0x46, 0xF6, 0x08, 0x4A, 0x08, 0xD4, 0x01, 0x6C, +0x07, 0xD5, 0x0D, 0xD6, 0x12, 0xE8, 0x01, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x63, 0xF4, 0x7C, 0x9A, 0x8C, 0xEB, 0x0A, 0x23, +0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0xA1, 0xF5, 0x14, 0x4C, +0x00, 0x18, 0xAD, 0x2A, 0x08, 0x94, 0x00, 0x18, +0x16, 0x29, 0x7D, 0x67, 0x50, 0xC3, 0x81, 0xA0, +0x40, 0xA0, 0x30, 0xA3, 0x0B, 0xD4, 0x91, 0xA0, +0x03, 0x6B, 0x7F, 0x6D, 0x92, 0x36, 0x8A, 0x34, +0x6C, 0xEC, 0x6C, 0xEE, 0x7D, 0x67, 0x91, 0xC3, +0x0C, 0xD6, 0xD2, 0xA0, 0x04, 0x6B, 0x6B, 0xEB, +0xCC, 0xEB, 0x8D, 0xEB, 0x01, 0x6C, 0x8B, 0xEC, +0x85, 0xC0, 0x86, 0xC0, 0x20, 0xF0, 0x88, 0xC0, +0x20, 0xF0, 0x89, 0xC0, 0x93, 0xA0, 0xAC, 0xE9, +0x23, 0xEA, 0x8C, 0xED, 0x80, 0x6C, 0x8B, 0xEC, +0x8D, 0xEB, 0x67, 0x4C, 0x8C, 0xEB, 0x72, 0xC0, +0x00, 0x6B, 0xB3, 0xC0, 0x75, 0xC0, 0x02, 0x60, +0x9D, 0x67, 0x50, 0xC4, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0C, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x08, 0x61, 0xDD, 0x67, +0xB0, 0xA6, 0x30, 0xF0, 0x20, 0x6C, 0x61, 0xF5, +0x1C, 0x4C, 0x00, 0x18, 0xAD, 0x2A, 0x07, 0x93, +0x00, 0x6A, 0x06, 0xD2, 0xE0, 0xF0, 0x0C, 0x23, +0xDD, 0x67, 0x08, 0x94, 0xB0, 0xA6, 0x00, 0x18, +0xDE, 0x2F, 0x07, 0x93, 0xFF, 0x72, 0x09, 0xD3, +0x0A, 0x60, 0x9D, 0x67, 0x50, 0xC4, 0x30, 0xA4, +0x7F, 0x6A, 0xA3, 0x67, 0x4C, 0xE9, 0xFF, 0x4D, +0xFF, 0x6A, 0x4C, 0xED, 0x09, 0xD5, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x0C, 0x23, +0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, 0x08, 0x61, +0xDD, 0x67, 0xB0, 0xA6, 0x30, 0xF0, 0x20, 0x6C, +0x81, 0xF5, 0x1C, 0x4C, 0x00, 0x18, 0xAD, 0x2A, +0x09, 0x92, 0xA0, 0xF0, 0x1F, 0x22, 0x7E, 0xA0, +0x40, 0x6A, 0x6C, 0xEA, 0x1F, 0x2A, 0x08, 0x94, +0x04, 0x05, 0x00, 0xF0, 0x11, 0x06, 0x02, 0x6F, +0x00, 0x18, 0xD9, 0x30, 0xA0, 0xF0, 0x12, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x12, 0x23, 0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, +0x0E, 0x61, 0x7D, 0x67, 0xB0, 0xA3, 0x30, 0xF0, +0x20, 0x6C, 0xA1, 0xF5, 0x04, 0x4C, 0x00, 0x18, +0xAD, 0x2A, 0x05, 0x10, 0x71, 0xA0, 0x03, 0x6A, +0x9D, 0x67, 0x6C, 0xEA, 0x51, 0xC4, 0x0B, 0x95, +0x00, 0x6E, 0x0A, 0xD6, 0xA3, 0xE9, 0x76, 0x60, +0x5D, 0x67, 0x67, 0x42, 0x25, 0x4B, 0x60, 0xA3, +0x06, 0xD6, 0x70, 0xC2, 0x8D, 0x10, 0x08, 0x96, +0x0C, 0x97, 0x91, 0x67, 0x01, 0x6D, 0x00, 0x18, +0xB4, 0x32, 0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0C, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x08, 0x61, 0x07, 0x95, +0x09, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0xA1, 0xF5, +0x1C, 0x4C, 0x00, 0x18, 0xAD, 0x2A, 0x07, 0x95, +0x06, 0xD1, 0xFF, 0x75, 0x2E, 0x61, 0xC8, 0x41, +0xB4, 0x4E, 0xFF, 0x6A, 0x4C, 0xEE, 0x07, 0xD6, +0x06, 0x92, 0xFF, 0x4A, 0x06, 0xD2, 0x06, 0x93, +0xFF, 0x6A, 0x4C, 0xEB, 0x06, 0xD3, 0x06, 0x95, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF5, 0x10, 0x4A, +0x24, 0x33, 0xA4, 0x34, 0x4D, 0xE3, 0x49, 0xE4, +0x60, 0xAB, 0x40, 0xAA, 0x63, 0xEA, 0x0F, 0x60, +0x85, 0x67, 0x0C, 0x96, 0x08, 0x95, 0x00, 0x18, +0x5B, 0x2F, 0xFF, 0x72, 0x08, 0x60, 0x72, 0xA0, +0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x52, 0xC0, +0x06, 0x96, 0x07, 0xD6, 0x06, 0x10, 0x06, 0x92, +0x07, 0x93, 0x6A, 0xEA, 0xD9, 0x61, 0xFF, 0x6C, +0x07, 0xD4, 0x07, 0x95, 0x0B, 0x96, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF5, 0x10, 0x4A, 0xA4, 0x33, +0xC4, 0x34, 0x4D, 0xE3, 0x49, 0xE4, 0x60, 0xAB, +0x40, 0xAA, 0x43, 0xEB, 0x08, 0x60, 0x5D, 0x67, +0xD0, 0xC2, 0x72, 0xA0, 0x19, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x52, 0xC0, 0x05, 0x10, 0x9D, 0x67, +0xA7, 0x44, 0x15, 0x4D, 0xA0, 0xA5, 0xB0, 0xC4, +0x0A, 0x96, 0xFF, 0x6A, 0x06, 0x91, 0x01, 0x4E, +0x4C, 0xEE, 0x0A, 0xD6, 0x0A, 0x92, 0x09, 0x93, +0x63, 0xEA, 0x8D, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0F, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x0B, 0x61, 0xDD, 0x67, +0xB0, 0xA6, 0x30, 0xF0, 0x20, 0x6C, 0xA1, 0xF5, +0x0C, 0x4C, 0x00, 0x18, 0xAD, 0x2A, 0x01, 0x6A, +0x06, 0xD2, 0x02, 0x10, 0x01, 0x6B, 0x06, 0xD3, +0x0D, 0x94, 0x01, 0x74, 0x04, 0x60, 0x72, 0xA0, +0x18, 0x6A, 0x6C, 0xEA, 0x07, 0x2A, 0x72, 0xA0, +0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x00, 0x6D, +0x52, 0xC0, 0x06, 0xD5, 0xDD, 0x67, 0x50, 0xA6, +0x91, 0xA0, 0x02, 0x6D, 0x48, 0xC0, 0x71, 0xA6, +0x03, 0x6A, 0x00, 0x6E, 0x6C, 0xEA, 0x48, 0x33, +0x0D, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x6D, 0xEA, +0x51, 0xC0, 0x08, 0x94, 0x00, 0x18, 0x69, 0x2D, +0x6F, 0xA0, 0x0F, 0x6A, 0x6C, 0xEA, 0x20, 0x6B, +0x6D, 0xEA, 0x4F, 0xC0, 0x5D, 0x67, 0xF1, 0xA2, +0x08, 0x94, 0xB0, 0xA2, 0x06, 0x96, 0x00, 0x18, +0x03, 0x35, 0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, +0x09, 0x63, 0x00, 0xEF, 0xF2, 0x63, 0x1B, 0x62, +0x1A, 0xD1, 0x19, 0xD0, 0x00, 0x18, 0xB9, 0x30, +0x00, 0x6A, 0x15, 0xD2, 0x10, 0xD2, 0x10, 0x92, +0x2A, 0x69, 0x10, 0x94, 0x38, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x46, 0xF6, 0x08, 0x4A, 0x30, 0xF0, +0x20, 0x6B, 0xA2, 0xF6, 0x10, 0x4B, 0x0F, 0xD3, +0x12, 0xE9, 0x25, 0xE2, 0x10, 0x92, 0xA1, 0xF5, +0x08, 0x4A, 0x48, 0x32, 0x49, 0xE3, 0x03, 0x9A, +0x00, 0x18, 0x16, 0x29, 0x0E, 0xD2, 0x80, 0xA1, +0x10, 0x96, 0x0F, 0x97, 0x14, 0xD4, 0x51, 0xA1, +0x08, 0x04, 0x4A, 0x32, 0x13, 0xD2, 0x13, 0x95, +0x03, 0x6A, 0x4C, 0xED, 0xE9, 0xE6, 0xA8, 0xF2, +0x4C, 0xA2, 0x13, 0xD5, 0x30, 0xF0, 0x20, 0x6D, +0x12, 0xD2, 0x14, 0x6A, 0x58, 0xEE, 0x49, 0xF7, +0x1C, 0x4D, 0x14, 0x6E, 0x12, 0xEA, 0x55, 0xE5, +0x00, 0x18, 0xBB, 0x11, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF5, 0x50, 0x9A, 0x60, 0xA2, 0x20, 0x6A, +0x6C, 0xEA, 0x35, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF5, 0x40, 0x9A, 0x00, 0x6E, 0xA0, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF5, 0x5C, 0x9A, +0xE0, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF6, +0x40, 0x9A, 0x80, 0xA2, 0xFF, 0x6A, 0x4C, 0xED, +0x4C, 0xEC, 0x4C, 0xEF, 0x00, 0x18, 0x03, 0x35, +0x10, 0x94, 0x12, 0x97, 0x08, 0x05, 0xD0, 0x67, +0x00, 0x18, 0x3D, 0x2F, 0x0C, 0x94, 0xB0, 0x67, +0x00, 0x18, 0x12, 0x2F, 0x0F, 0x93, 0x63, 0xF4, +0x5C, 0x9B, 0x01, 0x6B, 0x6C, 0xEA, 0x40, 0xF5, +0x12, 0x22, 0x0F, 0x94, 0x83, 0xF4, 0x40, 0x9C, +0x05, 0x5A, 0x40, 0xF5, 0x0C, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0xC1, 0xF5, 0x0C, 0x4C, 0x00, 0x18, +0xAD, 0x2A, 0x40, 0xF5, 0x04, 0x10, 0x10, 0x94, +0x00, 0x18, 0x94, 0x07, 0x40, 0xF5, 0x17, 0x22, +0x40, 0xF5, 0x15, 0x20, 0x71, 0xA1, 0x80, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6D, 0xAC, 0xEA, +0x40, 0xF5, 0x0D, 0x2A, 0x0F, 0x96, 0x01, 0x6B, +0x63, 0xF4, 0x5C, 0x9E, 0x6C, 0xEA, 0x0B, 0x22, +0x83, 0xF4, 0x40, 0x9E, 0x05, 0x5A, 0x07, 0x61, +0x10, 0x95, 0x30, 0xF0, 0x20, 0x6C, 0xC1, 0xF5, +0x14, 0x4C, 0x00, 0x18, 0xAD, 0x2A, 0x92, 0xA1, +0x40, 0x6B, 0xFF, 0x6A, 0x8C, 0xEB, 0x05, 0x2B, +0x91, 0xA1, 0x80, 0x4B, 0x8C, 0xEB, 0x4C, 0xEB, +0x15, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x00, 0xF5, 0x10, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x00, 0xF5, 0x0B, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0xC1, 0xF5, 0x1C, 0x4C, +0x10, 0x95, 0x26, 0x10, 0x09, 0x58, 0x28, 0x61, +0x93, 0xA1, 0x07, 0x6B, 0xA4, 0x67, 0x6C, 0xED, +0xC5, 0x67, 0x4C, 0xEE, 0x21, 0x26, 0x08, 0x6E, +0xFF, 0x4D, 0xCB, 0xEE, 0x6C, 0xED, 0x8C, 0xEE, +0xAD, 0xEE, 0x30, 0xF0, 0x20, 0x6C, 0xD3, 0xC1, +0xA2, 0xF6, 0x10, 0x4C, 0x63, 0xF4, 0xBC, 0x9C, +0x01, 0x6F, 0xEC, 0xED, 0xE0, 0xF4, 0x0B, 0x25, +0x83, 0xF4, 0x80, 0x9C, 0x05, 0x5C, 0xE0, 0xF4, +0x06, 0x61, 0xA6, 0x67, 0x6C, 0xED, 0x30, 0xF0, +0x20, 0x6C, 0xE1, 0xF5, 0x08, 0x4C, 0x4C, 0xED, +0x00, 0x18, 0xAD, 0x2A, 0xC0, 0xF4, 0x1B, 0x10, +0x0E, 0x92, 0x0E, 0x94, 0x7F, 0x6F, 0x80, 0x6B, +0xEC, 0xEA, 0x6C, 0xEC, 0x11, 0xD2, 0x16, 0xD4, +0x73, 0xA1, 0x08, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x53, 0xC1, 0x0A, 0x96, 0x09, 0x95, 0x0B, 0x93, +0x0C, 0x97, 0xA9, 0xE6, 0x69, 0xE2, 0x08, 0x94, +0xFF, 0x65, 0xE9, 0xE2, 0xFF, 0xF7, 0x1F, 0x6F, +0xEC, 0xEA, 0x91, 0xE2, 0x1C, 0x65, 0x04, 0xD2, +0xB1, 0xE3, 0xC4, 0x32, 0x49, 0xE4, 0x64, 0x33, +0x69, 0xE2, 0x7F, 0x67, 0x68, 0x35, 0xA9, 0xE2, +0x10, 0x94, 0x12, 0x96, 0x05, 0xD2, 0x58, 0x67, +0xB0, 0x67, 0x4C, 0xEF, 0x00, 0x18, 0x4E, 0x30, +0x11, 0x93, 0x14, 0x94, 0x63, 0xEC, 0x22, 0x60, +0x16, 0x95, 0x0E, 0xD4, 0x07, 0x25, 0x80, 0x6E, +0xCB, 0xEE, 0xE4, 0x67, 0xCD, 0xEF, 0xFF, 0x6A, +0x4C, 0xEF, 0x0E, 0xD7, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0D, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x09, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0xE1, 0xF5, 0x14, 0x4C, 0x00, 0x18, +0xAD, 0x2A, 0x14, 0x92, 0x11, 0xD2, 0x02, 0x10, +0x14, 0x93, 0x11, 0xD3, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0D, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x09, 0x61, 0x08, 0x96, +0x0C, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0xE1, 0xF5, +0x1C, 0x4C, 0xB0, 0x67, 0x00, 0x18, 0xAD, 0x2A, +0x4F, 0x40, 0x07, 0x5A, 0x12, 0x60, 0x76, 0xA1, +0x01, 0x6A, 0x6C, 0xEA, 0x0E, 0x2A, 0x4E, 0xA1, +0x56, 0x33, 0x03, 0x53, 0x04, 0x60, 0x20, 0x4A, +0x4E, 0xC1, 0x60, 0xF4, 0x04, 0x10, 0x1F, 0x6B, +0x4C, 0xEB, 0x60, 0x6A, 0x4D, 0xEB, 0x6E, 0xC1, +0x04, 0x10, 0x6E, 0xA1, 0x1F, 0x6A, 0x6C, 0xEA, +0x4E, 0xC1, 0x6E, 0xA1, 0x20, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0xA0, 0x72, +0x53, 0x61, 0x10, 0x94, 0x05, 0x6D, 0x00, 0x6E, +0x00, 0x18, 0x69, 0x2D, 0x0C, 0x92, 0x0B, 0x93, +0x12, 0x95, 0x4D, 0xE3, 0xAD, 0xE3, 0x0A, 0x32, +0x63, 0xEA, 0x14, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0xE0, 0xF0, 0x0A, 0x23, +0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, 0xE0, 0xF0, +0x05, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x01, 0xF6, +0x0C, 0x4C, 0xDE, 0x10, 0x12, 0x96, 0x14, 0x26, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0xC0, 0xF0, 0x14, 0x23, 0x83, 0xF4, 0x40, 0x9A, +0x05, 0x5A, 0xC0, 0xF0, 0x0F, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x01, 0xF6, 0x14, 0x4C, 0xC8, 0x10, +0x08, 0x92, 0x03, 0xEA, 0x00, 0xF4, 0x17, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0A, 0x23, 0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, +0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF6, +0x00, 0x4C, 0x00, 0x18, 0xAD, 0x2A, 0x10, 0x94, +0x01, 0x6D, 0x00, 0x18, 0x8A, 0x35, 0xFF, 0x13, +0x12, 0x97, 0x10, 0x94, 0x08, 0x05, 0xD0, 0x67, +0x00, 0x18, 0x3D, 0x2F, 0x0C, 0x94, 0xB0, 0x67, +0x0F, 0xD2, 0x00, 0x18, 0x12, 0x2F, 0x17, 0xD2, +0x6E, 0xA1, 0x10, 0x6A, 0xFF, 0x6F, 0x6C, 0xEA, +0xEC, 0xEA, 0x0B, 0x22, 0x0F, 0x94, 0x86, 0x32, +0x59, 0xC1, 0x17, 0x95, 0xA6, 0x32, 0x5A, 0xC1, +0x11, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x4E, 0xC1, +0x0E, 0x10, 0x59, 0xA1, 0x0F, 0x96, 0x44, 0x33, +0x49, 0xE3, 0xC9, 0xE2, 0x4B, 0x32, 0x59, 0xC1, +0x17, 0x97, 0x7A, 0xA1, 0xE4, 0x32, 0x6D, 0xE7, +0x49, 0xE3, 0x4B, 0x32, 0x5A, 0xC1, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF5, 0x50, 0x9A, 0x60, 0xA2, +0x40, 0x6A, 0x6C, 0xEA, 0x27, 0x22, 0x0B, 0x94, +0x09, 0x92, 0x0C, 0x95, 0x0A, 0x96, 0x1A, 0x65, +0x49, 0xE4, 0xA9, 0xE2, 0xC4, 0x33, 0x6D, 0xE2, +0x89, 0xE5, 0x44, 0x32, 0xB8, 0x67, 0xFF, 0xF7, +0x1F, 0x6F, 0x49, 0xE3, 0xAD, 0xE6, 0x12, 0x96, +0xEC, 0xEA, 0x04, 0xD2, 0x09, 0xE2, 0xCB, 0xE2, +0xEC, 0xEA, 0x05, 0xD2, 0x0F, 0x92, 0x91, 0xE3, +0x08, 0x93, 0x06, 0xD2, 0x59, 0xA1, 0x10, 0x95, +0x0E, 0x96, 0x6D, 0xE4, 0x30, 0xF0, 0x20, 0x6C, +0x21, 0xF6, 0x08, 0x4C, 0x6C, 0xEF, 0x07, 0xD2, +0x00, 0x18, 0xAD, 0x2A, 0x99, 0xA1, 0x11, 0x95, +0x16, 0x96, 0x00, 0x18, 0x31, 0x2F, 0x13, 0x93, +0x05, 0x2B, 0x40, 0x32, 0x5C, 0x32, 0x42, 0x32, +0x42, 0x32, 0x07, 0x10, 0x13, 0x94, 0x02, 0x74, +0x04, 0x61, 0x44, 0x32, 0xFF, 0xF7, 0x1F, 0x6B, +0x6C, 0xEA, 0x45, 0xC9, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0C, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x08, 0x61, 0xB9, 0xA1, +0xDA, 0xA1, 0x30, 0xF0, 0x20, 0x6C, 0x41, 0xF6, +0x10, 0x4C, 0x00, 0x18, 0xAD, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, +0x7C, 0x9A, 0x02, 0x6C, 0x8C, 0xEB, 0x0C, 0x23, +0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, 0x08, 0x61, +0xB9, 0xA1, 0xDA, 0xA1, 0x30, 0xF0, 0x20, 0x6C, +0x41, 0xF6, 0x10, 0x4C, 0x00, 0x18, 0xAD, 0x2A, +0x12, 0x95, 0x08, 0x5D, 0x19, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x0A, 0x23, +0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x61, 0xF6, 0x00, 0x4C, +0x00, 0x18, 0xAD, 0x2A, 0x10, 0x94, 0x01, 0x6D, +0xC5, 0x67, 0x00, 0x18, 0x3E, 0x36, 0x4B, 0x13, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0B, 0x23, 0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, +0x07, 0x61, 0xBD, 0xA1, 0x30, 0xF0, 0x20, 0x6C, +0x61, 0xF6, 0x08, 0x4C, 0x00, 0x18, 0xAD, 0x2A, +0x11, 0x96, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x49, 0xE6, 0x86, 0xF5, 0x18, 0xA2, +0x0F, 0x97, 0x03, 0xEF, 0x15, 0x60, 0xEB, 0xE0, +0x0E, 0xD2, 0x0E, 0x93, 0xFF, 0x6A, 0x0F, 0x6C, +0x4C, 0xEB, 0x0E, 0xD3, 0x70, 0xA1, 0x01, 0x6D, +0x6E, 0x32, 0x8C, 0xEA, 0x44, 0x32, 0xAD, 0xEA, +0x8C, 0xEA, 0x80, 0x4C, 0xF8, 0x4C, 0x4C, 0x32, +0x6C, 0xEC, 0x4D, 0xEC, 0x90, 0xC1, 0x11, 0x10, +0x0F, 0x94, 0xFF, 0x6A, 0x13, 0xE4, 0x4C, 0xEC, +0x0E, 0xD4, 0x70, 0xA1, 0x0F, 0x6C, 0x6E, 0x32, +0x8C, 0xEA, 0x44, 0x32, 0x8C, 0xEA, 0x4C, 0x34, +0x79, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x8D, 0xEA, +0x50, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x12, 0x23, 0x83, 0xF4, 0x40, 0x9A, +0x05, 0x5A, 0x0E, 0x61, 0x50, 0xA1, 0x0F, 0x96, +0x0E, 0x97, 0x4E, 0x32, 0x0F, 0x6B, 0x30, 0xF0, +0x20, 0x6C, 0x6C, 0xEA, 0x61, 0xF6, 0x14, 0x4C, +0xB0, 0x67, 0x04, 0xD2, 0x00, 0x18, 0xAD, 0x2A, +0x0E, 0x95, 0x04, 0x5D, 0x21, 0x61, 0x10, 0x33, +0x0F, 0x96, 0xFF, 0xF7, 0x1F, 0x6A, 0x0F, 0xE3, +0x4C, 0xEB, 0xCD, 0xE3, 0x4C, 0xEB, 0x6F, 0x33, +0x4C, 0xEB, 0x50, 0xA1, 0x01, 0x6C, 0x4E, 0x32, +0x8C, 0xEA, 0x08, 0x22, 0x11, 0x97, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x49, 0xE7, +0x66, 0x33, 0x08, 0x10, 0x11, 0x94, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x66, 0x33, +0x49, 0xE4, 0x01, 0x4B, 0x86, 0xF5, 0x78, 0xC2, +0x11, 0x95, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x4D, 0xE5, 0x86, 0xF5, 0x78, 0xA3, +0x01, 0x6C, 0x0F, 0xD3, 0x65, 0x67, 0xE3, 0xF2, +0x10, 0x4B, 0x64, 0x33, 0x4D, 0xE3, 0x0C, 0xA3, +0x63, 0xF4, 0x7C, 0x9A, 0x8C, 0xEB, 0x0C, 0x23, +0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, 0x08, 0x61, +0x0F, 0x95, 0x30, 0xF0, 0x20, 0x6C, 0xA1, 0xF6, +0x00, 0x4C, 0xD0, 0x67, 0x00, 0x18, 0xAD, 0x2A, +0x0E, 0x93, 0xDD, 0x67, 0xE7, 0x46, 0x31, 0x4F, +0x0F, 0x5B, 0x40, 0xA7, 0x01, 0x61, 0x0E, 0x6A, +0xFF, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x49, 0xE3, 0x86, 0xF6, +0x54, 0xA2, 0x0B, 0x5A, 0x07, 0x61, 0x50, 0xA1, +0x03, 0x6C, 0x4E, 0x32, 0x8C, 0xEA, 0x15, 0x22, +0x03, 0x72, 0x13, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x4D, 0xE3, 0x86, 0xF6, +0x54, 0xA3, 0x41, 0xE0, 0xFF, 0x6A, 0x4C, 0xE8, +0x0A, 0x58, 0x03, 0x60, 0x01, 0x6D, 0x00, 0x68, +0x08, 0x10, 0xF6, 0x48, 0x4C, 0xE8, 0x01, 0x6D, +0x01, 0x10, 0x00, 0x6D, 0x1A, 0x58, 0x01, 0x61, +0x19, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x0B, 0x23, 0x83, 0xF4, 0x40, 0x9A, +0x05, 0x5A, 0x07, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0xA1, 0xF6, 0x1C, 0x4C, 0xD0, 0x67, 0x00, 0x18, +0xAD, 0x2A, 0x11, 0x93, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0xE3, 0xF2, 0x10, 0x4B, +0x64, 0x33, 0x49, 0xE3, 0x0B, 0x58, 0x06, 0xCA, +0x02, 0x6A, 0x09, 0x60, 0x06, 0x58, 0x03, 0x6A, +0x06, 0x60, 0x03, 0x58, 0x58, 0x67, 0x01, 0x5A, +0x58, 0x67, 0x05, 0x6B, 0x4B, 0xE3, 0x0F, 0x93, +0x12, 0xD0, 0x0B, 0x5B, 0x08, 0x61, 0xF6, 0x4B, +0x67, 0xEA, 0x6D, 0xE0, 0x12, 0xD3, 0x12, 0x94, +0xFF, 0x6B, 0x6C, 0xEC, 0x12, 0xD4, 0x0F, 0x93, +0x12, 0x95, 0xF6, 0x4B, 0x67, 0xEA, 0x6D, 0xE5, +0xFF, 0x6A, 0x4C, 0xEB, 0x28, 0x5D, 0x14, 0xD3, +0x02, 0x61, 0x28, 0x6E, 0x12, 0xD6, 0x03, 0x58, +0x05, 0x60, 0x17, 0x97, 0xFF, 0x6A, 0xE6, 0x37, +0x4C, 0xEF, 0x15, 0xD7, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0D, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x09, 0x61, 0x12, 0x95, +0x15, 0x96, 0x14, 0x97, 0x30, 0xF0, 0x20, 0x6C, +0xC1, 0xF6, 0x10, 0x4C, 0x00, 0x18, 0xAD, 0x2A, +0x16, 0x92, 0x13, 0x22, 0x11, 0x93, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x49, 0xE3, +0xE6, 0xF4, 0x50, 0xA2, 0x00, 0x6C, 0x0E, 0xD4, +0x02, 0x5A, 0x10, 0x61, 0xFF, 0x4A, 0x0E, 0xD2, +0x0E, 0x95, 0xFF, 0x6A, 0x4C, 0xED, 0x0E, 0xD5, +0x09, 0x10, 0x11, 0x96, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x49, 0xE6, 0xE6, 0xF4, +0x50, 0xA2, 0x0E, 0xD2, 0x11, 0x97, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x49, 0xE7, +0x86, 0xF4, 0x5C, 0xA2, 0xFF, 0x68, 0x0F, 0xD2, +0x76, 0xA1, 0x01, 0x6A, 0x6C, 0xEA, 0x1A, 0x22, +0x87, 0x67, 0x00, 0x18, 0x59, 0x2D, 0x05, 0x22, +0x0E, 0x92, 0x02, 0x4A, 0x0C, 0xEA, 0x0E, 0xD2, +0x11, 0x10, 0x11, 0x94, 0x00, 0x18, 0x45, 0x2D, +0x05, 0x22, 0x0E, 0x93, 0x05, 0x4B, 0x0C, 0xEB, +0x0E, 0xD3, 0x08, 0x10, 0x0F, 0x94, 0x0E, 0x95, +0x03, 0x4C, 0x06, 0x4D, 0x0C, 0xEC, 0x0C, 0xED, +0x0F, 0xD4, 0x0E, 0xD5, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF6, 0x44, 0x9A, 0xFF, 0x6B, 0x80, 0xA2, +0x7F, 0x6A, 0x8C, 0xEA, 0x08, 0x22, 0x0F, 0x96, +0x0E, 0x97, 0x02, 0x4E, 0x05, 0x4F, 0x6C, 0xEE, +0x6C, 0xEF, 0x0F, 0xD6, 0x0E, 0xD7, 0x12, 0x92, +0x15, 0x93, 0x43, 0xEB, 0x3A, 0x60, 0x14, 0x94, +0x0E, 0x95, 0x15, 0x96, 0x0F, 0x97, 0x6F, 0xE4, +0x6D, 0xE5, 0xD7, 0xE2, 0xA9, 0xE7, 0x11, 0x97, +0x30, 0xF0, 0x20, 0x6E, 0xFF, 0x6C, 0xA2, 0xF6, +0x10, 0x4E, 0x8C, 0xEB, 0xAB, 0x35, 0xD9, 0xE7, +0x46, 0xF5, 0xA4, 0xC6, 0xA3, 0x67, 0x8C, 0xEB, +0x47, 0x5B, 0x8C, 0xEA, 0x01, 0x61, 0x46, 0x6D, +0xFF, 0x6C, 0x65, 0x67, 0x8C, 0xEB, 0x0E, 0xD3, +0x62, 0x67, 0x8C, 0xEA, 0x29, 0x5A, 0x01, 0x61, +0x28, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x6C, +0xA2, 0xF6, 0x10, 0x4A, 0x6C, 0xEC, 0x63, 0xF4, +0x7C, 0x9A, 0x0F, 0xD4, 0x01, 0x6C, 0x8C, 0xEB, +0x0C, 0x23, 0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, +0x08, 0x61, 0x0F, 0x95, 0x0E, 0x96, 0x30, 0xF0, +0x20, 0x6C, 0xE1, 0xF6, 0x04, 0x4C, 0x00, 0x18, +0xAD, 0x2A, 0x20, 0xF0, 0x07, 0xA1, 0x3F, 0x6A, +0x4C, 0xE8, 0x20, 0xF0, 0x47, 0x81, 0x00, 0x52, +0x17, 0x60, 0x0E, 0x95, 0x03, 0xED, 0x03, 0x60, +0x00, 0x6E, 0x0E, 0xD6, 0x05, 0x10, 0x0E, 0x97, +0xFF, 0x6A, 0x1F, 0xE7, 0x4C, 0xEF, 0x0E, 0xD7, +0x0F, 0x92, 0x03, 0xEA, 0x03, 0x60, 0x00, 0x6B, +0x0F, 0xD3, 0x10, 0x10, 0x0F, 0x94, 0xFF, 0x6A, +0x13, 0xE4, 0x4C, 0xEC, 0x0F, 0xD4, 0x0A, 0x10, +0x09, 0x20, 0x0E, 0x95, 0x0F, 0x96, 0xFF, 0x6A, +0x15, 0xE5, 0x19, 0xE6, 0x4C, 0xED, 0x4C, 0xEE, +0x0E, 0xD5, 0x0F, 0xD6, 0x0E, 0x94, 0xFD, 0x67, +0x67, 0x47, 0x31, 0x4B, 0x5B, 0x5C, 0x40, 0xA3, +0x01, 0x61, 0x5A, 0x6A, 0x0F, 0x94, 0xFF, 0x6B, +0xA2, 0x67, 0xDD, 0x67, 0x6C, 0xED, 0xE7, 0x46, +0x8C, 0xEB, 0x35, 0x4F, 0x42, 0x5B, 0x11, 0xD5, +0x40, 0xA7, 0x01, 0x61, 0x41, 0x6A, 0xFF, 0x6D, +0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, +0x0E, 0xD5, 0x8C, 0xEB, 0x0E, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x0A, 0x61, 0x20, 0xF0, +0xA7, 0xA1, 0x0E, 0x96, 0x11, 0x97, 0x30, 0xF0, +0x20, 0x6C, 0xE1, 0xF6, 0x1C, 0x4C, 0x00, 0x18, +0xAD, 0x2A, 0x11, 0x96, 0x20, 0xF0, 0x47, 0xA1, +0x0E, 0x97, 0x01, 0x6C, 0x06, 0xD6, 0x04, 0x6E, +0x5E, 0x32, 0xA4, 0x67, 0x07, 0xD7, 0xE6, 0x67, +0x04, 0xD2, 0x05, 0xD0, 0x00, 0x18, 0xDA, 0x2B, +0xB2, 0xA1, 0x03, 0x6C, 0xFF, 0x6A, 0xAE, 0x35, +0x8C, 0xED, 0x63, 0x45, 0x8C, 0xEB, 0x02, 0x5B, +0x4D, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x10, 0x4B, 0x63, 0xF4, 0x9C, 0x9B, 0x01, 0x6E, +0x0F, 0x45, 0xCC, 0xEC, 0x4C, 0xE8, 0x0B, 0x24, +0x83, 0xF4, 0x60, 0x9B, 0x05, 0x5B, 0x07, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF7, 0x00, 0x4C, +0x4C, 0xED, 0x00, 0x18, 0xAD, 0x2A, 0xB2, 0xA1, +0x03, 0x6B, 0x11, 0xE1, 0xAE, 0x32, 0x6C, 0xEA, +0xFF, 0x4A, 0x6C, 0xEA, 0x4C, 0x36, 0x19, 0x6A, +0x4B, 0xEA, 0xAC, 0xEA, 0xCD, 0xEA, 0x05, 0xA4, +0x52, 0xC1, 0x20, 0xF0, 0x48, 0xA4, 0xFF, 0x72, +0x09, 0x60, 0x13, 0xD2, 0x91, 0xA1, 0x4C, 0xEB, +0x0D, 0x6A, 0x4B, 0xEA, 0x68, 0x33, 0x8C, 0xEA, +0x6D, 0xEA, 0x51, 0xC1, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0C, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x08, 0x61, 0x13, 0x95, +0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF7, 0x0C, 0x4C, +0xD0, 0x67, 0x00, 0x18, 0xAD, 0x2A, 0x10, 0x94, +0x13, 0x97, 0xB0, 0x67, 0x01, 0x6E, 0x00, 0x18, +0x03, 0x35, 0xC5, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF5, 0x50, 0x9A, 0x60, 0xA2, 0x40, 0x6A, +0x6C, 0xEA, 0x04, 0x22, 0x6E, 0xA1, 0x08, 0x6A, +0x6D, 0xEA, 0x04, 0x10, 0x6E, 0xA1, 0x09, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x4E, 0xC1, 0x5A, 0xA1, +0x17, 0x5A, 0x17, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0A, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x06, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x21, 0xF7, 0x18, 0x4C, 0x00, 0x18, +0xAD, 0x2A, 0x01, 0x6D, 0x10, 0x94, 0xC5, 0x67, +0x2F, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x0C, 0x23, 0x83, 0xF4, 0x40, 0x9A, +0x05, 0x5A, 0x08, 0x61, 0x0E, 0x95, 0x11, 0x96, +0x30, 0xF0, 0x20, 0x6C, 0x21, 0xF7, 0x1C, 0x4C, +0x00, 0x18, 0xAD, 0x2A, 0x59, 0xA1, 0x11, 0x93, +0x43, 0xEB, 0x1E, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0A, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x06, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x41, 0xF7, 0x0C, 0x4C, 0x00, 0x18, +0xAD, 0x2A, 0x10, 0x94, 0x01, 0x6D, 0x00, 0x6E, +0x00, 0x18, 0x3E, 0x36, 0x00, 0x6A, 0x49, 0xC1, +0x4C, 0xA1, 0x01, 0x4A, 0x4C, 0xC1, 0x63, 0x10, +0x0E, 0x94, 0x83, 0xEA, 0x44, 0x60, 0x49, 0xA1, +0x01, 0x6C, 0x01, 0x4A, 0x49, 0xC1, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, +0x7C, 0x9A, 0x8C, 0xEB, 0x0A, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x06, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x21, 0xF6, 0x04, 0x4C, 0x00, 0x18, +0xAD, 0x2A, 0x55, 0xA1, 0xE9, 0xA1, 0x02, 0x4A, +0x42, 0xEF, 0x45, 0x61, 0x6E, 0xA1, 0x08, 0x6A, +0x6C, 0xEA, 0x08, 0x22, 0x10, 0x95, 0xD9, 0xA1, +0x30, 0xF0, 0x20, 0x6C, 0x41, 0xF7, 0x10, 0x4C, +0x00, 0x18, 0xAD, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0A, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x06, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x61, 0xF7, 0x00, 0x4C, 0x00, 0x18, +0xAD, 0x2A, 0x10, 0x94, 0x00, 0x6D, 0x00, 0x18, +0x8A, 0x35, 0x00, 0x6A, 0x49, 0xC1, 0x4D, 0xA1, +0x01, 0x4A, 0x4D, 0xC1, 0x1C, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x0A, 0x23, +0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x61, 0xF7, 0x08, 0x4C, +0x00, 0x18, 0xAD, 0x2A, 0x10, 0x94, 0x04, 0x6D, +0x00, 0x6E, 0x00, 0x18, 0x69, 0x2D, 0x6F, 0xA1, +0x0F, 0x6A, 0x6C, 0xEA, 0x4F, 0xC1, 0x00, 0x18, +0xA5, 0x2D, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, +0x8C, 0xEB, 0x0A, 0x23, 0x83, 0xF4, 0x40, 0x9A, +0x05, 0x5A, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0x61, 0xF7, 0x0C, 0x4C, 0x00, 0x18, 0xAD, 0x2A, +0x10, 0x94, 0x00, 0x18, 0x45, 0x3C, 0x10, 0x95, +0xFF, 0x6A, 0x01, 0x4D, 0x4C, 0xED, 0x80, 0x75, +0x10, 0xD5, 0x3F, 0xF2, 0x0C, 0x61, 0x1B, 0x97, +0x1A, 0x91, 0x19, 0x90, 0x0E, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x69, 0xA2, 0x01, 0x4B, 0xA2, 0xF6, +0x69, 0xC2, 0xA2, 0xF6, 0x69, 0xA2, 0x02, 0x5B, +0x03, 0x61, 0x00, 0x6B, 0xA2, 0xF6, 0x69, 0xC2, +0x00, 0x18, 0x05, 0x37, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, +0x2A, 0x6A, 0x58, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x46, 0xF6, 0x08, 0x4B, 0x04, 0xD4, 0x03, 0x6D, +0x12, 0xEA, 0x49, 0xE3, 0xD2, 0xA2, 0xF1, 0xA2, +0x68, 0xA2, 0xCC, 0xED, 0xA8, 0x36, 0xAC, 0xE9, +0x0D, 0x6D, 0xAB, 0xED, 0xEC, 0xED, 0xCD, 0xED, +0x80, 0xA2, 0xB1, 0xC2, 0x7F, 0x6D, 0x6C, 0xED, +0xA3, 0xEC, 0x01, 0x60, 0x64, 0x67, 0x48, 0xA2, +0x80, 0x68, 0x0B, 0xE8, 0x4C, 0xE8, 0x6D, 0xE8, +0x00, 0xF6, 0x00, 0x30, 0xFF, 0x6A, 0x00, 0xF6, +0x03, 0x30, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0C, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x08, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x61, 0xF7, 0x18, 0x4C, 0xB0, 0x67, +0xD1, 0x67, 0x00, 0x18, 0xAD, 0x2A, 0x04, 0x94, +0xB0, 0x67, 0xF1, 0x67, 0x00, 0x6E, 0x00, 0x18, +0x03, 0x35, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x69, 0x8C, 0xE9, +0x2A, 0x68, 0x18, 0xE9, 0xFF, 0x6A, 0xAC, 0xEA, +0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF6, +0x08, 0x4A, 0x91, 0x67, 0x12, 0xE8, 0x01, 0xE2, +0x00, 0x18, 0x16, 0x29, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF5, 0x50, 0x9A, 0x34, 0x33, +0x91, 0x67, 0x49, 0xE3, 0x40, 0xA2, 0xFF, 0x6B, +0x4C, 0xEB, 0x05, 0xD3, 0x00, 0x18, 0x94, 0x07, +0x52, 0xA0, 0x01, 0x6B, 0xFF, 0x6C, 0x5A, 0x32, +0x6C, 0xEA, 0x8C, 0xEA, 0x00, 0xF1, 0x06, 0x22, +0x06, 0x92, 0x63, 0x22, 0x8F, 0xA0, 0x10, 0x6A, +0x4B, 0xEA, 0x8C, 0xEA, 0x4F, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, +0x9C, 0x9A, 0x6C, 0xEC, 0x0B, 0x24, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x07, 0x61, 0x04, 0x95, +0x30, 0xF0, 0x20, 0x6C, 0x81, 0xF7, 0x08, 0x4C, +0x00, 0x18, 0xAD, 0x2A, 0x91, 0x67, 0x06, 0x6D, +0x00, 0x6E, 0x00, 0x18, 0x69, 0x2D, 0x54, 0xA0, +0x10, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, 0x54, 0xC0, +0x05, 0x94, 0x18, 0x6F, 0x04, 0x95, 0x8C, 0xEF, +0x00, 0x6E, 0x91, 0x67, 0xEE, 0x37, 0x00, 0x18, +0x03, 0x35, 0x72, 0xA0, 0x19, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x52, 0xC0, 0x4F, 0xA0, 0x10, 0x6B, +0x6B, 0xEB, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x10, 0x6C, 0x8E, 0xEA, 0x01, 0x22, 0x03, 0x6A, +0x73, 0xA0, 0x55, 0xC0, 0x00, 0x6A, 0x59, 0xC0, +0x5A, 0xC0, 0x7F, 0x6A, 0x4C, 0xEB, 0x73, 0xC0, +0x72, 0xA0, 0x6C, 0xEA, 0x6E, 0xA0, 0x52, 0xC0, +0x10, 0x6A, 0x6D, 0xEA, 0x08, 0x6B, 0x4C, 0xEB, +0x4E, 0xC0, 0xA0, 0xF0, 0x0B, 0x23, 0x6F, 0xA0, +0x10, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x10, 0x72, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x81, 0xF7, 0x14, 0x4C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0xA1, 0xF7, 0x04, 0x4C, +0x04, 0x96, 0xB1, 0x67, 0x00, 0x18, 0xAD, 0x2A, +0x95, 0x10, 0x6E, 0xA0, 0x08, 0x6A, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x15, 0x22, 0x6F, 0xA0, +0x10, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6C, +0x8C, 0xEA, 0x10, 0x72, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0xA1, 0xF7, 0x14, 0x4C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0xC1, 0xF7, 0x04, 0x4C, +0x04, 0x96, 0xB1, 0x67, 0x00, 0x18, 0xAD, 0x2A, +0x72, 0xA0, 0x18, 0x6A, 0x6C, 0xEA, 0x4C, 0x2A, +0x4F, 0xA0, 0x10, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, +0xFF, 0x6C, 0x8C, 0xEA, 0x10, 0x72, 0x3F, 0x61, +0x54, 0xA0, 0x0F, 0x6C, 0xA2, 0x67, 0x8C, 0xED, +0x01, 0x4D, 0x8C, 0xED, 0x6C, 0xEA, 0xAD, 0xEA, +0x4C, 0xEC, 0x03, 0x54, 0x54, 0xC0, 0x0E, 0x61, +0x6C, 0xEA, 0x54, 0xC0, 0x04, 0x94, 0x30, 0xF0, +0x20, 0x6A, 0x7F, 0x6B, 0x8C, 0xEB, 0x22, 0xF2, +0x10, 0x4A, 0x49, 0xE3, 0x40, 0xA2, 0x44, 0x32, +0x0A, 0x4A, 0x55, 0xC0, 0x6E, 0xA0, 0x08, 0x6A, +0x6C, 0xEA, 0x0C, 0x22, 0x74, 0xA0, 0x0F, 0x6A, +0xD5, 0xA0, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0xFF, 0x6D, 0xC1, 0xF7, 0x14, 0x4C, 0x4C, 0xED, +0x00, 0x18, 0xAD, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x11, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x0D, 0x61, 0xB5, 0xA0, +0x30, 0xF0, 0x20, 0x6C, 0xE1, 0xF7, 0x04, 0x4C, +0x00, 0x18, 0xAD, 0x2A, 0x05, 0x10, 0x54, 0xA0, +0x4C, 0xEB, 0x03, 0x6A, 0x74, 0xC0, 0x55, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x63, 0xF4, 0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, +0x0D, 0x23, 0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, +0x09, 0x61, 0x54, 0xA0, 0x30, 0xF0, 0x20, 0x6C, +0x0F, 0x6D, 0xE1, 0xF7, 0x10, 0x4C, 0x4C, 0xED, +0x00, 0x18, 0xAD, 0x2A, 0x6E, 0xA0, 0x11, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x4E, 0xC0, 0x91, 0x67, +0x07, 0x6D, 0x00, 0x6E, 0x00, 0x18, 0x69, 0x2D, +0x91, 0x67, 0x00, 0x18, 0x01, 0x3A, 0x73, 0xA0, +0x7F, 0x6A, 0x4C, 0xEB, 0x73, 0xC0, 0x72, 0xA0, +0x6C, 0xEA, 0x52, 0xC0, 0x72, 0xA0, 0x41, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x73, 0xA0, 0x52, 0xC0, +0x08, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x02, 0x6B, +0x6D, 0xEA, 0x53, 0xC0, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x25, 0x67, 0x2A, 0x6D, +0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, 0x46, 0xF6, +0x08, 0x4B, 0x04, 0xD4, 0x4C, 0xE9, 0xE6, 0x67, +0x38, 0x59, 0x4C, 0xEF, 0x12, 0xED, 0xB5, 0xE3, +0x80, 0xA5, 0x62, 0xA5, 0xA1, 0xA5, 0x04, 0x67, +0x08, 0x60, 0x24, 0x59, 0x63, 0xE4, 0x04, 0x60, +0x15, 0x59, 0x05, 0x67, 0x02, 0x61, 0xA1, 0xE3, +0x4C, 0xE8, 0x04, 0x94, 0xB0, 0x67, 0x00, 0x6E, +0x00, 0x18, 0x03, 0x35, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, 0x7C, 0x9A, +0x01, 0x6C, 0x8C, 0xEB, 0x0D, 0x23, 0x83, 0xF4, +0x40, 0x9A, 0x05, 0x5A, 0x09, 0x61, 0x04, 0x96, +0x30, 0xF0, 0x20, 0x6C, 0xE1, 0xF7, 0x1C, 0x4C, +0xB1, 0x67, 0xF0, 0x67, 0x00, 0x18, 0xAD, 0x2A, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, +0x2A, 0x68, 0x18, 0xEA, 0x05, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x46, 0xF6, 0x08, 0x4A, 0x12, 0xE8, +0x01, 0xE2, 0x84, 0xA0, 0x0F, 0x5C, 0x48, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0x33, 0x40, 0xF1, +0x18, 0x4A, 0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x1B, 0x6A, 0x34, 0x10, 0x3D, 0x6A, 0x6E, 0xA0, +0x47, 0xC0, 0x08, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x02, 0x6B, 0x6D, 0xEA, 0x39, 0x10, 0x6E, 0xA0, +0x13, 0x6A, 0x47, 0xC0, 0x08, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x01, 0x6B, 0x6D, 0xEA, 0x4E, 0xC0, +0x6E, 0xA0, 0x33, 0x6A, 0x47, 0xC0, 0x08, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x01, 0x6B, 0x6D, 0xEA, +0x02, 0x6D, 0x4E, 0xC0, 0x07, 0xD5, 0x27, 0x10, +0x6E, 0xA0, 0x0B, 0x6A, 0x47, 0xC0, 0x08, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x01, 0x6E, 0x4E, 0xC0, +0x07, 0xD6, 0x1D, 0x10, 0x6E, 0xA0, 0x47, 0x6A, +0x47, 0xC0, 0x08, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x03, 0x6B, 0x6D, 0xEA, 0x4E, 0xC0, 0x07, 0xD3, +0x12, 0x10, 0x23, 0x6A, 0x6E, 0xA0, 0x47, 0xC0, +0x08, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0x6B, +0x6D, 0xEA, 0x4E, 0xC0, 0x07, 0xD3, 0x07, 0x10, +0x6E, 0xA0, 0x08, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x03, 0x6B, 0x4E, 0xC0, 0x07, 0xD3, 0x05, 0x96, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x5C, 0x9A, +0xCC, 0x35, 0x8C, 0x34, 0x55, 0xE5, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF0, 0x18, 0x4A, 0x91, 0xE2, +0xE5, 0x67, 0x1D, 0x65, 0x00, 0x6A, 0x48, 0x33, +0xAD, 0xE3, 0xC0, 0x9C, 0x60, 0x9B, 0x31, 0xA0, +0xCC, 0xEB, 0x03, 0x6E, 0x2C, 0xEE, 0x02, 0x69, +0x2E, 0xEE, 0x07, 0x2E, 0xFF, 0x6E, 0x4C, 0xEE, +0x01, 0x69, 0x2E, 0xEE, 0x02, 0x2E, 0xBF, 0x4E, +0xCC, 0xEB, 0x48, 0x36, 0xE5, 0xE6, 0x60, 0xD9, +0x78, 0x67, 0x79, 0xE6, 0x60, 0x9E, 0x01, 0x4A, +0x02, 0x6B, 0x4E, 0xEB, 0x04, 0x4C, 0xE3, 0x2B, +0x51, 0xA0, 0x05, 0x95, 0x03, 0x6B, 0x52, 0x32, +0xAC, 0x34, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6D, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF5, 0x7C, 0x9B, +0x60, 0xF5, 0xA0, 0x9D, 0x6D, 0xE4, 0xB1, 0xE4, +0x60, 0x9B, 0xE0, 0x9C, 0x03, 0x2F, 0xC3, 0x67, +0x00, 0x69, 0x02, 0x10, 0xC7, 0x67, 0x20, 0x69, +0x1F, 0x6C, 0x01, 0x6D, 0xA4, 0xEC, 0xCC, 0xED, +0x09, 0x25, 0x25, 0xE4, 0xFF, 0x6C, 0x8C, 0xE9, +0x0B, 0x22, 0x0C, 0x59, 0x09, 0x61, 0x20, 0x49, +0x8C, 0xE9, 0x06, 0x10, 0xFF, 0x4C, 0xFF, 0x6D, +0xAC, 0xEC, 0xFF, 0x74, 0xEE, 0x61, 0x00, 0x69, +0x20, 0x6E, 0x02, 0x23, 0xE3, 0x67, 0x00, 0x6E, +0x00, 0x6C, 0xFF, 0x6B, 0xA4, 0x67, 0x6C, 0xED, +0x1D, 0x65, 0x01, 0x6D, 0xA4, 0xEC, 0xEC, 0xED, +0x0B, 0x25, 0x98, 0x67, 0xD1, 0xE4, 0x6C, 0xEC, +0x04, 0xD4, 0x0B, 0x22, 0x0C, 0x5C, 0x09, 0x61, +0x20, 0x4C, 0x6C, 0xEC, 0x04, 0xD4, 0x05, 0x10, +0x01, 0x4C, 0x20, 0x74, 0xEA, 0x61, 0x00, 0x6D, +0x04, 0xD5, 0x5D, 0x67, 0x67, 0x42, 0x20, 0xC0, +0x09, 0x4B, 0x40, 0xA3, 0x41, 0xC0, 0x05, 0x94, +0x00, 0x18, 0x16, 0x29, 0x05, 0x94, 0x7F, 0x6B, +0x4C, 0xEB, 0x08, 0xD3, 0x00, 0x18, 0x16, 0x29, +0x08, 0x94, 0x62, 0x67, 0x06, 0xD1, 0x83, 0xE9, +0x12, 0x61, 0xBD, 0x67, 0xC7, 0x45, 0x19, 0x4E, +0x40, 0xA6, 0x08, 0x95, 0x04, 0x96, 0xFF, 0x6C, +0x8C, 0xED, 0xCC, 0xEC, 0x83, 0xED, 0x04, 0x60, +0x9D, 0x67, 0xA7, 0x44, 0x09, 0x4D, 0x40, 0xA5, +0xFF, 0x6E, 0x4C, 0xEE, 0x06, 0xD6, 0x92, 0xA0, +0x04, 0x6A, 0x8C, 0xEA, 0x08, 0x22, 0x80, 0x6A, +0x6C, 0xEA, 0x05, 0x22, 0x06, 0x93, 0x4D, 0xEB, +0xFF, 0x6A, 0x4C, 0xEB, 0x06, 0xD3, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x63, 0xF4, +0x7C, 0x9A, 0x01, 0x6C, 0x8C, 0xEB, 0x0F, 0x23, +0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, 0x0B, 0x61, +0x51, 0xA0, 0x05, 0x95, 0x06, 0x96, 0x30, 0xF0, +0x20, 0x6C, 0x03, 0x6F, 0x02, 0xF0, 0x10, 0x4C, +0x4C, 0xEF, 0x00, 0x18, 0xAD, 0x2A, 0x51, 0xA0, +0x05, 0x94, 0x06, 0x95, 0x03, 0x6F, 0x00, 0x6E, +0x4C, 0xEF, 0x00, 0x18, 0x03, 0x35, 0x9D, 0x67, +0xA7, 0x44, 0x15, 0x4D, 0x80, 0xA5, 0x4A, 0x59, +0x82, 0xC0, 0x06, 0x61, 0x73, 0xA0, 0x79, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x48, 0x6B, 0x3F, 0x10, +0x40, 0x59, 0x06, 0x61, 0x73, 0xA0, 0x79, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x40, 0x6B, 0x37, 0x10, +0x36, 0x59, 0x06, 0x61, 0x73, 0xA0, 0x79, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x38, 0x6B, 0x2F, 0x10, +0x2C, 0x59, 0x06, 0x61, 0x73, 0xA0, 0x79, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x30, 0x6B, 0x27, 0x10, +0x24, 0x59, 0x06, 0x61, 0x73, 0xA0, 0x79, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x28, 0x6B, 0x1F, 0x10, +0x1C, 0x59, 0x06, 0x61, 0x73, 0xA0, 0x79, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x20, 0x6B, 0x17, 0x10, +0x14, 0x59, 0x06, 0x61, 0x73, 0xA0, 0x79, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x18, 0x6B, 0x0F, 0x10, +0x0C, 0x59, 0x06, 0x61, 0x73, 0xA0, 0x79, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x10, 0x6B, 0x07, 0x10, +0x04, 0x59, 0x07, 0x61, 0x73, 0xA0, 0x79, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x08, 0x6B, 0x6D, 0xEA, +0x04, 0x10, 0x73, 0xA0, 0x79, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x53, 0xC0, 0x00, 0x18, 0xA5, 0x2D, +0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF3, 0x6B, 0xA2, +0x03, 0x6A, 0x6C, 0xEA, 0x18, 0x22, 0x01, 0x72, +0x38, 0x6D, 0x04, 0x60, 0x02, 0x72, 0x2D, 0x6D, +0x01, 0x60, 0x15, 0x6D, 0x51, 0xA0, 0x05, 0x94, +0x03, 0x6E, 0x4C, 0xEE, 0x00, 0x18, 0xC2, 0x3A, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x86, 0xF4, 0x9B, 0xA2, 0x04, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x86, 0xF4, 0x7B, 0xC2, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0xA6, 0xF6, 0x27, 0xA2, 0x2A, 0x68, 0xA6, 0xF6, +0x46, 0xA2, 0x18, 0xE9, 0x30, 0xF0, 0x20, 0x6B, +0x46, 0xF6, 0x08, 0x4B, 0x02, 0x72, 0x12, 0xE8, +0x01, 0xE3, 0x30, 0x60, 0x03, 0x5A, 0x03, 0x60, +0x01, 0x72, 0x07, 0x60, 0xA7, 0x10, 0x03, 0x72, +0x70, 0x60, 0x04, 0x72, 0x80, 0xF0, 0x0B, 0x60, +0xA1, 0x10, 0x0C, 0x6A, 0x7D, 0x67, 0x4F, 0xCB, +0x9D, 0x67, 0x0E, 0x6B, 0x70, 0xC4, 0x52, 0xC4, +0x5B, 0xA0, 0x03, 0x6B, 0xBD, 0x67, 0x53, 0xC4, +0x43, 0xA0, 0x54, 0xC4, 0x51, 0xA0, 0x4A, 0x34, +0x6C, 0xEC, 0x95, 0xC5, 0x82, 0x67, 0x6C, 0xEC, +0x96, 0xC5, 0x85, 0xA0, 0x97, 0xC5, 0x86, 0xA0, +0x98, 0xC5, 0x5E, 0x34, 0x52, 0x32, 0x6C, 0xEA, +0x99, 0xC5, 0x5A, 0xC5, 0x52, 0xA0, 0x01, 0x6B, +0x4A, 0x32, 0x6C, 0xEA, 0x5B, 0xC5, 0x58, 0xA0, +0x5C, 0xC5, 0x62, 0x10, 0x7D, 0x67, 0x0C, 0x6A, +0x4F, 0xCB, 0x0E, 0x6A, 0x50, 0xC3, 0x0D, 0x6A, +0x52, 0xC3, 0x44, 0xA0, 0x2C, 0x31, 0x53, 0xC3, +0x40, 0xA0, 0x54, 0xC3, 0x41, 0xA0, 0x55, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x5C, 0x9A, +0x49, 0xE1, 0x40, 0xA2, 0x56, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF6, 0x48, 0x9A, 0x49, 0xE1, +0x40, 0xA2, 0x57, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF6, 0x4C, 0x9A, 0x49, 0xE1, 0x40, 0xA2, +0x58, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF6, +0x50, 0x9A, 0x49, 0xE1, 0x40, 0xA2, 0x59, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x40, 0x9A, +0x49, 0xE1, 0x40, 0xA2, 0x5A, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF6, 0x54, 0x9A, 0x49, 0xE1, +0x40, 0xA2, 0x5B, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF6, 0x58, 0x9A, 0x49, 0xE1, 0x40, 0xA2, +0x5C, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF6, +0x5C, 0x9A, 0x45, 0xE1, 0x40, 0xA1, 0x5D, 0xC3, +0x2F, 0x10, 0x9D, 0x67, 0x0C, 0x6A, 0x4F, 0xCC, +0x0E, 0x6A, 0x50, 0xC4, 0x52, 0xC4, 0x59, 0xA0, +0x53, 0xC4, 0x20, 0xF0, 0x42, 0xA0, 0x57, 0xC4, +0x20, 0xF0, 0x43, 0xA0, 0x58, 0xC4, 0x91, 0x67, +0x00, 0x18, 0x16, 0x29, 0xBD, 0x67, 0x59, 0xC5, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x50, 0x9A, +0x34, 0x31, 0x45, 0xE1, 0x40, 0xA1, 0x5A, 0xC5, +0x48, 0xA0, 0x5D, 0xC5, 0x11, 0x10, 0x7D, 0x67, +0x03, 0x6A, 0x4F, 0xCB, 0x0E, 0x6A, 0x50, 0xC3, +0x0F, 0x6A, 0x52, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF0, 0x78, 0xA2, 0x40, 0xF0, 0x18, 0x4A, +0x41, 0xA2, 0x9D, 0x67, 0x73, 0xC4, 0x54, 0xC4, +0x04, 0x94, 0x05, 0x95, 0x06, 0x96, 0x07, 0x97, +0x00, 0x18, 0xA1, 0x29, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x00, 0x6B, 0x14, 0x6D, 0xB8, 0xEB, 0x30, 0xF0, +0x20, 0x6C, 0xA2, 0xF6, 0x10, 0x4C, 0xA1, 0xF5, +0xC8, 0x43, 0x00, 0x6A, 0xC8, 0x36, 0xD9, 0xE4, +0x12, 0xED, 0xB5, 0xE4, 0xA7, 0xF0, 0x4C, 0xDD, +0xA7, 0xF0, 0x50, 0xDD, 0xA7, 0xF0, 0x54, 0xDD, +0xA7, 0xF0, 0x58, 0xDD, 0xA7, 0xF0, 0x5C, 0xDD, +0x95, 0xE3, 0xA8, 0xF2, 0x4C, 0xC5, 0x43, 0xDE, +0x28, 0xF3, 0x4C, 0xC5, 0xA8, 0xF3, 0x4C, 0xC5, +0xD4, 0xF2, 0xA0, 0x43, 0xA4, 0x35, 0x95, 0xE5, +0x46, 0xCD, 0x54, 0xF2, 0xA0, 0x43, 0xA4, 0x35, +0x95, 0xE5, 0x46, 0xCD, 0x54, 0xF3, 0xA0, 0x43, +0xA4, 0x35, 0x95, 0xE5, 0x48, 0xCD, 0xD4, 0xF3, +0xA0, 0x43, 0xA4, 0x35, 0x95, 0xE5, 0x48, 0xCD, +0x01, 0x4B, 0xFF, 0x6A, 0x4C, 0xEB, 0x80, 0x73, +0xC8, 0x61, 0x58, 0x67, 0xA8, 0xF6, 0x4C, 0xDC, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, +0xD4, 0xF2, 0xA0, 0x42, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0xA4, 0x35, 0x00, 0x6C, +0x75, 0xE5, 0x86, 0xCD, 0x54, 0xF2, 0xA0, 0x42, +0xA4, 0x35, 0x75, 0xE5, 0x86, 0xCD, 0x54, 0xF3, +0xA0, 0x42, 0xC4, 0xF3, 0x10, 0x4A, 0xA4, 0x35, +0x44, 0x32, 0x75, 0xE5, 0x6D, 0xE2, 0x88, 0xCD, +0x88, 0xCB, 0x20, 0xE8, 0xFF, 0x6A, 0x8C, 0xEA, +0x14, 0x6D, 0xB8, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0xA2, 0xF6, 0x10, 0x4C, 0x00, 0x6B, 0x12, 0xED, +0xB5, 0xE4, 0xA7, 0xF0, 0x6C, 0xDD, 0xA7, 0xF0, +0x70, 0xDD, 0xA7, 0xF0, 0x74, 0xDD, 0xA7, 0xF0, +0x78, 0xDD, 0xA7, 0xF0, 0x7C, 0xDD, 0x95, 0xE2, +0xA1, 0xF5, 0x08, 0x4A, 0x48, 0x32, 0x51, 0xE4, +0xA8, 0xF2, 0x6C, 0xC5, 0x63, 0xDC, 0x20, 0xE8, +0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x10, 0x4B, 0x8C, 0xEA, 0x69, 0xE2, 0x00, 0x6B, +0x28, 0xF3, 0x6C, 0xC2, 0xA8, 0xF3, 0x6C, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0x6A, 0x20, 0xF6, 0x60, 0x9B, 0x4C, 0xEC, +0x8C, 0x31, 0x6D, 0xE1, 0x80, 0xA3, 0x30, 0xF0, +0x20, 0x68, 0x10, 0x6B, 0xA2, 0xF6, 0x10, 0x48, +0x8C, 0xEB, 0xA9, 0xF0, 0x76, 0xC0, 0x30, 0xF0, +0x20, 0x6B, 0x20, 0xF6, 0x64, 0x9B, 0x6D, 0xE1, +0x80, 0xA3, 0x3F, 0x6B, 0x6C, 0xEC, 0xA9, 0xF0, +0x91, 0xC0, 0x30, 0xF0, 0x20, 0x6C, 0x20, 0xF6, +0x88, 0x9C, 0x91, 0xE1, 0x80, 0xA4, 0x6C, 0xEC, +0xA9, 0xF0, 0x92, 0xC0, 0x30, 0xF0, 0x20, 0x6C, +0x20, 0xF6, 0x8C, 0x9C, 0x91, 0xE1, 0x80, 0xA4, +0x8C, 0xEB, 0xA9, 0xF0, 0x73, 0xC0, 0x30, 0xF0, +0x20, 0x6B, 0x20, 0xF6, 0x70, 0x9B, 0x6D, 0xE1, +0x60, 0xA3, 0xA9, 0xF0, 0x70, 0xC0, 0x30, 0xF0, +0x20, 0x6B, 0x20, 0xF6, 0x74, 0x9B, 0xA9, 0xF0, +0x90, 0xA0, 0x6D, 0xE1, 0x60, 0xA3, 0x6C, 0xEA, +0x56, 0x32, 0xA9, 0xF0, 0x54, 0xC0, 0x00, 0x18, +0x16, 0x29, 0x7F, 0x6B, 0x4C, 0xEB, 0x01, 0x6A, +0x4B, 0xEA, 0xA9, 0xF0, 0x57, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF6, 0x58, 0x9A, 0xA9, 0xF0, +0x75, 0xC0, 0x07, 0x97, 0x45, 0xE1, 0x40, 0xA1, +0x06, 0x91, 0xA9, 0xF0, 0x58, 0xC0, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, +0x82, 0x67, 0x05, 0xD2, 0x00, 0x18, 0x5B, 0x3C, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0xA9, 0xF0, 0x10, 0xA2, 0x2A, 0x69, 0x30, 0xF0, +0x20, 0x6B, 0x38, 0xE8, 0x46, 0xF6, 0x08, 0x4B, +0xA9, 0xF0, 0x92, 0xA2, 0xA9, 0xF0, 0xB3, 0xA2, +0x08, 0xD4, 0xA9, 0xF0, 0x98, 0xA2, 0x07, 0xD5, +0x04, 0xD4, 0x12, 0xE9, 0x25, 0xE3, 0xA9, 0xF0, +0x71, 0xA2, 0x06, 0xD3, 0xA9, 0xF0, 0x75, 0xA2, +0x09, 0xD3, 0xA9, 0xF0, 0x76, 0xA2, 0x0F, 0x23, +0x63, 0xF4, 0x7C, 0x9A, 0x02, 0x6C, 0x8C, 0xEB, +0x0A, 0x23, 0x83, 0xF4, 0x40, 0x9A, 0x05, 0x5A, +0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF0, +0x04, 0x4C, 0x00, 0x18, 0xAD, 0x2A, 0x71, 0xA1, +0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6D, +0xAC, 0xEA, 0xA0, 0xF0, 0x04, 0x2A, 0x04, 0x93, +0x01, 0x6A, 0x4C, 0xEB, 0x80, 0xF0, 0x1F, 0x2B, +0x09, 0x93, 0x49, 0x6C, 0x8E, 0xEB, 0x01, 0x5B, +0x98, 0x67, 0x02, 0x6B, 0x93, 0xE3, 0x04, 0xD4, +0x76, 0xA1, 0x6C, 0xEA, 0xAC, 0xEA, 0x09, 0x22, +0x90, 0x67, 0x00, 0x18, 0x16, 0x29, 0x72, 0xA1, +0x40, 0x6A, 0xFF, 0x6D, 0x6C, 0xEA, 0xAC, 0xEA, +0x13, 0x10, 0x05, 0x92, 0x4C, 0x33, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF6, 0x48, 0x9A, 0x49, 0xE3, +0x40, 0xA2, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, +0x43, 0x32, 0x00, 0x52, 0x06, 0x60, 0x72, 0xA1, +0x40, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x72, 0x2A, 0x06, 0x93, 0x9D, 0x67, 0xA7, 0x44, +0x11, 0x4D, 0x05, 0x5B, 0x40, 0xA5, 0x01, 0x61, +0x04, 0x6A, 0x05, 0x6C, 0x98, 0xE8, 0xFF, 0x6B, +0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x08, 0x95, 0x12, 0xEC, 0x6D, 0xE4, +0x21, 0xF6, 0x08, 0x4B, 0x68, 0x33, 0x6D, 0xE2, +0x83, 0x9B, 0xB1, 0xE4, 0x83, 0xDB, 0x4D, 0xE0, +0xA8, 0xF2, 0x8C, 0xA3, 0x07, 0x95, 0xA1, 0xF5, +0x08, 0x48, 0x08, 0x30, 0x91, 0xE5, 0xA8, 0xF2, +0x8C, 0xC3, 0x08, 0x93, 0x09, 0xE2, 0x71, 0xE5, +0x63, 0x9A, 0x6D, 0xE4, 0x63, 0xDA, 0x4B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, +0x49, 0xE0, 0x28, 0xF3, 0x6C, 0xA2, 0x01, 0x4B, +0x28, 0xF3, 0x6C, 0xC2, 0x0A, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x10, 0x4A, 0x49, 0xE0, +0xA8, 0xF3, 0x6C, 0xA2, 0x01, 0x4B, 0xA8, 0xF3, +0x6C, 0xC2, 0x6E, 0xA1, 0x08, 0x6A, 0x6C, 0xEA, +0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x10, 0x4A, 0x49, 0xE0, 0x28, 0xF3, 0xAC, 0xA2, +0xA8, 0xF3, 0xCC, 0xA2, 0x30, 0xF0, 0x20, 0x6C, +0x22, 0xF0, 0x10, 0x4C, 0x00, 0x18, 0xAD, 0x2A, +0x2A, 0x6C, 0x98, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x10, 0x4B, 0x69, 0xE0, 0x12, 0xEC, +0x6D, 0xE4, 0xA3, 0xF7, 0x70, 0xA3, 0x28, 0xF3, +0x8C, 0xA2, 0x63, 0xEC, 0x03, 0x61, 0x90, 0x67, +0x01, 0x6D, 0x07, 0x10, 0xA8, 0xF3, 0x4C, 0xA2, +0x04, 0x93, 0x63, 0xEA, 0x0C, 0x61, 0x90, 0x67, +0x00, 0x6D, 0x00, 0x18, 0x27, 0x3A, 0x90, 0x67, +0x00, 0x18, 0x54, 0x3C, 0x04, 0x10, 0x06, 0x94, +0x02, 0x5C, 0xC1, 0x60, 0xB5, 0x17, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, +0x12, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +u32 array_length_mp_8814a_fw_nic = 68320; + +u8 array_mp_8814a_fw_wowlan[] = { +0x14, 0x88, 0x00, 0x00, 0x21, 0x00, 0x06, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x06, 0x0B, 0x15, 0x10, 0xE3, 0x07, 0x00, 0x00, +0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, +0x00, 0x00, 0x20, 0x80, 0x78, 0x06, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xB0, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x10, 0x12, 0x80, 0x00, 0x00, 0x00, 0x80, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xE9, 0x03, 0x00, 0x80, 0xD9, 0x03, 0x00, 0x80, +0xC9, 0x03, 0x00, 0x80, 0xB9, 0x03, 0x00, 0x80, +0xA9, 0x03, 0x00, 0x80, 0x99, 0x03, 0x00, 0x80, +0xE1, 0x02, 0x00, 0x80, 0x95, 0x03, 0x00, 0x80, +0x95, 0x03, 0x00, 0x80, 0x95, 0x03, 0x00, 0x80, +0x95, 0x03, 0x00, 0x80, 0x95, 0x03, 0x00, 0x80, +0x95, 0x03, 0x00, 0x80, 0x95, 0x03, 0x00, 0x80, +0x95, 0x03, 0x00, 0x80, 0xBF, 0x18, 0x00, 0x80, +0xD5, 0x18, 0x00, 0x80, 0xEB, 0x18, 0x00, 0x80, +0x01, 0x19, 0x00, 0x80, 0x1B, 0x19, 0x00, 0x80, +0x73, 0x19, 0x00, 0x80, 0x89, 0x19, 0x00, 0x80, +0xA7, 0x19, 0x00, 0x80, 0xD9, 0x19, 0x00, 0x80, +0x03, 0x1A, 0x00, 0x80, 0xD9, 0x22, 0x00, 0x80, +0xC1, 0x23, 0x00, 0x80, 0x3B, 0x23, 0x00, 0x80, +0xC1, 0x23, 0x00, 0x80, 0x81, 0x22, 0x00, 0x80, +0xC1, 0x23, 0x00, 0x80, 0xC1, 0x23, 0x00, 0x80, +0xC1, 0x23, 0x00, 0x80, 0xA3, 0x23, 0x00, 0x80, +0xC1, 0x23, 0x00, 0x80, 0xC1, 0x23, 0x00, 0x80, +0xC1, 0x23, 0x00, 0x80, 0x1B, 0x22, 0x00, 0x80, +0x4B, 0x2A, 0x00, 0x80, 0x55, 0x2A, 0x00, 0x80, +0x5F, 0x2A, 0x00, 0x80, 0x69, 0x2A, 0x00, 0x80, +0x73, 0x2A, 0x00, 0x80, 0xBB, 0x2B, 0x00, 0x80, +0xDB, 0x2B, 0x00, 0x80, 0xFB, 0x2B, 0x00, 0x80, +0x1B, 0x2C, 0x00, 0x80, 0x3B, 0x2C, 0x00, 0x80, +0x00, 0x04, 0x08, 0x00, 0x08, 0x04, 0x04, 0x00, +0xFD, 0x60, 0x00, 0x80, 0xF7, 0x60, 0x00, 0x80, +0x03, 0x61, 0x00, 0x80, 0x09, 0x61, 0x00, 0x80, +0x0F, 0x61, 0x00, 0x80, 0x15, 0x61, 0x00, 0x80, +0x19, 0x32, 0x64, 0x00, 0xAB, 0x0B, 0x00, 0x80, +0xA7, 0x0B, 0x00, 0x80, 0xAB, 0x0B, 0x00, 0x80, +0xA7, 0x0B, 0x00, 0x80, 0xCB, 0x0B, 0x00, 0x80, +0xA7, 0x0B, 0x00, 0x80, 0xCB, 0x0B, 0x00, 0x80, +0xA7, 0x0B, 0x00, 0x80, 0xEB, 0x0B, 0x00, 0x80, +0xA7, 0x0B, 0x00, 0x80, 0xEB, 0x0B, 0x00, 0x80, +0xA7, 0x0B, 0x00, 0x80, 0x0B, 0x0C, 0x00, 0x80, +0xA7, 0x0B, 0x00, 0x80, 0x0B, 0x0C, 0x00, 0x80, +0x07, 0x0E, 0x00, 0x80, 0x0B, 0x0E, 0x00, 0x80, +0x0F, 0x0E, 0x00, 0x80, 0x13, 0x0E, 0x00, 0x80, +0x17, 0x0E, 0x00, 0x80, 0xCD, 0x11, 0x00, 0x80, +0xEF, 0x11, 0x00, 0x80, 0x11, 0x12, 0x00, 0x80, +0x33, 0x12, 0x00, 0x80, 0x57, 0x12, 0x00, 0x80, +0x91, 0x12, 0x00, 0x80, 0xB5, 0x12, 0x00, 0x80, +0xD9, 0x12, 0x00, 0x80, 0xFD, 0x12, 0x00, 0x80, +0x23, 0x13, 0x00, 0x80, 0x27, 0x82, 0x00, 0x80, +0x27, 0x82, 0x00, 0x80, 0x27, 0x82, 0x00, 0x80, +0x35, 0x82, 0x00, 0x80, 0x43, 0x82, 0x00, 0x80, +0x79, 0x82, 0x00, 0x80, 0xCF, 0x82, 0x00, 0x80, +0xDD, 0x82, 0x00, 0x80, 0x1F, 0x83, 0x00, 0x80, +0x69, 0x83, 0x00, 0x80, 0x1F, 0x83, 0x00, 0x80, +0xC1, 0x83, 0x00, 0x80, 0x45, 0x0F, 0x00, 0x80, +0x45, 0x0F, 0x00, 0x80, 0x45, 0x0F, 0x00, 0x80, +0x45, 0x0F, 0x00, 0x80, 0x65, 0x0F, 0x00, 0x80, +0x65, 0x0F, 0x00, 0x80, 0x65, 0x0F, 0x00, 0x80, +0x65, 0x0F, 0x00, 0x80, 0x85, 0x0F, 0x00, 0x80, +0x85, 0x0F, 0x00, 0x80, 0x85, 0x0F, 0x00, 0x80, +0x85, 0x0F, 0x00, 0x80, 0xA5, 0x0F, 0x00, 0x80, +0xA5, 0x0F, 0x00, 0x80, 0xA5, 0x0F, 0x00, 0x80, +0xA5, 0x0F, 0x00, 0x80, 0x47, 0x8B, 0x00, 0x80, +0x57, 0x8B, 0x00, 0x80, 0x61, 0x8B, 0x00, 0x80, +0x6B, 0x8B, 0x00, 0x80, 0x7D, 0x8B, 0x00, 0x80, +0x54, 0x05, 0x64, 0xB8, 0x50, 0x05, 0x64, 0xB8, +0x51, 0x05, 0x64, 0xB8, 0x78, 0x05, 0x64, 0xB8, +0x79, 0x05, 0x64, 0xB8, 0x7A, 0x05, 0x64, 0xB8, +0xFF, 0xFF, 0xFF, 0x8F, 0x60, 0x05, 0x60, 0xB8, +0x60, 0x05, 0x64, 0xB8, 0x00, 0x00, 0x00, 0x10, +0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x30, +0x00, 0x00, 0x00, 0x40, 0xBF, 0x01, 0x64, 0xB8, +0x89, 0x00, 0x60, 0xB8, 0x8A, 0x00, 0x60, 0xB8, +0x1A, 0x04, 0x64, 0xB8, 0x1B, 0x04, 0x64, 0xB8, +0x87, 0x02, 0x64, 0xB8, 0x86, 0x02, 0x64, 0xB8, +0x1C, 0x04, 0x64, 0xB8, 0x58, 0x05, 0x64, 0xB8, +0x22, 0x05, 0x64, 0xB8, 0x00, 0x00, 0x1E, 0x00, +0x0A, 0x06, 0x64, 0xB8, 0x57, 0x01, 0x64, 0xB8, +0x3C, 0x01, 0x64, 0xB8, 0x5B, 0x01, 0x64, 0xB8, +0xFE, 0x11, 0x64, 0xB8, 0xA8, 0x06, 0x64, 0xB8, +0x10, 0x07, 0x64, 0xB8, 0x00, 0x16, 0x64, 0xB8, +0x04, 0x16, 0x64, 0xB8, 0x08, 0x16, 0x64, 0xB8, +0xAB, 0x06, 0x64, 0xB8, 0xAA, 0x06, 0x64, 0xB8, +0x13, 0x07, 0x64, 0xB8, 0x12, 0x07, 0x64, 0xB8, +0x03, 0x16, 0x64, 0xB8, 0x02, 0x16, 0x64, 0xB8, +0x07, 0x16, 0x64, 0xB8, 0x06, 0x16, 0x64, 0xB8, +0x0B, 0x16, 0x64, 0xB8, 0x0A, 0x16, 0x64, 0xB8, +0xFC, 0x11, 0x64, 0xB8, 0x04, 0x06, 0x64, 0xB8, +0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x01, +0x0D, 0x00, 0x78, 0xB8, 0x12, 0x00, 0x78, 0xB8, +0x11, 0x00, 0x78, 0xB8, 0x06, 0x00, 0x78, 0xB8, +0xA7, 0x04, 0x64, 0xB8, 0xA6, 0x04, 0x64, 0xB8, +0xA5, 0x04, 0x64, 0xB8, 0xA4, 0x04, 0x64, 0xB8, +0x14, 0x00, 0x78, 0xB8, 0x09, 0x00, 0x78, 0xB8, +0x29, 0x00, 0x78, 0xB8, 0x1D, 0x04, 0x64, 0xB8, +0x7A, 0x04, 0x64, 0xB8, 0x24, 0x04, 0x64, 0xB8, +0x74, 0x06, 0x64, 0xB8, 0x00, 0x00, 0x01, 0x80, +0x70, 0x06, 0x64, 0xB8, 0x72, 0x06, 0x64, 0xB8, +0x85, 0x01, 0x64, 0xB8, 0xA1, 0x00, 0x78, 0xB8, +0x59, 0x00, 0x78, 0xB8, 0x00, 0x00, 0x78, 0xB8, +0x01, 0x00, 0x78, 0xB8, 0xB1, 0x00, 0x78, 0xB8, +0xC1, 0x01, 0x64, 0xB8, 0xB9, 0x01, 0x64, 0xB8, +0xC3, 0x01, 0x64, 0xB8, 0xC7, 0x01, 0x64, 0xB8, +0x90, 0x06, 0x64, 0xB8, 0x3E, 0x00, 0x78, 0xB8, +0x48, 0x00, 0x78, 0xB8, 0x38, 0x00, 0x78, 0xB8, +0x42, 0x00, 0x78, 0xB8, 0x28, 0x00, 0x78, 0xB8, +0x2C, 0x00, 0x78, 0xB8, 0x24, 0x01, 0x64, 0xB8, +0x18, 0x06, 0x60, 0xB8, 0x18, 0x06, 0x64, 0xB8, +0x10, 0x06, 0x60, 0xB8, 0x10, 0x06, 0x64, 0xB8, +0x4D, 0x01, 0x64, 0xB8, 0x00, 0x01, 0x64, 0xB8, +0xE0, 0x04, 0x64, 0xB8, 0x20, 0x00, 0x78, 0xB8, +0x04, 0x00, 0x78, 0xB8, 0x30, 0x00, 0x78, 0xB8, +0x72, 0x00, 0x78, 0xB8, 0x58, 0x00, 0x78, 0xB8, +0x4C, 0x00, 0x78, 0xB8, 0xC0, 0x01, 0x64, 0xB8, +0x18, 0x00, 0x78, 0xB8, 0x10, 0x00, 0x78, 0xB8, +0x08, 0x00, 0x78, 0xB8, 0x0A, 0x00, 0x78, 0xB8, +0xE0, 0x10, 0x60, 0xB8, 0x00, 0x00, 0x00, 0x80, +0x00, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x64, 0xB8, +0xFC, 0x10, 0x60, 0xB8, 0x1C, 0x01, 0x64, 0xB8, +0xFF, 0xFF, 0x03, 0x00, 0x09, 0x06, 0x64, 0xB8, +0x00, 0x00, 0x01, 0x00, 0x18, 0x11, 0x64, 0xB8, +0x00, 0x00, 0x70, 0x18, 0x68, 0x00, 0x78, 0xB8, +0xC4, 0x01, 0x64, 0xB8, 0xA5, 0xA5, 0xA5, 0xA5, +0x88, 0x00, 0x60, 0xB8, 0x8B, 0x00, 0x60, 0xB8, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x42, +0xE0, 0x00, 0x60, 0xB8, 0xFF, 0xFF, 0xFF, 0xFD, +0xE3, 0x00, 0x60, 0xB8, 0xE1, 0x00, 0x60, 0xB8, +0x00, 0x00, 0x00, 0x60, 0xE8, 0x12, 0x64, 0xB8, +0xF8, 0x10, 0x60, 0xB8, 0x00, 0x00, 0x00, 0x04, +0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xDF, +0xFF, 0xFF, 0xFF, 0x1F, 0x04, 0x00, 0x60, 0xB8, +0x04, 0x00, 0x64, 0xB8, 0x08, 0x00, 0x60, 0xB8, +0x08, 0x00, 0x64, 0xB8, 0x80, 0x00, 0x60, 0xB8, +0xFA, 0xFA, 0xFA, 0xFA, 0x4C, 0x04, 0x64, 0xB8, +0x50, 0x04, 0x64, 0xB8, 0x8C, 0x04, 0x64, 0xB8, +0x90, 0x04, 0x64, 0xB8, 0x94, 0x04, 0x64, 0xB8, +0x98, 0x04, 0x64, 0xB8, 0x9C, 0x04, 0x64, 0xB8, +0xA0, 0x04, 0x64, 0xB8, 0xA8, 0x04, 0x64, 0xB8, +0xB8, 0x01, 0x64, 0xB8, 0x00, 0x00, 0x70, 0xB8, +0x00, 0x0C, 0x01, 0x00, 0x01, 0x00, 0x66, 0xB8, +0x18, 0x00, 0x70, 0xB8, 0x0B, 0x00, 0x70, 0xB8, +0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x0F, 0x00, +0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0xB8, +0x96, 0x02, 0x64, 0xB8, 0x94, 0x02, 0x64, 0xB8, +0x97, 0x02, 0x64, 0xB8, 0xCC, 0x01, 0x64, 0xB8, +0x00, 0x00, 0x07, 0x00, 0xD4, 0x04, 0x60, 0xB8, +0xD4, 0x04, 0x64, 0xB8, 0x84, 0x04, 0x60, 0xB8, +0x84, 0x04, 0x64, 0xB8, 0xC8, 0x04, 0x60, 0xB8, +0xC8, 0x04, 0x64, 0xB8, 0x78, 0x04, 0x60, 0xB8, +0x78, 0x04, 0x64, 0xB8, 0x30, 0x01, 0x64, 0xB8, +0x44, 0x00, 0x60, 0xB8, 0x60, 0x00, 0x60, 0xB8, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x05, +0x64, 0x01, 0x64, 0xB8, 0x53, 0x05, 0x64, 0xB8, +0x77, 0x05, 0x64, 0xB8, 0x68, 0x05, 0x64, 0xB8, +0x34, 0x01, 0x64, 0xB8, 0x20, 0x01, 0x64, 0xB8, +0x24, 0x11, 0x64, 0xB8, 0x20, 0x11, 0x64, 0xB8, +0x2C, 0x11, 0x64, 0xB8, 0x28, 0x11, 0x64, 0xB8, +0x34, 0x11, 0x64, 0xB8, 0x30, 0x11, 0x64, 0xB8, +0x38, 0x01, 0x64, 0xB8, 0x3C, 0x11, 0x64, 0xB8, +0x38, 0x11, 0x64, 0xB8, 0x50, 0x00, 0x60, 0xB8, +0x54, 0x00, 0x60, 0xB8, 0x00, 0x40, 0xE0, 0x03, +0x9A, 0x01, 0x64, 0xB8, 0x99, 0x01, 0x64, 0xB8, +0xC6, 0x01, 0x64, 0xB8, 0x00, 0x00, 0x66, 0xB8, +0x00, 0x10, 0x66, 0xB8, 0x00, 0x1C, 0x66, 0xB8, +0xE0, 0x12, 0x64, 0xB8, 0xF0, 0x00, 0x60, 0xB8, +0x09, 0x02, 0x64, 0xB8, 0x10, 0x15, 0x88, 0x47, +0x06, 0x01, 0x64, 0xB8, 0x2F, 0x01, 0x64, 0xB8, +0x00, 0x28, 0x64, 0xB8, 0x00, 0x2C, 0x64, 0xB8, +0x00, 0x38, 0x64, 0xB8, 0x00, 0x3C, 0x64, 0xB8, +0x54, 0x04, 0x64, 0xB8, 0x77, 0x77, 0x77, 0x77, +0x00, 0x00, 0xF0, 0x3F, 0x70, 0x77, 0x33, 0x54, +0x00, 0x00, 0x10, 0x00, 0x17, 0x77, 0x33, 0x77, +0x77, 0x77, 0x33, 0x77, 0x17, 0x77, 0x33, 0x54, +0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x33, 0x00, +0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, +0x00, 0x00, 0xFE, 0x1F, 0x00, 0x03, 0x07, 0x00, +0xFF, 0x03, 0x07, 0x00, 0x83, 0x00, 0x60, 0xB8, +0x90, 0x00, 0x60, 0xB8, 0x92, 0x06, 0x64, 0xB8, +0x08, 0x01, 0x64, 0xB8, 0x92, 0x00, 0x60, 0xB8, +0xF8, 0x05, 0x64, 0xB8, 0xF9, 0x05, 0x64, 0xB8, +0xFA, 0x05, 0x64, 0xB8, 0xFB, 0x05, 0x64, 0xB8, +0xFF, 0xFF, 0xFF, 0x7F, 0x1F, 0x07, 0x64, 0xB8, +0x1C, 0x07, 0x64, 0xB8, 0xB8, 0x05, 0x64, 0xB8, +0xBC, 0x05, 0x64, 0xB8, 0x5F, 0x11, 0x64, 0xB8, +0x28, 0x00, 0x78, 0x18, 0x4C, 0x00, 0x00, 0xB5, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x04, 0x04, +0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x10, 0x10, +0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x40, 0x40, +0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x20, 0x00, +0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, +0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, +0xF4, 0x00, 0x60, 0xB8, 0x10, 0x32, 0x01, 0xB8, +0x80, 0x34, 0x00, 0xB8, 0x14, 0x11, 0x64, 0xB8, +0x16, 0x11, 0x64, 0xB8, 0x17, 0x11, 0x64, 0xB8, +0x01, 0x06, 0x64, 0xB8, 0x08, 0x06, 0x64, 0xB8, +0x0F, 0x06, 0x64, 0xB8, 0x73, 0x05, 0x64, 0xB8, +0x01, 0x01, 0x64, 0xB8, 0xB7, 0x06, 0x64, 0xB8, +0xB4, 0x06, 0x64, 0xB8, 0x02, 0x10, 0x60, 0xB8, +0xF0, 0xFF, 0x03, 0x00, 0x02, 0x00, 0x78, 0xB8, +0x03, 0x00, 0x78, 0xB8, 0x80, 0x01, 0x64, 0xB8, +0x84, 0x01, 0x64, 0xB8, 0xBA, 0x01, 0x64, 0xB8, +0x68, 0x06, 0x64, 0xB8, 0x24, 0x00, 0x60, 0xB8, +0xFF, 0xFF, 0xCF, 0xFF, 0x5C, 0x05, 0x64, 0xB8, +0x38, 0x06, 0x64, 0xB8, 0x83, 0x04, 0x64, 0xB8, +0xA0, 0x06, 0x64, 0xB8, 0x31, 0x00, 0x60, 0xB8, +0x32, 0x00, 0x60, 0xB8, 0x33, 0x00, 0x60, 0xB8, +0x30, 0x00, 0x60, 0xB8, 0x84, 0x02, 0x64, 0xB8, +0x05, 0x00, 0x78, 0xB8, 0xC2, 0x01, 0x64, 0xB8, +0x00, 0x00, 0x78, 0x18, 0xFF, 0xFF, 0x01, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xF2, 0x01, +0x21, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x58, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x79, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x10, 0xF0, 0x20, 0x68, 0xE0, 0xF3, 0x19, 0x48, +0x00, 0x65, 0x00, 0xE8, 0x00, 0x65, 0x1A, 0xB8, +0x00, 0x65, 0x3B, 0xB8, 0x00, 0x65, 0x00, 0xBA, +0x00, 0xBA, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6C, 0x0D, 0xF0, 0x00, 0x4C, +0x03, 0xF0, 0x00, 0x4C, 0xBC, 0x65, 0x00, 0xF0, +0x21, 0x6C, 0x1F, 0xF4, 0x00, 0x4C, 0x8C, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x94, 0xB8, +0x00, 0x6D, 0xFE, 0xF7, 0x1F, 0x4D, 0xAC, 0xEC, +0x94, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0xF4, +0x00, 0x6D, 0xAD, 0xEC, 0x94, 0xB9, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6C, 0x00, 0xF0, 0x00, 0x4C, +0x00, 0x6E, 0x30, 0xF0, 0x20, 0x6F, 0x00, 0xF0, +0x00, 0x4F, 0xC0, 0xDC, 0x04, 0x4C, 0xE3, 0xEC, +0xB8, 0x67, 0xFB, 0x2D, 0x30, 0xF0, 0x20, 0x6C, +0x60, 0xF6, 0x18, 0x4C, 0x00, 0x6E, 0x30, 0xF0, +0x20, 0x6F, 0xC7, 0xF7, 0x00, 0x4F, 0xC0, 0xDC, +0x04, 0x4C, 0xE3, 0xEC, 0xB8, 0x67, 0xFB, 0x2D, +0x10, 0xF0, 0x20, 0x6C, 0x60, 0xF2, 0x1D, 0x4C, +0x00, 0xEC, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0x60, 0xF2, 0x1D, 0x4A, +0x40, 0xDB, 0x00, 0x18, 0x3E, 0x04, 0x00, 0x18, +0x15, 0x04, 0x00, 0x18, 0xA7, 0x05, 0x00, 0x18, +0x4B, 0x04, 0x00, 0x18, 0x52, 0x05, 0x00, 0x18, +0xDB, 0x05, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0x64, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, +0x00, 0x6D, 0x40, 0xAB, 0xAB, 0xED, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x00, 0x18, +0xE8, 0x05, 0x00, 0x18, 0x87, 0x1D, 0x01, 0x72, +0x02, 0x61, 0x00, 0x18, 0x1B, 0x1E, 0x00, 0x6C, +0x00, 0x18, 0x7F, 0x18, 0xFF, 0x17, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x68, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x50, 0x9A, +0x60, 0xDA, 0xC8, 0xB8, 0xAD, 0xB8, 0x4E, 0xB8, +0x6C, 0xB8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF0, +0xE0, 0x9C, 0x00, 0xF4, 0x4C, 0x9A, 0xE0, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x50, 0x9A, +0xC0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0x54, 0x9A, 0xA0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF4, 0x58, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x7B, 0x9C, 0x00, 0xF4, 0x5C, 0x9A, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x7D, 0x9C, +0x20, 0xF4, 0x40, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0x9C, 0x20, 0xF4, 0x44, 0x9A, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x65, 0x9C, +0x20, 0xF4, 0x48, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x66, 0x9C, 0xC0, 0xF2, 0x44, 0x9A, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x67, 0x9C, +0x20, 0xF4, 0x4C, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0x9C, 0x60, 0xF3, 0x4C, 0x9A, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0x9C, +0xA0, 0xF3, 0x50, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x70, 0x9C, 0x20, 0xF4, 0x50, 0x9A, +0x60, 0xDA, 0xFF, 0x17, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x48, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x42, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x59, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xBF, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xCD, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x3C, 0x01, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x69, 0x0D, 0xF0, 0x08, 0x49, +0x42, 0xD9, 0x63, 0xD9, 0x84, 0xD9, 0xA5, 0xD9, +0xC6, 0xD9, 0xE7, 0xD9, 0x58, 0x67, 0x58, 0xD9, +0x5D, 0x67, 0x5B, 0xD9, 0x5F, 0x67, 0x5D, 0xD9, +0x12, 0xEC, 0x10, 0xED, 0xCE, 0xB8, 0x9E, 0xD9, +0xBF, 0xD9, 0x80, 0xF0, 0xC0, 0xD9, 0x0D, 0xB8, +0x7F, 0x69, 0x0C, 0xE9, 0x2D, 0x21, 0x00, 0x65, +0x3D, 0x67, 0x00, 0xF3, 0x22, 0x31, 0x00, 0xF3, +0x20, 0x31, 0x08, 0x49, 0x42, 0xD9, 0x63, 0xD9, +0x84, 0xD9, 0xA5, 0xD9, 0xC6, 0xD9, 0xE7, 0xD9, +0x58, 0x67, 0x58, 0xD9, 0x5D, 0x67, 0x5B, 0xD9, +0x5F, 0x67, 0x5D, 0xD9, 0x12, 0xEC, 0x10, 0xED, +0xCE, 0xB8, 0x9E, 0xD9, 0xBF, 0xD9, 0x80, 0xF0, +0xC0, 0xD9, 0x00, 0xF0, 0x20, 0x6D, 0xA0, 0xF1, +0x1C, 0x4D, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x68, +0x00, 0xF0, 0x08, 0x48, 0x18, 0x48, 0x20, 0x98, +0x00, 0x65, 0x20, 0xDD, 0x00, 0x65, 0x1D, 0x67, +0x01, 0xDD, 0x00, 0x65, 0x00, 0xE9, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x69, 0x00, 0xF0, 0x08, 0x49, +0x1F, 0xF4, 0x00, 0x6C, 0x8C, 0xE8, 0x80, 0xF2, +0x02, 0x30, 0x0B, 0x20, 0x01, 0x6A, 0x0C, 0xEA, +0x04, 0x22, 0x40, 0x99, 0x00, 0x65, 0x40, 0xEA, +0x00, 0x65, 0x06, 0x30, 0x24, 0x41, 0xF5, 0x17, +0x00, 0x65, 0x30, 0xF0, 0x20, 0x69, 0x0D, 0xF0, +0x08, 0x49, 0x58, 0x99, 0x1A, 0x65, 0x5B, 0x99, +0xBA, 0x65, 0x5D, 0x99, 0xFA, 0x65, 0x9E, 0x99, +0xBF, 0x99, 0x32, 0xEC, 0x30, 0xED, 0x42, 0x99, +0x63, 0x99, 0x84, 0x99, 0xA5, 0x99, 0xC6, 0x99, +0xE7, 0x99, 0x80, 0xF0, 0x20, 0x99, 0xC9, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x1A, 0xB8, +0x00, 0x65, 0x3B, 0xB8, 0x00, 0x65, 0x00, 0xBA, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, 0x11, 0x4A, +0x40, 0xDB, 0x01, 0x4A, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0x00, 0xF5, 0x09, 0x4A, +0x40, 0xDB, 0x01, 0x4A, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x01, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, +0x44, 0x9A, 0x40, 0x9A, 0x08, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF3, 0x60, 0x9A, 0xFF, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, 0x10, 0xF0, +0x20, 0x6A, 0x20, 0xF5, 0x02, 0x4A, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x05, 0x4A, +0x40, 0xDB, 0x00, 0x18, 0x74, 0x1E, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF6, 0x70, 0x9A, 0x6C, 0x23, +0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0xA4, 0x1E, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, +0x50, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xA7, 0x1F, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF6, 0x50, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x8E, 0x1F, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF6, 0x50, 0x9A, 0x08, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xA5, 0x1E, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, 0x50, 0x9A, +0x10, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0xA6, 0x1E, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, +0x50, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xA7, 0x1E, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF6, 0x50, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0xA8, 0x1E, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF6, 0x50, 0x9A, 0x80, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xA9, 0x1E, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, 0x70, 0x9B, +0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x86, 0x1F, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF6, 0x70, 0x9B, 0x04, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xAA, 0x1E, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, 0x70, 0x9B, +0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xAB, 0x1E, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF6, 0x70, 0x9B, 0x10, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xAC, 0x1E, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, 0x74, 0x9A, +0x45, 0x23, 0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x6C, 0x1F, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF6, 0x54, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0xAD, 0x1E, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF6, 0x74, 0x9B, 0x04, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0x53, 0x1F, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF6, 0x74, 0x9B, 0x08, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0x37, 0x1F, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA0, 0xF2, 0x44, 0x9A, 0xC0, 0xF6, +0x74, 0x9B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0xAF, 0x1E, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA0, 0xF5, 0x48, 0x9A, 0xC0, 0xF6, +0x74, 0x9B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0xB0, 0x1E, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, +0x70, 0x9B, 0x10, 0xF0, 0x20, 0x6A, 0x60, 0xF5, +0x06, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x30, 0x9A, 0x10, 0xF0, 0x20, 0x68, +0xE0, 0xF6, 0x1D, 0x48, 0x00, 0xD9, 0x00, 0x18, +0x44, 0x1E, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, +0x40, 0x9A, 0x02, 0x22, 0x01, 0x48, 0x00, 0xD9, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0x20, 0xF7, 0x15, 0x4A, +0x40, 0xDB, 0x00, 0x18, 0x4B, 0x1E, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF6, 0x60, 0x9A, 0x80, 0xF0, +0x1D, 0x23, 0x08, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0xB7, 0x1E, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF6, 0x40, 0x9A, 0x10, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xEF, 0x1F, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF6, 0x40, 0x9A, +0x20, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x81, 0x1E, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF6, +0x40, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x82, 0x1E, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF6, 0x60, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xEB, 0x1F, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF6, 0x60, 0x9B, +0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xE7, 0x1F, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF5, 0x4C, 0x9A, +0xA0, 0xF6, 0x60, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0x83, 0x1E, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF5, +0x50, 0x9A, 0xA0, 0xF6, 0x60, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0x83, 0x1E, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF5, 0x54, 0x9A, 0xA0, 0xF6, 0x60, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, +0x83, 0x1E, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA0, 0xF5, 0x58, 0x9A, 0xA0, 0xF6, +0x60, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, +0x00, 0x18, 0x83, 0x1E, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF5, 0x5C, 0x9A, +0xA0, 0xF6, 0x60, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x04, 0x6C, 0x00, 0x18, 0x83, 0x1E, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF5, +0x40, 0x9A, 0xA0, 0xF6, 0x60, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x05, 0x6C, 0x00, 0x18, 0x83, 0x1E, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF5, 0x44, 0x9A, 0xA0, 0xF6, 0x60, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x06, 0x6C, 0x00, 0x18, +0x83, 0x1E, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF5, 0x48, 0x9A, 0xA0, 0xF6, +0x60, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x07, 0x6C, +0x00, 0x18, 0x83, 0x1E, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF6, 0x64, 0x9A, 0x80, 0xF0, 0x07, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF5, 0x4C, 0x9A, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0x27, 0x1F, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF5, 0x50, 0x9A, 0xA0, 0xF6, +0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, +0x00, 0x18, 0x27, 0x1F, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF5, 0x54, 0x9A, +0xA0, 0xF6, 0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x02, 0x6C, 0x00, 0x18, 0x27, 0x1F, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, +0x44, 0x9A, 0xA0, 0xF6, 0x64, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0x27, 0x1F, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF5, 0x48, 0x9A, 0xA0, 0xF6, 0x64, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, +0x27, 0x1F, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF5, 0x58, 0x9A, 0xA0, 0xF6, +0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0x10, 0x1F, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF5, 0x5C, 0x9A, +0xA0, 0xF6, 0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0xD6, 0x1E, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, +0x50, 0x9A, 0xA0, 0xF6, 0x64, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0xF6, 0x1E, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF5, 0x58, 0x9A, 0xA0, 0xF6, 0x64, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0xC0, 0x1E, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF6, +0x64, 0x9B, 0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0xE3, 0x1F, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, +0x40, 0x9A, 0xA0, 0xF6, 0x64, 0x9B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x9A, 0x1E, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF6, 0x68, 0x9A, 0x32, 0x23, +0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0xB8, 0x1F, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF6, 0x68, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, +0xB8, 0x1F, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF6, +0x68, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0xB8, 0x1F, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF6, 0x68, 0x9B, +0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x03, 0x6C, 0x00, 0x18, 0xB8, 0x1F, 0x30, 0xF0, +0x20, 0x6B, 0xA0, 0xF6, 0x68, 0x9B, 0x01, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, +0x00, 0x18, 0xB8, 0x1F, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF6, 0x4C, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0xB2, 0x1F, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF6, 0x6C, 0x9B, +0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x03, 0x22, +0x01, 0x6C, 0x00, 0x18, 0xB2, 0x1F, 0x30, 0xF0, +0x20, 0x6B, 0xA0, 0xF6, 0x6C, 0x9B, 0x00, 0xF2, +0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, +0x00, 0x18, 0xB2, 0x1F, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF6, 0x6C, 0x9B, 0x00, 0xF4, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, +0xB2, 0x1F, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF6, +0x6C, 0x9B, 0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0xB2, 0x1F, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF6, 0x6C, 0x9B, +0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0xB8, 0x03, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, 0x10, 0xF0, +0x20, 0x6A, 0x20, 0xF7, 0x16, 0x4A, 0x40, 0xDB, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xED, 0xFF, 0x75, 0x4C, 0xEC, +0xCC, 0xEA, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x0C, 0x4B, 0x71, 0xE4, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, +0x71, 0xE4, 0xC3, 0xF2, 0x6C, 0xA4, 0xAC, 0xEA, +0xAF, 0xED, 0x6C, 0xED, 0xAD, 0xEA, 0xC3, 0xF2, +0x4C, 0xC4, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, +0xFF, 0x74, 0xAC, 0xEA, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF1, 0x56, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, +0xC3, 0xF2, 0xAA, 0xA3, 0x8C, 0xEA, 0x8F, 0xEC, +0xAC, 0xEC, 0x8D, 0xEA, 0xC3, 0xF2, 0x4A, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0xF7, 0x63, 0x11, 0x62, +0x10, 0xD1, 0x0F, 0xD0, 0x40, 0xA4, 0x08, 0xD2, +0x08, 0x93, 0x1F, 0x6A, 0x4C, 0xEB, 0x08, 0xD3, +0x42, 0xA4, 0x61, 0xA4, 0x0D, 0xD2, 0x43, 0xA4, +0x84, 0xA4, 0x09, 0xD4, 0x08, 0x94, 0x08, 0x5C, +0x80, 0xF0, 0x0C, 0x60, 0xFF, 0x68, 0x84, 0x31, +0x24, 0x22, 0x09, 0x94, 0x22, 0x24, 0x0C, 0xEA, +0x0C, 0xEB, 0xA2, 0x67, 0xC3, 0x67, 0x91, 0x67, +0x0B, 0xD2, 0x0C, 0xD3, 0x00, 0x18, 0xAE, 0x02, +0x09, 0x93, 0x0D, 0x94, 0x41, 0x41, 0x0C, 0xEA, +0x0C, 0xEB, 0x8C, 0xE8, 0xA3, 0x67, 0x82, 0x67, +0xD0, 0x67, 0x0A, 0xD2, 0x09, 0xD3, 0x00, 0x18, +0xAE, 0x02, 0x0B, 0x95, 0x0C, 0x96, 0x91, 0x67, +0x01, 0x6F, 0x00, 0x18, 0xC3, 0x03, 0x0A, 0x94, +0x09, 0x95, 0xD0, 0x67, 0x02, 0x6F, 0x00, 0x18, +0xC3, 0x03, 0x0F, 0x59, 0x08, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x28, 0x33, 0xE0, 0xF0, 0x0C, 0x4A, +0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x00, 0x6A, +0x44, 0x10, 0xD0, 0xF4, 0x44, 0x41, 0x1F, 0xF7, +0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF4, 0x4C, 0x9A, 0x34, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x50, 0x9A, +0x2F, 0x10, 0x80, 0xF4, 0x44, 0x41, 0x1F, 0xF7, +0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF4, 0x54, 0x9A, 0x24, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x58, 0x9A, +0x1F, 0x10, 0xC0, 0xF4, 0x48, 0x41, 0x1F, 0xF7, +0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF4, 0x5C, 0x9A, 0x14, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x40, 0x9A, +0x0F, 0x10, 0x70, 0xF4, 0x48, 0x41, 0x1F, 0xF7, +0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF4, 0x44, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x48, 0x9A, +0x49, 0xE1, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, +0x6C, 0xEA, 0x7D, 0x67, 0x53, 0xC3, 0x42, 0x32, +0x54, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x45, 0xE1, 0xC3, 0xF2, 0x4C, 0xA1, +0x55, 0xC3, 0xC3, 0xF2, 0x4D, 0xA1, 0x56, 0xC3, +0xC3, 0xF2, 0x5C, 0xA1, 0x57, 0xC3, 0xC3, 0xF2, +0x5D, 0xA1, 0x58, 0xC3, 0x9D, 0x67, 0x21, 0x6A, +0x50, 0xC4, 0x07, 0x6A, 0x4F, 0xCC, 0x47, 0x44, +0x19, 0x4A, 0x40, 0xA2, 0x52, 0xC4, 0x04, 0x04, +0x00, 0x18, 0xCA, 0x19, 0x11, 0x97, 0x10, 0x91, +0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x01, 0xA4, 0x20, 0xA4, 0x09, 0x20, 0x90, 0x67, +0xB1, 0x67, 0x00, 0x18, 0xBB, 0x02, 0x90, 0x67, +0xB1, 0x67, 0x53, 0x6E, 0x00, 0x18, 0xA6, 0x22, +0x7D, 0x67, 0x20, 0x6A, 0x50, 0xC3, 0x03, 0x6A, +0x4F, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF2, +0x40, 0x9A, 0x9D, 0x67, 0x40, 0xA2, 0x52, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xC3, 0xF2, 0x6A, 0xA2, 0xC3, 0xF2, 0x4B, 0xA2, +0x73, 0xC4, 0x54, 0xC4, 0x04, 0x04, 0x00, 0x18, +0xCA, 0x19, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x0C, 0x4B, 0x40, 0xA4, 0xA0, 0xF0, +0xC6, 0xA3, 0x7F, 0x68, 0x5E, 0x32, 0x5C, 0x32, +0x0C, 0xEE, 0x4D, 0xEE, 0xA0, 0xF0, 0xC6, 0xC3, +0xA0, 0xA4, 0x01, 0x6A, 0x41, 0x6F, 0xBA, 0x35, +0x4C, 0xED, 0xEB, 0xEF, 0xB8, 0x35, 0xCC, 0xEF, +0xAD, 0xEF, 0xA0, 0xF0, 0xE6, 0xC3, 0xA0, 0xA4, +0x21, 0x6E, 0xCB, 0xEE, 0xB6, 0x35, 0x4C, 0xED, +0xB4, 0x35, 0xEC, 0xEE, 0xAD, 0xEE, 0xA0, 0xF0, +0xC6, 0xC3, 0xA0, 0xA4, 0x11, 0x6F, 0xEB, 0xEF, +0xB2, 0x35, 0x4C, 0xED, 0xB0, 0x35, 0xCC, 0xEF, +0xAD, 0xEF, 0xA0, 0xF0, 0xE6, 0xC3, 0xA0, 0xA4, +0x10, 0x6E, 0x0F, 0x69, 0xCB, 0xEE, 0x2C, 0xED, +0xEC, 0xEE, 0xAD, 0xEE, 0xA0, 0xF0, 0xC6, 0xC3, +0xE1, 0xA4, 0xA7, 0x67, 0xA0, 0xF0, 0xE7, 0xA3, +0x0C, 0xED, 0xFD, 0x65, 0x1F, 0x65, 0x80, 0x6D, +0xF8, 0x67, 0xAB, 0xED, 0xEC, 0xED, 0xFF, 0x67, +0xED, 0xED, 0xA0, 0xF0, 0xA7, 0xC3, 0xE2, 0xA4, +0x0C, 0xED, 0xA0, 0xF0, 0xE8, 0xC3, 0xE1, 0xA4, +0xFE, 0x37, 0xFC, 0x37, 0xED, 0xED, 0xA0, 0xF0, +0xA7, 0xC3, 0xA0, 0xF0, 0xE9, 0xA3, 0x83, 0xA4, +0x02, 0x6D, 0xAB, 0xED, 0x4C, 0xEC, 0xEC, 0xED, +0x8D, 0xED, 0xA0, 0xF0, 0xA9, 0xC3, 0xA0, 0xF0, +0xA6, 0xA3, 0x86, 0x67, 0x2C, 0xEC, 0xBA, 0x35, +0x4E, 0xED, 0x4C, 0xED, 0x00, 0x18, 0xA8, 0x1C, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xA2, 0xA4, 0x41, 0xA4, 0x80, 0xA4, 0xA0, 0x35, +0x55, 0xE5, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xED, +0x00, 0x18, 0xC6, 0x2A, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD0, 0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, +0x40, 0xF7, 0x15, 0x4C, 0x07, 0x6E, 0x00, 0x18, +0xAC, 0x19, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF7, +0x55, 0xA2, 0x05, 0x5A, 0x13, 0x60, 0x30, 0xF0, +0x20, 0x6B, 0x48, 0x32, 0x20, 0xF1, 0x08, 0x4B, +0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, 0x00, 0x6C, +0x07, 0x10, 0x01, 0x6C, 0x05, 0x10, 0x02, 0x6C, +0x03, 0x10, 0x03, 0x6C, 0x01, 0x10, 0x04, 0x6C, +0x00, 0x18, 0x5F, 0x1D, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x0C, 0x4B, 0x04, 0xF0, 0x44, 0xA3, +0x1F, 0x6C, 0x01, 0x6D, 0x4A, 0x32, 0x8C, 0xEA, +0xC0, 0xF0, 0x89, 0xA3, 0x47, 0xEC, 0xAC, 0xEA, +0x03, 0x22, 0x04, 0xF0, 0x85, 0xC3, 0x04, 0x10, +0x01, 0x6A, 0x4B, 0xEA, 0x04, 0xF0, 0x45, 0xC3, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, +0x04, 0xF0, 0x64, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, +0x20, 0x22, 0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x04, 0xF0, 0x44, 0xC0, 0x00, 0x18, 0xCA, 0x22, +0x7D, 0x67, 0x48, 0xCB, 0x68, 0xAB, 0x04, 0xF0, +0x86, 0xA8, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEB, +0x8E, 0xEB, 0x05, 0x23, 0x7D, 0x67, 0x88, 0xAB, +0x4C, 0xEC, 0x00, 0x18, 0xE9, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0x04, 0xF0, +0x84, 0xA2, 0x02, 0x6B, 0x8D, 0xEB, 0x04, 0xF0, +0x64, 0xC2, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x07, 0x6E, +0x40, 0xF7, 0x07, 0x4C, 0x00, 0x18, 0xAC, 0x19, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xA0, 0xF0, 0x7C, 0xA2, 0x01, 0x6C, 0x00, 0x6D, +0xFF, 0x4B, 0x63, 0xF3, 0x68, 0xC2, 0xA0, 0xF0, +0x5B, 0xA2, 0x4C, 0xEC, 0x00, 0x18, 0x8F, 0x07, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x90, 0x67, 0x00, 0x18, 0x18, 0x09, +0x90, 0x67, 0x00, 0x18, 0x77, 0x25, 0x01, 0x6C, +0x00, 0x18, 0xD9, 0x07, 0x90, 0x67, 0x00, 0x18, +0xBC, 0x07, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x27, 0x67, +0x4C, 0xE9, 0x6F, 0x41, 0x4C, 0xEB, 0x04, 0x67, +0x02, 0x5B, 0x4C, 0xE8, 0x4C, 0xED, 0x4C, 0xEE, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0xCB, 0x21, +0x10, 0x58, 0x55, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0x33, 0x80, 0xF1, 0x14, 0x4A, 0x69, 0xE2, +0x40, 0x9A, 0x00, 0xEA, 0xD0, 0xF4, 0x44, 0x40, +0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x6C, 0x9A, +0x34, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, +0x70, 0x9A, 0x2F, 0x10, 0x80, 0xF4, 0x44, 0x40, +0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x74, 0x9A, +0x24, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, +0x78, 0x9A, 0x1F, 0x10, 0xC0, 0xF4, 0x48, 0x40, +0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x7C, 0x9A, +0x14, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, +0x60, 0x9A, 0x0F, 0x10, 0x70, 0xF4, 0x48, 0x40, +0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x64, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, +0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x6D, 0xE0, 0x41, 0xE0, 0xC3, 0xF2, +0x8C, 0xA0, 0xC3, 0xF2, 0x5C, 0xA0, 0x8D, 0xEA, +0xFF, 0x6C, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF1, 0x35, 0xC2, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x10, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0x09, 0x4B, 0x00, 0xF0, 0x68, 0xDA, +0x10, 0xF0, 0x20, 0x6B, 0x00, 0xF0, 0x08, 0x4A, +0xC0, 0xF3, 0x19, 0x4B, 0x61, 0xDA, 0x10, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x09, 0x4B, 0x62, 0xDA, +0x10, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x19, 0x4B, +0x63, 0xDA, 0x10, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, +0x09, 0x4B, 0x64, 0xDA, 0x10, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x19, 0x4B, 0x65, 0xDA, 0x10, 0xF0, +0x20, 0x6B, 0xE0, 0xF2, 0x01, 0x4B, 0x66, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x00, 0x6B, 0x80, 0xF0, 0x6C, 0xDA, 0x60, 0xF1, +0x79, 0xC2, 0x00, 0x18, 0x00, 0x04, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF1, +0x18, 0x4A, 0x64, 0xF1, 0x08, 0x4C, 0x00, 0x6B, +0x60, 0xC2, 0x70, 0xC2, 0x01, 0x4A, 0x62, 0x67, +0x8E, 0xEB, 0xF9, 0x2B, 0x05, 0x97, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0xC3, 0xF2, +0x69, 0xC2, 0xC3, 0xF2, 0x6A, 0xC2, 0xC3, 0xF2, +0x6B, 0xC2, 0xC3, 0xF2, 0x68, 0xC2, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF1, 0x04, 0x4A, 0x67, 0x42, 0x09, 0x4B, +0x00, 0x6C, 0x80, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, +0xFB, 0x61, 0x42, 0xF4, 0x10, 0x6A, 0x1F, 0xF7, +0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x68, 0x9B, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF3, 0x6C, 0x9B, 0x6D, 0xE2, +0x04, 0x4A, 0x00, 0x6C, 0x62, 0xF4, 0x00, 0x72, +0x80, 0xDB, 0xE9, 0x61, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF4, 0x44, 0x9A, 0x03, 0x6B, 0xC8, 0x6C, +0x40, 0x9A, 0x42, 0x32, 0x52, 0x32, 0x6C, 0xEA, +0x03, 0x72, 0x06, 0x60, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF0, 0x08, 0x4B, 0x69, 0xE2, 0x80, 0xA2, +0x00, 0x18, 0x5B, 0x05, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x2B, 0x04, 0x00, 0x18, 0x58, 0x04, +0x00, 0x18, 0x20, 0x2B, 0x00, 0x18, 0xB9, 0x09, +0x00, 0x18, 0xB2, 0x09, 0x00, 0x18, 0x50, 0x14, +0x00, 0x18, 0xCB, 0x0E, 0x00, 0x18, 0xB2, 0x0F, +0x00, 0x18, 0x8B, 0x2A, 0x00, 0x18, 0x12, 0x1D, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x00, 0x6B, 0x60, 0xF6, 0x7C, 0xC2, 0x60, 0xF6, +0x7D, 0xC2, 0x60, 0xF1, 0x79, 0xC2, 0x60, 0xF1, +0x7A, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF4, 0x40, 0x9A, 0x01, 0x6B, 0x60, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF4, 0x84, 0x9A, 0xFF, 0x6B, 0x20, 0x6D, +0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, +0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, +0x88, 0x9A, 0x08, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x20, 0xE8, +0x05, 0x5C, 0x5E, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x88, 0x34, 0x20, 0xF1, 0x1C, 0x4A, 0x89, 0xE2, +0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x4C, 0x9B, 0xAD, 0xEA, 0x80, 0xF6, +0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF4, +0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF4, 0x6C, 0x9B, 0x32, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, 0x41, 0x9B, +0xAD, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF3, 0x74, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xA0, 0xF4, 0x74, 0x9B, 0x21, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, +0x42, 0x9B, 0xAD, 0xEA, 0x42, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xA0, 0xF4, 0x78, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF4, 0x7C, 0x9B, +0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, +0x0C, 0x4B, 0x43, 0x9B, 0xAD, 0xEA, 0x43, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, 0x60, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, +0x64, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, 0x44, 0x9B, +0xAD, 0xEA, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF4, 0x68, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF4, 0x6C, 0x9B, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x63, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x40, 0xF1, +0x10, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x8C, 0x9B, +0xAF, 0xEA, 0x8C, 0xEA, 0x80, 0xF6, 0x4C, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x6C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, +0x50, 0x9A, 0x35, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x0C, 0x4B, 0x81, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF4, 0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF3, 0x54, 0x9A, 0x23, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, +0x82, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x42, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF4, 0x7C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, +0x58, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x0C, 0x4B, 0x83, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF4, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF4, 0x40, 0x9A, 0xA0, 0xDA, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, +0x0C, 0x4B, 0x84, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, +0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, +0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0x48, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, +0x03, 0x24, 0x01, 0x74, 0x12, 0x60, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, +0x4E, 0x9B, 0xAD, 0xEA, 0x4E, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x40, 0xF2, 0x70, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, 0x70, 0x9B, +0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, +0x0C, 0x4B, 0x4F, 0x9B, 0xAD, 0xEA, 0x4F, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, 0x74, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, +0x78, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x03, 0x24, 0x01, 0x74, 0x13, 0x60, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, +0x8E, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x4E, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, 0x70, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF2, +0x50, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x0C, 0x4B, 0x8F, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x4F, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF4, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF4, 0x54, 0x9A, 0xA0, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6C, +0x80, 0xF4, 0x8C, 0x9C, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF6, 0x4C, 0xDB, 0x80, 0xF6, +0x0C, 0x4B, 0x41, 0xDB, 0x42, 0xDB, 0x43, 0xDB, +0x44, 0xDB, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0xA0, 0xF4, 0x94, 0x9C, 0x40, 0xDC, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0xF4, 0x9C, 0x9C, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF4, 0x84, 0x9C, +0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF4, +0x8C, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0xC0, 0xF4, 0x90, 0x9C, 0x4E, 0xDB, 0x4F, 0xDB, +0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF4, +0x98, 0x9C, 0x40, 0xDC, 0x4C, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF4, 0x7C, 0x9B, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF4, 0x70, 0x9B, 0x01, 0x6A, 0x4B, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF3, +0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF4, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF4, 0x60, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF2, 0x70, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF4, +0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF4, 0x60, 0x9B, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, 0xA4, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x10, 0x6E, +0x80, 0xF6, 0xCC, 0xDB, 0x01, 0xF7, 0x01, 0x6A, +0x80, 0xF6, 0x0C, 0x4B, 0x00, 0x6C, 0x42, 0xDB, +0x43, 0xDB, 0xA1, 0xDB, 0x84, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF4, 0x6C, 0x9B, 0xC0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF4, 0x74, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF4, +0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF4, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF4, 0x4C, 0x9A, 0x80, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x00, 0x6B, 0x6C, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0x5C, 0x9A, +0x60, 0xDA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xFF, 0x6C, 0x80, 0xF6, 0x0C, 0x4A, 0x27, 0x4C, +0x0C, 0xF0, 0x01, 0x6B, 0x8E, 0xDA, 0x6F, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0x50, 0x9A, +0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, +0x58, 0x9A, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xFB, 0x04, +0x00, 0x18, 0x17, 0x05, 0x00, 0x18, 0x2A, 0x05, +0x00, 0x18, 0x47, 0x05, 0x00, 0x18, 0x41, 0x05, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x5A, 0x19, 0x00, 0x18, 0x90, 0x19, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF4, 0x68, 0x9A, 0xC0, 0x6A, +0xFF, 0x68, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x0A, 0x6C, 0x00, 0x18, 0x9B, 0x19, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF4, 0x4C, 0x9A, 0x01, 0x6B, +0x05, 0x97, 0x40, 0xA2, 0x0C, 0xEA, 0x5E, 0x32, +0x6E, 0xEA, 0x6C, 0xEA, 0x0C, 0xEA, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, +0x70, 0x9B, 0x10, 0xF0, 0x20, 0x6A, 0xA2, 0xF5, +0x1D, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x25, 0x10, +0x82, 0xF3, 0x08, 0x70, 0x11, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF3, 0x60, 0x9A, 0x02, 0xF0, +0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x54, 0x9A, +0x03, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, 0x15, 0x10, +0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, +0x14, 0x6C, 0x00, 0x18, 0x9B, 0x19, 0x33, 0x58, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, +0x50, 0x9A, 0x60, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, +0x04, 0x2A, 0x00, 0x18, 0x60, 0x05, 0x01, 0x72, +0xD7, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x54, 0x9A, 0x02, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0xA2, 0xF5, 0x1E, 0x4A, +0x40, 0xDB, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, +0x14, 0x9A, 0x00, 0x6D, 0x02, 0xF0, 0x00, 0x6E, +0x90, 0x67, 0x00, 0x18, 0xA7, 0x19, 0x04, 0x6A, +0x40, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, +0x58, 0x9A, 0x20, 0x48, 0x0E, 0xEA, 0xF7, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, 0x9C, 0x9A, +0x00, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x00, 0x18, +0xA7, 0x19, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xB5, 0x05, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF3, 0x58, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF5, 0x40, 0x9A, 0x3F, 0x6B, 0x60, 0xC2, +0x00, 0x18, 0x5F, 0x04, 0x00, 0x18, 0x63, 0x04, +0x00, 0x18, 0x20, 0x20, 0x00, 0x18, 0x95, 0x05, +0x00, 0x18, 0xBE, 0x05, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF5, 0x40, 0x9A, 0xFF, 0x6B, 0x40, 0xA2, +0x4C, 0xEB, 0x6A, 0x33, 0x03, 0x6A, 0x4C, 0xEB, +0x02, 0x6A, 0x04, 0x23, 0x03, 0x73, 0x03, 0x6A, +0x01, 0x60, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF5, 0x4C, 0x9A, +0xE5, 0xF6, 0x1F, 0x6B, 0x30, 0xF0, 0x20, 0x6D, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF5, +0x50, 0x9A, 0x10, 0x6B, 0x00, 0xF2, 0xAC, 0x9D, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF5, +0x54, 0x9A, 0x01, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF5, 0x58, 0x9A, 0xF8, 0x6B, +0x80, 0xA2, 0x8C, 0xEB, 0x60, 0xC2, 0x80, 0xA2, +0xEF, 0x6B, 0x8C, 0xEB, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6B, 0xE0, 0xF5, 0x9C, 0x9B, 0x60, 0x9C, +0xAD, 0xEB, 0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF6, 0x60, 0x9B, 0x04, 0x6C, 0x80, 0xC3, +0x80, 0xA2, 0x7F, 0x6B, 0x8C, 0xEB, 0x60, 0xC2, +0x80, 0xA2, 0xF7, 0x6B, 0x8C, 0xEB, 0x60, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x00, 0x6A, +0x80, 0xF6, 0x0C, 0x48, 0x01, 0x6C, 0x02, 0x6D, +0x00, 0x6E, 0x40, 0xF0, 0x50, 0xC8, 0x00, 0x18, +0xC2, 0x17, 0x40, 0xF0, 0xD0, 0xA8, 0x01, 0x6C, +0x03, 0x6D, 0xC2, 0x36, 0x00, 0x18, 0xC2, 0x17, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0x60, 0xBA, 0x20, 0xE8, 0x40, 0xBA, 0x20, 0xE8, +0x4C, 0xB8, 0x00, 0x65, 0x80, 0x34, 0x8D, 0xEA, +0x8A, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x4C, 0xB8, 0x00, 0x65, +0x80, 0x34, 0x8F, 0xEC, 0x8C, 0xEA, 0x8A, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x8E, 0x35, 0x80, 0xF6, 0x0C, 0x4B, 0xAD, 0xE3, +0xA3, 0xF2, 0x78, 0xA3, 0x07, 0x6D, 0x8C, 0xED, +0x67, 0xED, 0x01, 0x6C, 0x8C, 0xEB, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x24, 0x67, +0x4C, 0xE9, 0x4C, 0xED, 0x2E, 0x34, 0x07, 0x6B, +0x01, 0x75, 0x4C, 0xEC, 0x2C, 0xEB, 0x1F, 0x61, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, +0x11, 0xE4, 0x01, 0x6A, 0x44, 0xEB, 0xA3, 0xF2, +0x78, 0xA4, 0x00, 0x6D, 0x6D, 0xEA, 0xA3, 0xF2, +0x58, 0xC4, 0x91, 0x67, 0x00, 0x18, 0xDF, 0x29, +0xC0, 0xF0, 0x4A, 0xA0, 0x4E, 0xE9, 0x1C, 0x29, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF1, 0x48, 0x9A, +0x40, 0x9A, 0x50, 0x32, 0x00, 0xF5, 0x42, 0x32, +0xE3, 0xF2, 0x56, 0xC8, 0x11, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0x51, 0xE4, +0x01, 0x6A, 0x44, 0xEB, 0xA3, 0xF2, 0x78, 0xA4, +0x4F, 0xEA, 0x01, 0x6D, 0x6C, 0xEA, 0xA3, 0xF2, +0x58, 0xC4, 0x91, 0x67, 0x00, 0x18, 0xDF, 0x29, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x6D, 0x00, 0x18, +0xDF, 0x29, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x00, 0x6D, 0x00, 0x18, 0xDF, 0x29, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x4C, 0xEC, +0x05, 0x5C, 0xAC, 0xEA, 0x4B, 0x60, 0x30, 0xF0, +0x20, 0x6B, 0x88, 0x34, 0x40, 0xF0, 0x04, 0x4B, +0x8D, 0xE3, 0x60, 0x9B, 0x00, 0xEB, 0x05, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF1, 0x6C, 0x9A, +0x2D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF1, +0x6C, 0x9A, 0x20, 0x10, 0x05, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF1, 0x70, 0x9A, 0x22, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF1, 0x70, 0x9A, +0x15, 0x10, 0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF1, 0x74, 0x9A, 0x17, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF1, 0x74, 0x9A, 0x0A, 0x10, +0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF1, +0x78, 0x9A, 0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF1, 0x78, 0x9A, 0x80, 0xA3, 0xF7, 0x6A, +0x0A, 0x10, 0x0C, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF1, 0x7C, 0x9A, 0x40, 0xA3, 0xFF, 0x6C, +0x08, 0x6D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF1, 0x7C, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x6B, 0xAC, 0xEA, +0x6E, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x05, 0x5C, +0x48, 0x32, 0x08, 0x60, 0x30, 0xF0, 0x20, 0x6B, +0x88, 0x34, 0x40, 0xF0, 0x18, 0x4B, 0x8D, 0xE3, +0x60, 0x9B, 0x00, 0xEB, 0x01, 0x6A, 0x4B, 0xEA, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF1, +0x88, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0x00, 0xF2, +0xA0, 0x9D, 0x60, 0x9C, 0xAC, 0xEB, 0x1E, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF1, 0x88, 0x9B, +0x30, 0xF0, 0x20, 0x6D, 0x00, 0xF2, 0xA0, 0x9D, +0x60, 0x9C, 0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, +0x00, 0xF2, 0xAC, 0x9D, 0x0E, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xE0, 0xF1, 0x88, 0x9B, 0x30, 0xF0, +0x20, 0x6D, 0x00, 0xF2, 0xA0, 0x9D, 0x60, 0x9C, +0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, 0x00, 0xF2, +0xB0, 0x9D, 0xAD, 0xEB, 0x60, 0xDC, 0x60, 0xF5, +0x60, 0x42, 0x1F, 0xF7, 0x00, 0x6C, 0x8C, 0xEB, +0x02, 0xF0, 0x00, 0x73, 0x10, 0x61, 0x2E, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF1, 0x88, 0x9B, +0x30, 0xF0, 0x20, 0x6D, 0x00, 0xF2, 0xA0, 0x9D, +0x60, 0x9C, 0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, +0x00, 0xF2, 0xB4, 0x9D, 0xE6, 0x17, 0x1E, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF2, 0x68, 0x9B, +0x1D, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF1, +0x88, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0x00, 0xF2, +0xA0, 0x9D, 0x60, 0x9C, 0xAC, 0xEB, 0x30, 0xF0, +0x20, 0x6D, 0x00, 0xF2, 0xB8, 0x9D, 0xAD, 0xEB, +0x60, 0xDC, 0x60, 0xF5, 0x60, 0x42, 0x1F, 0xF7, +0x00, 0x6C, 0x8C, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x01, 0x60, 0x07, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF2, 0x64, 0x9B, 0x69, 0xE2, 0x40, 0x9A, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF2, +0x68, 0x9B, 0x69, 0xE2, 0x40, 0x9A, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x74, 0xAC, 0xEA, +0x13, 0x60, 0x03, 0x24, 0x02, 0x74, 0x15, 0x60, +0x18, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, +0x0C, 0x4B, 0xE3, 0xF2, 0xD0, 0xA3, 0x01, 0x6D, +0x4C, 0xED, 0x02, 0x6A, 0x4B, 0xEA, 0xCC, 0xEA, +0xAD, 0xEA, 0xE3, 0xF2, 0x50, 0xC3, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, 0x5F, 0xC3, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF7, +0x5D, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF2, +0x5C, 0x9A, 0x60, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, +0x24, 0x22, 0x02, 0x5C, 0x03, 0x61, 0x02, 0x74, +0x17, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x0C, 0x4B, 0xE3, 0xF2, 0x90, 0xA3, +0x01, 0x6A, 0x8C, 0xEA, 0xE3, 0xF2, 0x93, 0xA3, +0x7F, 0x6B, 0x5C, 0x32, 0x8C, 0xEB, 0x6D, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF2, 0x60, 0x9B, 0x40, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF7, 0x7D, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF2, 0x44, 0x9A, +0x60, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF2, 0x48, 0x9A, 0x60, 0xA2, 0xFF, 0x6A, +0x6C, 0xEA, 0xFF, 0x72, 0x00, 0x6A, 0x0B, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF2, 0x4C, 0x9A, +0x60, 0xA2, 0x07, 0x6A, 0x6C, 0xEA, 0x07, 0x6B, +0x6E, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x74, 0xAC, 0xEA, +0x03, 0x60, 0x02, 0x74, 0x09, 0x60, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x02, 0x6B, 0xE3, 0xF2, 0x78, 0xC2, 0x15, 0x10, +0x09, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0xA0, 0xF0, 0x77, 0xA2, 0xE3, 0xF2, +0x78, 0xC2, 0x05, 0x10, 0xFF, 0x4A, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF1, 0x44, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0xE3, 0xF2, +0x78, 0xA2, 0xE3, 0xF2, 0x90, 0xA2, 0xE3, 0xF2, +0x79, 0xC2, 0x40, 0x6B, 0x8D, 0xEB, 0xE3, 0xF2, +0x70, 0xC2, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xBB, 0x06, 0x01, 0x72, 0x0E, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xE3, 0xF2, 0x90, 0xA2, 0x04, 0x6B, 0x8C, 0xEB, +0x05, 0x2B, 0xA0, 0xF0, 0x51, 0xA2, 0x05, 0x5A, +0x58, 0x67, 0x01, 0x10, 0x00, 0x6A, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xBB, 0x06, 0x01, 0x72, 0x1C, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xE3, 0xF2, 0x94, 0xA2, 0x03, 0x6B, 0x8C, 0xEB, +0x13, 0x2B, 0xA0, 0xF0, 0x71, 0xA2, 0x10, 0x2B, +0x04, 0x6B, 0x8C, 0xEB, 0x0D, 0x2B, 0x10, 0x6B, +0x8C, 0xEB, 0x0A, 0x2B, 0xE3, 0xF2, 0x90, 0xA2, +0x20, 0x6B, 0x8C, 0xEB, 0x05, 0x23, 0xE3, 0xF2, +0x4C, 0xA2, 0x01, 0x5A, 0x58, 0x67, 0x01, 0x10, +0x00, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xA0, 0xF0, 0x9B, 0xA2, 0x02, 0x6B, 0x6C, 0xEC, +0x14, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x20, 0xF2, +0x90, 0x9C, 0x80, 0xA4, 0x1C, 0x2C, 0x63, 0xF3, +0x8C, 0xA2, 0x01, 0x6A, 0x8C, 0xEA, 0xFF, 0x6C, +0x8C, 0xEA, 0x15, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF2, 0x54, 0x9A, 0x40, 0xA2, 0x4C, 0xEB, +0x0E, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF2, +0x58, 0x9A, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, +0x6C, 0xEA, 0x42, 0x32, 0x01, 0x6B, 0x52, 0x32, +0x6E, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, +0xE3, 0xF2, 0x11, 0xA3, 0x20, 0x6F, 0xFF, 0x6A, +0x0C, 0xEF, 0x4C, 0xEF, 0x4C, 0xEC, 0x4C, 0xED, +0x4C, 0xEE, 0x6E, 0x2F, 0xE3, 0xF2, 0x10, 0xA3, +0x01, 0x6F, 0x0C, 0xEF, 0x4C, 0xEF, 0x09, 0x27, +0x03, 0xF3, 0x50, 0xA3, 0xE4, 0x42, 0x03, 0x4A, +0x03, 0xF3, 0xEB, 0xC3, 0x03, 0xF3, 0x4A, 0xC3, +0x08, 0x10, 0x05, 0x6F, 0x03, 0xF3, 0xEB, 0xC3, +0x05, 0x4E, 0x04, 0x6F, 0x03, 0xF3, 0xEA, 0xC3, +0x4C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x03, 0xF3, 0xE9, 0xA2, 0x03, 0xF3, +0x6A, 0xA2, 0xE3, 0xEB, 0x09, 0x61, 0x03, 0xF3, +0x6B, 0xA2, 0xE3, 0xF2, 0xDA, 0xC2, 0x71, 0xE4, +0xB7, 0xE4, 0x03, 0xF3, 0xAC, 0xC2, 0x09, 0x10, +0x03, 0xF3, 0x8B, 0xA2, 0x77, 0xE5, 0xB9, 0xE6, +0x6F, 0xE4, 0xE3, 0xF2, 0xDA, 0xC2, 0x03, 0xF3, +0x6C, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x03, 0xF3, 0x6B, 0xA2, 0x03, 0xF3, +0x8C, 0xA2, 0x0A, 0x4B, 0x82, 0xEB, 0x02, 0x60, +0x03, 0xF3, 0x6C, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x03, 0xF3, 0x6C, 0xA2, +0xE3, 0xF2, 0x9A, 0xA2, 0x23, 0x4B, 0x82, 0xEB, +0x02, 0x60, 0xE3, 0xF2, 0x7A, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0x03, 0xF3, +0x6C, 0xA2, 0xFF, 0x6C, 0x03, 0xF3, 0x62, 0xCA, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF2, 0x7C, 0x9B, +0x03, 0xF3, 0x42, 0xAA, 0xA0, 0xA3, 0x8C, 0xED, +0x4E, 0xED, 0x02, 0x25, 0x4C, 0xEC, 0x80, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xE3, 0xF2, 0x91, 0xA2, 0x41, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xE3, 0xF2, 0x71, 0xC2, 0x04, 0x10, +0x40, 0x6A, 0x0D, 0xEA, 0xE3, 0xF2, 0x51, 0xC3, +0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0xFF, 0x68, +0x8C, 0xE8, 0xE3, 0xF2, 0x90, 0xA2, 0x03, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x00, 0x6C, 0xE3, 0xF2, +0x9B, 0xC2, 0xE3, 0xF2, 0x94, 0xC2, 0x41, 0x6C, +0x8B, 0xEC, 0x8C, 0xEB, 0xE3, 0xF2, 0x91, 0xA2, +0xE3, 0xF2, 0x70, 0xC2, 0x11, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x90, 0x67, 0xE3, 0xF2, 0x71, 0xC2, +0x00, 0x18, 0x7E, 0x25, 0x90, 0x67, 0x00, 0x18, +0x77, 0x25, 0x90, 0x67, 0x00, 0x18, 0x8C, 0x25, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x0A, 0x26, +0x00, 0x6D, 0xC5, 0x67, 0xFF, 0x6C, 0x00, 0x18, +0xA6, 0x22, 0x01, 0x6C, 0x0C, 0x6D, 0x00, 0x18, +0x94, 0x06, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x00, 0x18, 0x0A, 0x26, 0x05, 0x20, +0x00, 0x6D, 0xFF, 0x6C, 0xC5, 0x67, 0x00, 0x18, +0xA6, 0x22, 0x01, 0x6C, 0x04, 0x6D, 0x00, 0x18, +0x94, 0x06, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x2E, 0x6E, 0xFF, 0x6C, 0x6F, 0x6D, 0x00, 0x18, +0xA6, 0x22, 0x01, 0x6C, 0x02, 0x6D, 0x00, 0x18, +0x94, 0x06, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6C, 0xA4, 0x67, +0x2F, 0x6E, 0x00, 0x18, 0xA6, 0x22, 0x00, 0x18, +0xEA, 0x25, 0x00, 0x18, 0x51, 0x26, 0x01, 0x6C, +0x08, 0x6D, 0x00, 0x18, 0x94, 0x06, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, +0x01, 0x74, 0xAC, 0xE8, 0x1C, 0x61, 0x30, 0xF0, +0x20, 0x69, 0x80, 0xF6, 0x0C, 0x49, 0xA0, 0xF0, +0x5D, 0xA1, 0x09, 0x22, 0x90, 0x67, 0x00, 0x18, +0x6D, 0x25, 0xA0, 0xF0, 0xBD, 0xA1, 0x90, 0x67, +0x00, 0x18, 0xE6, 0x25, 0x09, 0x10, 0x90, 0x67, +0x00, 0x18, 0x8C, 0x25, 0x90, 0x67, 0x00, 0x18, +0x9D, 0x25, 0x90, 0x67, 0x00, 0x18, 0x96, 0x25, +0x00, 0x18, 0x86, 0x07, 0x14, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF7, 0x49, 0xA2, 0x04, 0x22, +0x90, 0x67, 0x00, 0x18, 0x6D, 0x25, 0x03, 0x10, +0x90, 0x67, 0x00, 0x18, 0x8C, 0x25, 0x90, 0x67, +0x00, 0x18, 0x77, 0x25, 0x90, 0x67, 0x00, 0x18, +0x7E, 0x25, 0x00, 0x18, 0x6C, 0x07, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x63, 0xF3, 0x68, 0xA2, +0xFF, 0x6D, 0x8C, 0xED, 0x06, 0x23, 0xFF, 0x4B, +0x63, 0xF3, 0x68, 0xC2, 0x00, 0x18, 0x86, 0x07, +0x08, 0x10, 0xA0, 0xF0, 0x7C, 0xA2, 0x00, 0x6C, +0xFF, 0x4B, 0x63, 0xF3, 0x68, 0xC2, 0x00, 0x18, +0x8F, 0x07, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, +0x24, 0x67, 0xA0, 0xF0, 0x9B, 0xA0, 0x01, 0x6B, +0xFF, 0x6A, 0x8C, 0xEB, 0x4C, 0xEB, 0x4C, 0xE9, +0x0C, 0x23, 0xA0, 0xF0, 0x5D, 0xA0, 0x02, 0x5A, +0x08, 0x61, 0x91, 0x67, 0x00, 0x18, 0xAE, 0x07, +0xA0, 0xF0, 0xBD, 0xA0, 0x91, 0x67, 0x00, 0x18, +0xE6, 0x25, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6D, 0x80, 0xF6, 0x0C, 0x4D, +0xA0, 0xF0, 0xDB, 0xA5, 0x01, 0x6B, 0xFF, 0x6A, +0xCC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x06, 0x23, +0xA0, 0xF0, 0x5D, 0xA5, 0x01, 0x72, 0x02, 0x61, +0x00, 0x18, 0xAE, 0x07, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF7, 0xBC, 0xA3, +0x04, 0x6B, 0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, +0x4C, 0xEC, 0x09, 0x23, 0x7D, 0x67, 0x1E, 0x6A, +0x50, 0xC3, 0x01, 0x6A, 0x92, 0xC3, 0x4F, 0xCB, +0x04, 0x04, 0x00, 0x18, 0xCA, 0x19, 0x09, 0x97, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xFF, 0x69, 0x80, 0xF6, 0x0C, 0x48, 0x8C, 0xE9, +0xC0, 0xF0, 0x8A, 0xA0, 0x00, 0x18, 0xF4, 0x05, +0x01, 0x72, 0x1F, 0x61, 0xE3, 0xF2, 0x71, 0xA0, +0x09, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6C, +0x6F, 0x6D, 0x2C, 0x6E, 0xE3, 0xF2, 0x51, 0xC0, +0x00, 0x18, 0xA6, 0x22, 0x80, 0xF0, 0x92, 0xA0, +0x01, 0x6D, 0x08, 0x6E, 0xF1, 0x67, 0x00, 0x18, +0x0F, 0x0C, 0x01, 0x72, 0x0A, 0x61, 0xE3, 0xF2, +0x71, 0xA0, 0x02, 0x6A, 0x01, 0x6C, 0x6D, 0xEA, +0x0E, 0x6D, 0xE3, 0xF2, 0x51, 0xC0, 0x00, 0x18, +0x94, 0x06, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x6C, 0x00, 0x18, 0xC2, 0x25, 0x00, 0x18, +0x10, 0x22, 0x00, 0x18, 0xFC, 0x21, 0x01, 0x6C, +0x00, 0x18, 0xC2, 0x25, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x5F, 0xA2, +0x02, 0x22, 0x08, 0x72, 0x06, 0x61, 0x00, 0x18, +0xFC, 0x06, 0x01, 0x72, 0x02, 0x61, 0x00, 0x18, +0xFF, 0x07, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x7C, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x07, 0x08, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF2, 0x60, 0x9B, 0xFF, 0x6A, 0x24, 0x67, +0x00, 0xA3, 0x82, 0x67, 0xA2, 0x67, 0x2D, 0x6E, +0x4C, 0xE9, 0x4C, 0xE8, 0x00, 0x18, 0xA6, 0x22, +0x00, 0x18, 0xEA, 0x25, 0x06, 0x2A, 0xFF, 0x6C, +0xB0, 0x67, 0x2D, 0x6E, 0x00, 0x18, 0xA6, 0x22, +0x0B, 0x10, 0x04, 0x29, 0x00, 0x6C, 0x08, 0x6D, +0x00, 0x18, 0x6E, 0x04, 0x00, 0x18, 0x51, 0x26, +0x01, 0x6C, 0x00, 0x6D, 0x00, 0x18, 0x94, 0x06, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, 0xBD, 0xA3, +0x08, 0x6B, 0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, +0x4C, 0xEC, 0x03, 0x2B, 0x01, 0x6C, 0x0C, 0x6D, +0x05, 0x10, 0x01, 0x6D, 0x00, 0x18, 0x68, 0x0B, +0x01, 0x6C, 0x04, 0x6D, 0x00, 0x18, 0x94, 0x06, +0x00, 0x6D, 0xFF, 0x6C, 0xC5, 0x67, 0x00, 0x18, +0xA6, 0x22, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF1, 0xBD, 0xA3, 0x04, 0x6B, 0xFF, 0x6A, +0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x06, 0x2B, +0x03, 0x6D, 0x00, 0x18, 0x68, 0x0B, 0x01, 0x6C, +0x04, 0x6D, 0x05, 0x10, 0x00, 0x6D, 0x00, 0x18, +0x68, 0x0B, 0x01, 0x6C, 0x0C, 0x6D, 0x00, 0x18, +0x94, 0x06, 0x00, 0x6D, 0xFF, 0x6C, 0xC5, 0x67, +0x00, 0x18, 0xA6, 0x22, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x6D, 0x00, 0x18, +0x68, 0x0B, 0x00, 0x6D, 0xC5, 0x67, 0xFF, 0x6C, +0x00, 0x18, 0xA6, 0x22, 0x01, 0x6C, 0x0C, 0x6D, +0x00, 0x18, 0x94, 0x06, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, +0xAC, 0xE9, 0x2D, 0x24, 0x30, 0xF0, 0x20, 0x68, +0x80, 0xF6, 0x0C, 0x48, 0xC0, 0xF0, 0x8A, 0xA0, +0x00, 0x18, 0xF4, 0x05, 0x01, 0x72, 0x23, 0x61, +0xE3, 0xF2, 0x71, 0xA0, 0x05, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x2B, 0x6E, 0xFF, 0x6C, 0x0F, 0x6D, +0xE3, 0xF2, 0x51, 0xC0, 0x00, 0x18, 0xA6, 0x22, +0x91, 0x67, 0x02, 0x6D, 0x00, 0x18, 0x68, 0x0B, +0x80, 0xF0, 0x92, 0xA0, 0x00, 0x6D, 0x08, 0x6E, +0xF1, 0x67, 0x00, 0x18, 0x0F, 0x0C, 0x01, 0x72, +0x0A, 0x61, 0xE3, 0xF2, 0x71, 0xA0, 0x01, 0x6A, +0x01, 0x6C, 0x6D, 0xEA, 0x06, 0x6D, 0xE3, 0xF2, +0x51, 0xC0, 0x00, 0x18, 0x94, 0x06, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x25, 0x67, 0x30, 0xF0, 0x20, 0x6D, 0x80, 0xF6, +0x0C, 0x4D, 0x06, 0x67, 0xE3, 0xF2, 0xD1, 0xA5, +0x03, 0x6B, 0xFF, 0x6A, 0xCC, 0xEB, 0x4C, 0xEB, +0x4C, 0xEC, 0x4C, 0xE9, 0x4C, 0xE8, 0xE0, 0xF0, +0x03, 0x2B, 0xE3, 0xF2, 0x53, 0xA5, 0x8E, 0xEA, +0xC0, 0xF0, 0x1E, 0x22, 0x0D, 0x5C, 0xC0, 0xF0, +0x1B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, +0x60, 0xF0, 0x0C, 0x4A, 0x89, 0xE2, 0x40, 0x9A, +0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x5F, 0xA2, 0x0E, 0x72, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0x2D, 0x08, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x5F, 0xA2, 0x03, 0x2A, 0x01, 0x6C, +0x00, 0x18, 0x74, 0x07, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x5F, 0xA2, 0x06, 0x72, 0x03, 0x61, +0x90, 0x67, 0x00, 0x18, 0x3C, 0x08, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x5F, 0xA2, 0x04, 0x72, +0x09, 0x61, 0x05, 0x21, 0x91, 0x67, 0xB0, 0x67, +0x00, 0x18, 0x57, 0x08, 0x03, 0x10, 0x90, 0x67, +0x00, 0x18, 0x4D, 0x08, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x5F, 0xA2, 0x08, 0x72, 0xA0, 0xF0, +0x03, 0x61, 0x00, 0x18, 0x6C, 0x07, 0xA0, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x5F, 0xA2, +0x03, 0x2A, 0x01, 0x6C, 0x00, 0x18, 0x74, 0x07, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x5F, 0xA2, +0x06, 0x72, 0x03, 0x61, 0x90, 0x67, 0x00, 0x18, +0x3C, 0x08, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x5F, 0xA2, 0x0E, 0x72, 0x07, 0x61, 0x00, 0x18, +0xDD, 0x06, 0x01, 0x72, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0x2D, 0x08, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x5F, 0xA2, 0x0C, 0x72, 0x7C, 0x61, +0x00, 0x18, 0xDD, 0x06, 0x01, 0x72, 0x78, 0x61, +0x90, 0x67, 0x00, 0x18, 0xE5, 0x07, 0x74, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x5F, 0xA2, +0x0E, 0x72, 0x07, 0x61, 0x00, 0x18, 0xDD, 0x06, +0x01, 0x72, 0x03, 0x61, 0x90, 0x67, 0x00, 0x18, +0x2D, 0x08, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x5F, 0xA2, 0x06, 0x72, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0x3C, 0x08, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x5F, 0xA2, 0x0C, 0x72, 0x07, 0x61, +0x00, 0x18, 0xDD, 0x06, 0x01, 0x72, 0x03, 0x61, +0x90, 0x67, 0x00, 0x18, 0xE5, 0x07, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x5F, 0xA2, 0x04, 0x72, +0x4B, 0x61, 0x00, 0x18, 0xE9, 0x06, 0x01, 0x72, +0x47, 0x61, 0x90, 0x67, 0x00, 0x18, 0x17, 0x08, +0x43, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x5F, 0xA2, 0x0E, 0x72, 0x07, 0x61, 0x00, 0x18, +0xDD, 0x06, 0x01, 0x72, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0x2D, 0x08, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x5F, 0xA2, 0x06, 0x72, 0x03, 0x61, +0x90, 0x67, 0x00, 0x18, 0x3C, 0x08, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x5F, 0xA2, 0x0C, 0x72, +0x07, 0x61, 0x00, 0x18, 0xDD, 0x06, 0x01, 0x72, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0xE5, 0x07, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x5F, 0xA2, +0x03, 0x2A, 0x01, 0x6C, 0x00, 0x18, 0x74, 0x07, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x5F, 0xA2, +0x04, 0x72, 0x12, 0x61, 0x00, 0x18, 0x7F, 0x07, +0x0F, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0xE3, 0xF2, 0x73, 0xA2, 0x0C, 0x73, +0x07, 0x61, 0xE3, 0xF2, 0x70, 0xA2, 0x20, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x86, 0x07, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x80, 0xF6, 0x0C, 0x48, 0xE3, 0xF2, 0x74, 0xA0, +0x10, 0x6A, 0xFF, 0x69, 0x6D, 0xEA, 0xE3, 0xF2, +0x54, 0xC0, 0xE3, 0xF2, 0x5B, 0xA0, 0x8C, 0xE9, +0x02, 0x5A, 0x0D, 0x60, 0xE3, 0xF2, 0xDA, 0xA0, +0xFF, 0x6C, 0x55, 0x4C, 0xD9, 0xE2, 0x00, 0x6D, +0x00, 0x18, 0x2B, 0x1D, 0xE3, 0xF2, 0x7B, 0xA0, +0xE3, 0xF2, 0x5A, 0xA0, 0x14, 0x10, 0x03, 0x6B, +0x78, 0xEA, 0xE3, 0xF2, 0xDA, 0xA0, 0xFF, 0x6C, +0x55, 0x4C, 0xFE, 0x4E, 0x00, 0x6D, 0x12, 0xEA, +0x59, 0xE6, 0x00, 0x18, 0x2B, 0x1D, 0xE3, 0xF2, +0x5B, 0xA0, 0x03, 0x6C, 0xE3, 0xF2, 0x7A, 0xA0, +0x98, 0xEA, 0xFE, 0x4B, 0x12, 0xEA, 0x49, 0xE3, +0x03, 0xF3, 0x4D, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x5F, 0xA2, 0x04, 0x6B, 0x6C, 0xEA, +0x05, 0x2A, 0x83, 0x67, 0x01, 0x6D, 0xD1, 0x67, +0x00, 0x18, 0x74, 0x08, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x69, +0x04, 0xD4, 0x80, 0xF6, 0x0C, 0x49, 0xA0, 0xF0, +0x8D, 0xA1, 0x7F, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, +0x11, 0x23, 0xC0, 0xF0, 0x8A, 0xA1, 0x01, 0x68, +0x00, 0x18, 0xF4, 0x05, 0x4E, 0xE8, 0x0A, 0x28, +0x04, 0x94, 0xE3, 0xF2, 0xB8, 0xA1, 0x00, 0x18, +0xE6, 0x25, 0x04, 0x94, 0xE3, 0xF2, 0x19, 0xC1, +0x00, 0x18, 0xF3, 0x08, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, +0xA0, 0xF0, 0x6D, 0xA0, 0x7F, 0x6A, 0xFF, 0x69, +0x6C, 0xEA, 0x2C, 0xEC, 0x2C, 0xEA, 0x04, 0xD4, +0x15, 0x22, 0xC0, 0xF0, 0x8A, 0xA0, 0x00, 0x18, +0xF4, 0x05, 0x01, 0x72, 0x0F, 0x61, 0xA0, 0xF0, +0x6E, 0xA0, 0x0F, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x06, 0x22, 0xE3, 0xF2, 0x71, 0xA0, 0x10, 0x6A, +0x6C, 0xEA, 0x2C, 0xEA, 0x03, 0x2A, 0x04, 0x94, +0x00, 0x18, 0xF3, 0x08, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xFF, 0x6E, 0x8C, 0xEE, 0x20, 0xF7, 0x9D, 0xA2, +0x01, 0x6D, 0x00, 0x18, 0x74, 0x08, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x8C, 0xE9, +0x0B, 0x29, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF2, +0xA4, 0x9A, 0x01, 0x6C, 0x00, 0x18, 0x6E, 0x04, +0x00, 0x6C, 0x08, 0x6D, 0x00, 0x18, 0x6E, 0x04, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF2, 0x88, 0x9A, +0xFF, 0x6B, 0x07, 0x6D, 0x40, 0xA4, 0x30, 0xF0, +0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x03, 0xF3, +0x42, 0xA8, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF2, 0x5C, 0x9A, 0x60, 0xC2, 0xC0, 0xF0, +0x8A, 0xA0, 0x00, 0x18, 0xF4, 0x05, 0x01, 0x72, +0x12, 0x61, 0xE3, 0xF2, 0x70, 0xA0, 0x21, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xE3, 0xF2, 0x50, 0xC0, +0xE3, 0xF2, 0x53, 0xA0, 0x04, 0x6B, 0x6C, 0xEA, +0x0C, 0x2A, 0x83, 0x67, 0x01, 0x6D, 0xD1, 0x67, +0x00, 0x18, 0x74, 0x08, 0x06, 0x10, 0xE3, 0xF2, +0x70, 0xA0, 0x20, 0x6A, 0x6D, 0xEA, 0xE3, 0xF2, +0x50, 0xC0, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, +0xAC, 0xE9, 0x4A, 0x2C, 0x0B, 0x29, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF2, 0xA4, 0x9A, 0x01, 0x6C, +0x00, 0x18, 0x9F, 0x04, 0x00, 0x6C, 0x08, 0x6D, +0x00, 0x18, 0x9F, 0x04, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF2, 0x4C, 0x9A, 0x00, 0x6B, 0x30, 0xF0, +0x20, 0x68, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF2, 0x50, 0x9A, 0x02, 0x6B, 0x80, 0xF6, +0x0C, 0x48, 0x60, 0xDA, 0xC0, 0xF0, 0x8A, 0xA0, +0x00, 0x18, 0xF4, 0x05, 0x10, 0x2A, 0x00, 0x18, +0x0A, 0x26, 0x91, 0x67, 0x00, 0x18, 0x4D, 0x08, +0xE3, 0xF2, 0x71, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x03, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, +0xE3, 0xF2, 0x51, 0xC0, 0x05, 0x10, 0x0C, 0x6C, +0x01, 0x6D, 0xD1, 0x67, 0x00, 0x18, 0x74, 0x08, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xE3, 0xF2, 0x90, 0xA2, 0x05, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xE3, 0xF2, 0x70, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF2, 0x68, 0x9A, 0xF8, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x10, +0x01, 0x74, 0x03, 0x61, 0x91, 0x67, 0x00, 0x18, +0x49, 0x09, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x30, 0xF0, +0x20, 0x68, 0x2C, 0xEC, 0x80, 0xF6, 0x0C, 0x48, +0x04, 0xD4, 0x00, 0x18, 0x56, 0x07, 0xA0, 0xF0, +0x8D, 0xA0, 0x7F, 0x6A, 0x04, 0x95, 0x4C, 0xEC, +0x2C, 0xEC, 0x00, 0x18, 0x6F, 0x09, 0xA0, 0xF0, +0x4D, 0xA0, 0x7F, 0x6B, 0x6C, 0xEA, 0x2C, 0xEA, +0x09, 0x22, 0xA0, 0xF0, 0x4E, 0xA0, 0x0F, 0x6C, +0xA0, 0xF0, 0xAF, 0xA0, 0x4C, 0xEC, 0x2C, 0xEC, +0x00, 0x18, 0xC6, 0x06, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6C, +0x40, 0xF7, 0x15, 0x4C, 0x00, 0x6D, 0x07, 0x6E, +0x00, 0x18, 0xA7, 0x19, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6C, +0x64, 0xF1, 0x1C, 0x4C, 0x00, 0x6D, 0x70, 0x6E, +0x00, 0x18, 0xA7, 0x19, 0x30, 0xF0, 0x20, 0x6C, +0x07, 0x6E, 0x40, 0xF7, 0x07, 0x4C, 0x00, 0x6D, +0x30, 0xF0, 0x20, 0x68, 0x00, 0x18, 0xA7, 0x19, +0x80, 0xF6, 0x0C, 0x48, 0x02, 0x6A, 0xA0, 0xF0, +0x4F, 0xC0, 0x01, 0x6A, 0xE3, 0xF2, 0x58, 0xC0, +0xE3, 0xF2, 0x59, 0xC0, 0x05, 0x6A, 0x03, 0xF3, +0x42, 0xC8, 0x03, 0xF3, 0x50, 0xA0, 0x00, 0x6C, +0x10, 0x69, 0x04, 0x4A, 0xA4, 0x67, 0x03, 0xF3, +0x4C, 0xC0, 0xE3, 0xF2, 0x3A, 0xC0, 0x03, 0xF3, +0x2D, 0xC0, 0x00, 0x18, 0x94, 0x06, 0x02, 0x6C, +0x0C, 0x6D, 0x00, 0x18, 0x94, 0x06, 0x01, 0x6C, +0x0C, 0x6D, 0x00, 0x18, 0x94, 0x06, 0x30, 0xF0, +0x20, 0x6C, 0x84, 0xF1, 0x0C, 0x4C, 0x00, 0x6D, +0x00, 0x18, 0xB8, 0x25, 0xA0, 0xF0, 0x76, 0xA0, +0x03, 0x6A, 0xA0, 0xF0, 0x54, 0xC0, 0x0F, 0x6A, +0xA0, 0xF0, 0x55, 0xC0, 0x01, 0x6A, 0x6C, 0xEA, +0x28, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x56, 0xC0, +0x07, 0x6A, 0xA0, 0xF0, 0x57, 0xC0, 0x03, 0xF3, +0x50, 0xA0, 0x00, 0x6C, 0xA4, 0x67, 0x04, 0x4A, +0x03, 0xF3, 0x4C, 0xC0, 0x03, 0xF3, 0x2D, 0xC0, +0x00, 0x18, 0x68, 0x0B, 0x01, 0x6C, 0x00, 0x6D, +0x00, 0x18, 0x68, 0x0B, 0x02, 0x6C, 0x00, 0x6D, +0x00, 0x18, 0x68, 0x0B, 0x03, 0x6C, 0x00, 0x6D, +0x00, 0x18, 0x68, 0x0B, 0x04, 0x6C, 0x00, 0x6D, +0x00, 0x18, 0x68, 0x0B, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF2, 0x68, 0x9A, 0xF8, 0x6A, 0x00, 0x6D, +0x80, 0xA3, 0xC5, 0x67, 0x8C, 0xEA, 0x40, 0xC3, +0xFF, 0x6C, 0x00, 0x18, 0xA6, 0x22, 0x00, 0x6A, +0xE3, 0xF2, 0x4C, 0xC0, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, 0xBC, 0xA3, +0x04, 0x6B, 0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, +0x4C, 0xEC, 0x06, 0x23, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF2, 0x54, 0x9A, 0x00, 0x6B, 0x60, 0xC2, +0x02, 0x6D, 0x00, 0x18, 0xC3, 0x21, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF2, 0x50, 0x9A, 0x04, 0x69, +0x30, 0xF0, 0x20, 0x68, 0x20, 0xDA, 0x80, 0xF6, +0x0C, 0x48, 0xA0, 0xF0, 0xD6, 0xA0, 0xFF, 0x6C, +0x59, 0x4C, 0x00, 0x6D, 0xC6, 0x36, 0x00, 0x18, +0x2B, 0x1D, 0xE3, 0xF2, 0x50, 0xA0, 0x07, 0x97, +0x4D, 0xE9, 0xE3, 0xF2, 0x30, 0xC0, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, 0xA0, 0xF0, +0xAD, 0xA3, 0x04, 0x67, 0x7F, 0x6C, 0xAC, 0xEC, +0xFF, 0x6A, 0x01, 0x74, 0x4C, 0xE8, 0x1D, 0x61, +0xA0, 0xF0, 0xAE, 0xA3, 0x10, 0x6C, 0x8B, 0xEC, +0xAC, 0xEC, 0x4C, 0xEC, 0x0E, 0x24, 0xD0, 0x67, +0x0C, 0x6C, 0x00, 0x6D, 0x00, 0x18, 0x74, 0x08, +0x00, 0x6D, 0xFF, 0x6C, 0xC5, 0x67, 0x00, 0x18, +0xA6, 0x22, 0x90, 0x67, 0x00, 0x18, 0xFA, 0x09, +0x08, 0x10, 0xE3, 0xF2, 0x53, 0xA3, 0x05, 0x2A, +0x04, 0x6C, 0x01, 0x6D, 0xD0, 0x67, 0x00, 0x18, +0x74, 0x08, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x8C, 0xE9, +0x30, 0xF0, 0x20, 0x68, 0x91, 0x67, 0x80, 0xF6, +0x0C, 0x48, 0x00, 0x18, 0xFA, 0x09, 0xE3, 0xF2, +0x53, 0xA0, 0x0C, 0x72, 0x17, 0x60, 0x0C, 0x6C, +0x00, 0x6D, 0xD1, 0x67, 0x00, 0x18, 0x74, 0x08, +0x00, 0x6D, 0xC5, 0x67, 0xFF, 0x6C, 0x00, 0x18, +0xA6, 0x22, 0xE3, 0xF2, 0x71, 0xA0, 0x80, 0xF0, +0x92, 0xA0, 0x01, 0x6A, 0x6D, 0xEA, 0x00, 0x6D, +0x08, 0x6E, 0xF1, 0x67, 0xE3, 0xF2, 0x51, 0xC0, +0x00, 0x18, 0x0F, 0x0C, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x24, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF6, +0x0C, 0x4C, 0xE3, 0xF2, 0xB0, 0xA4, 0x40, 0x6B, +0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xE9, +0x09, 0x23, 0xE3, 0xF2, 0x91, 0xA4, 0x10, 0x6B, +0x8C, 0xEB, 0x4C, 0xEB, 0x03, 0x23, 0x91, 0x67, +0x00, 0x18, 0x96, 0x25, 0x30, 0xF0, 0x20, 0x68, +0x80, 0xF6, 0x0C, 0x48, 0xE3, 0xF2, 0x70, 0xA0, +0x02, 0x6A, 0x6C, 0xEA, 0x10, 0x22, 0x03, 0x6A, +0x4B, 0xEA, 0x4C, 0xEB, 0xE3, 0xF2, 0x70, 0xC0, +0xE3, 0xF2, 0x74, 0xA0, 0x6C, 0xEA, 0xE3, 0xF2, +0x54, 0xC0, 0xE3, 0xF2, 0x54, 0xA0, 0x07, 0x6B, +0x6C, 0xEA, 0x54, 0x2A, 0x50, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF2, 0x78, 0x9A, 0xFF, 0xF7, +0x1F, 0x6C, 0x40, 0xAB, 0x8C, 0xEA, 0x01, 0x4A, +0x8C, 0xEA, 0x40, 0xCB, 0xE3, 0xF2, 0x5B, 0xA0, +0xE3, 0xF2, 0x74, 0xA0, 0x01, 0x4A, 0xE3, 0xF2, +0x5B, 0xC0, 0x11, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xE3, 0xF2, 0x54, 0xC0, 0xE3, 0xF2, 0x7B, 0xA0, +0xA0, 0xF0, 0x54, 0xA0, 0x63, 0xEA, 0x33, 0x60, +0xC0, 0xF0, 0x8A, 0xA0, 0x00, 0x18, 0xF4, 0x05, +0x01, 0x6B, 0x6E, 0xEA, 0x2F, 0x2A, 0xA0, 0xF0, +0x8E, 0xA0, 0xEF, 0x4B, 0x8C, 0xEB, 0xFF, 0x6C, +0x8C, 0xEB, 0x07, 0x2B, 0xE3, 0xF2, 0x70, 0xA0, +0xDF, 0x4A, 0x6C, 0xEA, 0xE3, 0xF2, 0x50, 0xC0, +0x21, 0x10, 0xE3, 0xF2, 0x7C, 0xA0, 0x01, 0x4B, +0xE3, 0xF2, 0x7C, 0xC0, 0xE3, 0xF2, 0x7C, 0xA0, +0x03, 0x5B, 0x0A, 0x61, 0xE3, 0xF2, 0x90, 0xA0, +0x21, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xE3, 0xF2, +0x70, 0xC0, 0xE3, 0xF2, 0x5C, 0xC0, 0x03, 0x10, +0x91, 0x67, 0x00, 0x18, 0x2D, 0x0A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0x00, 0x6B, +0xE3, 0xF2, 0x7B, 0xC2, 0x03, 0x10, 0x91, 0x67, +0x00, 0x18, 0x42, 0x09, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6A, 0x8C, 0xEA, 0x05, 0x5A, 0x00, 0x68, +0x24, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x34, +0xA0, 0xF0, 0x00, 0x4B, 0x8D, 0xE3, 0x60, 0x9B, +0x00, 0xEB, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF2, +0x7C, 0x9B, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF2, 0x60, 0x9B, 0x0E, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x60, 0xF2, 0x64, 0x9B, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF2, 0x68, 0x9B, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF2, +0x6C, 0x9B, 0x60, 0xAB, 0xFF, 0xF7, 0x1F, 0x68, +0x6C, 0xE8, 0x18, 0xF0, 0x00, 0x6B, 0x0C, 0xEB, +0x13, 0x2B, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF6, +0x0C, 0x4C, 0xE3, 0xF2, 0xB4, 0xA4, 0xFE, 0x4B, +0xAC, 0xEB, 0x05, 0x6D, 0xAB, 0xED, 0xAC, 0xEB, +0x02, 0x4D, 0xAC, 0xEB, 0xE3, 0xF2, 0x74, 0xC4, +0x82, 0x67, 0x00, 0x18, 0x42, 0x09, 0x57, 0x10, +0x08, 0xF0, 0x00, 0x6B, 0x0C, 0xEB, 0x20, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, +0xA0, 0xF0, 0xAD, 0xA3, 0x7F, 0x6C, 0xAC, 0xEC, +0x01, 0x74, 0x24, 0x61, 0xE3, 0xF2, 0xB4, 0xA3, +0x01, 0x6C, 0xAD, 0xEC, 0xE3, 0xF2, 0x94, 0xC3, +0xA0, 0xF0, 0x8E, 0xA3, 0x10, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, 0x20, 0x73, +0x03, 0x60, 0x00, 0x18, 0xDB, 0x0B, 0x12, 0x10, +0x82, 0x67, 0x00, 0x18, 0x2D, 0x0A, 0x0E, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, +0xE3, 0xF2, 0x94, 0xA3, 0x02, 0x6A, 0x4B, 0xEA, +0x8C, 0xEA, 0x05, 0x6C, 0x8B, 0xEC, 0x8C, 0xEA, +0xE3, 0xF2, 0x54, 0xC3, 0x02, 0x30, 0x1E, 0x30, +0x17, 0x20, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, +0x0C, 0x48, 0xE3, 0xF2, 0x54, 0xA0, 0x02, 0x69, +0xA0, 0xF0, 0xD5, 0xA0, 0x2D, 0xEA, 0xFF, 0x6C, +0xE3, 0xF2, 0x54, 0xC0, 0x55, 0x4C, 0x00, 0x6D, +0x00, 0x18, 0x2B, 0x1D, 0xE3, 0xF2, 0x50, 0xA0, +0x4D, 0xE9, 0xE3, 0xF2, 0x30, 0xC0, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xE3, 0xF2, 0x94, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xE3, 0xF2, 0x74, 0xC2, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xFF, 0x69, 0x80, 0xF6, +0x0C, 0x48, 0x8C, 0xE9, 0xC0, 0xF0, 0x8A, 0xA0, +0x00, 0x18, 0xF4, 0x05, 0x01, 0x72, 0x00, 0xF1, +0x05, 0x61, 0xA0, 0xF0, 0x6D, 0xA0, 0x7F, 0x6A, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0xE0, 0xF0, +0x1D, 0x22, 0xA0, 0xF0, 0x6E, 0xA0, 0x0F, 0x6A, +0x6C, 0xEA, 0x01, 0x72, 0x69, 0x61, 0x05, 0x59, +0x5A, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x28, 0x33, +0xA0, 0xF0, 0x14, 0x4A, 0x69, 0xE2, 0x40, 0x9A, +0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF2, +0x50, 0x9A, 0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0xE3, 0xF2, 0x79, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF2, 0x74, 0x9B, +0x3F, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF2, +0x58, 0x9A, 0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0xE3, 0xF2, 0x79, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF2, 0x7C, 0x9B, +0x2F, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x40, 0x9A, 0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0xE3, 0xF2, 0x79, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x64, 0x9B, +0x1F, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x48, 0x9A, 0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0xE3, 0xF2, 0x79, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x6C, 0x9B, +0x0F, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x50, 0x9A, 0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0xE3, 0xF2, 0x79, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x74, 0x9B, +0x60, 0xA3, 0xE3, 0xF2, 0x78, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0xE3, 0xF2, +0x79, 0xA2, 0x02, 0x2B, 0xE3, 0xF2, 0x78, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, 0x65, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x98, 0x9A, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, +0x00, 0x6B, 0xE3, 0xF2, 0x7B, 0xC0, 0x40, 0xAC, +0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEA, 0x01, 0x4A, +0xAC, 0xEA, 0x40, 0xCC, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF3, 0x82, 0xA0, 0x20, 0xF2, 0x5C, 0x9A, +0x11, 0x6D, 0xAB, 0xED, 0x80, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF2, 0x4C, 0x9A, 0x91, 0x67, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF2, +0x50, 0x9A, 0x01, 0x6B, 0x60, 0xC2, 0xE3, 0xF2, +0x74, 0xA0, 0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xAC, 0xEA, 0xE3, 0xF2, 0x54, 0xC0, 0x00, 0x18, +0x8A, 0x0A, 0xE3, 0xF2, 0x70, 0xA0, 0x40, 0x6A, +0x6C, 0xEA, 0x4E, 0x22, 0xE3, 0xF2, 0x91, 0xA0, +0x10, 0x6B, 0xFF, 0x6D, 0x44, 0x67, 0x6C, 0xEA, +0xAC, 0xEA, 0x1B, 0x2A, 0xE3, 0xF2, 0x59, 0xA0, +0xE3, 0xF2, 0xB8, 0xA0, 0xAE, 0xEA, 0x40, 0x2A, +0x8D, 0xEB, 0x91, 0x67, 0xE3, 0xF2, 0x71, 0xC0, +0x00, 0x18, 0xE6, 0x25, 0x91, 0x67, 0x00, 0x18, +0x6D, 0x25, 0x91, 0x67, 0x00, 0x18, 0x9D, 0x25, +0x91, 0x67, 0x00, 0x18, 0x96, 0x25, 0xE3, 0xF2, +0x59, 0xA0, 0xFF, 0x4A, 0xE3, 0xF2, 0x59, 0xC0, +0x2B, 0x10, 0xA0, 0xF0, 0x6E, 0xA0, 0x0F, 0x6A, +0x6C, 0xEA, 0x01, 0x72, 0x25, 0x61, 0xE3, 0xF2, +0x59, 0xA0, 0x04, 0xD2, 0x04, 0x93, 0xE3, 0xF2, +0x58, 0xA0, 0x6E, 0xEA, 0x1D, 0x22, 0x91, 0x67, +0x00, 0x18, 0xE2, 0x25, 0x04, 0x95, 0xAE, 0xEA, +0x17, 0x22, 0xE3, 0xF2, 0x70, 0xA0, 0x20, 0x6A, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x10, 0x22, +0xE3, 0xF2, 0x71, 0xA0, 0x11, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x91, 0x67, 0xE3, 0xF2, 0x51, 0xC0, +0x00, 0x18, 0x8C, 0x25, 0x91, 0x67, 0x00, 0x18, +0x7E, 0x25, 0x91, 0x67, 0x00, 0x18, 0x77, 0x25, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xE3, 0xF2, 0x90, 0xA2, 0x20, 0x6B, 0x8D, 0xEB, +0xE3, 0xF2, 0x70, 0xC2, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0B, 0x2A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0xBC, 0x9B, +0x30, 0xF0, 0x20, 0x6E, 0xA0, 0xF2, 0xC0, 0x9E, +0x60, 0x9D, 0xCC, 0xEB, 0x0C, 0x10, 0x01, 0x72, +0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, +0xBC, 0x9B, 0x30, 0xF0, 0x20, 0x6E, 0xA0, 0xF2, +0xC4, 0x9E, 0x60, 0x9D, 0xCD, 0xEB, 0x60, 0xDD, +0x33, 0x2C, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x7C, 0x9A, 0x7F, 0x6A, 0x80, 0xA3, +0x1B, 0x10, 0x01, 0x72, 0x11, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x7C, 0x9A, 0xFF, 0x6C, +0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0x40, 0xA3, 0x80, 0x4D, +0xC0, 0x4D, 0x8C, 0xEA, 0xAD, 0xEA, 0x08, 0x10, +0x02, 0x72, 0x09, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x7C, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0x03, 0x72, +0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x7C, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, +0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0xA8, 0x9A, 0xFF, 0x6A, 0x01, 0x6E, +0xB5, 0xE4, 0x60, 0xA5, 0x4C, 0xEB, 0xCD, 0xEB, +0x4C, 0xEB, 0x60, 0xC5, 0xC0, 0xA5, 0xFB, 0x6B, +0xCC, 0xEB, 0x60, 0xC5, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF2, 0xAC, 0x9B, 0x06, 0x6E, 0xCB, 0xEE, +0xB5, 0xE4, 0x60, 0xA5, 0x4C, 0xEB, 0xCD, 0xEB, +0x4C, 0xEB, 0x60, 0xC5, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF2, 0xB0, 0x9B, 0x1F, 0x6E, 0xB5, 0xE4, +0x60, 0xA5, 0x4C, 0xEB, 0xCD, 0xEB, 0x4C, 0xEB, +0x60, 0xC5, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, +0xB4, 0x9B, 0x0E, 0x6E, 0xB5, 0xE4, 0x60, 0xA5, +0x4C, 0xEB, 0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC5, +0x30, 0xF0, 0x20, 0x6D, 0xA0, 0xF2, 0xB8, 0x9D, +0x00, 0x6B, 0x60, 0xC5, 0x30, 0xF0, 0x20, 0x6D, +0xA0, 0xF2, 0xBC, 0x9D, 0x60, 0xC5, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF2, 0x60, 0x9B, 0x01, 0x6D, +0xAB, 0xED, 0xA0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF2, 0x64, 0x9B, 0x03, 0x6D, 0xAB, 0xED, +0xA0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF2, +0x68, 0x9B, 0x71, 0xE4, 0xA0, 0xA4, 0x40, 0x6B, +0x6B, 0xEB, 0x4C, 0xEB, 0xAC, 0xEB, 0x60, 0xC4, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF2, 0x6C, 0x9B, +0xFF, 0x6A, 0x3F, 0x6F, 0x6D, 0xE5, 0x00, 0xA3, +0x4C, 0xEC, 0x4C, 0xEE, 0x0C, 0xEF, 0xE0, 0xC3, +0x10, 0x24, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF2, +0xF0, 0x9C, 0x10, 0x68, 0xFD, 0xE5, 0x80, 0xA7, +0x4C, 0xEC, 0x0D, 0xEC, 0x4C, 0xEC, 0x80, 0xC7, +0x80, 0xA3, 0x80, 0x6F, 0xEB, 0xEF, 0x4C, 0xEC, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF2, +0xF0, 0x9C, 0xEF, 0x6C, 0xFD, 0xE5, 0x00, 0xA7, +0x0C, 0xEC, 0x80, 0xC7, 0x80, 0xA3, 0x40, 0x6F, +0x4C, 0xEC, 0xED, 0xEC, 0x4C, 0xEC, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF2, 0x48, 0x9A, 0x80, 0xC3, +0x80, 0xF4, 0xC0, 0x36, 0x55, 0xE5, 0x40, 0x9D, +0x4D, 0xEE, 0xC0, 0xDD, 0x01, 0x90, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0x54, 0x9A, +0xFF, 0x6B, 0x40, 0xA2, 0x6C, 0xEA, 0x52, 0x32, +0x6C, 0xEA, 0x0B, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF7, 0x9D, 0xA2, 0x00, 0x6D, 0x18, 0x6E, +0xE5, 0x67, 0x00, 0x18, 0x92, 0x2A, 0x00, 0x18, +0x0A, 0x1B, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6E, 0x64, 0x67, 0x85, 0x67, 0x30, 0xF0, +0x20, 0x6D, 0xC0, 0xF2, 0xB8, 0x9D, 0xC0, 0xF2, +0xDC, 0x9E, 0x30, 0xF0, 0x20, 0x68, 0xE0, 0xAD, +0xC0, 0xAE, 0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEF, +0x80, 0xF6, 0x0C, 0x48, 0xCC, 0xED, 0xBB, 0xE7, +0x80, 0xF0, 0xB2, 0xA0, 0xFF, 0x6A, 0x4C, 0xEE, +0xAE, 0xEE, 0x4C, 0xEB, 0x4C, 0xEC, 0x29, 0x2E, +0xE3, 0xF2, 0x53, 0xA0, 0x0E, 0x72, 0x10, 0x61, +0x24, 0x2B, 0xE3, 0xF2, 0x71, 0xA0, 0x03, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x00, 0x6D, 0xE3, 0xF2, +0x51, 0xC0, 0x00, 0x18, 0x68, 0x0B, 0x01, 0x6C, +0x0C, 0x6D, 0x00, 0x18, 0x94, 0x06, 0x10, 0x10, +0x06, 0x72, 0x13, 0x61, 0x12, 0x23, 0xE3, 0xF2, +0x71, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x01, 0x6D, 0xE3, 0xF2, 0x51, 0xC0, 0x00, 0x18, +0x68, 0x0B, 0x04, 0x6A, 0xE3, 0xF2, 0x53, 0xC0, +0x00, 0x6D, 0xFF, 0x6C, 0xC5, 0x67, 0x00, 0x18, +0xA6, 0x22, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0x6A, 0xC0, 0xF2, 0x74, 0x9B, 0x4C, 0xEE, +0x4C, 0xEF, 0x05, 0xD6, 0x04, 0xD7, 0x60, 0xA3, +0xFF, 0xF7, 0x1F, 0x68, 0x25, 0x67, 0x4C, 0xEB, +0x72, 0x33, 0x4C, 0xEB, 0x8C, 0xE8, 0x4C, 0xE9, +0x29, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF2, +0x60, 0x9B, 0x00, 0x6C, 0xFF, 0x6D, 0x60, 0xA3, +0x26, 0x6E, 0x6C, 0xEA, 0x06, 0xD2, 0x00, 0x18, +0xA6, 0x22, 0x00, 0x18, 0xEA, 0x25, 0x01, 0x72, +0x0F, 0x61, 0x05, 0x96, 0x90, 0x67, 0x01, 0x6D, +0x00, 0x6F, 0x00, 0x18, 0x92, 0x2A, 0x04, 0x96, +0x02, 0x67, 0x91, 0x67, 0xA2, 0x67, 0x00, 0x18, +0xBD, 0x0B, 0x90, 0x67, 0x00, 0x18, 0x91, 0x0B, +0x06, 0x95, 0x00, 0x6C, 0x27, 0x6E, 0x00, 0x18, +0xA6, 0x22, 0x04, 0x95, 0x91, 0x67, 0x00, 0x18, +0xE8, 0x0B, 0x13, 0x10, 0x04, 0x95, 0x91, 0x67, +0x00, 0x18, 0xE8, 0x0B, 0x05, 0x96, 0x90, 0x67, +0x01, 0x6D, 0x00, 0x6F, 0x00, 0x18, 0x92, 0x2A, +0x04, 0x96, 0x02, 0x67, 0x91, 0x67, 0xA2, 0x67, +0x00, 0x18, 0xBD, 0x0B, 0x90, 0x67, 0x00, 0x18, +0x91, 0x0B, 0x00, 0x18, 0x0A, 0x1B, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFF, 0x6A, 0xEC, 0xEA, 0x04, 0x72, 0x0F, 0x61, +0x40, 0xA4, 0x40, 0xC5, 0x41, 0xA4, 0x41, 0xC5, +0x44, 0xA4, 0x42, 0xC5, 0x45, 0xA4, 0x43, 0xC5, +0x46, 0xA4, 0x44, 0xC5, 0x47, 0xA4, 0x45, 0xC5, +0x43, 0xA4, 0x40, 0xC6, 0x20, 0xE8, 0x02, 0x72, +0x0E, 0x61, 0x42, 0xA4, 0x40, 0xC5, 0x40, 0xA4, +0x41, 0xC5, 0x44, 0xA4, 0x42, 0xC5, 0x45, 0xA4, +0x43, 0xC5, 0x46, 0xA4, 0x44, 0xC5, 0x47, 0xA4, +0x45, 0xC5, 0x43, 0xA4, 0x40, 0xC6, 0x20, 0xE8, +0xFF, 0x6A, 0xEC, 0xEA, 0x04, 0x6B, 0x4E, 0xEB, +0x06, 0x2B, 0x40, 0xA5, 0x40, 0xC4, 0x41, 0xA5, +0x62, 0xC4, 0x41, 0xC4, 0x0C, 0x10, 0x02, 0x72, +0x0A, 0x61, 0x41, 0xA5, 0x40, 0xC4, 0x61, 0xA5, +0x5F, 0x6A, 0x6C, 0xEA, 0x20, 0x6B, 0x6D, 0xEA, +0x41, 0xC4, 0x40, 0xA5, 0x42, 0xC4, 0x63, 0x44, +0xC0, 0xA3, 0x20, 0x6A, 0xCD, 0xEA, 0x40, 0xC3, +0x42, 0xA5, 0x44, 0xC4, 0x43, 0xA5, 0x45, 0xC4, +0x44, 0xA5, 0x46, 0xC4, 0x45, 0xA5, 0x47, 0xC4, +0x20, 0xE8, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x4C, 0xEE, +0x08, 0xD6, 0x08, 0x97, 0x4C, 0xED, 0x05, 0x00, +0x09, 0xD5, 0x04, 0x06, 0xB0, 0x67, 0x24, 0x67, +0x00, 0x18, 0x3C, 0x0C, 0x09, 0x92, 0x10, 0x2A, +0x60, 0xA0, 0xFF, 0x6C, 0x8E, 0xEB, 0x07, 0x2B, +0x01, 0x4A, 0x8C, 0xEA, 0x06, 0x72, 0x60, 0xC0, +0x01, 0x48, 0xF6, 0x61, 0x05, 0x10, 0x04, 0x03, +0x49, 0xE3, 0x64, 0xA2, 0x01, 0x4B, 0x64, 0xC2, +0x08, 0x97, 0x91, 0x67, 0x05, 0x05, 0x04, 0x06, +0x00, 0x18, 0x4E, 0x0C, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x69, 0xCC, 0xE9, 0x0E, 0xD4, 0x0F, 0xD5, +0x05, 0x04, 0x00, 0x6D, 0x08, 0x6E, 0x07, 0x00, +0x00, 0x18, 0xA7, 0x19, 0x90, 0x67, 0x00, 0x6D, +0x08, 0x6E, 0x00, 0x18, 0xA7, 0x19, 0x0E, 0x94, +0x05, 0x05, 0x00, 0xF0, 0x11, 0x06, 0xF1, 0x67, +0x00, 0x18, 0x3C, 0x0C, 0x0F, 0x94, 0xB0, 0x67, +0x04, 0x06, 0xF1, 0x67, 0x00, 0x18, 0x3C, 0x0C, +0x07, 0x6A, 0x04, 0x06, 0x4D, 0xE6, 0x8C, 0xA3, +0x64, 0xA3, 0x6A, 0xEC, 0x04, 0x61, 0xFF, 0x4A, +0xFF, 0x6B, 0x6C, 0xEA, 0xF6, 0x17, 0x6F, 0xE4, +0x01, 0x53, 0x00, 0x6A, 0x06, 0x61, 0x0E, 0x94, +0x07, 0x05, 0xF1, 0x67, 0x00, 0x18, 0x4E, 0x0C, +0x01, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x08, 0x6E, 0x24, 0x67, +0x0D, 0xD5, 0x04, 0x04, 0x00, 0x6D, 0x06, 0x00, +0x00, 0x18, 0xA7, 0x19, 0x90, 0x67, 0x00, 0x6D, +0x08, 0x6E, 0x00, 0x18, 0xA7, 0x19, 0x0D, 0x95, +0x04, 0x04, 0x03, 0x6E, 0x00, 0x18, 0xAC, 0x19, +0x90, 0x67, 0xB1, 0x67, 0x03, 0x6E, 0x00, 0x18, +0xAC, 0x19, 0x02, 0x6A, 0x04, 0x05, 0x4D, 0xE5, +0x80, 0xA3, 0x68, 0xA3, 0x6A, 0xEC, 0x04, 0x61, +0xFF, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, 0xF6, 0x17, +0x6F, 0xE4, 0x01, 0x53, 0x00, 0x6A, 0x05, 0x61, +0x91, 0x67, 0x03, 0x6E, 0x00, 0x18, 0xAC, 0x19, +0x01, 0x6A, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x68, 0x24, 0x67, +0xAC, 0xE8, 0x04, 0x04, 0xB1, 0x67, 0x03, 0x6E, +0x00, 0x18, 0xAC, 0x19, 0x21, 0x28, 0x5D, 0x67, +0x70, 0xA2, 0xFF, 0x6A, 0x4E, 0xEB, 0x00, 0x6A, +0x11, 0x2B, 0x5D, 0x67, 0x70, 0xC2, 0x71, 0xA2, +0xFF, 0x6A, 0x4E, 0xEB, 0x01, 0x6A, 0x0A, 0x2B, +0x5D, 0x67, 0x71, 0xC2, 0x52, 0xA2, 0xFF, 0x6B, +0x6E, 0xEA, 0x03, 0x2A, 0x7D, 0x67, 0x52, 0xC3, +0x06, 0x10, 0x02, 0x6A, 0x04, 0x03, 0x49, 0xE3, +0x60, 0xA2, 0x01, 0x4B, 0x60, 0xC2, 0x91, 0x67, +0x04, 0x05, 0x03, 0x6E, 0x00, 0x18, 0xAC, 0x19, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x04, 0x6E, +0x04, 0x04, 0x00, 0x18, 0xAC, 0x19, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x93, 0xE0, 0xF2, 0x40, 0x9A, +0x01, 0x6C, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF2, 0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF2, 0x68, 0x9B, 0x0D, 0xEA, 0x40, 0xDB, +0x00, 0x18, 0x9B, 0x19, 0x07, 0x97, 0x06, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x69, 0x04, 0x00, +0x2C, 0xEC, 0x2C, 0xED, 0x10, 0xD6, 0x06, 0xD4, +0x07, 0xD5, 0x90, 0x67, 0xA6, 0x67, 0x04, 0x6E, +0x00, 0x18, 0xAC, 0x19, 0x06, 0x92, 0xB0, 0x67, +0x4C, 0x34, 0x02, 0x4C, 0x2C, 0xEC, 0x00, 0x18, +0xC9, 0x0C, 0x10, 0x95, 0x04, 0x6E, 0x90, 0x67, +0x04, 0x4D, 0x00, 0x18, 0xAC, 0x19, 0x06, 0x93, +0xB0, 0x67, 0x6C, 0x33, 0x83, 0x67, 0x03, 0x4C, +0x2C, 0xEC, 0x08, 0xD3, 0x00, 0x18, 0xC9, 0x0C, +0x10, 0x95, 0x04, 0x6E, 0x90, 0x67, 0x08, 0x4D, +0x00, 0x18, 0xAC, 0x19, 0x06, 0x92, 0xB0, 0x67, +0x4C, 0x34, 0x04, 0x4C, 0x2C, 0xEC, 0x00, 0x18, +0xC9, 0x0C, 0x10, 0x95, 0x90, 0x67, 0x04, 0x6E, +0x0C, 0x4D, 0x00, 0x18, 0xAC, 0x19, 0x08, 0x94, +0xB0, 0x67, 0x05, 0x4C, 0x2C, 0xEC, 0x00, 0x18, +0xC9, 0x0C, 0x07, 0x93, 0x48, 0x6A, 0x02, 0x73, +0x04, 0x60, 0x07, 0x92, 0x04, 0x72, 0x05, 0x61, +0x50, 0x6A, 0x06, 0x93, 0x6D, 0xEA, 0x7D, 0x67, +0x50, 0xC3, 0x80, 0x6A, 0x7D, 0x67, 0x4B, 0xEA, +0x51, 0xC3, 0x06, 0x92, 0x01, 0x68, 0x0B, 0xE8, +0x4C, 0x31, 0xFF, 0x6C, 0x12, 0xC3, 0x13, 0xC3, +0x2C, 0xEC, 0x04, 0x05, 0x00, 0x18, 0xC9, 0x0C, +0x7D, 0x67, 0xFF, 0x6A, 0x81, 0x41, 0x10, 0xC3, +0x11, 0xC3, 0x12, 0xC3, 0x13, 0xC3, 0x4C, 0xEC, +0x04, 0x05, 0x00, 0x18, 0xC9, 0x0C, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x4C, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x03, 0x6C, 0x00, 0x6D, 0x00, 0x18, 0x8F, 0x27, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x70, 0x9A, +0xFE, 0x6A, 0x00, 0x6D, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x03, 0x6C, 0x00, 0x18, 0x8F, 0x27, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF7, 0x96, 0xA2, +0x90, 0x34, 0x00, 0x18, 0x25, 0x27, 0x03, 0x6C, +0x01, 0x6D, 0x00, 0x18, 0x8F, 0x27, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xF5, 0x63, 0x15, 0x62, +0x14, 0xD1, 0x13, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0xFF, 0x69, 0x8C, 0xEA, 0x2C, 0xED, 0x30, 0xF0, +0x20, 0x6C, 0x11, 0xD5, 0x27, 0xF7, 0x1C, 0x4C, +0x00, 0x6D, 0x80, 0x6E, 0x10, 0xD2, 0x00, 0x18, +0xA7, 0x19, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, +0x5C, 0x9A, 0x10, 0x95, 0x60, 0xAA, 0xE1, 0xF7, +0x1F, 0x6A, 0x01, 0x75, 0x6C, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x60, 0xF7, 0x14, 0xA3, 0x01, 0xE2, +0x1C, 0x30, 0x12, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF6, 0x58, 0xA3, 0x0D, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x9C, 0x9A, 0x91, 0xE0, +0x40, 0xA4, 0x2C, 0xEA, 0x08, 0x4A, 0x2C, 0xEA, +0x40, 0xC4, 0x01, 0x6A, 0x60, 0xF6, 0x58, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0x50, 0x9A, +0x41, 0x6B, 0x87, 0x40, 0x49, 0xE0, 0x60, 0xC2, +0x11, 0x95, 0x21, 0x4C, 0x00, 0x18, 0x2E, 0x12, +0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6B, 0x27, 0xF7, +0x7C, 0xC2, 0x27, 0xF7, 0x1C, 0x4A, 0x03, 0x6B, +0x61, 0xC2, 0x00, 0x6B, 0x62, 0xC2, 0x5F, 0x6B, +0x63, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, +0x54, 0xA2, 0x67, 0x40, 0x4D, 0x4B, 0xFE, 0x72, +0xFE, 0x6D, 0x01, 0x60, 0x02, 0x6D, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x9C, 0x9A, 0x89, 0xE3, +0xA0, 0xC2, 0xA0, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x27, 0xF7, 0x1C, 0x4A, 0xA4, 0xC2, 0x10, 0x95, +0x01, 0x4B, 0x01, 0x75, 0x0A, 0x61, 0x91, 0xE3, +0x03, 0x6D, 0xA0, 0xC4, 0x30, 0xF0, 0x20, 0x6C, +0x00, 0xF3, 0xC0, 0x9C, 0x01, 0x6C, 0xD9, 0xE3, +0x09, 0x10, 0x91, 0xE3, 0x03, 0x6D, 0xA0, 0xC4, +0x30, 0xF0, 0x20, 0x6C, 0x00, 0xF3, 0xC0, 0x9C, +0x02, 0x6C, 0xD9, 0xE3, 0x80, 0xC6, 0x86, 0xC2, +0xA5, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0xC3, 0xF3, 0x88, 0xA2, 0x02, 0x4B, +0xFE, 0x74, 0x1C, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0xE0, 0xF2, 0x9C, 0x9C, 0xC3, 0xF3, 0xAB, 0xA2, +0x02, 0x6E, 0x91, 0xE3, 0xA0, 0xC4, 0x30, 0xF0, +0x20, 0x6C, 0x00, 0xF3, 0x80, 0x9C, 0xC3, 0xF3, +0x4C, 0xA2, 0x30, 0xF0, 0x20, 0x6D, 0x8D, 0xE3, +0x30, 0xF0, 0x20, 0x6C, 0x40, 0xC3, 0x47, 0xF7, +0x03, 0x4C, 0x44, 0xF2, 0x17, 0x4D, 0x00, 0x18, +0xAC, 0x19, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF2, 0x5C, 0x9A, 0x00, 0x6C, 0x49, 0xE3, +0x80, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x40, 0x9A, 0x4D, 0xE3, 0x30, 0xF0, 0x20, 0x6A, +0x27, 0xF7, 0x1C, 0x4A, 0x80, 0xC3, 0x87, 0xC2, +0x88, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, +0x98, 0x9B, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, +0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xA7, 0x42, +0x91, 0xE0, 0x47, 0xF7, 0x05, 0x4B, 0x01, 0x4D, +0xC0, 0xA2, 0xC0, 0xC4, 0xC0, 0xA2, 0x01, 0x4A, +0xAA, 0xEA, 0xC0, 0xC3, 0x01, 0x4C, 0x01, 0x4B, +0xF7, 0x61, 0x30, 0xF0, 0x20, 0x6D, 0x06, 0x04, +0x04, 0xF2, 0x10, 0x4D, 0x10, 0x6E, 0x00, 0x18, +0xAC, 0x19, 0x00, 0x69, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x54, 0x9A, +0x00, 0xF3, 0x64, 0x9B, 0x49, 0xE0, 0x6D, 0xE0, +0x00, 0x6C, 0x80, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, +0xFB, 0x61, 0x64, 0x6C, 0x00, 0x18, 0x9B, 0x19, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x68, 0x9A, +0xFB, 0x6A, 0x10, 0x6F, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, +0x5C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0xC0, 0xAA, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xE0, 0xF0, 0xA9, 0xA2, 0xE0, 0xF0, 0x88, 0xA2, +0xE1, 0xF7, 0x1F, 0x6A, 0xCC, 0xEA, 0xB3, 0xE4, +0xA9, 0xE2, 0x9C, 0x34, 0x50, 0x4C, 0x50, 0x32, +0x6C, 0xEA, 0x6C, 0xEC, 0x00, 0x6D, 0x63, 0x6E, +0x04, 0xD2, 0x00, 0x18, 0xDE, 0x26, 0x10, 0x92, +0x01, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6D, +0x06, 0x04, 0x27, 0xF7, 0x1C, 0x4D, 0x0A, 0x06, +0x10, 0x6F, 0x00, 0x18, 0x87, 0x28, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6D, 0x06, 0x04, 0x27, 0xF7, +0x1C, 0x4D, 0x0A, 0x06, 0x10, 0x6F, 0x00, 0x18, +0x9E, 0x28, 0xFF, 0x6A, 0x01, 0x49, 0x4C, 0xE9, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, +0x60, 0xA2, 0x04, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x0A, 0x71, 0xA4, 0x61, 0x02, 0x10, 0x0A, 0x59, +0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x6C, 0x9A, 0xFF, 0x6C, 0x20, 0x6D, 0x40, 0xA3, +0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x74, 0x9B, +0x0A, 0x02, 0x61, 0xE0, 0x0E, 0x03, 0x80, 0xA2, +0x01, 0x4A, 0x6A, 0xEA, 0x80, 0xC0, 0x01, 0x48, +0xFA, 0x61, 0x10, 0x95, 0x01, 0x75, 0x07, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF7, 0x94, 0xA2, +0x20, 0x6D, 0x00, 0x18, 0xB0, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF2, 0x58, 0x9A, 0x00, 0x6C, +0xFF, 0x6D, 0x40, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF2, 0x40, 0x9A, 0x1D, 0x6E, 0xFF, 0x68, +0x40, 0xA2, 0x4C, 0xE8, 0x00, 0x18, 0xA6, 0x22, +0x00, 0x18, 0xEA, 0x25, 0x01, 0x72, 0x0E, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF7, 0x94, 0xA2, +0x01, 0x6D, 0x18, 0x6E, 0x00, 0x6F, 0x00, 0x18, +0x92, 0x2A, 0x00, 0x6C, 0xB0, 0x67, 0x1E, 0x6E, +0x00, 0x18, 0xA6, 0x22, 0x00, 0x18, 0x0A, 0x1B, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x5F, 0xA2, +0x03, 0x2A, 0x01, 0x6C, 0x00, 0x18, 0x74, 0x07, +0x15, 0x97, 0x14, 0x91, 0x13, 0x90, 0x0B, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF4, 0x63, 0x17, 0x62, +0x16, 0xD1, 0x15, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xEC, 0x64, 0x67, 0xFF, 0x4B, 0x4C, 0xEB, +0x02, 0x5B, 0x13, 0xD4, 0xE0, 0xF0, 0x13, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x11, 0xD2, 0xC3, 0xF3, 0x48, 0xA2, 0xFE, 0x72, +0xE0, 0xF0, 0x09, 0x60, 0xFE, 0x4A, 0xFF, 0x6B, +0x6C, 0xEA, 0x02, 0x5A, 0xE0, 0xF0, 0x03, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x67, 0xF6, 0x14, 0x4A, +0x82, 0x67, 0x00, 0x6D, 0x40, 0x6E, 0x10, 0xD2, +0x00, 0x18, 0xA7, 0x19, 0x30, 0xF0, 0x20, 0x6B, +0xE7, 0xF6, 0x14, 0x4B, 0x30, 0xF0, 0x20, 0x69, +0x83, 0x67, 0x00, 0x6D, 0x28, 0x6E, 0xA7, 0xF6, +0x14, 0x49, 0x12, 0xD3, 0x00, 0x18, 0xA7, 0x19, +0x91, 0x67, 0x00, 0x6D, 0x40, 0x6E, 0x00, 0x18, +0xA7, 0x19, 0x30, 0xF0, 0x20, 0x6C, 0x07, 0xF7, +0x1C, 0x4C, 0x00, 0x6D, 0x20, 0x6E, 0x00, 0x18, +0xA7, 0x19, 0x11, 0x92, 0xFF, 0x6B, 0x10, 0x94, +0x23, 0xF4, 0x05, 0xA2, 0x23, 0xF4, 0x46, 0xA2, +0x30, 0xF0, 0x20, 0x6D, 0x00, 0x30, 0x4D, 0xE8, +0x6C, 0xE8, 0xA4, 0xF2, 0x13, 0x4D, 0xD0, 0x67, +0x00, 0x18, 0xAC, 0x19, 0x13, 0x92, 0x01, 0x72, +0x58, 0x67, 0x11, 0xD2, 0x21, 0x2A, 0x30, 0xF0, +0x20, 0x6D, 0x07, 0x04, 0x84, 0xF2, 0x01, 0x4D, +0x10, 0x6E, 0x00, 0x18, 0xAC, 0x19, 0x30, 0xF0, +0x20, 0x6D, 0x0B, 0x04, 0x24, 0xF2, 0x00, 0x4D, +0x10, 0x6E, 0x00, 0x18, 0xAC, 0x19, 0x11, 0x93, +0x00, 0x6C, 0xA4, 0x67, 0xD0, 0x67, 0x20, 0x6F, +0x04, 0xD3, 0x00, 0x18, 0xDE, 0x26, 0x10, 0x95, +0x07, 0x04, 0xD1, 0x67, 0xF0, 0x67, 0x00, 0x18, +0x07, 0x28, 0x12, 0x94, 0xB1, 0x67, 0x19, 0x10, +0x30, 0xF0, 0x20, 0x6D, 0x07, 0x04, 0x24, 0xF2, +0x00, 0x4D, 0x10, 0x6E, 0x00, 0x18, 0xAC, 0x19, +0x00, 0x6A, 0x82, 0x67, 0xA2, 0x67, 0xD0, 0x67, +0x10, 0x6F, 0x04, 0xD2, 0x00, 0x18, 0xDE, 0x26, +0x10, 0x95, 0x07, 0x04, 0xD1, 0x67, 0xF0, 0x67, +0x00, 0x18, 0xB5, 0x28, 0x12, 0x94, 0xA7, 0x41, +0x01, 0x4D, 0x30, 0xF0, 0x20, 0x69, 0x30, 0xF0, +0x20, 0x68, 0x28, 0x6E, 0x07, 0xF7, 0x1C, 0x49, +0xE7, 0xF6, 0x1C, 0x48, 0x00, 0x18, 0xAC, 0x19, +0x91, 0x67, 0xB0, 0x67, 0x20, 0x6E, 0x00, 0x18, +0xAC, 0x19, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, +0x10, 0x4A, 0x82, 0x67, 0xB1, 0x67, 0x20, 0x6E, +0x10, 0xD2, 0x00, 0x18, 0xA3, 0x19, 0x0C, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x70, 0x9A, +0xFF, 0x6C, 0x08, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x47, 0x10, +0xFF, 0xF7, 0x7E, 0xA0, 0x03, 0x6A, 0x6C, 0xEA, +0x7D, 0x67, 0x58, 0xC3, 0x58, 0xA3, 0x04, 0x5A, +0x39, 0x60, 0x10, 0x94, 0x30, 0xF0, 0x20, 0x68, +0x80, 0xF6, 0x0C, 0x48, 0xB1, 0x67, 0x20, 0x6E, +0x83, 0xF5, 0x44, 0xC0, 0x00, 0x18, 0xAC, 0x19, +0x5D, 0x67, 0x98, 0xA2, 0xC0, 0xF0, 0xBF, 0xA0, +0xD1, 0x67, 0x00, 0x18, 0xD9, 0x0C, 0x83, 0xF5, +0x44, 0xA0, 0x01, 0x72, 0x0B, 0x60, 0x05, 0x22, +0x02, 0x72, 0x0D, 0x60, 0x03, 0x72, 0x10, 0x60, +0x22, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF4, +0x00, 0x4C, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0x24, 0xF4, 0x08, 0x4C, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x24, 0xF4, 0x10, 0x4C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF4, 0x18, 0x4C, +0x83, 0xF5, 0xE5, 0xA0, 0x30, 0xF0, 0x20, 0x6D, +0x84, 0xF2, 0x11, 0x4D, 0x06, 0x06, 0x00, 0x18, +0x4E, 0x0C, 0x05, 0x10, 0x05, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF4, 0x70, 0xC2, 0x17, 0x97, +0x16, 0x91, 0x15, 0x90, 0x0C, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0xF7, 0x1F, 0x69, 0x8C, 0xE9, 0xFF, 0x68, +0xAC, 0xE8, 0x00, 0x18, 0x11, 0x0D, 0x91, 0x67, +0x00, 0x18, 0xE7, 0x0D, 0x91, 0x67, 0xB0, 0x67, +0x00, 0x18, 0x21, 0x0D, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x08, 0x4B, +0x60, 0x9B, 0x30, 0xF0, 0x20, 0x68, 0x44, 0xF2, +0x10, 0x48, 0x40, 0xA3, 0xFF, 0x6B, 0x24, 0x67, +0x6C, 0xEA, 0xFF, 0xF6, 0x08, 0x4B, 0x6C, 0xEA, +0x08, 0x6B, 0x6D, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x08, 0x4B, +0x60, 0x9B, 0x90, 0x67, 0x00, 0x6D, 0x40, 0xC3, +0x04, 0x6E, 0x00, 0x18, 0xA7, 0x19, 0x84, 0x40, +0x00, 0x6D, 0xDF, 0x6E, 0x00, 0x18, 0xA7, 0x19, +0x47, 0x41, 0x01, 0x4A, 0x61, 0xA2, 0x30, 0xF0, +0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, 0xC3, 0xF3, +0x65, 0xC0, 0x44, 0xA2, 0x30, 0xF0, 0x20, 0x6C, +0xA7, 0x41, 0x44, 0xF2, 0x15, 0x4C, 0x06, 0x4D, +0x02, 0x6E, 0xC3, 0xF3, 0x48, 0xC0, 0x00, 0x18, +0xAC, 0x19, 0x30, 0xF0, 0x20, 0x6C, 0xA7, 0x41, +0x44, 0xF2, 0x17, 0x4C, 0x08, 0x4D, 0x02, 0x6E, +0x00, 0x18, 0xAC, 0x19, 0x30, 0xF0, 0x20, 0x6C, +0xA7, 0x41, 0x44, 0xF2, 0x19, 0x4C, 0x0A, 0x4D, +0x08, 0x6E, 0x00, 0x18, 0xAC, 0x19, 0x30, 0xF0, +0x20, 0x6C, 0xA7, 0x41, 0x84, 0xF2, 0x01, 0x4C, +0x32, 0x4D, 0x10, 0x6E, 0x00, 0x18, 0xAC, 0x19, +0x30, 0xF0, 0x20, 0x6C, 0xA7, 0x41, 0xA4, 0xF2, +0x11, 0x4C, 0x62, 0x4D, 0x02, 0x6E, 0x00, 0x18, +0xAC, 0x19, 0x23, 0xF4, 0xC5, 0xA0, 0x23, 0xF4, +0x46, 0xA0, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0x36, +0x4D, 0xEE, 0xA7, 0x41, 0xFF, 0x6A, 0xA4, 0xF2, +0x13, 0x4C, 0x64, 0x4D, 0x4C, 0xEE, 0x00, 0x18, +0xAC, 0x19, 0xC3, 0xF3, 0x49, 0xA0, 0xC3, 0xF3, +0x6A, 0xA0, 0x40, 0x32, 0x6D, 0xEA, 0x08, 0x6B, +0x4C, 0xEB, 0x0A, 0x23, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x54, 0x9A, 0x03, 0x6B, 0x01, 0x6C, +0x60, 0xC2, 0x00, 0x18, 0xEA, 0x0F, 0x20, 0x10, +0x07, 0x6C, 0x4C, 0xEC, 0x4F, 0x44, 0xFF, 0xF7, +0x1F, 0x6B, 0x6C, 0xEA, 0x02, 0x5A, 0x18, 0x60, +0x00, 0x6D, 0x00, 0x18, 0x6A, 0x0E, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF3, 0x08, 0x4B, 0x60, 0x9B, +0x40, 0xA3, 0xFF, 0x6B, 0x6C, 0xEA, 0xFF, 0xF6, +0x08, 0x4B, 0x6C, 0xEA, 0x10, 0x6B, 0x6D, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF3, 0x08, 0x4B, 0x60, 0x9B, 0x40, 0xC3, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x00, 0x6A, +0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x80, 0xF0, 0x98, 0xA2, +0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x05, 0x6C, +0x8B, 0xEC, 0x8C, 0xEB, 0x80, 0xF0, 0x78, 0xC2, +0x0A, 0x6B, 0x80, 0xF0, 0x79, 0xC2, 0x00, 0x6B, +0xE3, 0xF7, 0x7C, 0xC2, 0xE3, 0xF7, 0x7D, 0xC2, +0xE3, 0xF7, 0x7E, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xC0, 0xA4, 0x80, 0xF0, 0xF8, 0xA2, 0x02, 0x6B, +0x01, 0x6D, 0x6B, 0xEB, 0xAC, 0xEE, 0xEC, 0xEB, +0xCD, 0xEB, 0xC3, 0x67, 0xAC, 0xEE, 0x80, 0xF0, +0x78, 0xC2, 0x1F, 0x26, 0xC0, 0xA4, 0x07, 0x6F, +0xCE, 0x36, 0xEC, 0xEE, 0xE5, 0x67, 0xE4, 0xEE, +0xC7, 0x67, 0xE3, 0xF7, 0xFC, 0xA2, 0xED, 0xEE, +0xE3, 0xF7, 0xDC, 0xC2, 0xC0, 0xA4, 0xCA, 0x36, +0xAC, 0xEE, 0xFA, 0x4D, 0x6C, 0xED, 0xC8, 0x36, +0xCD, 0xED, 0x80, 0xF0, 0xB8, 0xC2, 0xA0, 0xA4, +0x02, 0x6B, 0xAC, 0xEB, 0xFF, 0x6D, 0xAC, 0xEB, +0x0F, 0x23, 0x61, 0xA4, 0x80, 0xF0, 0x79, 0xC2, +0x20, 0xE8, 0x60, 0xA4, 0x07, 0x6C, 0x6E, 0x33, +0x8C, 0xEB, 0xA4, 0xEB, 0xE3, 0xF7, 0x7C, 0xA2, +0xAF, 0xED, 0x6C, 0xED, 0xE3, 0xF7, 0xBC, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, +0xA0, 0x72, 0x04, 0x6B, 0x01, 0x60, 0x08, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x54, 0x9A, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x63, 0xF3, 0x8C, 0xA2, 0x01, 0x6B, +0x8D, 0xEB, 0x63, 0xF3, 0x6C, 0xC2, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x78, 0x9A, +0xFF, 0x6C, 0x20, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, +0x63, 0xF3, 0xAC, 0xA3, 0x01, 0x6C, 0x44, 0x67, +0x8C, 0xED, 0x04, 0x25, 0xC0, 0xF0, 0x50, 0xA3, +0x52, 0x32, 0x8C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x01, 0x6A, 0x8C, 0xEA, 0x07, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0xC0, 0xF0, +0x7E, 0xA2, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0xC0, 0xF0, 0x7F, 0xA2, +0x83, 0xF5, 0x65, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF4, 0x71, 0xA2, 0x00, 0x6A, 0x07, 0x5B, +0x06, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF0, +0x08, 0x4A, 0x4D, 0xE3, 0x40, 0xA3, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, +0x04, 0x67, 0x86, 0x67, 0x4C, 0xE8, 0x4C, 0xED, +0x4C, 0xEC, 0x40, 0x6A, 0x1E, 0x30, 0x4C, 0xED, +0x04, 0x30, 0x00, 0x6A, 0x02, 0x25, 0x00, 0x18, +0x10, 0x0F, 0x18, 0x48, 0x09, 0xE2, 0x05, 0x97, +0x04, 0x90, 0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF2, +0x7C, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, 0xA0, 0xAB, +0xE1, 0xF7, 0x1F, 0x6B, 0xAC, 0xEB, 0x61, 0xE4, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF3, 0x6C, 0x9B, +0x1C, 0x30, 0x6D, 0xE0, 0x80, 0xA3, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF2, 0x70, 0x9B, 0x4C, 0xEC, +0x6D, 0xE0, 0xA0, 0xA3, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF3, 0x70, 0x9B, 0x4C, 0xED, 0x6D, 0xE0, +0xC0, 0xA3, 0x4C, 0xEE, 0x00, 0x18, 0x20, 0x0F, +0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF3, 0x88, 0x9C, 0x20, 0xF3, 0xA4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF3, 0x14, 0x4B, +0x91, 0xE0, 0xB5, 0xE0, 0x51, 0xE4, 0xC6, 0x43, +0xE0, 0xA5, 0x01, 0x4D, 0xE0, 0xC3, 0xE0, 0xA4, +0x01, 0x4C, 0xEA, 0xC3, 0x01, 0x4B, 0xCA, 0xEB, +0xF7, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, +0x7C, 0x9B, 0x61, 0xE0, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF3, 0x1A, 0x4B, 0x41, 0xE0, 0x44, 0x43, +0x80, 0xA0, 0x80, 0xC3, 0x87, 0x40, 0x03, 0x4C, +0x80, 0xA4, 0x01, 0x48, 0x8A, 0xC3, 0x01, 0x4B, +0x4A, 0xEB, 0xF6, 0x61, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x06, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF7, 0x92, 0xA2, 0x00, 0x18, +0x2D, 0x0F, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF1, 0xD8, 0xA3, +0x01, 0x6B, 0xFF, 0x6A, 0xCC, 0xEB, 0x4C, 0xEB, +0x4C, 0xED, 0x01, 0x6A, 0x3D, 0x2B, 0x02, 0x6A, +0xAC, 0xEA, 0x12, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF3, 0x74, 0x9A, 0x10, 0xF0, 0x00, 0x6E, +0x40, 0x9B, 0xCC, 0xEA, 0x09, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x54, 0x9A, 0xC0, 0xDB, +0x23, 0x6B, 0x60, 0xC2, 0x01, 0x6A, 0x01, 0x10, +0x00, 0x6A, 0x01, 0x6B, 0xAC, 0xEB, 0x24, 0x23, +0xAF, 0xA4, 0x40, 0x6B, 0xAC, 0xEB, 0x07, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x54, 0x9A, +0x22, 0x6B, 0x60, 0xC2, 0x01, 0x6A, 0xAF, 0xA4, +0x80, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, 0xFF, 0x6D, +0xAC, 0xEB, 0x07, 0x23, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x54, 0x9A, 0x21, 0x6B, 0x60, 0xC2, +0x01, 0x6A, 0x8F, 0xA4, 0x20, 0x6B, 0x8C, 0xEB, +0x07, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x54, 0x9A, 0x23, 0x6B, 0x60, 0xC2, 0x01, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0x60, 0xA4, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0xC0, 0xF0, +0x7E, 0xC2, 0x61, 0xA4, 0xC0, 0xF0, 0x7F, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0x61, 0xA4, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF7, 0x60, 0xC2, 0x20, 0xE8, +0x00, 0xF6, 0x10, 0x6D, 0x00, 0xF6, 0x18, 0x6C, +0x00, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x8C, 0xEB, +0x02, 0xF0, 0x00, 0x73, 0xE2, 0x67, 0x01, 0x60, +0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF3, +0x78, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF3, 0x7C, 0x9B, 0x6D, 0xE2, 0xC0, 0xA3, +0xFF, 0x6B, 0xCC, 0xEB, 0x30, 0xF0, 0x20, 0x6E, +0x80, 0xF6, 0x0C, 0x4E, 0xD9, 0xE7, 0x63, 0xF3, +0x73, 0xC6, 0x1F, 0xF7, 0x00, 0x6B, 0xAC, 0xEB, +0x02, 0xF0, 0x00, 0x73, 0xE2, 0x67, 0x01, 0x60, +0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF3, +0x60, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF3, 0x64, 0x9B, 0x6D, 0xE2, 0xC0, 0xA3, +0xFF, 0x6B, 0x01, 0x4A, 0xCC, 0xEB, 0x30, 0xF0, +0x20, 0x6E, 0x80, 0xF6, 0x0C, 0x4E, 0xD9, 0xE7, +0x06, 0x72, 0x63, 0xF3, 0x6D, 0xC6, 0x01, 0x4C, +0x01, 0x4D, 0xC3, 0x61, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6C, +0x84, 0xF6, 0x0B, 0x4C, 0x00, 0x6D, 0x05, 0x6E, +0x00, 0x18, 0xA7, 0x19, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x08, 0x6B, 0xA0, 0xF0, +0x60, 0xC2, 0x03, 0x6B, 0xA0, 0xF0, 0x61, 0xC2, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x04, 0x67, +0x00, 0x18, 0xB2, 0x0F, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0xA0, 0xA0, 0x80, 0xF0, +0xDF, 0xA2, 0x02, 0x6B, 0x01, 0x6C, 0x6B, 0xEB, +0x8C, 0xED, 0xCC, 0xEB, 0xAD, 0xEB, 0xA3, 0x67, +0x8C, 0xED, 0x80, 0xF0, 0x7F, 0xC2, 0x30, 0x25, +0xA0, 0xA0, 0x07, 0x6E, 0xB2, 0x35, 0xCC, 0xED, +0xC4, 0x67, 0xC4, 0xED, 0xA6, 0x67, 0x04, 0xF0, +0xC3, 0xA2, 0xCD, 0xED, 0x04, 0xF0, 0xA3, 0xC2, +0xC0, 0xA0, 0x02, 0x6D, 0xCC, 0xED, 0xFF, 0x6E, +0xCC, 0xED, 0x29, 0x25, 0xA1, 0xA0, 0xA0, 0xF0, +0xA0, 0xC2, 0xA2, 0xA0, 0xA0, 0xF0, 0xA1, 0xC2, +0xA0, 0xA0, 0xAA, 0x35, 0x8C, 0xED, 0xA8, 0x36, +0x05, 0x6D, 0xAB, 0xED, 0x6C, 0xED, 0xCD, 0xED, +0x80, 0xF0, 0xBF, 0xC2, 0x63, 0xA0, 0xA0, 0xF0, +0x62, 0xC2, 0x60, 0xA0, 0x6E, 0x33, 0x8C, 0xEB, +0x6C, 0x34, 0x09, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, +0x8D, 0xEB, 0x80, 0xF0, 0x7F, 0xC2, 0x0B, 0x10, +0x60, 0xA0, 0x07, 0x6D, 0x72, 0x33, 0xAC, 0xEB, +0x84, 0xEB, 0x04, 0xF0, 0x63, 0xA2, 0x8F, 0xEC, +0x6C, 0xEC, 0x04, 0xF0, 0x83, 0xC2, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x02, 0xF5, 0x6C, 0xA2, 0xFF, 0x68, 0x24, 0x67, +0x02, 0x73, 0x0C, 0xE9, 0x1B, 0x61, 0x01, 0x71, +0x33, 0x61, 0x63, 0xF3, 0x8C, 0xA2, 0x01, 0x6B, +0x8D, 0xEB, 0x63, 0xF3, 0x6C, 0xC2, 0xC0, 0xF0, +0x71, 0xA2, 0x80, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, +0x0C, 0xEB, 0x0A, 0x23, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF3, 0x68, 0x9A, 0x40, 0xA3, 0x0C, 0xEA, +0x8E, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, 0x1C, 0x10, +0x01, 0x6C, 0x18, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF3, 0x4C, 0x9A, 0x01, 0x6B, 0x6B, 0xEB, +0x60, 0xC2, 0x64, 0x6C, 0x00, 0x18, 0x9B, 0x19, +0x00, 0x18, 0xD4, 0x25, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF3, 0x68, 0x9A, 0x80, 0x6C, 0x8B, 0xEC, +0x40, 0xA3, 0x0C, 0xEA, 0x8E, 0xEA, 0x0C, 0xEA, +0x40, 0xC3, 0x91, 0x67, 0x00, 0x18, 0x01, 0x1D, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x80, 0xF0, 0x9F, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x80, 0xF0, 0x7F, 0xC2, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, +0x80, 0xF0, 0x7F, 0xA0, 0xE5, 0x67, 0x01, 0x6E, +0xA3, 0x67, 0xFF, 0x6A, 0xCC, 0xED, 0x4C, 0xED, +0x4C, 0xEC, 0x4C, 0xEF, 0x40, 0x25, 0x04, 0xF0, +0x20, 0xA0, 0x3D, 0x21, 0x30, 0xF0, 0x20, 0x6D, +0x40, 0xF3, 0xB0, 0x9D, 0xA0, 0xA5, 0x4C, 0xED, +0xA7, 0xEC, 0xCC, 0xED, 0x06, 0x25, 0x00, 0x6A, +0x04, 0xF0, 0x40, 0xC0, 0x04, 0xF0, 0xC2, 0xC0, +0x2E, 0x10, 0xA0, 0xF0, 0x81, 0xA0, 0x83, 0xE9, +0x1F, 0x61, 0x08, 0x6C, 0x6C, 0xEC, 0x4C, 0xEC, +0x0A, 0x24, 0xC0, 0xF0, 0x8A, 0xA0, 0x00, 0x6D, +0x00, 0x18, 0xFD, 0x05, 0xC0, 0xF0, 0x8A, 0xA0, +0x00, 0x18, 0x1F, 0x06, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x54, 0x9A, 0x10, 0x6B, +0x01, 0x6C, 0x60, 0xC2, 0x00, 0x18, 0xEA, 0x0F, +0x80, 0xF0, 0x7F, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x80, 0xF0, 0x5F, 0xC0, 0x0B, 0x10, +0x80, 0xF0, 0x92, 0xA0, 0x00, 0x6D, 0x08, 0x6E, +0x00, 0x18, 0x0F, 0x0C, 0x04, 0xF0, 0x40, 0xA0, +0x01, 0x4A, 0x04, 0xF0, 0x40, 0xC0, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, +0x80, 0xF0, 0x7F, 0xA0, 0x24, 0x67, 0x01, 0x6C, +0xFF, 0x6A, 0x6C, 0xEC, 0x4C, 0xEC, 0x4C, 0xE9, +0x67, 0x24, 0xE3, 0xF7, 0x9F, 0xA0, 0x01, 0x4C, +0xE3, 0xF7, 0x9F, 0xC0, 0x04, 0xF0, 0x82, 0xA0, +0x01, 0x74, 0x2C, 0x61, 0x04, 0x6C, 0x6C, 0xEC, +0x4C, 0xEC, 0x28, 0x24, 0x04, 0xF0, 0x81, 0xA0, +0x25, 0x2C, 0xE3, 0xF7, 0xBF, 0xA0, 0xA0, 0xF0, +0x82, 0xA0, 0x83, 0xED, 0x1F, 0x61, 0x08, 0x6C, +0x6C, 0xEC, 0x4C, 0xEC, 0x0A, 0x24, 0xC0, 0xF0, +0x8A, 0xA0, 0x00, 0x6D, 0x00, 0x18, 0xFD, 0x05, +0xC0, 0xF0, 0x8A, 0xA0, 0x00, 0x18, 0x1F, 0x06, +0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x54, 0x9A, 0x10, 0x6B, 0x01, 0x6C, 0x60, 0xC2, +0x00, 0x18, 0xEA, 0x0F, 0x80, 0xF0, 0x7F, 0xA0, +0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x80, 0xF0, +0x5F, 0xC0, 0x32, 0x10, 0x30, 0xF0, 0x20, 0x68, +0x80, 0xF6, 0x0C, 0x48, 0xA0, 0xF0, 0x60, 0xA0, +0xE3, 0xF7, 0x5F, 0xA0, 0x63, 0xEA, 0x28, 0x61, +0x91, 0x67, 0x00, 0x18, 0xC7, 0x21, 0x01, 0x6B, +0x4C, 0xEB, 0x15, 0x2B, 0x04, 0xF0, 0x41, 0xA0, +0x12, 0x2A, 0x04, 0xF0, 0x40, 0xA0, 0x80, 0xF0, +0x92, 0xA0, 0x00, 0x6D, 0x01, 0x4A, 0x04, 0xF0, +0x40, 0xC0, 0xE3, 0xF7, 0x5E, 0xA0, 0x08, 0x6E, +0xF1, 0x67, 0x01, 0x4A, 0xE3, 0xF7, 0x5E, 0xC0, +0x00, 0x18, 0x0F, 0x0C, 0x04, 0x10, 0x91, 0x67, +0x01, 0x6D, 0x00, 0x18, 0xC3, 0x21, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0x00, 0x6B, +0xE3, 0xF7, 0x7F, 0xC2, 0x04, 0xF0, 0x61, 0xC2, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x60, 0xF7, +0x18, 0x4C, 0x07, 0x6E, 0x00, 0x18, 0xAC, 0x19, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xA4, 0x67, 0x30, 0xF0, +0x20, 0x6C, 0x60, 0xF7, 0x11, 0x4C, 0x07, 0x6E, +0x00, 0x18, 0xAC, 0x19, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xA4, 0xF3, 0x18, 0x48, 0x08, 0xD4, 0x0A, 0xD6, +0x90, 0x67, 0x10, 0x6E, 0xFF, 0x69, 0xEC, 0xE9, +0x00, 0x18, 0xAC, 0x19, 0x08, 0x95, 0x87, 0x40, +0x09, 0x4C, 0x10, 0x6E, 0x00, 0x18, 0xAC, 0x19, +0x0A, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x43, 0xF5, 0x6C, 0xDA, 0x43, 0xF5, +0x33, 0xC2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6B, 0xFF, 0xF7, +0x1F, 0x6A, 0x8C, 0xEA, 0x6C, 0xED, 0x6C, 0xEE, +0x45, 0xE5, 0x0D, 0xD7, 0x04, 0xD6, 0xC7, 0xE1, +0x00, 0x68, 0x08, 0x10, 0x91, 0x67, 0x00, 0x18, +0x03, 0x19, 0x0D, 0x94, 0x01, 0x49, 0x0D, 0xE4, +0x40, 0xC3, 0x01, 0x48, 0x04, 0x93, 0xFF, 0x6A, +0x0C, 0xEA, 0x63, 0xEA, 0xF3, 0x61, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0xC0, 0xF2, +0x7C, 0x9B, 0x4C, 0xED, 0x0B, 0xD5, 0x04, 0x67, +0x80, 0xAB, 0xE1, 0xF7, 0x1F, 0x6B, 0x4C, 0xE8, +0x8C, 0xEB, 0x6D, 0xE0, 0x7C, 0x33, 0x0A, 0xD3, +0x30, 0xF0, 0x20, 0x6B, 0x0A, 0x94, 0xE0, 0xF2, +0x7C, 0x9B, 0x6D, 0xE4, 0x20, 0xA3, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF3, 0x60, 0x9B, 0x4C, 0xE9, +0x6D, 0xE4, 0x60, 0xA3, 0x6C, 0xEA, 0x40, 0x32, +0x45, 0xE1, 0xE7, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF3, 0x54, 0x9A, 0x20, 0xF3, 0x6C, 0x9B, +0x49, 0xE4, 0x6D, 0xE4, 0x29, 0xE2, 0x2D, 0xE3, +0x00, 0x6C, 0x80, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, +0xFB, 0x61, 0x01, 0x6A, 0x0B, 0x97, 0x04, 0xD2, +0xC8, 0x41, 0xFF, 0xF7, 0x1F, 0x6A, 0x0A, 0x6D, +0x4C, 0xEE, 0x10, 0x6C, 0x00, 0x18, 0xEA, 0x26, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF7, 0xB5, 0xA2, +0x03, 0xED, 0x17, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x5C, 0x9A, 0xB3, 0xE0, 0x9C, 0x34, +0x60, 0xAA, 0x0B, 0x92, 0x28, 0x4C, 0x5B, 0xE1, +0xE1, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0xB5, 0xE2, +0xFF, 0xF7, 0x1F, 0x6B, 0xB0, 0x35, 0x6C, 0xED, +0x04, 0xD5, 0xF8, 0x4E, 0x6C, 0xEC, 0x38, 0x6D, +0x1B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, +0x5C, 0x9A, 0x0B, 0x94, 0x17, 0xE5, 0x60, 0xAA, +0xE1, 0xF7, 0x1F, 0x6A, 0xBC, 0x35, 0x6C, 0xEA, +0x49, 0xE0, 0x5C, 0x32, 0x08, 0x6B, 0x7A, 0xEA, +0x01, 0x2B, 0xE5, 0xE8, 0xFF, 0xF7, 0x1F, 0x6B, +0x9B, 0xE1, 0x38, 0x4D, 0xF8, 0x4E, 0x28, 0x6C, +0x6C, 0xED, 0x12, 0xEA, 0x6C, 0xEA, 0x04, 0xD2, +0xFF, 0x6A, 0x4C, 0xEE, 0x08, 0x6F, 0x00, 0x18, +0xDE, 0x26, 0x30, 0xF0, 0x20, 0x6D, 0x08, 0x04, +0x44, 0xF2, 0x08, 0x4D, 0x08, 0x6E, 0x06, 0x00, +0x00, 0x18, 0xAC, 0x19, 0x08, 0x04, 0x00, 0x6D, +0xD0, 0x67, 0x08, 0x6F, 0x00, 0x18, 0x3E, 0x28, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF3, 0x54, 0x9A, +0x0A, 0x94, 0x49, 0xE4, 0x25, 0xE2, 0x08, 0x02, +0x60, 0xA0, 0x01, 0x48, 0x4A, 0xE8, 0x60, 0xC1, +0x01, 0x49, 0xFA, 0x61, 0x0F, 0x97, 0x0E, 0x91, +0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6C, +0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF3, 0x08, 0x4C, +0x44, 0xF2, 0x19, 0x4D, 0x08, 0x6E, 0x00, 0x18, +0xAC, 0x19, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x01, 0x6B, 0x83, 0xF5, 0x67, 0xC2, +0xE0, 0xF0, 0x54, 0xA2, 0x11, 0x22, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF2, 0x7C, 0x9B, 0xE1, 0xF7, +0x1F, 0x6C, 0x30, 0xF0, 0x20, 0x6E, 0x60, 0xAB, +0x60, 0x6D, 0xE4, 0xF3, 0x00, 0x4E, 0x6C, 0xEC, +0x51, 0xE4, 0x9C, 0x34, 0x00, 0x18, 0xFB, 0x18, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x78, 0x9A, 0xF0, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF7, 0x80, 0xA2, 0x00, 0x18, 0x02, 0x11, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, 0x54, 0x9A, +0x10, 0xF0, 0x00, 0x6B, 0x60, 0xDA, 0x00, 0x18, +0xC3, 0x25, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x40, 0xA4, 0x64, 0x67, 0x01, 0x6C, 0x8C, 0xEA, +0xFF, 0x6F, 0x03, 0x2A, 0x00, 0x18, 0x18, 0x11, +0x0D, 0x11, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x05, 0x6D, 0x83, 0xF5, 0xA4, 0xC2, +0xC0, 0xA3, 0xC0, 0xF0, 0x10, 0xA2, 0x02, 0x6D, +0xAB, 0xED, 0x8C, 0xEE, 0x0C, 0xED, 0xCD, 0xED, +0xC0, 0xF0, 0xB0, 0xC2, 0xC0, 0xA3, 0xC6, 0x36, +0x8C, 0xEE, 0xC4, 0x31, 0x03, 0x6E, 0xCB, 0xEE, +0xFE, 0x65, 0xAC, 0xEE, 0x2D, 0xEE, 0xC0, 0xF0, +0xD0, 0xC2, 0xA0, 0xA3, 0xAA, 0x35, 0x8C, 0xED, +0xA8, 0x31, 0x05, 0x6D, 0xAB, 0xED, 0xCC, 0xED, +0x2D, 0xED, 0xC0, 0xF0, 0xB0, 0xC2, 0xC0, 0xA3, +0x09, 0x69, 0x2B, 0xE9, 0xCE, 0x36, 0x8C, 0xEE, +0xCC, 0x36, 0x1E, 0x65, 0xC5, 0x67, 0x18, 0x67, +0x2C, 0xEE, 0x0D, 0xEE, 0xC0, 0xF0, 0xD0, 0xC2, +0xA0, 0xA3, 0xB2, 0x35, 0x8C, 0xED, 0xB0, 0x35, +0x1D, 0x65, 0x11, 0x6D, 0xAB, 0xED, 0xCC, 0xED, +0xD8, 0x67, 0xCD, 0xED, 0xC0, 0xF0, 0xB0, 0xC2, +0xC0, 0xA3, 0xD6, 0x36, 0x8C, 0xEE, 0xD4, 0x36, +0x1E, 0x65, 0x21, 0x6E, 0xCB, 0xEE, 0x18, 0x67, +0xAC, 0xEE, 0x0D, 0xEE, 0xC0, 0xF0, 0xD0, 0xC2, +0xA0, 0xA3, 0x7F, 0x68, 0xBA, 0x35, 0x8C, 0xED, +0xB8, 0x35, 0x1D, 0x65, 0x41, 0x6D, 0xAB, 0xED, +0xCC, 0xED, 0xD8, 0x67, 0xCD, 0xED, 0xC0, 0xF0, +0xB0, 0xC2, 0xC0, 0xA3, 0x0C, 0xED, 0xDE, 0x36, +0xDC, 0x36, 0xCD, 0xED, 0xC0, 0xF0, 0xB0, 0xC2, +0xC1, 0xA3, 0xDE, 0x36, 0xDC, 0x36, 0x1E, 0x65, +0xD0, 0x67, 0xC0, 0xF0, 0x11, 0xA2, 0x0C, 0xEE, +0x18, 0x67, 0x0D, 0xEE, 0xC0, 0xF0, 0xD1, 0xC2, +0xC4, 0xA3, 0x1F, 0x67, 0xC6, 0x36, 0x8C, 0xEE, +0xC4, 0x36, 0x04, 0xD6, 0xC0, 0xF0, 0xD4, 0xA2, +0x1E, 0x65, 0xD8, 0x67, 0xCC, 0xE8, 0x04, 0x96, +0xCD, 0xE8, 0xC0, 0xF0, 0x14, 0xC2, 0xC4, 0xA3, +0x2C, 0xE8, 0xCE, 0x36, 0x8C, 0xEE, 0xCC, 0x36, +0xCD, 0xE8, 0xC0, 0xF0, 0x14, 0xC2, 0x85, 0xA3, +0x04, 0x6E, 0xCC, 0xED, 0xEC, 0xED, 0xC0, 0xF0, +0x95, 0xC2, 0x09, 0x25, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x98, 0x9A, 0x40, 0xA4, 0xEC, 0xEA, +0xCD, 0xEA, 0xEC, 0xEA, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF7, 0x5C, 0xA2, 0x08, 0x6E, +0xFF, 0x6D, 0xCC, 0xEA, 0x09, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x98, 0x9A, 0x40, 0xA4, +0xAC, 0xEA, 0xCD, 0xEA, 0xAC, 0xEA, 0x40, 0xC4, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF7, 0x5C, 0xA2, +0x02, 0x6E, 0xFF, 0x6D, 0xCC, 0xEA, 0x09, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x98, 0x9A, +0x40, 0xA4, 0xAC, 0xEA, 0xCD, 0xEA, 0xAC, 0xEA, +0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x02, 0xF5, 0x8C, 0xA2, 0x02, 0x74, +0x08, 0x61, 0xC0, 0xF0, 0x91, 0xA2, 0x80, 0x6A, +0x4B, 0xEA, 0x8C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, +0x3A, 0x2A, 0x30, 0xF0, 0x20, 0x6D, 0x80, 0xF6, +0x0C, 0x4D, 0x41, 0xA3, 0xC0, 0xF0, 0xD1, 0xA5, +0x80, 0x6C, 0x7F, 0x6F, 0x8B, 0xEC, 0xEC, 0xEA, +0xCC, 0xEC, 0x4D, 0xEC, 0xC0, 0xF0, 0x91, 0xC5, +0x42, 0xA3, 0xC0, 0xF0, 0x33, 0xA5, 0x02, 0x6E, +0xC0, 0xF0, 0x52, 0xC5, 0x03, 0xA3, 0x19, 0x65, +0x01, 0x6A, 0xCB, 0xEE, 0x38, 0x67, 0x4C, 0xE8, +0x2C, 0xEE, 0x0D, 0xEE, 0xC0, 0xF0, 0xD3, 0xC5, +0x03, 0xA3, 0x4C, 0xEE, 0xEC, 0xEC, 0x06, 0x30, +0x04, 0x30, 0x0D, 0xEE, 0xC0, 0xF0, 0xD3, 0xC5, +0x64, 0xA3, 0xC0, 0xF0, 0x14, 0xA5, 0x6A, 0x33, +0x4C, 0xEB, 0x68, 0x36, 0x05, 0x6B, 0x6B, 0xEB, +0x0C, 0xEB, 0xCD, 0xEB, 0xC0, 0xF0, 0x74, 0xC5, +0xC0, 0xF0, 0xB0, 0xA5, 0xB6, 0x35, 0x4E, 0xED, +0x4C, 0xED, 0x00, 0x18, 0xA8, 0x1C, 0x00, 0x18, +0xCB, 0x25, 0x30, 0xF0, 0x20, 0x6C, 0x05, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, 0x19, 0x4C, +0x00, 0x6D, 0x08, 0x6E, 0x04, 0xF4, 0x70, 0xC2, +0x00, 0x18, 0xA7, 0x19, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF2, 0x7C, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, +0x60, 0xAB, 0xE1, 0xF7, 0x1F, 0x6C, 0x30, 0xF0, +0x20, 0x6E, 0x6C, 0xEC, 0x91, 0xE2, 0x9C, 0x34, +0x70, 0x6D, 0x44, 0xF3, 0x08, 0x4E, 0x00, 0x18, +0xF3, 0x18, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF7, +0x97, 0xA2, 0x00, 0x18, 0xB6, 0x11, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x0D, 0x24, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF3, 0x88, 0x9B, 0x80, 0x6D, +0xAB, 0xED, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, +0x4C, 0xEB, 0x60, 0xC4, 0x00, 0x18, 0x2D, 0x17, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6A, 0x8C, 0xEA, 0x31, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF2, 0x3C, 0x9A, 0x30, 0xF0, +0x20, 0x68, 0xE1, 0xF7, 0x1F, 0x6A, 0xA0, 0xA9, +0x80, 0xF6, 0x0C, 0x48, 0x30, 0xF0, 0x20, 0x6C, +0x4C, 0xED, 0xE0, 0xF0, 0x49, 0xA0, 0x40, 0x6E, +0x04, 0xF2, 0x10, 0x4C, 0x55, 0xE5, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x5C, 0x9A, 0xBC, 0x35, +0x55, 0xE5, 0x00, 0x18, 0xAC, 0x19, 0x00, 0x6D, +0x03, 0x6C, 0x00, 0x18, 0x8F, 0x27, 0x80, 0xA9, +0xE1, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, 0xE0, 0xF0, +0x4A, 0xA0, 0x51, 0xE4, 0x90, 0x34, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x25, 0x27, +0x03, 0x6C, 0x01, 0x6D, 0x00, 0x18, 0x8F, 0x27, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x46, 0xA4, 0x08, 0x72, 0x16, 0x61, 0x47, 0xA4, +0x14, 0x2A, 0x58, 0xA4, 0x7D, 0x67, 0x30, 0xF0, +0x20, 0x6D, 0x50, 0xC3, 0x59, 0xA4, 0x24, 0xF3, +0x1A, 0x4D, 0x04, 0x6E, 0x51, 0xC3, 0x5A, 0xA4, +0x52, 0xC3, 0x5B, 0xA4, 0x04, 0x04, 0x53, 0xC3, +0x00, 0x18, 0xA3, 0x19, 0x01, 0x5A, 0x58, 0x67, +0x01, 0x10, 0x00, 0x6A, 0x07, 0x97, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x06, 0xD4, 0x07, 0xD5, 0x08, 0xD6, 0x09, 0xD7, +0x47, 0xA4, 0x01, 0x6C, 0x4A, 0x95, 0x4C, 0xEC, +0x00, 0x6A, 0x07, 0x24, 0x85, 0x67, 0x00, 0x18, +0xF3, 0x11, 0x4B, 0xEB, 0x4D, 0xEB, 0xC0, 0xF7, +0x62, 0x32, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x06, 0xD4, +0x07, 0xD5, 0x08, 0xD6, 0x09, 0xD7, 0x67, 0xA4, +0x01, 0x6A, 0x4A, 0x90, 0x6C, 0xEA, 0x2F, 0x22, +0x90, 0x67, 0x00, 0x18, 0xF3, 0x11, 0x2B, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF7, 0x64, 0xA2, +0x10, 0x6A, 0x08, 0x48, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x0E, 0x22, 0x49, 0xA0, 0x06, 0x72, +0x0B, 0x61, 0x54, 0xA0, 0x09, 0x2A, 0x55, 0xA0, +0x50, 0x72, 0x06, 0x61, 0x20, 0xF0, 0x61, 0xA0, +0x05, 0x6A, 0x4C, 0xEB, 0x01, 0x6A, 0x14, 0x2B, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF7, 0x64, 0xA2, +0x04, 0x6A, 0x6C, 0xEA, 0x0C, 0x22, 0x49, 0xA0, +0x11, 0x72, 0x09, 0x61, 0x14, 0x48, 0x42, 0xA0, +0x06, 0x2A, 0x43, 0xA0, 0x89, 0x6B, 0x6E, 0xEA, +0x01, 0x5A, 0x58, 0x67, 0x01, 0x10, 0x00, 0x6A, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x5C, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x60, 0x9B, +0xFF, 0x68, 0x49, 0xE4, 0x0C, 0xED, 0x05, 0xD5, +0x04, 0xD2, 0x6D, 0xE4, 0x40, 0xA2, 0xA0, 0xA3, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF3, 0x38, 0x9B, +0x0C, 0xED, 0x25, 0xE4, 0xC0, 0xA1, 0x90, 0x67, +0x4C, 0xEC, 0x0C, 0xEE, 0x00, 0x18, 0x20, 0x0F, +0x06, 0xD2, 0x80, 0xA1, 0x0C, 0xEC, 0x00, 0x18, +0x10, 0x0F, 0x22, 0x67, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x83, 0xF5, 0xC5, 0xA2, +0x07, 0x5E, 0x33, 0x60, 0x83, 0xF5, 0x65, 0x82, +0x01, 0x6A, 0x44, 0xEB, 0x14, 0x6B, 0x4C, 0xEB, +0x18, 0x2B, 0x62, 0x6B, 0x4C, 0xEB, 0x29, 0x23, +0x30, 0xF0, 0x20, 0x68, 0x05, 0x95, 0xE4, 0xF3, +0x00, 0x48, 0x90, 0x67, 0x00, 0x18, 0xAF, 0x0C, +0x04, 0x93, 0x06, 0x94, 0x89, 0xE3, 0x2B, 0xE2, +0x25, 0xE0, 0x04, 0x10, 0x60, 0xA0, 0x01, 0x48, +0x60, 0xC2, 0x01, 0x4A, 0x2A, 0xE8, 0xFA, 0x61, +0x14, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x05, 0x95, +0xE4, 0xF3, 0x00, 0x48, 0x90, 0x67, 0x00, 0x18, +0x61, 0x0C, 0x04, 0x93, 0x06, 0x94, 0x89, 0xE3, +0x2B, 0xE2, 0x25, 0xE0, 0x04, 0x10, 0x60, 0xA0, +0x01, 0x48, 0x60, 0xC2, 0x01, 0x4A, 0x2A, 0xE8, +0xFA, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xF5, 0x63, 0x15, 0x62, +0x14, 0xD1, 0x13, 0xD0, 0xFF, 0x6A, 0x0F, 0xD2, +0x7D, 0x67, 0x60, 0xF0, 0x68, 0xA3, 0x18, 0xD6, +0xDD, 0x67, 0x10, 0xD3, 0x60, 0xF0, 0xCC, 0xA6, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF2, 0x40, 0x9A, +0x16, 0xD4, 0x17, 0xD5, 0x19, 0xD7, 0x11, 0xD6, +0x40, 0xA2, 0xFF, 0x6B, 0x00, 0x6C, 0x4C, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF2, 0x58, 0x9A, +0x0F, 0xD3, 0xFF, 0x6D, 0x39, 0x6E, 0x40, 0x9A, +0x00, 0x18, 0xA6, 0x22, 0x00, 0x18, 0xEA, 0x25, +0x01, 0x72, 0x00, 0x68, 0x0A, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF7, 0x93, 0xA2, 0xF0, 0x67, +0x01, 0x6D, 0x18, 0x6E, 0x00, 0x18, 0x92, 0x2A, +0x02, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x20, 0xF3, 0x4C, 0x9A, 0xC0, 0xF2, +0x70, 0x9B, 0x49, 0xE0, 0x6D, 0xE0, 0x80, 0xA2, +0xA0, 0xA3, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF3, +0x70, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, 0x6D, 0xE0, +0xC0, 0xA3, 0x4C, 0xED, 0x4C, 0xEE, 0x00, 0x18, +0x20, 0x0F, 0x10, 0x95, 0x87, 0x40, 0x21, 0x4C, +0x22, 0x67, 0x00, 0x18, 0x2E, 0x12, 0x11, 0x96, +0x34, 0x2E, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6D, 0x20, 0xF3, 0x40, 0x9A, 0x60, 0xF3, +0xA4, 0x9D, 0x16, 0x94, 0x18, 0x93, 0x49, 0xE0, +0xB5, 0xE0, 0x29, 0xE2, 0x35, 0xE5, 0xC0, 0xA4, +0x01, 0x4C, 0xC0, 0xC2, 0xE0, 0xA3, 0xC8, 0x42, +0xF8, 0x4E, 0xE0, 0xC6, 0xC0, 0xA3, 0x01, 0x4B, +0xD8, 0xC2, 0x01, 0x4A, 0xAA, 0xEA, 0xF3, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, 0x84, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF3, 0x60, 0x9A, +0x91, 0xE0, 0x00, 0x6A, 0x6D, 0xE0, 0x2D, 0xE3, +0x17, 0x96, 0x55, 0xE6, 0xA0, 0xA5, 0xA0, 0xC4, +0x19, 0x96, 0x01, 0x4C, 0x55, 0xE6, 0xA0, 0xA5, +0x01, 0x4A, 0x06, 0x72, 0xA0, 0xC3, 0x01, 0x4B, +0xF3, 0x61, 0x16, 0x94, 0x18, 0x95, 0x20, 0x6E, +0x3A, 0x6F, 0x00, 0x18, 0x8D, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF3, 0x7C, 0x9A, 0x0E, 0x04, +0x04, 0x02, 0x6D, 0xE0, 0x2D, 0xE3, 0xA0, 0xA3, +0x01, 0x4B, 0xA0, 0xC2, 0x01, 0x4A, 0x8A, 0xEA, +0xFA, 0x61, 0x30, 0x48, 0x21, 0xE0, 0x90, 0x67, +0x0E, 0xD0, 0x30, 0xF0, 0x20, 0x6E, 0x30, 0xF0, +0x20, 0x68, 0x28, 0x6D, 0xA4, 0xF3, 0x18, 0x4E, +0x80, 0xF6, 0x0C, 0x48, 0x00, 0x18, 0xFB, 0x18, +0x0E, 0x95, 0xE0, 0xF0, 0xC7, 0xA0, 0x3A, 0x6C, +0x00, 0x18, 0x9E, 0x29, 0x0E, 0x94, 0x28, 0x6D, +0x04, 0x06, 0x00, 0x18, 0xFB, 0x18, 0xC0, 0xF0, +0x5E, 0xA0, 0x02, 0x72, 0x05, 0x61, 0xE0, 0xF0, +0x87, 0xA0, 0xB1, 0x67, 0x00, 0x18, 0xB0, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x70, 0x9A, +0xFF, 0x6C, 0x02, 0x6D, 0x40, 0xA3, 0x3A, 0x6E, +0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, +0x0F, 0x95, 0x00, 0x6C, 0x00, 0x18, 0xA6, 0x22, +0x00, 0x18, 0x0A, 0x1B, 0x15, 0x97, 0x14, 0x91, +0x13, 0x90, 0x0B, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF3, 0x63, 0x19, 0x62, 0x18, 0xD1, 0x17, 0xD0, +0x00, 0x6A, 0x7D, 0x67, 0x1A, 0xD4, 0x06, 0xD2, +0x4E, 0xCB, 0x08, 0xD2, 0x09, 0xD2, 0x0A, 0xD2, +0x0B, 0xD2, 0x0C, 0xD2, 0x0D, 0xD2, 0x0E, 0xD2, +0x0F, 0xD2, 0x46, 0xA4, 0x86, 0x72, 0xC0, 0xF0, +0x01, 0x61, 0x47, 0xA4, 0xDD, 0x72, 0xA0, 0xF0, +0x1D, 0x61, 0x4E, 0xA4, 0x3A, 0x72, 0xA0, 0xF0, +0x19, 0x61, 0x20, 0xF0, 0x50, 0xA4, 0x87, 0x72, +0xA0, 0xF0, 0x14, 0x61, 0x1A, 0x95, 0x0C, 0x04, +0x10, 0x6E, 0x38, 0x4D, 0x00, 0x18, 0xAC, 0x19, +0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF3, 0x09, 0x4C, +0x11, 0xD4, 0x00, 0x68, 0x38, 0x6B, 0x78, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x12, 0xEB, 0x51, 0xE3, 0xA3, 0xF4, 0xBC, 0xA4, +0x01, 0x6C, 0xAC, 0xEC, 0x80, 0xF0, 0x1C, 0x24, +0x71, 0xE2, 0xC3, 0xF4, 0x14, 0x4C, 0x15, 0xD4, +0x71, 0xE2, 0x69, 0xE2, 0xA3, 0xF4, 0x1E, 0x4A, +0xC3, 0xF4, 0x04, 0x4C, 0x12, 0xD2, 0x13, 0xD2, +0x00, 0x6A, 0x14, 0xD4, 0x10, 0xD2, 0x7E, 0x10, +0x10, 0x93, 0x15, 0x92, 0x0C, 0x04, 0x70, 0x35, +0xB5, 0xE2, 0x10, 0x6E, 0x00, 0x18, 0x51, 0x19, +0x65, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x70, 0x9A, 0xFF, 0x6C, 0x06, 0x6E, 0x40, 0xA3, +0x30, 0xF0, 0x20, 0x69, 0x80, 0xF6, 0x0C, 0x49, +0x8C, 0xEA, 0xFF, 0xF6, 0x1B, 0x4C, 0x8C, 0xEA, +0x01, 0x6C, 0x8D, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, +0x40, 0xC3, 0x1A, 0x95, 0x06, 0x04, 0x4A, 0x4D, +0x00, 0x18, 0xAC, 0x19, 0x1A, 0x95, 0x08, 0x04, +0x10, 0x6E, 0x10, 0x4D, 0x00, 0x18, 0xAC, 0x19, +0x38, 0x6A, 0x58, 0xE8, 0x01, 0x6B, 0x12, 0xEA, +0x29, 0xE2, 0xA3, 0xF4, 0x5C, 0xA2, 0x46, 0x32, +0x6C, 0xEA, 0x19, 0x22, 0x14, 0x95, 0x08, 0x04, +0x10, 0x6E, 0x00, 0x18, 0x51, 0x19, 0x41, 0x2A, +0xC0, 0xF0, 0x5E, 0xA1, 0x02, 0x72, 0x07, 0x61, +0xC0, 0xF0, 0x78, 0xA1, 0x08, 0x6A, 0xFF, 0x6C, +0x6C, 0xEA, 0x8C, 0xEA, 0x13, 0x22, 0x00, 0x6A, +0x04, 0xD2, 0x05, 0xD2, 0x08, 0x04, 0x06, 0x05, +0x0C, 0x06, 0x12, 0x97, 0x20, 0x10, 0xC0, 0xF0, +0x5E, 0xA1, 0x02, 0x72, 0x15, 0x61, 0xC0, 0xF0, +0x78, 0xA1, 0x08, 0x6A, 0xFF, 0x6C, 0x6C, 0xEA, +0x8C, 0xEA, 0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x54, 0x9A, 0x0A, 0x6B, 0x60, 0xC2, +0x63, 0xF3, 0x4C, 0xA1, 0x01, 0x6B, 0x6D, 0xEA, +0x63, 0xF3, 0x4C, 0xC1, 0x43, 0x67, 0x29, 0x10, +0x13, 0x97, 0x00, 0x6A, 0x04, 0xD2, 0x05, 0xD2, +0x08, 0x04, 0x06, 0x05, 0x0C, 0x06, 0x00, 0x18, +0x61, 0x12, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x70, 0x9A, 0xFF, 0x6C, 0x05, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x10, 0x94, 0xFF, 0x6A, 0x01, 0x4C, +0x4C, 0xEC, 0x10, 0xD4, 0x11, 0x93, 0x10, 0x94, +0x40, 0xA3, 0x43, 0xEC, 0x7F, 0xF7, 0x1C, 0x61, +0x01, 0x48, 0x38, 0x4B, 0x02, 0x70, 0x11, 0xD3, +0x03, 0x60, 0x58, 0x17, 0x00, 0x6A, 0x01, 0x10, +0x01, 0x6A, 0x19, 0x97, 0x18, 0x91, 0x17, 0x90, +0x0D, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0x6A, 0x40, 0xF2, 0x60, 0x9B, 0x4C, 0xEF, +0x4C, 0xEE, 0x0C, 0xD4, 0x0D, 0xD5, 0x06, 0xD6, +0x04, 0xD7, 0x60, 0xA3, 0x00, 0x6C, 0xFF, 0x6D, +0x6C, 0xEA, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF2, 0x58, 0x9A, 0x33, 0x6E, 0x00, 0x68, +0x40, 0x9A, 0x00, 0x18, 0xA6, 0x22, 0x00, 0x18, +0xEA, 0x25, 0x01, 0x72, 0x0A, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF7, 0x92, 0xA2, 0xF0, 0x67, +0x01, 0x6D, 0x18, 0x6E, 0x00, 0x18, 0x92, 0x2A, +0x02, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x20, 0xF3, 0x4C, 0x9A, 0xC0, 0xF2, +0x70, 0x9B, 0x49, 0xE0, 0x6D, 0xE0, 0x80, 0xA2, +0xA0, 0xA3, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF3, +0x70, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, 0x6D, 0xE0, +0xC0, 0xA3, 0x4C, 0xED, 0x4C, 0xEE, 0x00, 0x18, +0x20, 0x0F, 0x06, 0x95, 0x87, 0x40, 0x21, 0x4C, +0x22, 0x67, 0x00, 0x18, 0x2E, 0x12, 0x04, 0x92, +0x2E, 0x2A, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF3, 0x88, 0x9C, 0x30, 0xF0, +0x20, 0x6D, 0x20, 0xF3, 0x44, 0x9A, 0x00, 0xF3, +0xBC, 0x9D, 0x0D, 0x93, 0x91, 0xE0, 0x49, 0xE0, +0x31, 0xE4, 0xB5, 0xE0, 0xC0, 0xA3, 0xC0, 0xC2, +0xC0, 0xA3, 0x01, 0x4A, 0xAA, 0xEA, 0xC0, 0xC4, +0x01, 0x4B, 0x01, 0x4C, 0xF7, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x20, 0xF3, +0x40, 0x9A, 0x60, 0xF3, 0x88, 0x9C, 0x0C, 0x93, +0x49, 0xE0, 0x81, 0xE0, 0x29, 0xE2, 0x21, 0xE0, +0x80, 0xA3, 0x01, 0x4B, 0x80, 0xC2, 0x01, 0x4A, +0x0A, 0xEA, 0xFA, 0x61, 0x2D, 0x10, 0x04, 0x92, +0x01, 0x72, 0x2A, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF3, 0x84, 0x9B, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF3, 0x68, 0x9B, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF3, 0x14, 0x4A, 0x6D, 0xE0, 0x91, 0xE0, +0x2D, 0xE3, 0xA6, 0x42, 0xC0, 0xA2, 0xC0, 0xC4, +0xCA, 0xA2, 0x01, 0x4A, 0xAA, 0xEA, 0xC0, 0xC3, +0x01, 0x4C, 0x01, 0x4B, 0xF7, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x20, 0xF3, 0x60, 0x9B, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF3, 0x04, 0x4A, 0x61, 0xE0, +0x21, 0xE0, 0x64, 0x42, 0x80, 0xA2, 0x01, 0x4A, +0x6A, 0xEA, 0x80, 0xC0, 0x01, 0x48, 0xFA, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xC0, 0xF0, 0x7E, 0xA2, 0x02, 0x73, 0x05, 0x61, +0xE0, 0xF0, 0x86, 0xA2, 0xB1, 0x67, 0x00, 0x18, +0xB0, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF3, +0x6C, 0x9A, 0xFF, 0x6C, 0x10, 0x6D, 0x40, 0xA3, +0x34, 0x6E, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x05, 0x95, 0x00, 0x6C, 0x00, 0x18, +0xA6, 0x22, 0x00, 0x18, 0x0A, 0x1B, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x52, 0x91, 0x00, 0x6A, 0x7D, 0x67, 0x0E, 0xD4, +0x0F, 0xD5, 0x10, 0xD6, 0x11, 0xD7, 0x08, 0xD2, +0x52, 0xCB, 0x04, 0xD2, 0x05, 0xD2, 0x46, 0xA1, +0x08, 0x72, 0x74, 0x61, 0x47, 0xA1, 0x06, 0x72, +0x71, 0x61, 0x06, 0x00, 0x90, 0x67, 0x0A, 0x4D, +0x06, 0x6E, 0x00, 0x18, 0xAC, 0x19, 0x30, 0xF0, +0x20, 0x6D, 0x90, 0x67, 0xE4, 0xF1, 0x1F, 0x4D, +0x06, 0x6E, 0x00, 0x18, 0x51, 0x19, 0x01, 0x6B, +0x62, 0x2A, 0x05, 0x00, 0xA7, 0x41, 0x90, 0x67, +0x19, 0x4D, 0x04, 0x6E, 0x00, 0x18, 0xAC, 0x19, +0x30, 0xF0, 0x20, 0x6D, 0x90, 0x67, 0x24, 0xF3, +0x1A, 0x4D, 0x04, 0x6E, 0x00, 0x18, 0x51, 0x19, +0x41, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF3, +0x6C, 0x9A, 0xFF, 0x6D, 0x22, 0x6C, 0x40, 0xA3, +0x8B, 0xEC, 0xAC, 0xEA, 0x8C, 0xEA, 0x01, 0x6C, +0x8D, 0xEA, 0xAC, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0xC0, 0xF0, +0x79, 0xA2, 0x8C, 0xEB, 0xAC, 0xEB, 0x0A, 0x2B, +0xC0, 0xF0, 0x7E, 0xA2, 0x02, 0x73, 0x12, 0x61, +0xC0, 0xF0, 0xD8, 0xA2, 0x08, 0x6B, 0xCC, 0xEB, +0xAC, 0xEB, 0x0C, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF3, 0x74, 0x9B, 0x09, 0x6D, 0xA0, 0xC3, +0x63, 0xF3, 0x6C, 0xA2, 0x6D, 0xEC, 0x63, 0xF3, +0x8C, 0xC2, 0x22, 0x10, 0xA7, 0x41, 0x08, 0x04, +0x09, 0x4D, 0x06, 0x6E, 0x00, 0x18, 0xAC, 0x19, +0x04, 0x00, 0xA7, 0x41, 0x90, 0x67, 0x0F, 0x4D, +0x04, 0x6E, 0x00, 0x18, 0xAC, 0x19, 0x00, 0x6E, +0x90, 0x67, 0x08, 0x05, 0xE6, 0x67, 0x00, 0x18, +0x3B, 0x13, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF3, 0x6C, 0x9A, 0xFF, 0x6C, 0x32, 0x6D, +0x40, 0xA3, 0xAB, 0xED, 0x8C, 0xEA, 0xAC, 0xEA, +0x21, 0x6D, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, +0x01, 0x6B, 0x01, 0x10, 0x00, 0x6B, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x43, 0x67, 0x07, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xE4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF6, +0x0C, 0x4C, 0x80, 0xF0, 0xB8, 0xA4, 0x04, 0x6B, +0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEF, +0x07, 0x23, 0x00, 0x6C, 0xA4, 0x67, 0xC4, 0x67, +0x01, 0x6F, 0x00, 0x18, 0x3B, 0x13, 0x06, 0x10, +0x80, 0xF0, 0x92, 0xA4, 0x00, 0x6D, 0x08, 0x6E, +0x00, 0x18, 0x0F, 0x0C, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0x5C, 0x9A, +0x30, 0xF0, 0x20, 0x69, 0xE4, 0xF3, 0x00, 0x49, +0x60, 0xAA, 0xE1, 0xF7, 0x1F, 0x6A, 0x08, 0x6D, +0x6C, 0xEA, 0x41, 0xE4, 0x1C, 0x30, 0x90, 0x67, +0xD1, 0x67, 0x00, 0x18, 0xF3, 0x18, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF3, 0x58, 0x9A, 0xFF, 0x6B, +0x49, 0xE0, 0x40, 0xA2, 0x6C, 0xEA, 0xDD, 0x72, +0x80, 0xF0, 0x09, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x4C, 0x9A, 0x49, 0xE0, 0x80, 0xA2, +0x01, 0x6A, 0x6C, 0xEC, 0x8C, 0xEA, 0x0E, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF3, 0x74, 0x9A, +0x47, 0x41, 0x31, 0x4A, 0x6D, 0xE0, 0x41, 0x49, +0xA0, 0xA3, 0x01, 0x4B, 0xA0, 0xC2, 0x01, 0x4A, +0x2A, 0xEA, 0xFA, 0x61, 0x02, 0x6A, 0x8C, 0xEA, +0x6E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF3, +0x5C, 0x9A, 0x49, 0xE0, 0x60, 0xA2, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0x83, 0xF5, +0x64, 0xC2, 0x83, 0xF5, 0x64, 0xA2, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x40, 0x9A, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF3, 0x50, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, 0x08, 0x4B, +0x41, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF4, +0x00, 0x4A, 0x80, 0xA0, 0x80, 0xC2, 0x88, 0xA0, +0x88, 0xC2, 0x90, 0xA0, 0x90, 0xC2, 0x98, 0xA0, +0x01, 0x48, 0x98, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, +0xF4, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF4, +0x30, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x44, 0x9A, 0x2C, 0x31, 0x02, 0x49, 0x4D, 0xE9, +0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, +0x48, 0x9A, 0x2D, 0xE0, 0x60, 0xF6, 0x13, 0x6C, +0x60, 0xDA, 0x80, 0x6D, 0x06, 0x02, 0x00, 0x6E, +0x14, 0x6F, 0x04, 0xD2, 0x00, 0x18, 0x0F, 0x19, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x08, 0x34, 0x91, 0xE2, 0x63, 0xF5, 0x04, 0x4C, +0x60, 0xF6, 0x18, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, +0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, +0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, +0x68, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x6C, 0x9B, 0x6D, 0xE2, 0xA0, 0xA3, +0x01, 0x4A, 0xFF, 0x6B, 0xAC, 0xEB, 0x60, 0xF6, +0x1C, 0x72, 0x60, 0xC4, 0x01, 0x4C, 0xE6, 0x61, +0x01, 0x48, 0x04, 0x70, 0xCA, 0x61, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6C, +0xE4, 0xF1, 0x18, 0x4C, 0x00, 0x6D, 0x17, 0x6E, +0x00, 0x18, 0xA7, 0x19, 0x30, 0xF0, 0x20, 0x6C, +0x60, 0xF7, 0x03, 0x4C, 0x00, 0x6D, 0x07, 0x6E, +0x00, 0x18, 0xA7, 0x19, 0x30, 0xF0, 0x20, 0x6C, +0x40, 0xF7, 0x1C, 0x4C, 0x00, 0x6D, 0x07, 0x6E, +0x00, 0x18, 0xA7, 0x19, 0x00, 0x18, 0x02, 0x0F, +0x00, 0x18, 0xBE, 0x16, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x45, 0x29, 0x30, 0xF0, 0x20, 0x6C, +0x80, 0xF3, 0x90, 0x9C, 0x10, 0xF0, 0x20, 0x6B, +0x8A, 0xF1, 0x05, 0x4B, 0x01, 0x72, 0x60, 0xDC, +0x19, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, +0x0C, 0x4B, 0x63, 0xF3, 0xAC, 0xA3, 0x01, 0x6C, +0x02, 0x72, 0xAD, 0xEC, 0x63, 0xF3, 0x8C, 0xC3, +0x40, 0x6B, 0x03, 0x60, 0x04, 0x72, 0x06, 0x61, +0x41, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x54, 0x9A, 0x60, 0xC2, 0x01, 0x6C, 0x00, 0x18, +0xEA, 0x0F, 0x15, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0x90, 0x9A, 0x00, 0x18, 0x70, 0x29, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF2, 0x50, 0x9A, +0x40, 0xA2, 0xF4, 0x2A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x70, 0x9B, 0x10, 0xF0, 0x20, 0x6A, +0x8A, 0xF1, 0x06, 0x4A, 0x40, 0xDB, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, 0x4D, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF7, 0x91, 0xA2, +0x02, 0x24, 0x00, 0x18, 0xF7, 0x13, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x54, 0x9A, 0x00, 0x6B, +0xFF, 0x68, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x54, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x78, 0x9B, 0x40, 0x9A, 0xB0, 0x67, +0x35, 0x6E, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF3, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x7C, 0x9A, 0xFE, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x90, 0x67, 0x00, 0x18, +0xA6, 0x22, 0x00, 0x18, 0x51, 0x26, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF2, 0x74, 0x9A, 0x04, 0x6C, +0x40, 0xA3, 0x0C, 0xEA, 0x8D, 0xEA, 0x0C, 0xEA, +0x40, 0xC3, 0x00, 0x18, 0x61, 0x14, 0x00, 0x18, +0x0A, 0x26, 0x00, 0x6D, 0x90, 0x67, 0xC5, 0x67, +0x00, 0x18, 0xA6, 0x22, 0x00, 0x18, 0x8E, 0x0F, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0xA0, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, 0x54, 0x9A, +0x01, 0x6C, 0xA0, 0xDA, 0x00, 0x18, 0x6E, 0x04, +0x17, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0xA0, 0x9A, 0x01, 0x6C, 0x00, 0x18, 0x9F, 0x04, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF2, 0x74, 0x9A, +0xFB, 0x6A, 0x00, 0x6D, 0x80, 0xA3, 0x17, 0x6E, +0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x40, 0xC3, +0xE4, 0xF1, 0x18, 0x4C, 0x00, 0x18, 0xA7, 0x19, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, +0x60, 0xA4, 0xC0, 0xF0, 0x57, 0xA0, 0x02, 0x6E, +0x01, 0x69, 0xCB, 0xEE, 0x2C, 0xEB, 0xCC, 0xEA, +0x6D, 0xEA, 0xC0, 0xF0, 0x57, 0xC0, 0x60, 0xA4, +0x03, 0x6D, 0xAB, 0xED, 0x66, 0x33, 0x2C, 0xEB, +0x64, 0x33, 0xAC, 0xEA, 0x6D, 0xEA, 0xC0, 0xF0, +0x57, 0xC0, 0x60, 0xA4, 0xD5, 0xE5, 0xAC, 0xEA, +0x6A, 0x33, 0x2C, 0xEB, 0x68, 0x33, 0x6D, 0xEA, +0xC0, 0xF0, 0x57, 0xC0, 0x60, 0xA4, 0x09, 0x6F, +0xEB, 0xEF, 0x6E, 0x33, 0x2C, 0xEB, 0x6C, 0x33, +0xEC, 0xEA, 0x6D, 0xEA, 0xC0, 0xF0, 0x57, 0xC0, +0x60, 0xA4, 0x1D, 0x65, 0xF4, 0x4D, 0x72, 0x33, +0x2C, 0xEB, 0x70, 0x33, 0xAC, 0xEA, 0x6D, 0xEA, +0xC0, 0xF0, 0x57, 0xC0, 0x60, 0xA4, 0x76, 0x33, +0x2C, 0xEB, 0x74, 0x33, 0xFB, 0x65, 0x21, 0x6B, +0x6B, 0xEB, 0x4C, 0xEB, 0x5F, 0x67, 0x4D, 0xEB, +0xC0, 0xF0, 0x77, 0xC0, 0x40, 0xA4, 0x5A, 0x32, +0x2C, 0xEA, 0x58, 0x32, 0xFA, 0x65, 0x41, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x7F, 0x67, 0x6D, 0xEA, +0xC0, 0xF0, 0x57, 0xC0, 0x60, 0xA4, 0x7E, 0x33, +0x7C, 0x33, 0xFB, 0x65, 0x7F, 0x6B, 0x4C, 0xEB, +0x5F, 0x67, 0x4D, 0xEB, 0xC0, 0xF0, 0x77, 0xC0, +0x62, 0xA4, 0xC0, 0xF0, 0x59, 0xA0, 0x2C, 0xEB, +0xCC, 0xEA, 0x6D, 0xEA, 0xC0, 0xF0, 0x59, 0xC0, +0x61, 0xA4, 0xFB, 0x65, 0x7F, 0x67, 0x2C, 0xEB, +0xFB, 0x65, 0xC0, 0xF0, 0x78, 0xA0, 0x6C, 0xEE, +0x7F, 0x67, 0x6D, 0xEE, 0xC0, 0xF0, 0xD8, 0xC0, +0x61, 0xA4, 0x6A, 0x33, 0x2C, 0xEB, 0x68, 0x33, +0xFB, 0x65, 0x78, 0x67, 0x6C, 0xEE, 0x7F, 0x67, +0x6D, 0xEE, 0xC0, 0xF0, 0xD8, 0xC0, 0x61, 0xA4, +0xAC, 0xEE, 0x4C, 0xED, 0x72, 0x33, 0x2C, 0xEB, +0x70, 0x33, 0x6D, 0xEE, 0xC0, 0xF0, 0xD8, 0xC0, +0x61, 0xA4, 0xCC, 0xEF, 0x6E, 0x33, 0x2C, 0xEB, +0x6C, 0x33, 0x6D, 0xEF, 0xC0, 0xF0, 0xF8, 0xC0, +0x62, 0xA4, 0x72, 0x33, 0x2C, 0xEB, 0x70, 0x33, +0x6D, 0xED, 0xC0, 0xF0, 0xB9, 0xC0, 0x41, 0xA4, +0x03, 0x6D, 0xAB, 0xED, 0x46, 0x32, 0x2C, 0xEA, +0xAC, 0xEF, 0x44, 0x32, 0x4D, 0xEF, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x54, 0x9A, 0xC0, 0xF0, +0xF8, 0xC0, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, +0x78, 0x9B, 0x40, 0x9A, 0x6C, 0xEA, 0x02, 0xF5, +0x44, 0xD8, 0xC0, 0xF0, 0x97, 0xA0, 0x86, 0x34, +0x2C, 0xEC, 0x00, 0x18, 0x59, 0x0F, 0xC0, 0xF0, +0x97, 0xA0, 0x8A, 0x34, 0x2C, 0xEC, 0x00, 0x18, +0xC2, 0x11, 0xC0, 0xF0, 0x98, 0xA0, 0x08, 0x6A, +0xFF, 0x6B, 0x8C, 0xEA, 0x09, 0x22, 0xC0, 0xF0, +0xB7, 0xA0, 0x0E, 0x6A, 0x00, 0x6C, 0xAC, 0xEA, +0x6C, 0xEA, 0x07, 0x22, 0x91, 0x67, 0x05, 0x10, +0xC0, 0xF0, 0x97, 0xA0, 0x8E, 0x34, 0x2C, 0xEC, +0x6C, 0xEC, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, +0x0C, 0x48, 0x00, 0x18, 0xD4, 0x11, 0xC0, 0xF0, +0x97, 0xA0, 0x01, 0x69, 0x92, 0x34, 0x2C, 0xEC, +0x00, 0x18, 0xC9, 0x11, 0xC0, 0xF0, 0x97, 0xA0, +0x2C, 0xEC, 0x00, 0x18, 0x81, 0x14, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x04, 0x00, 0x0A, 0xD4, 0xAC, 0xE9, +0x90, 0x67, 0x00, 0x6D, 0x08, 0x6E, 0x00, 0x18, +0xA7, 0x19, 0x01, 0x6A, 0x2C, 0xEA, 0x0E, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xC0, 0xF0, 0x7E, 0xA2, 0x30, 0xF0, 0x20, 0x6D, +0x90, 0x67, 0x83, 0xF5, 0x65, 0xC2, 0x04, 0xF4, +0x18, 0x4D, 0x29, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0xC0, 0xF0, 0x7F, 0xA2, +0x83, 0xF5, 0x65, 0xC2, 0x83, 0xF5, 0x44, 0xA2, +0x01, 0x72, 0x0C, 0x60, 0x05, 0x22, 0x02, 0x72, +0x0F, 0x60, 0x03, 0x72, 0x13, 0x60, 0x1A, 0x10, +0x30, 0xF0, 0x20, 0x6D, 0x90, 0x67, 0x24, 0xF4, +0x00, 0x4D, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6D, +0x90, 0x67, 0x24, 0xF4, 0x08, 0x4D, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6D, 0x90, 0x67, 0x24, 0xF4, +0x10, 0x4D, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6D, +0x90, 0x67, 0x24, 0xF4, 0x18, 0x4D, 0x08, 0x6E, +0x00, 0x18, 0xAC, 0x19, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x83, 0xF5, 0xC5, 0xA2, +0x07, 0x5E, 0x46, 0x60, 0x83, 0xF5, 0x65, 0x82, +0x01, 0x6A, 0x44, 0xEB, 0x14, 0x6B, 0x4C, 0xEB, +0x08, 0x2B, 0x62, 0x6B, 0x4C, 0xEB, 0x3C, 0x23, +0x0A, 0x95, 0x04, 0x04, 0x00, 0x18, 0x95, 0x0C, +0x04, 0x10, 0x0A, 0x95, 0x04, 0x04, 0x00, 0x18, +0x78, 0x0C, 0x02, 0x67, 0x2B, 0x22, 0x01, 0x6A, +0x2C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6C, +0x04, 0xF4, 0x18, 0x4C, 0x1F, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF4, 0x50, 0xA2, 0x01, 0x72, +0x0B, 0x60, 0x05, 0x22, 0x02, 0x72, 0x0D, 0x60, +0x03, 0x72, 0x10, 0x60, 0x17, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x24, 0xF4, 0x00, 0x4C, 0x0E, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF4, 0x08, 0x4C, +0x09, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF4, +0x10, 0x4C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0x24, 0xF4, 0x18, 0x4C, 0x04, 0x05, 0x08, 0x6E, +0x00, 0x18, 0xAC, 0x19, 0x50, 0x67, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x01, 0x68, 0xCD, 0x17, 0xFD, 0x63, 0x05, 0x62, +0x40, 0xA4, 0x0C, 0x6B, 0x6C, 0xEA, 0x08, 0x72, +0x40, 0x61, 0x46, 0xA4, 0x88, 0x72, 0x3D, 0x61, +0x47, 0xA4, 0x8E, 0x72, 0x3A, 0x61, 0x49, 0xA4, +0x03, 0x72, 0x39, 0x61, 0x4E, 0xA4, 0x08, 0x6B, +0x6C, 0xEA, 0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x54, 0x9A, 0x01, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x21, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0xC0, 0xF0, 0xD7, 0xA2, 0xFF, 0x6D, +0x6C, 0xEE, 0x0C, 0x26, 0xC0, 0xF0, 0xDE, 0xA2, +0x02, 0x76, 0x05, 0x61, 0xC0, 0xF0, 0xD8, 0xA2, +0xCC, 0xEB, 0xAC, 0xEB, 0x09, 0x23, 0x00, 0x18, +0x76, 0x0E, 0x15, 0x10, 0xC0, 0xF0, 0x90, 0xA2, +0x40, 0x6B, 0x8C, 0xEB, 0xAC, 0xEB, 0x0F, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x74, 0x9B, +0x02, 0x6C, 0x80, 0xC3, 0x63, 0xF3, 0x8C, 0xA2, +0x01, 0x6B, 0x8D, 0xEB, 0x63, 0xF3, 0x6C, 0xC2, +0x02, 0x10, 0x00, 0x6A, 0x01, 0x10, 0x01, 0x6A, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xD5, 0x63, 0x55, 0x62, 0x54, 0xD1, 0x53, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, +0x10, 0xF0, 0x20, 0x6A, 0x6A, 0xF6, 0x11, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x44, 0x9A, 0x40, 0x9A, 0x48, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x58, 0x9A, 0x48, 0x93, +0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF2, +0x50, 0x9A, 0x48, 0xD3, 0xFF, 0x6B, 0x40, 0xA2, +0x82, 0x67, 0x6C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, +0x4F, 0xD4, 0x60, 0xF7, 0x83, 0xA2, 0x01, 0x6A, +0x8C, 0xEA, 0x6C, 0xEA, 0xC0, 0xF1, 0x07, 0x22, +0x00, 0x6A, 0x4C, 0xD2, 0x62, 0x67, 0xB1, 0x11, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0xC8, 0x9A, +0x02, 0xF5, 0xE4, 0x98, 0x48, 0x94, 0x30, 0xF0, +0x20, 0x6D, 0x24, 0xF0, 0x10, 0x4D, 0x00, 0x18, +0x4F, 0x22, 0xA3, 0xF1, 0x64, 0x98, 0x03, 0x6A, +0x83, 0xA3, 0xA2, 0xA3, 0x8C, 0xEA, 0x87, 0x42, +0x0F, 0x6A, 0xAC, 0xEA, 0x11, 0x4C, 0x4C, 0x32, +0x49, 0xE4, 0x48, 0x94, 0x4D, 0xD2, 0x51, 0xE4, +0x49, 0xD4, 0x40, 0xA3, 0x61, 0xA3, 0x3F, 0x6C, +0x8C, 0xEB, 0x60, 0x33, 0x4D, 0xEB, 0x49, 0x94, +0xA3, 0xF1, 0x48, 0x98, 0x4B, 0xD3, 0x20, 0xA2, +0x00, 0x18, 0x03, 0x19, 0x49, 0x94, 0x4E, 0xD2, +0x01, 0x4C, 0x00, 0x18, 0x03, 0x19, 0x49, 0x94, +0x50, 0xD2, 0x04, 0x4C, 0x00, 0x18, 0x03, 0x19, +0x4E, 0x94, 0x50, 0x95, 0xC2, 0x67, 0x00, 0x18, +0x20, 0x0F, 0x4E, 0xD2, 0x4B, 0x93, 0x4D, 0x92, +0x71, 0xE2, 0x00, 0x18, 0x5D, 0x29, 0x4D, 0xD2, +0xA6, 0xF3, 0x50, 0xA0, 0x1C, 0x22, 0x50, 0x71, +0x0A, 0x60, 0x80, 0x71, 0x00, 0xF1, 0x09, 0x61, +0xE0, 0xF0, 0x7A, 0xA0, 0x01, 0x6A, 0xFF, 0x6C, +0x6C, 0xEA, 0x8C, 0xEA, 0x06, 0x10, 0xE0, 0xF0, +0x7A, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0xE0, 0xF0, 0x1A, 0x22, 0x4B, 0x95, +0x49, 0x94, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xED, +0x00, 0x18, 0x3A, 0x2A, 0xF2, 0x10, 0x88, 0x71, +0x2D, 0x60, 0x89, 0x59, 0x03, 0x60, 0x08, 0x71, +0x29, 0x60, 0xEB, 0x10, 0xA0, 0x71, 0x03, 0x60, +0xC0, 0x71, 0xE0, 0xF0, 0x06, 0x61, 0x30, 0xF0, +0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, 0xC0, 0xF0, +0x70, 0xA0, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0xC0, 0xF0, 0x19, 0x22, +0x63, 0xF3, 0x59, 0xA0, 0x01, 0x4A, 0x63, 0xF3, +0x59, 0xC0, 0xA3, 0xF1, 0x44, 0x98, 0x87, 0xA2, +0x01, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, 0xC0, 0xF0, +0x0C, 0x22, 0x91, 0x67, 0x00, 0x18, 0xF7, 0x0E, +0x63, 0xF3, 0x5A, 0xA0, 0x01, 0x4A, 0x63, 0xF3, +0x5A, 0xC0, 0xC3, 0x10, 0x49, 0x91, 0x46, 0x00, +0x04, 0x49, 0x91, 0x67, 0x00, 0x18, 0x03, 0x19, +0x82, 0x67, 0x00, 0x18, 0x10, 0x0F, 0x49, 0x93, +0x4E, 0x95, 0xFF, 0xF7, 0x1F, 0x6C, 0x6C, 0xEC, +0xC2, 0x67, 0xF0, 0x67, 0x00, 0x18, 0x9F, 0x10, +0x91, 0x67, 0x00, 0x18, 0x03, 0x19, 0xA2, 0x67, +0x90, 0x67, 0x00, 0x6E, 0x00, 0x18, 0x28, 0x15, +0xA0, 0xF0, 0x07, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0xA3, 0xF1, 0x64, 0x9A, +0x87, 0xA3, 0x01, 0x6B, 0x8C, 0xEB, 0x07, 0x23, +0xA3, 0xF2, 0x94, 0x9A, 0x00, 0x18, 0x75, 0x15, +0x02, 0x22, 0x01, 0x6C, 0x4C, 0xD4, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0xC0, 0xF0, +0x97, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, 0x1A, 0x23, +0x00, 0x6B, 0x04, 0x05, 0xB3, 0xF1, 0x84, 0x42, +0x05, 0x10, 0x7D, 0xE4, 0xE0, 0xA7, 0x79, 0xE5, +0x01, 0x4B, 0xE0, 0xC6, 0x00, 0xF1, 0x04, 0x5B, +0xF8, 0x61, 0xA3, 0xF1, 0x84, 0x9A, 0xA3, 0xF1, +0xA8, 0x9A, 0xA3, 0xF1, 0xCC, 0x9A, 0xA3, 0xF1, +0xF0, 0x9A, 0x00, 0x18, 0xA0, 0x13, 0x02, 0x22, +0x01, 0x6A, 0x4C, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0xC0, 0xF0, 0x97, 0xA2, +0x04, 0x6B, 0x8C, 0xEB, 0x07, 0x23, 0xA3, 0xF2, +0x94, 0x9A, 0x00, 0x18, 0xCC, 0x12, 0x02, 0x22, +0x01, 0x6B, 0x4C, 0xD3, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0xC0, 0xF0, 0x97, 0xA2, +0x80, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xFF, 0x6C, +0x8C, 0xEB, 0x2A, 0x23, 0x4C, 0x94, 0x28, 0x2C, +0x00, 0x6B, 0x04, 0x05, 0xB3, 0xF1, 0x84, 0x42, +0x05, 0x10, 0x7D, 0xE4, 0xE0, 0xA7, 0x79, 0xE5, +0x01, 0x4B, 0xE0, 0xC6, 0x00, 0xF1, 0x04, 0x5B, +0xF8, 0x61, 0xA3, 0xF1, 0x84, 0x9A, 0xA3, 0xF1, +0xA8, 0x9A, 0xA3, 0xF1, 0xCC, 0x9A, 0xA3, 0xF1, +0xF0, 0x9A, 0x00, 0x18, 0x03, 0x12, 0x10, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x54, 0x9A, +0x22, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x63, 0xF3, 0x8C, 0xA2, +0x01, 0x6B, 0x8D, 0xEB, 0x63, 0xF3, 0x6C, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x00, 0x6B, 0x04, 0x05, 0xB3, 0xF1, 0x84, 0x42, +0x05, 0x10, 0x7D, 0xE4, 0xE0, 0xA7, 0x79, 0xE5, +0x01, 0x4B, 0xE0, 0xC6, 0x00, 0xF1, 0x04, 0x5B, +0xF8, 0x61, 0xA3, 0xF1, 0x84, 0x9A, 0xA3, 0xF1, +0xA8, 0x9A, 0xA3, 0xF1, 0xCC, 0x9A, 0xA3, 0xF1, +0xF0, 0x9A, 0x00, 0x18, 0x0E, 0x12, 0x11, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x54, 0x9A, +0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x63, 0xF3, 0x8C, 0xA2, +0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x63, 0xF3, +0x6C, 0xC2, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, +0x0C, 0x48, 0xA3, 0xF1, 0x84, 0x98, 0x01, 0x6D, +0x00, 0x18, 0x60, 0x0F, 0x0B, 0x22, 0x63, 0xF3, +0x6C, 0xA0, 0x01, 0x6A, 0x6D, 0xEA, 0x63, 0xF3, +0x4C, 0xC0, 0xA3, 0xF1, 0x44, 0x98, 0x50, 0xA2, +0x83, 0xF5, 0x46, 0xC0, 0x48, 0x92, 0x4D, 0x93, +0x69, 0xE2, 0x48, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0x50, 0x9A, 0x48, 0x94, 0x83, 0xEA, +0x03, 0x60, 0x4F, 0xEA, 0x51, 0xE4, 0x48, 0xD4, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x78, 0xA2, +0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, +0x00, 0x18, 0xEA, 0x0F, 0x00, 0x18, 0x08, 0x0F, +0x01, 0x72, 0x32, 0x61, 0x30, 0xF0, 0x20, 0x68, +0x80, 0xF6, 0x0C, 0x48, 0x63, 0xF3, 0x5B, 0xA0, +0x01, 0x4A, 0x63, 0xF3, 0x5B, 0xC0, 0x00, 0x18, +0x45, 0x29, 0x01, 0x72, 0x15, 0x60, 0x63, 0xF3, +0x8C, 0xA0, 0x01, 0x6B, 0x02, 0x72, 0x8D, 0xEB, +0x63, 0xF3, 0x6C, 0xC0, 0x42, 0x6B, 0x03, 0x60, +0x04, 0x72, 0x06, 0x61, 0x43, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x54, 0x9A, 0x60, 0xC2, +0x01, 0x6C, 0x00, 0x18, 0xEA, 0x0F, 0x1B, 0x10, +0x48, 0x94, 0x00, 0x18, 0x4D, 0x29, 0x4A, 0x92, +0x01, 0x4A, 0x4A, 0xD2, 0x4A, 0x93, 0xFF, 0x6A, +0x4C, 0xEB, 0x4A, 0xD3, 0x4A, 0x94, 0x4F, 0x92, +0x43, 0xEC, 0x5F, 0xF6, 0x09, 0x61, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xC0, 0xF0, 0x97, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xC0, 0xF0, 0x77, 0xC2, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, 0x10, 0xF0, +0x20, 0x6A, 0x6A, 0xF6, 0x12, 0x4A, 0x40, 0xDB, +0x55, 0x97, 0x54, 0x91, 0x53, 0x90, 0x2B, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x80, 0xF6, 0x0C, 0x48, 0x24, 0x67, 0x80, 0xF0, +0x98, 0xA0, 0x01, 0x6B, 0xFF, 0x6A, 0x8C, 0xEB, +0x4C, 0xEB, 0x4C, 0xE9, 0x2B, 0x23, 0xC0, 0xF0, +0x8A, 0xA0, 0x00, 0x18, 0xF4, 0x05, 0x01, 0x72, +0x25, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF6, +0x79, 0xA2, 0x0A, 0x6C, 0x01, 0x4B, 0x60, 0xF6, +0x79, 0xC2, 0x60, 0xF6, 0x79, 0xA2, 0x8E, 0xEB, +0x07, 0x2B, 0xE3, 0xF7, 0x9D, 0xA0, 0x60, 0xF6, +0x79, 0xC2, 0x01, 0x4C, 0xE3, 0xF7, 0x9D, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x80, 0xF0, 0x99, 0xA2, 0xE3, 0xF7, 0x7D, 0xA2, +0x83, 0xEB, 0x08, 0x61, 0xE3, 0xF7, 0x7E, 0xA2, +0x05, 0x2B, 0xE3, 0xF7, 0x7D, 0xC2, 0x91, 0x67, +0x00, 0x18, 0xE7, 0x13, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xC0, 0xF0, 0x97, 0xA2, 0x11, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xC0, 0xF0, 0x77, 0xC2, 0x00, 0x6B, +0xA3, 0xF5, 0x74, 0xC2, 0xA3, 0xF5, 0x75, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0xF5, 0x63, 0x15, 0x62, +0x14, 0xD1, 0x13, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xED, 0xE5, 0x67, 0x0F, 0xD5, 0xDC, 0x4F, +0x00, 0x6D, 0x16, 0xD4, 0xC5, 0x67, 0x24, 0x4C, +0x4C, 0xEF, 0x00, 0x18, 0x1E, 0x2A, 0x02, 0x67, +0x81, 0x42, 0x00, 0x6A, 0x0E, 0xD2, 0x13, 0x24, +0x00, 0x18, 0x03, 0x19, 0x0E, 0xD2, 0x02, 0x48, +0x00, 0x69, 0x08, 0x10, 0x90, 0x67, 0x00, 0x18, +0x03, 0x19, 0x9D, 0x67, 0x2D, 0xE4, 0x50, 0xC3, +0x01, 0x49, 0x01, 0x48, 0x0E, 0x93, 0xFF, 0x6A, +0x2C, 0xEA, 0x63, 0xEA, 0xF3, 0x61, 0x0F, 0x91, +0x16, 0x94, 0xFF, 0xF7, 0x1F, 0x6A, 0xDC, 0x49, +0x4C, 0xE9, 0x24, 0x4C, 0x00, 0x6D, 0x03, 0x6E, +0xF1, 0x67, 0x0D, 0xD4, 0x00, 0x18, 0x1E, 0x2A, +0x16, 0x94, 0x00, 0x68, 0x22, 0x4C, 0x00, 0x18, +0x03, 0x19, 0x10, 0x6B, 0x4C, 0xEB, 0x54, 0x23, +0x0D, 0x94, 0xB0, 0x67, 0xF1, 0x67, 0x30, 0x6E, +0x00, 0x18, 0x1E, 0x2A, 0x22, 0x67, 0x01, 0x4A, +0x01, 0x68, 0x1E, 0x22, 0x87, 0x41, 0x01, 0x4C, +0x00, 0x18, 0x03, 0x19, 0x0D, 0x49, 0x0D, 0xD1, +0x10, 0xD2, 0x00, 0x69, 0x12, 0x10, 0x0D, 0x94, +0x00, 0x18, 0x03, 0x19, 0x02, 0x72, 0x02, 0x61, +0x20, 0x48, 0x03, 0x10, 0x04, 0x72, 0x03, 0x61, +0x40, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0xFF, 0x6A, +0x01, 0x49, 0x4C, 0xE9, 0x0D, 0x92, 0x04, 0x4A, +0x0D, 0xD2, 0x10, 0x93, 0x63, 0xE9, 0xEB, 0x61, +0x0F, 0x92, 0x16, 0x94, 0xFF, 0xF7, 0x1F, 0x6F, +0xDC, 0x4A, 0x24, 0x4C, 0x01, 0x6D, 0xDD, 0x6E, +0x4C, 0xEF, 0x00, 0x18, 0x1E, 0x2A, 0x22, 0x67, +0x01, 0x4A, 0x1E, 0x22, 0x87, 0x41, 0x05, 0x4C, +0x00, 0x18, 0x03, 0x19, 0x11, 0x49, 0x0C, 0xD1, +0x0D, 0xD2, 0x00, 0x69, 0x12, 0x10, 0x0C, 0x94, +0x00, 0x18, 0x03, 0x19, 0x02, 0x72, 0x02, 0x61, +0x02, 0x48, 0x03, 0x10, 0x04, 0x72, 0x03, 0x61, +0x04, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x0C, 0x94, +0x01, 0x49, 0xFF, 0x6A, 0x04, 0x4C, 0x4C, 0xE9, +0x0C, 0xD4, 0x0D, 0x92, 0x43, 0xE9, 0xEB, 0x61, +0x00, 0x69, 0x2A, 0x10, 0x49, 0xE1, 0xC3, 0xF5, +0x64, 0xA2, 0x0E, 0x94, 0x8E, 0xEB, 0x21, 0x2B, +0xC3, 0xF5, 0x54, 0xA2, 0x01, 0x2A, 0x09, 0x20, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x49, 0xE1, 0xC3, 0xF5, 0x54, 0xA2, 0x0C, 0xEA, +0x14, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x0E, 0x96, +0x34, 0x35, 0x84, 0xF4, 0x08, 0x4A, 0x04, 0x04, +0xB5, 0xE2, 0x00, 0x18, 0x51, 0x19, 0x09, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x54, 0x9A, +0x55, 0x6B, 0x01, 0x6C, 0x60, 0xC2, 0x00, 0x18, +0xEA, 0x0F, 0x01, 0x49, 0xFF, 0x6A, 0x4C, 0xE9, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xA3, 0xF5, 0x74, 0xA2, 0x63, 0xE9, 0xCE, 0x61, +0x15, 0x97, 0x14, 0x91, 0x13, 0x90, 0x0B, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x5C, 0x9A, 0xE1, 0xF7, 0x1F, 0x6C, +0x30, 0xF0, 0x20, 0x6E, 0x40, 0xAA, 0xE0, 0xF2, +0xDC, 0x9E, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0xE0, 0xF0, 0x7B, 0xA2, +0x6D, 0xE4, 0x7C, 0x33, 0xA7, 0x43, 0x21, 0x4D, +0xD9, 0xE5, 0xC0, 0xA6, 0xE7, 0x43, 0x25, 0x4F, +0xA3, 0xF5, 0xD4, 0xC2, 0x30, 0xF0, 0x20, 0x6E, +0x00, 0xF3, 0xC0, 0x9E, 0xD5, 0xE5, 0xA0, 0xA5, +0xFF, 0x6E, 0xA3, 0xF5, 0xB5, 0xC2, 0xA3, 0xF5, +0x54, 0xA2, 0x0A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0xB0, 0x9A, 0x01, 0x68, 0x40, 0xA5, +0xCC, 0xEA, 0x0D, 0xEA, 0xCC, 0xEA, 0x40, 0xC5, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x5C, 0x9A, +0x30, 0xF0, 0x20, 0x6D, 0x49, 0xE7, 0x40, 0x9A, +0x44, 0xF4, 0x44, 0xDD, 0x30, 0xF0, 0x20, 0x6D, +0xA0, 0xF3, 0xB4, 0x9D, 0xAE, 0xEA, 0x0B, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0xB0, 0x9A, +0xFF, 0x6E, 0x02, 0x6F, 0x40, 0xA5, 0xCC, 0xEA, +0xED, 0xEA, 0xCC, 0xEA, 0x40, 0xC5, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF3, 0xA4, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF4, 0x10, 0x4A, 0xC7, 0x42, +0xB5, 0xE3, 0x09, 0x4E, 0xE0, 0xA5, 0x01, 0x4D, +0xE0, 0xC2, 0x01, 0x4A, 0xCA, 0xEA, 0xFA, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, 0xA0, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF4, 0x00, 0x4A, +0xC7, 0x42, 0xB5, 0xE3, 0x09, 0x4E, 0xE0, 0xA5, +0x01, 0x4D, 0xE0, 0xC2, 0x01, 0x4A, 0xCA, 0xEA, +0xFA, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x4C, 0x9A, 0x4D, 0xE3, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF4, 0x00, 0x4A, 0xA7, 0x42, 0x01, 0x4D, +0xC0, 0xA3, 0x01, 0x4B, 0xC0, 0xC2, 0x01, 0x4A, +0xAA, 0xEA, 0xFA, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF7, 0x27, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF2, 0x5C, 0x9A, 0x01, 0x49, 0x85, 0xE1, +0x3C, 0x31, 0x45, 0xE1, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x68, 0x84, 0xF6, 0x08, 0x4A, +0x84, 0xF4, 0x08, 0x48, 0x06, 0xD2, 0x40, 0xA1, +0x7D, 0x67, 0x90, 0x67, 0x50, 0xC3, 0x04, 0x05, +0x20, 0x6E, 0x00, 0x18, 0xAC, 0x19, 0x06, 0x92, +0x20, 0x48, 0x20, 0x49, 0x4A, 0xE8, 0xF3, 0x61, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF7, +0x06, 0x4C, 0x07, 0x6E, 0x00, 0x18, 0xAC, 0x19, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x58, 0x9A, +0xFF, 0x6B, 0x80, 0xA2, 0x00, 0xF6, 0x80, 0x34, +0x00, 0xF6, 0x83, 0x34, 0x00, 0x54, 0x24, 0x60, +0xA0, 0xA2, 0x7F, 0x6C, 0xAC, 0xEC, 0x80, 0xC2, +0x80, 0xA2, 0x40, 0x6D, 0x6C, 0xEC, 0xAD, 0xEC, +0x6C, 0xEC, 0x80, 0xC2, 0x80, 0xA2, 0x30, 0xF0, +0x20, 0x6C, 0x20, 0xF2, 0x80, 0x9C, 0x3F, 0x6D, +0x80, 0xA4, 0x30, 0xF0, 0x20, 0x6C, 0x20, 0xF2, +0x84, 0x9C, 0x80, 0xA4, 0x30, 0xF0, 0x20, 0x6C, +0xA0, 0xF3, 0x9C, 0x9C, 0x80, 0xA4, 0x80, 0xA2, +0x6C, 0xEC, 0xAD, 0xEC, 0x6C, 0xEC, 0x80, 0xC2, +0x80, 0xA2, 0xBF, 0x6B, 0x8C, 0xEB, 0x60, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0x0E, 0x90, 0x24, 0x67, 0x4C, 0xE9, 0x03, 0x6B, +0x4C, 0xEF, 0x2C, 0xEB, 0x00, 0x6A, 0x0B, 0xD5, +0x0C, 0xD6, 0x04, 0xD7, 0x40, 0xC8, 0x00, 0x6A, +0x07, 0x23, 0x25, 0x10, 0x0A, 0x6C, 0x00, 0x18, +0x9B, 0x19, 0x40, 0xA8, 0x01, 0x4A, 0x40, 0xC8, +0x1F, 0xF7, 0x00, 0x6A, 0x2C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x49, 0xE1, 0x0B, 0x93, 0x40, 0x9A, 0x6C, 0xEA, +0x0C, 0x93, 0x6E, 0xEA, 0x04, 0x22, 0x40, 0xA8, +0x04, 0x93, 0x63, 0xEA, 0xDF, 0x61, 0x40, 0xA8, +0x04, 0x93, 0x63, 0xEA, 0x58, 0x67, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFF, 0x6A, 0xA0, 0x35, 0x4C, 0xEC, 0xA0, 0x35, +0xCC, 0xEA, 0x4D, 0xED, 0x05, 0x2C, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x88, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x6C, 0x9B, +0xAD, 0xEA, 0x40, 0xDC, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x50, 0x9A, 0x60, 0xDC, +0x00, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0xFF, 0xF7, 0x1F, 0x6B, 0x8C, 0xEA, +0xAC, 0xEB, 0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF2, 0x58, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x44, 0x9A, 0x60, 0x33, +0x60, 0x33, 0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x48, 0x9A, 0x00, 0x6C, 0x60, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x54, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x70, 0x9B, +0x40, 0xA2, 0x80, 0xC3, 0xFF, 0x6B, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x78, 0x9B, 0xFF, 0x6A, 0xCC, 0xEA, +0x6D, 0xEA, 0xE0, 0xF1, 0x1F, 0x6B, 0xAC, 0xEB, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, 0x88, 0x9C, +0x60, 0x33, 0x60, 0x33, 0x6D, 0xEA, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF2, 0x50, 0x9A, +0x6D, 0xEA, 0x40, 0xDC, 0x20, 0xE8, 0x00, 0x65, +0xE0, 0xF1, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF2, 0x70, 0x9B, 0xAC, 0xEA, 0x40, 0x32, +0x40, 0x32, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x54, 0x9A, 0xFF, 0x6B, +0x40, 0xA2, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x5C, 0x9A, +0x40, 0xAA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x5C, 0x9A, 0x40, 0xAA, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x04, 0xF7, +0x10, 0x68, 0x10, 0x10, 0x05, 0x6C, 0xFF, 0x48, +0x00, 0x18, 0x9B, 0x19, 0x0B, 0x28, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF3, 0x60, 0x9A, 0x08, 0xF0, +0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x00, 0x6A, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x5C, 0x9A, 0x60, 0xAA, 0x3F, 0x6A, +0x6C, 0xEA, 0xE8, 0x2A, 0x01, 0x6A, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x01, 0x68, 0x04, 0xEC, 0x82, 0xF3, 0x08, 0x69, +0x10, 0x10, 0x01, 0x6C, 0xFF, 0x49, 0x00, 0x18, +0x9B, 0x19, 0x0B, 0x29, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0x60, 0x9A, 0x08, 0xF0, 0x00, 0x6C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x00, 0x6A, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x5C, 0x9A, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, +0x6C, 0xEA, 0x0C, 0xEA, 0xE6, 0x2A, 0x01, 0x6A, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x0E, 0x92, 0x04, 0x67, +0x0F, 0x91, 0x04, 0xD2, 0x04, 0x93, 0xFF, 0x6A, +0x4C, 0xE8, 0x4C, 0xEB, 0x90, 0x67, 0x0B, 0xD5, +0x0C, 0xD6, 0x0D, 0xD7, 0x04, 0xD3, 0x4C, 0xE9, +0x00, 0x18, 0x18, 0x18, 0x80, 0xF0, 0x07, 0x22, +0x06, 0x58, 0x80, 0xF0, 0x04, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0x30, 0xC0, 0xF0, 0x10, 0x4A, +0x09, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x02, 0xF2, +0x10, 0x6A, 0x0E, 0x10, 0x02, 0xF2, 0x00, 0x6A, +0x0B, 0x10, 0x22, 0xF2, 0x00, 0x6A, 0x08, 0x10, +0x22, 0xF2, 0x10, 0x6A, 0x05, 0x10, 0x42, 0xF2, +0x00, 0x6A, 0x02, 0x10, 0x42, 0xF2, 0x10, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x0D, 0x94, 0x80, 0xF3, +0x78, 0x9B, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0x80, 0xF3, 0x84, 0x9C, 0x8D, 0xEB, 0x06, 0x21, +0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF3, 0x84, 0x9C, +0x6D, 0xEC, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0xE0, 0xF3, 0x88, 0x9C, 0x6C, 0xEC, 0x04, 0x96, +0x06, 0x26, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF2, +0x70, 0x9B, 0x8D, 0xEB, 0x05, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xE0, 0xF3, 0x6C, 0x9B, 0x8C, 0xEB, +0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, +0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, +0x20, 0x6C, 0x80, 0xF3, 0xA8, 0x9C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF3, 0xAC, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0x0B, 0x96, 0xE0, 0xF3, +0x90, 0x9C, 0xB5, 0xE2, 0xCC, 0xEC, 0x80, 0xDD, +0x84, 0x42, 0x1F, 0xF7, 0x00, 0x6D, 0xAC, 0xEC, +0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF3, 0xB4, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF3, +0xB8, 0x9C, 0x30, 0xF0, 0x20, 0x6C, 0x0C, 0x96, +0xE0, 0xF3, 0x90, 0x9C, 0xB5, 0xE2, 0xCC, 0xEC, +0x80, 0xDD, 0x87, 0x42, 0x01, 0x4C, 0x1F, 0xF7, +0x00, 0x6D, 0xAC, 0xEC, 0x02, 0xF0, 0x00, 0x74, +0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, +0xE0, 0xF3, 0x9C, 0x9C, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x00, 0xF4, 0x80, 0x9C, 0x89, 0xE2, +0x60, 0xDA, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x00, 0x68, 0x01, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, 0x4E, 0xE8, +0x10, 0xF0, 0x20, 0x6A, 0xEC, 0xF1, 0x1D, 0x4A, +0x09, 0xE2, 0x40, 0xDB, 0x00, 0x18, 0xE9, 0x05, +0x00, 0x18, 0x8A, 0x17, 0x00, 0x18, 0xE8, 0x05, +0x00, 0x18, 0xE9, 0x05, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x80, 0xF0, 0x8C, 0x9A, +0x02, 0x6B, 0x8C, 0xEB, 0x07, 0x23, 0x03, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x80, 0xF0, 0x6C, 0xDA, +0x00, 0x18, 0x8B, 0x1C, 0x00, 0x18, 0xE8, 0x05, +0x00, 0x18, 0xE9, 0x05, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x80, 0xF0, 0x8C, 0x9A, +0x04, 0x6B, 0x8C, 0xEB, 0x09, 0x23, 0x05, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x80, 0xF0, 0x6C, 0xDA, +0x00, 0x18, 0xEF, 0x1A, 0x00, 0x18, 0xAA, 0x1A, +0x00, 0x18, 0xE8, 0x05, 0x00, 0x18, 0xE9, 0x05, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xA0, 0xF0, 0x8D, 0xA2, 0x7F, 0x6B, 0x8C, 0xEB, +0x09, 0x23, 0xA0, 0xF0, 0x71, 0xA2, 0xE3, 0xF2, +0x53, 0xA2, 0x6E, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0x42, 0x09, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF7, 0x58, 0x9A, 0x02, 0x2A, 0x00, 0x18, +0x10, 0x08, 0x00, 0x18, 0xE8, 0x05, 0x00, 0x18, +0xE9, 0x05, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x80, 0xF0, 0x8C, 0x9A, 0x08, 0x6B, +0x8C, 0xEB, 0x07, 0x23, 0x09, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x80, 0xF0, 0x6C, 0xDA, 0x00, 0x18, +0x9C, 0x15, 0x00, 0x18, 0xE8, 0x05, 0x00, 0x18, +0xE9, 0x05, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x80, 0xF0, 0x8C, 0x9A, 0x02, 0xF0, +0x00, 0x6B, 0x8C, 0xEB, 0x08, 0x23, 0x02, 0xF0, +0x01, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x80, 0xF0, +0x6C, 0xDA, 0x00, 0x18, 0xE8, 0x23, 0x00, 0x18, +0xE8, 0x05, 0x7C, 0x17, 0x00, 0x6A, 0x64, 0x67, +0x66, 0xEA, 0x01, 0x6D, 0xAC, 0xEB, 0x04, 0x2B, +0x01, 0x4A, 0x20, 0x72, 0xF8, 0x61, 0x20, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x25, 0x67, 0x49, 0xE4, +0x00, 0x9A, 0x85, 0x67, 0x00, 0x18, 0xC3, 0x18, +0x2C, 0xE8, 0x06, 0xEA, 0x50, 0x67, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x41, 0x45, 0x05, 0x67, 0x0C, 0xD6, 0x13, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x2C, 0x9A, +0x0F, 0xE8, 0x25, 0xE4, 0x40, 0x99, 0x85, 0x67, +0x04, 0xD2, 0x00, 0x18, 0xC3, 0x18, 0x0C, 0x93, +0x64, 0xEA, 0x43, 0x67, 0x04, 0x93, 0x6C, 0xE8, +0x0D, 0xEA, 0x40, 0xD9, 0x07, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x2C, 0x9A, 0x0C, 0x92, +0x31, 0xE4, 0x40, 0xDC, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x41, 0x45, 0x0C, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0xAF, 0xEB, 0xCC, 0xED, +0x51, 0xE4, 0x40, 0x9C, 0x6C, 0xEA, 0xAD, 0xEA, +0x40, 0xDC, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x51, 0xE4, 0xC0, 0xDC, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF2, 0x7C, 0x9B, 0xFF, 0x6A, 0xAC, 0xEA, +0x6D, 0xE4, 0x49, 0xE6, 0x04, 0x10, 0x80, 0xA3, +0x01, 0x4B, 0x80, 0xC6, 0x01, 0x4E, 0x4A, 0xEE, +0xFA, 0x61, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF2, 0x7C, 0x9B, 0xFF, 0x6A, 0xAC, 0xEA, +0x6D, 0xE4, 0x49, 0xE6, 0x04, 0x10, 0x80, 0xA6, +0x01, 0x4E, 0x80, 0xC3, 0x01, 0x4B, 0x4A, 0xEE, +0xFA, 0x61, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x54, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x78, 0x9B, 0x40, 0x9A, 0x6C, 0xEA, +0x83, 0xEA, 0x02, 0x60, 0x4F, 0xEA, 0x51, 0xE4, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x54, 0x9A, +0xFF, 0x6B, 0x51, 0xE4, 0x40, 0xA4, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0xFF, 0xF7, +0x1F, 0x6B, 0x4C, 0xED, 0x4C, 0xEE, 0x24, 0x67, +0x6C, 0xEF, 0x10, 0x90, 0x6C, 0xE9, 0x05, 0xD5, +0x06, 0xD6, 0x04, 0xD7, 0x00, 0x6A, 0x05, 0x10, +0x0A, 0x6C, 0x00, 0x18, 0x9B, 0x19, 0x40, 0xA8, +0x01, 0x4A, 0x40, 0xC8, 0x1F, 0xF7, 0x00, 0x6A, +0x2C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x48, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x49, 0xE1, 0x60, 0xA2, +0xFF, 0x6A, 0x6C, 0xEA, 0x05, 0x93, 0x6C, 0xEA, +0x06, 0x93, 0x6E, 0xEA, 0x04, 0x22, 0x40, 0xA8, +0x04, 0x93, 0x63, 0xEA, 0xDD, 0x61, 0x40, 0xA8, +0x04, 0x93, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x63, 0xEA, 0x58, 0x67, 0x06, 0x63, 0x00, 0xEF, +0x03, 0x6F, 0x8C, 0xEF, 0x64, 0x67, 0x46, 0x67, +0x04, 0x27, 0x0B, 0x10, 0xA0, 0xDB, 0xFC, 0x4A, +0x04, 0x4B, 0x04, 0x5A, 0xFB, 0x60, 0x03, 0x6A, +0x4C, 0xEE, 0x03, 0x10, 0xA0, 0xC4, 0xFF, 0x4E, +0x01, 0x4C, 0xFC, 0x2E, 0x00, 0x6A, 0x20, 0xE8, +0xFF, 0x6A, 0xAC, 0xEA, 0x03, 0x10, 0x40, 0xC4, +0xFF, 0x4E, 0x01, 0x4C, 0xFC, 0x2E, 0x00, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, +0x03, 0x6B, 0x05, 0x67, 0x6C, 0xE8, 0x44, 0x67, +0xE4, 0x67, 0x85, 0x67, 0x12, 0x28, 0x4C, 0xEB, +0x10, 0x2B, 0x86, 0x67, 0x06, 0x10, 0x61, 0xE5, +0x00, 0x98, 0x7D, 0xE2, 0xFC, 0x4C, 0x00, 0xDF, +0x04, 0x4B, 0x04, 0x5C, 0xF8, 0x60, 0xCA, 0x34, +0x88, 0x34, 0x03, 0x6B, 0x9D, 0xE2, 0x6C, 0xEE, +0x91, 0xE5, 0x00, 0x6B, 0x06, 0x10, 0x61, 0xE4, +0x00, 0xA0, 0x75, 0xE7, 0xFF, 0x4E, 0x00, 0xC5, +0x01, 0x4B, 0xF9, 0x2E, 0x01, 0x90, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0x00, 0x6B, 0x43, 0x67, +0x0C, 0x10, 0x7D, 0xE4, 0x69, 0xE5, 0xE0, 0xA7, +0x40, 0xA2, 0x01, 0x4B, 0x4B, 0xE7, 0x00, 0xF6, +0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, 0x02, 0x2A, +0xFF, 0x4E, 0xF3, 0x2E, 0x20, 0xE8, 0x00, 0x65, +0x06, 0x2C, 0x64, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF6, 0x7C, 0xDA, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF6, 0x9C, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF6, 0x5C, 0x9A, 0x28, 0x72, +0x2D, 0x60, 0x29, 0x5A, 0x07, 0x60, 0x14, 0x72, +0x19, 0x60, 0x19, 0x72, 0x1F, 0x60, 0x0A, 0x72, +0x0D, 0x60, 0x20, 0xE8, 0x50, 0x72, 0x32, 0x60, +0x51, 0x5A, 0x03, 0x60, 0x32, 0x72, 0x26, 0x60, +0x20, 0xE8, 0x64, 0x72, 0x33, 0x60, 0xC8, 0x72, +0x39, 0x60, 0x20, 0xE8, 0x02, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x60, 0xDA, 0xE0, 0xF7, +0x1E, 0x4B, 0x39, 0x10, 0x03, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x60, 0xDA, 0xE1, 0xF3, +0x1D, 0x4B, 0x31, 0x10, 0x09, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x60, 0xDA, 0xE4, 0xF3, +0x17, 0x4B, 0x29, 0x10, 0x05, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x60, 0xDA, 0xE2, 0xF3, +0x1B, 0x4B, 0x21, 0x10, 0x11, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x60, 0xDA, 0xE8, 0xF3, +0x0F, 0x4B, 0x19, 0x10, 0x0A, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x60, 0xDA, 0xE4, 0xF7, +0x16, 0x4B, 0x11, 0x10, 0x22, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x60, 0xDA, 0x11, 0xF0, +0x00, 0x6B, 0x09, 0x10, 0x43, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF4, 0x78, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x64, 0xDA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF6, 0x5C, 0x9A, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x44, 0x9A, 0xFF, 0x63, 0x58, 0xEC, +0x12, 0xEA, 0x00, 0xD2, 0x00, 0x92, 0xFF, 0x4A, +0x00, 0xD2, 0x00, 0x92, 0xFB, 0x2A, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x40, 0x9A, 0xFF, 0x63, 0x58, 0xEC, +0x12, 0xEA, 0x00, 0xD2, 0x00, 0x92, 0xFF, 0x4A, +0x00, 0xD2, 0x00, 0x92, 0xFB, 0x2A, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x51, 0x19, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xED, 0x00, 0x18, 0x38, 0x19, +0x05, 0x97, 0x00, 0x6A, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, +0x04, 0x67, 0x4C, 0xEE, 0x00, 0x18, 0x3D, 0x19, +0x50, 0x67, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6C, 0x20, 0xF4, 0x74, 0x9B, 0x40, 0xF4, +0x80, 0x9C, 0x6D, 0xE5, 0x91, 0xE5, 0x00, 0x6E, +0xC0, 0xDB, 0x04, 0x4B, 0x8A, 0xEB, 0xFB, 0x61, +0xE7, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x44, 0x9A, 0x10, 0x6C, +0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, +0x54, 0x9A, 0x49, 0xE5, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF4, 0x44, 0x9A, 0xFF, 0x6B, +0x55, 0xE5, 0x40, 0xA5, 0x6C, 0xEA, 0x8D, 0xEA, +0x6C, 0xEA, 0x40, 0xC5, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, 0x80, 0xF0, +0x4C, 0x98, 0x04, 0x6B, 0xA4, 0x67, 0x6D, 0xEA, +0x80, 0xF0, 0x4C, 0xD8, 0x60, 0xF6, 0x5C, 0xA8, +0x09, 0xF7, 0x00, 0x72, 0x07, 0x60, 0x60, 0xF6, +0x7C, 0xA0, 0x60, 0xF6, 0x5D, 0xA0, 0xFF, 0x4B, +0x4E, 0xEB, 0x0A, 0x2B, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0x60, 0x9A, 0x00, 0xF2, 0x00, 0x6C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x13, 0x10, +0x50, 0x32, 0x11, 0xE2, 0x60, 0xF1, 0x1C, 0x4C, +0x10, 0x6E, 0x00, 0x18, 0x3D, 0x19, 0x60, 0xF6, +0x5D, 0xA0, 0x50, 0x6B, 0x01, 0x4A, 0x60, 0xF6, +0x5D, 0xC0, 0x60, 0xF6, 0x5D, 0xA0, 0x6E, 0xEA, +0x02, 0x2A, 0x60, 0xF6, 0x5D, 0xC0, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF5, 0x60, 0x98, +0x40, 0xF4, 0x48, 0x9A, 0xA4, 0x67, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x6C, 0x9B, +0x6E, 0xEA, 0x07, 0x22, 0x02, 0xF5, 0x41, 0xA0, +0x02, 0xF5, 0x62, 0xA0, 0xFF, 0x4A, 0x6E, 0xEA, +0x0C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x40, 0xF4, +0x90, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x9F, 0x10, 0x23, 0xA4, 0xFF, 0xF7, 0x1F, 0x6A, +0x04, 0x49, 0x4C, 0xE9, 0xE2, 0xF4, 0x5E, 0xA8, +0x1C, 0x2A, 0xE8, 0x6C, 0x98, 0xEB, 0xE8, 0x6E, +0x12, 0xEB, 0x11, 0xE3, 0x60, 0xF6, 0x1E, 0x4C, +0x00, 0x18, 0x3D, 0x19, 0x02, 0xF5, 0x42, 0xA0, +0x02, 0xF5, 0x61, 0xA0, 0xE2, 0xF4, 0x3E, 0xC8, +0x4E, 0xEB, 0x72, 0x2B, 0x01, 0x4A, 0x02, 0xF5, +0x42, 0xC0, 0x02, 0xF5, 0x42, 0xA0, 0x10, 0x6B, +0x6E, 0xEA, 0x6A, 0x2A, 0x02, 0xF5, 0x42, 0xC0, +0x67, 0x10, 0x62, 0xA4, 0x34, 0x2B, 0x4D, 0xE1, +0xE3, 0x53, 0x31, 0x60, 0x02, 0xF5, 0x60, 0xA0, +0xE8, 0x6C, 0x98, 0xEB, 0x12, 0xEB, 0x0D, 0xE3, +0x80, 0xF6, 0x80, 0xA3, 0x28, 0x2C, 0x80, 0xF6, +0x81, 0xA3, 0xFF, 0x6E, 0xFC, 0x4A, 0xFF, 0x4C, +0x80, 0xF6, 0x81, 0xC3, 0xE2, 0xF4, 0x7E, 0xA8, +0xE8, 0x6C, 0xCC, 0xEA, 0xFF, 0x4B, 0xE2, 0xF4, +0x7E, 0xC8, 0x02, 0xF5, 0x60, 0xA0, 0x2C, 0xEE, +0x98, 0xEB, 0x12, 0xEB, 0x6D, 0xE0, 0x49, 0xE3, +0x80, 0xF6, 0x81, 0x42, 0x00, 0x18, 0xAC, 0x19, +0x02, 0xF5, 0x40, 0xA0, 0xE8, 0x6B, 0x78, 0xEA, +0x12, 0xEA, 0x09, 0xE2, 0x80, 0xF6, 0x61, 0xA2, +0x6D, 0xE1, 0x80, 0xF6, 0x61, 0xC2, 0xE2, 0xF4, +0x5E, 0xA8, 0x45, 0xE1, 0x2F, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0x02, 0xF5, +0x62, 0xA2, 0x10, 0x6C, 0x01, 0x4B, 0x02, 0xF5, +0x62, 0xC2, 0x02, 0xF5, 0x62, 0xA2, 0x8E, 0xEB, +0x02, 0x2B, 0x02, 0xF5, 0x62, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0x02, 0xF5, +0x60, 0xA2, 0x10, 0x6C, 0x01, 0x4B, 0x02, 0xF5, +0x60, 0xC2, 0x02, 0xF5, 0x60, 0xA2, 0x8E, 0xEB, +0x02, 0x2B, 0x02, 0xF5, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, 0x02, 0xF5, +0x80, 0xA0, 0xE8, 0x6A, 0xC2, 0x67, 0x58, 0xEC, +0x12, 0xEC, 0x11, 0xE4, 0x60, 0xF6, 0x1E, 0x4C, +0x00, 0x18, 0x3D, 0x19, 0xE2, 0xF4, 0x3E, 0xC8, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x02, 0xF5, 0x80, 0xA2, 0xE8, 0x6B, 0x78, 0xEC, +0xE2, 0xF4, 0x9E, 0xAA, 0x12, 0xEB, 0x4D, 0xE3, +0x60, 0xF7, 0x85, 0xC3, 0x80, 0xF0, 0x6C, 0x9A, +0x04, 0x6C, 0x8D, 0xEB, 0x80, 0xF0, 0x6C, 0xDA, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, +0x48, 0xA3, 0xFF, 0x6F, 0xE0, 0xF0, 0xC7, 0xA5, +0x41, 0xC5, 0x43, 0xA5, 0x80, 0xF6, 0x68, 0xA3, +0x03, 0x4A, 0xEC, 0xEA, 0x09, 0x10, 0xED, 0x42, +0xFF, 0x68, 0x0C, 0xEF, 0xFD, 0xE5, 0x64, 0xC7, +0xE6, 0xA7, 0x03, 0x4F, 0xE9, 0xE2, 0x0C, 0xEA, +0xEF, 0x46, 0xE2, 0xEA, 0xF4, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x68, 0xA2, 0x01, 0x4B, +0x80, 0xF6, 0x68, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF4, 0x54, 0x9A, 0x51, 0xE4, 0x00, 0x18, +0xAC, 0x19, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x69, 0xA2, 0x24, 0x67, 0x02, 0x6E, +0x61, 0xC5, 0x01, 0x4B, 0x80, 0xF6, 0x69, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x94, 0x9A, +0x05, 0x67, 0x91, 0xE1, 0x00, 0x18, 0xAC, 0x19, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x94, 0x9A, +0xCE, 0xA0, 0xA2, 0x40, 0x91, 0xE1, 0x00, 0x18, +0xAC, 0x19, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x00, 0x68, 0x14, 0x10, 0xE0, 0xF3, +0x08, 0x70, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0x60, 0x9A, 0x80, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x00, 0x6A, 0x10, 0x10, +0x01, 0x48, 0xFF, 0xF7, 0x1F, 0x6A, 0x0A, 0x6C, +0x4C, 0xE8, 0x00, 0x18, 0x9B, 0x19, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF4, 0x58, 0x9A, 0x60, 0xA2, +0x01, 0x6A, 0x6C, 0xEA, 0xE4, 0x2A, 0x01, 0x6A, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x24, 0x67, 0x00, 0x18, 0x79, 0x1A, 0x00, 0x6B, +0x2C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x54, 0x9A, 0x0F, 0x6C, 0xFF, 0xF7, 0x1F, 0x6B, +0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x58, 0x9A, 0x4C, 0xE8, 0xA1, 0x40, 0xA2, 0x32, +0x42, 0x32, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x40, 0xF4, 0x9C, 0x9C, 0xAC, 0xEB, 0x60, 0xCC, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, 0x60, 0x9B, +0x40, 0xC3, 0xE0, 0xF0, 0x87, 0xA1, 0x00, 0x18, +0xB3, 0x19, 0x87, 0x40, 0x12, 0x4C, 0xB1, 0x67, +0x00, 0x18, 0x4F, 0x1A, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF4, 0x58, 0x9A, 0x01, 0x6B, 0x60, 0xC2, +0x01, 0x6B, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x43, 0x67, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, 0x02, 0xF5, +0x41, 0xA0, 0x02, 0xF5, 0x62, 0xA0, 0x4E, 0xEB, +0x33, 0x23, 0xE8, 0x6B, 0x78, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x01, 0xF5, 0x0A, 0x4B, 0x12, 0xEA, +0x51, 0xE3, 0x00, 0x18, 0x8C, 0x1A, 0x07, 0x2A, +0x80, 0xF0, 0x4C, 0x98, 0x04, 0x6B, 0x6D, 0xEA, +0x80, 0xF0, 0x4C, 0xD8, 0x21, 0x10, 0x02, 0xF5, +0x41, 0xA0, 0x10, 0x6B, 0x01, 0x4A, 0x02, 0xF5, +0x41, 0xC0, 0x02, 0xF5, 0x41, 0xA0, 0x6E, 0xEA, +0x02, 0x2A, 0x02, 0xF5, 0x41, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0x02, 0xF5, +0x81, 0xA2, 0x02, 0xF5, 0x62, 0xA2, 0x8E, 0xEB, +0x07, 0x23, 0x80, 0xF0, 0x6C, 0x9A, 0x04, 0x6C, +0x8D, 0xEB, 0x80, 0xF0, 0x6C, 0xDA, 0x04, 0x10, +0x02, 0xF5, 0x80, 0xC2, 0xE2, 0xF4, 0x7E, 0xCA, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x24, 0x67, 0x00, 0x18, 0x79, 0x1A, 0x00, 0x6B, +0x36, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x54, 0x9A, 0xFF, 0xF7, 0x1F, 0x6E, 0xFF, 0x6F, +0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x58, 0x9A, 0x10, 0x6C, 0x8B, 0xEC, 0x4C, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xA1, 0x40, 0x40, 0xF4, +0x5C, 0x9A, 0x65, 0x67, 0xCC, 0xEB, 0x60, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x40, 0x9A, +0x60, 0xA2, 0xFA, 0x65, 0xA2, 0x32, 0xEC, 0xEB, +0x8C, 0xEB, 0x42, 0x32, 0x6D, 0xEA, 0xEC, 0xEA, +0x7F, 0x67, 0x40, 0xC3, 0x87, 0xA9, 0x02, 0x4C, +0xCC, 0xEC, 0x00, 0x18, 0xB3, 0x19, 0x87, 0x40, +0x12, 0x4C, 0xB1, 0x67, 0x00, 0x18, 0x67, 0x1A, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x58, 0x9A, +0x01, 0x6B, 0x60, 0xC2, 0x01, 0x6B, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x43, 0x67, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, +0x0C, 0x48, 0x60, 0xF6, 0x9C, 0xA0, 0x60, 0xF6, +0x5D, 0xA0, 0x8E, 0xEA, 0x25, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x90, 0x34, 0x01, 0xF0, 0x08, 0x4A, +0x91, 0xE2, 0x00, 0x18, 0xCC, 0x1A, 0x1C, 0x22, +0x60, 0xF6, 0x5C, 0xA0, 0x01, 0x4A, 0x60, 0xF6, +0x5C, 0xC0, 0x60, 0xF6, 0x7C, 0xA0, 0x60, 0xF6, +0x5D, 0xA0, 0x6E, 0xEA, 0x06, 0x22, 0x80, 0xF0, +0x4C, 0x98, 0x04, 0x6B, 0x6D, 0xEA, 0x80, 0xF0, +0x4C, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x60, 0xF6, 0x7C, 0xA2, 0x50, 0x6C, +0x8E, 0xEB, 0x02, 0x2B, 0x60, 0xF6, 0x7C, 0xC2, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF2, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x00, 0xF2, 0x90, 0x9C, 0x40, 0x9B, 0x20, 0x6D, +0x00, 0x6E, 0x8D, 0xEA, 0x40, 0xDB, 0x00, 0xF4, +0x1F, 0x6C, 0x06, 0x02, 0x04, 0xF7, 0x10, 0x6F, +0x04, 0xD2, 0x00, 0x18, 0x0F, 0x19, 0x09, 0x97, +0x05, 0x63, 0x00, 0xEF, 0xFE, 0x63, 0x03, 0xD1, +0x02, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, +0x44, 0x9A, 0x0F, 0x6B, 0x40, 0xA2, 0x4C, 0xEB, +0x0A, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x80, 0xF0, 0x8C, 0x9A, 0x02, 0x6D, +0xAD, 0xEC, 0x80, 0xF0, 0x8C, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x01, 0xF0, 0x45, 0xA2, 0xFF, 0x4A, +0x00, 0xD2, 0xDC, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6C, +0x60, 0xF1, 0xB8, 0x9A, 0x40, 0xF4, 0x88, 0x9C, +0xAC, 0xEC, 0x30, 0xF0, 0x20, 0x6D, 0x60, 0xF4, +0xA8, 0x9D, 0xAE, 0xEC, 0x05, 0x24, 0x60, 0xF1, +0x1A, 0xA2, 0x00, 0x94, 0x8A, 0xE8, 0x08, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x60, 0x9A, +0xFF, 0x6C, 0x01, 0x4C, 0x40, 0x9B, 0xBB, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF6, 0x8A, 0xA4, +0xA3, 0x67, 0xA7, 0xEC, 0x85, 0x67, 0x01, 0x6D, +0xAC, 0xEC, 0xA0, 0xF0, 0x0A, 0x24, 0x0C, 0x35, +0xB5, 0xE2, 0x20, 0xF1, 0x1D, 0x4D, 0x00, 0x6A, +0x30, 0xF0, 0x20, 0x6E, 0x80, 0xF6, 0xEA, 0xA6, +0xFF, 0x6C, 0x1F, 0xF7, 0x00, 0x69, 0x8C, 0xEF, +0x74, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, +0x02, 0xF0, 0x00, 0x77, 0x08, 0x60, 0x80, 0xF6, +0xEA, 0xA6, 0x8C, 0xEF, 0x74, 0x4F, 0xE8, 0x37, +0xFD, 0xE2, 0x2C, 0xEF, 0x0F, 0x2F, 0x30, 0xF0, +0x20, 0x6C, 0x80, 0xF6, 0x2A, 0xA4, 0xFF, 0x6C, +0x30, 0xF0, 0x20, 0x6E, 0x8C, 0xE9, 0x74, 0x49, +0x28, 0x31, 0xE2, 0x67, 0x25, 0xE2, 0x80, 0xF3, +0xC8, 0x9E, 0x0B, 0x10, 0x80, 0xF6, 0x2A, 0xA6, +0x30, 0xF0, 0x20, 0x6E, 0x80, 0xF3, 0xCC, 0x9E, +0x8C, 0xE9, 0x74, 0x49, 0x28, 0x31, 0xE2, 0x67, +0x25, 0xE2, 0xD9, 0xE1, 0xC0, 0xA6, 0x0C, 0x31, +0xCC, 0xEC, 0x30, 0xF0, 0x20, 0x6E, 0x80, 0xF6, +0x0C, 0x4E, 0xD9, 0xE1, 0xFD, 0xE6, 0x20, 0xF1, +0x99, 0xC7, 0x30, 0xF0, 0x20, 0x6E, 0x80, 0xF6, +0xEA, 0xA6, 0xFF, 0x6C, 0x1F, 0xF7, 0x00, 0x69, +0x8C, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, +0x2C, 0xEF, 0x02, 0xF0, 0x00, 0x77, 0x08, 0x60, +0x80, 0xF6, 0xEA, 0xA6, 0x8C, 0xEF, 0x7C, 0x4F, +0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, 0x0E, 0x2F, +0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF6, 0xCA, 0xA4, +0xFF, 0x6C, 0x30, 0xF0, 0x20, 0x6F, 0x8C, 0xEE, +0x7C, 0x4E, 0xC8, 0x36, 0xD9, 0xE2, 0x80, 0xF3, +0xE8, 0x9F, 0x0A, 0x10, 0x80, 0xF6, 0xCA, 0xA6, +0x30, 0xF0, 0x20, 0x6F, 0x80, 0xF3, 0xEC, 0x9F, +0x8C, 0xEE, 0x7C, 0x4E, 0xC8, 0x36, 0xD9, 0xE2, +0xF9, 0xE6, 0xC0, 0xA6, 0x01, 0x4A, 0x04, 0x72, +0xCC, 0xEC, 0x80, 0xC5, 0x01, 0x4D, 0x8C, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0xAA, 0xA2, +0x01, 0x6C, 0xC4, 0x67, 0xC4, 0xED, 0xCF, 0xED, +0x80, 0xF6, 0xCA, 0xA2, 0xAC, 0xEB, 0xFF, 0x6D, +0x84, 0xEE, 0x30, 0xF0, 0x20, 0x6E, 0x60, 0xF4, +0xC4, 0x9E, 0xAC, 0xEC, 0x80, 0xC6, 0x80, 0xF6, +0x8A, 0xA2, 0xAC, 0xEC, 0x01, 0x4C, 0xAC, 0xEC, +0x80, 0xF6, 0x8A, 0xC2, 0x80, 0xF6, 0xAA, 0xA2, +0x03, 0x6C, 0xAC, 0xEC, 0x80, 0xF6, 0x8A, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x60, 0xF1, 0x9A, 0xA2, 0x08, 0x6D, 0x01, 0x4C, +0x60, 0xF1, 0x9A, 0xC2, 0x60, 0xF1, 0x9A, 0xA2, +0xAE, 0xEC, 0x0C, 0x2C, 0x60, 0xF1, 0x9A, 0xC2, +0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, +0x60, 0x9A, 0x02, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x02, 0x10, 0x3F, 0xF7, 0x02, 0x2B, +0x03, 0x91, 0x02, 0x90, 0x02, 0x63, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x00, 0xA4, 0x07, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x06, 0x35, 0x4C, 0xED, 0x58, 0xED, 0x80, 0xF6, +0x0C, 0x4B, 0x01, 0x6F, 0xEC, 0xE8, 0x12, 0xED, +0x79, 0xE5, 0x00, 0xF1, 0xA1, 0xA6, 0x1D, 0x65, +0x02, 0x6D, 0xAB, 0xED, 0x38, 0x67, 0x2C, 0xED, +0x0D, 0xED, 0x00, 0xF1, 0xA1, 0xC6, 0xA0, 0xA4, +0xA6, 0x36, 0x4C, 0xEE, 0x58, 0xEE, 0xBA, 0x35, +0xEC, 0xED, 0xB8, 0x37, 0x41, 0x6D, 0xAB, 0xED, +0x12, 0xEE, 0x79, 0xE6, 0x00, 0xF1, 0x01, 0xA6, +0x0C, 0xED, 0xED, 0xED, 0x00, 0xF1, 0xA1, 0xC6, +0xE0, 0xA4, 0xE6, 0x35, 0x4C, 0xED, 0x58, 0xED, +0xFE, 0x37, 0xFC, 0x37, 0x12, 0xED, 0x79, 0xE5, +0x00, 0xF1, 0x01, 0xA6, 0x7F, 0x6D, 0x0C, 0xED, +0xED, 0xED, 0x00, 0xF1, 0xA1, 0xC6, 0xA0, 0xA4, +0x81, 0xA4, 0xA6, 0x35, 0x4C, 0xED, 0x58, 0xED, +0x12, 0xEA, 0x69, 0xE2, 0x00, 0xF1, 0x82, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0x5C, 0x9A, +0xE0, 0xF7, 0x1F, 0x6C, 0x40, 0x9A, 0x8C, 0xEA, +0x02, 0xF5, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF4, 0x4C, 0x9A, 0xA0, 0x9A, 0x00, 0x6A, +0x62, 0x67, 0x07, 0x6E, 0xD8, 0xEA, 0x30, 0xF0, +0x20, 0x6C, 0x80, 0xF6, 0x0C, 0x4C, 0x12, 0xEE, +0x91, 0xE6, 0x00, 0xF1, 0xC1, 0xA4, 0x01, 0x6C, +0x8C, 0xEE, 0x08, 0x26, 0x84, 0xEA, 0x6D, 0xEC, +0x00, 0xF6, 0x80, 0x33, 0x00, 0xF6, 0x63, 0x33, +0xFF, 0x6C, 0x8C, 0xEB, 0x01, 0x4A, 0x08, 0x72, +0xE8, 0x61, 0x60, 0x32, 0x40, 0x32, 0x00, 0xF6, +0x60, 0x33, 0x6D, 0xEA, 0x00, 0x6C, 0x4D, 0xED, +0x00, 0x18, 0x6E, 0x04, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xA4, 0x67, 0x30, 0xF0, +0x20, 0x6C, 0x00, 0xF7, 0x1C, 0x4C, 0x08, 0x6E, +0x00, 0x18, 0xAC, 0x19, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x07, 0x6E, +0x20, 0xF7, 0x19, 0x4C, 0x00, 0x18, 0xAC, 0x19, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF7, 0x9C, 0xA2, +0x96, 0x34, 0x00, 0x18, 0x9D, 0x09, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x08, 0xD4, 0x41, 0xA4, +0x24, 0x67, 0x06, 0xD2, 0x60, 0xA4, 0x02, 0x6A, +0x6C, 0xEA, 0x06, 0x93, 0x07, 0xD3, 0x02, 0x22, +0x42, 0xA4, 0x07, 0xD2, 0x06, 0x90, 0x15, 0x10, +0x08, 0x93, 0x01, 0x6D, 0x90, 0x67, 0x40, 0xA3, +0x4C, 0xED, 0x00, 0x18, 0xFD, 0x05, 0x90, 0x67, +0x00, 0x18, 0xF4, 0x05, 0x04, 0x2A, 0x90, 0x67, +0x00, 0x18, 0x1F, 0x06, 0x03, 0x10, 0x90, 0x67, +0x00, 0x18, 0x24, 0x06, 0x01, 0x48, 0xFF, 0x6A, +0x4C, 0xE8, 0x07, 0x92, 0x03, 0xEA, 0xE8, 0x60, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, +0xC0, 0xF0, 0x8A, 0xA0, 0x06, 0x92, 0x8E, 0xEA, +0x1B, 0x2A, 0x00, 0x18, 0xF4, 0x05, 0x18, 0x2A, +0x00, 0x18, 0x0A, 0x26, 0xA0, 0xF0, 0x90, 0xA0, +0x96, 0x34, 0x00, 0x18, 0x4D, 0x08, 0xE3, 0xF2, +0x70, 0xA0, 0x05, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xE3, 0xF2, 0x71, 0xA0, 0xE3, 0xF2, 0x50, 0xC0, +0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0x6B, +0x6B, 0xEB, 0x6C, 0xEA, 0xE3, 0xF2, 0x51, 0xC0, +0x60, 0xA1, 0x01, 0x6A, 0x6C, 0xEA, 0x13, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x04, 0xF0, 0x84, 0xA2, 0x1E, 0x6D, 0x8A, 0x33, +0xAC, 0xEB, 0x68, 0x35, 0x7D, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xAD, 0xEB, 0x04, 0xF0, 0x64, 0xC2, +0x01, 0x6B, 0x6B, 0xEB, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0x04, 0xF0, +0x84, 0xA2, 0x04, 0x6B, 0x8D, 0xEB, 0x04, 0xF0, +0x64, 0xC2, 0x00, 0x6B, 0x30, 0xF0, 0x20, 0x68, +0x04, 0xF0, 0x65, 0xC2, 0x80, 0xF6, 0x0C, 0x48, +0x04, 0xF0, 0x64, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, +0x20, 0x22, 0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x04, 0xF0, 0x44, 0xC0, 0x00, 0x18, 0xCA, 0x22, +0x7D, 0x67, 0x48, 0xCB, 0x68, 0xAB, 0x04, 0xF0, +0x86, 0xA8, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEB, +0x8E, 0xEB, 0x05, 0x23, 0x7D, 0x67, 0x88, 0xAB, +0x4C, 0xEC, 0x00, 0x18, 0xE9, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0x04, 0xF0, +0x84, 0xA2, 0x02, 0x6B, 0x8D, 0xEB, 0x04, 0xF0, +0x64, 0xC2, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x68, 0x44, 0xC8, 0x4B, +0x4C, 0xEB, 0x20, 0x5B, 0x80, 0xF0, 0x1F, 0x61, +0x23, 0x74, 0x80, 0xF0, 0x1C, 0x60, 0x24, 0x5C, +0x20, 0x60, 0x13, 0x74, 0x54, 0x60, 0x14, 0x5C, +0x0D, 0x60, 0x03, 0x74, 0x44, 0x60, 0x04, 0x5C, +0x04, 0x60, 0x39, 0x24, 0x01, 0x74, 0x3B, 0x60, +0x86, 0x10, 0x04, 0x74, 0x40, 0x60, 0x0B, 0x74, +0x42, 0x60, 0x81, 0x10, 0x1F, 0x74, 0x47, 0x60, +0x20, 0x5C, 0x06, 0x60, 0x14, 0x74, 0x80, 0xF0, +0x02, 0x60, 0x1E, 0x74, 0x44, 0x60, 0x77, 0x10, +0x20, 0x74, 0x45, 0x60, 0x21, 0x74, 0x7B, 0x60, +0x72, 0x10, 0x82, 0x74, 0x54, 0x60, 0x83, 0x5C, +0x0E, 0x60, 0x2C, 0x74, 0x44, 0x60, 0x2D, 0x5C, +0x05, 0x60, 0x25, 0x74, 0x70, 0x60, 0x27, 0x74, +0x3A, 0x60, 0x65, 0x10, 0x80, 0x74, 0x3F, 0x60, +0x81, 0x74, 0x41, 0x60, 0x60, 0x10, 0x87, 0x74, +0x56, 0x60, 0x88, 0x5C, 0x05, 0x60, 0x83, 0x74, +0x42, 0x60, 0x84, 0x74, 0x44, 0x60, 0x57, 0x10, +0x8C, 0x74, 0x49, 0x60, 0xC5, 0x74, 0x4F, 0x60, +0x88, 0x74, 0x41, 0x60, 0x50, 0x10, 0x85, 0x67, +0x00, 0x18, 0xD4, 0x1B, 0x54, 0x10, 0x85, 0x67, +0x00, 0x18, 0xE5, 0x1B, 0x50, 0x10, 0x85, 0x67, +0x00, 0x18, 0xD8, 0x0E, 0x4C, 0x10, 0x85, 0x67, +0x00, 0x18, 0xBE, 0x0F, 0x48, 0x10, 0x85, 0x67, +0x00, 0x18, 0x6D, 0x03, 0x44, 0x10, 0x85, 0x67, +0x00, 0x18, 0x37, 0x03, 0x40, 0x10, 0x85, 0x67, +0x00, 0x18, 0xC7, 0x02, 0x3C, 0x10, 0x85, 0x67, +0x00, 0x18, 0x20, 0x03, 0x38, 0x10, 0x85, 0x67, +0x00, 0x18, 0xDB, 0x1B, 0x34, 0x10, 0x85, 0x67, +0x00, 0x18, 0xA9, 0x03, 0x30, 0x10, 0x85, 0x67, +0x00, 0x18, 0x75, 0x03, 0x2C, 0x10, 0x85, 0x67, +0x00, 0x18, 0x26, 0x11, 0x28, 0x10, 0x85, 0x67, +0x00, 0x18, 0xB8, 0x14, 0x24, 0x10, 0x85, 0x67, +0x00, 0x18, 0x85, 0x0F, 0x20, 0x10, 0x85, 0x67, +0x00, 0x18, 0x86, 0x10, 0x1C, 0x10, 0x85, 0x67, +0x00, 0x18, 0x7F, 0x10, 0x18, 0x10, 0x85, 0x67, +0x00, 0x18, 0x8B, 0x0F, 0x14, 0x10, 0x85, 0x67, +0x00, 0x18, 0x83, 0x17, 0x10, 0x10, 0x85, 0x67, +0x00, 0x18, 0xA4, 0x25, 0x0C, 0x10, 0x85, 0x67, +0x00, 0x18, 0x96, 0x1B, 0x08, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF3, 0x60, 0x9A, 0x01, 0x6C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, +0x0C, 0x48, 0x60, 0xF1, 0x59, 0xA0, 0x60, 0xF1, +0x7A, 0xA0, 0x4E, 0xEB, 0x29, 0x23, 0x67, 0x42, +0x20, 0x4B, 0x6C, 0x33, 0x0D, 0xE3, 0x4C, 0x32, +0x81, 0xA3, 0x55, 0xE0, 0x20, 0xF1, 0x1A, 0x4D, +0x00, 0x18, 0x35, 0x1C, 0x60, 0xF1, 0x59, 0xA0, +0x01, 0x4A, 0x60, 0xF1, 0x59, 0xC0, 0x60, 0xF1, +0x79, 0xA0, 0x60, 0xF1, 0x5A, 0xA0, 0x6E, 0xEA, +0x06, 0x22, 0x80, 0xF0, 0x4C, 0x98, 0x02, 0x6B, +0x6D, 0xEA, 0x80, 0xF0, 0x4C, 0xD8, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0x60, 0xF1, +0x79, 0xA2, 0x08, 0x6C, 0x8E, 0xEB, 0x02, 0x2B, +0x60, 0xF1, 0x79, 0xC2, 0x00, 0x18, 0x17, 0x1B, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFF, 0x6A, 0x4C, 0xEC, 0x08, 0x5C, 0xAC, 0xEA, +0x05, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, +0x70, 0x9B, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF4, 0x74, 0x9B, 0xF8, 0x4C, 0x01, 0x6D, +0xC0, 0x9B, 0xA4, 0xEC, 0x00, 0xF6, 0xA0, 0x34, +0x8F, 0xEC, 0xCC, 0xEC, 0x80, 0xDB, 0xC0, 0x9B, +0xA0, 0x35, 0xA0, 0x34, 0xCD, 0xEC, 0x80, 0xDB, +0x04, 0x22, 0x40, 0x9B, 0xAD, 0xEA, 0x40, 0xDB, +0x20, 0xE8, 0x40, 0x9B, 0xAF, 0xED, 0x4C, 0xED, +0xA0, 0xDB, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6B, 0xAC, 0xEB, 0xFF, 0xF7, 0x1F, 0x6A, +0x01, 0x73, 0x8C, 0xEA, 0x04, 0x61, 0x82, 0x67, +0x00, 0x18, 0x93, 0x19, 0x03, 0x10, 0x82, 0x67, +0x00, 0x18, 0x9B, 0x19, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6B, 0xFF, 0xF7, +0x1F, 0x6A, 0x24, 0x67, 0x6C, 0xED, 0x6C, 0xEE, +0x4C, 0xE9, 0x05, 0xD5, 0x06, 0xD6, 0x03, 0x2D, +0x02, 0x21, 0xD0, 0x49, 0x4C, 0xE9, 0x30, 0xF0, +0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, 0xC0, 0xF0, +0xB0, 0xA0, 0xC0, 0xF0, 0x91, 0xA0, 0x01, 0x6A, +0xB6, 0x35, 0x4E, 0xED, 0x7F, 0x6B, 0x6C, 0xEC, +0x4C, 0xED, 0x00, 0x18, 0xA8, 0x1C, 0xC0, 0xF0, +0xB0, 0xA0, 0xC0, 0xF0, 0x91, 0xA0, 0x7F, 0x6A, +0x01, 0x6B, 0xB6, 0x35, 0x4C, 0xEC, 0x6C, 0xED, +0x00, 0x18, 0xA8, 0x1C, 0xC0, 0xF0, 0x53, 0xA0, +0x01, 0x6B, 0x6C, 0xEA, 0x41, 0x22, 0x05, 0x95, +0x91, 0x67, 0x00, 0x18, 0xBB, 0x1C, 0xC0, 0xF0, +0xB0, 0xA0, 0xC0, 0xF0, 0x91, 0xA0, 0x01, 0x6B, +0x7F, 0x6A, 0xB6, 0x35, 0x4C, 0xEC, 0x6E, 0xED, +0xFF, 0x6A, 0x4C, 0xEC, 0x6C, 0xED, 0x00, 0x18, +0xA8, 0x1C, 0x00, 0x6A, 0x04, 0xD2, 0x28, 0x10, +0x05, 0x95, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, +0x0C, 0x48, 0x91, 0x67, 0x00, 0x18, 0xBB, 0x1C, +0xC0, 0xF0, 0xB0, 0xA0, 0xC0, 0xF0, 0x91, 0xA0, +0x7F, 0x6B, 0x01, 0x6A, 0xB6, 0x35, 0x6C, 0xEC, +0x4C, 0xED, 0x00, 0x18, 0xA8, 0x1C, 0x05, 0x95, +0x91, 0x67, 0x00, 0x18, 0xBB, 0x1C, 0xC0, 0xF0, +0xB0, 0xA0, 0xC0, 0xF0, 0x91, 0xA0, 0x01, 0x6B, +0xB6, 0x35, 0x6E, 0xED, 0x7F, 0x6A, 0x4C, 0xEC, +0x6C, 0xED, 0x00, 0x18, 0xA8, 0x1C, 0x04, 0x93, +0xFF, 0x6A, 0x01, 0x4B, 0x4C, 0xEB, 0x04, 0xD3, +0x04, 0x92, 0x06, 0x93, 0x63, 0xEA, 0xD4, 0x61, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, +0x0C, 0x4B, 0xC0, 0xF0, 0xB4, 0xA3, 0xC0, 0xF0, +0xD3, 0xA3, 0xC0, 0xF0, 0xF2, 0xA3, 0xAA, 0x35, +0x01, 0x6B, 0xFF, 0x6A, 0x6C, 0xED, 0x04, 0x67, +0xC6, 0x36, 0x4C, 0xED, 0x4C, 0xE8, 0x4C, 0xEE, +0xE8, 0x34, 0x01, 0x2D, 0xF4, 0x34, 0x01, 0x70, +0x02, 0x61, 0x00, 0x18, 0xC5, 0x1C, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6C, +0x20, 0xF7, 0x12, 0x4C, 0x00, 0x6D, 0x07, 0x6E, +0x00, 0x18, 0xA7, 0x19, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0xF7, 0x1F, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x8C, 0xEA, 0x80, 0xF4, +0x78, 0x9B, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF4, +0x9C, 0x9C, 0xCC, 0xEB, 0x40, 0xF6, 0xA0, 0x35, +0x8D, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, +0x02, 0xF0, 0x00, 0x74, 0xAD, 0xEB, 0x01, 0x60, +0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF3, +0x88, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0x80, 0xF3, 0x8C, 0x9C, 0x89, 0xE2, 0x60, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, +0xFF, 0x6B, 0x02, 0xF0, 0x00, 0x74, 0xAC, 0xEB, +0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, +0x80, 0xF3, 0x88, 0x9C, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x80, 0xF3, 0x8C, 0x9C, 0x91, 0xE2, +0x00, 0x6D, 0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0x80, 0xF4, 0x98, 0x9C, 0xD4, 0x36, 0x40, 0xF6, +0x60, 0x33, 0x8C, 0xEE, 0x6D, 0xEE, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF4, 0x7C, 0x9B, 0x6D, 0xEE, +0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, +0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF3, 0x68, 0x9B, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x6C, 0x9B, +0x69, 0xE2, 0xC0, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x0F, 0xF5, 0x00, 0x6B, 0x78, 0xEE, 0xFF, 0xF7, +0x1F, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x80, 0xF4, 0x98, 0x9C, 0x40, 0xF6, 0xA0, 0x35, +0x12, 0xEB, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0x80, 0xF4, 0x9C, 0x9C, 0xAD, 0xEB, 0x8D, 0xEB, +0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, +0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, +0x20, 0x6C, 0x80, 0xF3, 0x88, 0x9C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF3, 0x8C, 0x9C, +0x89, 0xE2, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, 0x4C, 0x9A, +0x40, 0x9A, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x8C, 0xE9, +0x00, 0x68, 0xFF, 0x6A, 0x0C, 0xEA, 0x2E, 0xEA, +0x10, 0x2A, 0x91, 0x67, 0x00, 0x18, 0x77, 0x25, +0x91, 0x67, 0x00, 0x18, 0x66, 0x25, 0x91, 0x67, +0x00, 0x18, 0x7E, 0x25, 0x91, 0x67, 0x00, 0x18, +0x51, 0x25, 0x91, 0x67, 0x00, 0x18, 0x4A, 0x25, +0x0F, 0x10, 0x90, 0x67, 0x00, 0x18, 0x96, 0x25, +0x90, 0x67, 0x00, 0x18, 0x85, 0x25, 0x90, 0x67, +0x00, 0x18, 0x9D, 0x25, 0x90, 0x67, 0x00, 0x18, +0x5F, 0x25, 0x90, 0x67, 0x00, 0x18, 0x58, 0x25, +0x01, 0x48, 0x05, 0x70, 0xDA, 0x61, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x1F, 0x6B, 0x8C, 0xEB, 0x01, 0x6A, 0x00, 0x6C, +0xA3, 0x67, 0xA7, 0xEC, 0x01, 0x6E, 0xCC, 0xED, +0x03, 0x2D, 0x02, 0x4A, 0xFF, 0x6D, 0xAC, 0xEA, +0x01, 0x4C, 0x04, 0x74, 0xF5, 0x61, 0x20, 0xE8, +0xFF, 0x6B, 0x6C, 0xED, 0x6C, 0xEC, 0x03, 0x2D, +0x92, 0x32, 0x6C, 0xEA, 0x20, 0xE8, 0xF0, 0x6A, +0xAC, 0xEA, 0x96, 0x34, 0x47, 0x32, 0x8D, 0xEA, +0x6C, 0xEA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF5, 0x44, 0x9A, 0x40, 0xA2, 0x00, 0xF6, +0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, 0x00, 0x52, +0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, +0x60, 0x9A, 0x10, 0xF0, 0x00, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x01, 0x6A, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x60, 0x9A, +0x10, 0xF0, 0x01, 0x6C, 0x8B, 0xEC, 0x40, 0x9B, +0x8C, 0xEA, 0x40, 0xDB, 0x00, 0x6A, 0x20, 0xE8, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF5, 0x48, 0x9A, +0x30, 0xF0, 0x20, 0x69, 0x83, 0xF3, 0x1C, 0x49, +0x40, 0xA2, 0x00, 0x6A, 0x06, 0xD2, 0x02, 0x67, +0x08, 0xD2, 0x07, 0xD2, 0x07, 0x92, 0x04, 0x05, +0x01, 0x72, 0x58, 0x67, 0x07, 0xD2, 0x10, 0xF0, +0x20, 0x6A, 0x78, 0x67, 0x6E, 0xF6, 0x01, 0x4A, +0x69, 0xE2, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, +0x70, 0x9B, 0x40, 0xDB, 0x06, 0x94, 0x00, 0x18, +0x25, 0x29, 0x01, 0x72, 0x02, 0x60, 0x00, 0x6A, +0xD8, 0x10, 0x0C, 0x28, 0xBD, 0x67, 0x90, 0xA5, +0xFF, 0x74, 0x1F, 0x60, 0x1F, 0x6A, 0x8C, 0xEA, +0x0F, 0x72, 0x01, 0x68, 0x03, 0x60, 0x00, 0x18, +0x78, 0x1D, 0x02, 0x67, 0x7D, 0x67, 0x50, 0xA3, +0x08, 0x94, 0x06, 0x95, 0x40, 0xC1, 0x01, 0x4C, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, 0x01, 0x4D, +0x00, 0xF4, 0x00, 0x74, 0x08, 0xD4, 0x06, 0xD5, +0x01, 0x49, 0x04, 0x60, 0xFF, 0x48, 0xFF, 0x6A, +0x4C, 0xE8, 0xC8, 0x17, 0x00, 0xF4, 0x00, 0x6A, +0x08, 0xD2, 0x08, 0x92, 0xFF, 0xF7, 0x1F, 0x6B, +0x01, 0x4A, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x0C, 0x4B, 0x6D, 0xE2, 0x02, 0xF5, +0x8E, 0xA3, 0xFF, 0x4A, 0x02, 0xF5, 0x90, 0xC3, +0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, 0x02, 0x5A, +0xF1, 0x60, 0x00, 0x6B, 0x02, 0x6C, 0x07, 0xD3, +0x06, 0xD4, 0x24, 0x67, 0x0A, 0xD3, 0x0A, 0x92, +0x01, 0x72, 0x58, 0x67, 0x0A, 0xD2, 0x10, 0xF0, +0x20, 0x6A, 0x78, 0x67, 0x6E, 0xF6, 0x03, 0x4A, +0x69, 0xE2, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, +0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x49, 0xE1, 0x02, 0xF5, +0x90, 0xA2, 0x09, 0xD2, 0x1F, 0x6A, 0x8C, 0xEA, +0x0F, 0x72, 0x0E, 0x61, 0x09, 0x95, 0x02, 0xF5, +0x91, 0xA5, 0x00, 0x18, 0x78, 0x1D, 0x01, 0x42, +0xFF, 0x6A, 0x4C, 0xE8, 0x09, 0x92, 0x02, 0xF5, +0x90, 0xA2, 0x02, 0xF5, 0xB1, 0xA2, 0x07, 0x10, +0x00, 0x18, 0x78, 0x1D, 0x09, 0x93, 0x02, 0x67, +0x00, 0x6D, 0x02, 0xF5, 0x90, 0xA3, 0x00, 0x18, +0x80, 0x1D, 0x26, 0x5A, 0x11, 0x60, 0x06, 0x92, +0x30, 0xF0, 0x20, 0x6D, 0x83, 0xF3, 0x1C, 0x4D, +0x51, 0xE5, 0xD0, 0x67, 0x35, 0xE5, 0x00, 0x18, +0xAC, 0x19, 0x06, 0x93, 0xFF, 0xF7, 0x1F, 0x6A, +0x6D, 0xE0, 0x4C, 0xEB, 0x06, 0xD3, 0x15, 0x10, +0x38, 0x5A, 0x13, 0x61, 0x07, 0x92, 0x30, 0xF0, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0x83, 0xF7, +0x1C, 0x4C, 0x83, 0xF3, 0x1C, 0x4D, 0x51, 0xE4, +0x35, 0xE5, 0xD0, 0x67, 0x00, 0x18, 0xAC, 0x19, +0x07, 0x93, 0xFF, 0x6A, 0x6D, 0xE0, 0x4C, 0xEB, +0x07, 0xD3, 0x08, 0x94, 0x25, 0xE0, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xE9, 0x23, 0xEC, 0x9F, 0x60, +0xBD, 0x67, 0x67, 0x45, 0x11, 0x4B, 0xA0, 0xA3, +0x06, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x02, 0xF5, 0xB0, 0xC2, 0x82, 0x33, +0xBD, 0x67, 0x02, 0xF5, 0x71, 0xC2, 0x67, 0x45, +0x15, 0x4B, 0xA0, 0xA3, 0x00, 0x6B, 0x83, 0xF1, +0xB0, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, +0x5C, 0x9A, 0x01, 0x6C, 0x30, 0xF0, 0x20, 0x6D, +0x8E, 0xEB, 0x80, 0xF3, 0xB0, 0x9D, 0x10, 0xF0, +0x20, 0x6C, 0x6E, 0xF6, 0x05, 0x4C, 0x71, 0xE4, +0x80, 0xDD, 0x30, 0xF0, 0x20, 0x6D, 0x00, 0xF5, +0xAC, 0x9D, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF6, +0x0C, 0x4C, 0x51, 0xE4, 0xB1, 0xE4, 0x80, 0xA4, +0x80, 0xC2, 0x06, 0x95, 0x01, 0x4A, 0xFF, 0xF7, +0x1F, 0x6C, 0x4C, 0xEC, 0xA3, 0xEC, 0xE1, 0x61, +0x01, 0x6A, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, +0x08, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x00, 0x69, 0x43, 0x10, +0x01, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x4E, 0xE9, +0x80, 0xF3, 0x70, 0x9B, 0x10, 0xF0, 0x20, 0x6A, +0x6F, 0xF0, 0x0D, 0x4A, 0x29, 0xE2, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x58, 0x9A, +0x00, 0xA2, 0xFF, 0x6A, 0x4C, 0xE8, 0x0F, 0x6A, +0x0C, 0xEA, 0x2D, 0x22, 0x01, 0x6A, 0x0C, 0xEA, +0x02, 0x22, 0xEE, 0x6A, 0x22, 0x10, 0x02, 0x6A, +0x0C, 0xEA, 0x15, 0x22, 0x20, 0x6A, 0x0C, 0xEA, +0x70, 0x67, 0x0E, 0x2A, 0x00, 0x18, 0x98, 0x1D, +0x70, 0x67, 0x04, 0x2A, 0x20, 0x6A, 0x4D, 0xEB, +0xFF, 0x6A, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF5, 0x50, 0x9A, 0x00, 0x6C, 0x80, 0xC2, +0xFD, 0x6A, 0x6C, 0xEA, 0x0B, 0x10, 0x04, 0x6A, +0x0C, 0xEA, 0x02, 0x22, 0xFB, 0x6A, 0x05, 0x10, +0x08, 0x6B, 0x0C, 0xEB, 0x50, 0x67, 0x02, 0x23, +0xF7, 0x6A, 0x0C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF3, 0x78, 0x9B, 0x40, 0xC3, 0x00, 0x18, +0x87, 0x1D, 0xBA, 0x2A, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF4, 0x80, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, +0xA0, 0x9C, 0x4C, 0x9B, 0xAC, 0xEA, 0x4D, 0xDB, +0x40, 0xDC, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0xD1, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF4, +0x30, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, +0x14, 0x4A, 0x40, 0x9A, 0x60, 0x99, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF4, 0x58, 0x9A, 0xC0, 0xF4, 0x00, 0x4C, +0x80, 0x9C, 0x00, 0x9A, 0x1A, 0x65, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0x9C, 0xC0, 0xF4, 0x08, 0x4A, +0x40, 0x9A, 0x01, 0xD4, 0x30, 0xF0, 0x20, 0x6C, +0x40, 0x9A, 0x80, 0xF6, 0xEC, 0x9C, 0x00, 0xD2, +0x44, 0x67, 0x80, 0xF6, 0x0C, 0x4A, 0xC1, 0x9A, +0x83, 0x9A, 0x6C, 0xEF, 0xAC, 0xEE, 0x01, 0x93, +0xA2, 0x9A, 0xE5, 0xDA, 0x6C, 0xEC, 0x0C, 0xED, +0x64, 0x9A, 0x00, 0x90, 0x88, 0xDA, 0xC6, 0xDA, +0x0C, 0xEB, 0xA7, 0xDA, 0x69, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF3, 0x14, 0x4A, 0x40, 0x9A, +0xE0, 0xD9, 0x18, 0x67, 0xC0, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF4, 0x00, 0x4A, 0x40, 0x9A, +0xA0, 0xD8, 0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6C, +0xC0, 0xF4, 0x08, 0x4C, 0x80, 0x9C, 0x60, 0xDC, +0x05, 0x91, 0x04, 0x90, 0x03, 0x63, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF2, 0xD0, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF4, 0xB4, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x60, 0x9E, 0x8E, 0x9A, 0xE0, 0x9D, 0x6C, 0xEC, +0x6F, 0x9A, 0x91, 0xDA, 0xEC, 0xEB, 0x72, 0xDA, +0x80, 0xDE, 0x60, 0xDD, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, +0x07, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x0C, 0x4B, 0x01, 0x6E, 0x12, 0xEC, +0x71, 0xE4, 0x00, 0xF1, 0xA1, 0xA4, 0xCC, 0xED, +0x1D, 0x25, 0x00, 0xF1, 0xA2, 0xA4, 0x02, 0xF5, +0x68, 0x9B, 0x00, 0xF1, 0x81, 0xA4, 0x75, 0xE5, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x7C, 0x9B, +0xBC, 0x35, 0x21, 0x4D, 0x75, 0xE5, 0xE0, 0xA5, +0x9E, 0x33, 0x9A, 0x34, 0xCC, 0xEC, 0x78, 0x33, +0x9C, 0x34, 0x4C, 0xEF, 0x8D, 0xEB, 0xED, 0xEB, +0x00, 0xF6, 0x60, 0x33, 0x00, 0xF6, 0x63, 0x33, +0x4C, 0xEB, 0x60, 0xC5, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xC0, 0xF0, 0x97, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, +0x06, 0x23, 0x80, 0xF0, 0x6C, 0x9A, 0x08, 0x6C, +0x8D, 0xEB, 0x80, 0xF0, 0x6C, 0xDA, 0x20, 0xE8, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF7, 0xB9, 0xA3, +0x7F, 0x6B, 0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, +0x4C, 0xEC, 0x02, 0x23, 0x00, 0x18, 0x14, 0x0A, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, +0x80, 0xF6, 0x0C, 0x48, 0x04, 0xD4, 0xC0, 0xF0, +0x8A, 0xA0, 0x00, 0x18, 0xF4, 0x05, 0x01, 0x72, +0x15, 0x61, 0xA0, 0xF0, 0x6D, 0xA0, 0x7F, 0x6A, +0x6C, 0xEA, 0x2C, 0xEA, 0x0F, 0x22, 0xE3, 0xF2, +0x74, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xE3, 0xF2, 0x54, 0xC0, 0xE3, 0xF2, 0x54, 0xA0, +0x07, 0x6B, 0x6C, 0xEA, 0x03, 0x2A, 0x04, 0x94, +0x00, 0x18, 0x42, 0x09, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, +0x80, 0xF6, 0x0C, 0x48, 0x04, 0xD4, 0xC0, 0xF0, +0x8A, 0xA0, 0x00, 0x18, 0xF4, 0x05, 0x01, 0x6B, +0x6E, 0xEA, 0x29, 0x2A, 0xA0, 0xF0, 0x8D, 0xA0, +0x7F, 0x6B, 0x8C, 0xEB, 0x2C, 0xEB, 0x23, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF2, 0x6C, 0x9B, +0x02, 0x6C, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0x70, 0x9A, 0x40, 0xA3, 0x2C, 0xEA, +0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, 0xE3, 0xF2, +0x70, 0xA0, 0x03, 0x6A, 0x4B, 0xEA, 0x4C, 0xEB, +0xE3, 0xF2, 0x70, 0xC0, 0xE3, 0xF2, 0x74, 0xA0, +0x6C, 0xEA, 0xE3, 0xF2, 0x54, 0xC0, 0xE3, 0xF2, +0x54, 0xA0, 0x07, 0x6B, 0x6C, 0xEA, 0x03, 0x2A, +0x04, 0x94, 0x00, 0x18, 0x42, 0x09, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, +0x80, 0xF6, 0x0C, 0x48, 0x04, 0xD4, 0xC0, 0xF0, +0x8A, 0xA0, 0x00, 0x18, 0xF4, 0x05, 0x01, 0x72, +0x1E, 0x61, 0xA0, 0xF0, 0x6D, 0xA0, 0x7F, 0x6A, +0x6C, 0xEA, 0x2C, 0xEA, 0x18, 0x22, 0xA0, 0xF0, +0x8E, 0xA0, 0x10, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x2C, 0xEB, 0x20, 0x73, 0x05, 0x60, 0x01, 0x72, +0x03, 0x61, 0x00, 0x18, 0xDB, 0x0B, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF7, 0x79, 0xA2, +0x7F, 0x6A, 0x6C, 0xEA, 0x02, 0x72, 0x03, 0x60, +0x04, 0x94, 0x00, 0x18, 0x2D, 0x0A, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, 0xC0, 0xF0, +0x8A, 0xA0, 0x00, 0x18, 0xF4, 0x05, 0x01, 0x6B, +0x6E, 0xEA, 0x1B, 0x2A, 0xA0, 0xF0, 0xAD, 0xA0, +0x7F, 0x6B, 0xFF, 0x6C, 0xAC, 0xEB, 0x15, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF2, 0x6C, 0x9B, +0x02, 0x6D, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0x70, 0x9A, 0x40, 0xA3, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0xA0, 0xF0, +0xD5, 0xA0, 0x55, 0x4C, 0x00, 0x6D, 0x00, 0x18, +0x2B, 0x1D, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0x80, 0xF6, +0x0C, 0x4B, 0x8C, 0xEA, 0x04, 0xF0, 0x83, 0xA3, +0x01, 0x6D, 0x87, 0xEA, 0xAC, 0xEC, 0x05, 0x24, +0x04, 0xF0, 0x81, 0xA3, 0x01, 0x4C, 0x04, 0xF0, +0x81, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, +0x7F, 0xA3, 0x02, 0x73, 0x03, 0x60, 0x82, 0x67, +0x00, 0x18, 0xDA, 0x0A, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, +0x0C, 0x4B, 0xE3, 0xF2, 0xD1, 0xA3, 0x04, 0x67, +0x02, 0x6D, 0x86, 0x67, 0xFF, 0x6A, 0xAC, 0xEC, +0x4C, 0xEC, 0x4C, 0xE8, 0x1F, 0x24, 0xFF, 0xF6, +0x1E, 0x4A, 0xCC, 0xEA, 0xE3, 0xF2, 0x51, 0xC3, +0x0F, 0x28, 0x30, 0xF0, 0x20, 0x6C, 0x40, 0xF3, +0x90, 0x9C, 0x80, 0xA4, 0x8C, 0xED, 0x03, 0x25, +0x08, 0x6C, 0x4D, 0xEC, 0x03, 0x10, 0x09, 0x6C, +0x8B, 0xEC, 0x4C, 0xEC, 0xE3, 0xF2, 0x91, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF7, 0x79, 0xA2, +0x7F, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x90, 0x67, +0x00, 0x18, 0x42, 0x09, 0xB0, 0x67, 0x01, 0x6C, +0x00, 0x18, 0x14, 0x10, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, +0x0C, 0x4B, 0xE3, 0xF2, 0xD1, 0xA3, 0x04, 0x67, +0x01, 0x6D, 0x86, 0x67, 0xFF, 0x6A, 0xAC, 0xEC, +0x4C, 0xEC, 0x4C, 0xE8, 0x18, 0x24, 0xFF, 0xF6, +0x1F, 0x4A, 0xCC, 0xEA, 0xE3, 0xF2, 0x51, 0xC3, +0x0F, 0x28, 0x30, 0xF0, 0x20, 0x6C, 0x40, 0xF3, +0x90, 0x9C, 0x80, 0xA4, 0x8C, 0xED, 0x03, 0x25, +0x04, 0x6C, 0x4D, 0xEC, 0x03, 0x10, 0x05, 0x6C, +0x8B, 0xEC, 0x4C, 0xEC, 0xE3, 0xF2, 0x91, 0xC3, +0x90, 0x67, 0x00, 0x18, 0x42, 0x09, 0xB0, 0x67, +0x00, 0x6C, 0x00, 0x18, 0x14, 0x10, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x18, +0xA2, 0x21, 0x02, 0x67, 0x01, 0x6A, 0x0C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x01, 0x6D, 0x02, 0x10, +0x00, 0x6C, 0xA4, 0x67, 0x00, 0x18, 0x94, 0x06, +0x40, 0x6A, 0x0C, 0xEA, 0x0F, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF5, 0x54, 0x9A, 0x60, 0xA2, +0x00, 0xF6, 0x60, 0x33, 0x00, 0xF6, 0x63, 0x33, +0x00, 0x53, 0x00, 0x6B, 0x02, 0x61, 0x80, 0x6B, +0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x03, 0xF3, 0x88, 0xA2, +0x03, 0xF3, 0xA9, 0xA2, 0x03, 0xF3, 0xCD, 0xA2, +0x02, 0x6F, 0x00, 0x18, 0x13, 0x07, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF6, 0x70, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0x87, 0x23, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, +0xA0, 0xF0, 0x6D, 0xA0, 0x7F, 0x6A, 0xFF, 0x69, +0x6C, 0xEA, 0x1E, 0x22, 0xA0, 0xF0, 0x90, 0xA0, +0x96, 0x34, 0x2C, 0xEC, 0x00, 0x18, 0xC7, 0x21, +0x02, 0x6B, 0x4C, 0xEB, 0x2C, 0xEB, 0x07, 0x23, +0xA0, 0xF0, 0x90, 0xA0, 0x96, 0x34, 0x2C, 0xEC, +0x00, 0x18, 0xFA, 0x09, 0x0D, 0x10, 0xA0, 0xF0, +0x90, 0xA0, 0xE3, 0xF2, 0x70, 0xA0, 0x05, 0x6A, +0x4B, 0xEA, 0x96, 0x34, 0x6C, 0xEA, 0x2C, 0xEC, +0xE3, 0xF2, 0x50, 0xC0, 0x00, 0x18, 0x42, 0x09, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xA0, 0xF0, 0x8D, 0xA2, 0x7F, 0x6B, 0x8C, 0xEB, +0x07, 0x23, 0xA0, 0xF0, 0x90, 0xA2, 0xFF, 0x6A, +0x96, 0x34, 0x4C, 0xEC, 0x00, 0x18, 0x44, 0x0A, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x00, 0x18, 0x2C, 0x09, 0x00, 0x6C, 0x00, 0x18, +0xD9, 0x07, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x04, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF6, +0x0C, 0x4C, 0xA0, 0xF0, 0xAD, 0xA4, 0x7F, 0x6B, +0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xE8, +0x09, 0x23, 0xE3, 0xF2, 0x90, 0xA4, 0x40, 0x6B, +0x8C, 0xEB, 0x4C, 0xEB, 0x03, 0x23, 0x90, 0x67, +0x00, 0x18, 0x96, 0x25, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x04, 0xF0, 0x65, 0xA2, +0x0E, 0xEB, 0x11, 0x2B, 0x04, 0xF0, 0x64, 0xA2, +0x1F, 0x6C, 0x6A, 0x32, 0x8C, 0xEA, 0x47, 0xE8, +0x01, 0x6C, 0x8C, 0xEA, 0x08, 0x22, 0x02, 0x6A, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0x87, 0x23, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF6, 0x4F, 0xA2, 0x01, 0x6B, +0x47, 0xE8, 0x6C, 0xEA, 0x03, 0x22, 0x90, 0x67, +0x00, 0x18, 0x40, 0x10, 0x30, 0xF0, 0x20, 0x69, +0x80, 0xF6, 0x0C, 0x49, 0xE3, 0xF7, 0x5C, 0xA1, +0x01, 0x6B, 0x47, 0xE8, 0x6C, 0xEA, 0x06, 0x22, +0x90, 0x67, 0x00, 0x18, 0x9D, 0x16, 0x00, 0x6A, +0xE3, 0xF7, 0x5E, 0xC1, 0x90, 0x67, 0x00, 0x18, +0xCD, 0x07, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xBC, 0x22, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x03, 0x18, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x00, 0x18, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x17, 0x1B, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x7C, 0x9B, +0xFF, 0x6A, 0x4C, 0xEE, 0x6D, 0xE4, 0x08, 0x68, +0x80, 0xA3, 0xDB, 0xE0, 0x02, 0x67, 0x4C, 0xED, +0x07, 0xEE, 0xD0, 0x67, 0x4C, 0xEF, 0x04, 0xED, +0x4C, 0xEC, 0xCC, 0xEF, 0x0F, 0xE8, 0x8C, 0xE8, +0xE4, 0xED, 0xED, 0xE8, 0x4C, 0xE8, 0x00, 0xC3, +0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x5C, 0x9A, +0xFF, 0xF7, 0x1F, 0x6B, 0x8C, 0xEB, 0x4D, 0xE3, +0x40, 0xA3, 0xFF, 0x6C, 0x8C, 0xEE, 0x08, 0x6B, +0xDB, 0xE3, 0x8C, 0xED, 0x8C, 0xEA, 0x64, 0x67, +0x47, 0xED, 0x67, 0xEE, 0x6C, 0xEA, 0x8C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x01, 0x74, 0x0D, 0x60, +0x06, 0x24, 0x02, 0x74, 0x10, 0x60, 0x03, 0x74, +0x00, 0x6A, 0x1C, 0x61, 0x14, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA8, 0x35, 0x00, 0xF5, 0x58, 0x9A, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA8, 0x35, +0x00, 0xF5, 0x5C, 0x9A, 0x05, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF5, 0x40, 0x9A, 0xA8, 0x35, +0x55, 0xE5, 0x40, 0x9D, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF5, 0x44, 0x9A, 0xA8, 0x35, +0x55, 0xE5, 0x40, 0x9D, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x81, 0xF4, 0x10, 0x6B, 0x83, 0xF1, 0x74, 0xDA, +0x00, 0xF2, 0x00, 0x4B, 0x83, 0xF1, 0x78, 0xDA, +0x01, 0xF2, 0x00, 0x4B, 0x83, 0xF1, 0x7C, 0xDA, +0x00, 0xF2, 0x00, 0x4B, 0xA3, 0xF1, 0x60, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF5, 0x48, 0x9A, 0xFF, 0x6B, 0x40, 0xA2, +0x6C, 0xEA, 0x5E, 0x32, 0x6C, 0xEA, 0x20, 0xE8, +0xFF, 0x6B, 0x6C, 0xEC, 0x1F, 0x6D, 0x8C, 0xED, +0x96, 0x34, 0x6C, 0xEC, 0x01, 0x74, 0x03, 0x6A, +0x0A, 0x60, 0x10, 0x24, 0x04, 0x74, 0x05, 0x60, +0x06, 0x74, 0x00, 0x6A, 0x12, 0x61, 0xEF, 0x4A, +0x02, 0x10, 0x07, 0x6A, 0x4B, 0xEA, 0xAB, 0xE2, +0x44, 0x32, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, +0x43, 0x32, 0x20, 0xE8, 0x08, 0x6A, 0xAB, 0xE2, +0x44, 0x32, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, +0x43, 0x32, 0x20, 0xE8, 0x00, 0xF6, 0x80, 0x34, +0x00, 0xF6, 0x83, 0x34, 0x47, 0x44, 0x5C, 0x4A, +0xFF, 0x6B, 0x6C, 0xEA, 0x77, 0x5A, 0x00, 0x6A, +0x06, 0x60, 0x00, 0x54, 0x64, 0x6A, 0x03, 0x60, +0x47, 0x44, 0x5D, 0x4A, 0x6C, 0xEA, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6B, 0x8C, 0xEB, 0xFF, 0xF7, 0x1F, 0x6A, +0x81, 0x46, 0x26, 0x67, 0xAC, 0xEA, 0x06, 0x2C, +0x83, 0x67, 0xA2, 0x67, 0x00, 0x18, 0x0D, 0x20, +0x02, 0x67, 0x0A, 0x10, 0x83, 0x67, 0xA2, 0x67, +0x00, 0x18, 0x0D, 0x20, 0x02, 0x67, 0x91, 0x67, +0x00, 0x18, 0xC3, 0x18, 0x2C, 0xE8, 0x06, 0xEA, +0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x6C, 0x9B, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x69, 0xE2, 0x00, 0x9A, 0x41, 0x45, +0x25, 0x67, 0x05, 0x22, 0x85, 0x67, 0x00, 0x18, +0xC3, 0x18, 0x2C, 0xE8, 0x06, 0xEA, 0x50, 0x67, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, +0x41, 0x45, 0x25, 0x67, 0x0C, 0xD6, 0x8C, 0xE8, +0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x41, 0xE0, 0xC0, 0xD8, 0x17, 0x10, +0x01, 0x6D, 0x90, 0x67, 0xAB, 0xED, 0x00, 0x18, +0x5B, 0x20, 0x91, 0x67, 0x04, 0xD2, 0x00, 0x18, +0xC3, 0x18, 0x0C, 0x93, 0x64, 0xEA, 0x43, 0x67, +0x04, 0x93, 0x2C, 0xEA, 0x2F, 0xE9, 0x6C, 0xE9, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x6C, 0x9B, +0x2D, 0xEA, 0x61, 0xE0, 0x40, 0xD8, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x54, 0x2C, +0x06, 0x5A, 0xE0, 0xF0, 0x1E, 0x60, 0x30, 0xF0, +0x20, 0x6B, 0x48, 0x32, 0x60, 0xF1, 0x04, 0x4B, +0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, 0x01, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xE8, 0x20, 0xF5, +0x2C, 0x9A, 0x5A, 0x10, 0x01, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0x0B, 0xE8, 0x20, 0xF5, 0x34, 0x9A, +0x99, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x2C, 0x9A, 0x01, 0x68, 0x0B, 0xE8, 0xB0, 0x67, +0xD1, 0x67, 0xA1, 0xF4, 0x10, 0x6C, 0x00, 0x18, +0x69, 0x20, 0xB0, 0x67, 0xD1, 0x67, 0xA1, 0xF6, +0x10, 0x6C, 0x00, 0x18, 0x69, 0x20, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF5, 0x10, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF5, 0x38, 0x9A, 0x6D, 0x10, +0xA1, 0xF4, 0x10, 0x6C, 0xFF, 0x6D, 0x77, 0x6E, +0x00, 0x18, 0x69, 0x20, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF5, 0xCC, 0x9A, 0x01, 0x6D, 0xA1, 0xF6, +0x10, 0x6C, 0xAB, 0xED, 0x00, 0x18, 0x69, 0x20, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0xA4, 0x9A, +0xA1, 0xF4, 0x14, 0x6C, 0x00, 0x6E, 0x00, 0x18, +0x69, 0x20, 0x30, 0xF0, 0x20, 0x6A, 0xA1, 0xF6, +0x14, 0x6C, 0x20, 0xF5, 0xB0, 0x9A, 0x31, 0x10, +0x06, 0x5A, 0xA0, 0xF0, 0x0A, 0x60, 0x30, 0xF0, +0x20, 0x6B, 0x48, 0x32, 0x60, 0xF1, 0x1C, 0x4B, +0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, 0x01, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xE8, 0x20, 0xF5, +0x3C, 0x9A, 0x27, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF5, 0x3C, 0x9A, 0x01, 0x68, 0x0B, 0xE8, +0xB0, 0x67, 0xA1, 0xF4, 0x10, 0x6C, 0xD1, 0x67, +0x00, 0x18, 0x69, 0x20, 0xB0, 0x67, 0xA1, 0xF6, +0x10, 0x6C, 0xD1, 0x67, 0x00, 0x18, 0x69, 0x20, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x10, 0x9A, +0xA1, 0xF4, 0x14, 0x6C, 0x00, 0x6E, 0xB0, 0x67, +0x00, 0x18, 0x69, 0x20, 0xA1, 0xF6, 0x14, 0x6C, +0xB0, 0x67, 0x00, 0x6E, 0x78, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF5, 0x20, 0x9A, 0x01, 0x68, +0x0B, 0xE8, 0xB0, 0x67, 0xD1, 0x67, 0xA1, 0xF4, +0x10, 0x6C, 0x00, 0x18, 0x69, 0x20, 0xB0, 0x67, +0xD1, 0x67, 0xA1, 0xF6, 0x10, 0x6C, 0x00, 0x18, +0x69, 0x20, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x10, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x24, 0x9A, 0xA1, 0xF4, 0x14, 0x6C, 0xB0, 0x67, +0xD1, 0x67, 0x00, 0x18, 0x69, 0x20, 0xA1, 0xF6, +0x14, 0x6C, 0xB0, 0x67, 0xD1, 0x67, 0x53, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x24, 0x9A, +0x01, 0x68, 0x0B, 0xE8, 0xB0, 0x67, 0xD1, 0x67, +0xA1, 0xF4, 0x10, 0x6C, 0x00, 0x18, 0x69, 0x20, +0xB0, 0x67, 0xD1, 0x67, 0xA1, 0xF6, 0x10, 0x6C, +0x00, 0x18, 0x69, 0x20, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF5, 0x10, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x24, 0x9A, 0xA1, 0xF4, 0x14, 0x6C, +0xB0, 0x67, 0xD1, 0x67, 0x00, 0x18, 0x69, 0x20, +0xA1, 0xF6, 0x14, 0x6C, 0xB0, 0x67, 0xD1, 0x67, +0x00, 0x18, 0x69, 0x20, 0x01, 0xF1, 0x00, 0x6C, +0x00, 0xF3, 0x03, 0x6D, 0x01, 0x6E, 0x27, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0xA8, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0xCC, 0x9A, +0xA1, 0xF4, 0x10, 0x6C, 0x00, 0x18, 0x69, 0x20, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0xC0, 0x9A, +0x01, 0x6D, 0xA1, 0xF6, 0x10, 0x6C, 0xAB, 0xED, +0x00, 0x18, 0x69, 0x20, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x04, 0x9A, 0xA1, 0xF4, 0x14, 0x6C, +0xB0, 0x67, 0xD0, 0x67, 0x00, 0x18, 0x69, 0x20, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0xB0, 0x9A, +0xA1, 0xF6, 0x14, 0x6C, 0xD0, 0x67, 0x00, 0x18, +0x69, 0x20, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, +0x4C, 0xEC, 0x04, 0xD5, 0x28, 0x2C, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF2, 0x14, 0x9A, 0x01, 0xF0, +0x08, 0x69, 0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, +0x00, 0x18, 0x69, 0x20, 0x21, 0xF0, 0x10, 0x6C, +0x0E, 0x6D, 0x08, 0x6E, 0x00, 0x18, 0x69, 0x20, +0x01, 0x6E, 0x21, 0xF0, 0x14, 0x6C, 0x03, 0x6D, +0x00, 0x18, 0x69, 0x20, 0x04, 0x95, 0x00, 0x6C, +0x00, 0x18, 0x80, 0x20, 0x91, 0x67, 0xB0, 0x67, +0xD0, 0x67, 0x00, 0x18, 0x69, 0x20, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF5, 0x68, 0x9A, 0x7F, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x0C, 0xEC, 0x0F, 0x5C, 0xAC, 0xE8, 0x09, 0x60, +0x00, 0x18, 0x2B, 0x20, 0x10, 0x22, 0x00, 0x18, +0x2B, 0x20, 0x01, 0x72, 0x00, 0x6C, 0x0B, 0x61, +0x04, 0x10, 0x00, 0x18, 0x2B, 0x20, 0x05, 0x2A, +0x01, 0x6C, 0xB0, 0x67, 0x00, 0x18, 0x07, 0x21, +0x02, 0x10, 0x00, 0x18, 0x2B, 0x20, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF0, 0x00, 0x4A, 0x88, 0x34, 0x91, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x50, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF5, 0xA0, 0x35, +0xCC, 0xEA, 0x40, 0xF5, 0xD4, 0x9B, 0x80, 0xAC, +0xAD, 0xEA, 0x01, 0x6D, 0xAB, 0xED, 0x4C, 0xEE, +0x00, 0x18, 0x69, 0x20, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x46, 0x67, 0xFF, 0x68, +0xFF, 0xF7, 0x1F, 0x69, 0x01, 0x4A, 0x0C, 0xD6, +0x0D, 0xD7, 0x8C, 0xE8, 0xAC, 0xE9, 0x04, 0x2A, +0x90, 0x67, 0xB1, 0x67, 0xC7, 0x67, 0x12, 0x10, +0xB1, 0x67, 0x90, 0x67, 0x00, 0x18, 0x0D, 0x20, +0x0C, 0x94, 0x04, 0xD2, 0x00, 0x18, 0xC3, 0x18, +0x0D, 0x96, 0x90, 0x67, 0xB1, 0x67, 0xC4, 0xEA, +0x0C, 0x92, 0x4C, 0xEE, 0x4F, 0xEB, 0x04, 0x92, +0x4C, 0xEB, 0x6D, 0xEE, 0x00, 0x18, 0x32, 0x21, +0x01, 0x6C, 0x00, 0x18, 0x9B, 0x19, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, 0x68, 0x40, +0xE4, 0x4B, 0x4C, 0xEB, 0x0D, 0x5B, 0x09, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x61, 0xF0, 0x00, 0x6C, +0x40, 0xF5, 0xB8, 0x9A, 0x80, 0xF4, 0x14, 0x6E, +0x2F, 0x10, 0x68, 0x40, 0xD6, 0x4B, 0x4C, 0xEB, +0x0F, 0x5B, 0x09, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x61, 0xF0, 0x00, 0x6C, 0x40, 0xF5, 0xB8, 0x9A, +0x40, 0xF4, 0x13, 0x6E, 0x21, 0x10, 0x68, 0x40, +0xA4, 0x4B, 0x4C, 0xEB, 0x11, 0x5B, 0x09, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x61, 0xF0, 0x00, 0x6C, +0x40, 0xF5, 0xB8, 0x9A, 0x40, 0xF4, 0x12, 0x6E, +0x13, 0x10, 0x76, 0x58, 0x09, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x61, 0xF0, 0x00, 0x6C, 0x40, 0xF5, +0xB8, 0x9A, 0x00, 0xF4, 0x12, 0x6E, 0x08, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0xB8, 0x9A, +0x61, 0xF0, 0x00, 0x6C, 0x61, 0xF1, 0x0A, 0x6E, +0x00, 0x18, 0x69, 0x20, 0x00, 0x69, 0x68, 0x40, +0xE4, 0x4B, 0xFF, 0x6A, 0x4C, 0xEB, 0x1D, 0x5B, +0x02, 0x60, 0x02, 0x4A, 0x0E, 0x10, 0x68, 0x40, +0xA4, 0x4B, 0x4C, 0xEB, 0x29, 0x5B, 0x03, 0x60, +0x00, 0xF3, 0x01, 0x6A, 0x06, 0x10, 0x00, 0x6A, +0x8D, 0x58, 0x04, 0xD2, 0x03, 0x61, 0x00, 0xF5, +0x01, 0x4A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF5, 0x9C, 0x9A, 0x00, 0x18, 0xC3, 0x18, +0x04, 0x97, 0x91, 0x67, 0x18, 0x6D, 0xE4, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0xC0, 0x9A, +0x0D, 0xEF, 0x01, 0x49, 0x00, 0x18, 0x41, 0x21, +0x04, 0x71, 0xD5, 0x61, 0x68, 0x40, 0xE4, 0x4B, +0xFF, 0x6A, 0x4C, 0xEB, 0x1D, 0x5B, 0x05, 0x60, +0x41, 0xF1, 0x18, 0x6C, 0x1F, 0x6D, 0x01, 0x6E, +0x10, 0x10, 0x68, 0x40, 0xA4, 0x4B, 0x4C, 0xEB, +0x2D, 0x5B, 0x05, 0x60, 0x41, 0xF1, 0x18, 0x6C, +0x1F, 0x6D, 0x02, 0x6E, 0x06, 0x10, 0x95, 0x58, +0x06, 0x61, 0x41, 0xF1, 0x18, 0x6C, 0x1F, 0x6D, +0x03, 0x6E, 0x00, 0x18, 0x69, 0x20, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, +0x10, 0xF0, 0x21, 0x6A, 0x90, 0xF6, 0x09, 0x4A, +0x40, 0xDB, 0x00, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF5, 0xA4, 0x9A, 0xFF, 0x6C, 0x40, 0xA5, +0xA0, 0xA5, 0x8C, 0xEA, 0xAC, 0xEC, 0x4E, 0xEC, +0x10, 0x24, 0x64, 0x73, 0x09, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0xE0, 0xF3, 0x80, 0x9B, 0x40, 0x6D, +0x60, 0x9C, 0xAD, 0xEB, 0x60, 0xDC, 0x20, 0xE8, +0x01, 0x4B, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEB, +0xE5, 0x17, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x70, 0x9B, 0x10, 0xF0, 0x21, 0x6A, +0xD0, 0xF6, 0x15, 0x4A, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF5, 0x48, 0x9A, 0x60, 0xA2, +0x01, 0x6A, 0x6C, 0xEA, 0xF8, 0x2A, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, 0x10, 0xF0, +0x21, 0x6A, 0xD0, 0xF6, 0x16, 0x4A, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF5, 0x6C, 0x9B, 0xFF, 0x6A, 0xAC, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF5, 0x4C, 0x9A, 0xFF, 0x6B, 0x40, 0xA2, +0x6C, 0xEA, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xED, +0xFF, 0x75, 0x4C, 0xEC, 0xCC, 0xEA, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, +0x71, 0xE4, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x0C, 0x4B, 0x71, 0xE4, 0xC3, 0xF2, +0x7C, 0xA4, 0xAC, 0xEA, 0xAF, 0xED, 0x6C, 0xED, +0xAD, 0xEA, 0xC3, 0xF2, 0x5C, 0xC4, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, +0x10, 0xF0, 0x21, 0x6A, 0xFF, 0x69, 0x70, 0xF7, +0x01, 0x4A, 0x8C, 0xE9, 0x40, 0xDB, 0x00, 0x68, +0x1D, 0x10, 0x82, 0xF3, 0x08, 0x70, 0x09, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x60, 0x9A, +0x10, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x1C, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, +0x4C, 0xE8, 0x14, 0x6C, 0x00, 0x18, 0x9B, 0x19, +0x33, 0x58, 0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF4, 0x50, 0x9A, 0x01, 0x6B, 0x40, 0xA2, +0x6C, 0xEA, 0x0B, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF5, 0x50, 0x9A, 0x01, 0x6B, 0x40, 0x9A, +0x42, 0x32, 0x5E, 0x32, 0x6C, 0xEA, 0x2E, 0xEA, +0xD8, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, +0x70, 0x9B, 0x10, 0xF0, 0x21, 0x6A, 0x70, 0xF7, +0x02, 0x4A, 0x40, 0xDB, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, 0x30, 0xF0, +0x20, 0x6A, 0x6E, 0x98, 0xC0, 0xF4, 0x50, 0x9A, +0x60, 0xDA, 0x00, 0x18, 0xB5, 0x21, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF3, 0x7C, 0x9A, 0xEF, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x00, 0x6C, +0x00, 0x18, 0xD8, 0x21, 0x01, 0x6C, 0x00, 0x18, +0xD3, 0x28, 0xE3, 0xF2, 0x70, 0xA0, 0x7F, 0x6A, +0x05, 0x97, 0x6C, 0xEA, 0xE3, 0xF2, 0x50, 0xC0, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0xE3, 0xF2, +0x90, 0xA2, 0x80, 0x6B, 0x6B, 0xEB, 0x8D, 0xEB, +0xE3, 0xF2, 0x70, 0xC2, 0x03, 0xF3, 0x60, 0xAA, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x54, 0x9A, +0x00, 0x6C, 0xFF, 0x68, 0x60, 0xCA, 0x00, 0x18, +0xD3, 0x28, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, +0x7C, 0x9A, 0x10, 0x6C, 0x40, 0xA3, 0x0C, 0xEA, +0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, 0x01, 0x6C, +0x00, 0x18, 0xD8, 0x21, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF4, 0x50, 0x9A, 0x00, 0x6B, 0x01, 0x6C, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, +0x68, 0x9A, 0x40, 0xA3, 0x0C, 0xEA, 0x8D, 0xEA, +0x0C, 0xEA, 0x40, 0xC3, 0x14, 0x6C, 0x00, 0x18, +0x9B, 0x19, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, +0x70, 0x9B, 0x10, 0xF0, 0x21, 0x6A, 0xB1, 0xF0, +0x1D, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF5, 0x58, 0x9A, 0x40, 0xA2, +0x12, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, +0x5C, 0x9A, 0x40, 0xA2, 0x0C, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF5, 0x40, 0x9A, 0x40, 0xA2, +0x06, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, +0x44, 0x9A, 0x40, 0xA2, 0x15, 0x22, 0xE0, 0xF3, +0x09, 0x70, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0x60, 0x9A, 0x20, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x00, 0x6A, 0x09, 0x10, +0x32, 0x6C, 0x00, 0x18, 0x9B, 0x19, 0x01, 0x48, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0xD3, 0x17, +0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x9F, 0xE7, 0x01, 0x4F, +0x00, 0xF1, 0x00, 0x5F, 0x44, 0x67, 0x05, 0x67, +0x0E, 0xD6, 0x06, 0xD7, 0x13, 0x61, 0xC7, 0x45, +0x0E, 0x95, 0x00, 0x6B, 0x05, 0x4E, 0x4D, 0xED, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, +0xFF, 0x6F, 0x83, 0x67, 0x4C, 0xEE, 0x01, 0x4F, +0x04, 0xD3, 0x05, 0xD3, 0x00, 0x18, 0x2D, 0x18, +0x00, 0x6C, 0x21, 0x10, 0x67, 0x45, 0x05, 0x4B, +0x07, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, +0x68, 0x9B, 0x07, 0x94, 0x0E, 0x95, 0x06, 0x97, +0x6C, 0xEC, 0x07, 0xD4, 0x07, 0x96, 0x00, 0x69, +0x91, 0x67, 0x4D, 0xED, 0x04, 0xD1, 0x05, 0xD1, +0x00, 0x18, 0x2D, 0x18, 0x06, 0x92, 0x07, 0x93, +0x0E, 0x95, 0xFF, 0x6F, 0x01, 0x4F, 0x91, 0x67, +0x79, 0xE2, 0x5F, 0xE7, 0x04, 0xD1, 0x05, 0xD1, +0x00, 0x18, 0x2D, 0x18, 0x91, 0x67, 0x00, 0x18, +0x18, 0x18, 0x67, 0x40, 0x05, 0x4B, 0x62, 0x32, +0x41, 0xC0, 0x42, 0x32, 0x42, 0xC0, 0x00, 0xF6, +0x62, 0x32, 0x43, 0xC0, 0x47, 0x40, 0x1D, 0x4A, +0x00, 0xF1, 0x4C, 0xC0, 0x42, 0x34, 0x00, 0xF6, +0x42, 0x32, 0x60, 0xC0, 0x00, 0xF1, 0x8D, 0xC0, +0x00, 0xF1, 0x4F, 0xC0, 0x82, 0x34, 0x41, 0xA0, +0x00, 0xF1, 0x8E, 0xC0, 0x80, 0xA0, 0x40, 0x32, +0x0F, 0x6D, 0x8D, 0xEA, 0x82, 0xA0, 0x03, 0x6E, +0x0A, 0x91, 0x80, 0x34, 0x80, 0x34, 0x4D, 0xEC, +0x43, 0xA0, 0x00, 0xF6, 0x40, 0x32, 0x8D, 0xEA, +0xE2, 0xA2, 0x83, 0xA2, 0xAC, 0xEF, 0x03, 0x4F, +0xEC, 0x37, 0xCC, 0xEC, 0x91, 0xE7, 0x71, 0xE4, +0x82, 0x37, 0x84, 0xC0, 0xE5, 0xC0, 0x00, 0xF6, +0x82, 0x34, 0xE2, 0x37, 0xE6, 0xC0, 0x87, 0xC0, +0xE3, 0xA2, 0x8A, 0xA2, 0x42, 0xA2, 0xEC, 0xEE, +0x8A, 0x34, 0x4C, 0xED, 0x03, 0x4D, 0xD9, 0xE4, +0xAC, 0x35, 0xB9, 0xE6, 0x6D, 0xE6, 0x62, 0x32, +0x00, 0xF1, 0x70, 0xC0, 0x00, 0xF1, 0x51, 0xC0, +0x00, 0xF6, 0x62, 0x33, 0x42, 0x32, 0x00, 0xF1, +0x52, 0xC0, 0x00, 0xF1, 0x73, 0xC0, 0x0B, 0x97, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0xFF, 0x74, 0xAC, 0xEA, +0x05, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF1, +0x57, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x0C, 0x4B, 0xC3, 0xF2, 0xAB, 0xA3, +0x8C, 0xEA, 0x8F, 0xEC, 0xAC, 0xEC, 0x8D, 0xEA, +0xC3, 0xF2, 0x4B, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x68, 0x26, 0x67, 0x0C, 0xE9, 0x53, 0x71, +0x0C, 0xEC, 0x0C, 0xED, 0x09, 0x60, 0x06, 0x2C, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x56, 0xA2, +0xAD, 0xEA, 0x0B, 0x10, 0x00, 0x18, 0x9A, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xC3, 0xF2, 0x6B, 0xA2, 0xC3, 0xF2, 0x4A, 0xA2, +0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF2, +0x60, 0x9B, 0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF1, 0x34, 0xC2, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF5, 0x6C, 0x9A, 0x7F, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF5, 0x50, 0x9A, 0x9D, 0x67, 0x60, 0xA2, +0x01, 0x6A, 0x4F, 0xCC, 0x4C, 0xEB, 0x72, 0xC4, +0x02, 0x6B, 0x70, 0xC4, 0x04, 0x04, 0x00, 0x18, +0xCA, 0x19, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF6, 0x51, 0xA2, +0xFF, 0x63, 0x05, 0x5A, 0x2C, 0x60, 0x30, 0xF0, +0x20, 0x6B, 0x48, 0x32, 0xC0, 0xF1, 0x14, 0x4B, +0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF1, 0x48, 0x9A, 0xFF, 0xF7, +0x1F, 0x6B, 0x40, 0x9A, 0x1A, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF1, 0x48, 0x9A, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x54, 0x9A, +0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, +0x54, 0x9A, 0x40, 0x9A, 0x50, 0x32, 0x00, 0xF5, +0x42, 0x32, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF5, 0x58, 0x9A, 0x40, 0x9A, 0xE1, 0xF7, +0x1F, 0x6B, 0x6C, 0xEA, 0x01, 0x10, 0x64, 0x6A, +0x7D, 0x67, 0x40, 0xCB, 0x7D, 0x67, 0x40, 0xAB, +0xFF, 0xF7, 0x1F, 0x6B, 0x01, 0x63, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, +0x04, 0xF0, 0xA4, 0xA3, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x03, 0x6C, 0x8B, 0xEC, 0xAC, 0xEC, +0x04, 0xF0, 0x84, 0xC3, 0x04, 0xF0, 0xE6, 0xAB, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF6, 0x00, 0x4B, +0x00, 0x6D, 0x14, 0x6E, 0xD8, 0xED, 0x30, 0xF0, +0x20, 0x6C, 0x80, 0xF6, 0x0C, 0x4C, 0x12, 0xEE, +0x91, 0xE6, 0x04, 0xF0, 0x10, 0xA4, 0x01, 0x6E, +0xCC, 0xE8, 0x19, 0x20, 0x04, 0xF0, 0x90, 0xA4, +0xFF, 0x68, 0x86, 0x34, 0xCC, 0xEC, 0x0C, 0xEC, +0x12, 0x24, 0x80, 0xAB, 0x5B, 0xEC, 0x01, 0x2A, +0xE5, 0xE8, 0x12, 0xEC, 0x81, 0xCB, 0x82, 0xAB, +0x98, 0xEF, 0x12, 0xEC, 0x5A, 0xEC, 0x01, 0x2A, +0xE5, 0xE8, 0x12, 0xEC, 0x82, 0xCB, 0x81, 0xAB, +0x02, 0x2C, 0xC1, 0xCB, 0x82, 0xCB, 0x01, 0x4D, +0x0A, 0x75, 0x14, 0x4B, 0xD6, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, 0x04, 0xF0, +0x46, 0xCB, 0x04, 0xF0, 0x86, 0xAB, 0x04, 0xF0, +0x48, 0xAB, 0x01, 0x90, 0x5B, 0xEC, 0x01, 0x2A, +0xE5, 0xE8, 0x04, 0xF0, 0x84, 0xA3, 0x12, 0xEA, +0x04, 0xF0, 0x4A, 0xCB, 0x58, 0x67, 0x04, 0xF0, +0x4C, 0xCB, 0x02, 0x6A, 0x8D, 0xEA, 0x04, 0xF0, +0x44, 0xC3, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, +0x04, 0xF0, 0xA4, 0xA3, 0x02, 0x6C, 0x00, 0x6A, +0xAC, 0xEC, 0x0C, 0x24, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF5, 0x5C, 0x9A, 0x00, 0x6C, 0x80, 0xC2, +0x03, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0x04, 0xF0, +0x44, 0xC3, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0x00, 0x6A, 0x14, 0x6C, 0x98, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, 0x01, 0x4A, +0x0A, 0x72, 0x12, 0xEC, 0x71, 0xE4, 0x04, 0xF0, +0xB0, 0xA4, 0x02, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, +0x04, 0xF0, 0x70, 0xC4, 0xEE, 0x61, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF6, 0x50, 0xA2, +0x01, 0x6B, 0x4C, 0xEB, 0x00, 0x6A, 0x1C, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF6, 0x08, 0x4A, +0x00, 0x6B, 0xA0, 0x9A, 0x8E, 0xED, 0x0F, 0x2D, +0x14, 0x6E, 0xD8, 0xEB, 0x30, 0xF0, 0x20, 0x6D, +0x80, 0xF6, 0x0C, 0x4D, 0x12, 0xEE, 0xB9, 0xE6, +0x04, 0xF0, 0xF0, 0xA6, 0x02, 0x6D, 0xAB, 0xED, +0xEC, 0xED, 0x04, 0xF0, 0xB0, 0xC6, 0x01, 0x4B, +0x0A, 0x73, 0x14, 0x4A, 0xEA, 0x61, 0x01, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0x7D, 0x67, 0x0B, 0xD5, 0x4C, 0xEE, 0x20, 0xF0, +0xB8, 0xA3, 0x30, 0xF0, 0x20, 0x6B, 0x0A, 0xD4, +0x04, 0xD6, 0x80, 0xF6, 0x0C, 0x4B, 0x04, 0xF0, +0xC4, 0xA3, 0x01, 0x6C, 0x00, 0xF6, 0xE0, 0x31, +0xCC, 0xEC, 0x00, 0xF6, 0x23, 0x31, 0x6C, 0x24, +0x18, 0x25, 0x01, 0x75, 0x69, 0x61, 0x0A, 0x94, +0x67, 0x24, 0x04, 0x95, 0x4A, 0xED, 0x64, 0x60, +0x7F, 0x71, 0x62, 0x60, 0xFF, 0xF7, 0x1F, 0x51, +0x5F, 0x61, 0x04, 0xF0, 0x06, 0xAB, 0x1B, 0xED, +0x01, 0x28, 0xE5, 0xE8, 0x12, 0xE8, 0x4C, 0xE8, +0x01, 0x6A, 0x05, 0xD2, 0x18, 0x28, 0x02, 0x67, +0x16, 0x10, 0x0A, 0x94, 0x51, 0x24, 0x04, 0x95, +0xFF, 0xF7, 0x1F, 0x75, 0x4D, 0x60, 0x7F, 0x71, +0x4B, 0x60, 0xFF, 0xF7, 0x1F, 0x51, 0x48, 0x61, +0x04, 0xF0, 0x08, 0xAB, 0x1B, 0xED, 0x01, 0x28, +0xE5, 0xE8, 0x12, 0xE8, 0x4C, 0xE8, 0x00, 0x6A, +0x05, 0xD2, 0x01, 0x28, 0x01, 0x68, 0x0A, 0x94, +0x00, 0x18, 0x2E, 0x23, 0x00, 0x6B, 0x14, 0x6C, +0x98, 0xEB, 0x30, 0xF0, 0x20, 0x6E, 0x1C, 0x65, +0x80, 0xF6, 0x0C, 0x4E, 0x01, 0x6D, 0xFF, 0x6A, +0xE3, 0x67, 0x4C, 0xEF, 0x12, 0xEC, 0xD1, 0xE4, +0x04, 0xF0, 0x90, 0xA4, 0xAC, 0xEC, 0x4C, 0xEC, +0x24, 0x2C, 0x78, 0x67, 0x78, 0xEF, 0x05, 0x97, +0xE9, 0x4B, 0x12, 0xEA, 0xC9, 0xE2, 0xE4, 0x36, +0x04, 0xF0, 0xF0, 0xA2, 0xEC, 0xEB, 0xCD, 0xEB, +0x0A, 0x96, 0xAD, 0xEB, 0x04, 0xF0, 0xDC, 0xDA, +0x0B, 0x97, 0xDD, 0x67, 0x24, 0xF0, 0xE0, 0xDA, +0xE7, 0x46, 0x09, 0x4F, 0xC0, 0xAF, 0x04, 0xF0, +0x98, 0xCA, 0x04, 0xF0, 0x16, 0xCA, 0x04, 0xF0, +0xD4, 0xCA, 0x04, 0xF0, 0x32, 0xC2, 0x04, 0xF0, +0x91, 0xC2, 0x04, 0xF0, 0x70, 0xC2, 0x45, 0x67, +0x04, 0x10, 0x01, 0x4B, 0x0A, 0x73, 0xC7, 0x61, +0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x06, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF6, 0x04, 0x4A, 0x00, 0x6C, +0x57, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF6, +0x04, 0x4A, 0x00, 0x6B, 0x14, 0x6D, 0xB8, 0xEB, +0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF6, 0x0C, 0x4C, +0x12, 0xED, 0x91, 0xE5, 0x04, 0xF0, 0xD0, 0xA4, +0x01, 0x6D, 0xAC, 0xEE, 0x08, 0x26, 0x04, 0xF0, +0x90, 0xA4, 0x86, 0x34, 0xAC, 0xEC, 0x03, 0x24, +0x80, 0xAA, 0x01, 0x4C, 0x80, 0xCA, 0x01, 0x4B, +0x0A, 0x73, 0x14, 0x4A, 0xE7, 0x61, 0x00, 0x18, +0xCA, 0x22, 0x7D, 0x67, 0x48, 0xCB, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0xA0, 0xF0, +0x70, 0xA2, 0x04, 0xF0, 0xA5, 0xA2, 0xFF, 0x6C, +0x76, 0x33, 0xAE, 0xEB, 0x18, 0x2B, 0xA0, 0xF0, +0xAD, 0xA2, 0x7F, 0x6B, 0xAC, 0xEB, 0x8C, 0xEB, +0x12, 0x23, 0xA0, 0xF0, 0xAE, 0xA2, 0x0F, 0x6B, +0xAC, 0xEB, 0x8C, 0xEB, 0x0C, 0x23, 0x7D, 0x67, +0xA8, 0xAB, 0xE3, 0xF2, 0x98, 0xA2, 0xFF, 0xF7, +0x1F, 0x6B, 0x6C, 0xED, 0x98, 0xED, 0x12, 0xEA, +0x6C, 0xEA, 0x7D, 0x67, 0x48, 0xCB, 0x5D, 0x67, +0x68, 0xAA, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF6, +0x92, 0xAC, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEB, +0x8E, 0xEB, 0x57, 0x23, 0x7D, 0x67, 0x88, 0xAB, +0x4C, 0xEC, 0x00, 0x18, 0xE9, 0x22, 0x51, 0x10, +0x14, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x0C, 0x4B, 0x12, 0xED, 0x6D, 0xE5, +0x04, 0xF0, 0xD0, 0xA3, 0x01, 0x6D, 0xAC, 0xEE, +0x0A, 0x26, 0x04, 0xF0, 0x70, 0xA3, 0x66, 0x33, +0xAC, 0xEB, 0xFF, 0x6D, 0xAC, 0xEB, 0x03, 0x2B, +0x60, 0xAA, 0x01, 0x4B, 0x60, 0xCA, 0x01, 0x4C, +0x0A, 0x74, 0x14, 0x4A, 0xE5, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0x04, 0xF0, +0x65, 0xA2, 0xFF, 0x73, 0x2E, 0x61, 0x04, 0xF0, +0x6C, 0xAA, 0x01, 0x4B, 0x04, 0xF0, 0x6C, 0xCA, +0x04, 0xF0, 0x6C, 0xAA, 0x04, 0xF0, 0x4A, 0xAA, +0x6E, 0xEA, 0x23, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF6, 0x04, 0x4A, 0x00, 0x6B, 0x14, 0x6D, +0xB8, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF6, +0x0C, 0x4C, 0x12, 0xED, 0x91, 0xE5, 0x04, 0xF0, +0xD0, 0xA4, 0x01, 0x6D, 0xAC, 0xEE, 0x08, 0x26, +0x04, 0xF0, 0x90, 0xA4, 0x86, 0x34, 0xAC, 0xEC, +0x03, 0x24, 0x80, 0xAA, 0x01, 0x4C, 0x80, 0xCA, +0x01, 0x4B, 0x0A, 0x73, 0x14, 0x4A, 0xE7, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x78, 0x67, 0x84, 0xF6, +0x78, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x80, 0xF0, 0x6C, 0x9A, 0x02, 0xF0, +0x00, 0x6C, 0x8D, 0xEB, 0x80, 0xF0, 0x6C, 0xDA, +0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xA4, 0xF6, 0x02, 0x48, +0x00, 0x69, 0x14, 0x6A, 0x58, 0xE9, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, 0x12, 0xEA, +0x69, 0xE2, 0x04, 0xF0, 0x90, 0xA2, 0x01, 0x6B, +0x8C, 0xEB, 0x2B, 0x23, 0x81, 0xA8, 0x60, 0xA8, +0x63, 0xEC, 0x27, 0x61, 0xFF, 0xF7, 0x7C, 0x80, +0x81, 0x43, 0x04, 0xD4, 0x0A, 0x2C, 0x00, 0xF0, +0x46, 0x98, 0x00, 0xF0, 0x8A, 0x98, 0x40, 0xEA, +0x5D, 0x67, 0x67, 0x42, 0x09, 0x4B, 0x40, 0xAB, +0x17, 0x10, 0xFF, 0xF7, 0x9B, 0xA0, 0x01, 0x4C, +0xFF, 0xF7, 0x9B, 0xC0, 0xFF, 0xF7, 0x9B, 0xA0, +0x82, 0xEB, 0x08, 0x60, 0x04, 0xF0, 0x90, 0xA2, +0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x04, 0xF0, +0x70, 0xC2, 0x07, 0x10, 0x00, 0xF0, 0x46, 0x98, +0x00, 0xF0, 0x8A, 0x98, 0x40, 0xEA, 0x00, 0x6A, +0x41, 0xC8, 0x01, 0x49, 0x0A, 0x71, 0x14, 0x48, +0xC4, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, +0x0C, 0x48, 0x04, 0xF0, 0x84, 0xA0, 0x01, 0x6B, +0x00, 0x6A, 0x8C, 0xEB, 0x23, 0x23, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF5, 0x5C, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x03, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, +0x04, 0xF0, 0x44, 0xC0, 0x00, 0x18, 0xCA, 0x22, +0x7D, 0x67, 0x48, 0xCB, 0x48, 0xAB, 0xFF, 0xF7, +0x1F, 0x6C, 0x4C, 0xEC, 0x00, 0x18, 0xE9, 0x22, +0x04, 0xF0, 0x64, 0xA0, 0x04, 0xF0, 0xC8, 0xA8, +0x02, 0x6A, 0x6D, 0xEA, 0x42, 0xF1, 0x1C, 0x6C, +0x01, 0x6D, 0x04, 0xF0, 0x44, 0xC0, 0x00, 0x18, +0x2B, 0x1D, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, +0x0C, 0x48, 0x04, 0xF0, 0x44, 0xA0, 0x03, 0x6B, +0x4C, 0xEB, 0x00, 0x6A, 0x24, 0x2B, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF5, 0x5C, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x84, 0xF6, 0x10, 0x4C, 0x60, 0xC2, +0x00, 0x6D, 0xD4, 0x6E, 0x00, 0x18, 0xA7, 0x19, +0x01, 0x6A, 0x04, 0xF0, 0x48, 0xC8, 0x64, 0x6A, +0x04, 0xF0, 0x46, 0xC8, 0x64, 0x6A, 0x04, 0xF0, +0x4A, 0xC8, 0x01, 0x6A, 0x04, 0xF0, 0x64, 0xA0, +0x4B, 0xEA, 0x04, 0xF0, 0x45, 0xC0, 0x7D, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x01, 0x6B, 0x6D, 0xEA, +0x04, 0xF0, 0x44, 0xC0, 0x43, 0x67, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xA7, 0x44, 0x30, 0xF0, 0x20, 0x6C, 0x01, 0x4D, +0x27, 0xF2, 0x08, 0x4C, 0x14, 0x6E, 0x00, 0x18, +0xAC, 0x19, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xE0, 0x63, 0x3F, 0x62, 0xFF, 0xF7, 0x1F, 0x6A, +0x01, 0x6B, 0xAC, 0xEA, 0x6B, 0xEB, 0xBD, 0x67, +0x70, 0xC5, 0x03, 0x6B, 0x72, 0xC5, 0x56, 0xC5, +0x04, 0x6B, 0x42, 0x32, 0x94, 0xC5, 0x73, 0xC5, +0x57, 0xC5, 0x04, 0x04, 0x00, 0x18, 0xE8, 0x19, +0x3F, 0x97, 0x20, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x4C, 0xED, 0x4C, 0xEE, 0x00, 0x18, 0xEE, 0x28, +0x05, 0x97, 0x00, 0x6A, 0x03, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x24, 0x67, 0x30, 0xF0, 0x20, 0x68, 0x00, 0x18, +0x43, 0x24, 0x47, 0xA1, 0x66, 0xA1, 0x80, 0xF6, +0x0C, 0x48, 0x86, 0xF3, 0x9C, 0xA0, 0x40, 0x32, +0x01, 0x69, 0x69, 0xE2, 0x71, 0x67, 0x8C, 0xEB, +0xA6, 0xF3, 0x4E, 0xC8, 0xFF, 0x6A, 0x15, 0x2B, +0xA6, 0xF3, 0x70, 0xC0, 0x02, 0x6B, 0x8C, 0xEB, +0x4C, 0xEB, 0x43, 0x23, 0x86, 0xF3, 0x7F, 0xA0, +0x0F, 0x6D, 0xA6, 0xF3, 0x80, 0xA0, 0x6C, 0xED, +0x72, 0x36, 0x4C, 0xED, 0x4C, 0xEE, 0x00, 0x18, +0x56, 0x24, 0x01, 0x72, 0x0D, 0x6A, 0x36, 0x61, +0x34, 0x10, 0xA6, 0xF3, 0xEC, 0xA8, 0x00, 0x6B, +0xA6, 0xF3, 0x70, 0xC0, 0x00, 0xF1, 0x01, 0x5F, +0x0C, 0x6A, 0x2C, 0x60, 0x00, 0x6A, 0xA6, 0xF3, +0x54, 0xC8, 0xA6, 0xF3, 0x56, 0xC8, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF2, 0x5C, 0x9A, 0xA6, 0xF3, +0x71, 0xC0, 0xA6, 0xF3, 0x72, 0xC0, 0x60, 0xAA, +0xFF, 0xF7, 0x1F, 0x6A, 0x86, 0xF3, 0xBD, 0xA0, +0x6C, 0xEA, 0x00, 0x6B, 0x04, 0xD3, 0x05, 0xD3, +0x83, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF5, +0x60, 0x9B, 0xB5, 0xE2, 0xBC, 0x35, 0x75, 0xE5, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0xC4, 0x9B, +0x30, 0xF0, 0x20, 0x6A, 0x47, 0xF2, 0x09, 0x4A, +0xD9, 0xE2, 0x00, 0x18, 0x2D, 0x18, 0xA6, 0xF3, +0x30, 0xC0, 0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, +0xA6, 0xF3, 0xB4, 0xA8, 0x30, 0xF0, 0x20, 0x6A, +0x47, 0xF2, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6C, +0x47, 0xF3, 0x0C, 0x4C, 0xB5, 0xE2, 0x04, 0x6E, +0x00, 0x18, 0xAC, 0x19, 0xC6, 0xF4, 0x63, 0xA0, +0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x05, 0x2A, 0xA6, 0xF3, 0x54, 0xA8, +0x04, 0x4A, 0xA6, 0xF3, 0x54, 0xC8, 0x30, 0xF0, +0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, 0xC6, 0xF4, +0x41, 0xA0, 0xC6, 0xF4, 0x80, 0xA0, 0x0F, 0x6D, +0x4C, 0xED, 0x52, 0x36, 0xFF, 0x69, 0x00, 0x18, +0x56, 0x24, 0x03, 0x2A, 0x00, 0x18, 0x1B, 0x29, +0x16, 0x11, 0xC6, 0xF4, 0x63, 0xA0, 0x7F, 0x6A, +0x6C, 0xEA, 0x2C, 0xEA, 0x36, 0x22, 0x01, 0x72, +0xE0, 0xF0, 0x1D, 0x61, 0x00, 0x6C, 0x00, 0x18, +0x5D, 0x2A, 0xE0, 0xF0, 0x1F, 0x22, 0x86, 0xF3, +0x91, 0xA0, 0x01, 0x6D, 0x18, 0x6E, 0x00, 0x6F, +0x00, 0x18, 0x92, 0x2A, 0x00, 0x18, 0x0A, 0x1B, +0x06, 0xD2, 0xC0, 0xF0, 0x77, 0xA0, 0x10, 0x6A, +0x6C, 0xEA, 0x2C, 0xEA, 0x19, 0x22, 0xA3, 0xF5, +0x55, 0xA0, 0x00, 0x68, 0x0D, 0x2A, 0x14, 0x10, +0x03, 0x6C, 0x25, 0xE0, 0x00, 0x18, 0x93, 0x19, +0xE3, 0xF5, 0x94, 0xA1, 0x00, 0x6D, 0x01, 0x48, +0x00, 0x18, 0x3F, 0x2A, 0xFF, 0x6A, 0x4C, 0xE8, +0x30, 0xF0, 0x20, 0x69, 0x80, 0xF6, 0x0C, 0x49, +0xA3, 0xF5, 0x55, 0xA1, 0x43, 0xE8, 0xEC, 0x61, +0x06, 0x92, 0x03, 0x2A, 0x00, 0x18, 0x1B, 0x29, +0xD1, 0x10, 0x30, 0xF0, 0x20, 0x69, 0x80, 0xF6, +0x0C, 0x49, 0xA6, 0xF3, 0x51, 0xA1, 0xA6, 0xF3, +0x76, 0xA9, 0x01, 0x4A, 0xA6, 0xF3, 0x51, 0xC1, +0xC6, 0xF4, 0x42, 0xA1, 0xA6, 0xF3, 0xB1, 0xA1, +0x6D, 0xE2, 0xA6, 0xF3, 0x76, 0xC9, 0x86, 0xF3, +0x7E, 0xA1, 0x6E, 0xED, 0xA0, 0xF0, 0x02, 0x2D, +0x86, 0xF3, 0x9C, 0xA1, 0x03, 0x6E, 0xFF, 0x6A, +0x8E, 0x33, 0xCC, 0xEB, 0x02, 0x73, 0x49, 0x60, +0x06, 0x67, 0x6E, 0xE8, 0x80, 0xF0, 0x0A, 0x20, +0x01, 0x73, 0x1C, 0x60, 0x02, 0x6B, 0x8C, 0xEB, +0x4C, 0xEB, 0xA6, 0xF3, 0xB0, 0xC1, 0x0E, 0x23, +0x86, 0xF3, 0x7F, 0xA1, 0xA6, 0xF3, 0x80, 0xA1, +0x0F, 0x6D, 0x6C, 0xED, 0x72, 0x36, 0x4C, 0xED, +0x4C, 0xEE, 0x00, 0x18, 0x56, 0x24, 0x01, 0x72, +0x01, 0x6C, 0x01, 0x61, 0x00, 0x6C, 0xA6, 0xF3, +0xAE, 0xA9, 0x00, 0x18, 0x4A, 0x24, 0x00, 0x18, +0x1B, 0x29, 0xA5, 0x10, 0x02, 0x6B, 0x8C, 0xEB, +0x4C, 0xEB, 0x0E, 0x23, 0x86, 0xF3, 0x7F, 0xA1, +0x0F, 0x6D, 0xA6, 0xF3, 0x80, 0xA1, 0x6C, 0xED, +0x72, 0x36, 0x4C, 0xED, 0x4C, 0xEE, 0x00, 0x18, +0x56, 0x24, 0x01, 0x72, 0x80, 0xF0, 0x07, 0x61, +0xA6, 0xF3, 0xAE, 0xA9, 0x00, 0x6C, 0x00, 0x18, +0x4A, 0x24, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, +0x0C, 0x4A, 0x00, 0x6B, 0xA6, 0xF3, 0x71, 0xC2, +0x00, 0x6B, 0xA6, 0xF3, 0x76, 0xCA, 0xA6, 0xF3, +0x74, 0xCA, 0xA6, 0xF3, 0xC1, 0xA2, 0x64, 0x6A, +0x52, 0x10, 0x02, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, +0x0D, 0x23, 0x86, 0xF3, 0x7F, 0xA1, 0x0F, 0x6D, +0xA6, 0xF3, 0x80, 0xA1, 0x6C, 0xED, 0x72, 0x36, +0x4C, 0xED, 0x4C, 0xEE, 0x00, 0x18, 0x56, 0x24, +0x01, 0x72, 0x61, 0x61, 0xA6, 0xF3, 0xAE, 0xA9, +0x00, 0x6C, 0x00, 0x18, 0x4A, 0x24, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, 0xA6, 0xF3, +0x83, 0xA3, 0xA6, 0xF3, 0x52, 0xA3, 0xFF, 0x4C, +0x4E, 0xEC, 0x03, 0x2C, 0xA6, 0xF3, 0x82, 0xA3, +0x05, 0x10, 0xA6, 0xF3, 0x81, 0xA3, 0x01, 0x4A, +0xA6, 0xF3, 0x52, 0xC3, 0xA6, 0xF3, 0x56, 0xA3, +0xFF, 0x6B, 0x64, 0x6E, 0x4B, 0xE4, 0x6C, 0xEA, +0xD8, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, +0x0C, 0x4B, 0x00, 0x6C, 0xA6, 0xF3, 0x91, 0xC3, +0x00, 0x6C, 0xA6, 0xF3, 0x96, 0xCB, 0xA6, 0xF3, +0x94, 0xCB, 0x00, 0x6B, 0x10, 0xF0, 0x21, 0x6C, +0x04, 0xD3, 0xF2, 0xF4, 0x19, 0x4C, 0xA3, 0x67, +0x12, 0xEE, 0x19, 0x10, 0xA6, 0xF3, 0xAE, 0xA9, +0x00, 0x6C, 0x00, 0x18, 0x4A, 0x24, 0xA6, 0xF3, +0x11, 0xC1, 0xA6, 0xF3, 0x16, 0xC9, 0xA6, 0xF3, +0x14, 0xC9, 0xDA, 0x16, 0x64, 0x6E, 0xD8, 0xEA, +0x00, 0x6A, 0x04, 0xD2, 0x10, 0xF0, 0x21, 0x6C, +0xA2, 0x67, 0xFF, 0xF7, 0x1F, 0x6A, 0xF2, 0xF4, +0x19, 0x4C, 0x12, 0xEE, 0x4C, 0xEE, 0x01, 0x6F, +0x00, 0x18, 0x41, 0x23, 0x1C, 0x10, 0x00, 0x6A, +0xA6, 0xF3, 0x50, 0xC0, 0x02, 0x6C, 0xA6, 0xF3, +0xAE, 0xA8, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x00, 0x6B, 0xA6, 0xF3, +0x70, 0xC2, 0x03, 0x6C, 0x08, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, 0x00, 0x6B, +0xA6, 0xF3, 0x70, 0xC2, 0x01, 0x6C, 0xA6, 0xF3, +0xAE, 0xAA, 0x00, 0x18, 0x4A, 0x24, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x27, 0xF2, 0x5C, 0xA2, 0x02, 0x22, 0x00, 0x18, +0x90, 0x24, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFF, 0x6B, 0x6C, 0xEC, 0x0F, 0x6A, 0x8C, 0xEA, +0x03, 0x2A, 0x92, 0x32, 0x6C, 0xEA, 0x20, 0xE8, +0x07, 0x4A, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x05, 0x2A, 0x01, 0x6C, 0x08, 0xF0, 0x00, 0x6D, +0x00, 0x18, 0xD2, 0x04, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x05, 0x2A, 0x01, 0x6C, +0x04, 0xF0, 0x00, 0x6D, 0x00, 0x18, 0xD2, 0x04, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x05, 0x2A, 0x01, 0x6C, 0x08, 0xF0, 0x00, 0x6D, +0x00, 0x18, 0xE6, 0x04, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x05, 0x2A, 0x01, 0x6C, +0x04, 0xF0, 0x00, 0x6D, 0x00, 0x18, 0xE6, 0x04, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, +0x01, 0x6C, 0x44, 0x67, 0x15, 0x4D, 0x44, 0xED, +0xA2, 0x67, 0x00, 0x18, 0x6E, 0x04, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6D, 0x8C, 0xED, 0x04, 0x2D, 0x03, 0x6C, +0x10, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x1B, 0x4D, +0x01, 0x6A, 0x44, 0xED, 0x03, 0x6C, 0xA2, 0x67, +0x00, 0x18, 0x6E, 0x04, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x44, 0x25, +0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, 0x00, 0x18, +0x6E, 0x04, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x00, 0x18, 0x44, 0x25, 0x01, 0x6D, 0x03, 0x6C, +0xA4, 0xEA, 0x00, 0x18, 0x6E, 0x04, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6D, 0x8C, 0xED, 0x01, 0x6C, 0x44, 0x67, +0x15, 0x4D, 0x44, 0xED, 0xA2, 0x67, 0x00, 0x18, +0x9F, 0x04, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, +0x04, 0x2D, 0x03, 0x6C, 0x10, 0xF0, 0x00, 0x6D, +0x05, 0x10, 0x1B, 0x4D, 0x01, 0x6A, 0x44, 0xED, +0x03, 0x6C, 0xA2, 0x67, 0x00, 0x18, 0x9F, 0x04, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x00, 0x18, 0x44, 0x25, 0x01, 0x6D, 0x02, 0x6C, +0xA4, 0xEA, 0x00, 0x18, 0x9F, 0x04, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x44, 0x25, +0x01, 0x6D, 0x03, 0x6C, 0xA4, 0xEA, 0x00, 0x18, +0x9F, 0x04, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x04, 0x67, +0xE2, 0xA0, 0x80, 0xA4, 0x00, 0x6D, 0xC5, 0x67, +0x00, 0x18, 0x58, 0x21, 0x01, 0x6E, 0x00, 0x6C, +0x18, 0x6D, 0xCB, 0xEE, 0x00, 0x18, 0x4A, 0x20, +0x80, 0xA0, 0xFF, 0x6B, 0x4C, 0xEB, 0x8E, 0xEB, +0x05, 0x23, 0xE2, 0xA0, 0x00, 0x6D, 0xC5, 0x67, +0x00, 0x18, 0x58, 0x21, 0x7D, 0x67, 0x10, 0x6A, +0x50, 0xC3, 0x07, 0x6A, 0x4F, 0xCB, 0x40, 0xA0, +0x04, 0x04, 0x52, 0xC3, 0x00, 0x18, 0xCA, 0x19, +0x09, 0x97, 0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x58, 0xA2, +0x01, 0x72, 0x03, 0x61, 0xCC, 0xF4, 0x00, 0x6A, +0x04, 0x10, 0x03, 0x72, 0x04, 0x61, 0x2D, 0xF5, +0x00, 0x6A, 0x4B, 0xEA, 0x02, 0x10, 0x48, 0xF2, +0x00, 0x6A, 0x40, 0xCC, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0x58, 0xA2, 0x01, 0x72, 0x08, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF5, 0x64, 0x9A, +0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0x58, 0xA2, 0x01, 0x72, 0x0B, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF5, 0x64, 0x9A, +0xFF, 0x6C, 0x04, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x58, 0xA2, +0x01, 0x72, 0x09, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF5, 0x68, 0x9A, 0xFF, 0x6C, 0x10, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0x08, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x78, 0x9A, 0xFF, 0x6C, +0x01, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF6, 0x44, 0x9A, +0xFF, 0x6B, 0x40, 0xA2, 0x6C, 0xEA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x64, 0x9B, +0xFF, 0x6A, 0xAC, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF3, 0x70, 0x9B, 0x10, 0xF0, +0x21, 0x6A, 0xB2, 0xF7, 0x09, 0x4A, 0x40, 0xDB, +0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, +0x58, 0x9A, 0x40, 0xA2, 0x12, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF5, 0x5C, 0x9A, 0x40, 0xA2, +0x0C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, +0x40, 0x9A, 0x40, 0xA2, 0x06, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF5, 0x44, 0x9A, 0x40, 0xA2, +0x15, 0x22, 0xE0, 0xF3, 0x09, 0x70, 0x0A, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x60, 0x9A, +0x20, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x00, 0x6A, 0x09, 0x10, 0x32, 0x6C, 0x00, 0x18, +0x9B, 0x19, 0x01, 0x48, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xE8, 0xD3, 0x17, 0x01, 0x6A, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF6, 0x88, 0x9A, +0xFF, 0x6B, 0x02, 0x6D, 0x40, 0xA4, 0x01, 0x68, +0x0B, 0xE8, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, +0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF3, +0x4C, 0x9A, 0x01, 0x6C, 0x8B, 0xEC, 0x80, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF6, 0x4C, 0x9A, +0x09, 0x6C, 0x01, 0x6D, 0x80, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF6, 0x50, 0x9A, 0x7A, 0x6C, +0x8B, 0xEC, 0x80, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF6, 0x94, 0x9A, 0xA1, 0xF0, 0x14, 0x69, +0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, +0xB0, 0x67, 0x40, 0xC4, 0x91, 0x67, 0x00, 0x18, +0x5B, 0x20, 0x41, 0x6E, 0xCB, 0xEE, 0x91, 0x67, +0xB0, 0x67, 0x4C, 0xEE, 0x00, 0x18, 0x69, 0x20, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF6, 0x38, 0x9A, +0xB0, 0x67, 0x81, 0xF4, 0x10, 0x6C, 0xD1, 0x67, +0x00, 0x18, 0x69, 0x20, 0xB0, 0x67, 0xD1, 0x67, +0x81, 0xF6, 0x10, 0x6C, 0x00, 0x18, 0x69, 0x20, +0xB0, 0x67, 0xD1, 0x67, 0x83, 0xF0, 0x10, 0x6C, +0x00, 0x18, 0x69, 0x20, 0xD1, 0x67, 0xB0, 0x67, +0x83, 0xF2, 0x10, 0x6C, 0x00, 0x18, 0x69, 0x20, +0xB0, 0x67, 0x01, 0xF4, 0x00, 0x6C, 0x00, 0x18, +0x5B, 0x20, 0x03, 0x69, 0xC2, 0x67, 0x2D, 0xEE, +0xB0, 0x67, 0x01, 0xF4, 0x00, 0x6C, 0x00, 0x18, +0x69, 0x20, 0xB0, 0x67, 0x01, 0xF6, 0x00, 0x6C, +0x00, 0x18, 0x5B, 0x20, 0xC2, 0x67, 0x2D, 0xEE, +0xB0, 0x67, 0x01, 0xF6, 0x00, 0x6C, 0x00, 0x18, +0x69, 0x20, 0xB0, 0x67, 0x03, 0xF0, 0x00, 0x6C, +0x00, 0x18, 0x5B, 0x20, 0xC2, 0x67, 0x2D, 0xEE, +0xB0, 0x67, 0x03, 0xF0, 0x00, 0x6C, 0x00, 0x18, +0x69, 0x20, 0xB0, 0x67, 0x03, 0xF2, 0x00, 0x6C, +0x00, 0x18, 0x5B, 0x20, 0xC2, 0x67, 0xB0, 0x67, +0x2D, 0xEE, 0x03, 0xF2, 0x00, 0x6C, 0x00, 0x18, +0x69, 0x20, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x01, 0x68, 0x0B, 0xE8, +0x00, 0x18, 0xEA, 0x25, 0x01, 0xF4, 0x00, 0x6C, +0xB0, 0x67, 0x00, 0x18, 0x5B, 0x20, 0x04, 0x69, +0x2B, 0xE9, 0xC2, 0x67, 0x2C, 0xEE, 0x01, 0xF4, +0x00, 0x6C, 0xB0, 0x67, 0x00, 0x18, 0x69, 0x20, +0x01, 0xF6, 0x00, 0x6C, 0xB0, 0x67, 0x00, 0x18, +0x5B, 0x20, 0xC2, 0x67, 0x2C, 0xEE, 0x01, 0xF6, +0x00, 0x6C, 0xB0, 0x67, 0x00, 0x18, 0x69, 0x20, +0x03, 0xF0, 0x00, 0x6C, 0xB0, 0x67, 0x00, 0x18, +0x5B, 0x20, 0xC2, 0x67, 0x2C, 0xEE, 0x03, 0xF0, +0x00, 0x6C, 0xB0, 0x67, 0x00, 0x18, 0x69, 0x20, +0x03, 0xF2, 0x00, 0x6C, 0xB0, 0x67, 0x00, 0x18, +0x5B, 0x20, 0xC2, 0x67, 0x2C, 0xEE, 0x03, 0xF2, +0x00, 0x6C, 0xB0, 0x67, 0x00, 0x18, 0x69, 0x20, +0x81, 0xF4, 0x10, 0x6C, 0xB0, 0x67, 0x00, 0x6E, +0x00, 0x18, 0x69, 0x20, 0x81, 0xF6, 0x10, 0x6C, +0xB0, 0x67, 0x00, 0x6E, 0x00, 0x18, 0x69, 0x20, +0x83, 0xF0, 0x10, 0x6C, 0xB0, 0x67, 0x00, 0x6E, +0x00, 0x18, 0x69, 0x20, 0xA1, 0xF0, 0x18, 0x49, +0x00, 0x6E, 0x83, 0xF2, 0x10, 0x6C, 0xB0, 0x67, +0x00, 0x18, 0x69, 0x20, 0x91, 0x67, 0xB0, 0x67, +0x00, 0x18, 0x5B, 0x20, 0x40, 0x6E, 0x4D, 0xEE, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x18, 0x69, 0x20, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF6, 0x74, 0x9A, +0xFE, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x00, 0x18, 0xBB, 0x06, 0x01, 0x72, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF3, 0x4C, 0x9A, +0x3F, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF6, 0x68, 0x9A, 0xFD, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0xFF, 0xF7, 0x1F, 0x6B, +0xAC, 0xEB, 0x00, 0x6D, 0x45, 0x67, 0x29, 0x10, +0x01, 0x6E, 0x6C, 0xEE, 0x0E, 0x26, 0xCF, 0x43, +0xAE, 0xEE, 0x0B, 0x2E, 0x30, 0xF0, 0x20, 0x6E, +0xE0, 0xF2, 0xDC, 0x9E, 0xD9, 0xE4, 0xB9, 0xE6, +0xE0, 0xA6, 0xFF, 0x6E, 0xEC, 0xEE, 0xC0, 0x36, +0x13, 0x10, 0x30, 0xF0, 0x20, 0x6E, 0xE0, 0xF2, +0xDC, 0x9E, 0x30, 0xF0, 0x20, 0x68, 0x00, 0xF3, +0x00, 0x98, 0xD9, 0xE4, 0xB9, 0xE6, 0x01, 0xE4, +0xC0, 0xA6, 0xA1, 0xE0, 0x00, 0xA0, 0xFF, 0x6F, +0xEC, 0xEE, 0xC0, 0x36, 0x0C, 0xEF, 0xF9, 0xE6, +0xC9, 0xE2, 0x02, 0x4D, 0xFF, 0xF7, 0x1F, 0x6E, +0xCC, 0xED, 0x63, 0xED, 0xD5, 0x61, 0x01, 0x90, +0x01, 0x63, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0xD1, +0x04, 0xD0, 0xFF, 0x6B, 0x8C, 0xEB, 0x06, 0x73, +0xFF, 0xF7, 0x1F, 0x6C, 0xAC, 0xEC, 0x03, 0x60, +0x11, 0x73, 0x0A, 0x92, 0x4D, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x1C, 0x4A, 0x40, 0x9A, +0x6D, 0xE4, 0x41, 0xE6, 0xA0, 0xA0, 0xFF, 0x6A, +0x02, 0x48, 0x1D, 0x65, 0x38, 0x67, 0x4C, 0xE9, +0x02, 0xD1, 0x30, 0xF0, 0x20, 0x69, 0x00, 0xF3, +0x20, 0x99, 0xBD, 0x67, 0x39, 0xE6, 0x19, 0x65, +0x20, 0xA6, 0x02, 0x4E, 0x20, 0xC5, 0x20, 0xA5, +0x02, 0x95, 0x4C, 0xE9, 0xA0, 0x35, 0x25, 0xE5, +0x0A, 0x95, 0xB5, 0xE1, 0x00, 0xD5, 0x00, 0xA0, +0x20, 0xA6, 0x30, 0xF0, 0x20, 0x6E, 0xE0, 0xF2, +0x1C, 0x4E, 0x4C, 0xE8, 0xC0, 0x9E, 0x4C, 0xE9, +0x00, 0x30, 0x21, 0xE0, 0x01, 0xE5, 0xD5, 0xE7, +0xD8, 0x67, 0x20, 0xA5, 0xD5, 0xE7, 0xA0, 0xA5, +0x4C, 0xE9, 0x20, 0x31, 0x4C, 0xED, 0xB5, 0xE1, +0xA5, 0xE0, 0x30, 0xF0, 0x20, 0x6D, 0x00, 0xF6, +0xBC, 0x9D, 0x30, 0xF0, 0x20, 0x6E, 0x20, 0xF6, +0xC0, 0x9E, 0xB5, 0xE7, 0xA0, 0xA5, 0xDD, 0xE7, +0xC0, 0xA7, 0x4C, 0xED, 0xA0, 0x35, 0xCC, 0xEA, +0x49, 0xE5, 0x49, 0xE1, 0x49, 0xE3, 0x04, 0x10, +0xFF, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x69, 0xE4, +0x42, 0x34, 0x82, 0x34, 0xF9, 0x2C, 0x05, 0x91, +0x04, 0x90, 0xFF, 0xF7, 0x1F, 0x6D, 0x4F, 0xEA, +0xAC, 0xEA, 0x03, 0x63, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, +0x30, 0xF0, 0x20, 0x6D, 0x80, 0xF6, 0x0C, 0x4D, +0xE4, 0xF0, 0x44, 0xCD, 0x04, 0x92, 0xFF, 0x6B, +0x6C, 0xEE, 0xEC, 0xEB, 0xE4, 0xF0, 0x82, 0xCD, +0xE4, 0xF0, 0xC6, 0xC5, 0xE4, 0xF0, 0x67, 0xC5, +0xE4, 0xF0, 0x52, 0xCD, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0x7D, 0x67, 0xFF, 0xF7, +0x1F, 0x6A, 0x18, 0xA3, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x0C, 0x4B, 0x4C, 0xEC, 0x4C, 0xED, +0x4C, 0xEE, 0xE4, 0xF0, 0x8A, 0xCB, 0xEC, 0xEA, +0xE4, 0xF0, 0x88, 0xA3, 0xE4, 0xF0, 0x50, 0xCB, +0x01, 0x6A, 0x4C, 0xE8, 0xFD, 0x4A, 0x8C, 0xEA, +0x0D, 0xEA, 0xE4, 0xF0, 0xAC, 0xCB, 0xE4, 0xF0, +0xCE, 0xCB, 0xE4, 0xF0, 0x48, 0xC3, 0x01, 0x90, +0x01, 0x63, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF6, 0x64, 0x9B, 0xFF, 0x6A, 0xAC, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0x9C, +0x20, 0xF6, 0x48, 0x9A, 0x60, 0xDA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x64, 0x9B, +0xFF, 0x6A, 0xAC, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF6, 0x48, 0x9A, 0x40, 0x9A, +0x40, 0xDC, 0x20, 0xE8, 0xE9, 0xA4, 0xFF, 0xF7, +0x1F, 0x6A, 0xAC, 0xEA, 0x02, 0x6D, 0xFF, 0x6B, +0xEC, 0xED, 0x6C, 0xED, 0x6C, 0xEE, 0x05, 0x25, +0x00, 0x6A, 0x41, 0xC4, 0x42, 0xC4, 0x45, 0xC4, +0x06, 0x10, 0x41, 0xC4, 0x42, 0x32, 0x42, 0xC4, +0x46, 0xAC, 0x45, 0xC4, 0x42, 0x32, 0x46, 0xC4, +0x4F, 0xA4, 0xC0, 0xC4, 0x44, 0xC4, 0x5E, 0xA4, +0x47, 0xC4, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x10, 0x6D, 0x04, 0x67, 0x00, 0x18, +0xFB, 0x26, 0x84, 0x40, 0x11, 0x6D, 0x00, 0x18, +0xFB, 0x26, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x69, 0xA4, 0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x17, 0x27, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x09, 0x6D, +0x04, 0x04, 0x04, 0xD2, 0x00, 0x18, 0xFB, 0x26, +0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x08, 0x6D, 0x04, 0x04, 0x04, 0xD2, +0x00, 0x18, 0xFB, 0x26, 0x07, 0x97, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, +0xAA, 0x33, 0x4C, 0xEB, 0x03, 0x6A, 0xAC, 0xEA, +0x0E, 0xD4, 0x06, 0xD3, 0x07, 0xD2, 0x08, 0xD4, +0x00, 0x69, 0x0C, 0x10, 0xA7, 0x41, 0x08, 0x94, +0xFF, 0x68, 0x19, 0x4D, 0x0C, 0xED, 0x00, 0x18, +0x02, 0x27, 0x08, 0x93, 0x01, 0x49, 0x0C, 0xE9, +0x04, 0x4B, 0x08, 0xD3, 0x06, 0x92, 0x43, 0xE9, +0xF1, 0x61, 0x07, 0x93, 0x17, 0x23, 0xA2, 0x67, +0x04, 0x00, 0x90, 0x67, 0x20, 0x4D, 0x00, 0x18, +0x02, 0x27, 0x06, 0x92, 0xFF, 0x6C, 0x48, 0x33, +0x0E, 0x92, 0x6D, 0xE2, 0x07, 0x92, 0xFF, 0x4A, +0x8C, 0xEA, 0x00, 0xF0, 0x11, 0x04, 0x49, 0xE4, +0x80, 0xA0, 0x01, 0x48, 0x4A, 0xE8, 0x80, 0xC3, +0x01, 0x4B, 0xFA, 0x61, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0x4C, 0xED, 0x07, 0x6B, 0xAC, 0xEB, +0x2A, 0x2B, 0x38, 0x5D, 0x28, 0x60, 0xAE, 0x35, +0xFF, 0x4D, 0x4C, 0xED, 0xA6, 0x33, 0xAC, 0x35, +0x4C, 0xEB, 0xB5, 0xE4, 0x08, 0xD3, 0x07, 0xD5, +0x06, 0xD4, 0x00, 0x69, 0x16, 0x10, 0x07, 0x95, +0x04, 0x00, 0x90, 0x67, 0x08, 0x6E, 0x00, 0x18, +0xAC, 0x19, 0x07, 0x94, 0x06, 0x95, 0x08, 0x6E, +0x01, 0x49, 0x00, 0x18, 0xAC, 0x19, 0x06, 0x94, +0xB0, 0x67, 0x08, 0x6E, 0x00, 0x18, 0xAC, 0x19, +0xFF, 0x6A, 0x4C, 0xE9, 0x07, 0x92, 0xF8, 0x4A, +0x07, 0xD2, 0x06, 0x93, 0x08, 0x92, 0x08, 0x4B, +0x43, 0xE9, 0x06, 0xD3, 0xE4, 0x61, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0x4C, 0xED, 0xAA, 0x33, 0x4C, 0xEB, +0x03, 0x6A, 0xAC, 0xEA, 0x0E, 0xD4, 0x06, 0xD3, +0x07, 0xD2, 0x08, 0xD4, 0x00, 0x69, 0x0C, 0x10, +0xA7, 0x41, 0x08, 0x94, 0xFF, 0x68, 0x19, 0x4D, +0x0C, 0xED, 0x00, 0x18, 0xFB, 0x26, 0x08, 0x93, +0x01, 0x49, 0x0C, 0xE9, 0x04, 0x4B, 0x08, 0xD3, +0x06, 0x92, 0x43, 0xE9, 0xF1, 0x61, 0x07, 0x93, +0x1C, 0x23, 0x04, 0x00, 0x90, 0x67, 0x00, 0x6D, +0x04, 0x6E, 0x00, 0x18, 0xA7, 0x19, 0x06, 0x92, +0xFF, 0x6C, 0x48, 0x33, 0x0E, 0x92, 0x6D, 0xE2, +0x07, 0x92, 0xFF, 0x4A, 0x8C, 0xEA, 0x00, 0xF0, +0x11, 0x04, 0x49, 0xE4, 0x80, 0xA3, 0x01, 0x4B, +0x80, 0xC0, 0x01, 0x48, 0x4A, 0xE8, 0xFA, 0x61, +0x06, 0x95, 0x04, 0x04, 0x20, 0x4D, 0x00, 0x18, +0xFB, 0x26, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x69, 0x04, 0x67, +0x2C, 0xE8, 0x07, 0x04, 0xAC, 0xE9, 0x04, 0x6E, +0x00, 0x6D, 0x00, 0x18, 0xA7, 0x19, 0x5D, 0x67, +0x1C, 0xC2, 0x7D, 0x67, 0x01, 0x6A, 0x01, 0x71, +0x5D, 0xC3, 0x06, 0x61, 0x7F, 0xA3, 0x80, 0x6A, +0x4B, 0xEA, 0x6D, 0xEA, 0x9D, 0x67, 0x5F, 0xC4, +0x07, 0x04, 0x00, 0x6D, 0x00, 0x18, 0xFB, 0x26, +0x06, 0x02, 0x80, 0xF1, 0x07, 0x6C, 0x80, 0x6D, +0x00, 0x6E, 0x04, 0xF7, 0x10, 0x6F, 0x04, 0xD2, +0x00, 0x18, 0x0F, 0x19, 0x03, 0x22, 0x5D, 0x67, +0x6C, 0xAA, 0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x68, 0x9A, 0xFF, 0x6C, 0x04, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x9D, 0x67, 0x6C, 0xAC, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF6, 0x4C, 0x9A, 0x60, 0xCA, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, +0x0E, 0xD1, 0x0D, 0xD0, 0x24, 0x67, 0x11, 0xD5, +0xA7, 0x41, 0x04, 0x04, 0x02, 0x4D, 0x06, 0x67, +0x01, 0x6E, 0x00, 0x18, 0xAC, 0x19, 0x5D, 0x67, +0x90, 0xA2, 0x00, 0x6D, 0x00, 0x18, 0x8F, 0x27, +0x68, 0xA1, 0x01, 0x6A, 0x6C, 0xEA, 0x22, 0x22, +0x69, 0xA1, 0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x04, 0x22, 0xAF, 0xA1, 0x90, 0x67, +0x00, 0x18, 0x6E, 0x27, 0x63, 0xA1, 0x80, 0x6A, +0x4B, 0xEA, 0x6D, 0xEA, 0x41, 0x6B, 0x6B, 0xEB, +0x6C, 0xEA, 0x00, 0x6D, 0xC5, 0x67, 0x43, 0xC1, +0x91, 0x67, 0x00, 0x18, 0x09, 0x27, 0x91, 0x67, +0x00, 0x18, 0x1F, 0x27, 0x8D, 0xA9, 0x00, 0x18, +0x2C, 0x27, 0x7D, 0x67, 0x90, 0xA3, 0x01, 0x6D, +0x00, 0x18, 0x8F, 0x27, 0x68, 0xA1, 0x02, 0x6A, +0x6C, 0xEA, 0x6A, 0x22, 0x63, 0xA1, 0x7F, 0x6A, +0x6C, 0xEA, 0x43, 0xC1, 0x4E, 0xA1, 0x5A, 0x32, +0x01, 0x4A, 0x0B, 0xD2, 0x0B, 0x93, 0xFF, 0x6A, +0x4C, 0xEB, 0x11, 0x92, 0x0B, 0xD3, 0x00, 0x6B, +0x07, 0xD2, 0x06, 0xD3, 0x08, 0xD3, 0x0A, 0xD3, +0x0B, 0x92, 0x0A, 0x93, 0xFF, 0x4A, 0x6E, 0xEA, +0x16, 0x2A, 0x68, 0xA1, 0x10, 0x6A, 0x6C, 0xEA, +0x04, 0x22, 0x63, 0xA1, 0x40, 0x6A, 0x6D, 0xEA, +0x04, 0x10, 0x63, 0xA1, 0x41, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x43, 0xC1, 0x06, 0x93, 0x4E, 0xA1, +0x49, 0xE3, 0x09, 0xD2, 0x09, 0x93, 0xFF, 0x6A, +0x4C, 0xEB, 0x09, 0xD3, 0x07, 0x10, 0x63, 0xA1, +0x41, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x43, 0xC1, +0x40, 0x6A, 0x09, 0xD2, 0x68, 0xA1, 0x04, 0x6A, +0x6C, 0xEA, 0x0A, 0x2A, 0x69, 0xA1, 0x02, 0x6A, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x04, 0x22, +0x07, 0x94, 0x09, 0x95, 0x00, 0x18, 0x6E, 0x27, +0x08, 0x93, 0xA5, 0xA9, 0x09, 0x96, 0xFF, 0xF7, +0x1F, 0x68, 0xB5, 0xE3, 0x0C, 0xED, 0x91, 0x67, +0x00, 0x18, 0x09, 0x27, 0x91, 0x67, 0x00, 0x18, +0x1F, 0x27, 0x5D, 0x67, 0x90, 0xA2, 0x01, 0x6D, +0x00, 0x18, 0x8F, 0x27, 0x08, 0x92, 0x0A, 0x93, +0x40, 0x4A, 0x0C, 0xEA, 0x01, 0x4B, 0x08, 0xD2, +0x06, 0x92, 0x0A, 0xD3, 0x07, 0x93, 0xC0, 0x4A, +0x06, 0xD2, 0x40, 0x4B, 0x07, 0xD3, 0x06, 0x93, +0xFF, 0x6A, 0x4C, 0xEB, 0x06, 0xD3, 0x0A, 0x93, +0x6C, 0xEA, 0x0B, 0x93, 0x63, 0xEA, 0xA8, 0x61, +0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF3, 0x63, 0x19, 0x62, +0x18, 0xD1, 0x17, 0xD0, 0xFF, 0x6A, 0x04, 0x01, +0xEC, 0xEA, 0x1A, 0xD4, 0x1B, 0xD5, 0x91, 0x67, +0x1C, 0xD6, 0x00, 0x6D, 0x40, 0x6E, 0x30, 0xF0, +0x20, 0x68, 0x64, 0xF7, 0x0C, 0x48, 0x14, 0xD2, +0x00, 0x18, 0xA7, 0x19, 0x01, 0x6D, 0xC5, 0x67, +0x90, 0x67, 0x00, 0x18, 0xA7, 0x19, 0x81, 0x40, +0x03, 0x6D, 0x01, 0x6E, 0x00, 0x18, 0xA7, 0x19, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x08, 0x6B, 0xE4, 0xF0, 0x76, 0xC2, 0xE4, 0xF0, +0x66, 0xA2, 0x1A, 0x96, 0x30, 0xF0, 0x20, 0x6C, +0x15, 0xD3, 0x40, 0x6B, 0xB1, 0x67, 0xE4, 0xF0, +0x66, 0xC2, 0x64, 0xF7, 0x04, 0x4C, 0x00, 0x18, +0xB1, 0x27, 0x00, 0x69, 0x30, 0xF0, 0x20, 0x68, +0x64, 0xF7, 0x0C, 0x48, 0x90, 0x67, 0x06, 0x6D, +0x01, 0x6E, 0x00, 0x18, 0xA7, 0x19, 0x81, 0x40, +0x03, 0x6D, 0x01, 0x6E, 0x00, 0x18, 0xA7, 0x19, +0x1A, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF7, +0x04, 0x4C, 0x04, 0x05, 0x00, 0x18, 0xB1, 0x27, +0x01, 0x49, 0xFF, 0x6A, 0x4C, 0xE9, 0x04, 0x71, +0xE5, 0x61, 0x90, 0x67, 0x12, 0x6D, 0x01, 0x6E, +0x00, 0x18, 0xA7, 0x19, 0x9D, 0x67, 0x67, 0x44, +0x4D, 0x4B, 0x80, 0xA3, 0x30, 0xF0, 0x20, 0x6A, +0x1B, 0x95, 0x1A, 0x96, 0x64, 0xF7, 0x92, 0xC2, +0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF7, 0x04, 0x4C, +0x00, 0x18, 0xB1, 0x27, 0x1C, 0x94, 0x14, 0x95, +0x00, 0x18, 0x33, 0x27, 0x19, 0x97, 0x18, 0x91, +0x17, 0x90, 0x0D, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xF6, 0x0C, 0x48, +0x0C, 0xD4, 0xE4, 0xF0, 0x82, 0xA8, 0xE4, 0xF0, +0x66, 0xA0, 0x30, 0xF0, 0x20, 0x69, 0x64, 0xF7, +0x0C, 0x49, 0xFF, 0x6A, 0xEC, 0xEA, 0x0D, 0xD5, +0x0E, 0xD6, 0x05, 0xD4, 0x03, 0x6D, 0x91, 0x67, +0x01, 0x6E, 0x06, 0xD3, 0x07, 0xD2, 0x00, 0x18, +0xA7, 0x19, 0x01, 0x6D, 0x30, 0xF0, 0x20, 0x6C, +0xC5, 0x67, 0x64, 0xF7, 0x0D, 0x4C, 0x00, 0x18, +0xA7, 0x19, 0x02, 0x6A, 0x05, 0x93, 0xE4, 0xF0, +0x56, 0xC0, 0xE4, 0xF0, 0x4A, 0xA8, 0x0D, 0x95, +0x0C, 0x96, 0x49, 0xE3, 0xE4, 0xF0, 0x42, 0xC8, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF7, 0x04, 0x4A, +0x06, 0x6C, 0xE4, 0xF0, 0x86, 0xC0, 0x82, 0x67, +0x04, 0xD2, 0x00, 0x18, 0xB1, 0x27, 0x91, 0x67, +0x02, 0x6D, 0x01, 0x6E, 0x00, 0x18, 0xA7, 0x19, +0x05, 0x93, 0xE4, 0xF0, 0x4C, 0xA8, 0x06, 0x6C, +0xE4, 0xF0, 0x86, 0xC0, 0x0D, 0x95, 0x04, 0x94, +0x0C, 0x96, 0x49, 0xE3, 0xE4, 0xF0, 0x42, 0xC8, +0x00, 0x18, 0xB1, 0x27, 0xE4, 0xF0, 0x68, 0xA0, +0x01, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x13, 0x22, 0x91, 0x67, 0x02, 0x6D, 0x01, 0x6E, +0x00, 0x18, 0xA7, 0x19, 0x05, 0x94, 0xE4, 0xF0, +0x4E, 0xA8, 0x0D, 0x95, 0x0C, 0x96, 0x49, 0xE4, +0x04, 0x94, 0xE4, 0xF0, 0x42, 0xC8, 0x04, 0x6A, +0xE4, 0xF0, 0x46, 0xC0, 0x00, 0x18, 0xB1, 0x27, +0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF7, 0x0C, 0x4C, +0x12, 0x6D, 0x01, 0x6E, 0x00, 0x18, 0xA7, 0x19, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0xE4, 0xF0, 0x70, 0xAA, 0x05, 0x94, 0x0D, 0x95, +0x0C, 0x96, 0x6D, 0xE4, 0xE4, 0xF0, 0x62, 0xCA, +0x7D, 0x67, 0x87, 0x43, 0x11, 0x4C, 0x60, 0xA4, +0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF7, 0x04, 0x4C, +0xE4, 0xF0, 0x66, 0xC2, 0x00, 0x18, 0xB1, 0x27, +0x0E, 0x94, 0x07, 0x95, 0x00, 0x18, 0x33, 0x27, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x64, 0xF7, 0x0C, 0x48, 0x08, 0xD4, 0x09, 0xD5, +0x0A, 0xD6, 0x90, 0x67, 0x13, 0x6D, 0x01, 0x6E, +0xFF, 0x69, 0xEC, 0xE9, 0x00, 0x18, 0xA7, 0x19, +0x01, 0x6D, 0x81, 0x40, 0xC5, 0x67, 0x00, 0x18, +0xA7, 0x19, 0x09, 0x95, 0x08, 0x96, 0x30, 0xF0, +0x20, 0x6C, 0x11, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF7, 0x04, 0x4C, 0x84, 0xF7, 0x62, 0xC2, +0x00, 0x18, 0xB1, 0x27, 0x0A, 0x94, 0xB1, 0x67, +0x00, 0x18, 0x33, 0x27, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x64, 0xF7, 0x0C, 0x48, +0x08, 0xD4, 0x09, 0xD5, 0x0A, 0xD6, 0x90, 0x67, +0x13, 0x6D, 0x01, 0x6E, 0xFF, 0x69, 0xEC, 0xE9, +0x00, 0x18, 0xA7, 0x19, 0x01, 0x6D, 0x81, 0x40, +0xC5, 0x67, 0x00, 0x18, 0xA7, 0x19, 0x09, 0x95, +0x08, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x10, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF7, 0x04, 0x4C, +0x84, 0xF7, 0x62, 0xC2, 0x00, 0x18, 0xB1, 0x27, +0x0A, 0x94, 0xB1, 0x67, 0x00, 0x18, 0x33, 0x27, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x80, 0xF6, 0x0C, 0x48, 0x08, 0xD4, 0x09, 0xD5, +0x85, 0x67, 0xE4, 0xF0, 0xA6, 0xA0, 0xFF, 0x69, +0xEC, 0xE9, 0x0A, 0xD6, 0x00, 0x18, 0x52, 0x27, +0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF7, 0x0C, 0x4C, +0x13, 0x6D, 0x01, 0x6E, 0x00, 0x18, 0xA7, 0x19, +0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF7, 0x0D, 0x4C, +0x03, 0x6D, 0x01, 0x6E, 0x00, 0x18, 0xA7, 0x19, +0x08, 0x96, 0x09, 0x95, 0x30, 0xF0, 0x20, 0x6C, +0x2B, 0x6A, 0x64, 0xF7, 0x04, 0x4C, 0xE4, 0xF0, +0x56, 0xC0, 0x00, 0x18, 0xB1, 0x27, 0x0A, 0x94, +0xB1, 0x67, 0x00, 0x18, 0x33, 0x27, 0xE4, 0xF0, +0xA6, 0xA0, 0x0A, 0x94, 0x00, 0x18, 0x52, 0x27, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x70, 0x9B, +0xFF, 0x6A, 0x8C, 0xEA, 0x60, 0x9B, 0x80, 0xF1, +0x01, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0x30, 0xF0, +0x20, 0x6C, 0x20, 0xF6, 0x94, 0x9C, 0x01, 0x72, +0x80, 0x9C, 0x04, 0x60, 0x02, 0x72, 0x80, 0x6A, +0x03, 0x60, 0x03, 0x10, 0xFF, 0x6A, 0x01, 0x4A, +0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF6, +0x50, 0x9A, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF6, 0x58, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF6, 0x74, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x7C, 0x9B, +0x50, 0x6A, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF6, 0x60, 0x9B, 0x40, 0xC3, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, +0x4C, 0xED, 0x04, 0x67, 0x01, 0x75, 0x86, 0x67, +0x4C, 0xE8, 0x4C, 0xEC, 0x03, 0x60, 0x03, 0x75, +0x0A, 0x6B, 0x01, 0x61, 0x09, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF6, 0x44, 0x9A, 0x0F, 0x6F, +0xAC, 0xEF, 0x70, 0x33, 0xED, 0xEB, 0x60, 0xC2, +0x00, 0x18, 0xD4, 0x28, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF5, 0x48, 0x9A, 0x24, 0x58, 0x60, 0xA2, +0x7F, 0x6A, 0x6C, 0xEA, 0x05, 0x61, 0x80, 0x6B, +0x6B, 0xEB, 0x6D, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF5, 0x68, 0x9B, +0x40, 0xC3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF5, 0x5C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x0C, 0x4B, 0x80, 0xA2, 0xFF, 0xF7, +0x1F, 0x6E, 0xA6, 0xF3, 0x98, 0xC3, 0x30, 0xF0, +0x20, 0x6C, 0x40, 0xF6, 0x88, 0x9C, 0xA0, 0xAC, +0xA6, 0xF3, 0xBA, 0xCB, 0xA0, 0xA2, 0xBF, 0x6B, +0xAC, 0xEB, 0x60, 0xC2, 0xE0, 0xA2, 0x7F, 0x6D, +0xFF, 0x6B, 0xEC, 0xED, 0xA0, 0xC2, 0xA0, 0xA2, +0xAC, 0xEB, 0x60, 0xC2, 0x40, 0xAC, 0xFF, 0x6B, +0x21, 0x4B, 0xCC, 0xEA, 0x6D, 0xEA, 0xCC, 0xEA, +0x40, 0xCC, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF6, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA6, 0xF3, 0x98, 0xA2, 0xE0, 0xF5, 0x7C, 0x9B, +0x80, 0xC3, 0xA6, 0xF3, 0x7A, 0xAA, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF6, 0x48, 0x9A, 0x60, 0xCA, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x40, 0xF6, +0x8C, 0x9C, 0xFF, 0x6B, 0xC2, 0x67, 0x6C, 0xEE, +0xC0, 0xC4, 0x30, 0xF0, 0x20, 0x6C, 0x40, 0xF6, +0xD0, 0x9C, 0x03, 0x6F, 0x42, 0x32, 0x80, 0xA6, +0xEC, 0xEA, 0xF9, 0x4F, 0x6C, 0xEC, 0xEC, 0xEC, +0x8D, 0xEA, 0x6C, 0xEA, 0x40, 0xC6, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF6, 0x74, 0x9A, 0x7F, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x00, 0x6A, +0x03, 0x10, 0x01, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x74, 0x9B, +0x60, 0xA3, 0x00, 0xF6, 0x60, 0x33, 0x00, 0xF6, +0x63, 0x33, 0x00, 0x53, 0x03, 0x61, 0x64, 0x72, +0xF0, 0x61, 0x0A, 0x10, 0x64, 0x5A, 0x08, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF6, 0x58, 0x9A, +0x40, 0xA2, 0x40, 0xC5, 0x01, 0x6A, 0x20, 0xE8, +0x00, 0x6A, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF2, 0x94, 0x9A, 0x04, 0x6B, 0x40, 0xA4, +0x4C, 0xEB, 0x04, 0x6A, 0x06, 0x23, 0x60, 0xA4, +0x02, 0x6A, 0x6C, 0xEA, 0x01, 0x5A, 0x58, 0x67, +0x01, 0x4A, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF6, 0x7C, 0x9B, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF2, 0x74, 0x9A, 0x82, 0x34, 0x10, 0x6A, +0xC0, 0xA3, 0x4B, 0xEA, 0x92, 0x34, 0x4C, 0xEC, +0x0F, 0x6A, 0xCC, 0xEA, 0xFF, 0x6D, 0x4D, 0xEC, +0xAC, 0xEC, 0x80, 0xC3, 0x40, 0xA3, 0x01, 0x6C, +0xAC, 0xEA, 0x8D, 0xEA, 0xAC, 0xEA, 0x40, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0x07, 0x6A, 0x8C, 0xEA, +0x05, 0x22, 0xFF, 0xF7, 0x18, 0x6A, 0x8C, 0xEA, +0x08, 0x4A, 0x20, 0xE8, 0xFF, 0xF7, 0x18, 0x6A, +0x8C, 0xEA, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x04, 0x67, 0x06, 0x4C, +0xB1, 0xE4, 0x25, 0x67, 0x00, 0x18, 0x03, 0x19, +0x86, 0x72, 0x00, 0x6A, 0x08, 0x61, 0x87, 0x40, +0x31, 0xE4, 0x00, 0x18, 0x03, 0x19, 0xDD, 0x6B, +0x6E, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, +0x0C, 0xD4, 0xFF, 0x6B, 0x20, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF2, 0x50, 0x9A, 0x40, 0xA2, +0x82, 0x67, 0x6C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, +0x05, 0xD4, 0x60, 0xF7, 0x83, 0xA2, 0x01, 0x6A, +0x8C, 0xEA, 0x6C, 0xEA, 0x00, 0x6B, 0x04, 0xD3, +0x36, 0x2A, 0x39, 0x10, 0x81, 0x41, 0x00, 0x18, +0x03, 0x19, 0x02, 0x67, 0x91, 0x67, 0x00, 0x18, +0x03, 0x19, 0x00, 0x30, 0x82, 0x41, 0x4D, 0xE8, +0xE7, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x00, 0x18, +0x03, 0x19, 0x83, 0x41, 0x06, 0xD2, 0x00, 0x18, +0x03, 0x19, 0x03, 0x6B, 0x4C, 0xEB, 0x87, 0x43, +0x06, 0x93, 0x0F, 0x6A, 0x11, 0x4C, 0x6C, 0xEA, +0x4C, 0x32, 0x51, 0xE4, 0x91, 0xE0, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x5D, 0x29, +0xFF, 0xF7, 0x1F, 0x6B, 0x0C, 0x94, 0x6C, 0xEA, +0x45, 0xE1, 0x23, 0xEC, 0x02, 0x60, 0x8F, 0xEA, +0x45, 0xE1, 0x91, 0x67, 0x00, 0x18, 0x4D, 0x29, +0x04, 0x92, 0x01, 0x4A, 0x04, 0xD2, 0x04, 0x93, +0xFF, 0x6A, 0x4C, 0xEB, 0x04, 0xD3, 0x04, 0x94, +0x05, 0x92, 0x43, 0xEC, 0xC7, 0x61, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x11, 0x6B, 0x8E, 0xEB, +0x05, 0x67, 0x0D, 0x23, 0x3A, 0x6A, 0x8E, 0xEA, +0x33, 0x22, 0x4A, 0x2C, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF2, 0x5C, 0x9A, 0x27, 0x45, 0x03, 0x49, +0x49, 0xE1, 0x80, 0xCA, 0x4A, 0x10, 0x87, 0x45, +0x27, 0x45, 0x30, 0xF0, 0x20, 0x6D, 0xE0, 0xF2, +0xBC, 0x9D, 0x13, 0x49, 0x0D, 0x4C, 0xB5, 0xE1, +0x60, 0xCD, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF3, +0x78, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0x60, 0xF6, +0xA0, 0x9D, 0x6D, 0xE4, 0x60, 0xA3, 0xB5, 0xE4, +0xA0, 0xA5, 0x4C, 0xEB, 0x60, 0x33, 0xAC, 0xEA, +0x6D, 0xE2, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEB, +0xA3, 0x67, 0x06, 0xD3, 0x00, 0x18, 0x90, 0x26, +0xC7, 0x40, 0xE7, 0x40, 0x04, 0xD2, 0x11, 0x6C, +0x06, 0x95, 0x05, 0x4E, 0x09, 0x4F, 0x2A, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x7C, 0x9B, +0x27, 0x45, 0x23, 0x49, 0x6D, 0xE1, 0x85, 0x67, +0x40, 0xCB, 0x48, 0x6D, 0x00, 0x18, 0x90, 0x26, +0x42, 0x34, 0xFF, 0xF7, 0x1F, 0x6B, 0x82, 0x34, +0x6C, 0xEA, 0x89, 0xE2, 0x42, 0x34, 0x82, 0x34, +0x49, 0xE4, 0x4F, 0xEA, 0x6C, 0xEA, 0x14, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x5C, 0x9A, +0x27, 0x45, 0x03, 0x49, 0x49, 0xE1, 0x00, 0x6B, +0x60, 0xCA, 0x90, 0x67, 0x14, 0x6D, 0x00, 0x18, +0x90, 0x26, 0x00, 0x6C, 0x04, 0xD2, 0x14, 0x6D, +0xC4, 0x67, 0xE4, 0x67, 0x00, 0x18, 0xAB, 0x26, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0xBC, 0x9B, +0xFF, 0x6C, 0x42, 0x33, 0xB5, 0xE1, 0x8C, 0xEB, +0x60, 0xC5, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, +0x60, 0x9B, 0x8C, 0xEA, 0x65, 0xE1, 0x40, 0xC1, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, +0x07, 0x6B, 0x8C, 0xEB, 0x4C, 0xED, 0x8E, 0x34, +0x42, 0xF4, 0x10, 0x4C, 0x36, 0x25, 0x1F, 0xF7, +0x00, 0x6D, 0x8C, 0xED, 0x02, 0xF0, 0x00, 0x75, +0x01, 0x60, 0x21, 0x2D, 0x1F, 0xF7, 0x00, 0x6A, +0x8C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0xA8, 0x9A, 0xB5, 0xE4, 0x80, 0xA5, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0xA8, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0xB5, 0xE4, 0x51, 0xE4, 0x80, 0xA4, 0x00, 0xF6, +0x80, 0x34, 0x01, 0x6A, 0x00, 0xF6, 0x83, 0x34, +0x44, 0xEB, 0x8D, 0xEA, 0x36, 0x10, 0x30, 0xF0, +0x20, 0x6D, 0x80, 0xF3, 0xAC, 0x9D, 0x01, 0x6E, +0xC4, 0xEB, 0xB1, 0xE4, 0xA0, 0xA4, 0x00, 0xF6, +0xA0, 0x35, 0x00, 0xF6, 0xA3, 0x35, 0xCD, 0xED, +0x3A, 0x10, 0x1F, 0xF7, 0x00, 0x6D, 0x8C, 0xED, +0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x25, 0x2D, +0x1F, 0xF7, 0x00, 0x6A, 0x8C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x07, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0xA8, 0x9A, 0xB5, 0xE4, +0x80, 0xA5, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0xA8, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0xB5, 0xE4, 0x51, 0xE4, +0x80, 0xA4, 0x01, 0x6A, 0x00, 0xF6, 0x80, 0x34, +0x44, 0xEB, 0x00, 0xF6, 0x83, 0x34, 0x4F, 0xEA, +0x8C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x40, 0xC5, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6D, 0x80, 0xF3, +0xAC, 0x9D, 0x01, 0x6E, 0xC4, 0xEB, 0xB1, 0xE4, +0xA0, 0xA4, 0xCF, 0xEE, 0x00, 0xF6, 0xA0, 0x35, +0x00, 0xF6, 0xA3, 0x35, 0xCC, 0xED, 0x4C, 0xED, +0xA0, 0xC4, 0x20, 0xE8, 0x01, 0x6A, 0x20, 0xE8, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEE, 0x4C, 0xEF, +0x24, 0x67, 0x0D, 0xD5, 0x06, 0xD6, 0x04, 0xD7, +0x23, 0x27, 0x00, 0x68, 0x91, 0x67, 0x00, 0x18, +0x03, 0x19, 0x06, 0x93, 0x6E, 0xEA, 0x0E, 0x2A, +0x0D, 0x95, 0x42, 0x41, 0x82, 0x67, 0x05, 0xD2, +0x00, 0x18, 0x1D, 0x2A, 0x01, 0x72, 0x16, 0x60, +0x81, 0x41, 0x00, 0x18, 0x03, 0x19, 0x05, 0x93, +0x45, 0xE3, 0x05, 0x10, 0x81, 0x41, 0x00, 0x18, +0x03, 0x19, 0x02, 0x49, 0x45, 0xE1, 0xFF, 0xF7, +0x1F, 0x6B, 0x02, 0x48, 0x6C, 0xE8, 0x41, 0xE0, +0x04, 0x92, 0x6C, 0xE8, 0x43, 0xE8, 0xDE, 0x61, +0x01, 0x69, 0x2B, 0xE9, 0x51, 0x67, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xED, 0x00, 0x18, 0xC7, 0x16, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xFF, 0x68, 0x20, 0xF2, 0x58, 0x9A, 0x0C, 0xED, +0x05, 0xD5, 0x40, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF2, 0x40, 0x9A, 0xFF, 0xF7, 0x1F, 0x69, +0xB0, 0x67, 0x40, 0xA2, 0x49, 0x6E, 0x8C, 0xE9, +0x62, 0x67, 0x0C, 0xEB, 0x00, 0x6C, 0x04, 0xD3, +0x00, 0x18, 0xA6, 0x22, 0x00, 0x18, 0xEA, 0x25, +0x01, 0x72, 0x15, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF6, 0x64, 0x9A, 0x08, 0x6C, 0x01, 0x6D, +0x40, 0xA3, 0x03, 0x6F, 0x0C, 0xEA, 0x8D, 0xEA, +0x0C, 0xEA, 0x40, 0xC3, 0x05, 0x96, 0x91, 0x67, +0x00, 0x18, 0x92, 0x2A, 0x04, 0x95, 0x00, 0x6C, +0x4A, 0x6E, 0x00, 0x18, 0xA6, 0x22, 0x00, 0x18, +0x0A, 0x1B, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x0C, 0x4B, +0x86, 0xF3, 0xB1, 0xA3, 0xFF, 0x6A, 0x8C, 0xEA, +0x3D, 0x25, 0x71, 0xE2, 0x06, 0xF1, 0x8C, 0xA4, +0x39, 0x24, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF2, +0x9C, 0x9C, 0x01, 0x72, 0xC0, 0xAC, 0xFF, 0xF7, +0x1F, 0x6C, 0xCC, 0xEC, 0x0B, 0x60, 0x03, 0x22, +0x02, 0x72, 0x0F, 0x60, 0x2B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x86, 0xF7, 0x1B, 0x4A, 0x06, 0xF1, +0xEC, 0xA3, 0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x07, 0xF0, 0x1B, 0x4A, 0x06, 0xF1, 0xED, 0xA3, +0x06, 0x10, 0x06, 0xF1, 0xEE, 0xA3, 0x30, 0xF0, +0x20, 0x6A, 0x07, 0xF1, 0x1B, 0x4A, 0x00, 0x6B, +0xE1, 0xF7, 0x1F, 0x6E, 0x8C, 0xEE, 0x04, 0xD3, +0x05, 0xD3, 0x83, 0x67, 0x30, 0xF0, 0x20, 0x6B, +0xB9, 0xE6, 0x80, 0xF3, 0xA4, 0x9B, 0xDC, 0x36, +0xB5, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF6, +0x48, 0x9A, 0x59, 0xE6, 0x00, 0x18, 0x2D, 0x18, +0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x07, 0x97, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xA7, 0x44, 0x30, 0xF0, 0x20, 0x6C, 0x01, 0x4D, +0x07, 0xF2, 0x1B, 0x4C, 0x03, 0x6E, 0x00, 0x18, +0xAC, 0x19, 0x05, 0x97, 0x00, 0x6A, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF7, 0x04, 0x4C, +0x00, 0x6D, 0xC2, 0xF3, 0x10, 0x6E, 0x00, 0x18, +0xA7, 0x19, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFF, 0x63, 0x01, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, +0x4C, 0xEE, 0x4C, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF2, 0x5C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, +0x6C, 0xEC, 0x00, 0xAA, 0xE1, 0xF7, 0x1F, 0x6A, +0x0C, 0xEA, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF2, +0x18, 0x98, 0x51, 0xE4, 0x6C, 0xEC, 0x80, 0xC8, +0x9C, 0x32, 0x30, 0xF0, 0x20, 0x6C, 0x40, 0xF3, +0x94, 0x9C, 0x30, 0xF0, 0x20, 0x68, 0x60, 0xF3, +0x14, 0x98, 0x91, 0xE2, 0x80, 0xAC, 0x01, 0xE2, +0x00, 0x98, 0x6C, 0xEC, 0x05, 0x25, 0x10, 0xF0, +0x00, 0x6D, 0xAB, 0xED, 0xAD, 0xEC, 0x6C, 0xEC, +0xD8, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, 0x30, 0xF0, +0x20, 0x6C, 0x40, 0xF3, 0x94, 0x9C, 0x91, 0xE2, +0x60, 0xCC, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, +0x60, 0x9B, 0x6D, 0xE2, 0x80, 0xA3, 0x01, 0x6B, +0x8C, 0xEB, 0x05, 0x23, 0x03, 0xF7, 0x01, 0x6B, +0x6B, 0xEB, 0x0C, 0xEB, 0x06, 0x10, 0x1F, 0xF7, +0x01, 0x6B, 0x6B, 0xEB, 0x0C, 0xEB, 0xE0, 0x37, +0xED, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x60, 0xF6, +0x8C, 0x9C, 0x80, 0xF4, 0xC0, 0x36, 0x6C, 0xEC, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF5, 0x78, 0x9B, +0x6D, 0xEE, 0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF3, +0x74, 0x9B, 0x8D, 0xEE, 0x6D, 0xE2, 0xC0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF2, 0x90, 0x9B, +0xF7, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, +0x60, 0xC4, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0xF7, 0x1F, 0x6B, 0xAC, 0xEB, 0x05, 0xD3, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF2, 0x7C, 0x9B, +0xFF, 0x6A, 0x8C, 0xEA, 0x80, 0xAB, 0xE1, 0xF7, +0x1F, 0x6B, 0x00, 0x68, 0x8C, 0xEB, 0x69, 0xE2, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF3, 0x8C, 0x9B, +0x5C, 0x32, 0x91, 0xE2, 0x04, 0xD4, 0x18, 0x10, +0x04, 0x92, 0x20, 0x9A, 0x07, 0x28, 0x01, 0x6D, +0x83, 0xF1, 0x18, 0x6C, 0xAB, 0xED, 0xD1, 0x67, +0x00, 0x18, 0x69, 0x20, 0x01, 0x6D, 0x83, 0xF1, +0x18, 0x6C, 0xAB, 0xED, 0xD1, 0x67, 0x00, 0x18, +0x69, 0x20, 0x04, 0x93, 0x01, 0x48, 0xFF, 0xF7, +0x1F, 0x6A, 0x04, 0x4B, 0x4C, 0xE8, 0x04, 0xD3, +0x05, 0x92, 0x43, 0xE8, 0xE5, 0x61, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF6, 0x0C, 0x4A, +0x05, 0x6B, 0xC6, 0xF4, 0x70, 0xDA, 0x09, 0x6B, +0xC6, 0xF4, 0x6C, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x1F, 0xF7, 0x00, 0x6A, 0xAC, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x26, 0x67, 0x01, 0x60, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x55, 0xE5, 0x00, 0x9D, 0x91, 0x67, +0x00, 0x18, 0xC3, 0x18, 0x2C, 0xE8, 0x06, 0xEA, +0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x46, 0x67, 0x01, 0x4A, +0x05, 0x67, 0x0C, 0xD6, 0x27, 0x67, 0x1C, 0x22, +0x1F, 0xF7, 0x00, 0x6A, 0xAC, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x49, 0xE0, 0x40, 0x9A, 0x0C, 0x94, 0x04, 0xD2, +0x00, 0x18, 0xC3, 0x18, 0x0C, 0x93, 0x24, 0xEA, +0x6F, 0xEA, 0x04, 0x93, 0x6C, 0xEA, 0x4D, 0xE9, +0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x41, 0xE0, 0x20, 0xD8, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x06, 0xD4, 0x06, 0x04, +0x09, 0xD7, 0x07, 0xD5, 0x08, 0xD6, 0x00, 0x18, +0xCA, 0x19, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x20, 0xF4, 0x7C, 0x9B, 0x54, 0x34, +0x01, 0x4A, 0x71, 0xE4, 0xA0, 0xA4, 0xF8, 0x6B, +0xAC, 0xEB, 0x60, 0xC4, 0xFF, 0x6B, 0x6C, 0xEA, +0x80, 0x72, 0xF1, 0x61, 0x00, 0x18, 0xE4, 0x2A, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xE3, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +u32 array_length_mp_8814a_fw_wowlan = 45944; + +#endif + +#endif /* end of LOAD_FW_HEADER_FROM_DRIVER */ + +#endif diff --git a/hal/hal8814a_fw.h b/hal/hal8814a_fw.h new file mode 100644 index 0000000..f13d98a --- /dev/null +++ b/hal/hal8814a_fw.h @@ -0,0 +1,43 @@ +/****************************************************************************** +* +* Copyright(c) 2007 - 2016 Realtek Corporation. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of version 2 of the GNU General Public License as +* published by the Free Software Foundation. +* +* This program is distributed in the hope that it will be useful, but WITHOUT +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +* more details. +* +* You should have received a copy of the GNU General Public License along with +* this program; if not, write to the Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA +* +* +******************************************************************************/ + +#ifdef CONFIG_RTL8814A + +#ifndef _FW_HEADER_8814A_H +#define _FW_HEADER_8814A_H + +#ifdef LOAD_FW_HEADER_FROM_DRIVER +#if (defined(CONFIG_AP_WOWLAN) || (DM_ODM_SUPPORT_TYPE & (ODM_AP))) +extern u8 array_mp_8814a_fw_ap[42248]; +extern u32 array_length_mp_8814a_fw_ap; +#endif + +#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN)) || (DM_ODM_SUPPORT_TYPE & (ODM_CE)) +extern u8 array_mp_8814a_fw_nic[68320]; +extern u32 array_length_mp_8814a_fw_nic; +extern u8 array_mp_8814a_fw_wowlan[45944]; +extern u32 array_length_mp_8814a_fw_wowlan; +#endif +#endif /* end of LOAD_FW_HEADER_FROM_DRIVER */ + +#endif + +#endif + diff --git a/hal/phydm/halrf/rtl8814a/halhwimg8814a_rf.c b/hal/phydm/halrf/rtl8814a/halhwimg8814a_rf.c new file mode 100644 index 0000000..6c6a52c --- /dev/null +++ b/hal/phydm/halrf/rtl8814a/halhwimg8814a_rf.c @@ -0,0 +1,24870 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +/*Image2HeaderVersion: R3 1.5.6*/ +#include "mp_precomp.h" + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) +#if RT_PLATFORM == PLATFORM_MACOSX +#include "phydm_precomp.h" +#else +#include "../phydm_precomp.h" +#endif +#else +#include "../../phydm_precomp.h" +#endif + +#define D_S_SIZE DELTA_SWINGIDX_SIZE +#define D_ST_SIZE DELTA_SWINTSSI_SIZE + +#if (RTL8814A_SUPPORT == 1) +static boolean +check_positive(struct dm_struct *dm, + const u32 condition1, + const u32 condition2, + const u32 condition3, + const u32 condition4 +) +{ + u32 cond1 = condition1, cond2 = condition2, + cond3 = condition3, cond4 = condition4; + + u8 cut_version_for_para = + (dm->cut_version == ODM_CUT_A) ? 15 : dm->cut_version; + + u8 pkg_type_for_para = + (dm->package_type == 0) ? 15 : dm->package_type; + + u32 driver1 = cut_version_for_para << 24 | + (dm->support_interface & 0xF0) << 16 | + dm->support_platform << 16 | + pkg_type_for_para << 12 | + (dm->support_interface & 0x0F) << 8 | + dm->rfe_type; + + u32 driver2 = (dm->type_glna & 0xFF) << 0 | + (dm->type_gpa & 0xFF) << 8 | + (dm->type_alna & 0xFF) << 16 | + (dm->type_apa & 0xFF) << 24; + + u32 driver3 = 0; + + u32 driver4 = (dm->type_glna & 0xFF00) >> 8 | + (dm->type_gpa & 0xFF00) | + (dm->type_alna & 0xFF00) << 8 | + (dm->type_apa & 0xFF00) << 16; + + PHYDM_DBG(dm, ODM_COMP_INIT, + "===> %s (cond1, cond2, cond3, cond4) = (0x%X 0x%X 0x%X 0x%X)\n", + __func__, cond1, cond2, cond3, cond4); + PHYDM_DBG(dm, ODM_COMP_INIT, + "===> %s (driver1, driver2, driver3, driver4) = (0x%X 0x%X 0x%X 0x%X)\n", + __func__, driver1, driver2, driver3, driver4); + + PHYDM_DBG(dm, ODM_COMP_INIT, + " (Platform, Interface) = (0x%X, 0x%X)\n", + dm->support_platform, dm->support_interface); + PHYDM_DBG(dm, ODM_COMP_INIT, " (RFE, Package) = (0x%X, 0x%X)\n", + dm->rfe_type, dm->package_type); + + /*============== value Defined Check ===============*/ + /*cut version [27:24] need to do value check*/ + if (((cond1 & 0x0F000000) != 0) && + ((cond1 & 0x0F000000) != (driver1 & 0x0F000000))) + return false; + + /*pkg type [15:12] need to do value check*/ + if (((cond1 & 0x0000F000) != 0) && + ((cond1 & 0x0000F000) != (driver1 & 0x0000F000))) + return false; + + /*interface [11:8] need to do value check*/ + if (((cond1 & 0x00000F00) != 0) && + ((cond1 & 0x00000F00) != (driver1 & 0x00000F00))) + return false; + /*=============== Bit Defined Check ================*/ + /* We don't care [31:28] */ + + cond1 &= 0x000000FF; + driver1 &= 0x000000FF; + + if (cond1 == driver1) + return true; + else + return false; +} + + +/****************************************************************************** + * radioa.TXT + ******************************************************************************/ + +const u32 array_mp_8814a_radioa[] = { + 0x018, 0x00013124, + 0x040, 0x00000C00, + 0x058, 0x00000F98, + 0x07F, 0x00068004, + 0x0B0, 0x000FFFFE, + 0x0B1, 0x0003FF48, + 0x0B2, 0x0006AA3F, + 0x0B3, 0x000FFC9A, + 0x0B4, 0x0000A78F, + 0x0B5, 0x00000A3F, + 0x0B6, 0x0000C09C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0xA0000000, 0x00000000, + 0x0B7, 0x0003000C, + 0xB0000000, 0x00000000, + 0x0B8, 0x0007400E, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0xA0000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0xB0000000, 0x00000000, + 0x0BA, 0x00050780, + 0x0BB, 0x00000000, + 0x0BC, 0x00040009, + 0x0BD, 0x00000000, + 0x0BE, 0x00000000, + 0x0BF, 0x00000000, + 0x0EF, 0x00020000, + 0x03E, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00030000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00030000, + 0xA0000000, 0x00000000, + 0x03F, 0x00030000, + 0xB0000000, 0x00000000, + 0x03E, 0x00020000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00040000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00040000, + 0xA0000000, 0x00000000, + 0x03F, 0x00040000, + 0xB0000000, 0x00000000, + 0x03E, 0x00040000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00030000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00030000, + 0xA0000000, 0x00000000, + 0x03F, 0x00030000, + 0xB0000000, 0x00000000, + 0x03E, 0x00060000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00030000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00030000, + 0xA0000000, 0x00000000, + 0x03F, 0x00030000, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x00010000, + 0x03E, 0x00000000, + 0x03F, 0x00006800, + 0x03E, 0x00000080, + 0x03F, 0x00006000, + 0x03E, 0x00000100, + 0x03F, 0x00004800, + 0x03E, 0x00000180, + 0x03F, 0x00004000, + 0x03E, 0x00000200, + 0x03F, 0x00004000, + 0x03E, 0x00000280, + 0x03F, 0x00002800, + 0x03E, 0x00000300, + 0x03F, 0x00002800, + 0x03E, 0x00000380, + 0x03F, 0x00002000, + 0x0EF, 0x00000000, + 0x0EF, 0x00040000, + 0x03E, 0x00000000, + 0x03F, 0x000000BC, + 0x03E, 0x00000040, + 0x03F, 0x00000053, + 0x03E, 0x00000050, + 0x03F, 0x00000050, + 0x03E, 0x00000060, + 0x03F, 0x00000050, + 0x0EF, 0x00000000, + 0x0EF, 0x00000400, + 0x03E, 0x00000006, + 0x041, 0x000EE080, + 0x03E, 0x00000008, + 0x041, 0x000EE0C0, + 0x03E, 0x0000000A, + 0x041, 0x000EE100, + 0x03E, 0x0000000C, + 0x041, 0x000EE100, + 0x0EF, 0x00000000, + 0x018, 0x00000006, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0xA0000000, 0x00000000, + 0x086, 0x000E4B58, + 0x087, 0x00049F80, + 0xB0000000, 0x00000000, + 0x0DF, 0x00000008, + 0x0EF, 0x00002000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x000179C3, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x000179C3, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x000179C3, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x000179C3, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x000179C3, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x000179C3, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x000179C3, + 0xA0000000, 0x00000000, + 0x03B, 0x0003F258, + 0x03B, 0x00030A58, + 0x03B, 0x0002FA58, + 0x03B, 0x00022590, + 0x03B, 0x0001FA50, + 0x03B, 0x00010248, + 0x03B, 0x00008240, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000100, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0000ADF6, + 0x034, 0x00009DF3, + 0x034, 0x00008DF0, + 0x034, 0x00007DED, + 0x034, 0x00006DEA, + 0x034, 0x00005CED, + 0x034, 0x00004CEA, + 0x034, 0x000034EA, + 0x034, 0x000024E7, + 0x034, 0x0000146A, + 0x034, 0x0000006B, + 0xB0000000, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0008ADF6, + 0x034, 0x00089DF3, + 0x034, 0x00088DF0, + 0x034, 0x00087DED, + 0x034, 0x00086DEA, + 0x034, 0x00085CED, + 0x034, 0x00084CEA, + 0x034, 0x000834EA, + 0x034, 0x000824E7, + 0x034, 0x0008146A, + 0x034, 0x0008006B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x000020A2, + 0x0DF, 0x00000080, + 0x035, 0x00000192, + 0x035, 0x00008192, + 0x035, 0x00010192, + 0x036, 0x00000024, + 0x036, 0x00008024, + 0x036, 0x00010024, + 0x036, 0x00018024, + 0x0EF, 0x00000000, + 0x051, 0x00000C21, + 0x052, 0x000006D9, + 0x053, 0x000FC649, + 0x054, 0x0000017E, + 0x018, 0x0001012A, + 0x081, 0x0007FC00, + 0x089, 0x00050110, + 0x08A, 0x00043E50, + 0x08B, 0x0002E180, + 0x08C, 0x00093C3C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0xA0000000, 0x00000000, + 0x085, 0x000F8000, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0xA0000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0xB0000000, 0x00000000, + 0x0EF, 0x00001000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0xA0000000, 0x00000000, + 0x03C, 0x00028000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00030023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00028623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00021633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0001C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00010293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00009593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0000118B, + 0xA0000000, 0x00000000, + 0x03B, 0x0000078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x000AC000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00040000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0xA0000000, 0x00000000, + 0x03C, 0x0004C000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00070023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00068623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00061633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0005C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00050293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00049593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0004138B, + 0xA0000000, 0x00000000, + 0x03B, 0x0004078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0008C000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00060000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0xA0000000, 0x00000000, + 0x03C, 0x00004000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B0023, + 0x80000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0xA0000000, 0x00000000, + 0x03C, 0x00020000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A8623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A1633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0009C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00090293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00089593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0008118B, + 0xA0000000, 0x00000000, + 0x03B, 0x0008078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x00000800, + 0x03B, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000801, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0xA0000000, 0x00000000, + 0x03A, 0x00000803, + 0xB0000000, 0x00000000, + 0x03B, 0x00040000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001801, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000003, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000003, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001001, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0xA0000000, 0x00000000, + 0x03A, 0x00001000, + 0xB0000000, 0x00000000, + 0x03B, 0x00080000, + 0x80000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001802, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000800, + 0xA0000000, 0x00000000, + 0x03A, 0x00001002, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x00013124, + 0x0EF, 0x00000100, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A1AD, + 0x034, 0x000491AA, + 0x034, 0x000481A7, + 0x034, 0x000470AA, + 0x034, 0x000460A7, + 0x034, 0x00045049, + 0x034, 0x00044046, + 0x034, 0x00043026, + 0x034, 0x00042009, + 0x034, 0x00041006, + 0x034, 0x00040003, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AF, + 0x034, 0x000483AB, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004406A, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AF, + 0x034, 0x000483AB, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004406A, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AF, + 0x034, 0x000483AB, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004406A, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AF, + 0x034, 0x000483AB, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004406A, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3F5, + 0x034, 0x000493F2, + 0x034, 0x000483B0, + 0x034, 0x00047370, + 0x034, 0x0004636D, + 0x034, 0x0004536A, + 0x034, 0x00044349, + 0x034, 0x0004316A, + 0x034, 0x00042167, + 0x034, 0x00041129, + 0x034, 0x00040049, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AF, + 0x034, 0x000483AB, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004406A, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AF, + 0x034, 0x000483AB, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004406A, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0xA0000000, 0x00000000, + 0x034, 0x0004AFF1, + 0x034, 0x00049FEE, + 0x034, 0x00048FEB, + 0x034, 0x00047FE8, + 0x034, 0x00046DEA, + 0x034, 0x00045DE7, + 0x034, 0x00044CEA, + 0x034, 0x00043CE7, + 0x034, 0x00042C69, + 0x034, 0x00041C66, + 0x034, 0x00040C28, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A1AD, + 0x034, 0x000291AA, + 0x034, 0x000281A7, + 0x034, 0x000270AA, + 0x034, 0x000260A7, + 0x034, 0x00025049, + 0x034, 0x00024046, + 0x034, 0x00023026, + 0x034, 0x00022009, + 0x034, 0x00021006, + 0x034, 0x00020003, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3F5, + 0x034, 0x000293F2, + 0x034, 0x000282F1, + 0x034, 0x000272B0, + 0x034, 0x000262AD, + 0x034, 0x000252AA, + 0x034, 0x000242A7, + 0x034, 0x000230EC, + 0x034, 0x000220E9, + 0x034, 0x0002106A, + 0x034, 0x00020067, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0xA0000000, 0x00000000, + 0x034, 0x0002AFF1, + 0x034, 0x00029FEE, + 0x034, 0x00028FEB, + 0x034, 0x00027FE8, + 0x034, 0x00026DEA, + 0x034, 0x00025DE7, + 0x034, 0x00024CEA, + 0x034, 0x00023CE7, + 0x034, 0x00022C69, + 0x034, 0x00021C66, + 0x034, 0x00020C28, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EC, + 0x034, 0x0000938C, + 0x034, 0x000081AD, + 0x034, 0x000071AA, + 0x034, 0x000061A7, + 0x034, 0x000050AA, + 0x034, 0x000040A7, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x0000100C, + 0x034, 0x00000009, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3F4, + 0x034, 0x000093F1, + 0x034, 0x000082B1, + 0x034, 0x000071D1, + 0x034, 0x000061CE, + 0x034, 0x000051CB, + 0x034, 0x000041C8, + 0x034, 0x000030CB, + 0x034, 0x000020C8, + 0x034, 0x00001087, + 0x034, 0x00000084, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0xA0000000, 0x00000000, + 0x034, 0x0000AFF1, + 0x034, 0x00009FEE, + 0x034, 0x00008FEB, + 0x034, 0x00007FE8, + 0x034, 0x00006DEA, + 0x034, 0x00005DE7, + 0x034, 0x00004CEA, + 0x034, 0x00003CE7, + 0x034, 0x00002C69, + 0x034, 0x00001C66, + 0x034, 0x00000C28, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA1AD, + 0x034, 0x000C91AA, + 0x034, 0x000C81A7, + 0x034, 0x000C70AA, + 0x034, 0x000C60A7, + 0x034, 0x000C5049, + 0x034, 0x000C4046, + 0x034, 0x000C3026, + 0x034, 0x000C2009, + 0x034, 0x000C1006, + 0x034, 0x000C0003, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AF, + 0x034, 0x000C83AB, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C406A, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AF, + 0x034, 0x000C83AB, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C406A, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AF, + 0x034, 0x000C83AB, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C406A, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AF, + 0x034, 0x000C83AB, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C406A, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3F5, + 0x034, 0x000C93F2, + 0x034, 0x000C83B0, + 0x034, 0x000C7370, + 0x034, 0x000C636D, + 0x034, 0x000C536A, + 0x034, 0x000C4349, + 0x034, 0x000C316A, + 0x034, 0x000C2167, + 0x034, 0x000C1129, + 0x034, 0x000C0049, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AF, + 0x034, 0x000C83AB, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C406A, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AF, + 0x034, 0x000C83AB, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C406A, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0xA0000000, 0x00000000, + 0x034, 0x000CA794, + 0x034, 0x000C9791, + 0x034, 0x000C878E, + 0x034, 0x000C778B, + 0x034, 0x000C658D, + 0x034, 0x000C558A, + 0x034, 0x000C448D, + 0x034, 0x000C348A, + 0x034, 0x000C244C, + 0x034, 0x000C1449, + 0x034, 0x000C042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA1AD, + 0x034, 0x000A91AA, + 0x034, 0x000A81A7, + 0x034, 0x000A70AA, + 0x034, 0x000A60A7, + 0x034, 0x000A5049, + 0x034, 0x000A4046, + 0x034, 0x000A3026, + 0x034, 0x000A2009, + 0x034, 0x000A1006, + 0x034, 0x000A0003, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3F5, + 0x034, 0x000A93F2, + 0x034, 0x000A82F1, + 0x034, 0x000A72B0, + 0x034, 0x000A62AD, + 0x034, 0x000A52AA, + 0x034, 0x000A42A7, + 0x034, 0x000A30EC, + 0x034, 0x000A20E9, + 0x034, 0x000A106A, + 0x034, 0x000A0067, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0xA0000000, 0x00000000, + 0x034, 0x000AA794, + 0x034, 0x000A9791, + 0x034, 0x000A878E, + 0x034, 0x000A778B, + 0x034, 0x000A658D, + 0x034, 0x000A558A, + 0x034, 0x000A448D, + 0x034, 0x000A348A, + 0x034, 0x000A244C, + 0x034, 0x000A1449, + 0x034, 0x000A042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EC, + 0x034, 0x0008938C, + 0x034, 0x000881AD, + 0x034, 0x000871AA, + 0x034, 0x000861A7, + 0x034, 0x000850AA, + 0x034, 0x000840A7, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x0008100C, + 0x034, 0x00080009, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3F4, + 0x034, 0x000893F1, + 0x034, 0x000882B1, + 0x034, 0x000871D1, + 0x034, 0x000861CE, + 0x034, 0x000851CB, + 0x034, 0x000841C8, + 0x034, 0x000830CB, + 0x034, 0x000820C8, + 0x034, 0x00081087, + 0x034, 0x00080084, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0xA0000000, 0x00000000, + 0x034, 0x0008A794, + 0x034, 0x00089791, + 0x034, 0x0008878E, + 0x034, 0x0008778B, + 0x034, 0x0008658D, + 0x034, 0x0008558A, + 0x034, 0x0008448D, + 0x034, 0x0008348A, + 0x034, 0x0008244C, + 0x034, 0x00081449, + 0x034, 0x0008042B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x0DF, 0x00000001, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0xA0000000, 0x00000000, + 0x035, 0x00000747, + 0x035, 0x00008747, + 0x035, 0x00010747, + 0x035, 0x00020747, + 0x035, 0x00028747, + 0x035, 0x00030747, + 0x035, 0x00040747, + 0x035, 0x00048747, + 0x035, 0x00050747, + 0x035, 0x000805FB, + 0x035, 0x000885FB, + 0x035, 0x000905FB, + 0x035, 0x000A05FB, + 0x035, 0x000A85FB, + 0x035, 0x000B05FB, + 0x035, 0x000C05FB, + 0x035, 0x000C85FB, + 0x035, 0x000D05FB, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x0DF, 0x00000001, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000473, + 0x036, 0x00008473, + 0x036, 0x00010473, + 0x036, 0x00020473, + 0x036, 0x00028473, + 0x036, 0x00030473, + 0x036, 0x00040473, + 0x036, 0x00048473, + 0x036, 0x00050473, + 0x036, 0x00080473, + 0x036, 0x00088473, + 0x036, 0x00090473, + 0x036, 0x000A0473, + 0x036, 0x000A8473, + 0x036, 0x000B0473, + 0x036, 0x000C0473, + 0x036, 0x000C8473, + 0x036, 0x000D0473, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0xA0000000, 0x00000000, + 0x036, 0x00000473, + 0x036, 0x00008473, + 0x036, 0x00010473, + 0x036, 0x00020473, + 0x036, 0x00028473, + 0x036, 0x00030473, + 0x036, 0x00040473, + 0x036, 0x00048473, + 0x036, 0x00050473, + 0x036, 0x00080473, + 0x036, 0x00088473, + 0x036, 0x00090473, + 0x036, 0x000A0473, + 0x036, 0x000A8473, + 0x036, 0x000B0473, + 0x036, 0x000C0473, + 0x036, 0x000C8473, + 0x036, 0x000D0473, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x0EF, 0x00000004, + 0x037, 0x00000000, + 0x038, 0x00005146, + 0x037, 0x00004000, + 0x038, 0x00005146, + 0x037, 0x00008000, + 0x038, 0x00005146, + 0x037, 0x00010000, + 0x038, 0x00005146, + 0x037, 0x00014000, + 0x038, 0x00005146, + 0x037, 0x00018000, + 0x038, 0x00004D4E, + 0x037, 0x0001C000, + 0x038, 0x00004D4E, + 0x037, 0x00020000, + 0x038, 0x00004D4E, + 0x037, 0x00024000, + 0x038, 0x000071C6, + 0x037, 0x00028000, + 0x038, 0x000071C6, + 0x037, 0x0002C000, + 0x038, 0x000071C6, + 0x037, 0x00030000, + 0x038, 0x000071CE, + 0x037, 0x00034000, + 0x038, 0x000071CE, + 0x037, 0x00038000, + 0x038, 0x00005126, + 0x037, 0x0003C000, + 0x038, 0x00005126, + 0x037, 0x00040000, + 0x038, 0x00005126, + 0x037, 0x00044000, + 0x038, 0x00005126, + 0x037, 0x00048000, + 0x038, 0x00005126, + 0x037, 0x00080000, + 0x038, 0x00005ECE, + 0x037, 0x00084000, + 0x038, 0x00005ECE, + 0x037, 0x00088000, + 0x038, 0x00005ECE, + 0x037, 0x00090000, + 0x038, 0x00005ECE, + 0x037, 0x00094000, + 0x038, 0x00005ECE, + 0x037, 0x00098000, + 0x038, 0x00005ECE, + 0x037, 0x0009C000, + 0x038, 0x00005ECE, + 0x037, 0x000A0000, + 0x038, 0x00005ECE, + 0x037, 0x000A4000, + 0x038, 0x00005ECE, + 0x037, 0x000A8000, + 0x038, 0x00005ECE, + 0x037, 0x000AC000, + 0x038, 0x00005ECE, + 0x037, 0x000B0000, + 0x038, 0x00005ECE, + 0x037, 0x000B4000, + 0x038, 0x00005ECE, + 0x037, 0x000B8000, + 0x038, 0x00005ECE, + 0x037, 0x000BC000, + 0x038, 0x00005ECE, + 0x037, 0x000C0000, + 0x038, 0x00005ECE, + 0x037, 0x000C4000, + 0x038, 0x00005ECE, + 0x037, 0x000C8000, + 0x038, 0x00005ECE, + 0x0EF, 0x00000000, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000008, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x03C, 0x0000007D, + 0x03C, 0x0000047D, + 0x03C, 0x0000087D, + 0x03C, 0x0000107D, + 0x03C, 0x0000147D, + 0x03C, 0x0000187D, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0xA0000000, 0x00000000, + 0x03C, 0x0000037E, + 0x03C, 0x00000575, + 0x03C, 0x00000971, + 0x03C, 0x0000127E, + 0x03C, 0x00001575, + 0x03C, 0x00001871, + 0x03C, 0x0000217E, + 0x03C, 0x00002575, + 0x03C, 0x00002871, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x061, 0x000C0D47, + 0x062, 0x0000133C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0xA0000000, 0x00000000, + 0x063, 0x0007D0E7, + 0xB0000000, 0x00000000, + 0x064, 0x00014FEC, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0xA0000000, 0x00000000, + 0x065, 0x000933FF, + 0xB0000000, 0x00000000, + 0x066, 0x00000040, + 0x057, 0x00050000, + 0x056, 0x00051DF0, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0xA0000000, 0x00000000, + 0x055, 0x00082060, + 0xB0000000, 0x00000000, + 0x01C, 0x000739D2, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x01F, 0x0002255C, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x01F, 0x0002255C, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x01F, 0x0002255C, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x01F, 0x0002255C, + 0xA0000000, 0x00000000, + 0x01F, 0x0002255C, + 0xB0000000, 0x00000000, + 0x0B1, 0x0007FF48, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0xA0000000, 0x00000000, + 0x0C4, 0x00083F00, + 0xB0000000, 0x00000000, + 0x018, 0x0001B126, + 0xFFE, 0x00000000, + 0xFFE, 0x00000000, + 0xFFE, 0x00000000, + 0x018, 0x00013126, + 0x018, 0x00013124, + +}; + +void +odm_read_and_config_mp_8814a_radioa(struct dm_struct *dm) +{ + u32 i = 0; + u8 c_cond; + boolean is_matched = true, is_skipped = false; + u32 array_len = + sizeof(array_mp_8814a_radioa) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_radioa; + + u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0; + u32 a1 = 0, a2 = 0, a3 = 0, a4 = 0; + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + while ((i + 1) < array_len) { + v1 = array[i]; + v2 = array[i + 1]; + + if (v1 & (BIT(31) | BIT(30))) {/*positive & negative condition*/ + if (v1 & BIT(31)) {/* positive condition*/ + c_cond = + (u8)((v1 & (BIT(29) | BIT(28))) >> 28); + if (c_cond == COND_ENDIF) {/*end*/ + is_matched = true; + is_skipped = false; + PHYDM_DBG(dm, ODM_COMP_INIT, "ENDIF\n"); + } else if (c_cond == COND_ELSE) { /*else*/ + is_matched = is_skipped ? false : true; + PHYDM_DBG(dm, ODM_COMP_INIT, "ELSE\n"); + } else {/*if , else if*/ + pre_v1 = v1; + pre_v2 = v2; + PHYDM_DBG(dm, ODM_COMP_INIT, + "IF or ELSE IF\n"); + } + } else if (v1 & BIT(30)) { /*negative condition*/ + if (!is_skipped) { + a1 = pre_v1; a2 = pre_v2; + a3 = v1; a4 = v2; + if (check_positive(dm, + a1, a2, a3, a4)) { + is_matched = true; + is_skipped = true; + } else { + is_matched = false; + is_skipped = false; + } + } else { + is_matched = false; + } + } + } else { + if (is_matched) + odm_config_rf_radio_a_8814a(dm, v1, v2); + } + i = i + 2; + } +} + +u32 +odm_get_version_mp_8814a_radioa(void) +{ + return 110; +} + +/****************************************************************************** + * radiob.TXT + ******************************************************************************/ + +const u32 array_mp_8814a_radiob[] = { + 0x018, 0x00013124, + 0x040, 0x00000C00, + 0x058, 0x00000F98, + 0x07F, 0x00068004, + 0x018, 0x00000006, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0xA0000000, 0x00000000, + 0x086, 0x000E4B58, + 0x087, 0x00049F80, + 0xB0000000, 0x00000000, + 0x0DF, 0x00000008, + 0x0EF, 0x00002000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017BC3, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F39B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017BC3, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017BC3, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F39B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017BC3, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017BC3, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017BC3, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017BC3, + 0xA0000000, 0x00000000, + 0x03B, 0x0003F258, + 0x03B, 0x00030A58, + 0x03B, 0x0002FA58, + 0x03B, 0x00022590, + 0x03B, 0x0001FA50, + 0x03B, 0x00010248, + 0x03B, 0x00008240, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000100, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0000ADF6, + 0x034, 0x00009DF3, + 0x034, 0x00008DF0, + 0x034, 0x00007DED, + 0x034, 0x00006DEA, + 0x034, 0x00005CED, + 0x034, 0x00004CEA, + 0x034, 0x000034EA, + 0x034, 0x000024E7, + 0x034, 0x0000146A, + 0x034, 0x0000006B, + 0xB0000000, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0008ADF6, + 0x034, 0x00089DF3, + 0x034, 0x00088DF0, + 0x034, 0x00087DED, + 0x034, 0x00086DEA, + 0x034, 0x00085CED, + 0x034, 0x00084CEA, + 0x034, 0x000834EA, + 0x034, 0x000824E7, + 0x034, 0x0008146A, + 0x034, 0x0008006B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x000020A2, + 0x0DF, 0x00000080, + 0x035, 0x00000192, + 0x035, 0x00008192, + 0x035, 0x00010192, + 0x036, 0x00000024, + 0x036, 0x00008024, + 0x036, 0x00010024, + 0x036, 0x00018024, + 0x0EF, 0x00000000, + 0x051, 0x00000C21, + 0x052, 0x000006D9, + 0x053, 0x000FC649, + 0x054, 0x0000017E, + 0x018, 0x0001012A, + 0x081, 0x0007FC00, + 0x089, 0x00050110, + 0x08A, 0x00043E50, + 0x08B, 0x0002E180, + 0x08C, 0x00093C3C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0xA0000000, 0x00000000, + 0x085, 0x000F8000, + 0xB0000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x0EF, 0x00001000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0xA0000000, 0x00000000, + 0x03C, 0x00040000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00030023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00028623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00021633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0001C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00010293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00009593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x00000F8B, + 0xA0000000, 0x00000000, + 0x03B, 0x0000078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00060000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00048000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00048000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00048000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00048000, + 0xA0000000, 0x00000000, + 0x03C, 0x00020000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00070023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00068623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00061633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0005C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00050293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00049593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x03B, 0x0004078B, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00048000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00060000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0004C000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0004C000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00048000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00004000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0xA0000000, 0x00000000, + 0x03C, 0x00020000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B0023, + 0x80000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0xA0000000, 0x00000000, + 0x03C, 0x00020000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A8623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A1633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0009C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00090293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00089593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0008138B, + 0xA0000000, 0x00000000, + 0x03B, 0x0008078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x00000800, + 0x03B, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0xA0000000, 0x00000000, + 0x03A, 0x00000803, + 0xB0000000, 0x00000000, + 0x03B, 0x00040000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000800, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000800, + 0xA0000000, 0x00000000, + 0x03A, 0x00001000, + 0xB0000000, 0x00000000, + 0x03B, 0x00080000, + 0x80000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001802, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001802, + 0xA0000000, 0x00000000, + 0x03A, 0x00001002, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x00013124, + 0x0EF, 0x00000100, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38C, + 0x034, 0x000491AD, + 0x034, 0x000481AA, + 0x034, 0x000471A7, + 0x034, 0x000460AA, + 0x034, 0x000450A7, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x0004200C, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38C, + 0x034, 0x00049389, + 0x034, 0x0004816D, + 0x034, 0x0004716A, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38B, + 0x034, 0x00049388, + 0x034, 0x0004818B, + 0x034, 0x00047188, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38C, + 0x034, 0x00049389, + 0x034, 0x0004816D, + 0x034, 0x0004716A, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38B, + 0x034, 0x00049388, + 0x034, 0x0004818B, + 0x034, 0x00047188, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3F5, + 0x034, 0x000493F3, + 0x034, 0x000483B2, + 0x034, 0x00047390, + 0x034, 0x0004638D, + 0x034, 0x0004538A, + 0x034, 0x00044387, + 0x034, 0x0004324A, + 0x034, 0x00042247, + 0x034, 0x0004104D, + 0x034, 0x0004004A, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004AFF7, + 0x034, 0x00049FF6, + 0x034, 0x00048FF3, + 0x034, 0x00047FF0, + 0x034, 0x00046FED, + 0x034, 0x00045FEA, + 0x034, 0x00044FE7, + 0x034, 0x00043DEA, + 0x034, 0x00042DE7, + 0x034, 0x00041DE4, + 0x034, 0x00040CE7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38C, + 0x034, 0x00049389, + 0x034, 0x0004816D, + 0x034, 0x0004716A, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38C, + 0x034, 0x00049389, + 0x034, 0x0004816D, + 0x034, 0x0004716A, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0xA0000000, 0x00000000, + 0x034, 0x0004AFF4, + 0x034, 0x00049FF1, + 0x034, 0x00048FEE, + 0x034, 0x00047FEB, + 0x034, 0x00046FE8, + 0x034, 0x00045DEA, + 0x034, 0x00044CED, + 0x034, 0x00043CEA, + 0x034, 0x00042C6C, + 0x034, 0x00041C69, + 0x034, 0x00040C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A38C, + 0x034, 0x000291AD, + 0x034, 0x000281AA, + 0x034, 0x000271A7, + 0x034, 0x000260AA, + 0x034, 0x000250A7, + 0x034, 0x0002402C, + 0x034, 0x00023029, + 0x034, 0x0002200C, + 0x034, 0x00021009, + 0x034, 0x00020006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EE, + 0x034, 0x000293AC, + 0x034, 0x00028389, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AD, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EE, + 0x034, 0x000293AC, + 0x034, 0x00028389, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AD, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3F5, + 0x034, 0x000293F3, + 0x034, 0x000283D0, + 0x034, 0x00027371, + 0x034, 0x0002636E, + 0x034, 0x0002536B, + 0x034, 0x00024368, + 0x034, 0x0002332A, + 0x034, 0x00022327, + 0x034, 0x0002104C, + 0x034, 0x00020049, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002AFF7, + 0x034, 0x00029FF6, + 0x034, 0x00028FF3, + 0x034, 0x00027FF0, + 0x034, 0x00026FED, + 0x034, 0x00025FEA, + 0x034, 0x00024FE7, + 0x034, 0x00023DEA, + 0x034, 0x00022DE7, + 0x034, 0x00021DE4, + 0x034, 0x00020F25, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EE, + 0x034, 0x000293AC, + 0x034, 0x00028389, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EE, + 0x034, 0x000293AC, + 0x034, 0x00028389, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0xA0000000, 0x00000000, + 0x034, 0x0002AFF4, + 0x034, 0x00029FF1, + 0x034, 0x00028FEE, + 0x034, 0x00027FEB, + 0x034, 0x00026FE8, + 0x034, 0x00025DEA, + 0x034, 0x00024CED, + 0x034, 0x00023CEA, + 0x034, 0x00022C6C, + 0x034, 0x00021C69, + 0x034, 0x00020C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A38C, + 0x034, 0x000091AD, + 0x034, 0x000081AA, + 0x034, 0x000071A7, + 0x034, 0x000060AA, + 0x034, 0x000050A7, + 0x034, 0x0000402C, + 0x034, 0x00003029, + 0x034, 0x00002026, + 0x034, 0x00001009, + 0x034, 0x00000006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EC, + 0x034, 0x000093AC, + 0x034, 0x000081EC, + 0x034, 0x0000716D, + 0x034, 0x0000616A, + 0x034, 0x0000506D, + 0x034, 0x0000404C, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EF, + 0x034, 0x000093AD, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EC, + 0x034, 0x000093AC, + 0x034, 0x000081EC, + 0x034, 0x0000716D, + 0x034, 0x0000616A, + 0x034, 0x0000506D, + 0x034, 0x0000404C, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EF, + 0x034, 0x000093AD, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3F4, + 0x034, 0x000093F0, + 0x034, 0x000083AE, + 0x034, 0x00007350, + 0x034, 0x0000634D, + 0x034, 0x0000534A, + 0x034, 0x00004347, + 0x034, 0x0000312D, + 0x034, 0x0000212A, + 0x034, 0x00001127, + 0x034, 0x0000002A, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000AFF7, + 0x034, 0x00009FF4, + 0x034, 0x00008FF1, + 0x034, 0x00007FEE, + 0x034, 0x00006FEB, + 0x034, 0x00005FE8, + 0x034, 0x00004DEB, + 0x034, 0x00003DE8, + 0x034, 0x00002DE5, + 0x034, 0x00001C8B, + 0x034, 0x00000C88, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EC, + 0x034, 0x000093AC, + 0x034, 0x000081EC, + 0x034, 0x0000716D, + 0x034, 0x0000616A, + 0x034, 0x0000506D, + 0x034, 0x0000404C, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EC, + 0x034, 0x000093AC, + 0x034, 0x000081EC, + 0x034, 0x0000716D, + 0x034, 0x0000616A, + 0x034, 0x0000506D, + 0x034, 0x0000404C, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0xA0000000, 0x00000000, + 0x034, 0x0000AFF4, + 0x034, 0x00009FF1, + 0x034, 0x00008FEE, + 0x034, 0x00007FEB, + 0x034, 0x00006FE8, + 0x034, 0x00005DEA, + 0x034, 0x00004CED, + 0x034, 0x00003CEA, + 0x034, 0x00002C6C, + 0x034, 0x00001C69, + 0x034, 0x00000C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38C, + 0x034, 0x000C91AD, + 0x034, 0x000C81AA, + 0x034, 0x000C71A7, + 0x034, 0x000C60AA, + 0x034, 0x000C50A7, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C200C, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38C, + 0x034, 0x000C9389, + 0x034, 0x000C816D, + 0x034, 0x000C716A, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38B, + 0x034, 0x000C9388, + 0x034, 0x000C818B, + 0x034, 0x000C7188, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38C, + 0x034, 0x000C9389, + 0x034, 0x000C816D, + 0x034, 0x000C716A, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38B, + 0x034, 0x000C9388, + 0x034, 0x000C818B, + 0x034, 0x000C7188, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3F5, + 0x034, 0x000C93F3, + 0x034, 0x000C83B2, + 0x034, 0x000C7390, + 0x034, 0x000C638D, + 0x034, 0x000C538A, + 0x034, 0x000C4387, + 0x034, 0x000C324A, + 0x034, 0x000C2247, + 0x034, 0x000C104D, + 0x034, 0x000C004A, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CAFF7, + 0x034, 0x000C9FF6, + 0x034, 0x000C8FF3, + 0x034, 0x000C7FF0, + 0x034, 0x000C6FED, + 0x034, 0x000C5FEA, + 0x034, 0x000C4FE7, + 0x034, 0x000C3DEA, + 0x034, 0x000C2DE7, + 0x034, 0x000C1DE4, + 0x034, 0x000C0CE7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38C, + 0x034, 0x000C9389, + 0x034, 0x000C816D, + 0x034, 0x000C716A, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38C, + 0x034, 0x000C9389, + 0x034, 0x000C816D, + 0x034, 0x000C716A, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0xA0000000, 0x00000000, + 0x034, 0x000CA794, + 0x034, 0x000C9791, + 0x034, 0x000C878E, + 0x034, 0x000C778B, + 0x034, 0x000C658D, + 0x034, 0x000C558A, + 0x034, 0x000C448D, + 0x034, 0x000C348A, + 0x034, 0x000C244C, + 0x034, 0x000C1449, + 0x034, 0x000C042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA38C, + 0x034, 0x000A91AD, + 0x034, 0x000A81AA, + 0x034, 0x000A71A7, + 0x034, 0x000A60AA, + 0x034, 0x000A50A7, + 0x034, 0x000A402C, + 0x034, 0x000A3029, + 0x034, 0x000A200C, + 0x034, 0x000A1009, + 0x034, 0x000A0006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EE, + 0x034, 0x000A93AC, + 0x034, 0x000A8389, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AD, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EE, + 0x034, 0x000A93AC, + 0x034, 0x000A8389, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AD, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3F5, + 0x034, 0x000A93F3, + 0x034, 0x000A83D0, + 0x034, 0x000A7371, + 0x034, 0x000A636E, + 0x034, 0x000A536B, + 0x034, 0x000A4368, + 0x034, 0x000A332A, + 0x034, 0x000A2327, + 0x034, 0x000A104C, + 0x034, 0x000A0049, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AAFF7, + 0x034, 0x000A9FF6, + 0x034, 0x000A8FF3, + 0x034, 0x000A7FF0, + 0x034, 0x000A6FED, + 0x034, 0x000A5FEA, + 0x034, 0x000A4FE7, + 0x034, 0x000A3DEA, + 0x034, 0x000A2DE7, + 0x034, 0x000A1DE4, + 0x034, 0x000A0F25, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EE, + 0x034, 0x000A93AC, + 0x034, 0x000A8389, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EE, + 0x034, 0x000A93AC, + 0x034, 0x000A8389, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0xA0000000, 0x00000000, + 0x034, 0x000AA794, + 0x034, 0x000A9791, + 0x034, 0x000A878E, + 0x034, 0x000A778B, + 0x034, 0x000A658D, + 0x034, 0x000A558A, + 0x034, 0x000A448D, + 0x034, 0x000A348A, + 0x034, 0x000A244C, + 0x034, 0x000A1449, + 0x034, 0x000A042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A38C, + 0x034, 0x000891AD, + 0x034, 0x000881AA, + 0x034, 0x000871A7, + 0x034, 0x000860AA, + 0x034, 0x000850A7, + 0x034, 0x0008402C, + 0x034, 0x00083029, + 0x034, 0x00082026, + 0x034, 0x00081009, + 0x034, 0x00080006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EC, + 0x034, 0x000893AC, + 0x034, 0x000881EC, + 0x034, 0x0008716D, + 0x034, 0x0008616A, + 0x034, 0x0008506D, + 0x034, 0x0008404C, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EF, + 0x034, 0x000893AD, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EC, + 0x034, 0x000893AC, + 0x034, 0x000881EC, + 0x034, 0x0008716D, + 0x034, 0x0008616A, + 0x034, 0x0008506D, + 0x034, 0x0008404C, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EF, + 0x034, 0x000893AD, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3F4, + 0x034, 0x000893F0, + 0x034, 0x000883AE, + 0x034, 0x00087350, + 0x034, 0x0008634D, + 0x034, 0x0008534A, + 0x034, 0x00084347, + 0x034, 0x0008312D, + 0x034, 0x0008212A, + 0x034, 0x00081127, + 0x034, 0x0008002A, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008AFF7, + 0x034, 0x00089FF4, + 0x034, 0x00088FF1, + 0x034, 0x00087FEE, + 0x034, 0x00086FEB, + 0x034, 0x00085FE8, + 0x034, 0x00084DEB, + 0x034, 0x00083DE8, + 0x034, 0x00082DE5, + 0x034, 0x00081C8B, + 0x034, 0x00080C88, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EC, + 0x034, 0x000893AC, + 0x034, 0x000881EC, + 0x034, 0x0008716D, + 0x034, 0x0008616A, + 0x034, 0x0008506D, + 0x034, 0x0008404C, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EC, + 0x034, 0x000893AC, + 0x034, 0x000881EC, + 0x034, 0x0008716D, + 0x034, 0x0008616A, + 0x034, 0x0008506D, + 0x034, 0x0008404C, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0xA0000000, 0x00000000, + 0x034, 0x0008A794, + 0x034, 0x00089791, + 0x034, 0x0008878E, + 0x034, 0x0008778B, + 0x034, 0x0008658D, + 0x034, 0x0008558A, + 0x034, 0x0008448D, + 0x034, 0x0008348A, + 0x034, 0x0008244C, + 0x034, 0x00081449, + 0x034, 0x0008042B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0xA0000000, 0x00000000, + 0x0DF, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0xA0000000, 0x00000000, + 0x035, 0x00000484, + 0x035, 0x00008484, + 0x035, 0x00010484, + 0x035, 0x00020584, + 0x035, 0x00028584, + 0x035, 0x00030584, + 0x035, 0x00040584, + 0x035, 0x00048584, + 0x035, 0x00050584, + 0x035, 0x000805FB, + 0x035, 0x000885FB, + 0x035, 0x000905FB, + 0x035, 0x000A05FB, + 0x035, 0x000A85FB, + 0x035, 0x000B05FB, + 0x035, 0x000C05FB, + 0x035, 0x000C85FB, + 0x035, 0x000D05FB, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0xA0000000, 0x00000000, + 0x0DF, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000473, + 0x036, 0x00008473, + 0x036, 0x00010473, + 0x036, 0x00020473, + 0x036, 0x00028473, + 0x036, 0x00030473, + 0x036, 0x00040473, + 0x036, 0x00048473, + 0x036, 0x00050473, + 0x036, 0x00080473, + 0x036, 0x00088473, + 0x036, 0x00090473, + 0x036, 0x000A0473, + 0x036, 0x000A8473, + 0x036, 0x000B0473, + 0x036, 0x000C0473, + 0x036, 0x000C8473, + 0x036, 0x000D0473, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0xA0000000, 0x00000000, + 0x036, 0x00000474, + 0x036, 0x00008474, + 0x036, 0x00010474, + 0x036, 0x00020474, + 0x036, 0x00028474, + 0x036, 0x00030474, + 0x036, 0x00040474, + 0x036, 0x00048474, + 0x036, 0x00050474, + 0x036, 0x00080474, + 0x036, 0x00088474, + 0x036, 0x00090474, + 0x036, 0x000A0474, + 0x036, 0x000A8474, + 0x036, 0x000B0474, + 0x036, 0x000C0474, + 0x036, 0x000C8474, + 0x036, 0x000D0474, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x0EF, 0x00000004, + 0x037, 0x00000000, + 0x038, 0x0000514E, + 0x037, 0x00004000, + 0x038, 0x0000514E, + 0x037, 0x00008000, + 0x038, 0x0000514E, + 0x037, 0x00010000, + 0x038, 0x0000514E, + 0x037, 0x00014000, + 0x038, 0x0000514E, + 0x037, 0x00018000, + 0x038, 0x0000514E, + 0x037, 0x0001C000, + 0x038, 0x0000514E, + 0x037, 0x00020000, + 0x038, 0x0000514E, + 0x037, 0x00024000, + 0x038, 0x0000514E, + 0x037, 0x00028000, + 0x038, 0x0000514E, + 0x037, 0x0002C000, + 0x038, 0x0000714E, + 0x037, 0x00030000, + 0x038, 0x0000514E, + 0x037, 0x00034000, + 0x038, 0x0000514E, + 0x037, 0x00038000, + 0x038, 0x0000514E, + 0x037, 0x0003C000, + 0x038, 0x0000514E, + 0x037, 0x00040000, + 0x038, 0x0000514E, + 0x037, 0x00044000, + 0x038, 0x0000514E, + 0x037, 0x00048000, + 0x038, 0x0000514E, + 0x037, 0x00080000, + 0x038, 0x00005ECE, + 0x037, 0x00084000, + 0x038, 0x00005ECE, + 0x037, 0x00088000, + 0x038, 0x00005ECE, + 0x037, 0x00090000, + 0x038, 0x00005ECE, + 0x037, 0x00094000, + 0x038, 0x00005ECE, + 0x037, 0x00098000, + 0x038, 0x00005ECE, + 0x037, 0x0009C000, + 0x038, 0x00005ECE, + 0x037, 0x000A0000, + 0x038, 0x00005ECE, + 0x037, 0x000A4000, + 0x038, 0x00005ECE, + 0x037, 0x000A8000, + 0x038, 0x00005ECE, + 0x037, 0x000AC000, + 0x038, 0x00005ECE, + 0x037, 0x000B0000, + 0x038, 0x00005ECE, + 0x037, 0x000B4000, + 0x038, 0x00005ECE, + 0x037, 0x000B8000, + 0x038, 0x00005ECE, + 0x037, 0x000BC000, + 0x038, 0x00005ECE, + 0x037, 0x000C0000, + 0x038, 0x00005ECE, + 0x037, 0x000C4000, + 0x038, 0x00005ECE, + 0x037, 0x000C8000, + 0x038, 0x00005ECE, + 0x0EF, 0x00000000, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000008, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x03C, 0x0000007D, + 0x03C, 0x0000047D, + 0x03C, 0x0000087D, + 0x03C, 0x0000107D, + 0x03C, 0x0000147D, + 0x03C, 0x0000187D, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0xA0000000, 0x00000000, + 0x03C, 0x0000037E, + 0x03C, 0x00000575, + 0x03C, 0x00000971, + 0x03C, 0x0000127E, + 0x03C, 0x00001575, + 0x03C, 0x00001871, + 0x03C, 0x0000217E, + 0x03C, 0x00002575, + 0x03C, 0x00002871, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x061, 0x000C0D47, + 0x062, 0x0000133C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0xA0000000, 0x00000000, + 0x063, 0x0007D0E7, + 0xB0000000, 0x00000000, + 0x064, 0x00014FEC, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0xA0000000, 0x00000000, + 0x065, 0x000923FF, + 0xB0000000, 0x00000000, + 0x066, 0x00000040, + 0x057, 0x00050000, + 0x056, 0x00051DF0, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x055, 0x00082060, + 0xB0000000, 0x00000000, + +}; + +void +odm_read_and_config_mp_8814a_radiob(struct dm_struct *dm) +{ + u32 i = 0; + u8 c_cond; + boolean is_matched = true, is_skipped = false; + u32 array_len = + sizeof(array_mp_8814a_radiob) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_radiob; + + u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0; + u32 a1 = 0, a2 = 0, a3 = 0, a4 = 0; + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + while ((i + 1) < array_len) { + v1 = array[i]; + v2 = array[i + 1]; + + if (v1 & (BIT(31) | BIT(30))) {/*positive & negative condition*/ + if (v1 & BIT(31)) {/* positive condition*/ + c_cond = + (u8)((v1 & (BIT(29) | BIT(28))) >> 28); + if (c_cond == COND_ENDIF) {/*end*/ + is_matched = true; + is_skipped = false; + PHYDM_DBG(dm, ODM_COMP_INIT, "ENDIF\n"); + } else if (c_cond == COND_ELSE) { /*else*/ + is_matched = is_skipped ? false : true; + PHYDM_DBG(dm, ODM_COMP_INIT, "ELSE\n"); + } else {/*if , else if*/ + pre_v1 = v1; + pre_v2 = v2; + PHYDM_DBG(dm, ODM_COMP_INIT, + "IF or ELSE IF\n"); + } + } else if (v1 & BIT(30)) { /*negative condition*/ + if (!is_skipped) { + a1 = pre_v1; a2 = pre_v2; + a3 = v1; a4 = v2; + if (check_positive(dm, + a1, a2, a3, a4)) { + is_matched = true; + is_skipped = true; + } else { + is_matched = false; + is_skipped = false; + } + } else { + is_matched = false; + } + } + } else { + if (is_matched) + odm_config_rf_radio_b_8814a(dm, v1, v2); + } + i = i + 2; + } +} + +u32 +odm_get_version_mp_8814a_radiob(void) +{ + return 110; +} + +/****************************************************************************** + * radioc.TXT + ******************************************************************************/ + +const u32 array_mp_8814a_radioc[] = { + 0x018, 0x00013124, + 0x040, 0x00000C00, + 0x058, 0x00000F98, + 0x07F, 0x00068004, + 0x018, 0x00000006, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0xA0000000, 0x00000000, + 0x086, 0x000E4B58, + 0x087, 0x00049F80, + 0xB0000000, 0x00000000, + 0x0DF, 0x00000008, + 0x0EF, 0x00002000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017823, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017823, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017823, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017823, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017823, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017823, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017823, + 0xA0000000, 0x00000000, + 0x03B, 0x0003F258, + 0x03B, 0x00030A58, + 0x03B, 0x0002FA58, + 0x03B, 0x00022590, + 0x03B, 0x0001FA50, + 0x03B, 0x00010248, + 0x03B, 0x00008240, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000100, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0000ADF6, + 0x034, 0x00009DF3, + 0x034, 0x00008DF0, + 0x034, 0x00007DED, + 0x034, 0x00006DEA, + 0x034, 0x00005CED, + 0x034, 0x00004CEA, + 0x034, 0x000034EA, + 0x034, 0x000024E7, + 0x034, 0x0000146A, + 0x034, 0x0000006B, + 0xB0000000, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0008ADF6, + 0x034, 0x00089DF3, + 0x034, 0x00088DF0, + 0x034, 0x00087DED, + 0x034, 0x00086DEA, + 0x034, 0x00085CED, + 0x034, 0x00084CEA, + 0x034, 0x000834EA, + 0x034, 0x000824E7, + 0x034, 0x0008146A, + 0x034, 0x0008006B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x000020A2, + 0x0DF, 0x00000080, + 0x035, 0x00000192, + 0x035, 0x00008192, + 0x035, 0x00010192, + 0x036, 0x00000024, + 0x036, 0x00008024, + 0x036, 0x00010024, + 0x036, 0x00018024, + 0x0EF, 0x00000000, + 0x051, 0x00000C21, + 0x052, 0x000006D9, + 0x053, 0x000FC649, + 0x054, 0x0000017E, + 0x018, 0x0001012A, + 0x081, 0x0007FC00, + 0x089, 0x00050110, + 0x08A, 0x00043E50, + 0x08B, 0x0002E180, + 0x08C, 0x00093C3C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0xA0000000, 0x00000000, + 0x085, 0x000F8000, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0xA0000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0xB0000000, 0x00000000, + 0x0EF, 0x00001000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0006C000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x000D4000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00080000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0006C000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0008C000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00004000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0xA0000000, 0x00000000, + 0x03C, 0x000A0000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00030023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00028623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00021633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0001C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00010293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00009593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0000118B, + 0xA0000000, 0x00000000, + 0x03B, 0x0000078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0004C000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00080000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0004C000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x000D0000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00080000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00080000, + 0xA0000000, 0x00000000, + 0x03C, 0x00028000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00070023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00068623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00061633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0005C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00050293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00049593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x03B, 0x0004078B, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00060000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00080000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0xA0000000, 0x00000000, + 0x03C, 0x00020000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B0023, + 0x80000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0xA0000000, 0x00000000, + 0x03C, 0x00020000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A8623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A1633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0009C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00090293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00089593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0008128B, + 0xA0000000, 0x00000000, + 0x03B, 0x0008078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x00000800, + 0x03B, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001803, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001803, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0xA0000000, 0x00000000, + 0x03A, 0x00000803, + 0xB0000000, 0x00000000, + 0x03B, 0x00040000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000800, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0xA0000000, 0x00000000, + 0x03A, 0x00001000, + 0xB0000000, 0x00000000, + 0x03B, 0x00080000, + 0x80000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001802, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001802, + 0xA0000000, 0x00000000, + 0x03A, 0x00001002, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0xB0000000, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x018, 0x00013124, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x018, 0x00013124, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x018, 0x00013124, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x018, 0x00013124, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x018, 0x00013124, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x018, 0x00013124, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x018, 0x00013124, + 0xA0000000, 0x00000000, + 0x018, 0x00013124, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000100, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38C, + 0x034, 0x000491AD, + 0x034, 0x000481AA, + 0x034, 0x000471A7, + 0x034, 0x000460AA, + 0x034, 0x000450A7, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x0004200C, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AD, + 0x034, 0x0004838A, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004404C, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AD, + 0x034, 0x0004838A, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004404C, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AD, + 0x034, 0x0004838A, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004404C, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AD, + 0x034, 0x0004838A, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004404C, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3F5, + 0x034, 0x000493F3, + 0x034, 0x00048393, + 0x034, 0x00047390, + 0x034, 0x0004638D, + 0x034, 0x0004538A, + 0x034, 0x00044387, + 0x034, 0x000430ED, + 0x034, 0x000420EA, + 0x034, 0x000410E7, + 0x034, 0x0004002D, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004AFF7, + 0x034, 0x00049FF6, + 0x034, 0x00048FF3, + 0x034, 0x00047FF0, + 0x034, 0x00046FED, + 0x034, 0x00045FEA, + 0x034, 0x00044FE7, + 0x034, 0x00043CD0, + 0x034, 0x00042CCD, + 0x034, 0x00041CCA, + 0x034, 0x00040CC7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AD, + 0x034, 0x0004838A, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004404C, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AD, + 0x034, 0x0004838A, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004404C, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0xA0000000, 0x00000000, + 0x034, 0x0004AFF4, + 0x034, 0x00049FF1, + 0x034, 0x00048FEE, + 0x034, 0x00047FEB, + 0x034, 0x00046FE8, + 0x034, 0x00045DEA, + 0x034, 0x00044CED, + 0x034, 0x00043CEA, + 0x034, 0x00042C6C, + 0x034, 0x00041C69, + 0x034, 0x00040C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EC, + 0x034, 0x0002938C, + 0x034, 0x000281AD, + 0x034, 0x000271AA, + 0x034, 0x000261A7, + 0x034, 0x000250AA, + 0x034, 0x000240A7, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x0002100C, + 0x034, 0x00020009, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EC, + 0x034, 0x0002936D, + 0x034, 0x0002836A, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EC, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EC, + 0x034, 0x0002936D, + 0x034, 0x0002836A, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EC, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3F5, + 0x034, 0x000293F3, + 0x034, 0x000282F2, + 0x034, 0x000272D0, + 0x034, 0x000262CD, + 0x034, 0x000252CA, + 0x034, 0x000242C7, + 0x034, 0x000230CD, + 0x034, 0x000220CA, + 0x034, 0x000210C7, + 0x034, 0x00020086, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002AFF7, + 0x034, 0x00029FF6, + 0x034, 0x00028FF3, + 0x034, 0x00027FF0, + 0x034, 0x00026FED, + 0x034, 0x00025FEA, + 0x034, 0x00024FE7, + 0x034, 0x00023DEA, + 0x034, 0x00022DE7, + 0x034, 0x00021DE4, + 0x034, 0x00020E44, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EC, + 0x034, 0x0002936D, + 0x034, 0x0002836A, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EC, + 0x034, 0x0002936D, + 0x034, 0x0002836A, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0xA0000000, 0x00000000, + 0x034, 0x0002AFF4, + 0x034, 0x00029FF1, + 0x034, 0x00028FEE, + 0x034, 0x00027FEB, + 0x034, 0x00026FE8, + 0x034, 0x00025DEA, + 0x034, 0x00024CED, + 0x034, 0x00023CEA, + 0x034, 0x00022C6C, + 0x034, 0x00021C69, + 0x034, 0x00020C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A38C, + 0x034, 0x000091AD, + 0x034, 0x000081AA, + 0x034, 0x000071A7, + 0x034, 0x000060AA, + 0x034, 0x000050A7, + 0x034, 0x0000402C, + 0x034, 0x00003029, + 0x034, 0x0000200C, + 0x034, 0x00001009, + 0x034, 0x00000006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AB, + 0x034, 0x00008389, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AB, + 0x034, 0x00008389, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AB, + 0x034, 0x00008389, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AB, + 0x034, 0x00008389, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3F5, + 0x034, 0x000093F1, + 0x034, 0x000083B0, + 0x034, 0x00007370, + 0x034, 0x0000636D, + 0x034, 0x0000536A, + 0x034, 0x00004367, + 0x034, 0x0000308E, + 0x034, 0x0000208B, + 0x034, 0x00001088, + 0x034, 0x00000085, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000AFF7, + 0x034, 0x00009FF5, + 0x034, 0x00008FF2, + 0x034, 0x00007FEF, + 0x034, 0x00006FEC, + 0x034, 0x00005FE9, + 0x034, 0x00004EAA, + 0x034, 0x00003EA7, + 0x034, 0x00002C70, + 0x034, 0x00001C6D, + 0x034, 0x00000C6A, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AB, + 0x034, 0x00008389, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AB, + 0x034, 0x00008389, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0xA0000000, 0x00000000, + 0x034, 0x0000AFF4, + 0x034, 0x00009FF1, + 0x034, 0x00008FEE, + 0x034, 0x00007FEB, + 0x034, 0x00006FE8, + 0x034, 0x00005DEA, + 0x034, 0x00004CED, + 0x034, 0x00003CEA, + 0x034, 0x00002C6C, + 0x034, 0x00001C69, + 0x034, 0x00000C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38C, + 0x034, 0x000C91AD, + 0x034, 0x000C81AA, + 0x034, 0x000C71A7, + 0x034, 0x000C60AA, + 0x034, 0x000C50A7, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C200C, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AD, + 0x034, 0x000C838A, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C404C, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AD, + 0x034, 0x000C838A, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C404C, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AD, + 0x034, 0x000C838A, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C404C, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AD, + 0x034, 0x000C838A, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C404C, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3F5, + 0x034, 0x000C93F3, + 0x034, 0x000C8393, + 0x034, 0x000C7390, + 0x034, 0x000C638D, + 0x034, 0x000C538A, + 0x034, 0x000C4387, + 0x034, 0x000C30ED, + 0x034, 0x000C20EA, + 0x034, 0x000C10E7, + 0x034, 0x000C002D, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CAFF7, + 0x034, 0x000C9FF6, + 0x034, 0x000C8FF3, + 0x034, 0x000C7FF0, + 0x034, 0x000C6FED, + 0x034, 0x000C5FEA, + 0x034, 0x000C4FE7, + 0x034, 0x000C3CD0, + 0x034, 0x000C2CCD, + 0x034, 0x000C1CCA, + 0x034, 0x000C0CC7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AD, + 0x034, 0x000C838A, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C404C, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AD, + 0x034, 0x000C838A, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C404C, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0xA0000000, 0x00000000, + 0x034, 0x000CA794, + 0x034, 0x000C9791, + 0x034, 0x000C878E, + 0x034, 0x000C778B, + 0x034, 0x000C658D, + 0x034, 0x000C558A, + 0x034, 0x000C448D, + 0x034, 0x000C348A, + 0x034, 0x000C244C, + 0x034, 0x000C1449, + 0x034, 0x000C042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EC, + 0x034, 0x000A938C, + 0x034, 0x000A81AD, + 0x034, 0x000A71AA, + 0x034, 0x000A61A7, + 0x034, 0x000A50AA, + 0x034, 0x000A40A7, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A100C, + 0x034, 0x000A0009, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EC, + 0x034, 0x000A936D, + 0x034, 0x000A836A, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EC, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EC, + 0x034, 0x000A936D, + 0x034, 0x000A836A, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EC, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3F5, + 0x034, 0x000A93F3, + 0x034, 0x000A82F2, + 0x034, 0x000A72D0, + 0x034, 0x000A62CD, + 0x034, 0x000A52CA, + 0x034, 0x000A42C7, + 0x034, 0x000A30CD, + 0x034, 0x000A20CA, + 0x034, 0x000A10C7, + 0x034, 0x000A0086, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AAFF7, + 0x034, 0x000A9FF6, + 0x034, 0x000A8FF3, + 0x034, 0x000A7FF0, + 0x034, 0x000A6FED, + 0x034, 0x000A5FEA, + 0x034, 0x000A4FE7, + 0x034, 0x000A3DEA, + 0x034, 0x000A2DE7, + 0x034, 0x000A1DE4, + 0x034, 0x000A0E44, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EC, + 0x034, 0x000A936D, + 0x034, 0x000A836A, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EC, + 0x034, 0x000A936D, + 0x034, 0x000A836A, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0xA0000000, 0x00000000, + 0x034, 0x000AA794, + 0x034, 0x000A9791, + 0x034, 0x000A878E, + 0x034, 0x000A778B, + 0x034, 0x000A658D, + 0x034, 0x000A558A, + 0x034, 0x000A448D, + 0x034, 0x000A348A, + 0x034, 0x000A244C, + 0x034, 0x000A1449, + 0x034, 0x000A042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A38C, + 0x034, 0x000891AD, + 0x034, 0x000881AA, + 0x034, 0x000871A7, + 0x034, 0x000860AA, + 0x034, 0x000850A7, + 0x034, 0x0008402C, + 0x034, 0x00083029, + 0x034, 0x0008200C, + 0x034, 0x00081009, + 0x034, 0x00000006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AB, + 0x034, 0x00088389, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AB, + 0x034, 0x00088389, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AB, + 0x034, 0x00088389, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AB, + 0x034, 0x00088389, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3F5, + 0x034, 0x000893F1, + 0x034, 0x000883B0, + 0x034, 0x00087370, + 0x034, 0x0008636D, + 0x034, 0x0008536A, + 0x034, 0x00084367, + 0x034, 0x0008308E, + 0x034, 0x0008208B, + 0x034, 0x00081088, + 0x034, 0x00080085, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008AFF7, + 0x034, 0x00089FF5, + 0x034, 0x00088FF2, + 0x034, 0x00087FEF, + 0x034, 0x00086FEC, + 0x034, 0x00085FE9, + 0x034, 0x00084EAA, + 0x034, 0x00083EA7, + 0x034, 0x00082C70, + 0x034, 0x00081C6D, + 0x034, 0x00080C6A, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AB, + 0x034, 0x00088389, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AB, + 0x034, 0x00088389, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0xA0000000, 0x00000000, + 0x034, 0x0008A794, + 0x034, 0x00089791, + 0x034, 0x0008878E, + 0x034, 0x0008778B, + 0x034, 0x0008658D, + 0x034, 0x0008558A, + 0x034, 0x0008448D, + 0x034, 0x0008348A, + 0x034, 0x0008244C, + 0x034, 0x00081449, + 0x034, 0x0008042B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0xA0000000, 0x00000000, + 0x0DF, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0xA0000000, 0x00000000, + 0x035, 0x00000484, + 0x035, 0x00008484, + 0x035, 0x00010484, + 0x035, 0x00020584, + 0x035, 0x00028584, + 0x035, 0x00030584, + 0x035, 0x00040584, + 0x035, 0x00048584, + 0x035, 0x00050584, + 0x035, 0x000805FB, + 0x035, 0x000885FB, + 0x035, 0x000905FB, + 0x035, 0x000A05FB, + 0x035, 0x000A85FB, + 0x035, 0x000B05FB, + 0x035, 0x000C05FB, + 0x035, 0x000C85FB, + 0x035, 0x000D05FB, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0xA0000000, 0x00000000, + 0x0DF, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000473, + 0x036, 0x00008473, + 0x036, 0x00010473, + 0x036, 0x00020473, + 0x036, 0x00028473, + 0x036, 0x00030473, + 0x036, 0x00040473, + 0x036, 0x00048473, + 0x036, 0x00050473, + 0x036, 0x00080473, + 0x036, 0x00088473, + 0x036, 0x00090473, + 0x036, 0x000A0473, + 0x036, 0x000A8473, + 0x036, 0x000B0473, + 0x036, 0x000C0473, + 0x036, 0x000C8473, + 0x036, 0x000D0473, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0xA0000000, 0x00000000, + 0x036, 0x00000474, + 0x036, 0x00008474, + 0x036, 0x00010474, + 0x036, 0x00020474, + 0x036, 0x00028474, + 0x036, 0x00030474, + 0x036, 0x00040474, + 0x036, 0x00048474, + 0x036, 0x00050474, + 0x036, 0x00080474, + 0x036, 0x00088474, + 0x036, 0x00090474, + 0x036, 0x000A0474, + 0x036, 0x000A8474, + 0x036, 0x000B0474, + 0x036, 0x000C0474, + 0x036, 0x000C8474, + 0x036, 0x000D0474, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x0EF, 0x00000004, + 0x037, 0x00000000, + 0x038, 0x0000514E, + 0x037, 0x00004000, + 0x038, 0x0000514E, + 0x037, 0x00008000, + 0x038, 0x0000514E, + 0x037, 0x00010000, + 0x038, 0x0000514E, + 0x037, 0x00014000, + 0x038, 0x0000514E, + 0x037, 0x00018000, + 0x038, 0x0000514E, + 0x037, 0x0001C000, + 0x038, 0x0000514E, + 0x037, 0x00020000, + 0x038, 0x0000514E, + 0x037, 0x00024000, + 0x038, 0x0000514E, + 0x037, 0x00028000, + 0x038, 0x0000514E, + 0x037, 0x0002C000, + 0x038, 0x0000714E, + 0x037, 0x00030000, + 0x038, 0x0000514E, + 0x037, 0x00034000, + 0x038, 0x0000514E, + 0x037, 0x00038000, + 0x038, 0x0000514E, + 0x037, 0x0003C000, + 0x038, 0x0000514E, + 0x037, 0x00040000, + 0x038, 0x0000514E, + 0x037, 0x00044000, + 0x038, 0x0000514E, + 0x037, 0x00048000, + 0x038, 0x0000514E, + 0x037, 0x00080000, + 0x038, 0x00005ECE, + 0x037, 0x00084000, + 0x038, 0x00005ECE, + 0x037, 0x00088000, + 0x038, 0x00005ECE, + 0x037, 0x00090000, + 0x038, 0x00005ECE, + 0x037, 0x00094000, + 0x038, 0x00005ECE, + 0x037, 0x00098000, + 0x038, 0x00005ECE, + 0x037, 0x0009C000, + 0x038, 0x00005ECE, + 0x037, 0x000A0000, + 0x038, 0x00005ECE, + 0x037, 0x000A4000, + 0x038, 0x00005ECE, + 0x037, 0x000A8000, + 0x038, 0x00005ECE, + 0x037, 0x000AC000, + 0x038, 0x00005ECE, + 0x037, 0x000B0000, + 0x038, 0x00005ECE, + 0x037, 0x000B4000, + 0x038, 0x00005ECE, + 0x037, 0x000B8000, + 0x038, 0x00005ECE, + 0x037, 0x000BC000, + 0x038, 0x00005ECE, + 0x037, 0x000C0000, + 0x038, 0x00005ECE, + 0x037, 0x000C4000, + 0x038, 0x00005ECE, + 0x037, 0x000C8000, + 0x038, 0x00005ECE, + 0x0EF, 0x00000000, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000008, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x03C, 0x0000007D, + 0x03C, 0x0000047D, + 0x03C, 0x0000087D, + 0x03C, 0x0000107D, + 0x03C, 0x0000147D, + 0x03C, 0x0000187D, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000541, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001541, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002541, + 0x03C, 0x00002821, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0xA0000000, 0x00000000, + 0x03C, 0x0000037E, + 0x03C, 0x00000575, + 0x03C, 0x00000971, + 0x03C, 0x0000127E, + 0x03C, 0x00001575, + 0x03C, 0x00001871, + 0x03C, 0x0000217E, + 0x03C, 0x00002575, + 0x03C, 0x00002871, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x061, 0x000C0D47, + 0x062, 0x0000133C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0xA0000000, 0x00000000, + 0x063, 0x0007D0E7, + 0xB0000000, 0x00000000, + 0x064, 0x00014FEC, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0xA0000000, 0x00000000, + 0x065, 0x000923FF, + 0xB0000000, 0x00000000, + 0x066, 0x00000040, + 0x057, 0x00050000, + 0x056, 0x00051DF0, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x055, 0x00082060, + 0xB0000000, 0x00000000, + +}; + +void +odm_read_and_config_mp_8814a_radioc(struct dm_struct *dm) +{ + u32 i = 0; + u8 c_cond; + boolean is_matched = true, is_skipped = false; + u32 array_len = + sizeof(array_mp_8814a_radioc) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_radioc; + + u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0; + u32 a1 = 0, a2 = 0, a3 = 0, a4 = 0; + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + while ((i + 1) < array_len) { + v1 = array[i]; + v2 = array[i + 1]; + + if (v1 & (BIT(31) | BIT(30))) {/*positive & negative condition*/ + if (v1 & BIT(31)) {/* positive condition*/ + c_cond = + (u8)((v1 & (BIT(29) | BIT(28))) >> 28); + if (c_cond == COND_ENDIF) {/*end*/ + is_matched = true; + is_skipped = false; + PHYDM_DBG(dm, ODM_COMP_INIT, "ENDIF\n"); + } else if (c_cond == COND_ELSE) { /*else*/ + is_matched = is_skipped ? false : true; + PHYDM_DBG(dm, ODM_COMP_INIT, "ELSE\n"); + } else {/*if , else if*/ + pre_v1 = v1; + pre_v2 = v2; + PHYDM_DBG(dm, ODM_COMP_INIT, + "IF or ELSE IF\n"); + } + } else if (v1 & BIT(30)) { /*negative condition*/ + if (!is_skipped) { + a1 = pre_v1; a2 = pre_v2; + a3 = v1; a4 = v2; + if (check_positive(dm, + a1, a2, a3, a4)) { + is_matched = true; + is_skipped = true; + } else { + is_matched = false; + is_skipped = false; + } + } else { + is_matched = false; + } + } + } else { + if (is_matched) + odm_config_rf_radio_c_8814a(dm, v1, v2); + } + i = i + 2; + } +} + +u32 +odm_get_version_mp_8814a_radioc(void) +{ + return 110; +} + +/****************************************************************************** + * radiod.TXT + ******************************************************************************/ + +const u32 array_mp_8814a_radiod[] = { + 0x018, 0x00013124, + 0x040, 0x00000C00, + 0x058, 0x00000F98, + 0x07F, 0x00068004, + 0x018, 0x00000006, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0xA0000000, 0x00000000, + 0x086, 0x000E4B58, + 0x087, 0x00049F80, + 0xB0000000, 0x00000000, + 0x0DF, 0x00000008, + 0x0EF, 0x00002000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017803, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F09B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017803, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017803, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F09B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017803, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017803, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017803, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017803, + 0xA0000000, 0x00000000, + 0x03B, 0x0003F258, + 0x03B, 0x00030A58, + 0x03B, 0x0002FA58, + 0x03B, 0x00022590, + 0x03B, 0x0001FA50, + 0x03B, 0x00010248, + 0x03B, 0x00008240, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000100, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0000ADF6, + 0x034, 0x00009DF3, + 0x034, 0x00008DF0, + 0x034, 0x00007DED, + 0x034, 0x00006DEA, + 0x034, 0x00005CED, + 0x034, 0x00004CEA, + 0x034, 0x000034EA, + 0x034, 0x000024E7, + 0x034, 0x0000146A, + 0x034, 0x0000006B, + 0xB0000000, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0008ADF6, + 0x034, 0x00089DF3, + 0x034, 0x00088DF0, + 0x034, 0x00087DED, + 0x034, 0x00086DEA, + 0x034, 0x00085CED, + 0x034, 0x00084CEA, + 0x034, 0x000834EA, + 0x034, 0x000824E7, + 0x034, 0x0008146A, + 0x034, 0x0008006B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x000020A2, + 0x0DF, 0x00000080, + 0x035, 0x00000192, + 0x035, 0x00008192, + 0x035, 0x00010192, + 0x036, 0x00000024, + 0x036, 0x00008024, + 0x036, 0x00010024, + 0x036, 0x00018024, + 0x0EF, 0x00000000, + 0x051, 0x00000C21, + 0x052, 0x000006D9, + 0x053, 0x000FC649, + 0x054, 0x0000017E, + 0x018, 0x0001012A, + 0x081, 0x0007FC00, + 0x089, 0x00050110, + 0x08A, 0x00043E50, + 0x08B, 0x0002E180, + 0x08C, 0x00093C3C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0xA0000000, 0x00000000, + 0x085, 0x000F8000, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0xA0000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0xB0000000, 0x00000000, + 0x0EF, 0x00001000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00048000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00040000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0xA0000000, 0x00000000, + 0x03C, 0x00048000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00030023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00028623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00021633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0001C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00010293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00009593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x00000F8B, + 0xA0000000, 0x00000000, + 0x03B, 0x0000078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0xA0000000, 0x00000000, + 0x03C, 0x00024000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00070023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00068623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00061633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0005C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00050293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00049593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x00040F8B, + 0xA0000000, 0x00000000, + 0x03B, 0x0004078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00004000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00060000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00004000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00060000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0xA0000000, 0x00000000, + 0x03C, 0x00004000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B0023, + 0x80000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0xA0000000, 0x00000000, + 0x03C, 0x00020000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A8623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A1633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0009C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00090293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00089593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0008138B, + 0xA0000000, 0x00000000, + 0x03B, 0x0008078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x00000800, + 0x03B, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001803, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0xA0000000, 0x00000000, + 0x03A, 0x00000803, + 0xB0000000, 0x00000000, + 0x03B, 0x00040000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001002, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000001, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000802, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001803, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0xA0000000, 0x00000000, + 0x03A, 0x00001000, + 0xB0000000, 0x00000000, + 0x03B, 0x00080000, + 0x80000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001802, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000802, + 0xA0000000, 0x00000000, + 0x03A, 0x00001002, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x00013124, + 0x0EF, 0x00000100, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EB, + 0x034, 0x0004938B, + 0x034, 0x000481AC, + 0x034, 0x000471A9, + 0x034, 0x000460AC, + 0x034, 0x000450A9, + 0x034, 0x0004402E, + 0x034, 0x0004302B, + 0x034, 0x00042028, + 0x034, 0x0004100B, + 0x034, 0x00040008, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3AD, + 0x034, 0x0004938A, + 0x034, 0x0004818C, + 0x034, 0x00047189, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3AD, + 0x034, 0x0004938A, + 0x034, 0x0004818C, + 0x034, 0x00047189, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3AD, + 0x034, 0x0004938A, + 0x034, 0x0004818C, + 0x034, 0x00047189, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3AD, + 0x034, 0x0004938A, + 0x034, 0x0004818C, + 0x034, 0x00047189, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3F4, + 0x034, 0x000493D2, + 0x034, 0x000482D1, + 0x034, 0x000471F1, + 0x034, 0x000461EE, + 0x034, 0x000451EB, + 0x034, 0x000441E8, + 0x034, 0x0004314B, + 0x034, 0x00042148, + 0x034, 0x0004104B, + 0x034, 0x00040048, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004AFF7, + 0x034, 0x00049FF6, + 0x034, 0x00048FF3, + 0x034, 0x00047FF0, + 0x034, 0x00046FED, + 0x034, 0x00045FEA, + 0x034, 0x00044FE7, + 0x034, 0x00043CB1, + 0x034, 0x00042CAE, + 0x034, 0x00041CAB, + 0x034, 0x00040CA8, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3AD, + 0x034, 0x0004938A, + 0x034, 0x0004818C, + 0x034, 0x00047189, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3AD, + 0x034, 0x0004938A, + 0x034, 0x0004818C, + 0x034, 0x00047189, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0xA0000000, 0x00000000, + 0x034, 0x0004AFF4, + 0x034, 0x00049FF1, + 0x034, 0x00048FEE, + 0x034, 0x00047FEB, + 0x034, 0x00046FE8, + 0x034, 0x00045DEA, + 0x034, 0x00044CED, + 0x034, 0x00043CEA, + 0x034, 0x00042C6C, + 0x034, 0x00041C69, + 0x034, 0x00040C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EE, + 0x034, 0x000293EB, + 0x034, 0x0002838B, + 0x034, 0x000271AC, + 0x034, 0x000261A9, + 0x034, 0x000250AC, + 0x034, 0x000240A9, + 0x034, 0x000230A6, + 0x034, 0x0002202C, + 0x034, 0x00021029, + 0x034, 0x00020026, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3AD, + 0x034, 0x0002938A, + 0x034, 0x0002818C, + 0x034, 0x00027189, + 0x034, 0x0002606D, + 0x034, 0x0002504C, + 0x034, 0x0002402C, + 0x034, 0x00023029, + 0x034, 0x00022026, + 0x034, 0x00021023, + 0x034, 0x00020006, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3AD, + 0x034, 0x0002938A, + 0x034, 0x0002818C, + 0x034, 0x00027189, + 0x034, 0x0002606D, + 0x034, 0x0002504C, + 0x034, 0x0002402C, + 0x034, 0x00023029, + 0x034, 0x00022026, + 0x034, 0x00021023, + 0x034, 0x00020006, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3AD, + 0x034, 0x0002938A, + 0x034, 0x0002818C, + 0x034, 0x00027189, + 0x034, 0x0002606D, + 0x034, 0x0002504C, + 0x034, 0x0002402C, + 0x034, 0x00023029, + 0x034, 0x00022026, + 0x034, 0x00021023, + 0x034, 0x00020006, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3AD, + 0x034, 0x0002938A, + 0x034, 0x0002818C, + 0x034, 0x00027189, + 0x034, 0x0002606D, + 0x034, 0x0002504C, + 0x034, 0x0002402C, + 0x034, 0x00023029, + 0x034, 0x00022026, + 0x034, 0x00021023, + 0x034, 0x00020006, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3F5, + 0x034, 0x000293D2, + 0x034, 0x000283CE, + 0x034, 0x00027290, + 0x034, 0x0002628D, + 0x034, 0x0002528A, + 0x034, 0x00024287, + 0x034, 0x0002308D, + 0x034, 0x0002208A, + 0x034, 0x00021087, + 0x034, 0x00020048, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002AFF7, + 0x034, 0x00029FF6, + 0x034, 0x00028FF3, + 0x034, 0x00027FF0, + 0x034, 0x00026FED, + 0x034, 0x00025FEA, + 0x034, 0x00024FE7, + 0x034, 0x00023DEA, + 0x034, 0x00022DE7, + 0x034, 0x00021DE4, + 0x034, 0x00020D48, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3AD, + 0x034, 0x0002938A, + 0x034, 0x0002818C, + 0x034, 0x00027189, + 0x034, 0x0002606D, + 0x034, 0x0002504C, + 0x034, 0x0002402C, + 0x034, 0x00023029, + 0x034, 0x00022026, + 0x034, 0x00021023, + 0x034, 0x00020006, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3AD, + 0x034, 0x0002938A, + 0x034, 0x0002818C, + 0x034, 0x00027189, + 0x034, 0x0002606D, + 0x034, 0x0002504C, + 0x034, 0x0002402C, + 0x034, 0x00023029, + 0x034, 0x00022026, + 0x034, 0x00021023, + 0x034, 0x00020006, + 0xA0000000, 0x00000000, + 0x034, 0x0002AFF4, + 0x034, 0x00029FF1, + 0x034, 0x00028FEE, + 0x034, 0x00027FEB, + 0x034, 0x00026FE8, + 0x034, 0x00025DEA, + 0x034, 0x00024CED, + 0x034, 0x00023CEA, + 0x034, 0x00022C6C, + 0x034, 0x00021C69, + 0x034, 0x00020C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EF, + 0x034, 0x000093EC, + 0x034, 0x0000838C, + 0x034, 0x000071AD, + 0x034, 0x000061AA, + 0x034, 0x000050AD, + 0x034, 0x000040AA, + 0x034, 0x0000306A, + 0x034, 0x0000202D, + 0x034, 0x0000102A, + 0x034, 0x00000027, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3F1, + 0x034, 0x000092B1, + 0x034, 0x000081CF, + 0x034, 0x00007170, + 0x034, 0x0000616D, + 0x034, 0x0000516A, + 0x034, 0x00004167, + 0x034, 0x0000302F, + 0x034, 0x0000202C, + 0x034, 0x00001029, + 0x034, 0x00000026, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000AFF7, + 0x034, 0x00009FF6, + 0x034, 0x00008FF3, + 0x034, 0x00007FF0, + 0x034, 0x00006FED, + 0x034, 0x00005FEA, + 0x034, 0x00004FE7, + 0x034, 0x00003EC7, + 0x034, 0x00002EC4, + 0x034, 0x00001D4B, + 0x034, 0x00000D48, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0xA0000000, 0x00000000, + 0x034, 0x0000AFF4, + 0x034, 0x00009FF1, + 0x034, 0x00008FEE, + 0x034, 0x00007FEB, + 0x034, 0x00006FE8, + 0x034, 0x00005DEA, + 0x034, 0x00004CED, + 0x034, 0x00003CEA, + 0x034, 0x00002C6C, + 0x034, 0x00001C69, + 0x034, 0x00000C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EB, + 0x034, 0x000C938B, + 0x034, 0x000C81AC, + 0x034, 0x000C71A9, + 0x034, 0x000C60AC, + 0x034, 0x000C50A9, + 0x034, 0x000C402E, + 0x034, 0x000C302B, + 0x034, 0x000C2028, + 0x034, 0x000C100B, + 0x034, 0x000C0008, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3AD, + 0x034, 0x000C938A, + 0x034, 0x000C818C, + 0x034, 0x000C7189, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3AD, + 0x034, 0x000C938A, + 0x034, 0x000C818C, + 0x034, 0x000C7189, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3AD, + 0x034, 0x000C938A, + 0x034, 0x000C818C, + 0x034, 0x000C7189, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3AD, + 0x034, 0x000C938A, + 0x034, 0x000C818C, + 0x034, 0x000C7189, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3F4, + 0x034, 0x000C93D2, + 0x034, 0x000C82D1, + 0x034, 0x000C71F1, + 0x034, 0x000C61EE, + 0x034, 0x000C51EB, + 0x034, 0x000C41E8, + 0x034, 0x000C314B, + 0x034, 0x000C2148, + 0x034, 0x000C104B, + 0x034, 0x000C0048, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CAFF7, + 0x034, 0x000C9FF6, + 0x034, 0x000C8FF3, + 0x034, 0x000C7FF0, + 0x034, 0x000C6FED, + 0x034, 0x000C5FEA, + 0x034, 0x000C4FE7, + 0x034, 0x000C3CB1, + 0x034, 0x000C2CAE, + 0x034, 0x000C1CAB, + 0x034, 0x000C0CA8, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3AD, + 0x034, 0x000C938A, + 0x034, 0x000C818C, + 0x034, 0x000C7189, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3AD, + 0x034, 0x000C938A, + 0x034, 0x000C818C, + 0x034, 0x000C7189, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0xA0000000, 0x00000000, + 0x034, 0x000CA794, + 0x034, 0x000C9791, + 0x034, 0x000C878E, + 0x034, 0x000C778B, + 0x034, 0x000C658D, + 0x034, 0x000C558A, + 0x034, 0x000C448D, + 0x034, 0x000C348A, + 0x034, 0x000C244C, + 0x034, 0x000C1449, + 0x034, 0x000C042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EE, + 0x034, 0x000A93EB, + 0x034, 0x000A838B, + 0x034, 0x000A71AC, + 0x034, 0x000A61A9, + 0x034, 0x000A50AC, + 0x034, 0x000A40A9, + 0x034, 0x000A30A6, + 0x034, 0x000A202C, + 0x034, 0x000A1029, + 0x034, 0x000A0026, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3AD, + 0x034, 0x000A938A, + 0x034, 0x000A818C, + 0x034, 0x000A7189, + 0x034, 0x000A606D, + 0x034, 0x000A504C, + 0x034, 0x000A402C, + 0x034, 0x000A3029, + 0x034, 0x000A2026, + 0x034, 0x000A1023, + 0x034, 0x000A0006, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3AD, + 0x034, 0x000A938A, + 0x034, 0x000A818C, + 0x034, 0x000A7189, + 0x034, 0x000A606D, + 0x034, 0x000A504C, + 0x034, 0x000A402C, + 0x034, 0x000A3029, + 0x034, 0x000A2026, + 0x034, 0x000A1023, + 0x034, 0x000A0006, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3AD, + 0x034, 0x000A938A, + 0x034, 0x000A818C, + 0x034, 0x000A7189, + 0x034, 0x000A606D, + 0x034, 0x000A504C, + 0x034, 0x000A402C, + 0x034, 0x000A3029, + 0x034, 0x000A2026, + 0x034, 0x000A1023, + 0x034, 0x000A0006, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3AD, + 0x034, 0x000A938A, + 0x034, 0x000A818C, + 0x034, 0x000A7189, + 0x034, 0x000A606D, + 0x034, 0x000A504C, + 0x034, 0x000A402C, + 0x034, 0x000A3029, + 0x034, 0x000A2026, + 0x034, 0x000A1023, + 0x034, 0x000A0006, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3F5, + 0x034, 0x000A93D2, + 0x034, 0x000A83CE, + 0x034, 0x000A7290, + 0x034, 0x000A628D, + 0x034, 0x000A528A, + 0x034, 0x000A4287, + 0x034, 0x000A308D, + 0x034, 0x000A208A, + 0x034, 0x000A1087, + 0x034, 0x000A0048, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AAFF7, + 0x034, 0x000A9FF6, + 0x034, 0x000A8FF3, + 0x034, 0x000A7FF0, + 0x034, 0x000A6FED, + 0x034, 0x000A5FEA, + 0x034, 0x000A4FE7, + 0x034, 0x000A3DEA, + 0x034, 0x000A2DE7, + 0x034, 0x000A1DE4, + 0x034, 0x000A0D48, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3AD, + 0x034, 0x000A938A, + 0x034, 0x000A818C, + 0x034, 0x000A7189, + 0x034, 0x000A606D, + 0x034, 0x000A504C, + 0x034, 0x000A402C, + 0x034, 0x000A3029, + 0x034, 0x000A2026, + 0x034, 0x000A1023, + 0x034, 0x000A0006, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3AD, + 0x034, 0x000A938A, + 0x034, 0x000A818C, + 0x034, 0x000A7189, + 0x034, 0x000A606D, + 0x034, 0x000A504C, + 0x034, 0x000A402C, + 0x034, 0x000A3029, + 0x034, 0x000A2026, + 0x034, 0x000A1023, + 0x034, 0x000A0006, + 0xA0000000, 0x00000000, + 0x034, 0x000AA794, + 0x034, 0x000A9791, + 0x034, 0x000A878E, + 0x034, 0x000A778B, + 0x034, 0x000A658D, + 0x034, 0x000A558A, + 0x034, 0x000A448D, + 0x034, 0x000A348A, + 0x034, 0x000A244C, + 0x034, 0x000A1449, + 0x034, 0x000A042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EF, + 0x034, 0x000893EC, + 0x034, 0x0008838C, + 0x034, 0x000871AD, + 0x034, 0x000861AA, + 0x034, 0x000850AD, + 0x034, 0x000840AA, + 0x034, 0x0008306A, + 0x034, 0x0008202D, + 0x034, 0x0008102A, + 0x034, 0x00080027, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3F1, + 0x034, 0x000892B1, + 0x034, 0x000881CF, + 0x034, 0x00087170, + 0x034, 0x0008616D, + 0x034, 0x0008516A, + 0x034, 0x00084167, + 0x034, 0x0008302F, + 0x034, 0x0008202C, + 0x034, 0x00081029, + 0x034, 0x00080026, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008AFF7, + 0x034, 0x00089FF6, + 0x034, 0x00088FF3, + 0x034, 0x00087FF0, + 0x034, 0x00086FED, + 0x034, 0x00085FEA, + 0x034, 0x00084FE7, + 0x034, 0x00083EC7, + 0x034, 0x00082EC4, + 0x034, 0x00081D4B, + 0x034, 0x00080D48, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0xA0000000, 0x00000000, + 0x034, 0x0008A794, + 0x034, 0x00089791, + 0x034, 0x0008878E, + 0x034, 0x0008778B, + 0x034, 0x0008658D, + 0x034, 0x0008558A, + 0x034, 0x0008448D, + 0x034, 0x0008348A, + 0x034, 0x0008244C, + 0x034, 0x00081449, + 0x034, 0x0008042B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0xA0000000, 0x00000000, + 0x0DF, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0xA0000000, 0x00000000, + 0x035, 0x00000484, + 0x035, 0x00008484, + 0x035, 0x00010484, + 0x035, 0x00020584, + 0x035, 0x00028584, + 0x035, 0x00030584, + 0x035, 0x00040584, + 0x035, 0x00048584, + 0x035, 0x00050584, + 0x035, 0x000805FB, + 0x035, 0x000885FB, + 0x035, 0x000905FB, + 0x035, 0x000A05FB, + 0x035, 0x000A85FB, + 0x035, 0x000B05FB, + 0x035, 0x000C05FB, + 0x035, 0x000C85FB, + 0x035, 0x000D05FB, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0xA0000000, 0x00000000, + 0x0DF, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000473, + 0x036, 0x00008473, + 0x036, 0x00010473, + 0x036, 0x00020473, + 0x036, 0x00028473, + 0x036, 0x00030473, + 0x036, 0x00040473, + 0x036, 0x00048473, + 0x036, 0x00050473, + 0x036, 0x00080473, + 0x036, 0x00088473, + 0x036, 0x00090473, + 0x036, 0x000A0473, + 0x036, 0x000A8473, + 0x036, 0x000B0473, + 0x036, 0x000C0473, + 0x036, 0x000C8473, + 0x036, 0x000D0473, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0xA0000000, 0x00000000, + 0x036, 0x00000474, + 0x036, 0x00008474, + 0x036, 0x00010474, + 0x036, 0x00020474, + 0x036, 0x00028474, + 0x036, 0x00030474, + 0x036, 0x00040474, + 0x036, 0x00048474, + 0x036, 0x00050474, + 0x036, 0x00080474, + 0x036, 0x00088474, + 0x036, 0x00090474, + 0x036, 0x000A0474, + 0x036, 0x000A8474, + 0x036, 0x000B0474, + 0x036, 0x000C0474, + 0x036, 0x000C8474, + 0x036, 0x000D0474, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x0EF, 0x00000004, + 0x037, 0x00000000, + 0x038, 0x0000514E, + 0x037, 0x00004000, + 0x038, 0x0000514E, + 0x037, 0x00008000, + 0x038, 0x0000514E, + 0x037, 0x00010000, + 0x038, 0x0000514E, + 0x037, 0x00014000, + 0x038, 0x0000514E, + 0x037, 0x00018000, + 0x038, 0x0000514E, + 0x037, 0x0001C000, + 0x038, 0x0000514E, + 0x037, 0x00020000, + 0x038, 0x0000514E, + 0x037, 0x00024000, + 0x038, 0x0000514E, + 0x037, 0x00028000, + 0x038, 0x0000514E, + 0x037, 0x0002C000, + 0x038, 0x0000714E, + 0x037, 0x00030000, + 0x038, 0x0000514E, + 0x037, 0x00034000, + 0x038, 0x0000514E, + 0x037, 0x00038000, + 0x038, 0x0000514E, + 0x037, 0x0003C000, + 0x038, 0x0000514E, + 0x037, 0x00040000, + 0x038, 0x0000514E, + 0x037, 0x00044000, + 0x038, 0x0000514E, + 0x037, 0x00048000, + 0x038, 0x0000514E, + 0x037, 0x00080000, + 0x038, 0x00005ECE, + 0x037, 0x00084000, + 0x038, 0x00005ECE, + 0x037, 0x00088000, + 0x038, 0x00005ECE, + 0x037, 0x00090000, + 0x038, 0x00005ECE, + 0x037, 0x00094000, + 0x038, 0x00005ECE, + 0x037, 0x00098000, + 0x038, 0x00005ECE, + 0x037, 0x0009C000, + 0x038, 0x00005ECE, + 0x037, 0x000A0000, + 0x038, 0x00005ECE, + 0x037, 0x000A4000, + 0x038, 0x00005ECE, + 0x037, 0x000A8000, + 0x038, 0x00005ECE, + 0x037, 0x000AC000, + 0x038, 0x00005ECE, + 0x037, 0x000B0000, + 0x038, 0x00005ECE, + 0x037, 0x000B4000, + 0x038, 0x00005ECE, + 0x037, 0x000B8000, + 0x038, 0x00005ECE, + 0x037, 0x000BC000, + 0x038, 0x00005ECE, + 0x037, 0x000C0000, + 0x038, 0x00005ECE, + 0x037, 0x000C4000, + 0x038, 0x00005ECE, + 0x037, 0x000C8000, + 0x038, 0x00005ECE, + 0x0EF, 0x00000000, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000008, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x03C, 0x0000007D, + 0x03C, 0x0000047D, + 0x03C, 0x0000087D, + 0x03C, 0x0000107D, + 0x03C, 0x0000147D, + 0x03C, 0x0000187D, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000275, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x00001275, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x00002275, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027F, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x0000127F, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x0000227F, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027F, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x0000127F, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x0000227F, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027F, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x0000127F, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x0000227F, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027F, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x0000127F, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x0000227F, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027F, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x0000127F, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x0000227F, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027F, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x0000127F, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x0000227F, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027F, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x0000127F, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x0000227F, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0xA0000000, 0x00000000, + 0x03C, 0x0000037E, + 0x03C, 0x00000575, + 0x03C, 0x00000971, + 0x03C, 0x0000127E, + 0x03C, 0x00001575, + 0x03C, 0x00001871, + 0x03C, 0x0000217E, + 0x03C, 0x00002575, + 0x03C, 0x00002871, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x061, 0x000C0D47, + 0x062, 0x0000133C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0xA0000000, 0x00000000, + 0x063, 0x0007D0E7, + 0xB0000000, 0x00000000, + 0x064, 0x00014FEC, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0xA0000000, 0x00000000, + 0x065, 0x000923FF, + 0xB0000000, 0x00000000, + 0x066, 0x00000040, + 0x057, 0x00050000, + 0x056, 0x00051DF0, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x055, 0x00082060, + 0xB0000000, 0x00000000, + +}; + +void +odm_read_and_config_mp_8814a_radiod(struct dm_struct *dm) +{ + u32 i = 0; + u8 c_cond; + boolean is_matched = true, is_skipped = false; + u32 array_len = + sizeof(array_mp_8814a_radiod) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_radiod; + + u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0; + u32 a1 = 0, a2 = 0, a3 = 0, a4 = 0; + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + while ((i + 1) < array_len) { + v1 = array[i]; + v2 = array[i + 1]; + + if (v1 & (BIT(31) | BIT(30))) {/*positive & negative condition*/ + if (v1 & BIT(31)) {/* positive condition*/ + c_cond = + (u8)((v1 & (BIT(29) | BIT(28))) >> 28); + if (c_cond == COND_ENDIF) {/*end*/ + is_matched = true; + is_skipped = false; + PHYDM_DBG(dm, ODM_COMP_INIT, "ENDIF\n"); + } else if (c_cond == COND_ELSE) { /*else*/ + is_matched = is_skipped ? false : true; + PHYDM_DBG(dm, ODM_COMP_INIT, "ELSE\n"); + } else {/*if , else if*/ + pre_v1 = v1; + pre_v2 = v2; + PHYDM_DBG(dm, ODM_COMP_INIT, + "IF or ELSE IF\n"); + } + } else if (v1 & BIT(30)) { /*negative condition*/ + if (!is_skipped) { + a1 = pre_v1; a2 = pre_v2; + a3 = v1; a4 = v2; + if (check_positive(dm, + a1, a2, a3, a4)) { + is_matched = true; + is_skipped = true; + } else { + is_matched = false; + is_skipped = false; + } + } else { + is_matched = false; + } + } + } else { + if (is_matched) + odm_config_rf_radio_d_8814a(dm, v1, v2); + } + i = i + 2; + } +} + +u32 +odm_get_version_mp_8814a_radiod(void) +{ + return 110; +} + +/****************************************************************************** + * txpowertrack.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A +const u8 delta_swingidx_mp_5gd_n_txpwrtrk_8814a[][D_S_SIZE] = { + {0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 11, + 11, 12, 13, 13, 14, 15, 15, 16, 17, 17, 18, 19, 19}, + {0, 1, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 9, 10, 10, + 11, 12, 12, 13, 13, 14, 15, 15, 16, 17, 17, 18}, + {0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 12, 12, 13, 14, 14, 15, 16, 16, 17, 17, 18, 19}, +}; + +const u8 delta_swingidx_mp_5gd_p_txpwrtrk_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25, 25}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25}, +}; + +const u8 delta_swingidx_mp_5gc_n_txpwrtrk_8814a[][D_S_SIZE] = { + {0, 1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 9, 10, 10, + 11, 12, 13, 14, 15, 15, 15, 15, 16, 16, 17, 18}, + {0, 1, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, 11, + 12, 12, 13, 14, 15, 15, 16, 17, 17, 18, 19, 19, 20}, + {0, 1, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 11, + 12, 13, 13, 14, 14, 15, 16, 17, 18, 18, 19, 20, 20}, +}; + +const u8 delta_swingidx_mp_5gc_p_txpwrtrk_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 25, 25}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 17, 18, 19, 20, 21, 22, 23, 24, 24, 25, 25, 25}, + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 16, 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 25}, +}; + +const u8 delta_swingidx_mp_5gb_n_txpwrtrk_8814a[][D_S_SIZE] = { + {0, 1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 17, 17}, + {0, 1, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, 11, + 12, 12, 13, 14, 15, 15, 16, 17, 17, 18, 19, 19, 20}, + {0, 1, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 11, + 12, 13, 13, 14, 14, 15, 16, 17, 18, 18, 19, 20, 20}, +}; + +const u8 delta_swingidx_mp_5gb_p_txpwrtrk_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, + 15, 15, 16, 17, 18, 18, 19, 20, 21, 22, 23, 23, 24}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 16, 17, 18, 19, 20, 20, 21, 22, 23, 24, 25, 25}, +}; + +const u8 delta_swingidx_mp_5ga_n_txpwrtrk_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, + 8, 9, 9, 10, 11, 11, 11, 11, 12, 12, 13, 13, 14}, + {0, 1, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 11, + 12, 13, 14, 14, 15, 16, 16, 17, 18, 19, 19, 20, 21}, + {0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 12, 12, 13, 14, 14, 15, 16, 16, 17, 17, 18, 19}, +}; + +const u8 delta_swingidx_mp_5ga_p_txpwrtrk_8814a[][D_S_SIZE] = { + {0, 1, 2, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 12, 13, + 14, 15, 16, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 25, 25, 25}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25}, +}; + +const u8 delta_swingidx_mp_2gd_n_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, + 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 12}; +const u8 delta_swingidx_mp_2gd_p_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13}; +const u8 delta_swingidx_mp_2gc_n_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 6, 7, + 7, 7, 8, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12}; +const u8 delta_swingidx_mp_2gc_p_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 13}; +const u8 delta_swingidx_mp_2gb_n_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 7, + 7, 8, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12}; +const u8 delta_swingidx_mp_2gb_p_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13}; +const u8 delta_swingidx_mp_2ga_n_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, + 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 13}; +const u8 delta_swingidx_mp_2ga_p_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, + 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14}; +const u8 delta_swingidx_mp_2g_cck_d_n_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 7, + 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_d_p_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_c_n_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 6, + 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 12}; +const u8 delta_swingidx_mp_2g_cck_c_p_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, + 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 13}; +const u8 delta_swingidx_mp_2g_cck_b_n_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, + 6, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11}; +const u8 delta_swingidx_mp_2g_cck_b_p_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, + 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_a_n_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 7, + 7, 8, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_a_p_txpwrtrk_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 7, + 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14}; +#endif + +void +odm_read_and_config_mp_8814a_txpowertrack(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A + +struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; + +PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8814a\n"); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, + (void *)delta_swingidx_mp_2ga_p_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, + (void *)delta_swingidx_mp_2ga_n_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, + (void *)delta_swingidx_mp_2gb_p_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, + (void *)delta_swingidx_mp_2gb_n_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_p, + (void *)delta_swingidx_mp_2gc_p_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_n, + (void *)delta_swingidx_mp_2gc_n_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_p, + (void *)delta_swingidx_mp_2gd_p_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_n, + (void *)delta_swingidx_mp_2gd_n_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, + (void *)delta_swingidx_mp_2g_cck_a_p_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, + (void *)delta_swingidx_mp_2g_cck_a_n_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, + (void *)delta_swingidx_mp_2g_cck_b_p_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, + (void *)delta_swingidx_mp_2g_cck_b_n_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_p, + (void *)delta_swingidx_mp_2g_cck_c_p_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_n, + (void *)delta_swingidx_mp_2g_cck_c_n_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_p, + (void *)delta_swingidx_mp_2g_cck_d_p_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_n, + (void *)delta_swingidx_mp_2g_cck_d_n_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, + (void *)delta_swingidx_mp_5ga_p_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, + (void *)delta_swingidx_mp_5ga_n_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, + (void *)delta_swingidx_mp_5gb_p_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, + (void *)delta_swingidx_mp_5gb_n_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_p, + (void *)delta_swingidx_mp_5gc_p_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_n, + (void *)delta_swingidx_mp_5gc_n_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_p, + (void *)delta_swingidx_mp_5gd_p_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_n, + (void *)delta_swingidx_mp_5gd_n_txpwrtrk_8814a, + DELTA_SWINGIDX_SIZE * 3); +#endif +} + +/****************************************************************************** + * txpowertrack_type0.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE0 +const u8 delta_swingidx_mp_5gd_n_txpwrtrk_type0_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5gd_p_txpwrtrk_type0_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_5gc_n_txpwrtrk_type0_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5gc_p_txpwrtrk_type0_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_5gb_n_txpwrtrk_type0_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5gb_p_txpwrtrk_type0_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_5ga_n_txpwrtrk_type0_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5ga_p_txpwrtrk_type0_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_2gd_n_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gd_p_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gc_n_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gc_p_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gb_n_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gb_p_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2ga_n_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2ga_p_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type0_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +#endif + +void +odm_read_and_config_mp_8814a_txpowertrack_type0(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE0 + +struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; + +PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8814a\n"); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, + (void *)delta_swingidx_mp_2ga_p_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, + (void *)delta_swingidx_mp_2ga_n_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, + (void *)delta_swingidx_mp_2gb_p_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, + (void *)delta_swingidx_mp_2gb_n_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_p, + (void *)delta_swingidx_mp_2gc_p_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_n, + (void *)delta_swingidx_mp_2gc_n_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_p, + (void *)delta_swingidx_mp_2gd_p_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_n, + (void *)delta_swingidx_mp_2gd_n_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, + (void *)delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, + (void *)delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, + (void *)delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, + (void *)delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_p, + (void *)delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_n, + (void *)delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_p, + (void *)delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_n, + (void *)delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, + (void *)delta_swingidx_mp_5ga_p_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, + (void *)delta_swingidx_mp_5ga_n_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, + (void *)delta_swingidx_mp_5gb_p_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, + (void *)delta_swingidx_mp_5gb_n_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_p, + (void *)delta_swingidx_mp_5gc_p_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_n, + (void *)delta_swingidx_mp_5gc_n_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_p, + (void *)delta_swingidx_mp_5gd_p_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_n, + (void *)delta_swingidx_mp_5gd_n_txpwrtrk_type0_8814a, + DELTA_SWINGIDX_SIZE * 3); +#endif +} + +/****************************************************************************** + * txpowertrack_type1.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE1 +const u8 delta_swingidx_mp_5gd_n_txpwrtrk_type1_8814a[][D_S_SIZE] = { + {0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 11, + 11, 12, 13, 13, 14, 15, 15, 16, 17, 17, 18, 19, 19}, + {0, 1, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 9, 10, 10, + 11, 12, 12, 13, 13, 14, 15, 15, 16, 17, 17, 18}, + {0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 12, 12, 13, 14, 14, 15, 16, 16, 17, 17, 18, 19}, +}; + +const u8 delta_swingidx_mp_5gd_p_txpwrtrk_type1_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25, 25}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25}, +}; + +const u8 delta_swingidx_mp_5gc_n_txpwrtrk_type1_8814a[][D_S_SIZE] = { + {0, 1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 9, 10, 10, + 11, 12, 13, 14, 15, 15, 15, 15, 16, 16, 17, 18}, + {0, 1, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, 11, + 12, 12, 13, 14, 15, 15, 16, 17, 17, 18, 19, 19, 20}, + {0, 1, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 11, + 12, 13, 13, 14, 14, 15, 16, 17, 18, 18, 19, 20, 20}, +}; + +const u8 delta_swingidx_mp_5gc_p_txpwrtrk_type1_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 25, 25}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 17, 18, 19, 20, 21, 22, 23, 24, 24, 25, 25, 25}, + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 16, 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 25}, +}; + +const u8 delta_swingidx_mp_5gb_n_txpwrtrk_type1_8814a[][D_S_SIZE] = { + {0, 1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 17, 17}, + {0, 1, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, 11, + 12, 12, 13, 14, 15, 15, 16, 17, 17, 18, 19, 19, 20}, + {0, 1, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 11, + 12, 13, 13, 14, 14, 15, 16, 17, 18, 18, 19, 20, 20}, +}; + +const u8 delta_swingidx_mp_5gb_p_txpwrtrk_type1_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, + 15, 15, 16, 17, 18, 18, 19, 20, 21, 22, 23, 23, 24}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 16, 17, 18, 19, 20, 20, 21, 22, 23, 24, 25, 25}, +}; + +const u8 delta_swingidx_mp_5ga_n_txpwrtrk_type1_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, + 8, 9, 9, 10, 11, 11, 11, 11, 12, 12, 13, 13, 14}, + {0, 1, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 11, + 12, 13, 14, 14, 15, 16, 16, 17, 18, 19, 19, 20, 21}, + {0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 12, 12, 13, 14, 14, 15, 16, 16, 17, 17, 18, 19}, +}; + +const u8 delta_swingidx_mp_5ga_p_txpwrtrk_type1_8814a[][D_S_SIZE] = { + {0, 1, 2, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 12, 13, + 14, 15, 16, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 25, 25, 25}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25}, +}; + +const u8 delta_swingidx_mp_2gd_n_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, + 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 12}; +const u8 delta_swingidx_mp_2gd_p_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13}; +const u8 delta_swingidx_mp_2gc_n_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 6, 7, + 7, 7, 8, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12}; +const u8 delta_swingidx_mp_2gc_p_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 13}; +const u8 delta_swingidx_mp_2gb_n_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 7, + 7, 8, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12}; +const u8 delta_swingidx_mp_2gb_p_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13}; +const u8 delta_swingidx_mp_2ga_n_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, + 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 13}; +const u8 delta_swingidx_mp_2ga_p_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, + 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14}; +const u8 delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 7, + 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 6, + 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 12}; +const u8 delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, + 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 13}; +const u8 delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, + 6, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11}; +const u8 delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, + 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 7, + 7, 8, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type1_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 7, + 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14}; +#endif + +void +odm_read_and_config_mp_8814a_txpowertrack_type1(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE1 + +struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; + +PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8814a\n"); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, + (void *)delta_swingidx_mp_2ga_p_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, + (void *)delta_swingidx_mp_2ga_n_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, + (void *)delta_swingidx_mp_2gb_p_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, + (void *)delta_swingidx_mp_2gb_n_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_p, + (void *)delta_swingidx_mp_2gc_p_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_n, + (void *)delta_swingidx_mp_2gc_n_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_p, + (void *)delta_swingidx_mp_2gd_p_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_n, + (void *)delta_swingidx_mp_2gd_n_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, + (void *)delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, + (void *)delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, + (void *)delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, + (void *)delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_p, + (void *)delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_n, + (void *)delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_p, + (void *)delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_n, + (void *)delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, + (void *)delta_swingidx_mp_5ga_p_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, + (void *)delta_swingidx_mp_5ga_n_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, + (void *)delta_swingidx_mp_5gb_p_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, + (void *)delta_swingidx_mp_5gb_n_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_p, + (void *)delta_swingidx_mp_5gc_p_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_n, + (void *)delta_swingidx_mp_5gc_n_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_p, + (void *)delta_swingidx_mp_5gd_p_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_n, + (void *)delta_swingidx_mp_5gd_n_txpwrtrk_type1_8814a, + DELTA_SWINGIDX_SIZE * 3); +#endif +} + +/****************************************************************************** + * txpowertrack_type10.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE10 +const u8 delta_swingidx_mp_5gd_n_txpwrtrk_type10_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 12, 12, + 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, + {0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 8, 9, 9, 10, 10, 10, 10, + 11, 11, 12, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 11, 12, + 12, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, +}; + +const u8 delta_swingidx_mp_5gd_p_txpwrtrk_type10_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 22}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 22}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 23, 23, 23, 23, 23, 23}, +}; + +const u8 delta_swingidx_mp_5gc_n_txpwrtrk_type10_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 12, + 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 12, + 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11, + 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gc_p_txpwrtrk_type10_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21}, + {0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 20, 20, 21, 21, 21, 21, 21}, + {0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21}, +}; + +const u8 delta_swingidx_mp_5gb_n_txpwrtrk_type10_8814a[][D_S_SIZE] = { + {0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 11, 12, 13, + 13, 13, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 12, + 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11, + 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gb_p_txpwrtrk_type10_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21}, + {0, 0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 20, 20, 20, 20, 20, 20}, + {0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21}, +}; + +const u8 delta_swingidx_mp_5ga_n_txpwrtrk_type10_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 11, + 12, 13, 13, 13, 13, 14, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 10, 10, 11, 12, 12, + 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 11, 11, 12, + 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13}, +}; + +const u8 delta_swingidx_mp_5ga_p_txpwrtrk_type10_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, + 15, 15, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 20}, + {0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, + 15, 16, 16, 17, 18, 19, 20, 20, 20, 20, 20, 20, 20}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15, + 15, 16, 17, 18, 19, 19, 20, 20, 20, 20, 20, 20, 20}, +}; + +const u8 delta_swingidx_mp_2gd_n_txpwrtrk_type10_8814a[] = { + 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, + 6, 6, 7, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11}; +const u8 delta_swingidx_mp_2gd_p_txpwrtrk_type10_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gc_n_txpwrtrk_type10_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 6, 6, 7, 7, 8, 8, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gc_p_txpwrtrk_type10_8814a[] = { + 0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 8, 8, 9, 10, 10, + 11, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gb_n_txpwrtrk_type10_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 8, + 9, 9, 10, 10, 11, 11, 12, 12, 12, 13, 14, 14, 14}; +const u8 delta_swingidx_mp_2gb_p_txpwrtrk_type10_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14}; +const u8 delta_swingidx_mp_2ga_n_txpwrtrk_type10_8814a[] = { + 0, 0, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 9, + 10, 11, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2ga_p_txpwrtrk_type10_8814a[] = { + 0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10, + 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type10_8814a[] = { + 0, 1, 1, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 8, + 9, 9, 9, 9, 9, 9, 10, 10, 11, 11, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type10_8814a[] = { + 0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type10_8814a[] = { + 0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9, 10, + 10, 11, 11, 11, 12, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type10_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type10_8814a[] = { + 0, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10, + 10, 10, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type10_8814a[] = { + 0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type10_8814a[] = { + 0, 1, 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 7, 8, 9, 9, 9, 9, + 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type10_8814a[] = { + 0, 0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, + 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +#endif + +void +odm_read_and_config_mp_8814a_txpowertrack_type10(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE10 + +struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; + +PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8814a\n"); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, + (void *)delta_swingidx_mp_2ga_p_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, + (void *)delta_swingidx_mp_2ga_n_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, + (void *)delta_swingidx_mp_2gb_p_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, + (void *)delta_swingidx_mp_2gb_n_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_p, + (void *)delta_swingidx_mp_2gc_p_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_n, + (void *)delta_swingidx_mp_2gc_n_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_p, + (void *)delta_swingidx_mp_2gd_p_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_n, + (void *)delta_swingidx_mp_2gd_n_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, + (void *)delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, + (void *)delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, + (void *)delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, + (void *)delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_p, + (void *)delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_n, + (void *)delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_p, + (void *)delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_n, + (void *)delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, + (void *)delta_swingidx_mp_5ga_p_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, + (void *)delta_swingidx_mp_5ga_n_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, + (void *)delta_swingidx_mp_5gb_p_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, + (void *)delta_swingidx_mp_5gb_n_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_p, + (void *)delta_swingidx_mp_5gc_p_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_n, + (void *)delta_swingidx_mp_5gc_n_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_p, + (void *)delta_swingidx_mp_5gd_p_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_n, + (void *)delta_swingidx_mp_5gd_n_txpwrtrk_type10_8814a, + DELTA_SWINGIDX_SIZE * 3); +#endif +} + +/****************************************************************************** + * txpowertrack_type11.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE11 +const u8 delta_swingidx_mp_5gd_n_txpwrtrk_type11_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 12, 12, + 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, + {0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 8, 9, 9, 10, 10, 10, 10, + 11, 11, 12, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 11, 12, + 12, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, +}; + +const u8 delta_swingidx_mp_5gd_p_txpwrtrk_type11_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 22}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 22}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 23, 23, 23, 23, 23, 23}, +}; + +const u8 delta_swingidx_mp_5gc_n_txpwrtrk_type11_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 12, + 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 12, + 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11, + 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gc_p_txpwrtrk_type11_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21}, + {0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 20, 20, 21, 21, 21, 21, 21}, + {0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21}, +}; + +const u8 delta_swingidx_mp_5gb_n_txpwrtrk_type11_8814a[][D_S_SIZE] = { + {0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 11, 12, 13, + 13, 13, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 12, + 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11, + 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gb_p_txpwrtrk_type11_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21}, + {0, 0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 20, 20, 20, 20, 20, 20}, + {0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21}, +}; + +const u8 delta_swingidx_mp_5ga_n_txpwrtrk_type11_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 11, + 12, 13, 13, 13, 13, 14, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 10, 10, 11, 12, 12, + 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 11, 11, 12, + 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13}, +}; + +const u8 delta_swingidx_mp_5ga_p_txpwrtrk_type11_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, + 15, 15, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 20}, + {0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, + 15, 16, 16, 17, 18, 19, 20, 20, 20, 20, 20, 20, 20}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15, + 15, 16, 17, 18, 19, 19, 20, 20, 20, 20, 20, 20, 20}, +}; + +const u8 delta_swingidx_mp_2gd_n_txpwrtrk_type11_8814a[] = { + 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, + 6, 6, 7, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11}; +const u8 delta_swingidx_mp_2gd_p_txpwrtrk_type11_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gc_n_txpwrtrk_type11_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 6, 6, 7, 7, 8, 8, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gc_p_txpwrtrk_type11_8814a[] = { + 0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 8, 8, 9, 10, 10, + 11, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gb_n_txpwrtrk_type11_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 8, + 9, 9, 10, 10, 11, 11, 12, 12, 12, 13, 14, 14, 14}; +const u8 delta_swingidx_mp_2gb_p_txpwrtrk_type11_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14}; +const u8 delta_swingidx_mp_2ga_n_txpwrtrk_type11_8814a[] = { + 0, 0, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 9, + 10, 11, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2ga_p_txpwrtrk_type11_8814a[] = { + 0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10, + 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type11_8814a[] = { + 0, 1, 1, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 8, + 9, 9, 9, 9, 9, 9, 10, 10, 11, 11, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type11_8814a[] = { + 0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type11_8814a[] = { + 0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9, 10, + 10, 11, 11, 11, 12, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type11_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type11_8814a[] = { + 0, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10, + 10, 10, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type11_8814a[] = { + 0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type11_8814a[] = { + 0, 1, 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 7, 8, 9, 9, 9, 9, + 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type11_8814a[] = { + 0, 0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, + 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +#endif + +void +odm_read_and_config_mp_8814a_txpowertrack_type11(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE11 + +struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; + +PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8814a\n"); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, + (void *)delta_swingidx_mp_2ga_p_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, + (void *)delta_swingidx_mp_2ga_n_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, + (void *)delta_swingidx_mp_2gb_p_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, + (void *)delta_swingidx_mp_2gb_n_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_p, + (void *)delta_swingidx_mp_2gc_p_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_n, + (void *)delta_swingidx_mp_2gc_n_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_p, + (void *)delta_swingidx_mp_2gd_p_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_n, + (void *)delta_swingidx_mp_2gd_n_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, + (void *)delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, + (void *)delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, + (void *)delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, + (void *)delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_p, + (void *)delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_n, + (void *)delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_p, + (void *)delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_n, + (void *)delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, + (void *)delta_swingidx_mp_5ga_p_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, + (void *)delta_swingidx_mp_5ga_n_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, + (void *)delta_swingidx_mp_5gb_p_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, + (void *)delta_swingidx_mp_5gb_n_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_p, + (void *)delta_swingidx_mp_5gc_p_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_n, + (void *)delta_swingidx_mp_5gc_n_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_p, + (void *)delta_swingidx_mp_5gd_p_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_n, + (void *)delta_swingidx_mp_5gd_n_txpwrtrk_type11_8814a, + DELTA_SWINGIDX_SIZE * 3); +#endif +} + +/****************************************************************************** + * txpowertrack_type2.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE2 +const u8 delta_swingidx_mp_5gd_n_txpwrtrk_type2_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 12, 12, + 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, + {0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 8, 9, 9, 10, 10, 10, 10, + 11, 11, 12, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 11, 12, + 12, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, +}; + +const u8 delta_swingidx_mp_5gd_p_txpwrtrk_type2_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 22}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 22}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 23, 23, 23, 23, 23, 23}, +}; + +const u8 delta_swingidx_mp_5gc_n_txpwrtrk_type2_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 12, + 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 12, + 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11, + 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gc_p_txpwrtrk_type2_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21}, + {0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 20, 20, 21, 21, 21, 21, 21}, + {0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21}, +}; + +const u8 delta_swingidx_mp_5gb_n_txpwrtrk_type2_8814a[][D_S_SIZE] = { + {0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 11, 12, 13, + 13, 13, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 12, + 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11, + 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gb_p_txpwrtrk_type2_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21}, + {0, 0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 20, 20, 20, 20, 20, 20}, + {0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21}, +}; + +const u8 delta_swingidx_mp_5ga_n_txpwrtrk_type2_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 11, + 12, 13, 13, 13, 13, 14, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 10, 10, 11, 12, 12, + 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 11, 11, 12, + 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13}, +}; + +const u8 delta_swingidx_mp_5ga_p_txpwrtrk_type2_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, + 15, 15, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 20}, + {0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, + 15, 16, 16, 17, 18, 19, 20, 20, 20, 20, 20, 20, 20}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15, + 15, 16, 17, 18, 19, 19, 20, 20, 20, 20, 20, 20, 20}, +}; + +const u8 delta_swingidx_mp_2gd_n_txpwrtrk_type2_8814a[] = { + 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, + 6, 6, 7, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11}; +const u8 delta_swingidx_mp_2gd_p_txpwrtrk_type2_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gc_n_txpwrtrk_type2_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 6, 6, 7, 7, 8, 8, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gc_p_txpwrtrk_type2_8814a[] = { + 0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 8, 8, 9, 10, 10, + 11, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gb_n_txpwrtrk_type2_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 8, + 9, 9, 10, 10, 11, 11, 12, 12, 12, 13, 14, 14, 14}; +const u8 delta_swingidx_mp_2gb_p_txpwrtrk_type2_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14}; +const u8 delta_swingidx_mp_2ga_n_txpwrtrk_type2_8814a[] = { + 0, 0, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 9, + 10, 11, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2ga_p_txpwrtrk_type2_8814a[] = { + 0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10, + 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type2_8814a[] = { + 0, 1, 1, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 8, + 9, 9, 9, 9, 9, 9, 10, 10, 11, 11, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type2_8814a[] = { + 0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type2_8814a[] = { + 0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9, 10, + 10, 11, 11, 11, 12, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type2_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type2_8814a[] = { + 0, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10, + 10, 10, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type2_8814a[] = { + 0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type2_8814a[] = { + 0, 1, 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 7, 8, 9, 9, 9, 9, + 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type2_8814a[] = { + 0, 0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, + 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +#endif + +void +odm_read_and_config_mp_8814a_txpowertrack_type2(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE2 + +struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; + +PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8814a\n"); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, + (void *)delta_swingidx_mp_2ga_p_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, + (void *)delta_swingidx_mp_2ga_n_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, + (void *)delta_swingidx_mp_2gb_p_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, + (void *)delta_swingidx_mp_2gb_n_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_p, + (void *)delta_swingidx_mp_2gc_p_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_n, + (void *)delta_swingidx_mp_2gc_n_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_p, + (void *)delta_swingidx_mp_2gd_p_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_n, + (void *)delta_swingidx_mp_2gd_n_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, + (void *)delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, + (void *)delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, + (void *)delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, + (void *)delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_p, + (void *)delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_n, + (void *)delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_p, + (void *)delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_n, + (void *)delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, + (void *)delta_swingidx_mp_5ga_p_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, + (void *)delta_swingidx_mp_5ga_n_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, + (void *)delta_swingidx_mp_5gb_p_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, + (void *)delta_swingidx_mp_5gb_n_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_p, + (void *)delta_swingidx_mp_5gc_p_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_n, + (void *)delta_swingidx_mp_5gc_n_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_p, + (void *)delta_swingidx_mp_5gd_p_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_n, + (void *)delta_swingidx_mp_5gd_n_txpwrtrk_type2_8814a, + DELTA_SWINGIDX_SIZE * 3); +#endif +} + +/****************************************************************************** + * txpowertrack_type3.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE3 +const u8 delta_swingidx_mp_5gd_n_txpwrtrk_type3_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 12, 12, + 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, + {0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 8, 9, 9, 10, 10, 10, 10, + 11, 11, 12, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 11, 12, + 12, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, +}; + +const u8 delta_swingidx_mp_5gd_p_txpwrtrk_type3_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 22}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 22}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 23, 23, 23, 23, 23, 23}, +}; + +const u8 delta_swingidx_mp_5gc_n_txpwrtrk_type3_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 12, + 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 12, + 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11, + 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gc_p_txpwrtrk_type3_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21}, + {0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 20, 20, 21, 21, 21, 21, 21}, + {0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21}, +}; + +const u8 delta_swingidx_mp_5gb_n_txpwrtrk_type3_8814a[][D_S_SIZE] = { + {0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 11, 12, 13, + 13, 13, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 12, + 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11, + 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gb_p_txpwrtrk_type3_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21}, + {0, 0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 20, 20, 20, 20, 20, 20}, + {0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21}, +}; + +const u8 delta_swingidx_mp_5ga_n_txpwrtrk_type3_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 11, + 12, 13, 13, 13, 13, 14, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 10, 10, 11, 12, 12, + 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 11, 11, 12, + 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13}, +}; + +const u8 delta_swingidx_mp_5ga_p_txpwrtrk_type3_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, + 15, 15, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 20}, + {0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, + 15, 16, 16, 17, 18, 19, 20, 20, 20, 20, 20, 20, 20}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15, + 15, 16, 17, 18, 19, 19, 20, 20, 20, 20, 20, 20, 20}, +}; + +const u8 delta_swingidx_mp_2gd_n_txpwrtrk_type3_8814a[] = { + 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, + 6, 6, 7, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11}; +const u8 delta_swingidx_mp_2gd_p_txpwrtrk_type3_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gc_n_txpwrtrk_type3_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 6, 6, 7, 7, 8, 8, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gc_p_txpwrtrk_type3_8814a[] = { + 0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 8, 8, 9, 10, 10, + 11, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gb_n_txpwrtrk_type3_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 8, + 9, 9, 10, 10, 11, 11, 12, 12, 12, 13, 14, 14, 14}; +const u8 delta_swingidx_mp_2gb_p_txpwrtrk_type3_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14}; +const u8 delta_swingidx_mp_2ga_n_txpwrtrk_type3_8814a[] = { + 0, 0, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 9, + 10, 11, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2ga_p_txpwrtrk_type3_8814a[] = { + 0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10, + 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type3_8814a[] = { + 0, 1, 1, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 8, + 9, 9, 9, 9, 9, 9, 10, 10, 11, 11, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type3_8814a[] = { + 0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type3_8814a[] = { + 0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9, 10, + 10, 11, 11, 11, 12, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type3_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type3_8814a[] = { + 0, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10, + 10, 10, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type3_8814a[] = { + 0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type3_8814a[] = { + 0, 1, 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 7, 8, 9, 9, 9, 9, + 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type3_8814a[] = { + 0, 0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, + 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +#endif + +void +odm_read_and_config_mp_8814a_txpowertrack_type3(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE3 + +struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; + +PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8814a\n"); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, + (void *)delta_swingidx_mp_2ga_p_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, + (void *)delta_swingidx_mp_2ga_n_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, + (void *)delta_swingidx_mp_2gb_p_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, + (void *)delta_swingidx_mp_2gb_n_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_p, + (void *)delta_swingidx_mp_2gc_p_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_n, + (void *)delta_swingidx_mp_2gc_n_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_p, + (void *)delta_swingidx_mp_2gd_p_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_n, + (void *)delta_swingidx_mp_2gd_n_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, + (void *)delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, + (void *)delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, + (void *)delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, + (void *)delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_p, + (void *)delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_n, + (void *)delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_p, + (void *)delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_n, + (void *)delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, + (void *)delta_swingidx_mp_5ga_p_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, + (void *)delta_swingidx_mp_5ga_n_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, + (void *)delta_swingidx_mp_5gb_p_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, + (void *)delta_swingidx_mp_5gb_n_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_p, + (void *)delta_swingidx_mp_5gc_p_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_n, + (void *)delta_swingidx_mp_5gc_n_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_p, + (void *)delta_swingidx_mp_5gd_p_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_n, + (void *)delta_swingidx_mp_5gd_n_txpwrtrk_type3_8814a, + DELTA_SWINGIDX_SIZE * 3); +#endif +} + +/****************************************************************************** + * txpowertrack_type4.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE4 +const u8 delta_swingidx_mp_5gd_n_txpwrtrk_type4_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 12, 12, + 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, + {0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 8, 9, 9, 10, 10, 10, 10, + 11, 11, 12, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 11, 12, + 12, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, +}; + +const u8 delta_swingidx_mp_5gd_p_txpwrtrk_type4_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 22}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 22}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 23, 23, 23, 23, 23, 23}, +}; + +const u8 delta_swingidx_mp_5gc_n_txpwrtrk_type4_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 12, + 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 12, + 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11, + 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gc_p_txpwrtrk_type4_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21}, + {0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 20, 20, 21, 21, 21, 21, 21}, + {0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21}, +}; + +const u8 delta_swingidx_mp_5gb_n_txpwrtrk_type4_8814a[][D_S_SIZE] = { + {0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 11, 12, 13, + 13, 13, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 12, + 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11, + 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gb_p_txpwrtrk_type4_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21}, + {0, 0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 20, 20, 20, 20, 20, 20}, + {0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21}, +}; + +const u8 delta_swingidx_mp_5ga_n_txpwrtrk_type4_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 11, + 12, 13, 13, 13, 13, 14, 15, 15, 15, 15, 15, 15, 15}, + {0, 1, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 10, 10, 11, 12, 12, + 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 11, 11, 12, + 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13}, +}; + +const u8 delta_swingidx_mp_5ga_p_txpwrtrk_type4_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, + 15, 15, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 20}, + {0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, + 15, 16, 16, 17, 18, 19, 20, 20, 20, 20, 20, 20, 20}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15, + 15, 16, 17, 18, 19, 19, 20, 20, 20, 20, 20, 20, 20}, +}; + +const u8 delta_swingidx_mp_2gd_n_txpwrtrk_type4_8814a[] = { + 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, + 6, 6, 7, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11}; +const u8 delta_swingidx_mp_2gd_p_txpwrtrk_type4_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gc_n_txpwrtrk_type4_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 6, 6, 7, 7, 8, 8, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gc_p_txpwrtrk_type4_8814a[] = { + 0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 8, 8, 9, 10, 10, + 11, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gb_n_txpwrtrk_type4_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 8, + 9, 9, 10, 10, 11, 11, 12, 12, 12, 13, 14, 14, 14}; +const u8 delta_swingidx_mp_2gb_p_txpwrtrk_type4_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14}; +const u8 delta_swingidx_mp_2ga_n_txpwrtrk_type4_8814a[] = { + 0, 0, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 9, + 10, 11, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2ga_p_txpwrtrk_type4_8814a[] = { + 0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10, + 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type4_8814a[] = { + 0, 1, 1, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 8, + 9, 9, 9, 9, 9, 9, 10, 10, 11, 11, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type4_8814a[] = { + 0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type4_8814a[] = { + 0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9, 10, + 10, 11, 11, 11, 12, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type4_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type4_8814a[] = { + 0, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10, + 10, 10, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type4_8814a[] = { + 0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type4_8814a[] = { + 0, 1, 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 7, 8, 9, 9, 9, 9, + 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type4_8814a[] = { + 0, 0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, + 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +#endif + +void +odm_read_and_config_mp_8814a_txpowertrack_type4(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE4 + +struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; + +PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8814a\n"); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, + (void *)delta_swingidx_mp_2ga_p_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, + (void *)delta_swingidx_mp_2ga_n_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, + (void *)delta_swingidx_mp_2gb_p_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, + (void *)delta_swingidx_mp_2gb_n_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_p, + (void *)delta_swingidx_mp_2gc_p_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_n, + (void *)delta_swingidx_mp_2gc_n_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_p, + (void *)delta_swingidx_mp_2gd_p_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_n, + (void *)delta_swingidx_mp_2gd_n_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, + (void *)delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, + (void *)delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, + (void *)delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, + (void *)delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_p, + (void *)delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_n, + (void *)delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_p, + (void *)delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_n, + (void *)delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, + (void *)delta_swingidx_mp_5ga_p_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, + (void *)delta_swingidx_mp_5ga_n_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, + (void *)delta_swingidx_mp_5gb_p_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, + (void *)delta_swingidx_mp_5gb_n_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_p, + (void *)delta_swingidx_mp_5gc_p_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_n, + (void *)delta_swingidx_mp_5gc_n_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_p, + (void *)delta_swingidx_mp_5gd_p_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_n, + (void *)delta_swingidx_mp_5gd_n_txpwrtrk_type4_8814a, + DELTA_SWINGIDX_SIZE * 3); +#endif +} + +/****************************************************************************** + * txpowertrack_type5.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE5 +const u8 delta_swingidx_mp_5gd_n_txpwrtrk_type5_8814a[][D_S_SIZE] = { + {0, 3, 3, 3, 4, 6, 6, 7, 7, 8, 9, 10, 11, 12, 13, 13, 14, + 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 4, 5, 6, 7, 7, 8, 7, 8, 10, 11, 12, 12, 13, 13, 14, 14, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 5, 5, 6, 7, 8, 9, 9, 10, 11, 12, 13, 13, 14, 15, 15, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}, +}; + +const u8 delta_swingidx_mp_5gd_p_txpwrtrk_type5_8814a[][D_S_SIZE] = { + {0, 0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 9, 10, 10, 11, 12, + 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}, + {0, 0, 0, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 11, 12, + 12, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14}, + {0, 0, 0, 1, 1, 2, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 13, + 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gc_n_txpwrtrk_type5_8814a[][D_S_SIZE] = { + {0, 1, 1, 2, 3, 3, 4, 6, 7, 7, 8, 9, 9, 9, 10, 10, 10, + 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12}, + {0, 1, 2, 3, 3, 7, 7, 8, 8, 9, 11, 12, 12, 13, 14, 14, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 0, 1, 2, 3, 4, 5, 7, 8, 8, 10, 11, 12, 12, 13, 13, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gc_p_txpwrtrk_type5_8814a[][D_S_SIZE] = { + {0, 0, 0, 1, 1, 2, 2, 3, 4, 5, 6, 6, 7, 8, 9, 11, 11, + 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13}, + {0, 0, 1, 2, 3, 3, 5, 5, 6, 8, 8, 9, 10, 11, 13, 13, 13, + 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {0, 0, 1, 2, 3, 4, 4, 5, 7, 8, 9, 9, 10, 11, 12, 12, 12, + 12, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gb_n_txpwrtrk_type5_8814a[][D_S_SIZE] = { + {0, 1, 1, 2, 2, 2, 3, 4, 5, 6, 7, 9, 10, 10, 10, 10, 10, + 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12}, + {0, 1, 2, 3, 3, 7, 7, 8, 8, 9, 11, 12, 12, 13, 14, 14, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 0, 1, 2, 3, 4, 5, 7, 8, 8, 10, 11, 12, 12, 13, 13, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gb_p_txpwrtrk_type5_8814a[][D_S_SIZE] = { + {0, 1, 1, 1, 2, 2, 4, 5, 6, 6, 7, 8, 9, 10, 11, 11, 11, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 0, 2, 3, 4, 5, 6, 8, 8, 9, 9, 11, 12, 13, 13, 13, + 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {0, 0, 0, 1, 2, 3, 3, 4, 6, 7, 8, 9, 10, 11, 12, 12, 12, + 12, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5ga_n_txpwrtrk_type5_8814a[][D_S_SIZE] = { + {0, 0, 0, 1, 2, 3, 3, 3, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 10, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12}, + {0, 2, 3, 4, 5, 7, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 17, + 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18}, + {0, 1, 2, 3, 3, 4, 6, 7, 8, 8, 10, 11, 11, 12, 13, 13, 13, + 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5ga_p_txpwrtrk_type5_8814a[][D_S_SIZE] = { + {0, 1, 1, 3, 3, 3, 5, 5, 6, 6, 8, 8, 9, 10, 11, 11, 11, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 8, 9, 11, 12, 13, 14, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 0, 1, 3, 3, 4, 5, 5, 6, 7, 7, 8, 10, 10, 11, 11, 11, + 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13}, +}; + +const u8 delta_swingidx_mp_2gd_n_txpwrtrk_type5_8814a[] = { + 0, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 7, 7, 8, 9, 9, 9, + 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11}; +const u8 delta_swingidx_mp_2gd_p_txpwrtrk_type5_8814a[] = { + 0, 1, 1, 2, 2, 2, 3, 4, 4, 5, 6, 6, 7, 7, 8, 8, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10}; +const u8 delta_swingidx_mp_2gc_n_txpwrtrk_type5_8814a[] = { + 0, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, 10, + 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2gc_p_txpwrtrk_type5_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 8, 8, 9, 9, 9, + 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11}; +const u8 delta_swingidx_mp_2gb_n_txpwrtrk_type5_8814a[] = { + 0, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 10, 10, 10, + 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2gb_p_txpwrtrk_type5_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 8, 9, 9, 9, 9, + 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11}; +const u8 delta_swingidx_mp_2ga_n_txpwrtrk_type5_8814a[] = { + 0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 8, 9, 10, 10, 10, + 10, 11, 11, 11, 11, 111, 12, 12, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2ga_p_txpwrtrk_type5_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 7, 8, 8, 9, 9, 9, + 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11}; +const u8 delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type5_8814a[] = { + 0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, + 10, 10, 10, 10, 10, 11, 11, 10, 11, 11, 11, 11}; +const u8 delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type5_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 8, + 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10}; +const u8 delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type5_8814a[] = { + 0, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 8, 8, 9, 10, 10, 10, + 10, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type5_8814a[] = { + 0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 8, + 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}; +const u8 delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type5_8814a[] = { + 0, 2, 3, 4, 4, 5, 6, 6, 6, 7, 7, 8, 8, 9, 10, 10, 10, + 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11}; +const u8 delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type5_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 8, + 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}; +const u8 delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type5_8814a[] = { + 0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 8, 9, 9, 9, 9, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}; +const u8 delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type5_8814a[] = { + 0, 1, 1, 2, 2, 2, 3, 4, 4, 5, 6, 7, 8, 8, 9, 9, 9, + 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10}; +#endif + +void +odm_read_and_config_mp_8814a_txpowertrack_type5(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE5 + +struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; + +PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8814a\n"); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, + (void *)delta_swingidx_mp_2ga_p_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, + (void *)delta_swingidx_mp_2ga_n_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, + (void *)delta_swingidx_mp_2gb_p_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, + (void *)delta_swingidx_mp_2gb_n_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_p, + (void *)delta_swingidx_mp_2gc_p_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_n, + (void *)delta_swingidx_mp_2gc_n_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_p, + (void *)delta_swingidx_mp_2gd_p_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_n, + (void *)delta_swingidx_mp_2gd_n_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, + (void *)delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, + (void *)delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, + (void *)delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, + (void *)delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_p, + (void *)delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_n, + (void *)delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_p, + (void *)delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_n, + (void *)delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, + (void *)delta_swingidx_mp_5ga_p_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, + (void *)delta_swingidx_mp_5ga_n_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, + (void *)delta_swingidx_mp_5gb_p_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, + (void *)delta_swingidx_mp_5gb_n_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_p, + (void *)delta_swingidx_mp_5gc_p_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_n, + (void *)delta_swingidx_mp_5gc_n_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_p, + (void *)delta_swingidx_mp_5gd_p_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_n, + (void *)delta_swingidx_mp_5gd_n_txpwrtrk_type5_8814a, + DELTA_SWINGIDX_SIZE * 3); +#endif +} + +/****************************************************************************** + * txpowertrack_type6.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE6 +const u8 delta_swingidx_mp_5gd_n_txpwrtrk_type6_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5gd_p_txpwrtrk_type6_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_5gc_n_txpwrtrk_type6_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5gc_p_txpwrtrk_type6_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_5gb_n_txpwrtrk_type6_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5gb_p_txpwrtrk_type6_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_5ga_n_txpwrtrk_type6_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5ga_p_txpwrtrk_type6_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_2gd_n_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gd_p_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gc_n_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gc_p_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gb_n_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gb_p_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2ga_n_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2ga_p_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type6_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +#endif + +void +odm_read_and_config_mp_8814a_txpowertrack_type6(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE6 + +struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; + +PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8814a\n"); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, + (void *)delta_swingidx_mp_2ga_p_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, + (void *)delta_swingidx_mp_2ga_n_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, + (void *)delta_swingidx_mp_2gb_p_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, + (void *)delta_swingidx_mp_2gb_n_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_p, + (void *)delta_swingidx_mp_2gc_p_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_n, + (void *)delta_swingidx_mp_2gc_n_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_p, + (void *)delta_swingidx_mp_2gd_p_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_n, + (void *)delta_swingidx_mp_2gd_n_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, + (void *)delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, + (void *)delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, + (void *)delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, + (void *)delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_p, + (void *)delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_n, + (void *)delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_p, + (void *)delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_n, + (void *)delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, + (void *)delta_swingidx_mp_5ga_p_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, + (void *)delta_swingidx_mp_5ga_n_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, + (void *)delta_swingidx_mp_5gb_p_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, + (void *)delta_swingidx_mp_5gb_n_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_p, + (void *)delta_swingidx_mp_5gc_p_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_n, + (void *)delta_swingidx_mp_5gc_n_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_p, + (void *)delta_swingidx_mp_5gd_p_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_n, + (void *)delta_swingidx_mp_5gd_n_txpwrtrk_type6_8814a, + DELTA_SWINGIDX_SIZE * 3); +#endif +} + +/****************************************************************************** + * txpowertrack_type7.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE7 +const u8 delta_swingidx_mp_5gd_n_txpwrtrk_type7_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5gd_p_txpwrtrk_type7_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_5gc_n_txpwrtrk_type7_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5gc_p_txpwrtrk_type7_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_5gb_n_txpwrtrk_type7_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5gb_p_txpwrtrk_type7_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_5ga_n_txpwrtrk_type7_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5ga_p_txpwrtrk_type7_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_2gd_n_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gd_p_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gc_n_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gc_p_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gb_n_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gb_p_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2ga_n_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2ga_p_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type7_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +#endif + +void +odm_read_and_config_mp_8814a_txpowertrack_type7(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE7 + +struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; + +PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8814a\n"); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, + (void *)delta_swingidx_mp_2ga_p_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, + (void *)delta_swingidx_mp_2ga_n_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, + (void *)delta_swingidx_mp_2gb_p_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, + (void *)delta_swingidx_mp_2gb_n_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_p, + (void *)delta_swingidx_mp_2gc_p_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_n, + (void *)delta_swingidx_mp_2gc_n_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_p, + (void *)delta_swingidx_mp_2gd_p_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_n, + (void *)delta_swingidx_mp_2gd_n_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, + (void *)delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, + (void *)delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, + (void *)delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, + (void *)delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_p, + (void *)delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_n, + (void *)delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_p, + (void *)delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_n, + (void *)delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, + (void *)delta_swingidx_mp_5ga_p_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, + (void *)delta_swingidx_mp_5ga_n_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, + (void *)delta_swingidx_mp_5gb_p_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, + (void *)delta_swingidx_mp_5gb_n_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_p, + (void *)delta_swingidx_mp_5gc_p_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_n, + (void *)delta_swingidx_mp_5gc_n_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_p, + (void *)delta_swingidx_mp_5gd_p_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_n, + (void *)delta_swingidx_mp_5gd_n_txpwrtrk_type7_8814a, + DELTA_SWINGIDX_SIZE * 3); +#endif +} + +/****************************************************************************** + * txpowertrack_type8.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE8 +const u8 delta_swingidx_mp_5gd_n_txpwrtrk_type8_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 4, 6, 7, 7, 8, 8, 9, 10, 10, 11, 11, 12, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}, + {0, 1, 2, 3, 4, 4, 6, 7, 7, 8, 9, 9, 10, 10, 11, 11, 12, + 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}, + {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 7, 8, 8, 8, 9, 10, 10, + 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11}, +}; + +const u8 delta_swingidx_mp_5gd_p_txpwrtrk_type8_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 14, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 0, 1, 2, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {0, 0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gc_n_txpwrtrk_type8_8814a[][D_S_SIZE] = { + {0, 1, 2, 4, 4, 5, 6, 7, 7, 8, 8, 9, 9, 10, 11, 11, 12, + 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}, + {0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 9, 10, 10, 10, 11, 11, + 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 8, 9, 10, 10, 11, 11, + 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_5gc_p_txpwrtrk_type8_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {0, 0, 1, 3, 4, 4, 5, 6, 7, 7, 8, 10, 11, 12, 13, 14, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 0, 1, 2, 4, 5, 5, 6, 6, 7, 7, 9, 10, 11, 12, 13, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5gb_n_txpwrtrk_type8_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 8, 9, 9, 10, 11, 11, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 9, 10, 10, 10, 11, 11, + 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 8, 9, 10, 10, 11, 11, + 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_5gb_p_txpwrtrk_type8_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {0, 0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 10, 11, 11, 13, 13, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {0, 0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 10, 10, 11, 13, 13, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_5ga_n_txpwrtrk_type8_8814a[][D_S_SIZE] = { + {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 10, 11, 11, + 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}, + {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 10, 10, 11, 12, + 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}, +}; + +const u8 delta_swingidx_mp_5ga_p_txpwrtrk_type8_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 9, 10, 11, 12, 13, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {0, 0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {0, 0, 1, 2, 3, 3, 4, 4, 6, 7, 7, 9, 10, 11, 12, 13, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, +}; + +const u8 delta_swingidx_mp_2gd_n_txpwrtrk_type8_8814a[] = { + 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, + 6, 6, 7, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11}; +const u8 delta_swingidx_mp_2gd_p_txpwrtrk_type8_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gc_n_txpwrtrk_type8_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 6, 6, 7, 7, 8, 8, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gc_p_txpwrtrk_type8_8814a[] = { + 0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 8, 8, 9, 10, 10, + 11, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2gb_n_txpwrtrk_type8_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 8, + 9, 9, 10, 10, 11, 11, 12, 12, 12, 13, 14, 14, 14}; +const u8 delta_swingidx_mp_2gb_p_txpwrtrk_type8_8814a[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14}; +const u8 delta_swingidx_mp_2ga_n_txpwrtrk_type8_8814a[] = { + 0, 0, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 9, + 10, 11, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2ga_p_txpwrtrk_type8_8814a[] = { + 0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10, + 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type8_8814a[] = { + 0, 1, 1, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 8, + 9, 9, 9, 9, 9, 9, 10, 10, 11, 11, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type8_8814a[] = { + 0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14}; +const u8 delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type8_8814a[] = { + 0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9, 10, + 10, 11, 11, 11, 12, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type8_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type8_8814a[] = { + 0, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10, + 10, 10, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type8_8814a[] = { + 0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 8, 9, 9, 10, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +const u8 delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type8_8814a[] = { + 0, 1, 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 7, 8, 9, 9, 9, 9, + 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12}; +const u8 delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type8_8814a[] = { + 0, 0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, + 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13}; +#endif + +void +odm_read_and_config_mp_8814a_txpowertrack_type8(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE8 + +struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; + +PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8814a\n"); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, + (void *)delta_swingidx_mp_2ga_p_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, + (void *)delta_swingidx_mp_2ga_n_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, + (void *)delta_swingidx_mp_2gb_p_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, + (void *)delta_swingidx_mp_2gb_n_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_p, + (void *)delta_swingidx_mp_2gc_p_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_n, + (void *)delta_swingidx_mp_2gc_n_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_p, + (void *)delta_swingidx_mp_2gd_p_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_n, + (void *)delta_swingidx_mp_2gd_n_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, + (void *)delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, + (void *)delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, + (void *)delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, + (void *)delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_p, + (void *)delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_n, + (void *)delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_p, + (void *)delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_n, + (void *)delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, + (void *)delta_swingidx_mp_5ga_p_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, + (void *)delta_swingidx_mp_5ga_n_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, + (void *)delta_swingidx_mp_5gb_p_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, + (void *)delta_swingidx_mp_5gb_n_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_p, + (void *)delta_swingidx_mp_5gc_p_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_n, + (void *)delta_swingidx_mp_5gc_n_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_p, + (void *)delta_swingidx_mp_5gd_p_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_n, + (void *)delta_swingidx_mp_5gd_n_txpwrtrk_type8_8814a, + DELTA_SWINGIDX_SIZE * 3); +#endif +} + +/****************************************************************************** + * txpowertrack_type9.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE9 +const u8 delta_swingidx_mp_5gd_n_txpwrtrk_type9_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5gd_p_txpwrtrk_type9_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_5gc_n_txpwrtrk_type9_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5gc_p_txpwrtrk_type9_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_5gb_n_txpwrtrk_type9_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5gb_p_txpwrtrk_type9_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_5ga_n_txpwrtrk_type9_8814a[][D_S_SIZE] = { + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, +}; + +const u8 delta_swingidx_mp_5ga_p_txpwrtrk_type9_8814a[][D_S_SIZE] = { + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, +}; + +const u8 delta_swingidx_mp_2gd_n_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gd_p_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gc_n_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gc_p_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gb_n_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2gb_p_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2ga_n_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2ga_p_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, + 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +const u8 delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type9_8814a[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}; +#endif + +void +odm_read_and_config_mp_8814a_txpowertrack_type9(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE9 + +struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; + +PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8814a\n"); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, + (void *)delta_swingidx_mp_2ga_p_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, + (void *)delta_swingidx_mp_2ga_n_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, + (void *)delta_swingidx_mp_2gb_p_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, + (void *)delta_swingidx_mp_2gb_n_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_p, + (void *)delta_swingidx_mp_2gc_p_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gc_n, + (void *)delta_swingidx_mp_2gc_n_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_p, + (void *)delta_swingidx_mp_2gd_p_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2gd_n, + (void *)delta_swingidx_mp_2gd_n_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, + (void *)delta_swingidx_mp_2g_cck_a_p_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, + (void *)delta_swingidx_mp_2g_cck_a_n_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, + (void *)delta_swingidx_mp_2g_cck_b_p_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, + (void *)delta_swingidx_mp_2g_cck_b_n_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_p, + (void *)delta_swingidx_mp_2g_cck_c_p_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_c_n, + (void *)delta_swingidx_mp_2g_cck_c_n_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_p, + (void *)delta_swingidx_mp_2g_cck_d_p_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); +odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_d_n, + (void *)delta_swingidx_mp_2g_cck_d_n_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE); + +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, + (void *)delta_swingidx_mp_5ga_p_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, + (void *)delta_swingidx_mp_5ga_n_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, + (void *)delta_swingidx_mp_5gb_p_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, + (void *)delta_swingidx_mp_5gb_n_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_p, + (void *)delta_swingidx_mp_5gc_p_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gc_n, + (void *)delta_swingidx_mp_5gc_n_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_p, + (void *)delta_swingidx_mp_5gd_p_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE * 3); +odm_move_memory(dm, cali_info->delta_swing_table_idx_5gd_n, + (void *)delta_swingidx_mp_5gd_n_txpwrtrk_type9_8814a, + DELTA_SWINGIDX_SIZE * 3); +#endif +} + +/****************************************************************************** + * txpowertssi.TXT + ******************************************************************************/ + +const u8 g_delta_tssi_table_idx_mp_5gd_txpowertssi_8814a[][D_ST_SIZE] = { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 5, 6, 8, 8, 10, 13, 15, + 20, 22, 25, 28, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 4, 7, 9, 11, 11, 13, 15, 17, 23, + 23, 31, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 3, 5, 6, 7, 9, 10, 15, 15, 17, 20, 22, + 25, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +}; + +const u8 g_delta_tssi_table_idx_mp_5gc_txpowertssi_8814a[][D_ST_SIZE] = { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 6, 7, 9, 11, 13, 15, + 18, 19, 22, 24, 30, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 3, 5, 6, 8, 10, 11, 13, 15, 18, + 20, 23, 28, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 3, 4, 5, 7, 9, 11, 13, 14, 17, 19, 22, + 25, 27, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +}; + +const u8 g_delta_tssi_table_idx_mp_5gb_txpowertssi_8814a[][D_ST_SIZE] = { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 4, 5, 6, 7, 9, 11, 13, 15, 17, + 19, 22, 25, 27, 30, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 5, 6, 7, 9, 11, 13, 15, 17, 19, + 22, 25, 27, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 6, 7, 9, 11, 13, 15, 17, 19, 22, + 24, 27, 29, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +}; + +const u8 g_delta_tssi_table_idx_mp_5ga_txpowertssi_8814a[][D_ST_SIZE] = { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 4, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 15, + 16, 18, 19, 22, 24, 26, 28, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 14, 15, 17, + 18, 19, 21, 23, 26, 28, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 5, 5, 5, 6, 7, 8, 9, 9, 10, 12, 13, 14, 15, 17, + 20, 22, 24, 25, 29, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +}; + +const u8 g_delta_tssi_table_idx_mp_2gd_txpowertssi_8814a[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +const u8 g_delta_tssi_table_idx_mp_2gc_txpowertssi_8814a[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +const u8 g_delta_tssi_table_idx_mp_2gb_txpowertssi_8814a[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +const u8 g_delta_tssi_table_idx_mp_2ga_txpowertssi_8814a[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +const u8 g_delta_tssi_table_idx_mp_2g_cck_d_txpowertssi_8814a[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +const u8 g_delta_tssi_table_idx_mp_2g_cck_c_txpowertssi_8814a[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +const u8 g_delta_tssi_table_idx_mp_2g_cck_b_txpowertssi_8814a[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +const u8 g_delta_tssi_table_idx_mp_2g_cck_a_txpowertssi_8814a[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +void +odm_read_and_config_mp_8814a_txpowertssi(struct dm_struct *dm) +{ + struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8814a\n"); + + odm_move_memory(dm, cali_info->delta_swing_tssi_table_2ga, + (void *)g_delta_tssi_table_idx_mp_2ga_txpowertssi_8814a, + DELTA_SWINTSSI_SIZE); + odm_move_memory(dm, cali_info->delta_swing_tssi_table_2gb, + (void *)g_delta_tssi_table_idx_mp_2gb_txpowertssi_8814a, + DELTA_SWINTSSI_SIZE); + odm_move_memory(dm, cali_info->delta_swing_tssi_table_2gc, + (void *)g_delta_tssi_table_idx_mp_2gc_txpowertssi_8814a, + DELTA_SWINTSSI_SIZE); + odm_move_memory(dm, cali_info->delta_swing_tssi_table_2gd, + (void *)g_delta_tssi_table_idx_mp_2gd_txpowertssi_8814a, + DELTA_SWINTSSI_SIZE); + + odm_move_memory(dm, cali_info->delta_swing_tssi_table_2g_cck_a, + (void *)g_delta_tssi_table_idx_mp_2g_cck_a_txpowertssi_8814a, + DELTA_SWINTSSI_SIZE); + odm_move_memory(dm, cali_info->delta_swing_tssi_table_2g_cck_b, + (void *)g_delta_tssi_table_idx_mp_2g_cck_b_txpowertssi_8814a, + DELTA_SWINTSSI_SIZE); + odm_move_memory(dm, cali_info->delta_swing_tssi_table_2g_cck_c, + (void *)g_delta_tssi_table_idx_mp_2g_cck_c_txpowertssi_8814a, + DELTA_SWINTSSI_SIZE); + odm_move_memory(dm, cali_info->delta_swing_tssi_table_2g_cck_d, + (void *)g_delta_tssi_table_idx_mp_2g_cck_d_txpowertssi_8814a, + DELTA_SWINTSSI_SIZE); + + odm_move_memory(dm, cali_info->delta_swing_tssi_table_5ga, + (void *)g_delta_tssi_table_idx_mp_5ga_txpowertssi_8814a, + DELTA_SWINTSSI_SIZE); + odm_move_memory(dm, cali_info->delta_swing_tssi_table_5gb, + (void *)g_delta_tssi_table_idx_mp_5gb_txpowertssi_8814a, + DELTA_SWINTSSI_SIZE); + odm_move_memory(dm, cali_info->delta_swing_tssi_table_5gc, + (void *)g_delta_tssi_table_idx_mp_5gc_txpowertssi_8814a, + DELTA_SWINTSSI_SIZE); + odm_move_memory(dm, cali_info->delta_swing_tssi_table_5gd, + (void *)g_delta_tssi_table_idx_mp_5gd_txpowertssi_8814a, + DELTA_SWINTSSI_SIZE); +} + +/****************************************************************************** + * txpwr_lmt.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A +const char *array_mp_8814a_txpwr_lmt[] = { + "FCC", "2.4G", "20M", "CCK", "1T", "01", "36", + "ETSI", "2.4G", "20M", "CCK", "1T", "01", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "01", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "02", "36", + "ETSI", "2.4G", "20M", "CCK", "1T", "02", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "02", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "03", "36", + "ETSI", "2.4G", "20M", "CCK", "1T", "03", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "03", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "04", "36", + "ETSI", "2.4G", "20M", "CCK", "1T", "04", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "04", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "05", "36", + "ETSI", "2.4G", "20M", "CCK", "1T", "05", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "05", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "06", "36", + "ETSI", "2.4G", "20M", "CCK", "1T", "06", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "06", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "07", "36", + "ETSI", "2.4G", "20M", "CCK", "1T", "07", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "07", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "08", "36", + "ETSI", "2.4G", "20M", "CCK", "1T", "08", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "08", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "09", "36", + "ETSI", "2.4G", "20M", "CCK", "1T", "09", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "09", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "10", "36", + "ETSI", "2.4G", "20M", "CCK", "1T", "10", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "10", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "11", "36", + "ETSI", "2.4G", "20M", "CCK", "1T", "11", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "11", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "12", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "12", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "12", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "13", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "13", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "13", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "14", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", + "MKK", "2.4G", "20M", "CCK", "1T", "14", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "01", "34", + "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "01", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "02", "36", + "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "02", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "03", "36", + "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "03", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "04", "36", + "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "04", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "05", "36", + "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "05", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "06", "36", + "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "06", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "07", "36", + "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "07", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "08", "36", + "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "08", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "09", "36", + "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "09", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "10", "36", + "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "10", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "11", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "11", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "12", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "12", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "13", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "13", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63", + "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "1T", "01", "34", + "ETSI", "2.4G", "20M", "HT", "1T", "01", "32", + "MKK", "2.4G", "20M", "HT", "1T", "01", "32", + "FCC", "2.4G", "20M", "HT", "1T", "02", "36", + "ETSI", "2.4G", "20M", "HT", "1T", "02", "32", + "MKK", "2.4G", "20M", "HT", "1T", "02", "32", + "FCC", "2.4G", "20M", "HT", "1T", "03", "36", + "ETSI", "2.4G", "20M", "HT", "1T", "03", "32", + "MKK", "2.4G", "20M", "HT", "1T", "03", "32", + "FCC", "2.4G", "20M", "HT", "1T", "04", "36", + "ETSI", "2.4G", "20M", "HT", "1T", "04", "32", + "MKK", "2.4G", "20M", "HT", "1T", "04", "32", + "FCC", "2.4G", "20M", "HT", "1T", "05", "36", + "ETSI", "2.4G", "20M", "HT", "1T", "05", "32", + "MKK", "2.4G", "20M", "HT", "1T", "05", "32", + "FCC", "2.4G", "20M", "HT", "1T", "06", "36", + "ETSI", "2.4G", "20M", "HT", "1T", "06", "32", + "MKK", "2.4G", "20M", "HT", "1T", "06", "32", + "FCC", "2.4G", "20M", "HT", "1T", "07", "36", + "ETSI", "2.4G", "20M", "HT", "1T", "07", "32", + "MKK", "2.4G", "20M", "HT", "1T", "07", "32", + "FCC", "2.4G", "20M", "HT", "1T", "08", "36", + "ETSI", "2.4G", "20M", "HT", "1T", "08", "32", + "MKK", "2.4G", "20M", "HT", "1T", "08", "32", + "FCC", "2.4G", "20M", "HT", "1T", "09", "36", + "ETSI", "2.4G", "20M", "HT", "1T", "09", "32", + "MKK", "2.4G", "20M", "HT", "1T", "09", "32", + "FCC", "2.4G", "20M", "HT", "1T", "10", "36", + "ETSI", "2.4G", "20M", "HT", "1T", "10", "32", + "MKK", "2.4G", "20M", "HT", "1T", "10", "32", + "FCC", "2.4G", "20M", "HT", "1T", "11", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "11", "32", + "MKK", "2.4G", "20M", "HT", "1T", "11", "32", + "FCC", "2.4G", "20M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "12", "32", + "MKK", "2.4G", "20M", "HT", "1T", "12", "32", + "FCC", "2.4G", "20M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "13", "32", + "MKK", "2.4G", "20M", "HT", "1T", "13", "32", + "FCC", "2.4G", "20M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "14", "63", + "MKK", "2.4G", "20M", "HT", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "2T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "01", "30", + "MKK", "2.4G", "20M", "HT", "2T", "01", "30", + "FCC", "2.4G", "20M", "HT", "2T", "02", "34", + "ETSI", "2.4G", "20M", "HT", "2T", "02", "30", + "MKK", "2.4G", "20M", "HT", "2T", "02", "30", + "FCC", "2.4G", "20M", "HT", "2T", "03", "34", + "ETSI", "2.4G", "20M", "HT", "2T", "03", "30", + "MKK", "2.4G", "20M", "HT", "2T", "03", "30", + "FCC", "2.4G", "20M", "HT", "2T", "04", "34", + "ETSI", "2.4G", "20M", "HT", "2T", "04", "30", + "MKK", "2.4G", "20M", "HT", "2T", "04", "30", + "FCC", "2.4G", "20M", "HT", "2T", "05", "34", + "ETSI", "2.4G", "20M", "HT", "2T", "05", "30", + "MKK", "2.4G", "20M", "HT", "2T", "05", "30", + "FCC", "2.4G", "20M", "HT", "2T", "06", "34", + "ETSI", "2.4G", "20M", "HT", "2T", "06", "30", + "MKK", "2.4G", "20M", "HT", "2T", "06", "30", + "FCC", "2.4G", "20M", "HT", "2T", "07", "34", + "ETSI", "2.4G", "20M", "HT", "2T", "07", "30", + "MKK", "2.4G", "20M", "HT", "2T", "07", "30", + "FCC", "2.4G", "20M", "HT", "2T", "08", "34", + "ETSI", "2.4G", "20M", "HT", "2T", "08", "30", + "MKK", "2.4G", "20M", "HT", "2T", "08", "30", + "FCC", "2.4G", "20M", "HT", "2T", "09", "34", + "ETSI", "2.4G", "20M", "HT", "2T", "09", "30", + "MKK", "2.4G", "20M", "HT", "2T", "09", "30", + "FCC", "2.4G", "20M", "HT", "2T", "10", "34", + "ETSI", "2.4G", "20M", "HT", "2T", "10", "30", + "MKK", "2.4G", "20M", "HT", "2T", "10", "30", + "FCC", "2.4G", "20M", "HT", "2T", "11", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "11", "30", + "MKK", "2.4G", "20M", "HT", "2T", "11", "30", + "FCC", "2.4G", "20M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "12", "30", + "MKK", "2.4G", "20M", "HT", "2T", "12", "30", + "FCC", "2.4G", "20M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "13", "30", + "MKK", "2.4G", "20M", "HT", "2T", "13", "30", + "FCC", "2.4G", "20M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", + "MKK", "2.4G", "20M", "HT", "2T", "14", "63", + "FCC", "2.4G", "20M", "HT", "3T", "01", "30", + "ETSI", "2.4G", "20M", "HT", "3T", "01", "28", + "MKK", "2.4G", "20M", "HT", "3T", "01", "28", + "FCC", "2.4G", "20M", "HT", "3T", "02", "32", + "ETSI", "2.4G", "20M", "HT", "3T", "02", "28", + "MKK", "2.4G", "20M", "HT", "3T", "02", "28", + "FCC", "2.4G", "20M", "HT", "3T", "03", "32", + "ETSI", "2.4G", "20M", "HT", "3T", "03", "28", + "MKK", "2.4G", "20M", "HT", "3T", "03", "28", + "FCC", "2.4G", "20M", "HT", "3T", "04", "32", + "ETSI", "2.4G", "20M", "HT", "3T", "04", "28", + "MKK", "2.4G", "20M", "HT", "3T", "04", "28", + "FCC", "2.4G", "20M", "HT", "3T", "05", "32", + "ETSI", "2.4G", "20M", "HT", "3T", "05", "28", + "MKK", "2.4G", "20M", "HT", "3T", "05", "28", + "FCC", "2.4G", "20M", "HT", "3T", "06", "32", + "ETSI", "2.4G", "20M", "HT", "3T", "06", "28", + "MKK", "2.4G", "20M", "HT", "3T", "06", "28", + "FCC", "2.4G", "20M", "HT", "3T", "07", "32", + "ETSI", "2.4G", "20M", "HT", "3T", "07", "28", + "MKK", "2.4G", "20M", "HT", "3T", "07", "28", + "FCC", "2.4G", "20M", "HT", "3T", "08", "32", + "ETSI", "2.4G", "20M", "HT", "3T", "08", "28", + "MKK", "2.4G", "20M", "HT", "3T", "08", "28", + "FCC", "2.4G", "20M", "HT", "3T", "09", "32", + "ETSI", "2.4G", "20M", "HT", "3T", "09", "28", + "MKK", "2.4G", "20M", "HT", "3T", "09", "28", + "FCC", "2.4G", "20M", "HT", "3T", "10", "32", + "ETSI", "2.4G", "20M", "HT", "3T", "10", "28", + "MKK", "2.4G", "20M", "HT", "3T", "10", "28", + "FCC", "2.4G", "20M", "HT", "3T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "11", "28", + "MKK", "2.4G", "20M", "HT", "3T", "11", "28", + "FCC", "2.4G", "20M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "12", "28", + "MKK", "2.4G", "20M", "HT", "3T", "12", "28", + "FCC", "2.4G", "20M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "13", "28", + "MKK", "2.4G", "20M", "HT", "3T", "13", "28", + "FCC", "2.4G", "20M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "14", "63", + "MKK", "2.4G", "20M", "HT", "3T", "14", "63", + "FCC", "2.4G", "20M", "HT", "4T", "01", "28", + "ETSI", "2.4G", "20M", "HT", "4T", "01", "26", + "MKK", "2.4G", "20M", "HT", "4T", "01", "26", + "FCC", "2.4G", "20M", "HT", "4T", "02", "30", + "ETSI", "2.4G", "20M", "HT", "4T", "02", "26", + "MKK", "2.4G", "20M", "HT", "4T", "02", "26", + "FCC", "2.4G", "20M", "HT", "4T", "03", "30", + "ETSI", "2.4G", "20M", "HT", "4T", "03", "26", + "MKK", "2.4G", "20M", "HT", "4T", "03", "26", + "FCC", "2.4G", "20M", "HT", "4T", "04", "30", + "ETSI", "2.4G", "20M", "HT", "4T", "04", "26", + "MKK", "2.4G", "20M", "HT", "4T", "04", "26", + "FCC", "2.4G", "20M", "HT", "4T", "05", "30", + "ETSI", "2.4G", "20M", "HT", "4T", "05", "26", + "MKK", "2.4G", "20M", "HT", "4T", "05", "26", + "FCC", "2.4G", "20M", "HT", "4T", "06", "30", + "ETSI", "2.4G", "20M", "HT", "4T", "06", "26", + "MKK", "2.4G", "20M", "HT", "4T", "06", "26", + "FCC", "2.4G", "20M", "HT", "4T", "07", "30", + "ETSI", "2.4G", "20M", "HT", "4T", "07", "26", + "MKK", "2.4G", "20M", "HT", "4T", "07", "26", + "FCC", "2.4G", "20M", "HT", "4T", "08", "30", + "ETSI", "2.4G", "20M", "HT", "4T", "08", "26", + "MKK", "2.4G", "20M", "HT", "4T", "08", "26", + "FCC", "2.4G", "20M", "HT", "4T", "09", "30", + "ETSI", "2.4G", "20M", "HT", "4T", "09", "26", + "MKK", "2.4G", "20M", "HT", "4T", "09", "26", + "FCC", "2.4G", "20M", "HT", "4T", "10", "30", + "ETSI", "2.4G", "20M", "HT", "4T", "10", "26", + "MKK", "2.4G", "20M", "HT", "4T", "10", "26", + "FCC", "2.4G", "20M", "HT", "4T", "11", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "11", "26", + "MKK", "2.4G", "20M", "HT", "4T", "11", "26", + "FCC", "2.4G", "20M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "12", "26", + "MKK", "2.4G", "20M", "HT", "4T", "12", "26", + "FCC", "2.4G", "20M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "13", "26", + "MKK", "2.4G", "20M", "HT", "4T", "13", "26", + "FCC", "2.4G", "20M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "14", "63", + "MKK", "2.4G", "20M", "HT", "4T", "14", "63", + "FCC", "2.4G", "40M", "HT", "1T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "01", "63", + "MKK", "2.4G", "40M", "HT", "1T", "01", "63", + "FCC", "2.4G", "40M", "HT", "1T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "02", "63", + "MKK", "2.4G", "40M", "HT", "1T", "02", "63", + "FCC", "2.4G", "40M", "HT", "1T", "03", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "03", "32", + "MKK", "2.4G", "40M", "HT", "1T", "03", "32", + "FCC", "2.4G", "40M", "HT", "1T", "04", "36", + "ETSI", "2.4G", "40M", "HT", "1T", "04", "32", + "MKK", "2.4G", "40M", "HT", "1T", "04", "32", + "FCC", "2.4G", "40M", "HT", "1T", "05", "36", + "ETSI", "2.4G", "40M", "HT", "1T", "05", "32", + "MKK", "2.4G", "40M", "HT", "1T", "05", "32", + "FCC", "2.4G", "40M", "HT", "1T", "06", "36", + "ETSI", "2.4G", "40M", "HT", "1T", "06", "32", + "MKK", "2.4G", "40M", "HT", "1T", "06", "32", + "FCC", "2.4G", "40M", "HT", "1T", "07", "36", + "ETSI", "2.4G", "40M", "HT", "1T", "07", "32", + "MKK", "2.4G", "40M", "HT", "1T", "07", "32", + "FCC", "2.4G", "40M", "HT", "1T", "08", "36", + "ETSI", "2.4G", "40M", "HT", "1T", "08", "32", + "MKK", "2.4G", "40M", "HT", "1T", "08", "32", + "FCC", "2.4G", "40M", "HT", "1T", "09", "36", + "ETSI", "2.4G", "40M", "HT", "1T", "09", "32", + "MKK", "2.4G", "40M", "HT", "1T", "09", "32", + "FCC", "2.4G", "40M", "HT", "1T", "10", "36", + "ETSI", "2.4G", "40M", "HT", "1T", "10", "32", + "MKK", "2.4G", "40M", "HT", "1T", "10", "32", + "FCC", "2.4G", "40M", "HT", "1T", "11", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "11", "32", + "MKK", "2.4G", "40M", "HT", "1T", "11", "32", + "FCC", "2.4G", "40M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "12", "32", + "MKK", "2.4G", "40M", "HT", "1T", "12", "32", + "FCC", "2.4G", "40M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "13", "32", + "MKK", "2.4G", "40M", "HT", "1T", "13", "32", + "FCC", "2.4G", "40M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "14", "63", + "MKK", "2.4G", "40M", "HT", "1T", "14", "63", + "FCC", "2.4G", "40M", "HT", "2T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", + "MKK", "2.4G", "40M", "HT", "2T", "01", "63", + "FCC", "2.4G", "40M", "HT", "2T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "02", "63", + "MKK", "2.4G", "40M", "HT", "2T", "02", "63", + "FCC", "2.4G", "40M", "HT", "2T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "03", "30", + "MKK", "2.4G", "40M", "HT", "2T", "03", "30", + "FCC", "2.4G", "40M", "HT", "2T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "04", "30", + "MKK", "2.4G", "40M", "HT", "2T", "04", "30", + "FCC", "2.4G", "40M", "HT", "2T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "05", "30", + "MKK", "2.4G", "40M", "HT", "2T", "05", "30", + "FCC", "2.4G", "40M", "HT", "2T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "06", "30", + "MKK", "2.4G", "40M", "HT", "2T", "06", "30", + "FCC", "2.4G", "40M", "HT", "2T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "07", "30", + "MKK", "2.4G", "40M", "HT", "2T", "07", "30", + "FCC", "2.4G", "40M", "HT", "2T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "08", "30", + "MKK", "2.4G", "40M", "HT", "2T", "08", "30", + "FCC", "2.4G", "40M", "HT", "2T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "09", "30", + "MKK", "2.4G", "40M", "HT", "2T", "09", "30", + "FCC", "2.4G", "40M", "HT", "2T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "10", "30", + "MKK", "2.4G", "40M", "HT", "2T", "10", "30", + "FCC", "2.4G", "40M", "HT", "2T", "11", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "11", "30", + "MKK", "2.4G", "40M", "HT", "2T", "11", "30", + "FCC", "2.4G", "40M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "12", "30", + "MKK", "2.4G", "40M", "HT", "2T", "12", "30", + "FCC", "2.4G", "40M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "13", "30", + "MKK", "2.4G", "40M", "HT", "2T", "13", "30", + "FCC", "2.4G", "40M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "14", "63", + "MKK", "2.4G", "40M", "HT", "2T", "14", "63", + "FCC", "2.4G", "40M", "HT", "3T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "01", "63", + "MKK", "2.4G", "40M", "HT", "3T", "01", "63", + "FCC", "2.4G", "40M", "HT", "3T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "02", "63", + "MKK", "2.4G", "40M", "HT", "3T", "02", "63", + "FCC", "2.4G", "40M", "HT", "3T", "03", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "03", "28", + "MKK", "2.4G", "40M", "HT", "3T", "03", "28", + "FCC", "2.4G", "40M", "HT", "3T", "04", "32", + "ETSI", "2.4G", "40M", "HT", "3T", "04", "28", + "MKK", "2.4G", "40M", "HT", "3T", "04", "28", + "FCC", "2.4G", "40M", "HT", "3T", "05", "32", + "ETSI", "2.4G", "40M", "HT", "3T", "05", "28", + "MKK", "2.4G", "40M", "HT", "3T", "05", "28", + "FCC", "2.4G", "40M", "HT", "3T", "06", "32", + "ETSI", "2.4G", "40M", "HT", "3T", "06", "28", + "MKK", "2.4G", "40M", "HT", "3T", "06", "28", + "FCC", "2.4G", "40M", "HT", "3T", "07", "32", + "ETSI", "2.4G", "40M", "HT", "3T", "07", "28", + "MKK", "2.4G", "40M", "HT", "3T", "07", "28", + "FCC", "2.4G", "40M", "HT", "3T", "08", "32", + "ETSI", "2.4G", "40M", "HT", "3T", "08", "28", + "MKK", "2.4G", "40M", "HT", "3T", "08", "28", + "FCC", "2.4G", "40M", "HT", "3T", "09", "32", + "ETSI", "2.4G", "40M", "HT", "3T", "09", "28", + "MKK", "2.4G", "40M", "HT", "3T", "09", "28", + "FCC", "2.4G", "40M", "HT", "3T", "10", "32", + "ETSI", "2.4G", "40M", "HT", "3T", "10", "28", + "MKK", "2.4G", "40M", "HT", "3T", "10", "28", + "FCC", "2.4G", "40M", "HT", "3T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "11", "28", + "MKK", "2.4G", "40M", "HT", "3T", "11", "28", + "FCC", "2.4G", "40M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "12", "28", + "MKK", "2.4G", "40M", "HT", "3T", "12", "28", + "FCC", "2.4G", "40M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "13", "28", + "MKK", "2.4G", "40M", "HT", "3T", "13", "28", + "FCC", "2.4G", "40M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "14", "63", + "MKK", "2.4G", "40M", "HT", "3T", "14", "63", + "FCC", "2.4G", "40M", "HT", "4T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "01", "63", + "MKK", "2.4G", "40M", "HT", "4T", "01", "63", + "FCC", "2.4G", "40M", "HT", "4T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "02", "63", + "MKK", "2.4G", "40M", "HT", "4T", "02", "63", + "FCC", "2.4G", "40M", "HT", "4T", "03", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "03", "26", + "MKK", "2.4G", "40M", "HT", "4T", "03", "26", + "FCC", "2.4G", "40M", "HT", "4T", "04", "30", + "ETSI", "2.4G", "40M", "HT", "4T", "04", "26", + "MKK", "2.4G", "40M", "HT", "4T", "04", "26", + "FCC", "2.4G", "40M", "HT", "4T", "05", "30", + "ETSI", "2.4G", "40M", "HT", "4T", "05", "26", + "MKK", "2.4G", "40M", "HT", "4T", "05", "26", + "FCC", "2.4G", "40M", "HT", "4T", "06", "30", + "ETSI", "2.4G", "40M", "HT", "4T", "06", "26", + "MKK", "2.4G", "40M", "HT", "4T", "06", "26", + "FCC", "2.4G", "40M", "HT", "4T", "07", "30", + "ETSI", "2.4G", "40M", "HT", "4T", "07", "26", + "MKK", "2.4G", "40M", "HT", "4T", "07", "26", + "FCC", "2.4G", "40M", "HT", "4T", "08", "30", + "ETSI", "2.4G", "40M", "HT", "4T", "08", "26", + "MKK", "2.4G", "40M", "HT", "4T", "08", "26", + "FCC", "2.4G", "40M", "HT", "4T", "09", "30", + "ETSI", "2.4G", "40M", "HT", "4T", "09", "26", + "MKK", "2.4G", "40M", "HT", "4T", "09", "26", + "FCC", "2.4G", "40M", "HT", "4T", "10", "30", + "ETSI", "2.4G", "40M", "HT", "4T", "10", "26", + "MKK", "2.4G", "40M", "HT", "4T", "10", "26", + "FCC", "2.4G", "40M", "HT", "4T", "11", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "11", "26", + "MKK", "2.4G", "40M", "HT", "4T", "11", "26", + "FCC", "2.4G", "40M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "12", "26", + "MKK", "2.4G", "40M", "HT", "4T", "12", "26", + "FCC", "2.4G", "40M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "13", "26", + "MKK", "2.4G", "40M", "HT", "4T", "13", "26", + "FCC", "2.4G", "40M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "14", "63", + "MKK", "2.4G", "40M", "HT", "4T", "14", "63", + "FCC", "5G", "20M", "OFDM", "1T", "36", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "36", "32", + "MKK", "5G", "20M", "OFDM", "1T", "36", "32", + "FCC", "5G", "20M", "OFDM", "1T", "40", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "40", "32", + "MKK", "5G", "20M", "OFDM", "1T", "40", "32", + "FCC", "5G", "20M", "OFDM", "1T", "44", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "44", "32", + "MKK", "5G", "20M", "OFDM", "1T", "44", "32", + "FCC", "5G", "20M", "OFDM", "1T", "48", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "48", "32", + "MKK", "5G", "20M", "OFDM", "1T", "48", "32", + "FCC", "5G", "20M", "OFDM", "1T", "52", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "52", "32", + "MKK", "5G", "20M", "OFDM", "1T", "52", "32", + "FCC", "5G", "20M", "OFDM", "1T", "56", "34", + "ETSI", "5G", "20M", "OFDM", "1T", "56", "32", + "MKK", "5G", "20M", "OFDM", "1T", "56", "32", + "FCC", "5G", "20M", "OFDM", "1T", "60", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "60", "32", + "MKK", "5G", "20M", "OFDM", "1T", "60", "32", + "FCC", "5G", "20M", "OFDM", "1T", "64", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "64", "32", + "MKK", "5G", "20M", "OFDM", "1T", "64", "32", + "FCC", "5G", "20M", "OFDM", "1T", "100", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "100", "32", + "MKK", "5G", "20M", "OFDM", "1T", "100", "32", + "FCC", "5G", "20M", "OFDM", "1T", "104", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "104", "32", + "MKK", "5G", "20M", "OFDM", "1T", "104", "32", + "FCC", "5G", "20M", "OFDM", "1T", "108", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "108", "32", + "MKK", "5G", "20M", "OFDM", "1T", "108", "32", + "FCC", "5G", "20M", "OFDM", "1T", "112", "34", + "ETSI", "5G", "20M", "OFDM", "1T", "112", "32", + "MKK", "5G", "20M", "OFDM", "1T", "112", "32", + "FCC", "5G", "20M", "OFDM", "1T", "116", "34", + "ETSI", "5G", "20M", "OFDM", "1T", "116", "32", + "MKK", "5G", "20M", "OFDM", "1T", "116", "32", + "FCC", "5G", "20M", "OFDM", "1T", "120", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "120", "32", + "MKK", "5G", "20M", "OFDM", "1T", "120", "32", + "FCC", "5G", "20M", "OFDM", "1T", "124", "34", + "ETSI", "5G", "20M", "OFDM", "1T", "124", "32", + "MKK", "5G", "20M", "OFDM", "1T", "124", "32", + "FCC", "5G", "20M", "OFDM", "1T", "128", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "128", "32", + "MKK", "5G", "20M", "OFDM", "1T", "128", "32", + "FCC", "5G", "20M", "OFDM", "1T", "132", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "132", "32", + "MKK", "5G", "20M", "OFDM", "1T", "132", "32", + "FCC", "5G", "20M", "OFDM", "1T", "136", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "136", "32", + "MKK", "5G", "20M", "OFDM", "1T", "136", "32", + "FCC", "5G", "20M", "OFDM", "1T", "140", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "140", "32", + "MKK", "5G", "20M", "OFDM", "1T", "140", "32", + "FCC", "5G", "20M", "OFDM", "1T", "149", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "149", "32", + "MKK", "5G", "20M", "OFDM", "1T", "149", "63", + "FCC", "5G", "20M", "OFDM", "1T", "153", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "153", "32", + "MKK", "5G", "20M", "OFDM", "1T", "153", "63", + "FCC", "5G", "20M", "OFDM", "1T", "157", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "157", "32", + "MKK", "5G", "20M", "OFDM", "1T", "157", "63", + "FCC", "5G", "20M", "OFDM", "1T", "161", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "161", "32", + "MKK", "5G", "20M", "OFDM", "1T", "161", "63", + "FCC", "5G", "20M", "OFDM", "1T", "165", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "165", "32", + "MKK", "5G", "20M", "OFDM", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "1T", "36", "30", + "ETSI", "5G", "20M", "HT", "1T", "36", "32", + "MKK", "5G", "20M", "HT", "1T", "36", "32", + "FCC", "5G", "20M", "HT", "1T", "40", "30", + "ETSI", "5G", "20M", "HT", "1T", "40", "32", + "MKK", "5G", "20M", "HT", "1T", "40", "32", + "FCC", "5G", "20M", "HT", "1T", "44", "30", + "ETSI", "5G", "20M", "HT", "1T", "44", "32", + "MKK", "5G", "20M", "HT", "1T", "44", "32", + "FCC", "5G", "20M", "HT", "1T", "48", "30", + "ETSI", "5G", "20M", "HT", "1T", "48", "32", + "MKK", "5G", "20M", "HT", "1T", "48", "32", + "FCC", "5G", "20M", "HT", "1T", "52", "36", + "ETSI", "5G", "20M", "HT", "1T", "52", "32", + "MKK", "5G", "20M", "HT", "1T", "52", "32", + "FCC", "5G", "20M", "HT", "1T", "56", "34", + "ETSI", "5G", "20M", "HT", "1T", "56", "32", + "MKK", "5G", "20M", "HT", "1T", "56", "32", + "FCC", "5G", "20M", "HT", "1T", "60", "32", + "ETSI", "5G", "20M", "HT", "1T", "60", "32", + "MKK", "5G", "20M", "HT", "1T", "60", "32", + "FCC", "5G", "20M", "HT", "1T", "64", "28", + "ETSI", "5G", "20M", "HT", "1T", "64", "32", + "MKK", "5G", "20M", "HT", "1T", "64", "32", + "FCC", "5G", "20M", "HT", "1T", "100", "30", + "ETSI", "5G", "20M", "HT", "1T", "100", "32", + "MKK", "5G", "20M", "HT", "1T", "100", "32", + "FCC", "5G", "20M", "HT", "1T", "104", "30", + "ETSI", "5G", "20M", "HT", "1T", "104", "32", + "MKK", "5G", "20M", "HT", "1T", "104", "32", + "FCC", "5G", "20M", "HT", "1T", "108", "32", + "ETSI", "5G", "20M", "HT", "1T", "108", "32", + "MKK", "5G", "20M", "HT", "1T", "108", "32", + "FCC", "5G", "20M", "HT", "1T", "112", "34", + "ETSI", "5G", "20M", "HT", "1T", "112", "32", + "MKK", "5G", "20M", "HT", "1T", "112", "32", + "FCC", "5G", "20M", "HT", "1T", "116", "34", + "ETSI", "5G", "20M", "HT", "1T", "116", "32", + "MKK", "5G", "20M", "HT", "1T", "116", "32", + "FCC", "5G", "20M", "HT", "1T", "120", "36", + "ETSI", "5G", "20M", "HT", "1T", "120", "32", + "MKK", "5G", "20M", "HT", "1T", "120", "32", + "FCC", "5G", "20M", "HT", "1T", "124", "34", + "ETSI", "5G", "20M", "HT", "1T", "124", "32", + "MKK", "5G", "20M", "HT", "1T", "124", "32", + "FCC", "5G", "20M", "HT", "1T", "128", "32", + "ETSI", "5G", "20M", "HT", "1T", "128", "32", + "MKK", "5G", "20M", "HT", "1T", "128", "32", + "FCC", "5G", "20M", "HT", "1T", "132", "30", + "ETSI", "5G", "20M", "HT", "1T", "132", "32", + "MKK", "5G", "20M", "HT", "1T", "132", "32", + "FCC", "5G", "20M", "HT", "1T", "136", "30", + "ETSI", "5G", "20M", "HT", "1T", "136", "32", + "MKK", "5G", "20M", "HT", "1T", "136", "32", + "FCC", "5G", "20M", "HT", "1T", "140", "28", + "ETSI", "5G", "20M", "HT", "1T", "140", "32", + "MKK", "5G", "20M", "HT", "1T", "140", "32", + "FCC", "5G", "20M", "HT", "1T", "149", "36", + "ETSI", "5G", "20M", "HT", "1T", "149", "32", + "MKK", "5G", "20M", "HT", "1T", "149", "63", + "FCC", "5G", "20M", "HT", "1T", "153", "36", + "ETSI", "5G", "20M", "HT", "1T", "153", "32", + "MKK", "5G", "20M", "HT", "1T", "153", "63", + "FCC", "5G", "20M", "HT", "1T", "157", "36", + "ETSI", "5G", "20M", "HT", "1T", "157", "32", + "MKK", "5G", "20M", "HT", "1T", "157", "63", + "FCC", "5G", "20M", "HT", "1T", "161", "36", + "ETSI", "5G", "20M", "HT", "1T", "161", "32", + "MKK", "5G", "20M", "HT", "1T", "161", "63", + "FCC", "5G", "20M", "HT", "1T", "165", "36", + "ETSI", "5G", "20M", "HT", "1T", "165", "32", + "MKK", "5G", "20M", "HT", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "2T", "36", "28", + "ETSI", "5G", "20M", "HT", "2T", "36", "30", + "MKK", "5G", "20M", "HT", "2T", "36", "30", + "FCC", "5G", "20M", "HT", "2T", "40", "28", + "ETSI", "5G", "20M", "HT", "2T", "40", "30", + "MKK", "5G", "20M", "HT", "2T", "40", "30", + "FCC", "5G", "20M", "HT", "2T", "44", "28", + "ETSI", "5G", "20M", "HT", "2T", "44", "30", + "MKK", "5G", "20M", "HT", "2T", "44", "30", + "FCC", "5G", "20M", "HT", "2T", "48", "28", + "ETSI", "5G", "20M", "HT", "2T", "48", "30", + "MKK", "5G", "20M", "HT", "2T", "48", "30", + "FCC", "5G", "20M", "HT", "2T", "52", "34", + "ETSI", "5G", "20M", "HT", "2T", "52", "30", + "MKK", "5G", "20M", "HT", "2T", "52", "30", + "FCC", "5G", "20M", "HT", "2T", "56", "32", + "ETSI", "5G", "20M", "HT", "2T", "56", "30", + "MKK", "5G", "20M", "HT", "2T", "56", "30", + "FCC", "5G", "20M", "HT", "2T", "60", "30", + "ETSI", "5G", "20M", "HT", "2T", "60", "30", + "MKK", "5G", "20M", "HT", "2T", "60", "30", + "FCC", "5G", "20M", "HT", "2T", "64", "26", + "ETSI", "5G", "20M", "HT", "2T", "64", "30", + "MKK", "5G", "20M", "HT", "2T", "64", "30", + "FCC", "5G", "20M", "HT", "2T", "100", "28", + "ETSI", "5G", "20M", "HT", "2T", "100", "30", + "MKK", "5G", "20M", "HT", "2T", "100", "30", + "FCC", "5G", "20M", "HT", "2T", "104", "28", + "ETSI", "5G", "20M", "HT", "2T", "104", "30", + "MKK", "5G", "20M", "HT", "2T", "104", "30", + "FCC", "5G", "20M", "HT", "2T", "108", "30", + "ETSI", "5G", "20M", "HT", "2T", "108", "30", + "MKK", "5G", "20M", "HT", "2T", "108", "30", + "FCC", "5G", "20M", "HT", "2T", "112", "32", + "ETSI", "5G", "20M", "HT", "2T", "112", "30", + "MKK", "5G", "20M", "HT", "2T", "112", "30", + "FCC", "5G", "20M", "HT", "2T", "116", "32", + "ETSI", "5G", "20M", "HT", "2T", "116", "30", + "MKK", "5G", "20M", "HT", "2T", "116", "30", + "FCC", "5G", "20M", "HT", "2T", "120", "34", + "ETSI", "5G", "20M", "HT", "2T", "120", "30", + "MKK", "5G", "20M", "HT", "2T", "120", "30", + "FCC", "5G", "20M", "HT", "2T", "124", "32", + "ETSI", "5G", "20M", "HT", "2T", "124", "30", + "MKK", "5G", "20M", "HT", "2T", "124", "30", + "FCC", "5G", "20M", "HT", "2T", "128", "30", + "ETSI", "5G", "20M", "HT", "2T", "128", "30", + "MKK", "5G", "20M", "HT", "2T", "128", "30", + "FCC", "5G", "20M", "HT", "2T", "132", "28", + "ETSI", "5G", "20M", "HT", "2T", "132", "30", + "MKK", "5G", "20M", "HT", "2T", "132", "30", + "FCC", "5G", "20M", "HT", "2T", "136", "28", + "ETSI", "5G", "20M", "HT", "2T", "136", "30", + "MKK", "5G", "20M", "HT", "2T", "136", "30", + "FCC", "5G", "20M", "HT", "2T", "140", "26", + "ETSI", "5G", "20M", "HT", "2T", "140", "30", + "MKK", "5G", "20M", "HT", "2T", "140", "30", + "FCC", "5G", "20M", "HT", "2T", "149", "34", + "ETSI", "5G", "20M", "HT", "2T", "149", "30", + "MKK", "5G", "20M", "HT", "2T", "149", "63", + "FCC", "5G", "20M", "HT", "2T", "153", "34", + "ETSI", "5G", "20M", "HT", "2T", "153", "30", + "MKK", "5G", "20M", "HT", "2T", "153", "63", + "FCC", "5G", "20M", "HT", "2T", "157", "34", + "ETSI", "5G", "20M", "HT", "2T", "157", "30", + "MKK", "5G", "20M", "HT", "2T", "157", "63", + "FCC", "5G", "20M", "HT", "2T", "161", "34", + "ETSI", "5G", "20M", "HT", "2T", "161", "30", + "MKK", "5G", "20M", "HT", "2T", "161", "63", + "FCC", "5G", "20M", "HT", "2T", "165", "34", + "ETSI", "5G", "20M", "HT", "2T", "165", "30", + "MKK", "5G", "20M", "HT", "2T", "165", "63", + "FCC", "5G", "20M", "HT", "3T", "36", "26", + "ETSI", "5G", "20M", "HT", "3T", "36", "28", + "MKK", "5G", "20M", "HT", "3T", "36", "28", + "FCC", "5G", "20M", "HT", "3T", "40", "26", + "ETSI", "5G", "20M", "HT", "3T", "40", "28", + "MKK", "5G", "20M", "HT", "3T", "40", "28", + "FCC", "5G", "20M", "HT", "3T", "44", "26", + "ETSI", "5G", "20M", "HT", "3T", "44", "28", + "MKK", "5G", "20M", "HT", "3T", "44", "28", + "FCC", "5G", "20M", "HT", "3T", "48", "26", + "ETSI", "5G", "20M", "HT", "3T", "48", "28", + "MKK", "5G", "20M", "HT", "3T", "48", "28", + "FCC", "5G", "20M", "HT", "3T", "52", "32", + "ETSI", "5G", "20M", "HT", "3T", "52", "28", + "MKK", "5G", "20M", "HT", "3T", "52", "28", + "FCC", "5G", "20M", "HT", "3T", "56", "30", + "ETSI", "5G", "20M", "HT", "3T", "56", "28", + "MKK", "5G", "20M", "HT", "3T", "56", "28", + "FCC", "5G", "20M", "HT", "3T", "60", "28", + "ETSI", "5G", "20M", "HT", "3T", "60", "28", + "MKK", "5G", "20M", "HT", "3T", "60", "28", + "FCC", "5G", "20M", "HT", "3T", "64", "24", + "ETSI", "5G", "20M", "HT", "3T", "64", "28", + "MKK", "5G", "20M", "HT", "3T", "64", "28", + "FCC", "5G", "20M", "HT", "3T", "100", "26", + "ETSI", "5G", "20M", "HT", "3T", "100", "28", + "MKK", "5G", "20M", "HT", "3T", "100", "28", + "FCC", "5G", "20M", "HT", "3T", "104", "26", + "ETSI", "5G", "20M", "HT", "3T", "104", "28", + "MKK", "5G", "20M", "HT", "3T", "104", "28", + "FCC", "5G", "20M", "HT", "3T", "108", "28", + "ETSI", "5G", "20M", "HT", "3T", "108", "28", + "MKK", "5G", "20M", "HT", "3T", "108", "28", + "FCC", "5G", "20M", "HT", "3T", "112", "30", + "ETSI", "5G", "20M", "HT", "3T", "112", "28", + "MKK", "5G", "20M", "HT", "3T", "112", "28", + "FCC", "5G", "20M", "HT", "3T", "116", "30", + "ETSI", "5G", "20M", "HT", "3T", "116", "28", + "MKK", "5G", "20M", "HT", "3T", "116", "28", + "FCC", "5G", "20M", "HT", "3T", "120", "32", + "ETSI", "5G", "20M", "HT", "3T", "120", "28", + "MKK", "5G", "20M", "HT", "3T", "120", "28", + "FCC", "5G", "20M", "HT", "3T", "124", "30", + "ETSI", "5G", "20M", "HT", "3T", "124", "28", + "MKK", "5G", "20M", "HT", "3T", "124", "28", + "FCC", "5G", "20M", "HT", "3T", "128", "28", + "ETSI", "5G", "20M", "HT", "3T", "128", "28", + "MKK", "5G", "20M", "HT", "3T", "128", "28", + "FCC", "5G", "20M", "HT", "3T", "132", "26", + "ETSI", "5G", "20M", "HT", "3T", "132", "28", + "MKK", "5G", "20M", "HT", "3T", "132", "28", + "FCC", "5G", "20M", "HT", "3T", "136", "26", + "ETSI", "5G", "20M", "HT", "3T", "136", "28", + "MKK", "5G", "20M", "HT", "3T", "136", "28", + "FCC", "5G", "20M", "HT", "3T", "140", "24", + "ETSI", "5G", "20M", "HT", "3T", "140", "28", + "MKK", "5G", "20M", "HT", "3T", "140", "28", + "FCC", "5G", "20M", "HT", "3T", "149", "32", + "ETSI", "5G", "20M", "HT", "3T", "149", "28", + "MKK", "5G", "20M", "HT", "3T", "149", "63", + "FCC", "5G", "20M", "HT", "3T", "153", "32", + "ETSI", "5G", "20M", "HT", "3T", "153", "28", + "MKK", "5G", "20M", "HT", "3T", "153", "63", + "FCC", "5G", "20M", "HT", "3T", "157", "32", + "ETSI", "5G", "20M", "HT", "3T", "157", "28", + "MKK", "5G", "20M", "HT", "3T", "157", "63", + "FCC", "5G", "20M", "HT", "3T", "161", "32", + "ETSI", "5G", "20M", "HT", "3T", "161", "28", + "MKK", "5G", "20M", "HT", "3T", "161", "63", + "FCC", "5G", "20M", "HT", "3T", "165", "32", + "ETSI", "5G", "20M", "HT", "3T", "165", "28", + "MKK", "5G", "20M", "HT", "3T", "165", "63", + "FCC", "5G", "20M", "HT", "4T", "36", "24", + "ETSI", "5G", "20M", "HT", "4T", "36", "26", + "MKK", "5G", "20M", "HT", "4T", "36", "26", + "FCC", "5G", "20M", "HT", "4T", "40", "24", + "ETSI", "5G", "20M", "HT", "4T", "40", "26", + "MKK", "5G", "20M", "HT", "4T", "40", "26", + "FCC", "5G", "20M", "HT", "4T", "44", "24", + "ETSI", "5G", "20M", "HT", "4T", "44", "26", + "MKK", "5G", "20M", "HT", "4T", "44", "26", + "FCC", "5G", "20M", "HT", "4T", "48", "24", + "ETSI", "5G", "20M", "HT", "4T", "48", "26", + "MKK", "5G", "20M", "HT", "4T", "48", "26", + "FCC", "5G", "20M", "HT", "4T", "52", "30", + "ETSI", "5G", "20M", "HT", "4T", "52", "26", + "MKK", "5G", "20M", "HT", "4T", "52", "26", + "FCC", "5G", "20M", "HT", "4T", "56", "28", + "ETSI", "5G", "20M", "HT", "4T", "56", "26", + "MKK", "5G", "20M", "HT", "4T", "56", "26", + "FCC", "5G", "20M", "HT", "4T", "60", "26", + "ETSI", "5G", "20M", "HT", "4T", "60", "26", + "MKK", "5G", "20M", "HT", "4T", "60", "26", + "FCC", "5G", "20M", "HT", "4T", "64", "22", + "ETSI", "5G", "20M", "HT", "4T", "64", "26", + "MKK", "5G", "20M", "HT", "4T", "64", "26", + "FCC", "5G", "20M", "HT", "4T", "100", "24", + "ETSI", "5G", "20M", "HT", "4T", "100", "26", + "MKK", "5G", "20M", "HT", "4T", "100", "26", + "FCC", "5G", "20M", "HT", "4T", "104", "24", + "ETSI", "5G", "20M", "HT", "4T", "104", "26", + "MKK", "5G", "20M", "HT", "4T", "104", "26", + "FCC", "5G", "20M", "HT", "4T", "108", "26", + "ETSI", "5G", "20M", "HT", "4T", "108", "26", + "MKK", "5G", "20M", "HT", "4T", "108", "26", + "FCC", "5G", "20M", "HT", "4T", "112", "28", + "ETSI", "5G", "20M", "HT", "4T", "112", "26", + "MKK", "5G", "20M", "HT", "4T", "112", "26", + "FCC", "5G", "20M", "HT", "4T", "116", "28", + "ETSI", "5G", "20M", "HT", "4T", "116", "26", + "MKK", "5G", "20M", "HT", "4T", "116", "26", + "FCC", "5G", "20M", "HT", "4T", "120", "30", + "ETSI", "5G", "20M", "HT", "4T", "120", "26", + "MKK", "5G", "20M", "HT", "4T", "120", "26", + "FCC", "5G", "20M", "HT", "4T", "124", "28", + "ETSI", "5G", "20M", "HT", "4T", "124", "26", + "MKK", "5G", "20M", "HT", "4T", "124", "26", + "FCC", "5G", "20M", "HT", "4T", "128", "26", + "ETSI", "5G", "20M", "HT", "4T", "128", "26", + "MKK", "5G", "20M", "HT", "4T", "128", "26", + "FCC", "5G", "20M", "HT", "4T", "132", "24", + "ETSI", "5G", "20M", "HT", "4T", "132", "26", + "MKK", "5G", "20M", "HT", "4T", "132", "26", + "FCC", "5G", "20M", "HT", "4T", "136", "24", + "ETSI", "5G", "20M", "HT", "4T", "136", "26", + "MKK", "5G", "20M", "HT", "4T", "136", "26", + "FCC", "5G", "20M", "HT", "4T", "140", "22", + "ETSI", "5G", "20M", "HT", "4T", "140", "26", + "MKK", "5G", "20M", "HT", "4T", "140", "26", + "FCC", "5G", "20M", "HT", "4T", "149", "30", + "ETSI", "5G", "20M", "HT", "4T", "149", "26", + "MKK", "5G", "20M", "HT", "4T", "149", "63", + "FCC", "5G", "20M", "HT", "4T", "153", "30", + "ETSI", "5G", "20M", "HT", "4T", "153", "26", + "MKK", "5G", "20M", "HT", "4T", "153", "63", + "FCC", "5G", "20M", "HT", "4T", "157", "30", + "ETSI", "5G", "20M", "HT", "4T", "157", "26", + "MKK", "5G", "20M", "HT", "4T", "157", "63", + "FCC", "5G", "20M", "HT", "4T", "161", "30", + "ETSI", "5G", "20M", "HT", "4T", "161", "26", + "MKK", "5G", "20M", "HT", "4T", "161", "63", + "FCC", "5G", "20M", "HT", "4T", "165", "30", + "ETSI", "5G", "20M", "HT", "4T", "165", "26", + "MKK", "5G", "20M", "HT", "4T", "165", "63", + "FCC", "5G", "40M", "HT", "1T", "38", "30", + "ETSI", "5G", "40M", "HT", "1T", "38", "32", + "MKK", "5G", "40M", "HT", "1T", "38", "32", + "FCC", "5G", "40M", "HT", "1T", "46", "30", + "ETSI", "5G", "40M", "HT", "1T", "46", "32", + "MKK", "5G", "40M", "HT", "1T", "46", "32", + "FCC", "5G", "40M", "HT", "1T", "54", "32", + "ETSI", "5G", "40M", "HT", "1T", "54", "32", + "MKK", "5G", "40M", "HT", "1T", "54", "32", + "FCC", "5G", "40M", "HT", "1T", "62", "32", + "ETSI", "5G", "40M", "HT", "1T", "62", "32", + "MKK", "5G", "40M", "HT", "1T", "62", "32", + "FCC", "5G", "40M", "HT", "1T", "102", "28", + "ETSI", "5G", "40M", "HT", "1T", "102", "32", + "MKK", "5G", "40M", "HT", "1T", "102", "32", + "FCC", "5G", "40M", "HT", "1T", "110", "32", + "ETSI", "5G", "40M", "HT", "1T", "110", "32", + "MKK", "5G", "40M", "HT", "1T", "110", "32", + "FCC", "5G", "40M", "HT", "1T", "118", "36", + "ETSI", "5G", "40M", "HT", "1T", "118", "32", + "MKK", "5G", "40M", "HT", "1T", "118", "32", + "FCC", "5G", "40M", "HT", "1T", "126", "34", + "ETSI", "5G", "40M", "HT", "1T", "126", "32", + "MKK", "5G", "40M", "HT", "1T", "126", "32", + "FCC", "5G", "40M", "HT", "1T", "134", "32", + "ETSI", "5G", "40M", "HT", "1T", "134", "32", + "MKK", "5G", "40M", "HT", "1T", "134", "32", + "FCC", "5G", "40M", "HT", "1T", "151", "36", + "ETSI", "5G", "40M", "HT", "1T", "151", "32", + "MKK", "5G", "40M", "HT", "1T", "151", "63", + "FCC", "5G", "40M", "HT", "1T", "159", "36", + "ETSI", "5G", "40M", "HT", "1T", "159", "32", + "MKK", "5G", "40M", "HT", "1T", "159", "63", + "FCC", "5G", "40M", "HT", "2T", "38", "28", + "ETSI", "5G", "40M", "HT", "2T", "38", "30", + "MKK", "5G", "40M", "HT", "2T", "38", "30", + "FCC", "5G", "40M", "HT", "2T", "46", "28", + "ETSI", "5G", "40M", "HT", "2T", "46", "30", + "MKK", "5G", "40M", "HT", "2T", "46", "30", + "FCC", "5G", "40M", "HT", "2T", "54", "30", + "ETSI", "5G", "40M", "HT", "2T", "54", "30", + "MKK", "5G", "40M", "HT", "2T", "54", "30", + "FCC", "5G", "40M", "HT", "2T", "62", "30", + "ETSI", "5G", "40M", "HT", "2T", "62", "30", + "MKK", "5G", "40M", "HT", "2T", "62", "30", + "FCC", "5G", "40M", "HT", "2T", "102", "26", + "ETSI", "5G", "40M", "HT", "2T", "102", "30", + "MKK", "5G", "40M", "HT", "2T", "102", "30", + "FCC", "5G", "40M", "HT", "2T", "110", "30", + "ETSI", "5G", "40M", "HT", "2T", "110", "30", + "MKK", "5G", "40M", "HT", "2T", "110", "30", + "FCC", "5G", "40M", "HT", "2T", "118", "34", + "ETSI", "5G", "40M", "HT", "2T", "118", "30", + "MKK", "5G", "40M", "HT", "2T", "118", "30", + "FCC", "5G", "40M", "HT", "2T", "126", "32", + "ETSI", "5G", "40M", "HT", "2T", "126", "30", + "MKK", "5G", "40M", "HT", "2T", "126", "30", + "FCC", "5G", "40M", "HT", "2T", "134", "30", + "ETSI", "5G", "40M", "HT", "2T", "134", "30", + "MKK", "5G", "40M", "HT", "2T", "134", "30", + "FCC", "5G", "40M", "HT", "2T", "151", "34", + "ETSI", "5G", "40M", "HT", "2T", "151", "30", + "MKK", "5G", "40M", "HT", "2T", "151", "63", + "FCC", "5G", "40M", "HT", "2T", "159", "34", + "ETSI", "5G", "40M", "HT", "2T", "159", "30", + "MKK", "5G", "40M", "HT", "2T", "159", "63", + "FCC", "5G", "40M", "HT", "3T", "38", "26", + "ETSI", "5G", "40M", "HT", "3T", "38", "28", + "MKK", "5G", "40M", "HT", "3T", "38", "28", + "FCC", "5G", "40M", "HT", "3T", "46", "26", + "ETSI", "5G", "40M", "HT", "3T", "46", "28", + "MKK", "5G", "40M", "HT", "3T", "46", "28", + "FCC", "5G", "40M", "HT", "3T", "54", "28", + "ETSI", "5G", "40M", "HT", "3T", "54", "28", + "MKK", "5G", "40M", "HT", "3T", "54", "28", + "FCC", "5G", "40M", "HT", "3T", "62", "28", + "ETSI", "5G", "40M", "HT", "3T", "62", "28", + "MKK", "5G", "40M", "HT", "3T", "62", "28", + "FCC", "5G", "40M", "HT", "3T", "102", "24", + "ETSI", "5G", "40M", "HT", "3T", "102", "28", + "MKK", "5G", "40M", "HT", "3T", "102", "28", + "FCC", "5G", "40M", "HT", "3T", "110", "28", + "ETSI", "5G", "40M", "HT", "3T", "110", "28", + "MKK", "5G", "40M", "HT", "3T", "110", "28", + "FCC", "5G", "40M", "HT", "3T", "118", "32", + "ETSI", "5G", "40M", "HT", "3T", "118", "28", + "MKK", "5G", "40M", "HT", "3T", "118", "28", + "FCC", "5G", "40M", "HT", "3T", "126", "30", + "ETSI", "5G", "40M", "HT", "3T", "126", "28", + "MKK", "5G", "40M", "HT", "3T", "126", "28", + "FCC", "5G", "40M", "HT", "3T", "134", "28", + "ETSI", "5G", "40M", "HT", "3T", "134", "28", + "MKK", "5G", "40M", "HT", "3T", "134", "28", + "FCC", "5G", "40M", "HT", "3T", "151", "32", + "ETSI", "5G", "40M", "HT", "3T", "151", "28", + "MKK", "5G", "40M", "HT", "3T", "151", "63", + "FCC", "5G", "40M", "HT", "3T", "159", "32", + "ETSI", "5G", "40M", "HT", "3T", "159", "28", + "MKK", "5G", "40M", "HT", "3T", "159", "63", + "FCC", "5G", "40M", "HT", "4T", "38", "24", + "ETSI", "5G", "40M", "HT", "4T", "38", "26", + "MKK", "5G", "40M", "HT", "4T", "38", "26", + "FCC", "5G", "40M", "HT", "4T", "46", "24", + "ETSI", "5G", "40M", "HT", "4T", "46", "26", + "MKK", "5G", "40M", "HT", "4T", "46", "26", + "FCC", "5G", "40M", "HT", "4T", "54", "26", + "ETSI", "5G", "40M", "HT", "4T", "54", "26", + "MKK", "5G", "40M", "HT", "4T", "54", "26", + "FCC", "5G", "40M", "HT", "4T", "62", "26", + "ETSI", "5G", "40M", "HT", "4T", "62", "26", + "MKK", "5G", "40M", "HT", "4T", "62", "26", + "FCC", "5G", "40M", "HT", "4T", "102", "22", + "ETSI", "5G", "40M", "HT", "4T", "102", "26", + "MKK", "5G", "40M", "HT", "4T", "102", "26", + "FCC", "5G", "40M", "HT", "4T", "110", "26", + "ETSI", "5G", "40M", "HT", "4T", "110", "26", + "MKK", "5G", "40M", "HT", "4T", "110", "26", + "FCC", "5G", "40M", "HT", "4T", "118", "30", + "ETSI", "5G", "40M", "HT", "4T", "118", "26", + "MKK", "5G", "40M", "HT", "4T", "118", "26", + "FCC", "5G", "40M", "HT", "4T", "126", "28", + "ETSI", "5G", "40M", "HT", "4T", "126", "26", + "MKK", "5G", "40M", "HT", "4T", "126", "26", + "FCC", "5G", "40M", "HT", "4T", "134", "26", + "ETSI", "5G", "40M", "HT", "4T", "134", "26", + "MKK", "5G", "40M", "HT", "4T", "134", "26", + "FCC", "5G", "40M", "HT", "4T", "151", "30", + "ETSI", "5G", "40M", "HT", "4T", "151", "26", + "MKK", "5G", "40M", "HT", "4T", "151", "63", + "FCC", "5G", "40M", "HT", "4T", "159", "30", + "ETSI", "5G", "40M", "HT", "4T", "159", "26", + "MKK", "5G", "40M", "HT", "4T", "159", "63", + "FCC", "5G", "80M", "VHT", "1T", "42", "30", + "ETSI", "5G", "80M", "VHT", "1T", "42", "32", + "MKK", "5G", "80M", "VHT", "1T", "42", "32", + "FCC", "5G", "80M", "VHT", "1T", "58", "28", + "ETSI", "5G", "80M", "VHT", "1T", "58", "32", + "MKK", "5G", "80M", "VHT", "1T", "58", "32", + "FCC", "5G", "80M", "VHT", "1T", "106", "30", + "ETSI", "5G", "80M", "VHT", "1T", "106", "32", + "MKK", "5G", "80M", "VHT", "1T", "106", "32", + "FCC", "5G", "80M", "VHT", "1T", "122", "34", + "ETSI", "5G", "80M", "VHT", "1T", "122", "32", + "MKK", "5G", "80M", "VHT", "1T", "122", "32", + "FCC", "5G", "80M", "VHT", "1T", "155", "36", + "ETSI", "5G", "80M", "VHT", "1T", "155", "32", + "MKK", "5G", "80M", "VHT", "1T", "155", "63", + "FCC", "5G", "80M", "VHT", "2T", "42", "28", + "ETSI", "5G", "80M", "VHT", "2T", "42", "30", + "MKK", "5G", "80M", "VHT", "2T", "42", "30", + "FCC", "5G", "80M", "VHT", "2T", "58", "26", + "ETSI", "5G", "80M", "VHT", "2T", "58", "30", + "MKK", "5G", "80M", "VHT", "2T", "58", "30", + "FCC", "5G", "80M", "VHT", "2T", "106", "28", + "ETSI", "5G", "80M", "VHT", "2T", "106", "30", + "MKK", "5G", "80M", "VHT", "2T", "106", "30", + "FCC", "5G", "80M", "VHT", "2T", "122", "32", + "ETSI", "5G", "80M", "VHT", "2T", "122", "30", + "MKK", "5G", "80M", "VHT", "2T", "122", "30", + "FCC", "5G", "80M", "VHT", "2T", "155", "34", + "ETSI", "5G", "80M", "VHT", "2T", "155", "30", + "MKK", "5G", "80M", "VHT", "2T", "155", "63", + "FCC", "5G", "80M", "VHT", "3T", "42", "26", + "ETSI", "5G", "80M", "VHT", "3T", "42", "28", + "MKK", "5G", "80M", "VHT", "3T", "42", "28", + "FCC", "5G", "80M", "VHT", "3T", "58", "24", + "ETSI", "5G", "80M", "VHT", "3T", "58", "28", + "MKK", "5G", "80M", "VHT", "3T", "58", "28", + "FCC", "5G", "80M", "VHT", "3T", "106", "26", + "ETSI", "5G", "80M", "VHT", "3T", "106", "28", + "MKK", "5G", "80M", "VHT", "3T", "106", "28", + "FCC", "5G", "80M", "VHT", "3T", "122", "30", + "ETSI", "5G", "80M", "VHT", "3T", "122", "28", + "MKK", "5G", "80M", "VHT", "3T", "122", "28", + "FCC", "5G", "80M", "VHT", "3T", "155", "32", + "ETSI", "5G", "80M", "VHT", "3T", "155", "28", + "MKK", "5G", "80M", "VHT", "3T", "155", "63", + "FCC", "5G", "80M", "VHT", "4T", "42", "24", + "ETSI", "5G", "80M", "VHT", "4T", "42", "26", + "MKK", "5G", "80M", "VHT", "4T", "42", "26", + "FCC", "5G", "80M", "VHT", "4T", "58", "22", + "ETSI", "5G", "80M", "VHT", "4T", "58", "26", + "MKK", "5G", "80M", "VHT", "4T", "58", "26", + "FCC", "5G", "80M", "VHT", "4T", "106", "24", + "ETSI", "5G", "80M", "VHT", "4T", "106", "26", + "MKK", "5G", "80M", "VHT", "4T", "106", "26", + "FCC", "5G", "80M", "VHT", "4T", "122", "28", + "ETSI", "5G", "80M", "VHT", "4T", "122", "26", + "MKK", "5G", "80M", "VHT", "4T", "122", "26", + "FCC", "5G", "80M", "VHT", "4T", "155", "30", + "ETSI", "5G", "80M", "VHT", "4T", "155", "26", + "MKK", "5G", "80M", "VHT", "4T", "155", "63" +}; +#endif + +void +odm_read_and_config_mp_8814a_txpwr_lmt(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A + + u32 i = 0; +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt) / sizeof(u8); + u8 *array = (u8 *)array_mp_8814a_txpwr_lmt; +#else + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt) / sizeof(u8 *); + u8 **array = (u8 **)array_mp_8814a_txpwr_lmt; +#endif + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrLmt, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrLmt = array_len / 7; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + for (i = 0; i < array_len; i += 7) { +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u8 regulation = array[i]; + u8 band = array[i + 1]; + u8 bandwidth = array[i + 2]; + u8 rate = array[i + 3]; + u8 rf_path = array[i + 4]; + u8 chnl = array[i + 5]; + u8 val = array[i + 6]; +#else + u8 *regulation = array[i]; + u8 *band = array[i + 1]; + u8 *bandwidth = array[i + 2]; + u8 *rate = array[i + 3]; + u8 *rf_path = array[i + 4]; + u8 *chnl = array[i + 5]; + u8 *val = array[i + 6]; +#endif + + odm_config_bb_txpwr_lmt_8814a(dm, regulation, band, bandwidth, + rate, rf_path, chnl, val); +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrLmt[i / 7], 100, "\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\",", + regulation, band, bandwidth, rate, rf_path, chnl, val); +#endif + } + +#endif +} + +/****************************************************************************** + * txpwr_lmt_type0.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE0 +const char *array_mp_8814a_txpwr_lmt_type0[] = { + "FCC", "2.4G", "20M", "CCK", "1T", "01", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "01", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "01", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "02", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "02", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "02", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "03", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "03", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "03", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "04", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "04", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "04", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "05", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "05", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "05", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "06", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "06", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "06", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "07", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "07", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "07", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "08", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "08", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "08", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "09", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "09", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "09", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "10", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "10", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "10", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "11", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "11", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "11", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "12", "24", + "ETSI", "2.4G", "20M", "CCK", "1T", "12", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "12", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "13", "16", + "ETSI", "2.4G", "20M", "CCK", "1T", "13", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "13", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "14", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", + "MKK", "2.4G", "20M", "CCK", "1T", "14", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "01", "28", + "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "01", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "02", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "02", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "03", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "03", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "04", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "04", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "05", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "05", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "06", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "06", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "07", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "07", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "08", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "08", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "09", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "09", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "10", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "10", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "11", "28", + "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "11", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "12", "18", + "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "12", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "13", "8", + "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "13", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63", + "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "1T", "01", "26", + "ETSI", "2.4G", "20M", "HT", "1T", "01", "32", + "MKK", "2.4G", "20M", "HT", "1T", "01", "32", + "FCC", "2.4G", "20M", "HT", "1T", "02", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "02", "32", + "MKK", "2.4G", "20M", "HT", "1T", "02", "32", + "FCC", "2.4G", "20M", "HT", "1T", "03", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "03", "32", + "MKK", "2.4G", "20M", "HT", "1T", "03", "32", + "FCC", "2.4G", "20M", "HT", "1T", "04", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "04", "32", + "MKK", "2.4G", "20M", "HT", "1T", "04", "32", + "FCC", "2.4G", "20M", "HT", "1T", "05", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "05", "32", + "MKK", "2.4G", "20M", "HT", "1T", "05", "32", + "FCC", "2.4G", "20M", "HT", "1T", "06", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "06", "32", + "MKK", "2.4G", "20M", "HT", "1T", "06", "32", + "FCC", "2.4G", "20M", "HT", "1T", "07", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "07", "32", + "MKK", "2.4G", "20M", "HT", "1T", "07", "32", + "FCC", "2.4G", "20M", "HT", "1T", "08", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "08", "32", + "MKK", "2.4G", "20M", "HT", "1T", "08", "32", + "FCC", "2.4G", "20M", "HT", "1T", "09", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "09", "32", + "MKK", "2.4G", "20M", "HT", "1T", "09", "32", + "FCC", "2.4G", "20M", "HT", "1T", "10", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "10", "32", + "MKK", "2.4G", "20M", "HT", "1T", "10", "32", + "FCC", "2.4G", "20M", "HT", "1T", "11", "26", + "ETSI", "2.4G", "20M", "HT", "1T", "11", "32", + "MKK", "2.4G", "20M", "HT", "1T", "11", "32", + "FCC", "2.4G", "20M", "HT", "1T", "12", "16", + "ETSI", "2.4G", "20M", "HT", "1T", "12", "32", + "MKK", "2.4G", "20M", "HT", "1T", "12", "32", + "FCC", "2.4G", "20M", "HT", "1T", "13", "6", + "ETSI", "2.4G", "20M", "HT", "1T", "13", "32", + "MKK", "2.4G", "20M", "HT", "1T", "13", "32", + "FCC", "2.4G", "20M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "14", "63", + "MKK", "2.4G", "20M", "HT", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "2T", "01", "24", + "ETSI", "2.4G", "20M", "HT", "2T", "01", "30", + "MKK", "2.4G", "20M", "HT", "2T", "01", "30", + "FCC", "2.4G", "20M", "HT", "2T", "02", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "02", "30", + "MKK", "2.4G", "20M", "HT", "2T", "02", "30", + "FCC", "2.4G", "20M", "HT", "2T", "03", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "03", "30", + "MKK", "2.4G", "20M", "HT", "2T", "03", "30", + "FCC", "2.4G", "20M", "HT", "2T", "04", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "04", "30", + "MKK", "2.4G", "20M", "HT", "2T", "04", "30", + "FCC", "2.4G", "20M", "HT", "2T", "05", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "05", "30", + "MKK", "2.4G", "20M", "HT", "2T", "05", "30", + "FCC", "2.4G", "20M", "HT", "2T", "06", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "06", "30", + "MKK", "2.4G", "20M", "HT", "2T", "06", "30", + "FCC", "2.4G", "20M", "HT", "2T", "07", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "07", "30", + "MKK", "2.4G", "20M", "HT", "2T", "07", "30", + "FCC", "2.4G", "20M", "HT", "2T", "08", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "08", "30", + "MKK", "2.4G", "20M", "HT", "2T", "08", "30", + "FCC", "2.4G", "20M", "HT", "2T", "09", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "09", "30", + "MKK", "2.4G", "20M", "HT", "2T", "09", "30", + "FCC", "2.4G", "20M", "HT", "2T", "10", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "10", "30", + "MKK", "2.4G", "20M", "HT", "2T", "10", "30", + "FCC", "2.4G", "20M", "HT", "2T", "11", "24", + "ETSI", "2.4G", "20M", "HT", "2T", "11", "30", + "MKK", "2.4G", "20M", "HT", "2T", "11", "30", + "FCC", "2.4G", "20M", "HT", "2T", "12", "14", + "ETSI", "2.4G", "20M", "HT", "2T", "12", "30", + "MKK", "2.4G", "20M", "HT", "2T", "12", "30", + "FCC", "2.4G", "20M", "HT", "2T", "13", "4", + "ETSI", "2.4G", "20M", "HT", "2T", "13", "30", + "MKK", "2.4G", "20M", "HT", "2T", "13", "30", + "FCC", "2.4G", "20M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", + "MKK", "2.4G", "20M", "HT", "2T", "14", "63", + "FCC", "2.4G", "20M", "HT", "3T", "01", "22", + "ETSI", "2.4G", "20M", "HT", "3T", "01", "28", + "MKK", "2.4G", "20M", "HT", "3T", "01", "28", + "FCC", "2.4G", "20M", "HT", "3T", "02", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "02", "28", + "MKK", "2.4G", "20M", "HT", "3T", "02", "28", + "FCC", "2.4G", "20M", "HT", "3T", "03", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "03", "28", + "MKK", "2.4G", "20M", "HT", "3T", "03", "28", + "FCC", "2.4G", "20M", "HT", "3T", "04", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "04", "28", + "MKK", "2.4G", "20M", "HT", "3T", "04", "28", + "FCC", "2.4G", "20M", "HT", "3T", "05", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "05", "28", + "MKK", "2.4G", "20M", "HT", "3T", "05", "28", + "FCC", "2.4G", "20M", "HT", "3T", "06", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "06", "28", + "MKK", "2.4G", "20M", "HT", "3T", "06", "28", + "FCC", "2.4G", "20M", "HT", "3T", "07", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "07", "28", + "MKK", "2.4G", "20M", "HT", "3T", "07", "28", + "FCC", "2.4G", "20M", "HT", "3T", "08", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "08", "28", + "MKK", "2.4G", "20M", "HT", "3T", "08", "28", + "FCC", "2.4G", "20M", "HT", "3T", "09", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "09", "28", + "MKK", "2.4G", "20M", "HT", "3T", "09", "28", + "FCC", "2.4G", "20M", "HT", "3T", "10", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "10", "28", + "MKK", "2.4G", "20M", "HT", "3T", "10", "28", + "FCC", "2.4G", "20M", "HT", "3T", "11", "22", + "ETSI", "2.4G", "20M", "HT", "3T", "11", "28", + "MKK", "2.4G", "20M", "HT", "3T", "11", "28", + "FCC", "2.4G", "20M", "HT", "3T", "12", "14", + "ETSI", "2.4G", "20M", "HT", "3T", "12", "28", + "MKK", "2.4G", "20M", "HT", "3T", "12", "28", + "FCC", "2.4G", "20M", "HT", "3T", "13", "4", + "ETSI", "2.4G", "20M", "HT", "3T", "13", "28", + "MKK", "2.4G", "20M", "HT", "3T", "13", "28", + "FCC", "2.4G", "20M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "14", "63", + "MKK", "2.4G", "20M", "HT", "3T", "14", "63", + "FCC", "2.4G", "20M", "HT", "4T", "01", "20", + "ETSI", "2.4G", "20M", "HT", "4T", "01", "26", + "MKK", "2.4G", "20M", "HT", "4T", "01", "26", + "FCC", "2.4G", "20M", "HT", "4T", "02", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "02", "26", + "MKK", "2.4G", "20M", "HT", "4T", "02", "26", + "FCC", "2.4G", "20M", "HT", "4T", "03", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "03", "26", + "MKK", "2.4G", "20M", "HT", "4T", "03", "26", + "FCC", "2.4G", "20M", "HT", "4T", "04", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "04", "26", + "MKK", "2.4G", "20M", "HT", "4T", "04", "26", + "FCC", "2.4G", "20M", "HT", "4T", "05", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "05", "26", + "MKK", "2.4G", "20M", "HT", "4T", "05", "26", + "FCC", "2.4G", "20M", "HT", "4T", "06", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "06", "26", + "MKK", "2.4G", "20M", "HT", "4T", "06", "26", + "FCC", "2.4G", "20M", "HT", "4T", "07", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "07", "26", + "MKK", "2.4G", "20M", "HT", "4T", "07", "26", + "FCC", "2.4G", "20M", "HT", "4T", "08", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "08", "26", + "MKK", "2.4G", "20M", "HT", "4T", "08", "26", + "FCC", "2.4G", "20M", "HT", "4T", "09", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "09", "26", + "MKK", "2.4G", "20M", "HT", "4T", "09", "26", + "FCC", "2.4G", "20M", "HT", "4T", "10", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "10", "26", + "MKK", "2.4G", "20M", "HT", "4T", "10", "26", + "FCC", "2.4G", "20M", "HT", "4T", "11", "20", + "ETSI", "2.4G", "20M", "HT", "4T", "11", "26", + "MKK", "2.4G", "20M", "HT", "4T", "11", "26", + "FCC", "2.4G", "20M", "HT", "4T", "12", "14", + "ETSI", "2.4G", "20M", "HT", "4T", "12", "26", + "MKK", "2.4G", "20M", "HT", "4T", "12", "26", + "FCC", "2.4G", "20M", "HT", "4T", "13", "4", + "ETSI", "2.4G", "20M", "HT", "4T", "13", "26", + "MKK", "2.4G", "20M", "HT", "4T", "13", "26", + "FCC", "2.4G", "20M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "14", "63", + "MKK", "2.4G", "20M", "HT", "4T", "14", "63", + "FCC", "2.4G", "40M", "HT", "1T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "01", "63", + "MKK", "2.4G", "40M", "HT", "1T", "01", "63", + "FCC", "2.4G", "40M", "HT", "1T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "02", "63", + "MKK", "2.4G", "40M", "HT", "1T", "02", "63", + "FCC", "2.4G", "40M", "HT", "1T", "03", "26", + "ETSI", "2.4G", "40M", "HT", "1T", "03", "32", + "MKK", "2.4G", "40M", "HT", "1T", "03", "32", + "FCC", "2.4G", "40M", "HT", "1T", "04", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "04", "32", + "MKK", "2.4G", "40M", "HT", "1T", "04", "32", + "FCC", "2.4G", "40M", "HT", "1T", "05", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "05", "32", + "MKK", "2.4G", "40M", "HT", "1T", "05", "32", + "FCC", "2.4G", "40M", "HT", "1T", "06", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "06", "32", + "MKK", "2.4G", "40M", "HT", "1T", "06", "32", + "FCC", "2.4G", "40M", "HT", "1T", "07", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "07", "32", + "MKK", "2.4G", "40M", "HT", "1T", "07", "32", + "FCC", "2.4G", "40M", "HT", "1T", "08", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "08", "32", + "MKK", "2.4G", "40M", "HT", "1T", "08", "32", + "FCC", "2.4G", "40M", "HT", "1T", "09", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "09", "32", + "MKK", "2.4G", "40M", "HT", "1T", "09", "32", + "FCC", "2.4G", "40M", "HT", "1T", "10", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "10", "32", + "MKK", "2.4G", "40M", "HT", "1T", "10", "32", + "FCC", "2.4G", "40M", "HT", "1T", "11", "26", + "ETSI", "2.4G", "40M", "HT", "1T", "11", "32", + "MKK", "2.4G", "40M", "HT", "1T", "11", "32", + "FCC", "2.4G", "40M", "HT", "1T", "12", "16", + "ETSI", "2.4G", "40M", "HT", "1T", "12", "32", + "MKK", "2.4G", "40M", "HT", "1T", "12", "32", + "FCC", "2.4G", "40M", "HT", "1T", "13", "10", + "ETSI", "2.4G", "40M", "HT", "1T", "13", "32", + "MKK", "2.4G", "40M", "HT", "1T", "13", "32", + "FCC", "2.4G", "40M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "14", "63", + "MKK", "2.4G", "40M", "HT", "1T", "14", "63", + "FCC", "2.4G", "40M", "HT", "2T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", + "MKK", "2.4G", "40M", "HT", "2T", "01", "63", + "FCC", "2.4G", "40M", "HT", "2T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "02", "63", + "MKK", "2.4G", "40M", "HT", "2T", "02", "63", + "FCC", "2.4G", "40M", "HT", "2T", "03", "24", + "ETSI", "2.4G", "40M", "HT", "2T", "03", "30", + "MKK", "2.4G", "40M", "HT", "2T", "03", "30", + "FCC", "2.4G", "40M", "HT", "2T", "04", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "04", "30", + "MKK", "2.4G", "40M", "HT", "2T", "04", "30", + "FCC", "2.4G", "40M", "HT", "2T", "05", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "05", "30", + "MKK", "2.4G", "40M", "HT", "2T", "05", "30", + "FCC", "2.4G", "40M", "HT", "2T", "06", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "06", "30", + "MKK", "2.4G", "40M", "HT", "2T", "06", "30", + "FCC", "2.4G", "40M", "HT", "2T", "07", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "07", "30", + "MKK", "2.4G", "40M", "HT", "2T", "07", "30", + "FCC", "2.4G", "40M", "HT", "2T", "08", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "08", "30", + "MKK", "2.4G", "40M", "HT", "2T", "08", "30", + "FCC", "2.4G", "40M", "HT", "2T", "09", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "09", "30", + "MKK", "2.4G", "40M", "HT", "2T", "09", "30", + "FCC", "2.4G", "40M", "HT", "2T", "10", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "10", "30", + "MKK", "2.4G", "40M", "HT", "2T", "10", "30", + "FCC", "2.4G", "40M", "HT", "2T", "11", "24", + "ETSI", "2.4G", "40M", "HT", "2T", "11", "30", + "MKK", "2.4G", "40M", "HT", "2T", "11", "30", + "FCC", "2.4G", "40M", "HT", "2T", "12", "14", + "ETSI", "2.4G", "40M", "HT", "2T", "12", "30", + "MKK", "2.4G", "40M", "HT", "2T", "12", "30", + "FCC", "2.4G", "40M", "HT", "2T", "13", "8", + "ETSI", "2.4G", "40M", "HT", "2T", "13", "30", + "MKK", "2.4G", "40M", "HT", "2T", "13", "30", + "FCC", "2.4G", "40M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "14", "63", + "MKK", "2.4G", "40M", "HT", "2T", "14", "63", + "FCC", "2.4G", "40M", "HT", "3T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "01", "63", + "MKK", "2.4G", "40M", "HT", "3T", "01", "63", + "FCC", "2.4G", "40M", "HT", "3T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "02", "63", + "MKK", "2.4G", "40M", "HT", "3T", "02", "63", + "FCC", "2.4G", "40M", "HT", "3T", "03", "22", + "ETSI", "2.4G", "40M", "HT", "3T", "03", "28", + "MKK", "2.4G", "40M", "HT", "3T", "03", "28", + "FCC", "2.4G", "40M", "HT", "3T", "04", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "04", "28", + "MKK", "2.4G", "40M", "HT", "3T", "04", "28", + "FCC", "2.4G", "40M", "HT", "3T", "05", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "05", "28", + "MKK", "2.4G", "40M", "HT", "3T", "05", "28", + "FCC", "2.4G", "40M", "HT", "3T", "06", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "06", "28", + "MKK", "2.4G", "40M", "HT", "3T", "06", "28", + "FCC", "2.4G", "40M", "HT", "3T", "07", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "07", "28", + "MKK", "2.4G", "40M", "HT", "3T", "07", "28", + "FCC", "2.4G", "40M", "HT", "3T", "08", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "08", "28", + "MKK", "2.4G", "40M", "HT", "3T", "08", "28", + "FCC", "2.4G", "40M", "HT", "3T", "09", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "09", "28", + "MKK", "2.4G", "40M", "HT", "3T", "09", "28", + "FCC", "2.4G", "40M", "HT", "3T", "10", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "10", "28", + "MKK", "2.4G", "40M", "HT", "3T", "10", "28", + "FCC", "2.4G", "40M", "HT", "3T", "11", "22", + "ETSI", "2.4G", "40M", "HT", "3T", "11", "28", + "MKK", "2.4G", "40M", "HT", "3T", "11", "28", + "FCC", "2.4G", "40M", "HT", "3T", "12", "14", + "ETSI", "2.4G", "40M", "HT", "3T", "12", "28", + "MKK", "2.4G", "40M", "HT", "3T", "12", "28", + "FCC", "2.4G", "40M", "HT", "3T", "13", "8", + "ETSI", "2.4G", "40M", "HT", "3T", "13", "28", + "MKK", "2.4G", "40M", "HT", "3T", "13", "28", + "FCC", "2.4G", "40M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "14", "63", + "MKK", "2.4G", "40M", "HT", "3T", "14", "63", + "FCC", "2.4G", "40M", "HT", "4T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "01", "63", + "MKK", "2.4G", "40M", "HT", "4T", "01", "63", + "FCC", "2.4G", "40M", "HT", "4T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "02", "63", + "MKK", "2.4G", "40M", "HT", "4T", "02", "63", + "FCC", "2.4G", "40M", "HT", "4T", "03", "20", + "ETSI", "2.4G", "40M", "HT", "4T", "03", "26", + "MKK", "2.4G", "40M", "HT", "4T", "03", "26", + "FCC", "2.4G", "40M", "HT", "4T", "04", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "04", "26", + "MKK", "2.4G", "40M", "HT", "4T", "04", "26", + "FCC", "2.4G", "40M", "HT", "4T", "05", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "05", "26", + "MKK", "2.4G", "40M", "HT", "4T", "05", "26", + "FCC", "2.4G", "40M", "HT", "4T", "06", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "06", "26", + "MKK", "2.4G", "40M", "HT", "4T", "06", "26", + "FCC", "2.4G", "40M", "HT", "4T", "07", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "07", "26", + "MKK", "2.4G", "40M", "HT", "4T", "07", "26", + "FCC", "2.4G", "40M", "HT", "4T", "08", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "08", "26", + "MKK", "2.4G", "40M", "HT", "4T", "08", "26", + "FCC", "2.4G", "40M", "HT", "4T", "09", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "09", "26", + "MKK", "2.4G", "40M", "HT", "4T", "09", "26", + "FCC", "2.4G", "40M", "HT", "4T", "10", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "10", "26", + "MKK", "2.4G", "40M", "HT", "4T", "10", "26", + "FCC", "2.4G", "40M", "HT", "4T", "11", "20", + "ETSI", "2.4G", "40M", "HT", "4T", "11", "26", + "MKK", "2.4G", "40M", "HT", "4T", "11", "26", + "FCC", "2.4G", "40M", "HT", "4T", "12", "14", + "ETSI", "2.4G", "40M", "HT", "4T", "12", "26", + "MKK", "2.4G", "40M", "HT", "4T", "12", "26", + "FCC", "2.4G", "40M", "HT", "4T", "13", "8", + "ETSI", "2.4G", "40M", "HT", "4T", "13", "26", + "MKK", "2.4G", "40M", "HT", "4T", "13", "26", + "FCC", "2.4G", "40M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "14", "63", + "MKK", "2.4G", "40M", "HT", "4T", "14", "63", + "FCC", "5G", "20M", "OFDM", "1T", "36", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "36", "32", + "MKK", "5G", "20M", "OFDM", "1T", "36", "32", + "FCC", "5G", "20M", "OFDM", "1T", "40", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "40", "32", + "MKK", "5G", "20M", "OFDM", "1T", "40", "32", + "FCC", "5G", "20M", "OFDM", "1T", "44", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "44", "32", + "MKK", "5G", "20M", "OFDM", "1T", "44", "32", + "FCC", "5G", "20M", "OFDM", "1T", "48", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "48", "32", + "MKK", "5G", "20M", "OFDM", "1T", "48", "32", + "FCC", "5G", "20M", "OFDM", "1T", "52", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "52", "32", + "MKK", "5G", "20M", "OFDM", "1T", "52", "32", + "FCC", "5G", "20M", "OFDM", "1T", "56", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "56", "32", + "MKK", "5G", "20M", "OFDM", "1T", "56", "32", + "FCC", "5G", "20M", "OFDM", "1T", "60", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "60", "32", + "MKK", "5G", "20M", "OFDM", "1T", "60", "32", + "FCC", "5G", "20M", "OFDM", "1T", "64", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "64", "32", + "MKK", "5G", "20M", "OFDM", "1T", "64", "32", + "FCC", "5G", "20M", "OFDM", "1T", "100", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "100", "32", + "MKK", "5G", "20M", "OFDM", "1T", "100", "32", + "FCC", "5G", "20M", "OFDM", "1T", "104", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "104", "32", + "MKK", "5G", "20M", "OFDM", "1T", "104", "32", + "FCC", "5G", "20M", "OFDM", "1T", "108", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "108", "32", + "MKK", "5G", "20M", "OFDM", "1T", "108", "32", + "FCC", "5G", "20M", "OFDM", "1T", "112", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "112", "32", + "MKK", "5G", "20M", "OFDM", "1T", "112", "32", + "FCC", "5G", "20M", "OFDM", "1T", "116", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "116", "32", + "MKK", "5G", "20M", "OFDM", "1T", "116", "32", + "FCC", "5G", "20M", "OFDM", "1T", "120", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "120", "32", + "MKK", "5G", "20M", "OFDM", "1T", "120", "32", + "FCC", "5G", "20M", "OFDM", "1T", "124", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "124", "32", + "MKK", "5G", "20M", "OFDM", "1T", "124", "32", + "FCC", "5G", "20M", "OFDM", "1T", "128", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "128", "32", + "MKK", "5G", "20M", "OFDM", "1T", "128", "32", + "FCC", "5G", "20M", "OFDM", "1T", "132", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "132", "32", + "MKK", "5G", "20M", "OFDM", "1T", "132", "32", + "FCC", "5G", "20M", "OFDM", "1T", "136", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "136", "32", + "MKK", "5G", "20M", "OFDM", "1T", "136", "32", + "FCC", "5G", "20M", "OFDM", "1T", "140", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "140", "32", + "MKK", "5G", "20M", "OFDM", "1T", "140", "32", + "FCC", "5G", "20M", "OFDM", "1T", "149", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "149", "32", + "MKK", "5G", "20M", "OFDM", "1T", "149", "63", + "FCC", "5G", "20M", "OFDM", "1T", "153", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "153", "32", + "MKK", "5G", "20M", "OFDM", "1T", "153", "63", + "FCC", "5G", "20M", "OFDM", "1T", "157", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "157", "32", + "MKK", "5G", "20M", "OFDM", "1T", "157", "63", + "FCC", "5G", "20M", "OFDM", "1T", "161", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "161", "32", + "MKK", "5G", "20M", "OFDM", "1T", "161", "63", + "FCC", "5G", "20M", "OFDM", "1T", "165", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "165", "32", + "MKK", "5G", "20M", "OFDM", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "1T", "36", "26", + "ETSI", "5G", "20M", "HT", "1T", "36", "32", + "MKK", "5G", "20M", "HT", "1T", "36", "32", + "FCC", "5G", "20M", "HT", "1T", "40", "32", + "ETSI", "5G", "20M", "HT", "1T", "40", "32", + "MKK", "5G", "20M", "HT", "1T", "40", "32", + "FCC", "5G", "20M", "HT", "1T", "44", "32", + "ETSI", "5G", "20M", "HT", "1T", "44", "32", + "MKK", "5G", "20M", "HT", "1T", "44", "32", + "FCC", "5G", "20M", "HT", "1T", "48", "32", + "ETSI", "5G", "20M", "HT", "1T", "48", "32", + "MKK", "5G", "20M", "HT", "1T", "48", "32", + "FCC", "5G", "20M", "HT", "1T", "52", "32", + "ETSI", "5G", "20M", "HT", "1T", "52", "32", + "MKK", "5G", "20M", "HT", "1T", "52", "32", + "FCC", "5G", "20M", "HT", "1T", "56", "32", + "ETSI", "5G", "20M", "HT", "1T", "56", "32", + "MKK", "5G", "20M", "HT", "1T", "56", "32", + "FCC", "5G", "20M", "HT", "1T", "60", "32", + "ETSI", "5G", "20M", "HT", "1T", "60", "32", + "MKK", "5G", "20M", "HT", "1T", "60", "32", + "FCC", "5G", "20M", "HT", "1T", "64", "26", + "ETSI", "5G", "20M", "HT", "1T", "64", "32", + "MKK", "5G", "20M", "HT", "1T", "64", "32", + "FCC", "5G", "20M", "HT", "1T", "100", "26", + "ETSI", "5G", "20M", "HT", "1T", "100", "32", + "MKK", "5G", "20M", "HT", "1T", "100", "32", + "FCC", "5G", "20M", "HT", "1T", "104", "32", + "ETSI", "5G", "20M", "HT", "1T", "104", "32", + "MKK", "5G", "20M", "HT", "1T", "104", "32", + "FCC", "5G", "20M", "HT", "1T", "108", "32", + "ETSI", "5G", "20M", "HT", "1T", "108", "32", + "MKK", "5G", "20M", "HT", "1T", "108", "32", + "FCC", "5G", "20M", "HT", "1T", "112", "32", + "ETSI", "5G", "20M", "HT", "1T", "112", "32", + "MKK", "5G", "20M", "HT", "1T", "112", "32", + "FCC", "5G", "20M", "HT", "1T", "116", "32", + "ETSI", "5G", "20M", "HT", "1T", "116", "32", + "MKK", "5G", "20M", "HT", "1T", "116", "32", + "FCC", "5G", "20M", "HT", "1T", "120", "32", + "ETSI", "5G", "20M", "HT", "1T", "120", "32", + "MKK", "5G", "20M", "HT", "1T", "120", "32", + "FCC", "5G", "20M", "HT", "1T", "124", "32", + "ETSI", "5G", "20M", "HT", "1T", "124", "32", + "MKK", "5G", "20M", "HT", "1T", "124", "32", + "FCC", "5G", "20M", "HT", "1T", "128", "32", + "ETSI", "5G", "20M", "HT", "1T", "128", "32", + "MKK", "5G", "20M", "HT", "1T", "128", "32", + "FCC", "5G", "20M", "HT", "1T", "132", "32", + "ETSI", "5G", "20M", "HT", "1T", "132", "32", + "MKK", "5G", "20M", "HT", "1T", "132", "32", + "FCC", "5G", "20M", "HT", "1T", "136", "32", + "ETSI", "5G", "20M", "HT", "1T", "136", "32", + "MKK", "5G", "20M", "HT", "1T", "136", "32", + "FCC", "5G", "20M", "HT", "1T", "140", "26", + "ETSI", "5G", "20M", "HT", "1T", "140", "32", + "MKK", "5G", "20M", "HT", "1T", "140", "32", + "FCC", "5G", "20M", "HT", "1T", "149", "26", + "ETSI", "5G", "20M", "HT", "1T", "149", "32", + "MKK", "5G", "20M", "HT", "1T", "149", "63", + "FCC", "5G", "20M", "HT", "1T", "153", "32", + "ETSI", "5G", "20M", "HT", "1T", "153", "32", + "MKK", "5G", "20M", "HT", "1T", "153", "63", + "FCC", "5G", "20M", "HT", "1T", "157", "32", + "ETSI", "5G", "20M", "HT", "1T", "157", "32", + "MKK", "5G", "20M", "HT", "1T", "157", "63", + "FCC", "5G", "20M", "HT", "1T", "161", "32", + "ETSI", "5G", "20M", "HT", "1T", "161", "32", + "MKK", "5G", "20M", "HT", "1T", "161", "63", + "FCC", "5G", "20M", "HT", "1T", "165", "32", + "ETSI", "5G", "20M", "HT", "1T", "165", "32", + "MKK", "5G", "20M", "HT", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "2T", "36", "24", + "ETSI", "5G", "20M", "HT", "2T", "36", "28", + "MKK", "5G", "20M", "HT", "2T", "36", "28", + "FCC", "5G", "20M", "HT", "2T", "40", "28", + "ETSI", "5G", "20M", "HT", "2T", "40", "28", + "MKK", "5G", "20M", "HT", "2T", "40", "28", + "FCC", "5G", "20M", "HT", "2T", "44", "28", + "ETSI", "5G", "20M", "HT", "2T", "44", "28", + "MKK", "5G", "20M", "HT", "2T", "44", "28", + "FCC", "5G", "20M", "HT", "2T", "48", "28", + "ETSI", "5G", "20M", "HT", "2T", "48", "28", + "MKK", "5G", "20M", "HT", "2T", "48", "28", + "FCC", "5G", "20M", "HT", "2T", "52", "28", + "ETSI", "5G", "20M", "HT", "2T", "52", "28", + "MKK", "5G", "20M", "HT", "2T", "52", "28", + "FCC", "5G", "20M", "HT", "2T", "56", "28", + "ETSI", "5G", "20M", "HT", "2T", "56", "28", + "MKK", "5G", "20M", "HT", "2T", "56", "28", + "FCC", "5G", "20M", "HT", "2T", "60", "28", + "ETSI", "5G", "20M", "HT", "2T", "60", "28", + "MKK", "5G", "20M", "HT", "2T", "60", "28", + "FCC", "5G", "20M", "HT", "2T", "64", "24", + "ETSI", "5G", "20M", "HT", "2T", "64", "28", + "MKK", "5G", "20M", "HT", "2T", "64", "28", + "FCC", "5G", "20M", "HT", "2T", "100", "24", + "ETSI", "5G", "20M", "HT", "2T", "100", "28", + "MKK", "5G", "20M", "HT", "2T", "100", "28", + "FCC", "5G", "20M", "HT", "2T", "104", "28", + "ETSI", "5G", "20M", "HT", "2T", "104", "28", + "MKK", "5G", "20M", "HT", "2T", "104", "28", + "FCC", "5G", "20M", "HT", "2T", "108", "28", + "ETSI", "5G", "20M", "HT", "2T", "108", "28", + "MKK", "5G", "20M", "HT", "2T", "108", "28", + "FCC", "5G", "20M", "HT", "2T", "112", "28", + "ETSI", "5G", "20M", "HT", "2T", "112", "28", + "MKK", "5G", "20M", "HT", "2T", "112", "28", + "FCC", "5G", "20M", "HT", "2T", "116", "28", + "ETSI", "5G", "20M", "HT", "2T", "116", "28", + "MKK", "5G", "20M", "HT", "2T", "116", "28", + "FCC", "5G", "20M", "HT", "2T", "120", "28", + "ETSI", "5G", "20M", "HT", "2T", "120", "28", + "MKK", "5G", "20M", "HT", "2T", "120", "28", + "FCC", "5G", "20M", "HT", "2T", "124", "28", + "ETSI", "5G", "20M", "HT", "2T", "124", "28", + "MKK", "5G", "20M", "HT", "2T", "124", "28", + "FCC", "5G", "20M", "HT", "2T", "128", "28", + "ETSI", "5G", "20M", "HT", "2T", "128", "28", + "MKK", "5G", "20M", "HT", "2T", "128", "28", + "FCC", "5G", "20M", "HT", "2T", "132", "28", + "ETSI", "5G", "20M", "HT", "2T", "132", "28", + "MKK", "5G", "20M", "HT", "2T", "132", "28", + "FCC", "5G", "20M", "HT", "2T", "136", "28", + "ETSI", "5G", "20M", "HT", "2T", "136", "28", + "MKK", "5G", "20M", "HT", "2T", "136", "28", + "FCC", "5G", "20M", "HT", "2T", "140", "24", + "ETSI", "5G", "20M", "HT", "2T", "140", "28", + "MKK", "5G", "20M", "HT", "2T", "140", "28", + "FCC", "5G", "20M", "HT", "2T", "149", "24", + "ETSI", "5G", "20M", "HT", "2T", "149", "28", + "MKK", "5G", "20M", "HT", "2T", "149", "63", + "FCC", "5G", "20M", "HT", "2T", "153", "28", + "ETSI", "5G", "20M", "HT", "2T", "153", "28", + "MKK", "5G", "20M", "HT", "2T", "153", "63", + "FCC", "5G", "20M", "HT", "2T", "157", "28", + "ETSI", "5G", "20M", "HT", "2T", "157", "28", + "MKK", "5G", "20M", "HT", "2T", "157", "63", + "FCC", "5G", "20M", "HT", "2T", "161", "28", + "ETSI", "5G", "20M", "HT", "2T", "161", "28", + "MKK", "5G", "20M", "HT", "2T", "161", "63", + "FCC", "5G", "20M", "HT", "2T", "165", "28", + "ETSI", "5G", "20M", "HT", "2T", "165", "28", + "MKK", "5G", "20M", "HT", "2T", "165", "63", + "FCC", "5G", "20M", "HT", "3T", "36", "22", + "ETSI", "5G", "20M", "HT", "3T", "36", "26", + "MKK", "5G", "20M", "HT", "3T", "36", "26", + "FCC", "5G", "20M", "HT", "3T", "40", "26", + "ETSI", "5G", "20M", "HT", "3T", "40", "26", + "MKK", "5G", "20M", "HT", "3T", "40", "26", + "FCC", "5G", "20M", "HT", "3T", "44", "26", + "ETSI", "5G", "20M", "HT", "3T", "44", "26", + "MKK", "5G", "20M", "HT", "3T", "44", "26", + "FCC", "5G", "20M", "HT", "3T", "48", "26", + "ETSI", "5G", "20M", "HT", "3T", "48", "26", + "MKK", "5G", "20M", "HT", "3T", "48", "26", + "FCC", "5G", "20M", "HT", "3T", "52", "26", + "ETSI", "5G", "20M", "HT", "3T", "52", "26", + "MKK", "5G", "20M", "HT", "3T", "52", "26", + "FCC", "5G", "20M", "HT", "3T", "56", "26", + "ETSI", "5G", "20M", "HT", "3T", "56", "26", + "MKK", "5G", "20M", "HT", "3T", "56", "26", + "FCC", "5G", "20M", "HT", "3T", "60", "26", + "ETSI", "5G", "20M", "HT", "3T", "60", "26", + "MKK", "5G", "20M", "HT", "3T", "60", "26", + "FCC", "5G", "20M", "HT", "3T", "64", "22", + "ETSI", "5G", "20M", "HT", "3T", "64", "26", + "MKK", "5G", "20M", "HT", "3T", "64", "26", + "FCC", "5G", "20M", "HT", "3T", "100", "22", + "ETSI", "5G", "20M", "HT", "3T", "100", "26", + "MKK", "5G", "20M", "HT", "3T", "100", "26", + "FCC", "5G", "20M", "HT", "3T", "104", "26", + "ETSI", "5G", "20M", "HT", "3T", "104", "26", + "MKK", "5G", "20M", "HT", "3T", "104", "26", + "FCC", "5G", "20M", "HT", "3T", "108", "26", + "ETSI", "5G", "20M", "HT", "3T", "108", "26", + "MKK", "5G", "20M", "HT", "3T", "108", "26", + "FCC", "5G", "20M", "HT", "3T", "112", "26", + "ETSI", "5G", "20M", "HT", "3T", "112", "26", + "MKK", "5G", "20M", "HT", "3T", "112", "26", + "FCC", "5G", "20M", "HT", "3T", "116", "26", + "ETSI", "5G", "20M", "HT", "3T", "116", "26", + "MKK", "5G", "20M", "HT", "3T", "116", "26", + "FCC", "5G", "20M", "HT", "3T", "120", "26", + "ETSI", "5G", "20M", "HT", "3T", "120", "26", + "MKK", "5G", "20M", "HT", "3T", "120", "26", + "FCC", "5G", "20M", "HT", "3T", "124", "26", + "ETSI", "5G", "20M", "HT", "3T", "124", "26", + "MKK", "5G", "20M", "HT", "3T", "124", "26", + "FCC", "5G", "20M", "HT", "3T", "128", "26", + "ETSI", "5G", "20M", "HT", "3T", "128", "26", + "MKK", "5G", "20M", "HT", "3T", "128", "26", + "FCC", "5G", "20M", "HT", "3T", "132", "26", + "ETSI", "5G", "20M", "HT", "3T", "132", "26", + "MKK", "5G", "20M", "HT", "3T", "132", "26", + "FCC", "5G", "20M", "HT", "3T", "136", "26", + "ETSI", "5G", "20M", "HT", "3T", "136", "26", + "MKK", "5G", "20M", "HT", "3T", "136", "26", + "FCC", "5G", "20M", "HT", "3T", "140", "22", + "ETSI", "5G", "20M", "HT", "3T", "140", "26", + "MKK", "5G", "20M", "HT", "3T", "140", "26", + "FCC", "5G", "20M", "HT", "3T", "149", "22", + "ETSI", "5G", "20M", "HT", "3T", "149", "26", + "MKK", "5G", "20M", "HT", "3T", "149", "63", + "FCC", "5G", "20M", "HT", "3T", "153", "26", + "ETSI", "5G", "20M", "HT", "3T", "153", "26", + "MKK", "5G", "20M", "HT", "3T", "153", "63", + "FCC", "5G", "20M", "HT", "3T", "157", "26", + "ETSI", "5G", "20M", "HT", "3T", "157", "26", + "MKK", "5G", "20M", "HT", "3T", "157", "63", + "FCC", "5G", "20M", "HT", "3T", "161", "26", + "ETSI", "5G", "20M", "HT", "3T", "161", "26", + "MKK", "5G", "20M", "HT", "3T", "161", "63", + "FCC", "5G", "20M", "HT", "3T", "165", "26", + "ETSI", "5G", "20M", "HT", "3T", "165", "26", + "MKK", "5G", "20M", "HT", "3T", "165", "63", + "FCC", "5G", "20M", "HT", "4T", "36", "20", + "ETSI", "5G", "20M", "HT", "4T", "36", "24", + "MKK", "5G", "20M", "HT", "4T", "36", "24", + "FCC", "5G", "20M", "HT", "4T", "40", "24", + "ETSI", "5G", "20M", "HT", "4T", "40", "24", + "MKK", "5G", "20M", "HT", "4T", "40", "24", + "FCC", "5G", "20M", "HT", "4T", "44", "24", + "ETSI", "5G", "20M", "HT", "4T", "44", "24", + "MKK", "5G", "20M", "HT", "4T", "44", "24", + "FCC", "5G", "20M", "HT", "4T", "48", "24", + "ETSI", "5G", "20M", "HT", "4T", "48", "24", + "MKK", "5G", "20M", "HT", "4T", "48", "24", + "FCC", "5G", "20M", "HT", "4T", "52", "24", + "ETSI", "5G", "20M", "HT", "4T", "52", "24", + "MKK", "5G", "20M", "HT", "4T", "52", "24", + "FCC", "5G", "20M", "HT", "4T", "56", "24", + "ETSI", "5G", "20M", "HT", "4T", "56", "24", + "MKK", "5G", "20M", "HT", "4T", "56", "24", + "FCC", "5G", "20M", "HT", "4T", "60", "24", + "ETSI", "5G", "20M", "HT", "4T", "60", "24", + "MKK", "5G", "20M", "HT", "4T", "60", "24", + "FCC", "5G", "20M", "HT", "4T", "64", "20", + "ETSI", "5G", "20M", "HT", "4T", "64", "24", + "MKK", "5G", "20M", "HT", "4T", "64", "24", + "FCC", "5G", "20M", "HT", "4T", "100", "20", + "ETSI", "5G", "20M", "HT", "4T", "100", "24", + "MKK", "5G", "20M", "HT", "4T", "100", "24", + "FCC", "5G", "20M", "HT", "4T", "104", "24", + "ETSI", "5G", "20M", "HT", "4T", "104", "24", + "MKK", "5G", "20M", "HT", "4T", "104", "24", + "FCC", "5G", "20M", "HT", "4T", "108", "24", + "ETSI", "5G", "20M", "HT", "4T", "108", "24", + "MKK", "5G", "20M", "HT", "4T", "108", "24", + "FCC", "5G", "20M", "HT", "4T", "112", "24", + "ETSI", "5G", "20M", "HT", "4T", "112", "24", + "MKK", "5G", "20M", "HT", "4T", "112", "24", + "FCC", "5G", "20M", "HT", "4T", "116", "24", + "ETSI", "5G", "20M", "HT", "4T", "116", "24", + "MKK", "5G", "20M", "HT", "4T", "116", "24", + "FCC", "5G", "20M", "HT", "4T", "120", "24", + "ETSI", "5G", "20M", "HT", "4T", "120", "24", + "MKK", "5G", "20M", "HT", "4T", "120", "24", + "FCC", "5G", "20M", "HT", "4T", "124", "24", + "ETSI", "5G", "20M", "HT", "4T", "124", "24", + "MKK", "5G", "20M", "HT", "4T", "124", "24", + "FCC", "5G", "20M", "HT", "4T", "128", "24", + "ETSI", "5G", "20M", "HT", "4T", "128", "24", + "MKK", "5G", "20M", "HT", "4T", "128", "24", + "FCC", "5G", "20M", "HT", "4T", "132", "24", + "ETSI", "5G", "20M", "HT", "4T", "132", "24", + "MKK", "5G", "20M", "HT", "4T", "132", "24", + "FCC", "5G", "20M", "HT", "4T", "136", "24", + "ETSI", "5G", "20M", "HT", "4T", "136", "24", + "MKK", "5G", "20M", "HT", "4T", "136", "24", + "FCC", "5G", "20M", "HT", "4T", "140", "20", + "ETSI", "5G", "20M", "HT", "4T", "140", "24", + "MKK", "5G", "20M", "HT", "4T", "140", "24", + "FCC", "5G", "20M", "HT", "4T", "149", "20", + "ETSI", "5G", "20M", "HT", "4T", "149", "24", + "MKK", "5G", "20M", "HT", "4T", "149", "63", + "FCC", "5G", "20M", "HT", "4T", "153", "24", + "ETSI", "5G", "20M", "HT", "4T", "153", "24", + "MKK", "5G", "20M", "HT", "4T", "153", "63", + "FCC", "5G", "20M", "HT", "4T", "157", "24", + "ETSI", "5G", "20M", "HT", "4T", "157", "24", + "MKK", "5G", "20M", "HT", "4T", "157", "63", + "FCC", "5G", "20M", "HT", "4T", "161", "24", + "ETSI", "5G", "20M", "HT", "4T", "161", "24", + "MKK", "5G", "20M", "HT", "4T", "161", "63", + "FCC", "5G", "20M", "HT", "4T", "165", "24", + "ETSI", "5G", "20M", "HT", "4T", "165", "24", + "MKK", "5G", "20M", "HT", "4T", "165", "63", + "FCC", "5G", "40M", "HT", "1T", "38", "26", + "ETSI", "5G", "40M", "HT", "1T", "38", "32", + "MKK", "5G", "40M", "HT", "1T", "38", "32", + "FCC", "5G", "40M", "HT", "1T", "46", "32", + "ETSI", "5G", "40M", "HT", "1T", "46", "32", + "MKK", "5G", "40M", "HT", "1T", "46", "32", + "FCC", "5G", "40M", "HT", "1T", "54", "32", + "ETSI", "5G", "40M", "HT", "1T", "54", "32", + "MKK", "5G", "40M", "HT", "1T", "54", "32", + "FCC", "5G", "40M", "HT", "1T", "62", "26", + "ETSI", "5G", "40M", "HT", "1T", "62", "32", + "MKK", "5G", "40M", "HT", "1T", "62", "32", + "FCC", "5G", "40M", "HT", "1T", "102", "26", + "ETSI", "5G", "40M", "HT", "1T", "102", "32", + "MKK", "5G", "40M", "HT", "1T", "102", "32", + "FCC", "5G", "40M", "HT", "1T", "110", "32", + "ETSI", "5G", "40M", "HT", "1T", "110", "32", + "MKK", "5G", "40M", "HT", "1T", "110", "32", + "FCC", "5G", "40M", "HT", "1T", "118", "32", + "ETSI", "5G", "40M", "HT", "1T", "118", "32", + "MKK", "5G", "40M", "HT", "1T", "118", "32", + "FCC", "5G", "40M", "HT", "1T", "126", "32", + "ETSI", "5G", "40M", "HT", "1T", "126", "32", + "MKK", "5G", "40M", "HT", "1T", "126", "32", + "FCC", "5G", "40M", "HT", "1T", "134", "32", + "ETSI", "5G", "40M", "HT", "1T", "134", "32", + "MKK", "5G", "40M", "HT", "1T", "134", "32", + "FCC", "5G", "40M", "HT", "1T", "151", "26", + "ETSI", "5G", "40M", "HT", "1T", "151", "32", + "MKK", "5G", "40M", "HT", "1T", "151", "63", + "FCC", "5G", "40M", "HT", "1T", "159", "32", + "ETSI", "5G", "40M", "HT", "1T", "159", "32", + "MKK", "5G", "40M", "HT", "1T", "159", "63", + "FCC", "5G", "40M", "HT", "2T", "38", "24", + "ETSI", "5G", "40M", "HT", "2T", "38", "28", + "MKK", "5G", "40M", "HT", "2T", "38", "28", + "FCC", "5G", "40M", "HT", "2T", "46", "28", + "ETSI", "5G", "40M", "HT", "2T", "46", "28", + "MKK", "5G", "40M", "HT", "2T", "46", "28", + "FCC", "5G", "40M", "HT", "2T", "54", "28", + "ETSI", "5G", "40M", "HT", "2T", "54", "28", + "MKK", "5G", "40M", "HT", "2T", "54", "28", + "FCC", "5G", "40M", "HT", "2T", "62", "24", + "ETSI", "5G", "40M", "HT", "2T", "62", "28", + "MKK", "5G", "40M", "HT", "2T", "62", "28", + "FCC", "5G", "40M", "HT", "2T", "102", "24", + "ETSI", "5G", "40M", "HT", "2T", "102", "28", + "MKK", "5G", "40M", "HT", "2T", "102", "28", + "FCC", "5G", "40M", "HT", "2T", "110", "28", + "ETSI", "5G", "40M", "HT", "2T", "110", "28", + "MKK", "5G", "40M", "HT", "2T", "110", "28", + "FCC", "5G", "40M", "HT", "2T", "118", "28", + "ETSI", "5G", "40M", "HT", "2T", "118", "28", + "MKK", "5G", "40M", "HT", "2T", "118", "28", + "FCC", "5G", "40M", "HT", "2T", "126", "28", + "ETSI", "5G", "40M", "HT", "2T", "126", "28", + "MKK", "5G", "40M", "HT", "2T", "126", "28", + "FCC", "5G", "40M", "HT", "2T", "134", "28", + "ETSI", "5G", "40M", "HT", "2T", "134", "28", + "MKK", "5G", "40M", "HT", "2T", "134", "28", + "FCC", "5G", "40M", "HT", "2T", "151", "24", + "ETSI", "5G", "40M", "HT", "2T", "151", "28", + "MKK", "5G", "40M", "HT", "2T", "151", "63", + "FCC", "5G", "40M", "HT", "2T", "159", "28", + "ETSI", "5G", "40M", "HT", "2T", "159", "28", + "MKK", "5G", "40M", "HT", "2T", "159", "63", + "FCC", "5G", "40M", "HT", "3T", "38", "20", + "ETSI", "5G", "40M", "HT", "3T", "38", "26", + "MKK", "5G", "40M", "HT", "3T", "38", "26", + "FCC", "5G", "40M", "HT", "3T", "46", "26", + "ETSI", "5G", "40M", "HT", "3T", "46", "26", + "MKK", "5G", "40M", "HT", "3T", "46", "26", + "FCC", "5G", "40M", "HT", "3T", "54", "26", + "ETSI", "5G", "40M", "HT", "3T", "54", "26", + "MKK", "5G", "40M", "HT", "3T", "54", "26", + "FCC", "5G", "40M", "HT", "3T", "62", "20", + "ETSI", "5G", "40M", "HT", "3T", "62", "26", + "MKK", "5G", "40M", "HT", "3T", "62", "26", + "FCC", "5G", "40M", "HT", "3T", "102", "20", + "ETSI", "5G", "40M", "HT", "3T", "102", "26", + "MKK", "5G", "40M", "HT", "3T", "102", "26", + "FCC", "5G", "40M", "HT", "3T", "110", "26", + "ETSI", "5G", "40M", "HT", "3T", "110", "26", + "MKK", "5G", "40M", "HT", "3T", "110", "26", + "FCC", "5G", "40M", "HT", "3T", "118", "26", + "ETSI", "5G", "40M", "HT", "3T", "118", "26", + "MKK", "5G", "40M", "HT", "3T", "118", "26", + "FCC", "5G", "40M", "HT", "3T", "126", "26", + "ETSI", "5G", "40M", "HT", "3T", "126", "26", + "MKK", "5G", "40M", "HT", "3T", "126", "26", + "FCC", "5G", "40M", "HT", "3T", "134", "26", + "ETSI", "5G", "40M", "HT", "3T", "134", "26", + "MKK", "5G", "40M", "HT", "3T", "134", "26", + "FCC", "5G", "40M", "HT", "3T", "151", "20", + "ETSI", "5G", "40M", "HT", "3T", "151", "26", + "MKK", "5G", "40M", "HT", "3T", "151", "63", + "FCC", "5G", "40M", "HT", "3T", "159", "26", + "ETSI", "5G", "40M", "HT", "3T", "159", "26", + "MKK", "5G", "40M", "HT", "3T", "159", "63", + "FCC", "5G", "40M", "HT", "4T", "38", "18", + "ETSI", "5G", "40M", "HT", "4T", "38", "24", + "MKK", "5G", "40M", "HT", "4T", "38", "24", + "FCC", "5G", "40M", "HT", "4T", "46", "24", + "ETSI", "5G", "40M", "HT", "4T", "46", "24", + "MKK", "5G", "40M", "HT", "4T", "46", "24", + "FCC", "5G", "40M", "HT", "4T", "54", "24", + "ETSI", "5G", "40M", "HT", "4T", "54", "24", + "MKK", "5G", "40M", "HT", "4T", "54", "24", + "FCC", "5G", "40M", "HT", "4T", "62", "18", + "ETSI", "5G", "40M", "HT", "4T", "62", "24", + "MKK", "5G", "40M", "HT", "4T", "62", "24", + "FCC", "5G", "40M", "HT", "4T", "102", "18", + "ETSI", "5G", "40M", "HT", "4T", "102", "24", + "MKK", "5G", "40M", "HT", "4T", "102", "24", + "FCC", "5G", "40M", "HT", "4T", "110", "24", + "ETSI", "5G", "40M", "HT", "4T", "110", "24", + "MKK", "5G", "40M", "HT", "4T", "110", "24", + "FCC", "5G", "40M", "HT", "4T", "118", "24", + "ETSI", "5G", "40M", "HT", "4T", "118", "24", + "MKK", "5G", "40M", "HT", "4T", "118", "24", + "FCC", "5G", "40M", "HT", "4T", "126", "24", + "ETSI", "5G", "40M", "HT", "4T", "126", "24", + "MKK", "5G", "40M", "HT", "4T", "126", "24", + "FCC", "5G", "40M", "HT", "4T", "134", "24", + "ETSI", "5G", "40M", "HT", "4T", "134", "24", + "MKK", "5G", "40M", "HT", "4T", "134", "24", + "FCC", "5G", "40M", "HT", "4T", "151", "18", + "ETSI", "5G", "40M", "HT", "4T", "151", "24", + "MKK", "5G", "40M", "HT", "4T", "151", "63", + "FCC", "5G", "40M", "HT", "4T", "159", "24", + "ETSI", "5G", "40M", "HT", "4T", "159", "24", + "MKK", "5G", "40M", "HT", "4T", "159", "63", + "FCC", "5G", "80M", "VHT", "1T", "42", "22", + "ETSI", "5G", "80M", "VHT", "1T", "42", "30", + "MKK", "5G", "80M", "VHT", "1T", "42", "30", + "FCC", "5G", "80M", "VHT", "1T", "58", "22", + "ETSI", "5G", "80M", "VHT", "1T", "58", "30", + "MKK", "5G", "80M", "VHT", "1T", "58", "30", + "FCC", "5G", "80M", "VHT", "1T", "106", "22", + "ETSI", "5G", "80M", "VHT", "1T", "106", "30", + "MKK", "5G", "80M", "VHT", "1T", "106", "30", + "FCC", "5G", "80M", "VHT", "1T", "122", "30", + "ETSI", "5G", "80M", "VHT", "1T", "122", "30", + "MKK", "5G", "80M", "VHT", "1T", "122", "30", + "FCC", "5G", "80M", "VHT", "1T", "155", "22", + "ETSI", "5G", "80M", "VHT", "1T", "155", "30", + "MKK", "5G", "80M", "VHT", "1T", "155", "63", + "FCC", "5G", "80M", "VHT", "2T", "42", "20", + "ETSI", "5G", "80M", "VHT", "2T", "42", "28", + "MKK", "5G", "80M", "VHT", "2T", "42", "28", + "FCC", "5G", "80M", "VHT", "2T", "58", "20", + "ETSI", "5G", "80M", "VHT", "2T", "58", "28", + "MKK", "5G", "80M", "VHT", "2T", "58", "28", + "FCC", "5G", "80M", "VHT", "2T", "106", "20", + "ETSI", "5G", "80M", "VHT", "2T", "106", "28", + "MKK", "5G", "80M", "VHT", "2T", "106", "28", + "FCC", "5G", "80M", "VHT", "2T", "122", "28", + "ETSI", "5G", "80M", "VHT", "2T", "122", "28", + "MKK", "5G", "80M", "VHT", "2T", "122", "28", + "FCC", "5G", "80M", "VHT", "2T", "155", "20", + "ETSI", "5G", "80M", "VHT", "2T", "155", "28", + "MKK", "5G", "80M", "VHT", "2T", "155", "63", + "FCC", "5G", "80M", "VHT", "3T", "42", "18", + "ETSI", "5G", "80M", "VHT", "3T", "42", "26", + "MKK", "5G", "80M", "VHT", "3T", "42", "26", + "FCC", "5G", "80M", "VHT", "3T", "58", "18", + "ETSI", "5G", "80M", "VHT", "3T", "58", "26", + "MKK", "5G", "80M", "VHT", "3T", "58", "26", + "FCC", "5G", "80M", "VHT", "3T", "106", "18", + "ETSI", "5G", "80M", "VHT", "3T", "106", "26", + "MKK", "5G", "80M", "VHT", "3T", "106", "26", + "FCC", "5G", "80M", "VHT", "3T", "122", "26", + "ETSI", "5G", "80M", "VHT", "3T", "122", "26", + "MKK", "5G", "80M", "VHT", "3T", "122", "26", + "FCC", "5G", "80M", "VHT", "3T", "155", "18", + "ETSI", "5G", "80M", "VHT", "3T", "155", "26", + "MKK", "5G", "80M", "VHT", "3T", "155", "63", + "FCC", "5G", "80M", "VHT", "4T", "42", "16", + "ETSI", "5G", "80M", "VHT", "4T", "42", "24", + "MKK", "5G", "80M", "VHT", "4T", "42", "24", + "FCC", "5G", "80M", "VHT", "4T", "58", "16", + "ETSI", "5G", "80M", "VHT", "4T", "58", "24", + "MKK", "5G", "80M", "VHT", "4T", "58", "24", + "FCC", "5G", "80M", "VHT", "4T", "106", "16", + "ETSI", "5G", "80M", "VHT", "4T", "106", "24", + "MKK", "5G", "80M", "VHT", "4T", "106", "24", + "FCC", "5G", "80M", "VHT", "4T", "122", "24", + "ETSI", "5G", "80M", "VHT", "4T", "122", "24", + "MKK", "5G", "80M", "VHT", "4T", "122", "24", + "FCC", "5G", "80M", "VHT", "4T", "155", "16", + "ETSI", "5G", "80M", "VHT", "4T", "155", "24", + "MKK", "5G", "80M", "VHT", "4T", "155", "63" +}; +#endif + +void +odm_read_and_config_mp_8814a_txpwr_lmt_type0(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE0 + + u32 i = 0; +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type0) / sizeof(u8); + u8 *array = (u8 *)array_mp_8814a_txpwr_lmt_type0; +#else + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type0) / sizeof(u8 *); + u8 **array = (u8 **)array_mp_8814a_txpwr_lmt_type0; +#endif + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrLmt, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrLmt = array_len / 7; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + for (i = 0; i < array_len; i += 7) { +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u8 regulation = array[i]; + u8 band = array[i + 1]; + u8 bandwidth = array[i + 2]; + u8 rate = array[i + 3]; + u8 rf_path = array[i + 4]; + u8 chnl = array[i + 5]; + u8 val = array[i + 6]; +#else + u8 *regulation = array[i]; + u8 *band = array[i + 1]; + u8 *bandwidth = array[i + 2]; + u8 *rate = array[i + 3]; + u8 *rf_path = array[i + 4]; + u8 *chnl = array[i + 5]; + u8 *val = array[i + 6]; +#endif + + odm_config_bb_txpwr_lmt_8814a(dm, regulation, band, bandwidth, + rate, rf_path, chnl, val); +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrLmt[i / 7], 100, "\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\",", + regulation, band, bandwidth, rate, rf_path, chnl, val); +#endif + } + +#endif +} + +/****************************************************************************** + * txpwr_lmt_type1.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE1 +const char *array_mp_8814a_txpwr_lmt_type1[] = { + "FCC", "2.4G", "20M", "CCK", "1T", "01", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "01", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "01", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "02", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "02", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "02", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "03", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "03", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "03", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "04", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "04", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "04", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "05", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "05", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "05", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "06", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "06", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "06", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "07", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "07", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "07", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "08", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "08", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "08", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "09", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "09", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "09", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "10", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "10", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "10", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "11", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "11", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "11", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "12", "24", + "ETSI", "2.4G", "20M", "CCK", "1T", "12", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "12", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "13", "16", + "ETSI", "2.4G", "20M", "CCK", "1T", "13", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "13", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "14", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", + "MKK", "2.4G", "20M", "CCK", "1T", "14", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "01", "30", + "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "01", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "02", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "02", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "03", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "03", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "04", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "04", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "05", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "05", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "06", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "06", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "07", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "07", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "08", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "08", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "09", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "09", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "10", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "10", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "11", "30", + "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "11", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "12", "18", + "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "12", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "13", "8", + "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "13", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63", + "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "1T", "01", "28", + "ETSI", "2.4G", "20M", "HT", "1T", "01", "32", + "MKK", "2.4G", "20M", "HT", "1T", "01", "32", + "FCC", "2.4G", "20M", "HT", "1T", "02", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "02", "32", + "MKK", "2.4G", "20M", "HT", "1T", "02", "32", + "FCC", "2.4G", "20M", "HT", "1T", "03", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "03", "32", + "MKK", "2.4G", "20M", "HT", "1T", "03", "32", + "FCC", "2.4G", "20M", "HT", "1T", "04", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "04", "32", + "MKK", "2.4G", "20M", "HT", "1T", "04", "32", + "FCC", "2.4G", "20M", "HT", "1T", "05", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "05", "32", + "MKK", "2.4G", "20M", "HT", "1T", "05", "32", + "FCC", "2.4G", "20M", "HT", "1T", "06", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "06", "32", + "MKK", "2.4G", "20M", "HT", "1T", "06", "32", + "FCC", "2.4G", "20M", "HT", "1T", "07", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "07", "32", + "MKK", "2.4G", "20M", "HT", "1T", "07", "32", + "FCC", "2.4G", "20M", "HT", "1T", "08", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "08", "32", + "MKK", "2.4G", "20M", "HT", "1T", "08", "32", + "FCC", "2.4G", "20M", "HT", "1T", "09", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "09", "32", + "MKK", "2.4G", "20M", "HT", "1T", "09", "32", + "FCC", "2.4G", "20M", "HT", "1T", "10", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "10", "32", + "MKK", "2.4G", "20M", "HT", "1T", "10", "32", + "FCC", "2.4G", "20M", "HT", "1T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "1T", "11", "32", + "MKK", "2.4G", "20M", "HT", "1T", "11", "32", + "FCC", "2.4G", "20M", "HT", "1T", "12", "16", + "ETSI", "2.4G", "20M", "HT", "1T", "12", "32", + "MKK", "2.4G", "20M", "HT", "1T", "12", "32", + "FCC", "2.4G", "20M", "HT", "1T", "13", "6", + "ETSI", "2.4G", "20M", "HT", "1T", "13", "32", + "MKK", "2.4G", "20M", "HT", "1T", "13", "32", + "FCC", "2.4G", "20M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "14", "63", + "MKK", "2.4G", "20M", "HT", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "2T", "01", "26", + "ETSI", "2.4G", "20M", "HT", "2T", "01", "30", + "MKK", "2.4G", "20M", "HT", "2T", "01", "30", + "FCC", "2.4G", "20M", "HT", "2T", "02", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "02", "30", + "MKK", "2.4G", "20M", "HT", "2T", "02", "30", + "FCC", "2.4G", "20M", "HT", "2T", "03", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "03", "30", + "MKK", "2.4G", "20M", "HT", "2T", "03", "30", + "FCC", "2.4G", "20M", "HT", "2T", "04", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "04", "30", + "MKK", "2.4G", "20M", "HT", "2T", "04", "30", + "FCC", "2.4G", "20M", "HT", "2T", "05", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "05", "30", + "MKK", "2.4G", "20M", "HT", "2T", "05", "30", + "FCC", "2.4G", "20M", "HT", "2T", "06", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "06", "30", + "MKK", "2.4G", "20M", "HT", "2T", "06", "30", + "FCC", "2.4G", "20M", "HT", "2T", "07", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "07", "30", + "MKK", "2.4G", "20M", "HT", "2T", "07", "30", + "FCC", "2.4G", "20M", "HT", "2T", "08", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "08", "30", + "MKK", "2.4G", "20M", "HT", "2T", "08", "30", + "FCC", "2.4G", "20M", "HT", "2T", "09", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "09", "30", + "MKK", "2.4G", "20M", "HT", "2T", "09", "30", + "FCC", "2.4G", "20M", "HT", "2T", "10", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "10", "30", + "MKK", "2.4G", "20M", "HT", "2T", "10", "30", + "FCC", "2.4G", "20M", "HT", "2T", "11", "26", + "ETSI", "2.4G", "20M", "HT", "2T", "11", "30", + "MKK", "2.4G", "20M", "HT", "2T", "11", "30", + "FCC", "2.4G", "20M", "HT", "2T", "12", "14", + "ETSI", "2.4G", "20M", "HT", "2T", "12", "30", + "MKK", "2.4G", "20M", "HT", "2T", "12", "30", + "FCC", "2.4G", "20M", "HT", "2T", "13", "4", + "ETSI", "2.4G", "20M", "HT", "2T", "13", "30", + "MKK", "2.4G", "20M", "HT", "2T", "13", "30", + "FCC", "2.4G", "20M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", + "MKK", "2.4G", "20M", "HT", "2T", "14", "63", + "FCC", "2.4G", "20M", "HT", "3T", "01", "24", + "ETSI", "2.4G", "20M", "HT", "3T", "01", "28", + "MKK", "2.4G", "20M", "HT", "3T", "01", "28", + "FCC", "2.4G", "20M", "HT", "3T", "02", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "02", "28", + "MKK", "2.4G", "20M", "HT", "3T", "02", "28", + "FCC", "2.4G", "20M", "HT", "3T", "03", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "03", "28", + "MKK", "2.4G", "20M", "HT", "3T", "03", "28", + "FCC", "2.4G", "20M", "HT", "3T", "04", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "04", "28", + "MKK", "2.4G", "20M", "HT", "3T", "04", "28", + "FCC", "2.4G", "20M", "HT", "3T", "05", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "05", "28", + "MKK", "2.4G", "20M", "HT", "3T", "05", "28", + "FCC", "2.4G", "20M", "HT", "3T", "06", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "06", "28", + "MKK", "2.4G", "20M", "HT", "3T", "06", "28", + "FCC", "2.4G", "20M", "HT", "3T", "07", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "07", "28", + "MKK", "2.4G", "20M", "HT", "3T", "07", "28", + "FCC", "2.4G", "20M", "HT", "3T", "08", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "08", "28", + "MKK", "2.4G", "20M", "HT", "3T", "08", "28", + "FCC", "2.4G", "20M", "HT", "3T", "09", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "09", "28", + "MKK", "2.4G", "20M", "HT", "3T", "09", "28", + "FCC", "2.4G", "20M", "HT", "3T", "10", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "10", "28", + "MKK", "2.4G", "20M", "HT", "3T", "10", "28", + "FCC", "2.4G", "20M", "HT", "3T", "11", "24", + "ETSI", "2.4G", "20M", "HT", "3T", "11", "28", + "MKK", "2.4G", "20M", "HT", "3T", "11", "28", + "FCC", "2.4G", "20M", "HT", "3T", "12", "14", + "ETSI", "2.4G", "20M", "HT", "3T", "12", "28", + "MKK", "2.4G", "20M", "HT", "3T", "12", "28", + "FCC", "2.4G", "20M", "HT", "3T", "13", "4", + "ETSI", "2.4G", "20M", "HT", "3T", "13", "28", + "MKK", "2.4G", "20M", "HT", "3T", "13", "28", + "FCC", "2.4G", "20M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "14", "63", + "MKK", "2.4G", "20M", "HT", "3T", "14", "63", + "FCC", "2.4G", "20M", "HT", "4T", "01", "22", + "ETSI", "2.4G", "20M", "HT", "4T", "01", "26", + "MKK", "2.4G", "20M", "HT", "4T", "01", "26", + "FCC", "2.4G", "20M", "HT", "4T", "02", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "02", "26", + "MKK", "2.4G", "20M", "HT", "4T", "02", "26", + "FCC", "2.4G", "20M", "HT", "4T", "03", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "03", "26", + "MKK", "2.4G", "20M", "HT", "4T", "03", "26", + "FCC", "2.4G", "20M", "HT", "4T", "04", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "04", "26", + "MKK", "2.4G", "20M", "HT", "4T", "04", "26", + "FCC", "2.4G", "20M", "HT", "4T", "05", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "05", "26", + "MKK", "2.4G", "20M", "HT", "4T", "05", "26", + "FCC", "2.4G", "20M", "HT", "4T", "06", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "06", "26", + "MKK", "2.4G", "20M", "HT", "4T", "06", "26", + "FCC", "2.4G", "20M", "HT", "4T", "07", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "07", "26", + "MKK", "2.4G", "20M", "HT", "4T", "07", "26", + "FCC", "2.4G", "20M", "HT", "4T", "08", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "08", "26", + "MKK", "2.4G", "20M", "HT", "4T", "08", "26", + "FCC", "2.4G", "20M", "HT", "4T", "09", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "09", "26", + "MKK", "2.4G", "20M", "HT", "4T", "09", "26", + "FCC", "2.4G", "20M", "HT", "4T", "10", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "10", "26", + "MKK", "2.4G", "20M", "HT", "4T", "10", "26", + "FCC", "2.4G", "20M", "HT", "4T", "11", "22", + "ETSI", "2.4G", "20M", "HT", "4T", "11", "26", + "MKK", "2.4G", "20M", "HT", "4T", "11", "26", + "FCC", "2.4G", "20M", "HT", "4T", "12", "14", + "ETSI", "2.4G", "20M", "HT", "4T", "12", "26", + "MKK", "2.4G", "20M", "HT", "4T", "12", "26", + "FCC", "2.4G", "20M", "HT", "4T", "13", "4", + "ETSI", "2.4G", "20M", "HT", "4T", "13", "26", + "MKK", "2.4G", "20M", "HT", "4T", "13", "26", + "FCC", "2.4G", "20M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "14", "63", + "MKK", "2.4G", "20M", "HT", "4T", "14", "63", + "FCC", "2.4G", "40M", "HT", "1T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "01", "63", + "MKK", "2.4G", "40M", "HT", "1T", "01", "63", + "FCC", "2.4G", "40M", "HT", "1T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "02", "63", + "MKK", "2.4G", "40M", "HT", "1T", "02", "63", + "FCC", "2.4G", "40M", "HT", "1T", "03", "28", + "ETSI", "2.4G", "40M", "HT", "1T", "03", "32", + "MKK", "2.4G", "40M", "HT", "1T", "03", "32", + "FCC", "2.4G", "40M", "HT", "1T", "04", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "04", "32", + "MKK", "2.4G", "40M", "HT", "1T", "04", "32", + "FCC", "2.4G", "40M", "HT", "1T", "05", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "05", "32", + "MKK", "2.4G", "40M", "HT", "1T", "05", "32", + "FCC", "2.4G", "40M", "HT", "1T", "06", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "06", "32", + "MKK", "2.4G", "40M", "HT", "1T", "06", "32", + "FCC", "2.4G", "40M", "HT", "1T", "07", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "07", "32", + "MKK", "2.4G", "40M", "HT", "1T", "07", "32", + "FCC", "2.4G", "40M", "HT", "1T", "08", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "08", "32", + "MKK", "2.4G", "40M", "HT", "1T", "08", "32", + "FCC", "2.4G", "40M", "HT", "1T", "09", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "09", "32", + "MKK", "2.4G", "40M", "HT", "1T", "09", "32", + "FCC", "2.4G", "40M", "HT", "1T", "10", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "10", "32", + "MKK", "2.4G", "40M", "HT", "1T", "10", "32", + "FCC", "2.4G", "40M", "HT", "1T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "1T", "11", "32", + "MKK", "2.4G", "40M", "HT", "1T", "11", "32", + "FCC", "2.4G", "40M", "HT", "1T", "12", "16", + "ETSI", "2.4G", "40M", "HT", "1T", "12", "32", + "MKK", "2.4G", "40M", "HT", "1T", "12", "32", + "FCC", "2.4G", "40M", "HT", "1T", "13", "10", + "ETSI", "2.4G", "40M", "HT", "1T", "13", "32", + "MKK", "2.4G", "40M", "HT", "1T", "13", "32", + "FCC", "2.4G", "40M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "14", "63", + "MKK", "2.4G", "40M", "HT", "1T", "14", "63", + "FCC", "2.4G", "40M", "HT", "2T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", + "MKK", "2.4G", "40M", "HT", "2T", "01", "63", + "FCC", "2.4G", "40M", "HT", "2T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "02", "63", + "MKK", "2.4G", "40M", "HT", "2T", "02", "63", + "FCC", "2.4G", "40M", "HT", "2T", "03", "26", + "ETSI", "2.4G", "40M", "HT", "2T", "03", "30", + "MKK", "2.4G", "40M", "HT", "2T", "03", "30", + "FCC", "2.4G", "40M", "HT", "2T", "04", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "04", "30", + "MKK", "2.4G", "40M", "HT", "2T", "04", "30", + "FCC", "2.4G", "40M", "HT", "2T", "05", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "05", "30", + "MKK", "2.4G", "40M", "HT", "2T", "05", "30", + "FCC", "2.4G", "40M", "HT", "2T", "06", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "06", "30", + "MKK", "2.4G", "40M", "HT", "2T", "06", "30", + "FCC", "2.4G", "40M", "HT", "2T", "07", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "07", "30", + "MKK", "2.4G", "40M", "HT", "2T", "07", "30", + "FCC", "2.4G", "40M", "HT", "2T", "08", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "08", "30", + "MKK", "2.4G", "40M", "HT", "2T", "08", "30", + "FCC", "2.4G", "40M", "HT", "2T", "09", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "09", "30", + "MKK", "2.4G", "40M", "HT", "2T", "09", "30", + "FCC", "2.4G", "40M", "HT", "2T", "10", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "10", "30", + "MKK", "2.4G", "40M", "HT", "2T", "10", "30", + "FCC", "2.4G", "40M", "HT", "2T", "11", "26", + "ETSI", "2.4G", "40M", "HT", "2T", "11", "30", + "MKK", "2.4G", "40M", "HT", "2T", "11", "30", + "FCC", "2.4G", "40M", "HT", "2T", "12", "14", + "ETSI", "2.4G", "40M", "HT", "2T", "12", "30", + "MKK", "2.4G", "40M", "HT", "2T", "12", "30", + "FCC", "2.4G", "40M", "HT", "2T", "13", "8", + "ETSI", "2.4G", "40M", "HT", "2T", "13", "30", + "MKK", "2.4G", "40M", "HT", "2T", "13", "30", + "FCC", "2.4G", "40M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "14", "63", + "MKK", "2.4G", "40M", "HT", "2T", "14", "63", + "FCC", "2.4G", "40M", "HT", "3T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "01", "63", + "MKK", "2.4G", "40M", "HT", "3T", "01", "63", + "FCC", "2.4G", "40M", "HT", "3T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "02", "63", + "MKK", "2.4G", "40M", "HT", "3T", "02", "63", + "FCC", "2.4G", "40M", "HT", "3T", "03", "24", + "ETSI", "2.4G", "40M", "HT", "3T", "03", "28", + "MKK", "2.4G", "40M", "HT", "3T", "03", "28", + "FCC", "2.4G", "40M", "HT", "3T", "04", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "04", "28", + "MKK", "2.4G", "40M", "HT", "3T", "04", "28", + "FCC", "2.4G", "40M", "HT", "3T", "05", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "05", "28", + "MKK", "2.4G", "40M", "HT", "3T", "05", "28", + "FCC", "2.4G", "40M", "HT", "3T", "06", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "06", "28", + "MKK", "2.4G", "40M", "HT", "3T", "06", "28", + "FCC", "2.4G", "40M", "HT", "3T", "07", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "07", "28", + "MKK", "2.4G", "40M", "HT", "3T", "07", "28", + "FCC", "2.4G", "40M", "HT", "3T", "08", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "08", "28", + "MKK", "2.4G", "40M", "HT", "3T", "08", "28", + "FCC", "2.4G", "40M", "HT", "3T", "09", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "09", "28", + "MKK", "2.4G", "40M", "HT", "3T", "09", "28", + "FCC", "2.4G", "40M", "HT", "3T", "10", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "10", "28", + "MKK", "2.4G", "40M", "HT", "3T", "10", "28", + "FCC", "2.4G", "40M", "HT", "3T", "11", "24", + "ETSI", "2.4G", "40M", "HT", "3T", "11", "28", + "MKK", "2.4G", "40M", "HT", "3T", "11", "28", + "FCC", "2.4G", "40M", "HT", "3T", "12", "14", + "ETSI", "2.4G", "40M", "HT", "3T", "12", "28", + "MKK", "2.4G", "40M", "HT", "3T", "12", "28", + "FCC", "2.4G", "40M", "HT", "3T", "13", "8", + "ETSI", "2.4G", "40M", "HT", "3T", "13", "28", + "MKK", "2.4G", "40M", "HT", "3T", "13", "28", + "FCC", "2.4G", "40M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "14", "63", + "MKK", "2.4G", "40M", "HT", "3T", "14", "63", + "FCC", "2.4G", "40M", "HT", "4T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "01", "63", + "MKK", "2.4G", "40M", "HT", "4T", "01", "63", + "FCC", "2.4G", "40M", "HT", "4T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "02", "63", + "MKK", "2.4G", "40M", "HT", "4T", "02", "63", + "FCC", "2.4G", "40M", "HT", "4T", "03", "22", + "ETSI", "2.4G", "40M", "HT", "4T", "03", "26", + "MKK", "2.4G", "40M", "HT", "4T", "03", "26", + "FCC", "2.4G", "40M", "HT", "4T", "04", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "04", "26", + "MKK", "2.4G", "40M", "HT", "4T", "04", "26", + "FCC", "2.4G", "40M", "HT", "4T", "05", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "05", "26", + "MKK", "2.4G", "40M", "HT", "4T", "05", "26", + "FCC", "2.4G", "40M", "HT", "4T", "06", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "06", "26", + "MKK", "2.4G", "40M", "HT", "4T", "06", "26", + "FCC", "2.4G", "40M", "HT", "4T", "07", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "07", "26", + "MKK", "2.4G", "40M", "HT", "4T", "07", "26", + "FCC", "2.4G", "40M", "HT", "4T", "08", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "08", "26", + "MKK", "2.4G", "40M", "HT", "4T", "08", "26", + "FCC", "2.4G", "40M", "HT", "4T", "09", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "09", "26", + "MKK", "2.4G", "40M", "HT", "4T", "09", "26", + "FCC", "2.4G", "40M", "HT", "4T", "10", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "10", "26", + "MKK", "2.4G", "40M", "HT", "4T", "10", "26", + "FCC", "2.4G", "40M", "HT", "4T", "11", "22", + "ETSI", "2.4G", "40M", "HT", "4T", "11", "26", + "MKK", "2.4G", "40M", "HT", "4T", "11", "26", + "FCC", "2.4G", "40M", "HT", "4T", "12", "14", + "ETSI", "2.4G", "40M", "HT", "4T", "12", "26", + "MKK", "2.4G", "40M", "HT", "4T", "12", "26", + "FCC", "2.4G", "40M", "HT", "4T", "13", "8", + "ETSI", "2.4G", "40M", "HT", "4T", "13", "26", + "MKK", "2.4G", "40M", "HT", "4T", "13", "26", + "FCC", "2.4G", "40M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "14", "63", + "MKK", "2.4G", "40M", "HT", "4T", "14", "63", + "FCC", "5G", "20M", "OFDM", "1T", "36", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "36", "32", + "MKK", "5G", "20M", "OFDM", "1T", "36", "32", + "FCC", "5G", "20M", "OFDM", "1T", "40", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "40", "32", + "MKK", "5G", "20M", "OFDM", "1T", "40", "32", + "FCC", "5G", "20M", "OFDM", "1T", "44", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "44", "32", + "MKK", "5G", "20M", "OFDM", "1T", "44", "32", + "FCC", "5G", "20M", "OFDM", "1T", "48", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "48", "32", + "MKK", "5G", "20M", "OFDM", "1T", "48", "32", + "FCC", "5G", "20M", "OFDM", "1T", "52", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "52", "32", + "MKK", "5G", "20M", "OFDM", "1T", "52", "32", + "FCC", "5G", "20M", "OFDM", "1T", "56", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "56", "32", + "MKK", "5G", "20M", "OFDM", "1T", "56", "32", + "FCC", "5G", "20M", "OFDM", "1T", "60", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "60", "32", + "MKK", "5G", "20M", "OFDM", "1T", "60", "32", + "FCC", "5G", "20M", "OFDM", "1T", "64", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "64", "32", + "MKK", "5G", "20M", "OFDM", "1T", "64", "32", + "FCC", "5G", "20M", "OFDM", "1T", "100", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "100", "32", + "MKK", "5G", "20M", "OFDM", "1T", "100", "32", + "FCC", "5G", "20M", "OFDM", "1T", "104", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "104", "32", + "MKK", "5G", "20M", "OFDM", "1T", "104", "32", + "FCC", "5G", "20M", "OFDM", "1T", "108", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "108", "32", + "MKK", "5G", "20M", "OFDM", "1T", "108", "32", + "FCC", "5G", "20M", "OFDM", "1T", "112", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "112", "32", + "MKK", "5G", "20M", "OFDM", "1T", "112", "32", + "FCC", "5G", "20M", "OFDM", "1T", "116", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "116", "32", + "MKK", "5G", "20M", "OFDM", "1T", "116", "32", + "FCC", "5G", "20M", "OFDM", "1T", "120", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "120", "32", + "MKK", "5G", "20M", "OFDM", "1T", "120", "32", + "FCC", "5G", "20M", "OFDM", "1T", "124", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "124", "32", + "MKK", "5G", "20M", "OFDM", "1T", "124", "32", + "FCC", "5G", "20M", "OFDM", "1T", "128", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "128", "32", + "MKK", "5G", "20M", "OFDM", "1T", "128", "32", + "FCC", "5G", "20M", "OFDM", "1T", "132", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "132", "32", + "MKK", "5G", "20M", "OFDM", "1T", "132", "32", + "FCC", "5G", "20M", "OFDM", "1T", "136", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "136", "32", + "MKK", "5G", "20M", "OFDM", "1T", "136", "32", + "FCC", "5G", "20M", "OFDM", "1T", "140", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "140", "32", + "MKK", "5G", "20M", "OFDM", "1T", "140", "32", + "FCC", "5G", "20M", "OFDM", "1T", "149", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "149", "32", + "MKK", "5G", "20M", "OFDM", "1T", "149", "63", + "FCC", "5G", "20M", "OFDM", "1T", "153", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "153", "32", + "MKK", "5G", "20M", "OFDM", "1T", "153", "63", + "FCC", "5G", "20M", "OFDM", "1T", "157", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "157", "32", + "MKK", "5G", "20M", "OFDM", "1T", "157", "63", + "FCC", "5G", "20M", "OFDM", "1T", "161", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "161", "32", + "MKK", "5G", "20M", "OFDM", "1T", "161", "63", + "FCC", "5G", "20M", "OFDM", "1T", "165", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "165", "32", + "MKK", "5G", "20M", "OFDM", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "1T", "36", "28", + "ETSI", "5G", "20M", "HT", "1T", "36", "32", + "MKK", "5G", "20M", "HT", "1T", "36", "32", + "FCC", "5G", "20M", "HT", "1T", "40", "32", + "ETSI", "5G", "20M", "HT", "1T", "40", "32", + "MKK", "5G", "20M", "HT", "1T", "40", "32", + "FCC", "5G", "20M", "HT", "1T", "44", "32", + "ETSI", "5G", "20M", "HT", "1T", "44", "32", + "MKK", "5G", "20M", "HT", "1T", "44", "32", + "FCC", "5G", "20M", "HT", "1T", "48", "32", + "ETSI", "5G", "20M", "HT", "1T", "48", "32", + "MKK", "5G", "20M", "HT", "1T", "48", "32", + "FCC", "5G", "20M", "HT", "1T", "52", "32", + "ETSI", "5G", "20M", "HT", "1T", "52", "32", + "MKK", "5G", "20M", "HT", "1T", "52", "32", + "FCC", "5G", "20M", "HT", "1T", "56", "32", + "ETSI", "5G", "20M", "HT", "1T", "56", "32", + "MKK", "5G", "20M", "HT", "1T", "56", "32", + "FCC", "5G", "20M", "HT", "1T", "60", "32", + "ETSI", "5G", "20M", "HT", "1T", "60", "32", + "MKK", "5G", "20M", "HT", "1T", "60", "32", + "FCC", "5G", "20M", "HT", "1T", "64", "30", + "ETSI", "5G", "20M", "HT", "1T", "64", "32", + "MKK", "5G", "20M", "HT", "1T", "64", "32", + "FCC", "5G", "20M", "HT", "1T", "100", "28", + "ETSI", "5G", "20M", "HT", "1T", "100", "32", + "MKK", "5G", "20M", "HT", "1T", "100", "32", + "FCC", "5G", "20M", "HT", "1T", "104", "32", + "ETSI", "5G", "20M", "HT", "1T", "104", "32", + "MKK", "5G", "20M", "HT", "1T", "104", "32", + "FCC", "5G", "20M", "HT", "1T", "108", "32", + "ETSI", "5G", "20M", "HT", "1T", "108", "32", + "MKK", "5G", "20M", "HT", "1T", "108", "32", + "FCC", "5G", "20M", "HT", "1T", "112", "32", + "ETSI", "5G", "20M", "HT", "1T", "112", "32", + "MKK", "5G", "20M", "HT", "1T", "112", "32", + "FCC", "5G", "20M", "HT", "1T", "116", "32", + "ETSI", "5G", "20M", "HT", "1T", "116", "32", + "MKK", "5G", "20M", "HT", "1T", "116", "32", + "FCC", "5G", "20M", "HT", "1T", "120", "32", + "ETSI", "5G", "20M", "HT", "1T", "120", "32", + "MKK", "5G", "20M", "HT", "1T", "120", "32", + "FCC", "5G", "20M", "HT", "1T", "124", "32", + "ETSI", "5G", "20M", "HT", "1T", "124", "32", + "MKK", "5G", "20M", "HT", "1T", "124", "32", + "FCC", "5G", "20M", "HT", "1T", "128", "32", + "ETSI", "5G", "20M", "HT", "1T", "128", "32", + "MKK", "5G", "20M", "HT", "1T", "128", "32", + "FCC", "5G", "20M", "HT", "1T", "132", "32", + "ETSI", "5G", "20M", "HT", "1T", "132", "32", + "MKK", "5G", "20M", "HT", "1T", "132", "32", + "FCC", "5G", "20M", "HT", "1T", "136", "32", + "ETSI", "5G", "20M", "HT", "1T", "136", "32", + "MKK", "5G", "20M", "HT", "1T", "136", "32", + "FCC", "5G", "20M", "HT", "1T", "140", "28", + "ETSI", "5G", "20M", "HT", "1T", "140", "32", + "MKK", "5G", "20M", "HT", "1T", "140", "32", + "FCC", "5G", "20M", "HT", "1T", "149", "28", + "ETSI", "5G", "20M", "HT", "1T", "149", "32", + "MKK", "5G", "20M", "HT", "1T", "149", "63", + "FCC", "5G", "20M", "HT", "1T", "153", "32", + "ETSI", "5G", "20M", "HT", "1T", "153", "32", + "MKK", "5G", "20M", "HT", "1T", "153", "63", + "FCC", "5G", "20M", "HT", "1T", "157", "32", + "ETSI", "5G", "20M", "HT", "1T", "157", "32", + "MKK", "5G", "20M", "HT", "1T", "157", "63", + "FCC", "5G", "20M", "HT", "1T", "161", "32", + "ETSI", "5G", "20M", "HT", "1T", "161", "32", + "MKK", "5G", "20M", "HT", "1T", "161", "63", + "FCC", "5G", "20M", "HT", "1T", "165", "32", + "ETSI", "5G", "20M", "HT", "1T", "165", "32", + "MKK", "5G", "20M", "HT", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "2T", "36", "26", + "ETSI", "5G", "20M", "HT", "2T", "36", "30", + "MKK", "5G", "20M", "HT", "2T", "36", "30", + "FCC", "5G", "20M", "HT", "2T", "40", "30", + "ETSI", "5G", "20M", "HT", "2T", "40", "30", + "MKK", "5G", "20M", "HT", "2T", "40", "30", + "FCC", "5G", "20M", "HT", "2T", "44", "30", + "ETSI", "5G", "20M", "HT", "2T", "44", "30", + "MKK", "5G", "20M", "HT", "2T", "44", "30", + "FCC", "5G", "20M", "HT", "2T", "48", "30", + "ETSI", "5G", "20M", "HT", "2T", "48", "30", + "MKK", "5G", "20M", "HT", "2T", "48", "30", + "FCC", "5G", "20M", "HT", "2T", "52", "30", + "ETSI", "5G", "20M", "HT", "2T", "52", "30", + "MKK", "5G", "20M", "HT", "2T", "52", "30", + "FCC", "5G", "20M", "HT", "2T", "56", "30", + "ETSI", "5G", "20M", "HT", "2T", "56", "30", + "MKK", "5G", "20M", "HT", "2T", "56", "30", + "FCC", "5G", "20M", "HT", "2T", "60", "30", + "ETSI", "5G", "20M", "HT", "2T", "60", "30", + "MKK", "5G", "20M", "HT", "2T", "60", "30", + "FCC", "5G", "20M", "HT", "2T", "64", "28", + "ETSI", "5G", "20M", "HT", "2T", "64", "30", + "MKK", "5G", "20M", "HT", "2T", "64", "30", + "FCC", "5G", "20M", "HT", "2T", "100", "28", + "ETSI", "5G", "20M", "HT", "2T", "100", "30", + "MKK", "5G", "20M", "HT", "2T", "100", "30", + "FCC", "5G", "20M", "HT", "2T", "104", "30", + "ETSI", "5G", "20M", "HT", "2T", "104", "30", + "MKK", "5G", "20M", "HT", "2T", "104", "30", + "FCC", "5G", "20M", "HT", "2T", "108", "30", + "ETSI", "5G", "20M", "HT", "2T", "108", "30", + "MKK", "5G", "20M", "HT", "2T", "108", "30", + "FCC", "5G", "20M", "HT", "2T", "112", "30", + "ETSI", "5G", "20M", "HT", "2T", "112", "30", + "MKK", "5G", "20M", "HT", "2T", "112", "30", + "FCC", "5G", "20M", "HT", "2T", "116", "30", + "ETSI", "5G", "20M", "HT", "2T", "116", "30", + "MKK", "5G", "20M", "HT", "2T", "116", "30", + "FCC", "5G", "20M", "HT", "2T", "120", "30", + "ETSI", "5G", "20M", "HT", "2T", "120", "30", + "MKK", "5G", "20M", "HT", "2T", "120", "30", + "FCC", "5G", "20M", "HT", "2T", "124", "30", + "ETSI", "5G", "20M", "HT", "2T", "124", "30", + "MKK", "5G", "20M", "HT", "2T", "124", "30", + "FCC", "5G", "20M", "HT", "2T", "128", "30", + "ETSI", "5G", "20M", "HT", "2T", "128", "30", + "MKK", "5G", "20M", "HT", "2T", "128", "30", + "FCC", "5G", "20M", "HT", "2T", "132", "30", + "ETSI", "5G", "20M", "HT", "2T", "132", "30", + "MKK", "5G", "20M", "HT", "2T", "132", "30", + "FCC", "5G", "20M", "HT", "2T", "136", "30", + "ETSI", "5G", "20M", "HT", "2T", "136", "30", + "MKK", "5G", "20M", "HT", "2T", "136", "30", + "FCC", "5G", "20M", "HT", "2T", "140", "26", + "ETSI", "5G", "20M", "HT", "2T", "140", "30", + "MKK", "5G", "20M", "HT", "2T", "140", "30", + "FCC", "5G", "20M", "HT", "2T", "149", "26", + "ETSI", "5G", "20M", "HT", "2T", "149", "30", + "MKK", "5G", "20M", "HT", "2T", "149", "63", + "FCC", "5G", "20M", "HT", "2T", "153", "30", + "ETSI", "5G", "20M", "HT", "2T", "153", "30", + "MKK", "5G", "20M", "HT", "2T", "153", "63", + "FCC", "5G", "20M", "HT", "2T", "157", "30", + "ETSI", "5G", "20M", "HT", "2T", "157", "30", + "MKK", "5G", "20M", "HT", "2T", "157", "63", + "FCC", "5G", "20M", "HT", "2T", "161", "30", + "ETSI", "5G", "20M", "HT", "2T", "161", "30", + "MKK", "5G", "20M", "HT", "2T", "161", "63", + "FCC", "5G", "20M", "HT", "2T", "165", "30", + "ETSI", "5G", "20M", "HT", "2T", "165", "30", + "MKK", "5G", "20M", "HT", "2T", "165", "63", + "FCC", "5G", "20M", "HT", "3T", "36", "24", + "ETSI", "5G", "20M", "HT", "3T", "36", "28", + "MKK", "5G", "20M", "HT", "3T", "36", "28", + "FCC", "5G", "20M", "HT", "3T", "40", "28", + "ETSI", "5G", "20M", "HT", "3T", "40", "28", + "MKK", "5G", "20M", "HT", "3T", "40", "28", + "FCC", "5G", "20M", "HT", "3T", "44", "28", + "ETSI", "5G", "20M", "HT", "3T", "44", "28", + "MKK", "5G", "20M", "HT", "3T", "44", "28", + "FCC", "5G", "20M", "HT", "3T", "48", "28", + "ETSI", "5G", "20M", "HT", "3T", "48", "28", + "MKK", "5G", "20M", "HT", "3T", "48", "28", + "FCC", "5G", "20M", "HT", "3T", "52", "28", + "ETSI", "5G", "20M", "HT", "3T", "52", "28", + "MKK", "5G", "20M", "HT", "3T", "52", "28", + "FCC", "5G", "20M", "HT", "3T", "56", "28", + "ETSI", "5G", "20M", "HT", "3T", "56", "28", + "MKK", "5G", "20M", "HT", "3T", "56", "28", + "FCC", "5G", "20M", "HT", "3T", "60", "28", + "ETSI", "5G", "20M", "HT", "3T", "60", "28", + "MKK", "5G", "20M", "HT", "3T", "60", "28", + "FCC", "5G", "20M", "HT", "3T", "64", "26", + "ETSI", "5G", "20M", "HT", "3T", "64", "28", + "MKK", "5G", "20M", "HT", "3T", "64", "28", + "FCC", "5G", "20M", "HT", "3T", "100", "24", + "ETSI", "5G", "20M", "HT", "3T", "100", "28", + "MKK", "5G", "20M", "HT", "3T", "100", "28", + "FCC", "5G", "20M", "HT", "3T", "104", "28", + "ETSI", "5G", "20M", "HT", "3T", "104", "28", + "MKK", "5G", "20M", "HT", "3T", "104", "28", + "FCC", "5G", "20M", "HT", "3T", "108", "28", + "ETSI", "5G", "20M", "HT", "3T", "108", "28", + "MKK", "5G", "20M", "HT", "3T", "108", "28", + "FCC", "5G", "20M", "HT", "3T", "112", "28", + "ETSI", "5G", "20M", "HT", "3T", "112", "28", + "MKK", "5G", "20M", "HT", "3T", "112", "28", + "FCC", "5G", "20M", "HT", "3T", "116", "28", + "ETSI", "5G", "20M", "HT", "3T", "116", "28", + "MKK", "5G", "20M", "HT", "3T", "116", "28", + "FCC", "5G", "20M", "HT", "3T", "120", "28", + "ETSI", "5G", "20M", "HT", "3T", "120", "28", + "MKK", "5G", "20M", "HT", "3T", "120", "28", + "FCC", "5G", "20M", "HT", "3T", "124", "28", + "ETSI", "5G", "20M", "HT", "3T", "124", "28", + "MKK", "5G", "20M", "HT", "3T", "124", "28", + "FCC", "5G", "20M", "HT", "3T", "128", "28", + "ETSI", "5G", "20M", "HT", "3T", "128", "28", + "MKK", "5G", "20M", "HT", "3T", "128", "28", + "FCC", "5G", "20M", "HT", "3T", "132", "28", + "ETSI", "5G", "20M", "HT", "3T", "132", "28", + "MKK", "5G", "20M", "HT", "3T", "132", "28", + "FCC", "5G", "20M", "HT", "3T", "136", "28", + "ETSI", "5G", "20M", "HT", "3T", "136", "28", + "MKK", "5G", "20M", "HT", "3T", "136", "28", + "FCC", "5G", "20M", "HT", "3T", "140", "24", + "ETSI", "5G", "20M", "HT", "3T", "140", "28", + "MKK", "5G", "20M", "HT", "3T", "140", "28", + "FCC", "5G", "20M", "HT", "3T", "149", "24", + "ETSI", "5G", "20M", "HT", "3T", "149", "28", + "MKK", "5G", "20M", "HT", "3T", "149", "63", + "FCC", "5G", "20M", "HT", "3T", "153", "28", + "ETSI", "5G", "20M", "HT", "3T", "153", "28", + "MKK", "5G", "20M", "HT", "3T", "153", "63", + "FCC", "5G", "20M", "HT", "3T", "157", "28", + "ETSI", "5G", "20M", "HT", "3T", "157", "28", + "MKK", "5G", "20M", "HT", "3T", "157", "63", + "FCC", "5G", "20M", "HT", "3T", "161", "28", + "ETSI", "5G", "20M", "HT", "3T", "161", "28", + "MKK", "5G", "20M", "HT", "3T", "161", "63", + "FCC", "5G", "20M", "HT", "3T", "165", "28", + "ETSI", "5G", "20M", "HT", "3T", "165", "28", + "MKK", "5G", "20M", "HT", "3T", "165", "63", + "FCC", "5G", "20M", "HT", "4T", "36", "22", + "ETSI", "5G", "20M", "HT", "4T", "36", "26", + "MKK", "5G", "20M", "HT", "4T", "36", "26", + "FCC", "5G", "20M", "HT", "4T", "40", "26", + "ETSI", "5G", "20M", "HT", "4T", "40", "26", + "MKK", "5G", "20M", "HT", "4T", "40", "26", + "FCC", "5G", "20M", "HT", "4T", "44", "26", + "ETSI", "5G", "20M", "HT", "4T", "44", "26", + "MKK", "5G", "20M", "HT", "4T", "44", "26", + "FCC", "5G", "20M", "HT", "4T", "48", "26", + "ETSI", "5G", "20M", "HT", "4T", "48", "26", + "MKK", "5G", "20M", "HT", "4T", "48", "26", + "FCC", "5G", "20M", "HT", "4T", "52", "26", + "ETSI", "5G", "20M", "HT", "4T", "52", "26", + "MKK", "5G", "20M", "HT", "4T", "52", "26", + "FCC", "5G", "20M", "HT", "4T", "56", "26", + "ETSI", "5G", "20M", "HT", "4T", "56", "26", + "MKK", "5G", "20M", "HT", "4T", "56", "26", + "FCC", "5G", "20M", "HT", "4T", "60", "26", + "ETSI", "5G", "20M", "HT", "4T", "60", "26", + "MKK", "5G", "20M", "HT", "4T", "60", "26", + "FCC", "5G", "20M", "HT", "4T", "64", "24", + "ETSI", "5G", "20M", "HT", "4T", "64", "26", + "MKK", "5G", "20M", "HT", "4T", "64", "26", + "FCC", "5G", "20M", "HT", "4T", "100", "22", + "ETSI", "5G", "20M", "HT", "4T", "100", "26", + "MKK", "5G", "20M", "HT", "4T", "100", "26", + "FCC", "5G", "20M", "HT", "4T", "104", "26", + "ETSI", "5G", "20M", "HT", "4T", "104", "26", + "MKK", "5G", "20M", "HT", "4T", "104", "26", + "FCC", "5G", "20M", "HT", "4T", "108", "26", + "ETSI", "5G", "20M", "HT", "4T", "108", "26", + "MKK", "5G", "20M", "HT", "4T", "108", "26", + "FCC", "5G", "20M", "HT", "4T", "112", "26", + "ETSI", "5G", "20M", "HT", "4T", "112", "26", + "MKK", "5G", "20M", "HT", "4T", "112", "26", + "FCC", "5G", "20M", "HT", "4T", "116", "26", + "ETSI", "5G", "20M", "HT", "4T", "116", "26", + "MKK", "5G", "20M", "HT", "4T", "116", "26", + "FCC", "5G", "20M", "HT", "4T", "120", "26", + "ETSI", "5G", "20M", "HT", "4T", "120", "26", + "MKK", "5G", "20M", "HT", "4T", "120", "26", + "FCC", "5G", "20M", "HT", "4T", "124", "26", + "ETSI", "5G", "20M", "HT", "4T", "124", "26", + "MKK", "5G", "20M", "HT", "4T", "124", "26", + "FCC", "5G", "20M", "HT", "4T", "128", "26", + "ETSI", "5G", "20M", "HT", "4T", "128", "26", + "MKK", "5G", "20M", "HT", "4T", "128", "26", + "FCC", "5G", "20M", "HT", "4T", "132", "26", + "ETSI", "5G", "20M", "HT", "4T", "132", "26", + "MKK", "5G", "20M", "HT", "4T", "132", "26", + "FCC", "5G", "20M", "HT", "4T", "136", "26", + "ETSI", "5G", "20M", "HT", "4T", "136", "26", + "MKK", "5G", "20M", "HT", "4T", "136", "26", + "FCC", "5G", "20M", "HT", "4T", "140", "22", + "ETSI", "5G", "20M", "HT", "4T", "140", "26", + "MKK", "5G", "20M", "HT", "4T", "140", "26", + "FCC", "5G", "20M", "HT", "4T", "149", "22", + "ETSI", "5G", "20M", "HT", "4T", "149", "26", + "MKK", "5G", "20M", "HT", "4T", "149", "63", + "FCC", "5G", "20M", "HT", "4T", "153", "26", + "ETSI", "5G", "20M", "HT", "4T", "153", "26", + "MKK", "5G", "20M", "HT", "4T", "153", "63", + "FCC", "5G", "20M", "HT", "4T", "157", "26", + "ETSI", "5G", "20M", "HT", "4T", "157", "26", + "MKK", "5G", "20M", "HT", "4T", "157", "63", + "FCC", "5G", "20M", "HT", "4T", "161", "26", + "ETSI", "5G", "20M", "HT", "4T", "161", "26", + "MKK", "5G", "20M", "HT", "4T", "161", "63", + "FCC", "5G", "20M", "HT", "4T", "165", "26", + "ETSI", "5G", "20M", "HT", "4T", "165", "26", + "MKK", "5G", "20M", "HT", "4T", "165", "63", + "FCC", "5G", "40M", "HT", "1T", "38", "28", + "ETSI", "5G", "40M", "HT", "1T", "38", "32", + "MKK", "5G", "40M", "HT", "1T", "38", "32", + "FCC", "5G", "40M", "HT", "1T", "46", "32", + "ETSI", "5G", "40M", "HT", "1T", "46", "32", + "MKK", "5G", "40M", "HT", "1T", "46", "32", + "FCC", "5G", "40M", "HT", "1T", "54", "32", + "ETSI", "5G", "40M", "HT", "1T", "54", "32", + "MKK", "5G", "40M", "HT", "1T", "54", "32", + "FCC", "5G", "40M", "HT", "1T", "62", "28", + "ETSI", "5G", "40M", "HT", "1T", "62", "32", + "MKK", "5G", "40M", "HT", "1T", "62", "32", + "FCC", "5G", "40M", "HT", "1T", "102", "28", + "ETSI", "5G", "40M", "HT", "1T", "102", "32", + "MKK", "5G", "40M", "HT", "1T", "102", "32", + "FCC", "5G", "40M", "HT", "1T", "110", "32", + "ETSI", "5G", "40M", "HT", "1T", "110", "32", + "MKK", "5G", "40M", "HT", "1T", "110", "32", + "FCC", "5G", "40M", "HT", "1T", "118", "32", + "ETSI", "5G", "40M", "HT", "1T", "118", "32", + "MKK", "5G", "40M", "HT", "1T", "118", "32", + "FCC", "5G", "40M", "HT", "1T", "126", "32", + "ETSI", "5G", "40M", "HT", "1T", "126", "32", + "MKK", "5G", "40M", "HT", "1T", "126", "32", + "FCC", "5G", "40M", "HT", "1T", "134", "30", + "ETSI", "5G", "40M", "HT", "1T", "134", "32", + "MKK", "5G", "40M", "HT", "1T", "134", "32", + "FCC", "5G", "40M", "HT", "1T", "151", "28", + "ETSI", "5G", "40M", "HT", "1T", "151", "32", + "MKK", "5G", "40M", "HT", "1T", "151", "63", + "FCC", "5G", "40M", "HT", "1T", "159", "32", + "ETSI", "5G", "40M", "HT", "1T", "159", "32", + "MKK", "5G", "40M", "HT", "1T", "159", "63", + "FCC", "5G", "40M", "HT", "2T", "38", "26", + "ETSI", "5G", "40M", "HT", "2T", "38", "30", + "MKK", "5G", "40M", "HT", "2T", "38", "30", + "FCC", "5G", "40M", "HT", "2T", "46", "30", + "ETSI", "5G", "40M", "HT", "2T", "46", "30", + "MKK", "5G", "40M", "HT", "2T", "46", "30", + "FCC", "5G", "40M", "HT", "2T", "54", "30", + "ETSI", "5G", "40M", "HT", "2T", "54", "30", + "MKK", "5G", "40M", "HT", "2T", "54", "30", + "FCC", "5G", "40M", "HT", "2T", "62", "26", + "ETSI", "5G", "40M", "HT", "2T", "62", "30", + "MKK", "5G", "40M", "HT", "2T", "62", "30", + "FCC", "5G", "40M", "HT", "2T", "102", "26", + "ETSI", "5G", "40M", "HT", "2T", "102", "30", + "MKK", "5G", "40M", "HT", "2T", "102", "30", + "FCC", "5G", "40M", "HT", "2T", "110", "30", + "ETSI", "5G", "40M", "HT", "2T", "110", "30", + "MKK", "5G", "40M", "HT", "2T", "110", "30", + "FCC", "5G", "40M", "HT", "2T", "118", "30", + "ETSI", "5G", "40M", "HT", "2T", "118", "30", + "MKK", "5G", "40M", "HT", "2T", "118", "30", + "FCC", "5G", "40M", "HT", "2T", "126", "30", + "ETSI", "5G", "40M", "HT", "2T", "126", "30", + "MKK", "5G", "40M", "HT", "2T", "126", "30", + "FCC", "5G", "40M", "HT", "2T", "134", "28", + "ETSI", "5G", "40M", "HT", "2T", "134", "30", + "MKK", "5G", "40M", "HT", "2T", "134", "30", + "FCC", "5G", "40M", "HT", "2T", "151", "26", + "ETSI", "5G", "40M", "HT", "2T", "151", "30", + "MKK", "5G", "40M", "HT", "2T", "151", "63", + "FCC", "5G", "40M", "HT", "2T", "159", "30", + "ETSI", "5G", "40M", "HT", "2T", "159", "30", + "MKK", "5G", "40M", "HT", "2T", "159", "63", + "FCC", "5G", "40M", "HT", "3T", "38", "20", + "ETSI", "5G", "40M", "HT", "3T", "38", "28", + "MKK", "5G", "40M", "HT", "3T", "38", "28", + "FCC", "5G", "40M", "HT", "3T", "46", "28", + "ETSI", "5G", "40M", "HT", "3T", "46", "28", + "MKK", "5G", "40M", "HT", "3T", "46", "28", + "FCC", "5G", "40M", "HT", "3T", "54", "28", + "ETSI", "5G", "40M", "HT", "3T", "54", "28", + "MKK", "5G", "40M", "HT", "3T", "54", "28", + "FCC", "5G", "40M", "HT", "3T", "62", "20", + "ETSI", "5G", "40M", "HT", "3T", "62", "28", + "MKK", "5G", "40M", "HT", "3T", "62", "28", + "FCC", "5G", "40M", "HT", "3T", "102", "22", + "ETSI", "5G", "40M", "HT", "3T", "102", "28", + "MKK", "5G", "40M", "HT", "3T", "102", "28", + "FCC", "5G", "40M", "HT", "3T", "110", "28", + "ETSI", "5G", "40M", "HT", "3T", "110", "28", + "MKK", "5G", "40M", "HT", "3T", "110", "28", + "FCC", "5G", "40M", "HT", "3T", "118", "28", + "ETSI", "5G", "40M", "HT", "3T", "118", "28", + "MKK", "5G", "40M", "HT", "3T", "118", "28", + "FCC", "5G", "40M", "HT", "3T", "126", "28", + "ETSI", "5G", "40M", "HT", "3T", "126", "28", + "MKK", "5G", "40M", "HT", "3T", "126", "28", + "FCC", "5G", "40M", "HT", "3T", "134", "26", + "ETSI", "5G", "40M", "HT", "3T", "134", "28", + "MKK", "5G", "40M", "HT", "3T", "134", "28", + "FCC", "5G", "40M", "HT", "3T", "151", "22", + "ETSI", "5G", "40M", "HT", "3T", "151", "28", + "MKK", "5G", "40M", "HT", "3T", "151", "63", + "FCC", "5G", "40M", "HT", "3T", "159", "28", + "ETSI", "5G", "40M", "HT", "3T", "159", "28", + "MKK", "5G", "40M", "HT", "3T", "159", "63", + "FCC", "5G", "40M", "HT", "4T", "38", "18", + "ETSI", "5G", "40M", "HT", "4T", "38", "26", + "MKK", "5G", "40M", "HT", "4T", "38", "26", + "FCC", "5G", "40M", "HT", "4T", "46", "26", + "ETSI", "5G", "40M", "HT", "4T", "46", "26", + "MKK", "5G", "40M", "HT", "4T", "46", "26", + "FCC", "5G", "40M", "HT", "4T", "54", "26", + "ETSI", "5G", "40M", "HT", "4T", "54", "26", + "MKK", "5G", "40M", "HT", "4T", "54", "26", + "FCC", "5G", "40M", "HT", "4T", "62", "18", + "ETSI", "5G", "40M", "HT", "4T", "62", "26", + "MKK", "5G", "40M", "HT", "4T", "62", "26", + "FCC", "5G", "40M", "HT", "4T", "102", "20", + "ETSI", "5G", "40M", "HT", "4T", "102", "26", + "MKK", "5G", "40M", "HT", "4T", "102", "26", + "FCC", "5G", "40M", "HT", "4T", "110", "26", + "ETSI", "5G", "40M", "HT", "4T", "110", "26", + "MKK", "5G", "40M", "HT", "4T", "110", "26", + "FCC", "5G", "40M", "HT", "4T", "118", "26", + "ETSI", "5G", "40M", "HT", "4T", "118", "26", + "MKK", "5G", "40M", "HT", "4T", "118", "26", + "FCC", "5G", "40M", "HT", "4T", "126", "26", + "ETSI", "5G", "40M", "HT", "4T", "126", "26", + "MKK", "5G", "40M", "HT", "4T", "126", "26", + "FCC", "5G", "40M", "HT", "4T", "134", "24", + "ETSI", "5G", "40M", "HT", "4T", "134", "26", + "MKK", "5G", "40M", "HT", "4T", "134", "26", + "FCC", "5G", "40M", "HT", "4T", "151", "20", + "ETSI", "5G", "40M", "HT", "4T", "151", "26", + "MKK", "5G", "40M", "HT", "4T", "151", "63", + "FCC", "5G", "40M", "HT", "4T", "159", "26", + "ETSI", "5G", "40M", "HT", "4T", "159", "26", + "MKK", "5G", "40M", "HT", "4T", "159", "63", + "FCC", "5G", "80M", "VHT", "1T", "42", "24", + "ETSI", "5G", "80M", "VHT", "1T", "42", "32", + "MKK", "5G", "80M", "VHT", "1T", "42", "32", + "FCC", "5G", "80M", "VHT", "1T", "58", "24", + "ETSI", "5G", "80M", "VHT", "1T", "58", "32", + "MKK", "5G", "80M", "VHT", "1T", "58", "32", + "FCC", "5G", "80M", "VHT", "1T", "106", "24", + "ETSI", "5G", "80M", "VHT", "1T", "106", "32", + "MKK", "5G", "80M", "VHT", "1T", "106", "32", + "FCC", "5G", "80M", "VHT", "1T", "122", "32", + "ETSI", "5G", "80M", "VHT", "1T", "122", "32", + "MKK", "5G", "80M", "VHT", "1T", "122", "32", + "FCC", "5G", "80M", "VHT", "1T", "155", "26", + "ETSI", "5G", "80M", "VHT", "1T", "155", "32", + "MKK", "5G", "80M", "VHT", "1T", "155", "63", + "FCC", "5G", "80M", "VHT", "2T", "42", "22", + "ETSI", "5G", "80M", "VHT", "2T", "42", "30", + "MKK", "5G", "80M", "VHT", "2T", "42", "30", + "FCC", "5G", "80M", "VHT", "2T", "58", "22", + "ETSI", "5G", "80M", "VHT", "2T", "58", "30", + "MKK", "5G", "80M", "VHT", "2T", "58", "30", + "FCC", "5G", "80M", "VHT", "2T", "106", "22", + "ETSI", "5G", "80M", "VHT", "2T", "106", "30", + "MKK", "5G", "80M", "VHT", "2T", "106", "30", + "FCC", "5G", "80M", "VHT", "2T", "122", "30", + "ETSI", "5G", "80M", "VHT", "2T", "122", "30", + "MKK", "5G", "80M", "VHT", "2T", "122", "30", + "FCC", "5G", "80M", "VHT", "2T", "155", "24", + "ETSI", "5G", "80M", "VHT", "2T", "155", "30", + "MKK", "5G", "80M", "VHT", "2T", "155", "63", + "FCC", "5G", "80M", "VHT", "3T", "42", "20", + "ETSI", "5G", "80M", "VHT", "3T", "42", "28", + "MKK", "5G", "80M", "VHT", "3T", "42", "28", + "FCC", "5G", "80M", "VHT", "3T", "58", "20", + "ETSI", "5G", "80M", "VHT", "3T", "58", "28", + "MKK", "5G", "80M", "VHT", "3T", "58", "28", + "FCC", "5G", "80M", "VHT", "3T", "106", "20", + "ETSI", "5G", "80M", "VHT", "3T", "106", "28", + "MKK", "5G", "80M", "VHT", "3T", "106", "28", + "FCC", "5G", "80M", "VHT", "3T", "122", "28", + "ETSI", "5G", "80M", "VHT", "3T", "122", "28", + "MKK", "5G", "80M", "VHT", "3T", "122", "28", + "FCC", "5G", "80M", "VHT", "3T", "155", "20", + "ETSI", "5G", "80M", "VHT", "3T", "155", "28", + "MKK", "5G", "80M", "VHT", "3T", "155", "63", + "FCC", "5G", "80M", "VHT", "4T", "42", "18", + "ETSI", "5G", "80M", "VHT", "4T", "42", "26", + "MKK", "5G", "80M", "VHT", "4T", "42", "26", + "FCC", "5G", "80M", "VHT", "4T", "58", "18", + "ETSI", "5G", "80M", "VHT", "4T", "58", "26", + "MKK", "5G", "80M", "VHT", "4T", "58", "26", + "FCC", "5G", "80M", "VHT", "4T", "106", "18", + "ETSI", "5G", "80M", "VHT", "4T", "106", "26", + "MKK", "5G", "80M", "VHT", "4T", "106", "26", + "FCC", "5G", "80M", "VHT", "4T", "122", "26", + "ETSI", "5G", "80M", "VHT", "4T", "122", "26", + "MKK", "5G", "80M", "VHT", "4T", "122", "26", + "FCC", "5G", "80M", "VHT", "4T", "155", "18", + "ETSI", "5G", "80M", "VHT", "4T", "155", "26", + "MKK", "5G", "80M", "VHT", "4T", "155", "63" +}; +#endif + +void +odm_read_and_config_mp_8814a_txpwr_lmt_type1(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE1 + + u32 i = 0; +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type1) / sizeof(u8); + u8 *array = (u8 *)array_mp_8814a_txpwr_lmt_type1; +#else + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type1) / sizeof(u8 *); + u8 **array = (u8 **)array_mp_8814a_txpwr_lmt_type1; +#endif + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrLmt, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrLmt = array_len / 7; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + for (i = 0; i < array_len; i += 7) { +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u8 regulation = array[i]; + u8 band = array[i + 1]; + u8 bandwidth = array[i + 2]; + u8 rate = array[i + 3]; + u8 rf_path = array[i + 4]; + u8 chnl = array[i + 5]; + u8 val = array[i + 6]; +#else + u8 *regulation = array[i]; + u8 *band = array[i + 1]; + u8 *bandwidth = array[i + 2]; + u8 *rate = array[i + 3]; + u8 *rf_path = array[i + 4]; + u8 *chnl = array[i + 5]; + u8 *val = array[i + 6]; +#endif + + odm_config_bb_txpwr_lmt_8814a(dm, regulation, band, bandwidth, + rate, rf_path, chnl, val); +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrLmt[i / 7], 100, "\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\",", + regulation, band, bandwidth, rate, rf_path, chnl, val); +#endif + } + +#endif +} + +/****************************************************************************** + * txpwr_lmt_type10.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE10 +const char *array_mp_8814a_txpwr_lmt_type10[] = { + "FCC", "2.4G", "20M", "CCK", "1T", "01", "42", + "ETSI", "2.4G", "20M", "CCK", "1T", "01", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "01", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "02", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "02", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "02", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "03", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "03", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "03", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "04", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "04", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "04", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "05", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "05", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "05", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "06", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "06", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "06", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "07", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "07", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "07", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "08", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "08", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "08", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "09", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "09", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "09", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "10", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "10", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "10", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "11", "44", + "ETSI", "2.4G", "20M", "CCK", "1T", "11", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "11", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "12", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "12", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "12", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "13", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "13", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "13", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "14", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", + "MKK", "2.4G", "20M", "CCK", "1T", "14", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "01", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "01", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "02", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "02", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "03", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "03", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "04", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "04", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "05", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "05", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "06", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "06", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "07", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "07", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "08", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "08", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "09", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "09", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "10", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "10", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "11", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "11", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "12", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "12", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "13", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "13", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63", + "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "1T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "01", "42", + "MKK", "2.4G", "20M", "HT", "1T", "01", "42", + "FCC", "2.4G", "20M", "HT", "1T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "02", "42", + "MKK", "2.4G", "20M", "HT", "1T", "02", "42", + "FCC", "2.4G", "20M", "HT", "1T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "03", "42", + "MKK", "2.4G", "20M", "HT", "1T", "03", "42", + "FCC", "2.4G", "20M", "HT", "1T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "04", "42", + "MKK", "2.4G", "20M", "HT", "1T", "04", "42", + "FCC", "2.4G", "20M", "HT", "1T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "05", "42", + "MKK", "2.4G", "20M", "HT", "1T", "05", "42", + "FCC", "2.4G", "20M", "HT", "1T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "06", "42", + "MKK", "2.4G", "20M", "HT", "1T", "06", "42", + "FCC", "2.4G", "20M", "HT", "1T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "07", "42", + "MKK", "2.4G", "20M", "HT", "1T", "07", "42", + "FCC", "2.4G", "20M", "HT", "1T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "08", "42", + "MKK", "2.4G", "20M", "HT", "1T", "08", "42", + "FCC", "2.4G", "20M", "HT", "1T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "09", "42", + "MKK", "2.4G", "20M", "HT", "1T", "09", "42", + "FCC", "2.4G", "20M", "HT", "1T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "10", "42", + "MKK", "2.4G", "20M", "HT", "1T", "10", "42", + "FCC", "2.4G", "20M", "HT", "1T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "1T", "11", "42", + "MKK", "2.4G", "20M", "HT", "1T", "11", "42", + "FCC", "2.4G", "20M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "12", "42", + "MKK", "2.4G", "20M", "HT", "1T", "12", "42", + "FCC", "2.4G", "20M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "13", "42", + "MKK", "2.4G", "20M", "HT", "1T", "13", "42", + "FCC", "2.4G", "20M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "14", "63", + "MKK", "2.4G", "20M", "HT", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "2T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "01", "40", + "MKK", "2.4G", "20M", "HT", "2T", "01", "40", + "FCC", "2.4G", "20M", "HT", "2T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "02", "40", + "MKK", "2.4G", "20M", "HT", "2T", "02", "40", + "FCC", "2.4G", "20M", "HT", "2T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "03", "40", + "MKK", "2.4G", "20M", "HT", "2T", "03", "40", + "FCC", "2.4G", "20M", "HT", "2T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "04", "40", + "MKK", "2.4G", "20M", "HT", "2T", "04", "40", + "FCC", "2.4G", "20M", "HT", "2T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "05", "40", + "MKK", "2.4G", "20M", "HT", "2T", "05", "40", + "FCC", "2.4G", "20M", "HT", "2T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "06", "40", + "MKK", "2.4G", "20M", "HT", "2T", "06", "40", + "FCC", "2.4G", "20M", "HT", "2T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "07", "40", + "MKK", "2.4G", "20M", "HT", "2T", "07", "40", + "FCC", "2.4G", "20M", "HT", "2T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "08", "40", + "MKK", "2.4G", "20M", "HT", "2T", "08", "40", + "FCC", "2.4G", "20M", "HT", "2T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "09", "40", + "MKK", "2.4G", "20M", "HT", "2T", "09", "40", + "FCC", "2.4G", "20M", "HT", "2T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "10", "40", + "MKK", "2.4G", "20M", "HT", "2T", "10", "40", + "FCC", "2.4G", "20M", "HT", "2T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "2T", "11", "40", + "MKK", "2.4G", "20M", "HT", "2T", "11", "40", + "FCC", "2.4G", "20M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "12", "40", + "MKK", "2.4G", "20M", "HT", "2T", "12", "40", + "FCC", "2.4G", "20M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "13", "40", + "MKK", "2.4G", "20M", "HT", "2T", "13", "40", + "FCC", "2.4G", "20M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", + "MKK", "2.4G", "20M", "HT", "2T", "14", "63", + "FCC", "2.4G", "20M", "HT", "3T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "3T", "01", "40", + "MKK", "2.4G", "20M", "HT", "3T", "01", "40", + "FCC", "2.4G", "20M", "HT", "3T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "02", "40", + "MKK", "2.4G", "20M", "HT", "3T", "02", "40", + "FCC", "2.4G", "20M", "HT", "3T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "03", "40", + "MKK", "2.4G", "20M", "HT", "3T", "03", "40", + "FCC", "2.4G", "20M", "HT", "3T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "04", "40", + "MKK", "2.4G", "20M", "HT", "3T", "04", "40", + "FCC", "2.4G", "20M", "HT", "3T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "05", "40", + "MKK", "2.4G", "20M", "HT", "3T", "05", "40", + "FCC", "2.4G", "20M", "HT", "3T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "06", "40", + "MKK", "2.4G", "20M", "HT", "3T", "06", "40", + "FCC", "2.4G", "20M", "HT", "3T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "07", "40", + "MKK", "2.4G", "20M", "HT", "3T", "07", "40", + "FCC", "2.4G", "20M", "HT", "3T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "08", "40", + "MKK", "2.4G", "20M", "HT", "3T", "08", "40", + "FCC", "2.4G", "20M", "HT", "3T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "09", "40", + "MKK", "2.4G", "20M", "HT", "3T", "09", "40", + "FCC", "2.4G", "20M", "HT", "3T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "10", "40", + "MKK", "2.4G", "20M", "HT", "3T", "10", "40", + "FCC", "2.4G", "20M", "HT", "3T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "11", "40", + "MKK", "2.4G", "20M", "HT", "3T", "11", "40", + "FCC", "2.4G", "20M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "12", "40", + "MKK", "2.4G", "20M", "HT", "3T", "12", "40", + "FCC", "2.4G", "20M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "13", "40", + "MKK", "2.4G", "20M", "HT", "3T", "13", "40", + "FCC", "2.4G", "20M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "14", "63", + "MKK", "2.4G", "20M", "HT", "3T", "14", "63", + "FCC", "2.4G", "20M", "HT", "4T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "4T", "01", "40", + "MKK", "2.4G", "20M", "HT", "4T", "01", "40", + "FCC", "2.4G", "20M", "HT", "4T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "02", "40", + "MKK", "2.4G", "20M", "HT", "4T", "02", "40", + "FCC", "2.4G", "20M", "HT", "4T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "03", "40", + "MKK", "2.4G", "20M", "HT", "4T", "03", "40", + "FCC", "2.4G", "20M", "HT", "4T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "04", "40", + "MKK", "2.4G", "20M", "HT", "4T", "04", "40", + "FCC", "2.4G", "20M", "HT", "4T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "05", "40", + "MKK", "2.4G", "20M", "HT", "4T", "05", "40", + "FCC", "2.4G", "20M", "HT", "4T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "06", "40", + "MKK", "2.4G", "20M", "HT", "4T", "06", "40", + "FCC", "2.4G", "20M", "HT", "4T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "07", "40", + "MKK", "2.4G", "20M", "HT", "4T", "07", "40", + "FCC", "2.4G", "20M", "HT", "4T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "08", "40", + "MKK", "2.4G", "20M", "HT", "4T", "08", "40", + "FCC", "2.4G", "20M", "HT", "4T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "09", "40", + "MKK", "2.4G", "20M", "HT", "4T", "09", "40", + "FCC", "2.4G", "20M", "HT", "4T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "10", "40", + "MKK", "2.4G", "20M", "HT", "4T", "10", "40", + "FCC", "2.4G", "20M", "HT", "4T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "4T", "11", "40", + "MKK", "2.4G", "20M", "HT", "4T", "11", "40", + "FCC", "2.4G", "20M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "12", "40", + "MKK", "2.4G", "20M", "HT", "4T", "12", "40", + "FCC", "2.4G", "20M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "13", "40", + "MKK", "2.4G", "20M", "HT", "4T", "13", "40", + "FCC", "2.4G", "20M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "14", "63", + "MKK", "2.4G", "20M", "HT", "4T", "14", "63", + "FCC", "2.4G", "40M", "HT", "1T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "01", "63", + "MKK", "2.4G", "40M", "HT", "1T", "01", "63", + "FCC", "2.4G", "40M", "HT", "1T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "02", "63", + "MKK", "2.4G", "40M", "HT", "1T", "02", "63", + "FCC", "2.4G", "40M", "HT", "1T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "1T", "03", "34", + "MKK", "2.4G", "40M", "HT", "1T", "03", "34", + "FCC", "2.4G", "40M", "HT", "1T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "04", "34", + "MKK", "2.4G", "40M", "HT", "1T", "04", "34", + "FCC", "2.4G", "40M", "HT", "1T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "05", "34", + "MKK", "2.4G", "40M", "HT", "1T", "05", "34", + "FCC", "2.4G", "40M", "HT", "1T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "06", "34", + "MKK", "2.4G", "40M", "HT", "1T", "06", "34", + "FCC", "2.4G", "40M", "HT", "1T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "07", "34", + "MKK", "2.4G", "40M", "HT", "1T", "07", "34", + "FCC", "2.4G", "40M", "HT", "1T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "08", "34", + "MKK", "2.4G", "40M", "HT", "1T", "08", "34", + "FCC", "2.4G", "40M", "HT", "1T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "09", "34", + "MKK", "2.4G", "40M", "HT", "1T", "09", "34", + "FCC", "2.4G", "40M", "HT", "1T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "10", "34", + "MKK", "2.4G", "40M", "HT", "1T", "10", "34", + "FCC", "2.4G", "40M", "HT", "1T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "1T", "11", "34", + "MKK", "2.4G", "40M", "HT", "1T", "11", "34", + "FCC", "2.4G", "40M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "12", "34", + "MKK", "2.4G", "40M", "HT", "1T", "12", "34", + "FCC", "2.4G", "40M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "13", "34", + "MKK", "2.4G", "40M", "HT", "1T", "13", "34", + "FCC", "2.4G", "40M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "14", "63", + "MKK", "2.4G", "40M", "HT", "1T", "14", "63", + "FCC", "2.4G", "40M", "HT", "2T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", + "MKK", "2.4G", "40M", "HT", "2T", "01", "63", + "FCC", "2.4G", "40M", "HT", "2T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "02", "63", + "MKK", "2.4G", "40M", "HT", "2T", "02", "63", + "FCC", "2.4G", "40M", "HT", "2T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "03", "34", + "MKK", "2.4G", "40M", "HT", "2T", "03", "34", + "FCC", "2.4G", "40M", "HT", "2T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "04", "34", + "MKK", "2.4G", "40M", "HT", "2T", "04", "34", + "FCC", "2.4G", "40M", "HT", "2T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "05", "34", + "MKK", "2.4G", "40M", "HT", "2T", "05", "34", + "FCC", "2.4G", "40M", "HT", "2T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "06", "34", + "MKK", "2.4G", "40M", "HT", "2T", "06", "34", + "FCC", "2.4G", "40M", "HT", "2T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "07", "34", + "MKK", "2.4G", "40M", "HT", "2T", "07", "34", + "FCC", "2.4G", "40M", "HT", "2T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "08", "34", + "MKK", "2.4G", "40M", "HT", "2T", "08", "34", + "FCC", "2.4G", "40M", "HT", "2T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "09", "34", + "MKK", "2.4G", "40M", "HT", "2T", "09", "34", + "FCC", "2.4G", "40M", "HT", "2T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "10", "34", + "MKK", "2.4G", "40M", "HT", "2T", "10", "34", + "FCC", "2.4G", "40M", "HT", "2T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "2T", "11", "34", + "MKK", "2.4G", "40M", "HT", "2T", "11", "34", + "FCC", "2.4G", "40M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "12", "34", + "MKK", "2.4G", "40M", "HT", "2T", "12", "34", + "FCC", "2.4G", "40M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "13", "34", + "MKK", "2.4G", "40M", "HT", "2T", "13", "34", + "FCC", "2.4G", "40M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "14", "63", + "MKK", "2.4G", "40M", "HT", "2T", "14", "63", + "FCC", "2.4G", "40M", "HT", "3T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "01", "63", + "MKK", "2.4G", "40M", "HT", "3T", "01", "63", + "FCC", "2.4G", "40M", "HT", "3T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "02", "63", + "MKK", "2.4G", "40M", "HT", "3T", "02", "63", + "FCC", "2.4G", "40M", "HT", "3T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "3T", "03", "34", + "MKK", "2.4G", "40M", "HT", "3T", "03", "34", + "FCC", "2.4G", "40M", "HT", "3T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "04", "34", + "MKK", "2.4G", "40M", "HT", "3T", "04", "34", + "FCC", "2.4G", "40M", "HT", "3T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "05", "34", + "MKK", "2.4G", "40M", "HT", "3T", "05", "34", + "FCC", "2.4G", "40M", "HT", "3T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "06", "34", + "MKK", "2.4G", "40M", "HT", "3T", "06", "34", + "FCC", "2.4G", "40M", "HT", "3T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "07", "34", + "MKK", "2.4G", "40M", "HT", "3T", "07", "34", + "FCC", "2.4G", "40M", "HT", "3T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "08", "34", + "MKK", "2.4G", "40M", "HT", "3T", "08", "34", + "FCC", "2.4G", "40M", "HT", "3T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "09", "34", + "MKK", "2.4G", "40M", "HT", "3T", "09", "34", + "FCC", "2.4G", "40M", "HT", "3T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "10", "34", + "MKK", "2.4G", "40M", "HT", "3T", "10", "34", + "FCC", "2.4G", "40M", "HT", "3T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "11", "34", + "MKK", "2.4G", "40M", "HT", "3T", "11", "34", + "FCC", "2.4G", "40M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "12", "34", + "MKK", "2.4G", "40M", "HT", "3T", "12", "34", + "FCC", "2.4G", "40M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "13", "34", + "MKK", "2.4G", "40M", "HT", "3T", "13", "34", + "FCC", "2.4G", "40M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "14", "63", + "MKK", "2.4G", "40M", "HT", "3T", "14", "63", + "FCC", "2.4G", "40M", "HT", "4T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "01", "63", + "MKK", "2.4G", "40M", "HT", "4T", "01", "63", + "FCC", "2.4G", "40M", "HT", "4T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "02", "63", + "MKK", "2.4G", "40M", "HT", "4T", "02", "63", + "FCC", "2.4G", "40M", "HT", "4T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "4T", "03", "34", + "MKK", "2.4G", "40M", "HT", "4T", "03", "34", + "FCC", "2.4G", "40M", "HT", "4T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "04", "34", + "MKK", "2.4G", "40M", "HT", "4T", "04", "34", + "FCC", "2.4G", "40M", "HT", "4T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "05", "34", + "MKK", "2.4G", "40M", "HT", "4T", "05", "34", + "FCC", "2.4G", "40M", "HT", "4T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "06", "34", + "MKK", "2.4G", "40M", "HT", "4T", "06", "34", + "FCC", "2.4G", "40M", "HT", "4T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "07", "34", + "MKK", "2.4G", "40M", "HT", "4T", "07", "34", + "FCC", "2.4G", "40M", "HT", "4T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "08", "34", + "MKK", "2.4G", "40M", "HT", "4T", "08", "34", + "FCC", "2.4G", "40M", "HT", "4T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "09", "34", + "MKK", "2.4G", "40M", "HT", "4T", "09", "34", + "FCC", "2.4G", "40M", "HT", "4T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "10", "34", + "MKK", "2.4G", "40M", "HT", "4T", "10", "34", + "FCC", "2.4G", "40M", "HT", "4T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "4T", "11", "34", + "MKK", "2.4G", "40M", "HT", "4T", "11", "34", + "FCC", "2.4G", "40M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "12", "34", + "MKK", "2.4G", "40M", "HT", "4T", "12", "34", + "FCC", "2.4G", "40M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "13", "34", + "MKK", "2.4G", "40M", "HT", "4T", "13", "34", + "FCC", "2.4G", "40M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "14", "63", + "MKK", "2.4G", "40M", "HT", "4T", "14", "63", + "FCC", "5G", "20M", "OFDM", "1T", "36", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "36", "42", + "MKK", "5G", "20M", "OFDM", "1T", "36", "42", + "FCC", "5G", "20M", "OFDM", "1T", "40", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "40", "42", + "MKK", "5G", "20M", "OFDM", "1T", "40", "42", + "FCC", "5G", "20M", "OFDM", "1T", "44", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "44", "42", + "MKK", "5G", "20M", "OFDM", "1T", "44", "42", + "FCC", "5G", "20M", "OFDM", "1T", "48", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "48", "42", + "MKK", "5G", "20M", "OFDM", "1T", "48", "42", + "FCC", "5G", "20M", "OFDM", "1T", "52", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "52", "42", + "MKK", "5G", "20M", "OFDM", "1T", "52", "42", + "FCC", "5G", "20M", "OFDM", "1T", "56", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "56", "42", + "MKK", "5G", "20M", "OFDM", "1T", "56", "42", + "FCC", "5G", "20M", "OFDM", "1T", "60", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "60", "42", + "MKK", "5G", "20M", "OFDM", "1T", "60", "42", + "FCC", "5G", "20M", "OFDM", "1T", "64", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "64", "42", + "MKK", "5G", "20M", "OFDM", "1T", "64", "42", + "FCC", "5G", "20M", "OFDM", "1T", "100", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "100", "42", + "MKK", "5G", "20M", "OFDM", "1T", "100", "42", + "FCC", "5G", "20M", "OFDM", "1T", "104", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "104", "42", + "MKK", "5G", "20M", "OFDM", "1T", "104", "42", + "FCC", "5G", "20M", "OFDM", "1T", "108", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "108", "42", + "MKK", "5G", "20M", "OFDM", "1T", "108", "42", + "FCC", "5G", "20M", "OFDM", "1T", "112", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "112", "42", + "MKK", "5G", "20M", "OFDM", "1T", "112", "42", + "FCC", "5G", "20M", "OFDM", "1T", "116", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "116", "42", + "MKK", "5G", "20M", "OFDM", "1T", "116", "42", + "FCC", "5G", "20M", "OFDM", "1T", "120", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "120", "42", + "MKK", "5G", "20M", "OFDM", "1T", "120", "42", + "FCC", "5G", "20M", "OFDM", "1T", "124", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "124", "42", + "MKK", "5G", "20M", "OFDM", "1T", "124", "42", + "FCC", "5G", "20M", "OFDM", "1T", "128", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "128", "42", + "MKK", "5G", "20M", "OFDM", "1T", "128", "42", + "FCC", "5G", "20M", "OFDM", "1T", "132", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "132", "42", + "MKK", "5G", "20M", "OFDM", "1T", "132", "42", + "FCC", "5G", "20M", "OFDM", "1T", "136", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "136", "42", + "MKK", "5G", "20M", "OFDM", "1T", "136", "42", + "FCC", "5G", "20M", "OFDM", "1T", "140", "40", + "ETSI", "5G", "20M", "OFDM", "1T", "140", "40", + "MKK", "5G", "20M", "OFDM", "1T", "140", "40", + "FCC", "5G", "20M", "OFDM", "1T", "149", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "149", "44", + "MKK", "5G", "20M", "OFDM", "1T", "149", "63", + "FCC", "5G", "20M", "OFDM", "1T", "153", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "153", "44", + "MKK", "5G", "20M", "OFDM", "1T", "153", "63", + "FCC", "5G", "20M", "OFDM", "1T", "157", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "157", "44", + "MKK", "5G", "20M", "OFDM", "1T", "157", "63", + "FCC", "5G", "20M", "OFDM", "1T", "161", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "161", "44", + "MKK", "5G", "20M", "OFDM", "1T", "161", "63", + "FCC", "5G", "20M", "OFDM", "1T", "165", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "165", "44", + "MKK", "5G", "20M", "OFDM", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "1T", "36", "32", + "ETSI", "5G", "20M", "HT", "1T", "36", "32", + "MKK", "5G", "20M", "HT", "1T", "36", "32", + "FCC", "5G", "20M", "HT", "1T", "40", "32", + "ETSI", "5G", "20M", "HT", "1T", "40", "32", + "MKK", "5G", "20M", "HT", "1T", "40", "32", + "FCC", "5G", "20M", "HT", "1T", "44", "32", + "ETSI", "5G", "20M", "HT", "1T", "44", "32", + "MKK", "5G", "20M", "HT", "1T", "44", "32", + "FCC", "5G", "20M", "HT", "1T", "48", "36", + "ETSI", "5G", "20M", "HT", "1T", "48", "36", + "MKK", "5G", "20M", "HT", "1T", "48", "36", + "FCC", "5G", "20M", "HT", "1T", "52", "36", + "ETSI", "5G", "20M", "HT", "1T", "52", "36", + "MKK", "5G", "20M", "HT", "1T", "52", "36", + "FCC", "5G", "20M", "HT", "1T", "56", "32", + "ETSI", "5G", "20M", "HT", "1T", "56", "32", + "MKK", "5G", "20M", "HT", "1T", "56", "32", + "FCC", "5G", "20M", "HT", "1T", "60", "32", + "ETSI", "5G", "20M", "HT", "1T", "60", "32", + "MKK", "5G", "20M", "HT", "1T", "60", "32", + "FCC", "5G", "20M", "HT", "1T", "64", "32", + "ETSI", "5G", "20M", "HT", "1T", "64", "32", + "MKK", "5G", "20M", "HT", "1T", "64", "32", + "FCC", "5G", "20M", "HT", "1T", "100", "32", + "ETSI", "5G", "20M", "HT", "1T", "100", "32", + "MKK", "5G", "20M", "HT", "1T", "100", "32", + "FCC", "5G", "20M", "HT", "1T", "104", "32", + "ETSI", "5G", "20M", "HT", "1T", "104", "32", + "MKK", "5G", "20M", "HT", "1T", "104", "32", + "FCC", "5G", "20M", "HT", "1T", "108", "32", + "ETSI", "5G", "20M", "HT", "1T", "108", "32", + "MKK", "5G", "20M", "HT", "1T", "108", "32", + "FCC", "5G", "20M", "HT", "1T", "112", "32", + "ETSI", "5G", "20M", "HT", "1T", "112", "32", + "MKK", "5G", "20M", "HT", "1T", "112", "32", + "FCC", "5G", "20M", "HT", "1T", "116", "32", + "ETSI", "5G", "20M", "HT", "1T", "116", "32", + "MKK", "5G", "20M", "HT", "1T", "116", "32", + "FCC", "5G", "20M", "HT", "1T", "120", "32", + "ETSI", "5G", "20M", "HT", "1T", "120", "32", + "MKK", "5G", "20M", "HT", "1T", "120", "32", + "FCC", "5G", "20M", "HT", "1T", "124", "32", + "ETSI", "5G", "20M", "HT", "1T", "124", "32", + "MKK", "5G", "20M", "HT", "1T", "124", "32", + "FCC", "5G", "20M", "HT", "1T", "128", "32", + "ETSI", "5G", "20M", "HT", "1T", "128", "32", + "MKK", "5G", "20M", "HT", "1T", "128", "32", + "FCC", "5G", "20M", "HT", "1T", "132", "32", + "ETSI", "5G", "20M", "HT", "1T", "132", "32", + "MKK", "5G", "20M", "HT", "1T", "132", "32", + "FCC", "5G", "20M", "HT", "1T", "136", "32", + "ETSI", "5G", "20M", "HT", "1T", "136", "32", + "MKK", "5G", "20M", "HT", "1T", "136", "32", + "FCC", "5G", "20M", "HT", "1T", "140", "30", + "ETSI", "5G", "20M", "HT", "1T", "140", "30", + "MKK", "5G", "20M", "HT", "1T", "140", "30", + "FCC", "5G", "20M", "HT", "1T", "149", "40", + "ETSI", "5G", "20M", "HT", "1T", "149", "40", + "MKK", "5G", "20M", "HT", "1T", "149", "63", + "FCC", "5G", "20M", "HT", "1T", "153", "40", + "ETSI", "5G", "20M", "HT", "1T", "153", "40", + "MKK", "5G", "20M", "HT", "1T", "153", "63", + "FCC", "5G", "20M", "HT", "1T", "157", "40", + "ETSI", "5G", "20M", "HT", "1T", "157", "40", + "MKK", "5G", "20M", "HT", "1T", "157", "63", + "FCC", "5G", "20M", "HT", "1T", "161", "40", + "ETSI", "5G", "20M", "HT", "1T", "161", "40", + "MKK", "5G", "20M", "HT", "1T", "161", "63", + "FCC", "5G", "20M", "HT", "1T", "165", "42", + "ETSI", "5G", "20M", "HT", "1T", "165", "42", + "MKK", "5G", "20M", "HT", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "2T", "36", "32", + "ETSI", "5G", "20M", "HT", "2T", "36", "32", + "MKK", "5G", "20M", "HT", "2T", "36", "32", + "FCC", "5G", "20M", "HT", "2T", "40", "32", + "ETSI", "5G", "20M", "HT", "2T", "40", "32", + "MKK", "5G", "20M", "HT", "2T", "40", "32", + "FCC", "5G", "20M", "HT", "2T", "44", "32", + "ETSI", "5G", "20M", "HT", "2T", "44", "32", + "MKK", "5G", "20M", "HT", "2T", "44", "32", + "FCC", "5G", "20M", "HT", "2T", "48", "36", + "ETSI", "5G", "20M", "HT", "2T", "48", "36", + "MKK", "5G", "20M", "HT", "2T", "48", "36", + "FCC", "5G", "20M", "HT", "2T", "52", "36", + "ETSI", "5G", "20M", "HT", "2T", "52", "36", + "MKK", "5G", "20M", "HT", "2T", "52", "36", + "FCC", "5G", "20M", "HT", "2T", "56", "32", + "ETSI", "5G", "20M", "HT", "2T", "56", "32", + "MKK", "5G", "20M", "HT", "2T", "56", "32", + "FCC", "5G", "20M", "HT", "2T", "60", "32", + "ETSI", "5G", "20M", "HT", "2T", "60", "32", + "MKK", "5G", "20M", "HT", "2T", "60", "32", + "FCC", "5G", "20M", "HT", "2T", "64", "32", + "ETSI", "5G", "20M", "HT", "2T", "64", "32", + "MKK", "5G", "20M", "HT", "2T", "64", "32", + "FCC", "5G", "20M", "HT", "2T", "100", "32", + "ETSI", "5G", "20M", "HT", "2T", "100", "32", + "MKK", "5G", "20M", "HT", "2T", "100", "32", + "FCC", "5G", "20M", "HT", "2T", "104", "32", + "ETSI", "5G", "20M", "HT", "2T", "104", "32", + "MKK", "5G", "20M", "HT", "2T", "104", "32", + "FCC", "5G", "20M", "HT", "2T", "108", "32", + "ETSI", "5G", "20M", "HT", "2T", "108", "32", + "MKK", "5G", "20M", "HT", "2T", "108", "32", + "FCC", "5G", "20M", "HT", "2T", "112", "32", + "ETSI", "5G", "20M", "HT", "2T", "112", "32", + "MKK", "5G", "20M", "HT", "2T", "112", "32", + "FCC", "5G", "20M", "HT", "2T", "116", "32", + "ETSI", "5G", "20M", "HT", "2T", "116", "32", + "MKK", "5G", "20M", "HT", "2T", "116", "32", + "FCC", "5G", "20M", "HT", "2T", "120", "32", + "ETSI", "5G", "20M", "HT", "2T", "120", "32", + "MKK", "5G", "20M", "HT", "2T", "120", "32", + "FCC", "5G", "20M", "HT", "2T", "124", "32", + "ETSI", "5G", "20M", "HT", "2T", "124", "32", + "MKK", "5G", "20M", "HT", "2T", "124", "32", + "FCC", "5G", "20M", "HT", "2T", "128", "32", + "ETSI", "5G", "20M", "HT", "2T", "128", "32", + "MKK", "5G", "20M", "HT", "2T", "128", "32", + "FCC", "5G", "20M", "HT", "2T", "132", "32", + "ETSI", "5G", "20M", "HT", "2T", "132", "32", + "MKK", "5G", "20M", "HT", "2T", "132", "32", + "FCC", "5G", "20M", "HT", "2T", "136", "32", + "ETSI", "5G", "20M", "HT", "2T", "136", "32", + "MKK", "5G", "20M", "HT", "2T", "136", "32", + "FCC", "5G", "20M", "HT", "2T", "140", "30", + "ETSI", "5G", "20M", "HT", "2T", "140", "30", + "MKK", "5G", "20M", "HT", "2T", "140", "30", + "FCC", "5G", "20M", "HT", "2T", "149", "40", + "ETSI", "5G", "20M", "HT", "2T", "149", "40", + "MKK", "5G", "20M", "HT", "2T", "149", "63", + "FCC", "5G", "20M", "HT", "2T", "153", "40", + "ETSI", "5G", "20M", "HT", "2T", "153", "40", + "MKK", "5G", "20M", "HT", "2T", "153", "63", + "FCC", "5G", "20M", "HT", "2T", "157", "40", + "ETSI", "5G", "20M", "HT", "2T", "157", "40", + "MKK", "5G", "20M", "HT", "2T", "157", "63", + "FCC", "5G", "20M", "HT", "2T", "161", "40", + "ETSI", "5G", "20M", "HT", "2T", "161", "40", + "MKK", "5G", "20M", "HT", "2T", "161", "63", + "FCC", "5G", "20M", "HT", "2T", "165", "42", + "ETSI", "5G", "20M", "HT", "2T", "165", "42", + "MKK", "5G", "20M", "HT", "2T", "165", "63", + "FCC", "5G", "20M", "HT", "3T", "36", "32", + "ETSI", "5G", "20M", "HT", "3T", "36", "32", + "MKK", "5G", "20M", "HT", "3T", "36", "32", + "FCC", "5G", "20M", "HT", "3T", "40", "32", + "ETSI", "5G", "20M", "HT", "3T", "40", "32", + "MKK", "5G", "20M", "HT", "3T", "40", "32", + "FCC", "5G", "20M", "HT", "3T", "44", "32", + "ETSI", "5G", "20M", "HT", "3T", "44", "32", + "MKK", "5G", "20M", "HT", "3T", "44", "32", + "FCC", "5G", "20M", "HT", "3T", "48", "36", + "ETSI", "5G", "20M", "HT", "3T", "48", "36", + "MKK", "5G", "20M", "HT", "3T", "48", "36", + "FCC", "5G", "20M", "HT", "3T", "52", "36", + "ETSI", "5G", "20M", "HT", "3T", "52", "36", + "MKK", "5G", "20M", "HT", "3T", "52", "36", + "FCC", "5G", "20M", "HT", "3T", "56", "32", + "ETSI", "5G", "20M", "HT", "3T", "56", "32", + "MKK", "5G", "20M", "HT", "3T", "56", "32", + "FCC", "5G", "20M", "HT", "3T", "60", "32", + "ETSI", "5G", "20M", "HT", "3T", "60", "32", + "MKK", "5G", "20M", "HT", "3T", "60", "32", + "FCC", "5G", "20M", "HT", "3T", "64", "32", + "ETSI", "5G", "20M", "HT", "3T", "64", "32", + "MKK", "5G", "20M", "HT", "3T", "64", "32", + "FCC", "5G", "20M", "HT", "3T", "100", "32", + "ETSI", "5G", "20M", "HT", "3T", "100", "32", + "MKK", "5G", "20M", "HT", "3T", "100", "32", + "FCC", "5G", "20M", "HT", "3T", "104", "32", + "ETSI", "5G", "20M", "HT", "3T", "104", "32", + "MKK", "5G", "20M", "HT", "3T", "104", "32", + "FCC", "5G", "20M", "HT", "3T", "108", "32", + "ETSI", "5G", "20M", "HT", "3T", "108", "32", + "MKK", "5G", "20M", "HT", "3T", "108", "32", + "FCC", "5G", "20M", "HT", "3T", "112", "32", + "ETSI", "5G", "20M", "HT", "3T", "112", "32", + "MKK", "5G", "20M", "HT", "3T", "112", "32", + "FCC", "5G", "20M", "HT", "3T", "116", "32", + "ETSI", "5G", "20M", "HT", "3T", "116", "32", + "MKK", "5G", "20M", "HT", "3T", "116", "32", + "FCC", "5G", "20M", "HT", "3T", "120", "32", + "ETSI", "5G", "20M", "HT", "3T", "120", "32", + "MKK", "5G", "20M", "HT", "3T", "120", "32", + "FCC", "5G", "20M", "HT", "3T", "124", "32", + "ETSI", "5G", "20M", "HT", "3T", "124", "32", + "MKK", "5G", "20M", "HT", "3T", "124", "32", + "FCC", "5G", "20M", "HT", "3T", "128", "32", + "ETSI", "5G", "20M", "HT", "3T", "128", "32", + "MKK", "5G", "20M", "HT", "3T", "128", "32", + "FCC", "5G", "20M", "HT", "3T", "132", "32", + "ETSI", "5G", "20M", "HT", "3T", "132", "32", + "MKK", "5G", "20M", "HT", "3T", "132", "32", + "FCC", "5G", "20M", "HT", "3T", "136", "32", + "ETSI", "5G", "20M", "HT", "3T", "136", "32", + "MKK", "5G", "20M", "HT", "3T", "136", "32", + "FCC", "5G", "20M", "HT", "3T", "140", "30", + "ETSI", "5G", "20M", "HT", "3T", "140", "30", + "MKK", "5G", "20M", "HT", "3T", "140", "30", + "FCC", "5G", "20M", "HT", "3T", "149", "40", + "ETSI", "5G", "20M", "HT", "3T", "149", "40", + "MKK", "5G", "20M", "HT", "3T", "149", "63", + "FCC", "5G", "20M", "HT", "3T", "153", "40", + "ETSI", "5G", "20M", "HT", "3T", "153", "40", + "MKK", "5G", "20M", "HT", "3T", "153", "63", + "FCC", "5G", "20M", "HT", "3T", "157", "40", + "ETSI", "5G", "20M", "HT", "3T", "157", "40", + "MKK", "5G", "20M", "HT", "3T", "157", "63", + "FCC", "5G", "20M", "HT", "3T", "161", "40", + "ETSI", "5G", "20M", "HT", "3T", "161", "40", + "MKK", "5G", "20M", "HT", "3T", "161", "63", + "FCC", "5G", "20M", "HT", "3T", "165", "42", + "ETSI", "5G", "20M", "HT", "3T", "165", "42", + "MKK", "5G", "20M", "HT", "3T", "165", "63", + "FCC", "5G", "20M", "HT", "4T", "36", "32", + "ETSI", "5G", "20M", "HT", "4T", "36", "32", + "MKK", "5G", "20M", "HT", "4T", "36", "32", + "FCC", "5G", "20M", "HT", "4T", "40", "32", + "ETSI", "5G", "20M", "HT", "4T", "40", "32", + "MKK", "5G", "20M", "HT", "4T", "40", "32", + "FCC", "5G", "20M", "HT", "4T", "44", "32", + "ETSI", "5G", "20M", "HT", "4T", "44", "32", + "MKK", "5G", "20M", "HT", "4T", "44", "32", + "FCC", "5G", "20M", "HT", "4T", "48", "36", + "ETSI", "5G", "20M", "HT", "4T", "48", "36", + "MKK", "5G", "20M", "HT", "4T", "48", "36", + "FCC", "5G", "20M", "HT", "4T", "52", "36", + "ETSI", "5G", "20M", "HT", "4T", "52", "36", + "MKK", "5G", "20M", "HT", "4T", "52", "36", + "FCC", "5G", "20M", "HT", "4T", "56", "32", + "ETSI", "5G", "20M", "HT", "4T", "56", "32", + "MKK", "5G", "20M", "HT", "4T", "56", "32", + "FCC", "5G", "20M", "HT", "4T", "60", "32", + "ETSI", "5G", "20M", "HT", "4T", "60", "32", + "MKK", "5G", "20M", "HT", "4T", "60", "32", + "FCC", "5G", "20M", "HT", "4T", "64", "32", + "ETSI", "5G", "20M", "HT", "4T", "64", "32", + "MKK", "5G", "20M", "HT", "4T", "64", "32", + "FCC", "5G", "20M", "HT", "4T", "100", "32", + "ETSI", "5G", "20M", "HT", "4T", "100", "32", + "MKK", "5G", "20M", "HT", "4T", "100", "32", + "FCC", "5G", "20M", "HT", "4T", "104", "32", + "ETSI", "5G", "20M", "HT", "4T", "104", "32", + "MKK", "5G", "20M", "HT", "4T", "104", "32", + "FCC", "5G", "20M", "HT", "4T", "108", "32", + "ETSI", "5G", "20M", "HT", "4T", "108", "32", + "MKK", "5G", "20M", "HT", "4T", "108", "32", + "FCC", "5G", "20M", "HT", "4T", "112", "32", + "ETSI", "5G", "20M", "HT", "4T", "112", "32", + "MKK", "5G", "20M", "HT", "4T", "112", "32", + "FCC", "5G", "20M", "HT", "4T", "116", "32", + "ETSI", "5G", "20M", "HT", "4T", "116", "32", + "MKK", "5G", "20M", "HT", "4T", "116", "32", + "FCC", "5G", "20M", "HT", "4T", "120", "32", + "ETSI", "5G", "20M", "HT", "4T", "120", "32", + "MKK", "5G", "20M", "HT", "4T", "120", "32", + "FCC", "5G", "20M", "HT", "4T", "124", "32", + "ETSI", "5G", "20M", "HT", "4T", "124", "32", + "MKK", "5G", "20M", "HT", "4T", "124", "32", + "FCC", "5G", "20M", "HT", "4T", "128", "32", + "ETSI", "5G", "20M", "HT", "4T", "128", "32", + "MKK", "5G", "20M", "HT", "4T", "128", "32", + "FCC", "5G", "20M", "HT", "4T", "132", "32", + "ETSI", "5G", "20M", "HT", "4T", "132", "32", + "MKK", "5G", "20M", "HT", "4T", "132", "32", + "FCC", "5G", "20M", "HT", "4T", "136", "32", + "ETSI", "5G", "20M", "HT", "4T", "136", "32", + "MKK", "5G", "20M", "HT", "4T", "136", "32", + "FCC", "5G", "20M", "HT", "4T", "140", "30", + "ETSI", "5G", "20M", "HT", "4T", "140", "30", + "MKK", "5G", "20M", "HT", "4T", "140", "30", + "FCC", "5G", "20M", "HT", "4T", "149", "40", + "ETSI", "5G", "20M", "HT", "4T", "149", "40", + "MKK", "5G", "20M", "HT", "4T", "149", "63", + "FCC", "5G", "20M", "HT", "4T", "153", "40", + "ETSI", "5G", "20M", "HT", "4T", "153", "40", + "MKK", "5G", "20M", "HT", "4T", "153", "63", + "FCC", "5G", "20M", "HT", "4T", "157", "40", + "ETSI", "5G", "20M", "HT", "4T", "157", "40", + "MKK", "5G", "20M", "HT", "4T", "157", "63", + "FCC", "5G", "20M", "HT", "4T", "161", "40", + "ETSI", "5G", "20M", "HT", "4T", "161", "40", + "MKK", "5G", "20M", "HT", "4T", "161", "63", + "FCC", "5G", "20M", "HT", "4T", "165", "42", + "ETSI", "5G", "20M", "HT", "4T", "165", "42", + "MKK", "5G", "20M", "HT", "4T", "165", "63", + "FCC", "5G", "40M", "HT", "1T", "38", "32", + "ETSI", "5G", "40M", "HT", "1T", "38", "32", + "MKK", "5G", "40M", "HT", "1T", "38", "32", + "FCC", "5G", "40M", "HT", "1T", "46", "36", + "ETSI", "5G", "40M", "HT", "1T", "46", "36", + "MKK", "5G", "40M", "HT", "1T", "46", "36", + "FCC", "5G", "40M", "HT", "1T", "54", "36", + "ETSI", "5G", "40M", "HT", "1T", "54", "36", + "MKK", "5G", "40M", "HT", "1T", "54", "36", + "FCC", "5G", "40M", "HT", "1T", "62", "32", + "ETSI", "5G", "40M", "HT", "1T", "62", "32", + "MKK", "5G", "40M", "HT", "1T", "62", "32", + "FCC", "5G", "40M", "HT", "1T", "102", "30", + "ETSI", "5G", "40M", "HT", "1T", "102", "30", + "MKK", "5G", "40M", "HT", "1T", "102", "30", + "FCC", "5G", "40M", "HT", "1T", "110", "32", + "ETSI", "5G", "40M", "HT", "1T", "110", "32", + "MKK", "5G", "40M", "HT", "1T", "110", "32", + "FCC", "5G", "40M", "HT", "1T", "118", "32", + "ETSI", "5G", "40M", "HT", "1T", "118", "32", + "MKK", "5G", "40M", "HT", "1T", "118", "32", + "FCC", "5G", "40M", "HT", "1T", "126", "32", + "ETSI", "5G", "40M", "HT", "1T", "126", "32", + "MKK", "5G", "40M", "HT", "1T", "126", "32", + "FCC", "5G", "40M", "HT", "1T", "134", "36", + "ETSI", "5G", "40M", "HT", "1T", "134", "36", + "MKK", "5G", "40M", "HT", "1T", "134", "36", + "FCC", "5G", "40M", "HT", "1T", "151", "36", + "ETSI", "5G", "40M", "HT", "1T", "151", "36", + "MKK", "5G", "40M", "HT", "1T", "151", "63", + "FCC", "5G", "40M", "HT", "1T", "159", "40", + "ETSI", "5G", "40M", "HT", "1T", "159", "40", + "MKK", "5G", "40M", "HT", "1T", "159", "63", + "FCC", "5G", "40M", "HT", "2T", "38", "32", + "ETSI", "5G", "40M", "HT", "2T", "38", "32", + "MKK", "5G", "40M", "HT", "2T", "38", "32", + "FCC", "5G", "40M", "HT", "2T", "46", "36", + "ETSI", "5G", "40M", "HT", "2T", "46", "36", + "MKK", "5G", "40M", "HT", "2T", "46", "36", + "FCC", "5G", "40M", "HT", "2T", "54", "36", + "ETSI", "5G", "40M", "HT", "2T", "54", "36", + "MKK", "5G", "40M", "HT", "2T", "54", "36", + "FCC", "5G", "40M", "HT", "2T", "62", "32", + "ETSI", "5G", "40M", "HT", "2T", "62", "32", + "MKK", "5G", "40M", "HT", "2T", "62", "32", + "FCC", "5G", "40M", "HT", "2T", "102", "30", + "ETSI", "5G", "40M", "HT", "2T", "102", "30", + "MKK", "5G", "40M", "HT", "2T", "102", "30", + "FCC", "5G", "40M", "HT", "2T", "110", "32", + "ETSI", "5G", "40M", "HT", "2T", "110", "32", + "MKK", "5G", "40M", "HT", "2T", "110", "32", + "FCC", "5G", "40M", "HT", "2T", "118", "32", + "ETSI", "5G", "40M", "HT", "2T", "118", "32", + "MKK", "5G", "40M", "HT", "2T", "118", "32", + "FCC", "5G", "40M", "HT", "2T", "126", "32", + "ETSI", "5G", "40M", "HT", "2T", "126", "32", + "MKK", "5G", "40M", "HT", "2T", "126", "32", + "FCC", "5G", "40M", "HT", "2T", "134", "36", + "ETSI", "5G", "40M", "HT", "2T", "134", "36", + "MKK", "5G", "40M", "HT", "2T", "134", "36", + "FCC", "5G", "40M", "HT", "2T", "151", "36", + "ETSI", "5G", "40M", "HT", "2T", "151", "36", + "MKK", "5G", "40M", "HT", "2T", "151", "63", + "FCC", "5G", "40M", "HT", "2T", "159", "40", + "ETSI", "5G", "40M", "HT", "2T", "159", "40", + "MKK", "5G", "40M", "HT", "2T", "159", "63", + "FCC", "5G", "40M", "HT", "3T", "38", "32", + "ETSI", "5G", "40M", "HT", "3T", "38", "32", + "MKK", "5G", "40M", "HT", "3T", "38", "32", + "FCC", "5G", "40M", "HT", "3T", "46", "36", + "ETSI", "5G", "40M", "HT", "3T", "46", "36", + "MKK", "5G", "40M", "HT", "3T", "46", "36", + "FCC", "5G", "40M", "HT", "3T", "54", "36", + "ETSI", "5G", "40M", "HT", "3T", "54", "36", + "MKK", "5G", "40M", "HT", "3T", "54", "36", + "FCC", "5G", "40M", "HT", "3T", "62", "32", + "ETSI", "5G", "40M", "HT", "3T", "62", "32", + "MKK", "5G", "40M", "HT", "3T", "62", "32", + "FCC", "5G", "40M", "HT", "3T", "102", "30", + "ETSI", "5G", "40M", "HT", "3T", "102", "30", + "MKK", "5G", "40M", "HT", "3T", "102", "30", + "FCC", "5G", "40M", "HT", "3T", "110", "32", + "ETSI", "5G", "40M", "HT", "3T", "110", "32", + "MKK", "5G", "40M", "HT", "3T", "110", "32", + "FCC", "5G", "40M", "HT", "3T", "118", "32", + "ETSI", "5G", "40M", "HT", "3T", "118", "32", + "MKK", "5G", "40M", "HT", "3T", "118", "32", + "FCC", "5G", "40M", "HT", "3T", "126", "32", + "ETSI", "5G", "40M", "HT", "3T", "126", "32", + "MKK", "5G", "40M", "HT", "3T", "126", "32", + "FCC", "5G", "40M", "HT", "3T", "134", "36", + "ETSI", "5G", "40M", "HT", "3T", "134", "36", + "MKK", "5G", "40M", "HT", "3T", "134", "36", + "FCC", "5G", "40M", "HT", "3T", "151", "36", + "ETSI", "5G", "40M", "HT", "3T", "151", "36", + "MKK", "5G", "40M", "HT", "3T", "151", "63", + "FCC", "5G", "40M", "HT", "3T", "159", "40", + "ETSI", "5G", "40M", "HT", "3T", "159", "40", + "MKK", "5G", "40M", "HT", "3T", "159", "63", + "FCC", "5G", "40M", "HT", "4T", "38", "32", + "ETSI", "5G", "40M", "HT", "4T", "38", "32", + "MKK", "5G", "40M", "HT", "4T", "38", "32", + "FCC", "5G", "40M", "HT", "4T", "46", "36", + "ETSI", "5G", "40M", "HT", "4T", "46", "36", + "MKK", "5G", "40M", "HT", "4T", "46", "36", + "FCC", "5G", "40M", "HT", "4T", "54", "36", + "ETSI", "5G", "40M", "HT", "4T", "54", "36", + "MKK", "5G", "40M", "HT", "4T", "54", "36", + "FCC", "5G", "40M", "HT", "4T", "62", "32", + "ETSI", "5G", "40M", "HT", "4T", "62", "32", + "MKK", "5G", "40M", "HT", "4T", "62", "32", + "FCC", "5G", "40M", "HT", "4T", "102", "30", + "ETSI", "5G", "40M", "HT", "4T", "102", "30", + "MKK", "5G", "40M", "HT", "4T", "102", "30", + "FCC", "5G", "40M", "HT", "4T", "110", "32", + "ETSI", "5G", "40M", "HT", "4T", "110", "32", + "MKK", "5G", "40M", "HT", "4T", "110", "32", + "FCC", "5G", "40M", "HT", "4T", "118", "32", + "ETSI", "5G", "40M", "HT", "4T", "118", "32", + "MKK", "5G", "40M", "HT", "4T", "118", "32", + "FCC", "5G", "40M", "HT", "4T", "126", "32", + "ETSI", "5G", "40M", "HT", "4T", "126", "32", + "MKK", "5G", "40M", "HT", "4T", "126", "32", + "FCC", "5G", "40M", "HT", "4T", "134", "36", + "ETSI", "5G", "40M", "HT", "4T", "134", "36", + "MKK", "5G", "40M", "HT", "4T", "134", "36", + "FCC", "5G", "40M", "HT", "4T", "151", "36", + "ETSI", "5G", "40M", "HT", "4T", "151", "36", + "MKK", "5G", "40M", "HT", "4T", "151", "63", + "FCC", "5G", "40M", "HT", "4T", "159", "40", + "ETSI", "5G", "40M", "HT", "4T", "159", "40", + "MKK", "5G", "40M", "HT", "4T", "159", "63", + "FCC", "5G", "80M", "VHT", "1T", "42", "34", + "ETSI", "5G", "80M", "VHT", "1T", "42", "34", + "MKK", "5G", "80M", "VHT", "1T", "42", "34", + "FCC", "5G", "80M", "VHT", "1T", "58", "34", + "ETSI", "5G", "80M", "VHT", "1T", "58", "34", + "MKK", "5G", "80M", "VHT", "1T", "58", "34", + "FCC", "5G", "80M", "VHT", "1T", "106", "32", + "ETSI", "5G", "80M", "VHT", "1T", "106", "32", + "MKK", "5G", "80M", "VHT", "1T", "106", "32", + "FCC", "5G", "80M", "VHT", "1T", "122", "34", + "ETSI", "5G", "80M", "VHT", "1T", "122", "34", + "MKK", "5G", "80M", "VHT", "1T", "122", "34", + "FCC", "5G", "80M", "VHT", "1T", "155", "34", + "ETSI", "5G", "80M", "VHT", "1T", "155", "34", + "MKK", "5G", "80M", "VHT", "1T", "155", "63", + "FCC", "5G", "80M", "VHT", "2T", "42", "34", + "ETSI", "5G", "80M", "VHT", "2T", "42", "34", + "MKK", "5G", "80M", "VHT", "2T", "42", "34", + "FCC", "5G", "80M", "VHT", "2T", "58", "34", + "ETSI", "5G", "80M", "VHT", "2T", "58", "34", + "MKK", "5G", "80M", "VHT", "2T", "58", "34", + "FCC", "5G", "80M", "VHT", "2T", "106", "32", + "ETSI", "5G", "80M", "VHT", "2T", "106", "32", + "MKK", "5G", "80M", "VHT", "2T", "106", "32", + "FCC", "5G", "80M", "VHT", "2T", "122", "34", + "ETSI", "5G", "80M", "VHT", "2T", "122", "34", + "MKK", "5G", "80M", "VHT", "2T", "122", "34", + "FCC", "5G", "80M", "VHT", "2T", "155", "34", + "ETSI", "5G", "80M", "VHT", "2T", "155", "34", + "MKK", "5G", "80M", "VHT", "2T", "155", "63", + "FCC", "5G", "80M", "VHT", "3T", "42", "34", + "ETSI", "5G", "80M", "VHT", "3T", "42", "34", + "MKK", "5G", "80M", "VHT", "3T", "42", "34", + "FCC", "5G", "80M", "VHT", "3T", "58", "34", + "ETSI", "5G", "80M", "VHT", "3T", "58", "34", + "MKK", "5G", "80M", "VHT", "3T", "58", "34", + "FCC", "5G", "80M", "VHT", "3T", "106", "32", + "ETSI", "5G", "80M", "VHT", "3T", "106", "32", + "MKK", "5G", "80M", "VHT", "3T", "106", "32", + "FCC", "5G", "80M", "VHT", "3T", "122", "34", + "ETSI", "5G", "80M", "VHT", "3T", "122", "34", + "MKK", "5G", "80M", "VHT", "3T", "122", "34", + "FCC", "5G", "80M", "VHT", "3T", "155", "34", + "ETSI", "5G", "80M", "VHT", "3T", "155", "34", + "MKK", "5G", "80M", "VHT", "3T", "155", "63", + "FCC", "5G", "80M", "VHT", "4T", "42", "34", + "ETSI", "5G", "80M", "VHT", "4T", "42", "34", + "MKK", "5G", "80M", "VHT", "4T", "42", "34", + "FCC", "5G", "80M", "VHT", "4T", "58", "34", + "ETSI", "5G", "80M", "VHT", "4T", "58", "34", + "MKK", "5G", "80M", "VHT", "4T", "58", "34", + "FCC", "5G", "80M", "VHT", "4T", "106", "32", + "ETSI", "5G", "80M", "VHT", "4T", "106", "32", + "MKK", "5G", "80M", "VHT", "4T", "106", "32", + "FCC", "5G", "80M", "VHT", "4T", "122", "34", + "ETSI", "5G", "80M", "VHT", "4T", "122", "34", + "MKK", "5G", "80M", "VHT", "4T", "122", "34", + "FCC", "5G", "80M", "VHT", "4T", "155", "34", + "ETSI", "5G", "80M", "VHT", "4T", "155", "34", + "MKK", "5G", "80M", "VHT", "4T", "155", "63" +}; +#endif + +void +odm_read_and_config_mp_8814a_txpwr_lmt_type10(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE10 + + u32 i = 0; +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type10) / sizeof(u8); + u8 *array = (u8 *)array_mp_8814a_txpwr_lmt_type10; +#else + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type10) / sizeof(u8 *); + u8 **array = (u8 **)array_mp_8814a_txpwr_lmt_type10; +#endif + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrLmt, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrLmt = array_len / 7; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + for (i = 0; i < array_len; i += 7) { +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u8 regulation = array[i]; + u8 band = array[i + 1]; + u8 bandwidth = array[i + 2]; + u8 rate = array[i + 3]; + u8 rf_path = array[i + 4]; + u8 chnl = array[i + 5]; + u8 val = array[i + 6]; +#else + u8 *regulation = array[i]; + u8 *band = array[i + 1]; + u8 *bandwidth = array[i + 2]; + u8 *rate = array[i + 3]; + u8 *rf_path = array[i + 4]; + u8 *chnl = array[i + 5]; + u8 *val = array[i + 6]; +#endif + + odm_config_bb_txpwr_lmt_8814a(dm, regulation, band, bandwidth, + rate, rf_path, chnl, val); +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrLmt[i / 7], 100, "\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\",", + regulation, band, bandwidth, rate, rf_path, chnl, val); +#endif + } + +#endif +} + +/****************************************************************************** + * txpwr_lmt_type11.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE11 +const char *array_mp_8814a_txpwr_lmt_type11[] = { + "FCC", "2.4G", "20M", "CCK", "1T", "01", "42", + "ETSI", "2.4G", "20M", "CCK", "1T", "01", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "01", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "02", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "02", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "02", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "03", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "03", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "03", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "04", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "04", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "04", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "05", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "05", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "05", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "06", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "06", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "06", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "07", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "07", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "07", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "08", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "08", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "08", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "09", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "09", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "09", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "10", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "10", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "10", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "11", "44", + "ETSI", "2.4G", "20M", "CCK", "1T", "11", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "11", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "12", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "12", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "12", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "13", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "13", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "13", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "14", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", + "MKK", "2.4G", "20M", "CCK", "1T", "14", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "01", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "01", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "02", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "02", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "03", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "03", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "04", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "04", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "05", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "05", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "06", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "06", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "07", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "07", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "08", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "08", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "09", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "09", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "10", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "10", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "11", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "11", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "12", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "12", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "13", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "13", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63", + "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "1T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "01", "42", + "MKK", "2.4G", "20M", "HT", "1T", "01", "42", + "FCC", "2.4G", "20M", "HT", "1T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "02", "42", + "MKK", "2.4G", "20M", "HT", "1T", "02", "42", + "FCC", "2.4G", "20M", "HT", "1T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "03", "42", + "MKK", "2.4G", "20M", "HT", "1T", "03", "42", + "FCC", "2.4G", "20M", "HT", "1T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "04", "42", + "MKK", "2.4G", "20M", "HT", "1T", "04", "42", + "FCC", "2.4G", "20M", "HT", "1T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "05", "42", + "MKK", "2.4G", "20M", "HT", "1T", "05", "42", + "FCC", "2.4G", "20M", "HT", "1T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "06", "42", + "MKK", "2.4G", "20M", "HT", "1T", "06", "42", + "FCC", "2.4G", "20M", "HT", "1T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "07", "42", + "MKK", "2.4G", "20M", "HT", "1T", "07", "42", + "FCC", "2.4G", "20M", "HT", "1T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "08", "42", + "MKK", "2.4G", "20M", "HT", "1T", "08", "42", + "FCC", "2.4G", "20M", "HT", "1T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "09", "42", + "MKK", "2.4G", "20M", "HT", "1T", "09", "42", + "FCC", "2.4G", "20M", "HT", "1T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "10", "42", + "MKK", "2.4G", "20M", "HT", "1T", "10", "42", + "FCC", "2.4G", "20M", "HT", "1T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "1T", "11", "42", + "MKK", "2.4G", "20M", "HT", "1T", "11", "42", + "FCC", "2.4G", "20M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "12", "42", + "MKK", "2.4G", "20M", "HT", "1T", "12", "42", + "FCC", "2.4G", "20M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "13", "42", + "MKK", "2.4G", "20M", "HT", "1T", "13", "42", + "FCC", "2.4G", "20M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "14", "63", + "MKK", "2.4G", "20M", "HT", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "2T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "01", "40", + "MKK", "2.4G", "20M", "HT", "2T", "01", "40", + "FCC", "2.4G", "20M", "HT", "2T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "02", "40", + "MKK", "2.4G", "20M", "HT", "2T", "02", "40", + "FCC", "2.4G", "20M", "HT", "2T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "03", "40", + "MKK", "2.4G", "20M", "HT", "2T", "03", "40", + "FCC", "2.4G", "20M", "HT", "2T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "04", "40", + "MKK", "2.4G", "20M", "HT", "2T", "04", "40", + "FCC", "2.4G", "20M", "HT", "2T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "05", "40", + "MKK", "2.4G", "20M", "HT", "2T", "05", "40", + "FCC", "2.4G", "20M", "HT", "2T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "06", "40", + "MKK", "2.4G", "20M", "HT", "2T", "06", "40", + "FCC", "2.4G", "20M", "HT", "2T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "07", "40", + "MKK", "2.4G", "20M", "HT", "2T", "07", "40", + "FCC", "2.4G", "20M", "HT", "2T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "08", "40", + "MKK", "2.4G", "20M", "HT", "2T", "08", "40", + "FCC", "2.4G", "20M", "HT", "2T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "09", "40", + "MKK", "2.4G", "20M", "HT", "2T", "09", "40", + "FCC", "2.4G", "20M", "HT", "2T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "10", "40", + "MKK", "2.4G", "20M", "HT", "2T", "10", "40", + "FCC", "2.4G", "20M", "HT", "2T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "2T", "11", "40", + "MKK", "2.4G", "20M", "HT", "2T", "11", "40", + "FCC", "2.4G", "20M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "12", "40", + "MKK", "2.4G", "20M", "HT", "2T", "12", "40", + "FCC", "2.4G", "20M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "13", "40", + "MKK", "2.4G", "20M", "HT", "2T", "13", "40", + "FCC", "2.4G", "20M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", + "MKK", "2.4G", "20M", "HT", "2T", "14", "63", + "FCC", "2.4G", "20M", "HT", "3T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "3T", "01", "40", + "MKK", "2.4G", "20M", "HT", "3T", "01", "40", + "FCC", "2.4G", "20M", "HT", "3T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "02", "40", + "MKK", "2.4G", "20M", "HT", "3T", "02", "40", + "FCC", "2.4G", "20M", "HT", "3T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "03", "40", + "MKK", "2.4G", "20M", "HT", "3T", "03", "40", + "FCC", "2.4G", "20M", "HT", "3T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "04", "40", + "MKK", "2.4G", "20M", "HT", "3T", "04", "40", + "FCC", "2.4G", "20M", "HT", "3T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "05", "40", + "MKK", "2.4G", "20M", "HT", "3T", "05", "40", + "FCC", "2.4G", "20M", "HT", "3T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "06", "40", + "MKK", "2.4G", "20M", "HT", "3T", "06", "40", + "FCC", "2.4G", "20M", "HT", "3T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "07", "40", + "MKK", "2.4G", "20M", "HT", "3T", "07", "40", + "FCC", "2.4G", "20M", "HT", "3T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "08", "40", + "MKK", "2.4G", "20M", "HT", "3T", "08", "40", + "FCC", "2.4G", "20M", "HT", "3T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "09", "40", + "MKK", "2.4G", "20M", "HT", "3T", "09", "40", + "FCC", "2.4G", "20M", "HT", "3T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "10", "40", + "MKK", "2.4G", "20M", "HT", "3T", "10", "40", + "FCC", "2.4G", "20M", "HT", "3T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "11", "40", + "MKK", "2.4G", "20M", "HT", "3T", "11", "40", + "FCC", "2.4G", "20M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "12", "40", + "MKK", "2.4G", "20M", "HT", "3T", "12", "40", + "FCC", "2.4G", "20M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "13", "40", + "MKK", "2.4G", "20M", "HT", "3T", "13", "40", + "FCC", "2.4G", "20M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "14", "63", + "MKK", "2.4G", "20M", "HT", "3T", "14", "63", + "FCC", "2.4G", "20M", "HT", "4T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "4T", "01", "40", + "MKK", "2.4G", "20M", "HT", "4T", "01", "40", + "FCC", "2.4G", "20M", "HT", "4T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "02", "40", + "MKK", "2.4G", "20M", "HT", "4T", "02", "40", + "FCC", "2.4G", "20M", "HT", "4T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "03", "40", + "MKK", "2.4G", "20M", "HT", "4T", "03", "40", + "FCC", "2.4G", "20M", "HT", "4T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "04", "40", + "MKK", "2.4G", "20M", "HT", "4T", "04", "40", + "FCC", "2.4G", "20M", "HT", "4T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "05", "40", + "MKK", "2.4G", "20M", "HT", "4T", "05", "40", + "FCC", "2.4G", "20M", "HT", "4T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "06", "40", + "MKK", "2.4G", "20M", "HT", "4T", "06", "40", + "FCC", "2.4G", "20M", "HT", "4T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "07", "40", + "MKK", "2.4G", "20M", "HT", "4T", "07", "40", + "FCC", "2.4G", "20M", "HT", "4T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "08", "40", + "MKK", "2.4G", "20M", "HT", "4T", "08", "40", + "FCC", "2.4G", "20M", "HT", "4T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "09", "40", + "MKK", "2.4G", "20M", "HT", "4T", "09", "40", + "FCC", "2.4G", "20M", "HT", "4T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "10", "40", + "MKK", "2.4G", "20M", "HT", "4T", "10", "40", + "FCC", "2.4G", "20M", "HT", "4T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "4T", "11", "40", + "MKK", "2.4G", "20M", "HT", "4T", "11", "40", + "FCC", "2.4G", "20M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "12", "40", + "MKK", "2.4G", "20M", "HT", "4T", "12", "40", + "FCC", "2.4G", "20M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "13", "40", + "MKK", "2.4G", "20M", "HT", "4T", "13", "40", + "FCC", "2.4G", "20M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "14", "63", + "MKK", "2.4G", "20M", "HT", "4T", "14", "63", + "FCC", "2.4G", "40M", "HT", "1T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "01", "63", + "MKK", "2.4G", "40M", "HT", "1T", "01", "63", + "FCC", "2.4G", "40M", "HT", "1T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "02", "63", + "MKK", "2.4G", "40M", "HT", "1T", "02", "63", + "FCC", "2.4G", "40M", "HT", "1T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "1T", "03", "34", + "MKK", "2.4G", "40M", "HT", "1T", "03", "34", + "FCC", "2.4G", "40M", "HT", "1T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "04", "34", + "MKK", "2.4G", "40M", "HT", "1T", "04", "34", + "FCC", "2.4G", "40M", "HT", "1T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "05", "34", + "MKK", "2.4G", "40M", "HT", "1T", "05", "34", + "FCC", "2.4G", "40M", "HT", "1T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "06", "34", + "MKK", "2.4G", "40M", "HT", "1T", "06", "34", + "FCC", "2.4G", "40M", "HT", "1T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "07", "34", + "MKK", "2.4G", "40M", "HT", "1T", "07", "34", + "FCC", "2.4G", "40M", "HT", "1T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "08", "34", + "MKK", "2.4G", "40M", "HT", "1T", "08", "34", + "FCC", "2.4G", "40M", "HT", "1T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "09", "34", + "MKK", "2.4G", "40M", "HT", "1T", "09", "34", + "FCC", "2.4G", "40M", "HT", "1T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "10", "34", + "MKK", "2.4G", "40M", "HT", "1T", "10", "34", + "FCC", "2.4G", "40M", "HT", "1T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "1T", "11", "34", + "MKK", "2.4G", "40M", "HT", "1T", "11", "34", + "FCC", "2.4G", "40M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "12", "34", + "MKK", "2.4G", "40M", "HT", "1T", "12", "34", + "FCC", "2.4G", "40M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "13", "34", + "MKK", "2.4G", "40M", "HT", "1T", "13", "34", + "FCC", "2.4G", "40M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "14", "63", + "MKK", "2.4G", "40M", "HT", "1T", "14", "63", + "FCC", "2.4G", "40M", "HT", "2T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", + "MKK", "2.4G", "40M", "HT", "2T", "01", "63", + "FCC", "2.4G", "40M", "HT", "2T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "02", "63", + "MKK", "2.4G", "40M", "HT", "2T", "02", "63", + "FCC", "2.4G", "40M", "HT", "2T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "03", "34", + "MKK", "2.4G", "40M", "HT", "2T", "03", "34", + "FCC", "2.4G", "40M", "HT", "2T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "04", "34", + "MKK", "2.4G", "40M", "HT", "2T", "04", "34", + "FCC", "2.4G", "40M", "HT", "2T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "05", "34", + "MKK", "2.4G", "40M", "HT", "2T", "05", "34", + "FCC", "2.4G", "40M", "HT", "2T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "06", "34", + "MKK", "2.4G", "40M", "HT", "2T", "06", "34", + "FCC", "2.4G", "40M", "HT", "2T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "07", "34", + "MKK", "2.4G", "40M", "HT", "2T", "07", "34", + "FCC", "2.4G", "40M", "HT", "2T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "08", "34", + "MKK", "2.4G", "40M", "HT", "2T", "08", "34", + "FCC", "2.4G", "40M", "HT", "2T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "09", "34", + "MKK", "2.4G", "40M", "HT", "2T", "09", "34", + "FCC", "2.4G", "40M", "HT", "2T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "10", "34", + "MKK", "2.4G", "40M", "HT", "2T", "10", "34", + "FCC", "2.4G", "40M", "HT", "2T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "2T", "11", "34", + "MKK", "2.4G", "40M", "HT", "2T", "11", "34", + "FCC", "2.4G", "40M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "12", "34", + "MKK", "2.4G", "40M", "HT", "2T", "12", "34", + "FCC", "2.4G", "40M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "13", "34", + "MKK", "2.4G", "40M", "HT", "2T", "13", "34", + "FCC", "2.4G", "40M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "14", "63", + "MKK", "2.4G", "40M", "HT", "2T", "14", "63", + "FCC", "2.4G", "40M", "HT", "3T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "01", "63", + "MKK", "2.4G", "40M", "HT", "3T", "01", "63", + "FCC", "2.4G", "40M", "HT", "3T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "02", "63", + "MKK", "2.4G", "40M", "HT", "3T", "02", "63", + "FCC", "2.4G", "40M", "HT", "3T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "3T", "03", "34", + "MKK", "2.4G", "40M", "HT", "3T", "03", "34", + "FCC", "2.4G", "40M", "HT", "3T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "04", "34", + "MKK", "2.4G", "40M", "HT", "3T", "04", "34", + "FCC", "2.4G", "40M", "HT", "3T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "05", "34", + "MKK", "2.4G", "40M", "HT", "3T", "05", "34", + "FCC", "2.4G", "40M", "HT", "3T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "06", "34", + "MKK", "2.4G", "40M", "HT", "3T", "06", "34", + "FCC", "2.4G", "40M", "HT", "3T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "07", "34", + "MKK", "2.4G", "40M", "HT", "3T", "07", "34", + "FCC", "2.4G", "40M", "HT", "3T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "08", "34", + "MKK", "2.4G", "40M", "HT", "3T", "08", "34", + "FCC", "2.4G", "40M", "HT", "3T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "09", "34", + "MKK", "2.4G", "40M", "HT", "3T", "09", "34", + "FCC", "2.4G", "40M", "HT", "3T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "10", "34", + "MKK", "2.4G", "40M", "HT", "3T", "10", "34", + "FCC", "2.4G", "40M", "HT", "3T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "11", "34", + "MKK", "2.4G", "40M", "HT", "3T", "11", "34", + "FCC", "2.4G", "40M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "12", "34", + "MKK", "2.4G", "40M", "HT", "3T", "12", "34", + "FCC", "2.4G", "40M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "13", "34", + "MKK", "2.4G", "40M", "HT", "3T", "13", "34", + "FCC", "2.4G", "40M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "14", "63", + "MKK", "2.4G", "40M", "HT", "3T", "14", "63", + "FCC", "2.4G", "40M", "HT", "4T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "01", "63", + "MKK", "2.4G", "40M", "HT", "4T", "01", "63", + "FCC", "2.4G", "40M", "HT", "4T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "02", "63", + "MKK", "2.4G", "40M", "HT", "4T", "02", "63", + "FCC", "2.4G", "40M", "HT", "4T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "4T", "03", "34", + "MKK", "2.4G", "40M", "HT", "4T", "03", "34", + "FCC", "2.4G", "40M", "HT", "4T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "04", "34", + "MKK", "2.4G", "40M", "HT", "4T", "04", "34", + "FCC", "2.4G", "40M", "HT", "4T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "05", "34", + "MKK", "2.4G", "40M", "HT", "4T", "05", "34", + "FCC", "2.4G", "40M", "HT", "4T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "06", "34", + "MKK", "2.4G", "40M", "HT", "4T", "06", "34", + "FCC", "2.4G", "40M", "HT", "4T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "07", "34", + "MKK", "2.4G", "40M", "HT", "4T", "07", "34", + "FCC", "2.4G", "40M", "HT", "4T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "08", "34", + "MKK", "2.4G", "40M", "HT", "4T", "08", "34", + "FCC", "2.4G", "40M", "HT", "4T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "09", "34", + "MKK", "2.4G", "40M", "HT", "4T", "09", "34", + "FCC", "2.4G", "40M", "HT", "4T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "10", "34", + "MKK", "2.4G", "40M", "HT", "4T", "10", "34", + "FCC", "2.4G", "40M", "HT", "4T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "4T", "11", "34", + "MKK", "2.4G", "40M", "HT", "4T", "11", "34", + "FCC", "2.4G", "40M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "12", "34", + "MKK", "2.4G", "40M", "HT", "4T", "12", "34", + "FCC", "2.4G", "40M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "13", "34", + "MKK", "2.4G", "40M", "HT", "4T", "13", "34", + "FCC", "2.4G", "40M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "14", "63", + "MKK", "2.4G", "40M", "HT", "4T", "14", "63", + "FCC", "5G", "20M", "OFDM", "1T", "36", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "36", "42", + "MKK", "5G", "20M", "OFDM", "1T", "36", "42", + "FCC", "5G", "20M", "OFDM", "1T", "40", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "40", "42", + "MKK", "5G", "20M", "OFDM", "1T", "40", "42", + "FCC", "5G", "20M", "OFDM", "1T", "44", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "44", "42", + "MKK", "5G", "20M", "OFDM", "1T", "44", "42", + "FCC", "5G", "20M", "OFDM", "1T", "48", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "48", "42", + "MKK", "5G", "20M", "OFDM", "1T", "48", "42", + "FCC", "5G", "20M", "OFDM", "1T", "52", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "52", "42", + "MKK", "5G", "20M", "OFDM", "1T", "52", "42", + "FCC", "5G", "20M", "OFDM", "1T", "56", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "56", "42", + "MKK", "5G", "20M", "OFDM", "1T", "56", "42", + "FCC", "5G", "20M", "OFDM", "1T", "60", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "60", "42", + "MKK", "5G", "20M", "OFDM", "1T", "60", "42", + "FCC", "5G", "20M", "OFDM", "1T", "64", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "64", "42", + "MKK", "5G", "20M", "OFDM", "1T", "64", "42", + "FCC", "5G", "20M", "OFDM", "1T", "100", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "100", "42", + "MKK", "5G", "20M", "OFDM", "1T", "100", "42", + "FCC", "5G", "20M", "OFDM", "1T", "104", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "104", "42", + "MKK", "5G", "20M", "OFDM", "1T", "104", "42", + "FCC", "5G", "20M", "OFDM", "1T", "108", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "108", "42", + "MKK", "5G", "20M", "OFDM", "1T", "108", "42", + "FCC", "5G", "20M", "OFDM", "1T", "112", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "112", "42", + "MKK", "5G", "20M", "OFDM", "1T", "112", "42", + "FCC", "5G", "20M", "OFDM", "1T", "116", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "116", "42", + "MKK", "5G", "20M", "OFDM", "1T", "116", "42", + "FCC", "5G", "20M", "OFDM", "1T", "120", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "120", "42", + "MKK", "5G", "20M", "OFDM", "1T", "120", "42", + "FCC", "5G", "20M", "OFDM", "1T", "124", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "124", "42", + "MKK", "5G", "20M", "OFDM", "1T", "124", "42", + "FCC", "5G", "20M", "OFDM", "1T", "128", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "128", "42", + "MKK", "5G", "20M", "OFDM", "1T", "128", "42", + "FCC", "5G", "20M", "OFDM", "1T", "132", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "132", "42", + "MKK", "5G", "20M", "OFDM", "1T", "132", "42", + "FCC", "5G", "20M", "OFDM", "1T", "136", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "136", "42", + "MKK", "5G", "20M", "OFDM", "1T", "136", "42", + "FCC", "5G", "20M", "OFDM", "1T", "140", "40", + "ETSI", "5G", "20M", "OFDM", "1T", "140", "40", + "MKK", "5G", "20M", "OFDM", "1T", "140", "40", + "FCC", "5G", "20M", "OFDM", "1T", "149", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "149", "44", + "MKK", "5G", "20M", "OFDM", "1T", "149", "63", + "FCC", "5G", "20M", "OFDM", "1T", "153", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "153", "44", + "MKK", "5G", "20M", "OFDM", "1T", "153", "63", + "FCC", "5G", "20M", "OFDM", "1T", "157", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "157", "44", + "MKK", "5G", "20M", "OFDM", "1T", "157", "63", + "FCC", "5G", "20M", "OFDM", "1T", "161", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "161", "44", + "MKK", "5G", "20M", "OFDM", "1T", "161", "63", + "FCC", "5G", "20M", "OFDM", "1T", "165", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "165", "44", + "MKK", "5G", "20M", "OFDM", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "1T", "36", "32", + "ETSI", "5G", "20M", "HT", "1T", "36", "32", + "MKK", "5G", "20M", "HT", "1T", "36", "32", + "FCC", "5G", "20M", "HT", "1T", "40", "32", + "ETSI", "5G", "20M", "HT", "1T", "40", "32", + "MKK", "5G", "20M", "HT", "1T", "40", "32", + "FCC", "5G", "20M", "HT", "1T", "44", "32", + "ETSI", "5G", "20M", "HT", "1T", "44", "32", + "MKK", "5G", "20M", "HT", "1T", "44", "32", + "FCC", "5G", "20M", "HT", "1T", "48", "36", + "ETSI", "5G", "20M", "HT", "1T", "48", "36", + "MKK", "5G", "20M", "HT", "1T", "48", "36", + "FCC", "5G", "20M", "HT", "1T", "52", "36", + "ETSI", "5G", "20M", "HT", "1T", "52", "36", + "MKK", "5G", "20M", "HT", "1T", "52", "36", + "FCC", "5G", "20M", "HT", "1T", "56", "32", + "ETSI", "5G", "20M", "HT", "1T", "56", "32", + "MKK", "5G", "20M", "HT", "1T", "56", "32", + "FCC", "5G", "20M", "HT", "1T", "60", "32", + "ETSI", "5G", "20M", "HT", "1T", "60", "32", + "MKK", "5G", "20M", "HT", "1T", "60", "32", + "FCC", "5G", "20M", "HT", "1T", "64", "32", + "ETSI", "5G", "20M", "HT", "1T", "64", "32", + "MKK", "5G", "20M", "HT", "1T", "64", "32", + "FCC", "5G", "20M", "HT", "1T", "100", "32", + "ETSI", "5G", "20M", "HT", "1T", "100", "32", + "MKK", "5G", "20M", "HT", "1T", "100", "32", + "FCC", "5G", "20M", "HT", "1T", "104", "32", + "ETSI", "5G", "20M", "HT", "1T", "104", "32", + "MKK", "5G", "20M", "HT", "1T", "104", "32", + "FCC", "5G", "20M", "HT", "1T", "108", "32", + "ETSI", "5G", "20M", "HT", "1T", "108", "32", + "MKK", "5G", "20M", "HT", "1T", "108", "32", + "FCC", "5G", "20M", "HT", "1T", "112", "32", + "ETSI", "5G", "20M", "HT", "1T", "112", "32", + "MKK", "5G", "20M", "HT", "1T", "112", "32", + "FCC", "5G", "20M", "HT", "1T", "116", "32", + "ETSI", "5G", "20M", "HT", "1T", "116", "32", + "MKK", "5G", "20M", "HT", "1T", "116", "32", + "FCC", "5G", "20M", "HT", "1T", "120", "32", + "ETSI", "5G", "20M", "HT", "1T", "120", "32", + "MKK", "5G", "20M", "HT", "1T", "120", "32", + "FCC", "5G", "20M", "HT", "1T", "124", "32", + "ETSI", "5G", "20M", "HT", "1T", "124", "32", + "MKK", "5G", "20M", "HT", "1T", "124", "32", + "FCC", "5G", "20M", "HT", "1T", "128", "32", + "ETSI", "5G", "20M", "HT", "1T", "128", "32", + "MKK", "5G", "20M", "HT", "1T", "128", "32", + "FCC", "5G", "20M", "HT", "1T", "132", "32", + "ETSI", "5G", "20M", "HT", "1T", "132", "32", + "MKK", "5G", "20M", "HT", "1T", "132", "32", + "FCC", "5G", "20M", "HT", "1T", "136", "32", + "ETSI", "5G", "20M", "HT", "1T", "136", "32", + "MKK", "5G", "20M", "HT", "1T", "136", "32", + "FCC", "5G", "20M", "HT", "1T", "140", "30", + "ETSI", "5G", "20M", "HT", "1T", "140", "30", + "MKK", "5G", "20M", "HT", "1T", "140", "30", + "FCC", "5G", "20M", "HT", "1T", "149", "40", + "ETSI", "5G", "20M", "HT", "1T", "149", "40", + "MKK", "5G", "20M", "HT", "1T", "149", "63", + "FCC", "5G", "20M", "HT", "1T", "153", "40", + "ETSI", "5G", "20M", "HT", "1T", "153", "40", + "MKK", "5G", "20M", "HT", "1T", "153", "63", + "FCC", "5G", "20M", "HT", "1T", "157", "40", + "ETSI", "5G", "20M", "HT", "1T", "157", "40", + "MKK", "5G", "20M", "HT", "1T", "157", "63", + "FCC", "5G", "20M", "HT", "1T", "161", "40", + "ETSI", "5G", "20M", "HT", "1T", "161", "40", + "MKK", "5G", "20M", "HT", "1T", "161", "63", + "FCC", "5G", "20M", "HT", "1T", "165", "42", + "ETSI", "5G", "20M", "HT", "1T", "165", "42", + "MKK", "5G", "20M", "HT", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "2T", "36", "32", + "ETSI", "5G", "20M", "HT", "2T", "36", "32", + "MKK", "5G", "20M", "HT", "2T", "36", "32", + "FCC", "5G", "20M", "HT", "2T", "40", "32", + "ETSI", "5G", "20M", "HT", "2T", "40", "32", + "MKK", "5G", "20M", "HT", "2T", "40", "32", + "FCC", "5G", "20M", "HT", "2T", "44", "32", + "ETSI", "5G", "20M", "HT", "2T", "44", "32", + "MKK", "5G", "20M", "HT", "2T", "44", "32", + "FCC", "5G", "20M", "HT", "2T", "48", "36", + "ETSI", "5G", "20M", "HT", "2T", "48", "36", + "MKK", "5G", "20M", "HT", "2T", "48", "36", + "FCC", "5G", "20M", "HT", "2T", "52", "36", + "ETSI", "5G", "20M", "HT", "2T", "52", "36", + "MKK", "5G", "20M", "HT", "2T", "52", "36", + "FCC", "5G", "20M", "HT", "2T", "56", "32", + "ETSI", "5G", "20M", "HT", "2T", "56", "32", + "MKK", "5G", "20M", "HT", "2T", "56", "32", + "FCC", "5G", "20M", "HT", "2T", "60", "32", + "ETSI", "5G", "20M", "HT", "2T", "60", "32", + "MKK", "5G", "20M", "HT", "2T", "60", "32", + "FCC", "5G", "20M", "HT", "2T", "64", "32", + "ETSI", "5G", "20M", "HT", "2T", "64", "32", + "MKK", "5G", "20M", "HT", "2T", "64", "32", + "FCC", "5G", "20M", "HT", "2T", "100", "32", + "ETSI", "5G", "20M", "HT", "2T", "100", "32", + "MKK", "5G", "20M", "HT", "2T", "100", "32", + "FCC", "5G", "20M", "HT", "2T", "104", "32", + "ETSI", "5G", "20M", "HT", "2T", "104", "32", + "MKK", "5G", "20M", "HT", "2T", "104", "32", + "FCC", "5G", "20M", "HT", "2T", "108", "32", + "ETSI", "5G", "20M", "HT", "2T", "108", "32", + "MKK", "5G", "20M", "HT", "2T", "108", "32", + "FCC", "5G", "20M", "HT", "2T", "112", "32", + "ETSI", "5G", "20M", "HT", "2T", "112", "32", + "MKK", "5G", "20M", "HT", "2T", "112", "32", + "FCC", "5G", "20M", "HT", "2T", "116", "32", + "ETSI", "5G", "20M", "HT", "2T", "116", "32", + "MKK", "5G", "20M", "HT", "2T", "116", "32", + "FCC", "5G", "20M", "HT", "2T", "120", "32", + "ETSI", "5G", "20M", "HT", "2T", "120", "32", + "MKK", "5G", "20M", "HT", "2T", "120", "32", + "FCC", "5G", "20M", "HT", "2T", "124", "32", + "ETSI", "5G", "20M", "HT", "2T", "124", "32", + "MKK", "5G", "20M", "HT", "2T", "124", "32", + "FCC", "5G", "20M", "HT", "2T", "128", "32", + "ETSI", "5G", "20M", "HT", "2T", "128", "32", + "MKK", "5G", "20M", "HT", "2T", "128", "32", + "FCC", "5G", "20M", "HT", "2T", "132", "32", + "ETSI", "5G", "20M", "HT", "2T", "132", "32", + "MKK", "5G", "20M", "HT", "2T", "132", "32", + "FCC", "5G", "20M", "HT", "2T", "136", "32", + "ETSI", "5G", "20M", "HT", "2T", "136", "32", + "MKK", "5G", "20M", "HT", "2T", "136", "32", + "FCC", "5G", "20M", "HT", "2T", "140", "30", + "ETSI", "5G", "20M", "HT", "2T", "140", "30", + "MKK", "5G", "20M", "HT", "2T", "140", "30", + "FCC", "5G", "20M", "HT", "2T", "149", "40", + "ETSI", "5G", "20M", "HT", "2T", "149", "40", + "MKK", "5G", "20M", "HT", "2T", "149", "63", + "FCC", "5G", "20M", "HT", "2T", "153", "40", + "ETSI", "5G", "20M", "HT", "2T", "153", "40", + "MKK", "5G", "20M", "HT", "2T", "153", "63", + "FCC", "5G", "20M", "HT", "2T", "157", "40", + "ETSI", "5G", "20M", "HT", "2T", "157", "40", + "MKK", "5G", "20M", "HT", "2T", "157", "63", + "FCC", "5G", "20M", "HT", "2T", "161", "40", + "ETSI", "5G", "20M", "HT", "2T", "161", "40", + "MKK", "5G", "20M", "HT", "2T", "161", "63", + "FCC", "5G", "20M", "HT", "2T", "165", "42", + "ETSI", "5G", "20M", "HT", "2T", "165", "42", + "MKK", "5G", "20M", "HT", "2T", "165", "63", + "FCC", "5G", "20M", "HT", "3T", "36", "32", + "ETSI", "5G", "20M", "HT", "3T", "36", "32", + "MKK", "5G", "20M", "HT", "3T", "36", "32", + "FCC", "5G", "20M", "HT", "3T", "40", "32", + "ETSI", "5G", "20M", "HT", "3T", "40", "32", + "MKK", "5G", "20M", "HT", "3T", "40", "32", + "FCC", "5G", "20M", "HT", "3T", "44", "32", + "ETSI", "5G", "20M", "HT", "3T", "44", "32", + "MKK", "5G", "20M", "HT", "3T", "44", "32", + "FCC", "5G", "20M", "HT", "3T", "48", "36", + "ETSI", "5G", "20M", "HT", "3T", "48", "36", + "MKK", "5G", "20M", "HT", "3T", "48", "36", + "FCC", "5G", "20M", "HT", "3T", "52", "36", + "ETSI", "5G", "20M", "HT", "3T", "52", "36", + "MKK", "5G", "20M", "HT", "3T", "52", "36", + "FCC", "5G", "20M", "HT", "3T", "56", "32", + "ETSI", "5G", "20M", "HT", "3T", "56", "32", + "MKK", "5G", "20M", "HT", "3T", "56", "32", + "FCC", "5G", "20M", "HT", "3T", "60", "32", + "ETSI", "5G", "20M", "HT", "3T", "60", "32", + "MKK", "5G", "20M", "HT", "3T", "60", "32", + "FCC", "5G", "20M", "HT", "3T", "64", "32", + "ETSI", "5G", "20M", "HT", "3T", "64", "32", + "MKK", "5G", "20M", "HT", "3T", "64", "32", + "FCC", "5G", "20M", "HT", "3T", "100", "32", + "ETSI", "5G", "20M", "HT", "3T", "100", "32", + "MKK", "5G", "20M", "HT", "3T", "100", "32", + "FCC", "5G", "20M", "HT", "3T", "104", "32", + "ETSI", "5G", "20M", "HT", "3T", "104", "32", + "MKK", "5G", "20M", "HT", "3T", "104", "32", + "FCC", "5G", "20M", "HT", "3T", "108", "32", + "ETSI", "5G", "20M", "HT", "3T", "108", "32", + "MKK", "5G", "20M", "HT", "3T", "108", "32", + "FCC", "5G", "20M", "HT", "3T", "112", "32", + "ETSI", "5G", "20M", "HT", "3T", "112", "32", + "MKK", "5G", "20M", "HT", "3T", "112", "32", + "FCC", "5G", "20M", "HT", "3T", "116", "32", + "ETSI", "5G", "20M", "HT", "3T", "116", "32", + "MKK", "5G", "20M", "HT", "3T", "116", "32", + "FCC", "5G", "20M", "HT", "3T", "120", "32", + "ETSI", "5G", "20M", "HT", "3T", "120", "32", + "MKK", "5G", "20M", "HT", "3T", "120", "32", + "FCC", "5G", "20M", "HT", "3T", "124", "32", + "ETSI", "5G", "20M", "HT", "3T", "124", "32", + "MKK", "5G", "20M", "HT", "3T", "124", "32", + "FCC", "5G", "20M", "HT", "3T", "128", "32", + "ETSI", "5G", "20M", "HT", "3T", "128", "32", + "MKK", "5G", "20M", "HT", "3T", "128", "32", + "FCC", "5G", "20M", "HT", "3T", "132", "32", + "ETSI", "5G", "20M", "HT", "3T", "132", "32", + "MKK", "5G", "20M", "HT", "3T", "132", "32", + "FCC", "5G", "20M", "HT", "3T", "136", "32", + "ETSI", "5G", "20M", "HT", "3T", "136", "32", + "MKK", "5G", "20M", "HT", "3T", "136", "32", + "FCC", "5G", "20M", "HT", "3T", "140", "30", + "ETSI", "5G", "20M", "HT", "3T", "140", "30", + "MKK", "5G", "20M", "HT", "3T", "140", "30", + "FCC", "5G", "20M", "HT", "3T", "149", "40", + "ETSI", "5G", "20M", "HT", "3T", "149", "40", + "MKK", "5G", "20M", "HT", "3T", "149", "63", + "FCC", "5G", "20M", "HT", "3T", "153", "40", + "ETSI", "5G", "20M", "HT", "3T", "153", "40", + "MKK", "5G", "20M", "HT", "3T", "153", "63", + "FCC", "5G", "20M", "HT", "3T", "157", "40", + "ETSI", "5G", "20M", "HT", "3T", "157", "40", + "MKK", "5G", "20M", "HT", "3T", "157", "63", + "FCC", "5G", "20M", "HT", "3T", "161", "40", + "ETSI", "5G", "20M", "HT", "3T", "161", "40", + "MKK", "5G", "20M", "HT", "3T", "161", "63", + "FCC", "5G", "20M", "HT", "3T", "165", "42", + "ETSI", "5G", "20M", "HT", "3T", "165", "42", + "MKK", "5G", "20M", "HT", "3T", "165", "63", + "FCC", "5G", "20M", "HT", "4T", "36", "32", + "ETSI", "5G", "20M", "HT", "4T", "36", "32", + "MKK", "5G", "20M", "HT", "4T", "36", "32", + "FCC", "5G", "20M", "HT", "4T", "40", "32", + "ETSI", "5G", "20M", "HT", "4T", "40", "32", + "MKK", "5G", "20M", "HT", "4T", "40", "32", + "FCC", "5G", "20M", "HT", "4T", "44", "32", + "ETSI", "5G", "20M", "HT", "4T", "44", "32", + "MKK", "5G", "20M", "HT", "4T", "44", "32", + "FCC", "5G", "20M", "HT", "4T", "48", "36", + "ETSI", "5G", "20M", "HT", "4T", "48", "36", + "MKK", "5G", "20M", "HT", "4T", "48", "36", + "FCC", "5G", "20M", "HT", "4T", "52", "36", + "ETSI", "5G", "20M", "HT", "4T", "52", "36", + "MKK", "5G", "20M", "HT", "4T", "52", "36", + "FCC", "5G", "20M", "HT", "4T", "56", "32", + "ETSI", "5G", "20M", "HT", "4T", "56", "32", + "MKK", "5G", "20M", "HT", "4T", "56", "32", + "FCC", "5G", "20M", "HT", "4T", "60", "32", + "ETSI", "5G", "20M", "HT", "4T", "60", "32", + "MKK", "5G", "20M", "HT", "4T", "60", "32", + "FCC", "5G", "20M", "HT", "4T", "64", "32", + "ETSI", "5G", "20M", "HT", "4T", "64", "32", + "MKK", "5G", "20M", "HT", "4T", "64", "32", + "FCC", "5G", "20M", "HT", "4T", "100", "32", + "ETSI", "5G", "20M", "HT", "4T", "100", "32", + "MKK", "5G", "20M", "HT", "4T", "100", "32", + "FCC", "5G", "20M", "HT", "4T", "104", "32", + "ETSI", "5G", "20M", "HT", "4T", "104", "32", + "MKK", "5G", "20M", "HT", "4T", "104", "32", + "FCC", "5G", "20M", "HT", "4T", "108", "32", + "ETSI", "5G", "20M", "HT", "4T", "108", "32", + "MKK", "5G", "20M", "HT", "4T", "108", "32", + "FCC", "5G", "20M", "HT", "4T", "112", "32", + "ETSI", "5G", "20M", "HT", "4T", "112", "32", + "MKK", "5G", "20M", "HT", "4T", "112", "32", + "FCC", "5G", "20M", "HT", "4T", "116", "32", + "ETSI", "5G", "20M", "HT", "4T", "116", "32", + "MKK", "5G", "20M", "HT", "4T", "116", "32", + "FCC", "5G", "20M", "HT", "4T", "120", "32", + "ETSI", "5G", "20M", "HT", "4T", "120", "32", + "MKK", "5G", "20M", "HT", "4T", "120", "32", + "FCC", "5G", "20M", "HT", "4T", "124", "32", + "ETSI", "5G", "20M", "HT", "4T", "124", "32", + "MKK", "5G", "20M", "HT", "4T", "124", "32", + "FCC", "5G", "20M", "HT", "4T", "128", "32", + "ETSI", "5G", "20M", "HT", "4T", "128", "32", + "MKK", "5G", "20M", "HT", "4T", "128", "32", + "FCC", "5G", "20M", "HT", "4T", "132", "32", + "ETSI", "5G", "20M", "HT", "4T", "132", "32", + "MKK", "5G", "20M", "HT", "4T", "132", "32", + "FCC", "5G", "20M", "HT", "4T", "136", "32", + "ETSI", "5G", "20M", "HT", "4T", "136", "32", + "MKK", "5G", "20M", "HT", "4T", "136", "32", + "FCC", "5G", "20M", "HT", "4T", "140", "30", + "ETSI", "5G", "20M", "HT", "4T", "140", "30", + "MKK", "5G", "20M", "HT", "4T", "140", "30", + "FCC", "5G", "20M", "HT", "4T", "149", "40", + "ETSI", "5G", "20M", "HT", "4T", "149", "40", + "MKK", "5G", "20M", "HT", "4T", "149", "63", + "FCC", "5G", "20M", "HT", "4T", "153", "40", + "ETSI", "5G", "20M", "HT", "4T", "153", "40", + "MKK", "5G", "20M", "HT", "4T", "153", "63", + "FCC", "5G", "20M", "HT", "4T", "157", "40", + "ETSI", "5G", "20M", "HT", "4T", "157", "40", + "MKK", "5G", "20M", "HT", "4T", "157", "63", + "FCC", "5G", "20M", "HT", "4T", "161", "40", + "ETSI", "5G", "20M", "HT", "4T", "161", "40", + "MKK", "5G", "20M", "HT", "4T", "161", "63", + "FCC", "5G", "20M", "HT", "4T", "165", "42", + "ETSI", "5G", "20M", "HT", "4T", "165", "42", + "MKK", "5G", "20M", "HT", "4T", "165", "63", + "FCC", "5G", "40M", "HT", "1T", "38", "32", + "ETSI", "5G", "40M", "HT", "1T", "38", "32", + "MKK", "5G", "40M", "HT", "1T", "38", "32", + "FCC", "5G", "40M", "HT", "1T", "46", "36", + "ETSI", "5G", "40M", "HT", "1T", "46", "36", + "MKK", "5G", "40M", "HT", "1T", "46", "36", + "FCC", "5G", "40M", "HT", "1T", "54", "36", + "ETSI", "5G", "40M", "HT", "1T", "54", "36", + "MKK", "5G", "40M", "HT", "1T", "54", "36", + "FCC", "5G", "40M", "HT", "1T", "62", "32", + "ETSI", "5G", "40M", "HT", "1T", "62", "32", + "MKK", "5G", "40M", "HT", "1T", "62", "32", + "FCC", "5G", "40M", "HT", "1T", "102", "30", + "ETSI", "5G", "40M", "HT", "1T", "102", "30", + "MKK", "5G", "40M", "HT", "1T", "102", "30", + "FCC", "5G", "40M", "HT", "1T", "110", "32", + "ETSI", "5G", "40M", "HT", "1T", "110", "32", + "MKK", "5G", "40M", "HT", "1T", "110", "32", + "FCC", "5G", "40M", "HT", "1T", "118", "32", + "ETSI", "5G", "40M", "HT", "1T", "118", "32", + "MKK", "5G", "40M", "HT", "1T", "118", "32", + "FCC", "5G", "40M", "HT", "1T", "126", "32", + "ETSI", "5G", "40M", "HT", "1T", "126", "32", + "MKK", "5G", "40M", "HT", "1T", "126", "32", + "FCC", "5G", "40M", "HT", "1T", "134", "36", + "ETSI", "5G", "40M", "HT", "1T", "134", "36", + "MKK", "5G", "40M", "HT", "1T", "134", "36", + "FCC", "5G", "40M", "HT", "1T", "151", "36", + "ETSI", "5G", "40M", "HT", "1T", "151", "36", + "MKK", "5G", "40M", "HT", "1T", "151", "63", + "FCC", "5G", "40M", "HT", "1T", "159", "40", + "ETSI", "5G", "40M", "HT", "1T", "159", "40", + "MKK", "5G", "40M", "HT", "1T", "159", "63", + "FCC", "5G", "40M", "HT", "2T", "38", "32", + "ETSI", "5G", "40M", "HT", "2T", "38", "32", + "MKK", "5G", "40M", "HT", "2T", "38", "32", + "FCC", "5G", "40M", "HT", "2T", "46", "36", + "ETSI", "5G", "40M", "HT", "2T", "46", "36", + "MKK", "5G", "40M", "HT", "2T", "46", "36", + "FCC", "5G", "40M", "HT", "2T", "54", "36", + "ETSI", "5G", "40M", "HT", "2T", "54", "36", + "MKK", "5G", "40M", "HT", "2T", "54", "36", + "FCC", "5G", "40M", "HT", "2T", "62", "32", + "ETSI", "5G", "40M", "HT", "2T", "62", "32", + "MKK", "5G", "40M", "HT", "2T", "62", "32", + "FCC", "5G", "40M", "HT", "2T", "102", "30", + "ETSI", "5G", "40M", "HT", "2T", "102", "30", + "MKK", "5G", "40M", "HT", "2T", "102", "30", + "FCC", "5G", "40M", "HT", "2T", "110", "32", + "ETSI", "5G", "40M", "HT", "2T", "110", "32", + "MKK", "5G", "40M", "HT", "2T", "110", "32", + "FCC", "5G", "40M", "HT", "2T", "118", "32", + "ETSI", "5G", "40M", "HT", "2T", "118", "32", + "MKK", "5G", "40M", "HT", "2T", "118", "32", + "FCC", "5G", "40M", "HT", "2T", "126", "32", + "ETSI", "5G", "40M", "HT", "2T", "126", "32", + "MKK", "5G", "40M", "HT", "2T", "126", "32", + "FCC", "5G", "40M", "HT", "2T", "134", "36", + "ETSI", "5G", "40M", "HT", "2T", "134", "36", + "MKK", "5G", "40M", "HT", "2T", "134", "36", + "FCC", "5G", "40M", "HT", "2T", "151", "36", + "ETSI", "5G", "40M", "HT", "2T", "151", "36", + "MKK", "5G", "40M", "HT", "2T", "151", "63", + "FCC", "5G", "40M", "HT", "2T", "159", "40", + "ETSI", "5G", "40M", "HT", "2T", "159", "40", + "MKK", "5G", "40M", "HT", "2T", "159", "63", + "FCC", "5G", "40M", "HT", "3T", "38", "32", + "ETSI", "5G", "40M", "HT", "3T", "38", "32", + "MKK", "5G", "40M", "HT", "3T", "38", "32", + "FCC", "5G", "40M", "HT", "3T", "46", "36", + "ETSI", "5G", "40M", "HT", "3T", "46", "36", + "MKK", "5G", "40M", "HT", "3T", "46", "36", + "FCC", "5G", "40M", "HT", "3T", "54", "36", + "ETSI", "5G", "40M", "HT", "3T", "54", "36", + "MKK", "5G", "40M", "HT", "3T", "54", "36", + "FCC", "5G", "40M", "HT", "3T", "62", "32", + "ETSI", "5G", "40M", "HT", "3T", "62", "32", + "MKK", "5G", "40M", "HT", "3T", "62", "32", + "FCC", "5G", "40M", "HT", "3T", "102", "30", + "ETSI", "5G", "40M", "HT", "3T", "102", "30", + "MKK", "5G", "40M", "HT", "3T", "102", "30", + "FCC", "5G", "40M", "HT", "3T", "110", "32", + "ETSI", "5G", "40M", "HT", "3T", "110", "32", + "MKK", "5G", "40M", "HT", "3T", "110", "32", + "FCC", "5G", "40M", "HT", "3T", "118", "32", + "ETSI", "5G", "40M", "HT", "3T", "118", "32", + "MKK", "5G", "40M", "HT", "3T", "118", "32", + "FCC", "5G", "40M", "HT", "3T", "126", "32", + "ETSI", "5G", "40M", "HT", "3T", "126", "32", + "MKK", "5G", "40M", "HT", "3T", "126", "32", + "FCC", "5G", "40M", "HT", "3T", "134", "36", + "ETSI", "5G", "40M", "HT", "3T", "134", "36", + "MKK", "5G", "40M", "HT", "3T", "134", "36", + "FCC", "5G", "40M", "HT", "3T", "151", "36", + "ETSI", "5G", "40M", "HT", "3T", "151", "36", + "MKK", "5G", "40M", "HT", "3T", "151", "63", + "FCC", "5G", "40M", "HT", "3T", "159", "40", + "ETSI", "5G", "40M", "HT", "3T", "159", "40", + "MKK", "5G", "40M", "HT", "3T", "159", "63", + "FCC", "5G", "40M", "HT", "4T", "38", "32", + "ETSI", "5G", "40M", "HT", "4T", "38", "32", + "MKK", "5G", "40M", "HT", "4T", "38", "32", + "FCC", "5G", "40M", "HT", "4T", "46", "36", + "ETSI", "5G", "40M", "HT", "4T", "46", "36", + "MKK", "5G", "40M", "HT", "4T", "46", "36", + "FCC", "5G", "40M", "HT", "4T", "54", "36", + "ETSI", "5G", "40M", "HT", "4T", "54", "36", + "MKK", "5G", "40M", "HT", "4T", "54", "36", + "FCC", "5G", "40M", "HT", "4T", "62", "32", + "ETSI", "5G", "40M", "HT", "4T", "62", "32", + "MKK", "5G", "40M", "HT", "4T", "62", "32", + "FCC", "5G", "40M", "HT", "4T", "102", "30", + "ETSI", "5G", "40M", "HT", "4T", "102", "30", + "MKK", "5G", "40M", "HT", "4T", "102", "30", + "FCC", "5G", "40M", "HT", "4T", "110", "32", + "ETSI", "5G", "40M", "HT", "4T", "110", "32", + "MKK", "5G", "40M", "HT", "4T", "110", "32", + "FCC", "5G", "40M", "HT", "4T", "118", "32", + "ETSI", "5G", "40M", "HT", "4T", "118", "32", + "MKK", "5G", "40M", "HT", "4T", "118", "32", + "FCC", "5G", "40M", "HT", "4T", "126", "32", + "ETSI", "5G", "40M", "HT", "4T", "126", "32", + "MKK", "5G", "40M", "HT", "4T", "126", "32", + "FCC", "5G", "40M", "HT", "4T", "134", "36", + "ETSI", "5G", "40M", "HT", "4T", "134", "36", + "MKK", "5G", "40M", "HT", "4T", "134", "36", + "FCC", "5G", "40M", "HT", "4T", "151", "36", + "ETSI", "5G", "40M", "HT", "4T", "151", "36", + "MKK", "5G", "40M", "HT", "4T", "151", "63", + "FCC", "5G", "40M", "HT", "4T", "159", "40", + "ETSI", "5G", "40M", "HT", "4T", "159", "40", + "MKK", "5G", "40M", "HT", "4T", "159", "63", + "FCC", "5G", "80M", "VHT", "1T", "42", "34", + "ETSI", "5G", "80M", "VHT", "1T", "42", "34", + "MKK", "5G", "80M", "VHT", "1T", "42", "34", + "FCC", "5G", "80M", "VHT", "1T", "58", "34", + "ETSI", "5G", "80M", "VHT", "1T", "58", "34", + "MKK", "5G", "80M", "VHT", "1T", "58", "34", + "FCC", "5G", "80M", "VHT", "1T", "106", "32", + "ETSI", "5G", "80M", "VHT", "1T", "106", "32", + "MKK", "5G", "80M", "VHT", "1T", "106", "32", + "FCC", "5G", "80M", "VHT", "1T", "122", "34", + "ETSI", "5G", "80M", "VHT", "1T", "122", "34", + "MKK", "5G", "80M", "VHT", "1T", "122", "34", + "FCC", "5G", "80M", "VHT", "1T", "155", "34", + "ETSI", "5G", "80M", "VHT", "1T", "155", "34", + "MKK", "5G", "80M", "VHT", "1T", "155", "63", + "FCC", "5G", "80M", "VHT", "2T", "42", "34", + "ETSI", "5G", "80M", "VHT", "2T", "42", "34", + "MKK", "5G", "80M", "VHT", "2T", "42", "34", + "FCC", "5G", "80M", "VHT", "2T", "58", "34", + "ETSI", "5G", "80M", "VHT", "2T", "58", "34", + "MKK", "5G", "80M", "VHT", "2T", "58", "34", + "FCC", "5G", "80M", "VHT", "2T", "106", "32", + "ETSI", "5G", "80M", "VHT", "2T", "106", "32", + "MKK", "5G", "80M", "VHT", "2T", "106", "32", + "FCC", "5G", "80M", "VHT", "2T", "122", "34", + "ETSI", "5G", "80M", "VHT", "2T", "122", "34", + "MKK", "5G", "80M", "VHT", "2T", "122", "34", + "FCC", "5G", "80M", "VHT", "2T", "155", "34", + "ETSI", "5G", "80M", "VHT", "2T", "155", "34", + "MKK", "5G", "80M", "VHT", "2T", "155", "63", + "FCC", "5G", "80M", "VHT", "3T", "42", "34", + "ETSI", "5G", "80M", "VHT", "3T", "42", "34", + "MKK", "5G", "80M", "VHT", "3T", "42", "34", + "FCC", "5G", "80M", "VHT", "3T", "58", "34", + "ETSI", "5G", "80M", "VHT", "3T", "58", "34", + "MKK", "5G", "80M", "VHT", "3T", "58", "34", + "FCC", "5G", "80M", "VHT", "3T", "106", "32", + "ETSI", "5G", "80M", "VHT", "3T", "106", "32", + "MKK", "5G", "80M", "VHT", "3T", "106", "32", + "FCC", "5G", "80M", "VHT", "3T", "122", "34", + "ETSI", "5G", "80M", "VHT", "3T", "122", "34", + "MKK", "5G", "80M", "VHT", "3T", "122", "34", + "FCC", "5G", "80M", "VHT", "3T", "155", "34", + "ETSI", "5G", "80M", "VHT", "3T", "155", "34", + "MKK", "5G", "80M", "VHT", "3T", "155", "63", + "FCC", "5G", "80M", "VHT", "4T", "42", "34", + "ETSI", "5G", "80M", "VHT", "4T", "42", "34", + "MKK", "5G", "80M", "VHT", "4T", "42", "34", + "FCC", "5G", "80M", "VHT", "4T", "58", "34", + "ETSI", "5G", "80M", "VHT", "4T", "58", "34", + "MKK", "5G", "80M", "VHT", "4T", "58", "34", + "FCC", "5G", "80M", "VHT", "4T", "106", "32", + "ETSI", "5G", "80M", "VHT", "4T", "106", "32", + "MKK", "5G", "80M", "VHT", "4T", "106", "32", + "FCC", "5G", "80M", "VHT", "4T", "122", "34", + "ETSI", "5G", "80M", "VHT", "4T", "122", "34", + "MKK", "5G", "80M", "VHT", "4T", "122", "34", + "FCC", "5G", "80M", "VHT", "4T", "155", "34", + "ETSI", "5G", "80M", "VHT", "4T", "155", "34", + "MKK", "5G", "80M", "VHT", "4T", "155", "63" +}; +#endif + +void +odm_read_and_config_mp_8814a_txpwr_lmt_type11(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE11 + + u32 i = 0; +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type11) / sizeof(u8); + u8 *array = (u8 *)array_mp_8814a_txpwr_lmt_type11; +#else + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type11) / sizeof(u8 *); + u8 **array = (u8 **)array_mp_8814a_txpwr_lmt_type11; +#endif + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrLmt, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrLmt = array_len / 7; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + for (i = 0; i < array_len; i += 7) { +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u8 regulation = array[i]; + u8 band = array[i + 1]; + u8 bandwidth = array[i + 2]; + u8 rate = array[i + 3]; + u8 rf_path = array[i + 4]; + u8 chnl = array[i + 5]; + u8 val = array[i + 6]; +#else + u8 *regulation = array[i]; + u8 *band = array[i + 1]; + u8 *bandwidth = array[i + 2]; + u8 *rate = array[i + 3]; + u8 *rf_path = array[i + 4]; + u8 *chnl = array[i + 5]; + u8 *val = array[i + 6]; +#endif + + odm_config_bb_txpwr_lmt_8814a(dm, regulation, band, bandwidth, + rate, rf_path, chnl, val); +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrLmt[i / 7], 100, "\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\",", + regulation, band, bandwidth, rate, rf_path, chnl, val); +#endif + } + +#endif +} + +/****************************************************************************** + * txpwr_lmt_type2.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE2 +const char *array_mp_8814a_txpwr_lmt_type2[] = { + "FCC", "2.4G", "20M", "CCK", "1T", "01", "42", + "ETSI", "2.4G", "20M", "CCK", "1T", "01", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "01", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "02", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "02", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "02", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "03", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "03", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "03", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "04", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "04", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "04", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "05", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "05", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "05", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "06", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "06", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "06", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "07", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "07", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "07", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "08", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "08", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "08", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "09", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "09", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "09", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "10", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "10", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "10", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "11", "44", + "ETSI", "2.4G", "20M", "CCK", "1T", "11", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "11", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "12", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "12", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "12", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "13", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "13", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "13", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "14", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", + "MKK", "2.4G", "20M", "CCK", "1T", "14", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "01", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "01", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "02", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "02", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "03", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "03", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "04", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "04", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "05", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "05", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "06", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "06", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "07", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "07", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "08", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "08", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "09", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "09", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "10", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "10", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "11", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "11", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "12", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "12", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "13", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "13", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63", + "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "1T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "01", "42", + "MKK", "2.4G", "20M", "HT", "1T", "01", "42", + "FCC", "2.4G", "20M", "HT", "1T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "02", "42", + "MKK", "2.4G", "20M", "HT", "1T", "02", "42", + "FCC", "2.4G", "20M", "HT", "1T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "03", "42", + "MKK", "2.4G", "20M", "HT", "1T", "03", "42", + "FCC", "2.4G", "20M", "HT", "1T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "04", "42", + "MKK", "2.4G", "20M", "HT", "1T", "04", "42", + "FCC", "2.4G", "20M", "HT", "1T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "05", "42", + "MKK", "2.4G", "20M", "HT", "1T", "05", "42", + "FCC", "2.4G", "20M", "HT", "1T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "06", "42", + "MKK", "2.4G", "20M", "HT", "1T", "06", "42", + "FCC", "2.4G", "20M", "HT", "1T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "07", "42", + "MKK", "2.4G", "20M", "HT", "1T", "07", "42", + "FCC", "2.4G", "20M", "HT", "1T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "08", "42", + "MKK", "2.4G", "20M", "HT", "1T", "08", "42", + "FCC", "2.4G", "20M", "HT", "1T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "09", "42", + "MKK", "2.4G", "20M", "HT", "1T", "09", "42", + "FCC", "2.4G", "20M", "HT", "1T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "10", "42", + "MKK", "2.4G", "20M", "HT", "1T", "10", "42", + "FCC", "2.4G", "20M", "HT", "1T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "1T", "11", "42", + "MKK", "2.4G", "20M", "HT", "1T", "11", "42", + "FCC", "2.4G", "20M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "12", "42", + "MKK", "2.4G", "20M", "HT", "1T", "12", "42", + "FCC", "2.4G", "20M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "13", "42", + "MKK", "2.4G", "20M", "HT", "1T", "13", "42", + "FCC", "2.4G", "20M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "14", "63", + "MKK", "2.4G", "20M", "HT", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "2T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "01", "40", + "MKK", "2.4G", "20M", "HT", "2T", "01", "40", + "FCC", "2.4G", "20M", "HT", "2T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "02", "40", + "MKK", "2.4G", "20M", "HT", "2T", "02", "40", + "FCC", "2.4G", "20M", "HT", "2T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "03", "40", + "MKK", "2.4G", "20M", "HT", "2T", "03", "40", + "FCC", "2.4G", "20M", "HT", "2T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "04", "40", + "MKK", "2.4G", "20M", "HT", "2T", "04", "40", + "FCC", "2.4G", "20M", "HT", "2T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "05", "40", + "MKK", "2.4G", "20M", "HT", "2T", "05", "40", + "FCC", "2.4G", "20M", "HT", "2T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "06", "40", + "MKK", "2.4G", "20M", "HT", "2T", "06", "40", + "FCC", "2.4G", "20M", "HT", "2T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "07", "40", + "MKK", "2.4G", "20M", "HT", "2T", "07", "40", + "FCC", "2.4G", "20M", "HT", "2T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "08", "40", + "MKK", "2.4G", "20M", "HT", "2T", "08", "40", + "FCC", "2.4G", "20M", "HT", "2T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "09", "40", + "MKK", "2.4G", "20M", "HT", "2T", "09", "40", + "FCC", "2.4G", "20M", "HT", "2T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "10", "40", + "MKK", "2.4G", "20M", "HT", "2T", "10", "40", + "FCC", "2.4G", "20M", "HT", "2T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "2T", "11", "40", + "MKK", "2.4G", "20M", "HT", "2T", "11", "40", + "FCC", "2.4G", "20M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "12", "40", + "MKK", "2.4G", "20M", "HT", "2T", "12", "40", + "FCC", "2.4G", "20M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "13", "40", + "MKK", "2.4G", "20M", "HT", "2T", "13", "40", + "FCC", "2.4G", "20M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", + "MKK", "2.4G", "20M", "HT", "2T", "14", "63", + "FCC", "2.4G", "20M", "HT", "3T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "3T", "01", "40", + "MKK", "2.4G", "20M", "HT", "3T", "01", "40", + "FCC", "2.4G", "20M", "HT", "3T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "02", "40", + "MKK", "2.4G", "20M", "HT", "3T", "02", "40", + "FCC", "2.4G", "20M", "HT", "3T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "03", "40", + "MKK", "2.4G", "20M", "HT", "3T", "03", "40", + "FCC", "2.4G", "20M", "HT", "3T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "04", "40", + "MKK", "2.4G", "20M", "HT", "3T", "04", "40", + "FCC", "2.4G", "20M", "HT", "3T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "05", "40", + "MKK", "2.4G", "20M", "HT", "3T", "05", "40", + "FCC", "2.4G", "20M", "HT", "3T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "06", "40", + "MKK", "2.4G", "20M", "HT", "3T", "06", "40", + "FCC", "2.4G", "20M", "HT", "3T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "07", "40", + "MKK", "2.4G", "20M", "HT", "3T", "07", "40", + "FCC", "2.4G", "20M", "HT", "3T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "08", "40", + "MKK", "2.4G", "20M", "HT", "3T", "08", "40", + "FCC", "2.4G", "20M", "HT", "3T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "09", "40", + "MKK", "2.4G", "20M", "HT", "3T", "09", "40", + "FCC", "2.4G", "20M", "HT", "3T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "10", "40", + "MKK", "2.4G", "20M", "HT", "3T", "10", "40", + "FCC", "2.4G", "20M", "HT", "3T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "11", "40", + "MKK", "2.4G", "20M", "HT", "3T", "11", "40", + "FCC", "2.4G", "20M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "12", "40", + "MKK", "2.4G", "20M", "HT", "3T", "12", "40", + "FCC", "2.4G", "20M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "13", "40", + "MKK", "2.4G", "20M", "HT", "3T", "13", "40", + "FCC", "2.4G", "20M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "14", "63", + "MKK", "2.4G", "20M", "HT", "3T", "14", "63", + "FCC", "2.4G", "20M", "HT", "4T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "4T", "01", "40", + "MKK", "2.4G", "20M", "HT", "4T", "01", "40", + "FCC", "2.4G", "20M", "HT", "4T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "02", "40", + "MKK", "2.4G", "20M", "HT", "4T", "02", "40", + "FCC", "2.4G", "20M", "HT", "4T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "03", "40", + "MKK", "2.4G", "20M", "HT", "4T", "03", "40", + "FCC", "2.4G", "20M", "HT", "4T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "04", "40", + "MKK", "2.4G", "20M", "HT", "4T", "04", "40", + "FCC", "2.4G", "20M", "HT", "4T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "05", "40", + "MKK", "2.4G", "20M", "HT", "4T", "05", "40", + "FCC", "2.4G", "20M", "HT", "4T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "06", "40", + "MKK", "2.4G", "20M", "HT", "4T", "06", "40", + "FCC", "2.4G", "20M", "HT", "4T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "07", "40", + "MKK", "2.4G", "20M", "HT", "4T", "07", "40", + "FCC", "2.4G", "20M", "HT", "4T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "08", "40", + "MKK", "2.4G", "20M", "HT", "4T", "08", "40", + "FCC", "2.4G", "20M", "HT", "4T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "09", "40", + "MKK", "2.4G", "20M", "HT", "4T", "09", "40", + "FCC", "2.4G", "20M", "HT", "4T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "10", "40", + "MKK", "2.4G", "20M", "HT", "4T", "10", "40", + "FCC", "2.4G", "20M", "HT", "4T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "4T", "11", "40", + "MKK", "2.4G", "20M", "HT", "4T", "11", "40", + "FCC", "2.4G", "20M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "12", "40", + "MKK", "2.4G", "20M", "HT", "4T", "12", "40", + "FCC", "2.4G", "20M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "13", "40", + "MKK", "2.4G", "20M", "HT", "4T", "13", "40", + "FCC", "2.4G", "20M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "14", "63", + "MKK", "2.4G", "20M", "HT", "4T", "14", "63", + "FCC", "2.4G", "40M", "HT", "1T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "01", "63", + "MKK", "2.4G", "40M", "HT", "1T", "01", "63", + "FCC", "2.4G", "40M", "HT", "1T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "02", "63", + "MKK", "2.4G", "40M", "HT", "1T", "02", "63", + "FCC", "2.4G", "40M", "HT", "1T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "1T", "03", "34", + "MKK", "2.4G", "40M", "HT", "1T", "03", "34", + "FCC", "2.4G", "40M", "HT", "1T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "04", "34", + "MKK", "2.4G", "40M", "HT", "1T", "04", "34", + "FCC", "2.4G", "40M", "HT", "1T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "05", "34", + "MKK", "2.4G", "40M", "HT", "1T", "05", "34", + "FCC", "2.4G", "40M", "HT", "1T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "06", "34", + "MKK", "2.4G", "40M", "HT", "1T", "06", "34", + "FCC", "2.4G", "40M", "HT", "1T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "07", "34", + "MKK", "2.4G", "40M", "HT", "1T", "07", "34", + "FCC", "2.4G", "40M", "HT", "1T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "08", "34", + "MKK", "2.4G", "40M", "HT", "1T", "08", "34", + "FCC", "2.4G", "40M", "HT", "1T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "09", "34", + "MKK", "2.4G", "40M", "HT", "1T", "09", "34", + "FCC", "2.4G", "40M", "HT", "1T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "10", "34", + "MKK", "2.4G", "40M", "HT", "1T", "10", "34", + "FCC", "2.4G", "40M", "HT", "1T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "1T", "11", "34", + "MKK", "2.4G", "40M", "HT", "1T", "11", "34", + "FCC", "2.4G", "40M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "12", "34", + "MKK", "2.4G", "40M", "HT", "1T", "12", "34", + "FCC", "2.4G", "40M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "13", "34", + "MKK", "2.4G", "40M", "HT", "1T", "13", "34", + "FCC", "2.4G", "40M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "14", "63", + "MKK", "2.4G", "40M", "HT", "1T", "14", "63", + "FCC", "2.4G", "40M", "HT", "2T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", + "MKK", "2.4G", "40M", "HT", "2T", "01", "63", + "FCC", "2.4G", "40M", "HT", "2T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "02", "63", + "MKK", "2.4G", "40M", "HT", "2T", "02", "63", + "FCC", "2.4G", "40M", "HT", "2T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "03", "34", + "MKK", "2.4G", "40M", "HT", "2T", "03", "34", + "FCC", "2.4G", "40M", "HT", "2T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "04", "34", + "MKK", "2.4G", "40M", "HT", "2T", "04", "34", + "FCC", "2.4G", "40M", "HT", "2T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "05", "34", + "MKK", "2.4G", "40M", "HT", "2T", "05", "34", + "FCC", "2.4G", "40M", "HT", "2T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "06", "34", + "MKK", "2.4G", "40M", "HT", "2T", "06", "34", + "FCC", "2.4G", "40M", "HT", "2T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "07", "34", + "MKK", "2.4G", "40M", "HT", "2T", "07", "34", + "FCC", "2.4G", "40M", "HT", "2T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "08", "34", + "MKK", "2.4G", "40M", "HT", "2T", "08", "34", + "FCC", "2.4G", "40M", "HT", "2T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "09", "34", + "MKK", "2.4G", "40M", "HT", "2T", "09", "34", + "FCC", "2.4G", "40M", "HT", "2T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "10", "34", + "MKK", "2.4G", "40M", "HT", "2T", "10", "34", + "FCC", "2.4G", "40M", "HT", "2T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "2T", "11", "34", + "MKK", "2.4G", "40M", "HT", "2T", "11", "34", + "FCC", "2.4G", "40M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "12", "34", + "MKK", "2.4G", "40M", "HT", "2T", "12", "34", + "FCC", "2.4G", "40M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "13", "34", + "MKK", "2.4G", "40M", "HT", "2T", "13", "34", + "FCC", "2.4G", "40M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "14", "63", + "MKK", "2.4G", "40M", "HT", "2T", "14", "63", + "FCC", "2.4G", "40M", "HT", "3T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "01", "63", + "MKK", "2.4G", "40M", "HT", "3T", "01", "63", + "FCC", "2.4G", "40M", "HT", "3T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "02", "63", + "MKK", "2.4G", "40M", "HT", "3T", "02", "63", + "FCC", "2.4G", "40M", "HT", "3T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "3T", "03", "34", + "MKK", "2.4G", "40M", "HT", "3T", "03", "34", + "FCC", "2.4G", "40M", "HT", "3T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "04", "34", + "MKK", "2.4G", "40M", "HT", "3T", "04", "34", + "FCC", "2.4G", "40M", "HT", "3T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "05", "34", + "MKK", "2.4G", "40M", "HT", "3T", "05", "34", + "FCC", "2.4G", "40M", "HT", "3T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "06", "34", + "MKK", "2.4G", "40M", "HT", "3T", "06", "34", + "FCC", "2.4G", "40M", "HT", "3T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "07", "34", + "MKK", "2.4G", "40M", "HT", "3T", "07", "34", + "FCC", "2.4G", "40M", "HT", "3T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "08", "34", + "MKK", "2.4G", "40M", "HT", "3T", "08", "34", + "FCC", "2.4G", "40M", "HT", "3T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "09", "34", + "MKK", "2.4G", "40M", "HT", "3T", "09", "34", + "FCC", "2.4G", "40M", "HT", "3T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "10", "34", + "MKK", "2.4G", "40M", "HT", "3T", "10", "34", + "FCC", "2.4G", "40M", "HT", "3T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "11", "34", + "MKK", "2.4G", "40M", "HT", "3T", "11", "34", + "FCC", "2.4G", "40M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "12", "34", + "MKK", "2.4G", "40M", "HT", "3T", "12", "34", + "FCC", "2.4G", "40M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "13", "34", + "MKK", "2.4G", "40M", "HT", "3T", "13", "34", + "FCC", "2.4G", "40M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "14", "63", + "MKK", "2.4G", "40M", "HT", "3T", "14", "63", + "FCC", "2.4G", "40M", "HT", "4T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "01", "63", + "MKK", "2.4G", "40M", "HT", "4T", "01", "63", + "FCC", "2.4G", "40M", "HT", "4T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "02", "63", + "MKK", "2.4G", "40M", "HT", "4T", "02", "63", + "FCC", "2.4G", "40M", "HT", "4T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "4T", "03", "34", + "MKK", "2.4G", "40M", "HT", "4T", "03", "34", + "FCC", "2.4G", "40M", "HT", "4T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "04", "34", + "MKK", "2.4G", "40M", "HT", "4T", "04", "34", + "FCC", "2.4G", "40M", "HT", "4T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "05", "34", + "MKK", "2.4G", "40M", "HT", "4T", "05", "34", + "FCC", "2.4G", "40M", "HT", "4T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "06", "34", + "MKK", "2.4G", "40M", "HT", "4T", "06", "34", + "FCC", "2.4G", "40M", "HT", "4T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "07", "34", + "MKK", "2.4G", "40M", "HT", "4T", "07", "34", + "FCC", "2.4G", "40M", "HT", "4T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "08", "34", + "MKK", "2.4G", "40M", "HT", "4T", "08", "34", + "FCC", "2.4G", "40M", "HT", "4T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "09", "34", + "MKK", "2.4G", "40M", "HT", "4T", "09", "34", + "FCC", "2.4G", "40M", "HT", "4T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "10", "34", + "MKK", "2.4G", "40M", "HT", "4T", "10", "34", + "FCC", "2.4G", "40M", "HT", "4T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "4T", "11", "34", + "MKK", "2.4G", "40M", "HT", "4T", "11", "34", + "FCC", "2.4G", "40M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "12", "34", + "MKK", "2.4G", "40M", "HT", "4T", "12", "34", + "FCC", "2.4G", "40M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "13", "34", + "MKK", "2.4G", "40M", "HT", "4T", "13", "34", + "FCC", "2.4G", "40M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "14", "63", + "MKK", "2.4G", "40M", "HT", "4T", "14", "63", + "FCC", "5G", "20M", "OFDM", "1T", "36", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "36", "42", + "MKK", "5G", "20M", "OFDM", "1T", "36", "42", + "FCC", "5G", "20M", "OFDM", "1T", "40", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "40", "42", + "MKK", "5G", "20M", "OFDM", "1T", "40", "42", + "FCC", "5G", "20M", "OFDM", "1T", "44", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "44", "42", + "MKK", "5G", "20M", "OFDM", "1T", "44", "42", + "FCC", "5G", "20M", "OFDM", "1T", "48", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "48", "42", + "MKK", "5G", "20M", "OFDM", "1T", "48", "42", + "FCC", "5G", "20M", "OFDM", "1T", "52", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "52", "42", + "MKK", "5G", "20M", "OFDM", "1T", "52", "42", + "FCC", "5G", "20M", "OFDM", "1T", "56", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "56", "42", + "MKK", "5G", "20M", "OFDM", "1T", "56", "42", + "FCC", "5G", "20M", "OFDM", "1T", "60", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "60", "42", + "MKK", "5G", "20M", "OFDM", "1T", "60", "42", + "FCC", "5G", "20M", "OFDM", "1T", "64", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "64", "42", + "MKK", "5G", "20M", "OFDM", "1T", "64", "42", + "FCC", "5G", "20M", "OFDM", "1T", "100", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "100", "42", + "MKK", "5G", "20M", "OFDM", "1T", "100", "42", + "FCC", "5G", "20M", "OFDM", "1T", "104", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "104", "42", + "MKK", "5G", "20M", "OFDM", "1T", "104", "42", + "FCC", "5G", "20M", "OFDM", "1T", "108", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "108", "42", + "MKK", "5G", "20M", "OFDM", "1T", "108", "42", + "FCC", "5G", "20M", "OFDM", "1T", "112", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "112", "42", + "MKK", "5G", "20M", "OFDM", "1T", "112", "42", + "FCC", "5G", "20M", "OFDM", "1T", "116", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "116", "42", + "MKK", "5G", "20M", "OFDM", "1T", "116", "42", + "FCC", "5G", "20M", "OFDM", "1T", "120", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "120", "42", + "MKK", "5G", "20M", "OFDM", "1T", "120", "42", + "FCC", "5G", "20M", "OFDM", "1T", "124", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "124", "42", + "MKK", "5G", "20M", "OFDM", "1T", "124", "42", + "FCC", "5G", "20M", "OFDM", "1T", "128", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "128", "42", + "MKK", "5G", "20M", "OFDM", "1T", "128", "42", + "FCC", "5G", "20M", "OFDM", "1T", "132", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "132", "42", + "MKK", "5G", "20M", "OFDM", "1T", "132", "42", + "FCC", "5G", "20M", "OFDM", "1T", "136", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "136", "42", + "MKK", "5G", "20M", "OFDM", "1T", "136", "42", + "FCC", "5G", "20M", "OFDM", "1T", "140", "40", + "ETSI", "5G", "20M", "OFDM", "1T", "140", "40", + "MKK", "5G", "20M", "OFDM", "1T", "140", "40", + "FCC", "5G", "20M", "OFDM", "1T", "149", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "149", "44", + "MKK", "5G", "20M", "OFDM", "1T", "149", "63", + "FCC", "5G", "20M", "OFDM", "1T", "153", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "153", "44", + "MKK", "5G", "20M", "OFDM", "1T", "153", "63", + "FCC", "5G", "20M", "OFDM", "1T", "157", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "157", "44", + "MKK", "5G", "20M", "OFDM", "1T", "157", "63", + "FCC", "5G", "20M", "OFDM", "1T", "161", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "161", "44", + "MKK", "5G", "20M", "OFDM", "1T", "161", "63", + "FCC", "5G", "20M", "OFDM", "1T", "165", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "165", "44", + "MKK", "5G", "20M", "OFDM", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "1T", "36", "32", + "ETSI", "5G", "20M", "HT", "1T", "36", "32", + "MKK", "5G", "20M", "HT", "1T", "36", "32", + "FCC", "5G", "20M", "HT", "1T", "40", "32", + "ETSI", "5G", "20M", "HT", "1T", "40", "32", + "MKK", "5G", "20M", "HT", "1T", "40", "32", + "FCC", "5G", "20M", "HT", "1T", "44", "32", + "ETSI", "5G", "20M", "HT", "1T", "44", "32", + "MKK", "5G", "20M", "HT", "1T", "44", "32", + "FCC", "5G", "20M", "HT", "1T", "48", "36", + "ETSI", "5G", "20M", "HT", "1T", "48", "36", + "MKK", "5G", "20M", "HT", "1T", "48", "36", + "FCC", "5G", "20M", "HT", "1T", "52", "36", + "ETSI", "5G", "20M", "HT", "1T", "52", "36", + "MKK", "5G", "20M", "HT", "1T", "52", "36", + "FCC", "5G", "20M", "HT", "1T", "56", "32", + "ETSI", "5G", "20M", "HT", "1T", "56", "32", + "MKK", "5G", "20M", "HT", "1T", "56", "32", + "FCC", "5G", "20M", "HT", "1T", "60", "32", + "ETSI", "5G", "20M", "HT", "1T", "60", "32", + "MKK", "5G", "20M", "HT", "1T", "60", "32", + "FCC", "5G", "20M", "HT", "1T", "64", "32", + "ETSI", "5G", "20M", "HT", "1T", "64", "32", + "MKK", "5G", "20M", "HT", "1T", "64", "32", + "FCC", "5G", "20M", "HT", "1T", "100", "32", + "ETSI", "5G", "20M", "HT", "1T", "100", "32", + "MKK", "5G", "20M", "HT", "1T", "100", "32", + "FCC", "5G", "20M", "HT", "1T", "104", "32", + "ETSI", "5G", "20M", "HT", "1T", "104", "32", + "MKK", "5G", "20M", "HT", "1T", "104", "32", + "FCC", "5G", "20M", "HT", "1T", "108", "32", + "ETSI", "5G", "20M", "HT", "1T", "108", "32", + "MKK", "5G", "20M", "HT", "1T", "108", "32", + "FCC", "5G", "20M", "HT", "1T", "112", "32", + "ETSI", "5G", "20M", "HT", "1T", "112", "32", + "MKK", "5G", "20M", "HT", "1T", "112", "32", + "FCC", "5G", "20M", "HT", "1T", "116", "32", + "ETSI", "5G", "20M", "HT", "1T", "116", "32", + "MKK", "5G", "20M", "HT", "1T", "116", "32", + "FCC", "5G", "20M", "HT", "1T", "120", "32", + "ETSI", "5G", "20M", "HT", "1T", "120", "32", + "MKK", "5G", "20M", "HT", "1T", "120", "32", + "FCC", "5G", "20M", "HT", "1T", "124", "32", + "ETSI", "5G", "20M", "HT", "1T", "124", "32", + "MKK", "5G", "20M", "HT", "1T", "124", "32", + "FCC", "5G", "20M", "HT", "1T", "128", "32", + "ETSI", "5G", "20M", "HT", "1T", "128", "32", + "MKK", "5G", "20M", "HT", "1T", "128", "32", + "FCC", "5G", "20M", "HT", "1T", "132", "32", + "ETSI", "5G", "20M", "HT", "1T", "132", "32", + "MKK", "5G", "20M", "HT", "1T", "132", "32", + "FCC", "5G", "20M", "HT", "1T", "136", "32", + "ETSI", "5G", "20M", "HT", "1T", "136", "32", + "MKK", "5G", "20M", "HT", "1T", "136", "32", + "FCC", "5G", "20M", "HT", "1T", "140", "30", + "ETSI", "5G", "20M", "HT", "1T", "140", "30", + "MKK", "5G", "20M", "HT", "1T", "140", "30", + "FCC", "5G", "20M", "HT", "1T", "149", "40", + "ETSI", "5G", "20M", "HT", "1T", "149", "40", + "MKK", "5G", "20M", "HT", "1T", "149", "63", + "FCC", "5G", "20M", "HT", "1T", "153", "40", + "ETSI", "5G", "20M", "HT", "1T", "153", "40", + "MKK", "5G", "20M", "HT", "1T", "153", "63", + "FCC", "5G", "20M", "HT", "1T", "157", "40", + "ETSI", "5G", "20M", "HT", "1T", "157", "40", + "MKK", "5G", "20M", "HT", "1T", "157", "63", + "FCC", "5G", "20M", "HT", "1T", "161", "40", + "ETSI", "5G", "20M", "HT", "1T", "161", "40", + "MKK", "5G", "20M", "HT", "1T", "161", "63", + "FCC", "5G", "20M", "HT", "1T", "165", "42", + "ETSI", "5G", "20M", "HT", "1T", "165", "42", + "MKK", "5G", "20M", "HT", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "2T", "36", "32", + "ETSI", "5G", "20M", "HT", "2T", "36", "32", + "MKK", "5G", "20M", "HT", "2T", "36", "32", + "FCC", "5G", "20M", "HT", "2T", "40", "32", + "ETSI", "5G", "20M", "HT", "2T", "40", "32", + "MKK", "5G", "20M", "HT", "2T", "40", "32", + "FCC", "5G", "20M", "HT", "2T", "44", "32", + "ETSI", "5G", "20M", "HT", "2T", "44", "32", + "MKK", "5G", "20M", "HT", "2T", "44", "32", + "FCC", "5G", "20M", "HT", "2T", "48", "36", + "ETSI", "5G", "20M", "HT", "2T", "48", "36", + "MKK", "5G", "20M", "HT", "2T", "48", "36", + "FCC", "5G", "20M", "HT", "2T", "52", "36", + "ETSI", "5G", "20M", "HT", "2T", "52", "36", + "MKK", "5G", "20M", "HT", "2T", "52", "36", + "FCC", "5G", "20M", "HT", "2T", "56", "32", + "ETSI", "5G", "20M", "HT", "2T", "56", "32", + "MKK", "5G", "20M", "HT", "2T", "56", "32", + "FCC", "5G", "20M", "HT", "2T", "60", "32", + "ETSI", "5G", "20M", "HT", "2T", "60", "32", + "MKK", "5G", "20M", "HT", "2T", "60", "32", + "FCC", "5G", "20M", "HT", "2T", "64", "32", + "ETSI", "5G", "20M", "HT", "2T", "64", "32", + "MKK", "5G", "20M", "HT", "2T", "64", "32", + "FCC", "5G", "20M", "HT", "2T", "100", "32", + "ETSI", "5G", "20M", "HT", "2T", "100", "32", + "MKK", "5G", "20M", "HT", "2T", "100", "32", + "FCC", "5G", "20M", "HT", "2T", "104", "32", + "ETSI", "5G", "20M", "HT", "2T", "104", "32", + "MKK", "5G", "20M", "HT", "2T", "104", "32", + "FCC", "5G", "20M", "HT", "2T", "108", "32", + "ETSI", "5G", "20M", "HT", "2T", "108", "32", + "MKK", "5G", "20M", "HT", "2T", "108", "32", + "FCC", "5G", "20M", "HT", "2T", "112", "32", + "ETSI", "5G", "20M", "HT", "2T", "112", "32", + "MKK", "5G", "20M", "HT", "2T", "112", "32", + "FCC", "5G", "20M", "HT", "2T", "116", "32", + "ETSI", "5G", "20M", "HT", "2T", "116", "32", + "MKK", "5G", "20M", "HT", "2T", "116", "32", + "FCC", "5G", "20M", "HT", "2T", "120", "32", + "ETSI", "5G", "20M", "HT", "2T", "120", "32", + "MKK", "5G", "20M", "HT", "2T", "120", "32", + "FCC", "5G", "20M", "HT", "2T", "124", "32", + "ETSI", "5G", "20M", "HT", "2T", "124", "32", + "MKK", "5G", "20M", "HT", "2T", "124", "32", + "FCC", "5G", "20M", "HT", "2T", "128", "32", + "ETSI", "5G", "20M", "HT", "2T", "128", "32", + "MKK", "5G", "20M", "HT", "2T", "128", "32", + "FCC", "5G", "20M", "HT", "2T", "132", "32", + "ETSI", "5G", "20M", "HT", "2T", "132", "32", + "MKK", "5G", "20M", "HT", "2T", "132", "32", + "FCC", "5G", "20M", "HT", "2T", "136", "32", + "ETSI", "5G", "20M", "HT", "2T", "136", "32", + "MKK", "5G", "20M", "HT", "2T", "136", "32", + "FCC", "5G", "20M", "HT", "2T", "140", "30", + "ETSI", "5G", "20M", "HT", "2T", "140", "30", + "MKK", "5G", "20M", "HT", "2T", "140", "30", + "FCC", "5G", "20M", "HT", "2T", "149", "40", + "ETSI", "5G", "20M", "HT", "2T", "149", "40", + "MKK", "5G", "20M", "HT", "2T", "149", "63", + "FCC", "5G", "20M", "HT", "2T", "153", "40", + "ETSI", "5G", "20M", "HT", "2T", "153", "40", + "MKK", "5G", "20M", "HT", "2T", "153", "63", + "FCC", "5G", "20M", "HT", "2T", "157", "40", + "ETSI", "5G", "20M", "HT", "2T", "157", "40", + "MKK", "5G", "20M", "HT", "2T", "157", "63", + "FCC", "5G", "20M", "HT", "2T", "161", "40", + "ETSI", "5G", "20M", "HT", "2T", "161", "40", + "MKK", "5G", "20M", "HT", "2T", "161", "63", + "FCC", "5G", "20M", "HT", "2T", "165", "42", + "ETSI", "5G", "20M", "HT", "2T", "165", "42", + "MKK", "5G", "20M", "HT", "2T", "165", "63", + "FCC", "5G", "20M", "HT", "3T", "36", "32", + "ETSI", "5G", "20M", "HT", "3T", "36", "32", + "MKK", "5G", "20M", "HT", "3T", "36", "32", + "FCC", "5G", "20M", "HT", "3T", "40", "32", + "ETSI", "5G", "20M", "HT", "3T", "40", "32", + "MKK", "5G", "20M", "HT", "3T", "40", "32", + "FCC", "5G", "20M", "HT", "3T", "44", "32", + "ETSI", "5G", "20M", "HT", "3T", "44", "32", + "MKK", "5G", "20M", "HT", "3T", "44", "32", + "FCC", "5G", "20M", "HT", "3T", "48", "36", + "ETSI", "5G", "20M", "HT", "3T", "48", "36", + "MKK", "5G", "20M", "HT", "3T", "48", "36", + "FCC", "5G", "20M", "HT", "3T", "52", "36", + "ETSI", "5G", "20M", "HT", "3T", "52", "36", + "MKK", "5G", "20M", "HT", "3T", "52", "36", + "FCC", "5G", "20M", "HT", "3T", "56", "32", + "ETSI", "5G", "20M", "HT", "3T", "56", "32", + "MKK", "5G", "20M", "HT", "3T", "56", "32", + "FCC", "5G", "20M", "HT", "3T", "60", "32", + "ETSI", "5G", "20M", "HT", "3T", "60", "32", + "MKK", "5G", "20M", "HT", "3T", "60", "32", + "FCC", "5G", "20M", "HT", "3T", "64", "32", + "ETSI", "5G", "20M", "HT", "3T", "64", "32", + "MKK", "5G", "20M", "HT", "3T", "64", "32", + "FCC", "5G", "20M", "HT", "3T", "100", "32", + "ETSI", "5G", "20M", "HT", "3T", "100", "32", + "MKK", "5G", "20M", "HT", "3T", "100", "32", + "FCC", "5G", "20M", "HT", "3T", "104", "32", + "ETSI", "5G", "20M", "HT", "3T", "104", "32", + "MKK", "5G", "20M", "HT", "3T", "104", "32", + "FCC", "5G", "20M", "HT", "3T", "108", "32", + "ETSI", "5G", "20M", "HT", "3T", "108", "32", + "MKK", "5G", "20M", "HT", "3T", "108", "32", + "FCC", "5G", "20M", "HT", "3T", "112", "32", + "ETSI", "5G", "20M", "HT", "3T", "112", "32", + "MKK", "5G", "20M", "HT", "3T", "112", "32", + "FCC", "5G", "20M", "HT", "3T", "116", "32", + "ETSI", "5G", "20M", "HT", "3T", "116", "32", + "MKK", "5G", "20M", "HT", "3T", "116", "32", + "FCC", "5G", "20M", "HT", "3T", "120", "32", + "ETSI", "5G", "20M", "HT", "3T", "120", "32", + "MKK", "5G", "20M", "HT", "3T", "120", "32", + "FCC", "5G", "20M", "HT", "3T", "124", "32", + "ETSI", "5G", "20M", "HT", "3T", "124", "32", + "MKK", "5G", "20M", "HT", "3T", "124", "32", + "FCC", "5G", "20M", "HT", "3T", "128", "32", + "ETSI", "5G", "20M", "HT", "3T", "128", "32", + "MKK", "5G", "20M", "HT", "3T", "128", "32", + "FCC", "5G", "20M", "HT", "3T", "132", "32", + "ETSI", "5G", "20M", "HT", "3T", "132", "32", + "MKK", "5G", "20M", "HT", "3T", "132", "32", + "FCC", "5G", "20M", "HT", "3T", "136", "32", + "ETSI", "5G", "20M", "HT", "3T", "136", "32", + "MKK", "5G", "20M", "HT", "3T", "136", "32", + "FCC", "5G", "20M", "HT", "3T", "140", "30", + "ETSI", "5G", "20M", "HT", "3T", "140", "30", + "MKK", "5G", "20M", "HT", "3T", "140", "30", + "FCC", "5G", "20M", "HT", "3T", "149", "40", + "ETSI", "5G", "20M", "HT", "3T", "149", "40", + "MKK", "5G", "20M", "HT", "3T", "149", "63", + "FCC", "5G", "20M", "HT", "3T", "153", "40", + "ETSI", "5G", "20M", "HT", "3T", "153", "40", + "MKK", "5G", "20M", "HT", "3T", "153", "63", + "FCC", "5G", "20M", "HT", "3T", "157", "40", + "ETSI", "5G", "20M", "HT", "3T", "157", "40", + "MKK", "5G", "20M", "HT", "3T", "157", "63", + "FCC", "5G", "20M", "HT", "3T", "161", "40", + "ETSI", "5G", "20M", "HT", "3T", "161", "40", + "MKK", "5G", "20M", "HT", "3T", "161", "63", + "FCC", "5G", "20M", "HT", "3T", "165", "42", + "ETSI", "5G", "20M", "HT", "3T", "165", "42", + "MKK", "5G", "20M", "HT", "3T", "165", "63", + "FCC", "5G", "20M", "HT", "4T", "36", "32", + "ETSI", "5G", "20M", "HT", "4T", "36", "32", + "MKK", "5G", "20M", "HT", "4T", "36", "32", + "FCC", "5G", "20M", "HT", "4T", "40", "32", + "ETSI", "5G", "20M", "HT", "4T", "40", "32", + "MKK", "5G", "20M", "HT", "4T", "40", "32", + "FCC", "5G", "20M", "HT", "4T", "44", "32", + "ETSI", "5G", "20M", "HT", "4T", "44", "32", + "MKK", "5G", "20M", "HT", "4T", "44", "32", + "FCC", "5G", "20M", "HT", "4T", "48", "36", + "ETSI", "5G", "20M", "HT", "4T", "48", "36", + "MKK", "5G", "20M", "HT", "4T", "48", "36", + "FCC", "5G", "20M", "HT", "4T", "52", "36", + "ETSI", "5G", "20M", "HT", "4T", "52", "36", + "MKK", "5G", "20M", "HT", "4T", "52", "36", + "FCC", "5G", "20M", "HT", "4T", "56", "32", + "ETSI", "5G", "20M", "HT", "4T", "56", "32", + "MKK", "5G", "20M", "HT", "4T", "56", "32", + "FCC", "5G", "20M", "HT", "4T", "60", "32", + "ETSI", "5G", "20M", "HT", "4T", "60", "32", + "MKK", "5G", "20M", "HT", "4T", "60", "32", + "FCC", "5G", "20M", "HT", "4T", "64", "32", + "ETSI", "5G", "20M", "HT", "4T", "64", "32", + "MKK", "5G", "20M", "HT", "4T", "64", "32", + "FCC", "5G", "20M", "HT", "4T", "100", "32", + "ETSI", "5G", "20M", "HT", "4T", "100", "32", + "MKK", "5G", "20M", "HT", "4T", "100", "32", + "FCC", "5G", "20M", "HT", "4T", "104", "32", + "ETSI", "5G", "20M", "HT", "4T", "104", "32", + "MKK", "5G", "20M", "HT", "4T", "104", "32", + "FCC", "5G", "20M", "HT", "4T", "108", "32", + "ETSI", "5G", "20M", "HT", "4T", "108", "32", + "MKK", "5G", "20M", "HT", "4T", "108", "32", + "FCC", "5G", "20M", "HT", "4T", "112", "32", + "ETSI", "5G", "20M", "HT", "4T", "112", "32", + "MKK", "5G", "20M", "HT", "4T", "112", "32", + "FCC", "5G", "20M", "HT", "4T", "116", "32", + "ETSI", "5G", "20M", "HT", "4T", "116", "32", + "MKK", "5G", "20M", "HT", "4T", "116", "32", + "FCC", "5G", "20M", "HT", "4T", "120", "32", + "ETSI", "5G", "20M", "HT", "4T", "120", "32", + "MKK", "5G", "20M", "HT", "4T", "120", "32", + "FCC", "5G", "20M", "HT", "4T", "124", "32", + "ETSI", "5G", "20M", "HT", "4T", "124", "32", + "MKK", "5G", "20M", "HT", "4T", "124", "32", + "FCC", "5G", "20M", "HT", "4T", "128", "32", + "ETSI", "5G", "20M", "HT", "4T", "128", "32", + "MKK", "5G", "20M", "HT", "4T", "128", "32", + "FCC", "5G", "20M", "HT", "4T", "132", "32", + "ETSI", "5G", "20M", "HT", "4T", "132", "32", + "MKK", "5G", "20M", "HT", "4T", "132", "32", + "FCC", "5G", "20M", "HT", "4T", "136", "32", + "ETSI", "5G", "20M", "HT", "4T", "136", "32", + "MKK", "5G", "20M", "HT", "4T", "136", "32", + "FCC", "5G", "20M", "HT", "4T", "140", "30", + "ETSI", "5G", "20M", "HT", "4T", "140", "30", + "MKK", "5G", "20M", "HT", "4T", "140", "30", + "FCC", "5G", "20M", "HT", "4T", "149", "40", + "ETSI", "5G", "20M", "HT", "4T", "149", "40", + "MKK", "5G", "20M", "HT", "4T", "149", "63", + "FCC", "5G", "20M", "HT", "4T", "153", "40", + "ETSI", "5G", "20M", "HT", "4T", "153", "40", + "MKK", "5G", "20M", "HT", "4T", "153", "63", + "FCC", "5G", "20M", "HT", "4T", "157", "40", + "ETSI", "5G", "20M", "HT", "4T", "157", "40", + "MKK", "5G", "20M", "HT", "4T", "157", "63", + "FCC", "5G", "20M", "HT", "4T", "161", "40", + "ETSI", "5G", "20M", "HT", "4T", "161", "40", + "MKK", "5G", "20M", "HT", "4T", "161", "63", + "FCC", "5G", "20M", "HT", "4T", "165", "42", + "ETSI", "5G", "20M", "HT", "4T", "165", "42", + "MKK", "5G", "20M", "HT", "4T", "165", "63", + "FCC", "5G", "40M", "HT", "1T", "38", "32", + "ETSI", "5G", "40M", "HT", "1T", "38", "32", + "MKK", "5G", "40M", "HT", "1T", "38", "32", + "FCC", "5G", "40M", "HT", "1T", "46", "36", + "ETSI", "5G", "40M", "HT", "1T", "46", "36", + "MKK", "5G", "40M", "HT", "1T", "46", "36", + "FCC", "5G", "40M", "HT", "1T", "54", "36", + "ETSI", "5G", "40M", "HT", "1T", "54", "36", + "MKK", "5G", "40M", "HT", "1T", "54", "36", + "FCC", "5G", "40M", "HT", "1T", "62", "32", + "ETSI", "5G", "40M", "HT", "1T", "62", "32", + "MKK", "5G", "40M", "HT", "1T", "62", "32", + "FCC", "5G", "40M", "HT", "1T", "102", "30", + "ETSI", "5G", "40M", "HT", "1T", "102", "30", + "MKK", "5G", "40M", "HT", "1T", "102", "30", + "FCC", "5G", "40M", "HT", "1T", "110", "32", + "ETSI", "5G", "40M", "HT", "1T", "110", "32", + "MKK", "5G", "40M", "HT", "1T", "110", "32", + "FCC", "5G", "40M", "HT", "1T", "118", "32", + "ETSI", "5G", "40M", "HT", "1T", "118", "32", + "MKK", "5G", "40M", "HT", "1T", "118", "32", + "FCC", "5G", "40M", "HT", "1T", "126", "32", + "ETSI", "5G", "40M", "HT", "1T", "126", "32", + "MKK", "5G", "40M", "HT", "1T", "126", "32", + "FCC", "5G", "40M", "HT", "1T", "134", "36", + "ETSI", "5G", "40M", "HT", "1T", "134", "36", + "MKK", "5G", "40M", "HT", "1T", "134", "36", + "FCC", "5G", "40M", "HT", "1T", "151", "36", + "ETSI", "5G", "40M", "HT", "1T", "151", "36", + "MKK", "5G", "40M", "HT", "1T", "151", "63", + "FCC", "5G", "40M", "HT", "1T", "159", "40", + "ETSI", "5G", "40M", "HT", "1T", "159", "40", + "MKK", "5G", "40M", "HT", "1T", "159", "63", + "FCC", "5G", "40M", "HT", "2T", "38", "32", + "ETSI", "5G", "40M", "HT", "2T", "38", "32", + "MKK", "5G", "40M", "HT", "2T", "38", "32", + "FCC", "5G", "40M", "HT", "2T", "46", "36", + "ETSI", "5G", "40M", "HT", "2T", "46", "36", + "MKK", "5G", "40M", "HT", "2T", "46", "36", + "FCC", "5G", "40M", "HT", "2T", "54", "36", + "ETSI", "5G", "40M", "HT", "2T", "54", "36", + "MKK", "5G", "40M", "HT", "2T", "54", "36", + "FCC", "5G", "40M", "HT", "2T", "62", "32", + "ETSI", "5G", "40M", "HT", "2T", "62", "32", + "MKK", "5G", "40M", "HT", "2T", "62", "32", + "FCC", "5G", "40M", "HT", "2T", "102", "30", + "ETSI", "5G", "40M", "HT", "2T", "102", "30", + "MKK", "5G", "40M", "HT", "2T", "102", "30", + "FCC", "5G", "40M", "HT", "2T", "110", "32", + "ETSI", "5G", "40M", "HT", "2T", "110", "32", + "MKK", "5G", "40M", "HT", "2T", "110", "32", + "FCC", "5G", "40M", "HT", "2T", "118", "32", + "ETSI", "5G", "40M", "HT", "2T", "118", "32", + "MKK", "5G", "40M", "HT", "2T", "118", "32", + "FCC", "5G", "40M", "HT", "2T", "126", "32", + "ETSI", "5G", "40M", "HT", "2T", "126", "32", + "MKK", "5G", "40M", "HT", "2T", "126", "32", + "FCC", "5G", "40M", "HT", "2T", "134", "36", + "ETSI", "5G", "40M", "HT", "2T", "134", "36", + "MKK", "5G", "40M", "HT", "2T", "134", "36", + "FCC", "5G", "40M", "HT", "2T", "151", "36", + "ETSI", "5G", "40M", "HT", "2T", "151", "36", + "MKK", "5G", "40M", "HT", "2T", "151", "63", + "FCC", "5G", "40M", "HT", "2T", "159", "40", + "ETSI", "5G", "40M", "HT", "2T", "159", "40", + "MKK", "5G", "40M", "HT", "2T", "159", "63", + "FCC", "5G", "40M", "HT", "3T", "38", "32", + "ETSI", "5G", "40M", "HT", "3T", "38", "32", + "MKK", "5G", "40M", "HT", "3T", "38", "32", + "FCC", "5G", "40M", "HT", "3T", "46", "36", + "ETSI", "5G", "40M", "HT", "3T", "46", "36", + "MKK", "5G", "40M", "HT", "3T", "46", "36", + "FCC", "5G", "40M", "HT", "3T", "54", "36", + "ETSI", "5G", "40M", "HT", "3T", "54", "36", + "MKK", "5G", "40M", "HT", "3T", "54", "36", + "FCC", "5G", "40M", "HT", "3T", "62", "32", + "ETSI", "5G", "40M", "HT", "3T", "62", "32", + "MKK", "5G", "40M", "HT", "3T", "62", "32", + "FCC", "5G", "40M", "HT", "3T", "102", "30", + "ETSI", "5G", "40M", "HT", "3T", "102", "30", + "MKK", "5G", "40M", "HT", "3T", "102", "30", + "FCC", "5G", "40M", "HT", "3T", "110", "32", + "ETSI", "5G", "40M", "HT", "3T", "110", "32", + "MKK", "5G", "40M", "HT", "3T", "110", "32", + "FCC", "5G", "40M", "HT", "3T", "118", "32", + "ETSI", "5G", "40M", "HT", "3T", "118", "32", + "MKK", "5G", "40M", "HT", "3T", "118", "32", + "FCC", "5G", "40M", "HT", "3T", "126", "32", + "ETSI", "5G", "40M", "HT", "3T", "126", "32", + "MKK", "5G", "40M", "HT", "3T", "126", "32", + "FCC", "5G", "40M", "HT", "3T", "134", "36", + "ETSI", "5G", "40M", "HT", "3T", "134", "36", + "MKK", "5G", "40M", "HT", "3T", "134", "36", + "FCC", "5G", "40M", "HT", "3T", "151", "36", + "ETSI", "5G", "40M", "HT", "3T", "151", "36", + "MKK", "5G", "40M", "HT", "3T", "151", "63", + "FCC", "5G", "40M", "HT", "3T", "159", "40", + "ETSI", "5G", "40M", "HT", "3T", "159", "40", + "MKK", "5G", "40M", "HT", "3T", "159", "63", + "FCC", "5G", "40M", "HT", "4T", "38", "32", + "ETSI", "5G", "40M", "HT", "4T", "38", "32", + "MKK", "5G", "40M", "HT", "4T", "38", "32", + "FCC", "5G", "40M", "HT", "4T", "46", "36", + "ETSI", "5G", "40M", "HT", "4T", "46", "36", + "MKK", "5G", "40M", "HT", "4T", "46", "36", + "FCC", "5G", "40M", "HT", "4T", "54", "36", + "ETSI", "5G", "40M", "HT", "4T", "54", "36", + "MKK", "5G", "40M", "HT", "4T", "54", "36", + "FCC", "5G", "40M", "HT", "4T", "62", "32", + "ETSI", "5G", "40M", "HT", "4T", "62", "32", + "MKK", "5G", "40M", "HT", "4T", "62", "32", + "FCC", "5G", "40M", "HT", "4T", "102", "30", + "ETSI", "5G", "40M", "HT", "4T", "102", "30", + "MKK", "5G", "40M", "HT", "4T", "102", "30", + "FCC", "5G", "40M", "HT", "4T", "110", "32", + "ETSI", "5G", "40M", "HT", "4T", "110", "32", + "MKK", "5G", "40M", "HT", "4T", "110", "32", + "FCC", "5G", "40M", "HT", "4T", "118", "32", + "ETSI", "5G", "40M", "HT", "4T", "118", "32", + "MKK", "5G", "40M", "HT", "4T", "118", "32", + "FCC", "5G", "40M", "HT", "4T", "126", "32", + "ETSI", "5G", "40M", "HT", "4T", "126", "32", + "MKK", "5G", "40M", "HT", "4T", "126", "32", + "FCC", "5G", "40M", "HT", "4T", "134", "36", + "ETSI", "5G", "40M", "HT", "4T", "134", "36", + "MKK", "5G", "40M", "HT", "4T", "134", "36", + "FCC", "5G", "40M", "HT", "4T", "151", "36", + "ETSI", "5G", "40M", "HT", "4T", "151", "36", + "MKK", "5G", "40M", "HT", "4T", "151", "63", + "FCC", "5G", "40M", "HT", "4T", "159", "40", + "ETSI", "5G", "40M", "HT", "4T", "159", "40", + "MKK", "5G", "40M", "HT", "4T", "159", "63", + "FCC", "5G", "80M", "VHT", "1T", "42", "34", + "ETSI", "5G", "80M", "VHT", "1T", "42", "34", + "MKK", "5G", "80M", "VHT", "1T", "42", "34", + "FCC", "5G", "80M", "VHT", "1T", "58", "34", + "ETSI", "5G", "80M", "VHT", "1T", "58", "34", + "MKK", "5G", "80M", "VHT", "1T", "58", "34", + "FCC", "5G", "80M", "VHT", "1T", "106", "32", + "ETSI", "5G", "80M", "VHT", "1T", "106", "32", + "MKK", "5G", "80M", "VHT", "1T", "106", "32", + "FCC", "5G", "80M", "VHT", "1T", "122", "34", + "ETSI", "5G", "80M", "VHT", "1T", "122", "34", + "MKK", "5G", "80M", "VHT", "1T", "122", "34", + "FCC", "5G", "80M", "VHT", "1T", "155", "34", + "ETSI", "5G", "80M", "VHT", "1T", "155", "34", + "MKK", "5G", "80M", "VHT", "1T", "155", "63", + "FCC", "5G", "80M", "VHT", "2T", "42", "34", + "ETSI", "5G", "80M", "VHT", "2T", "42", "34", + "MKK", "5G", "80M", "VHT", "2T", "42", "34", + "FCC", "5G", "80M", "VHT", "2T", "58", "34", + "ETSI", "5G", "80M", "VHT", "2T", "58", "34", + "MKK", "5G", "80M", "VHT", "2T", "58", "34", + "FCC", "5G", "80M", "VHT", "2T", "106", "32", + "ETSI", "5G", "80M", "VHT", "2T", "106", "32", + "MKK", "5G", "80M", "VHT", "2T", "106", "32", + "FCC", "5G", "80M", "VHT", "2T", "122", "34", + "ETSI", "5G", "80M", "VHT", "2T", "122", "34", + "MKK", "5G", "80M", "VHT", "2T", "122", "34", + "FCC", "5G", "80M", "VHT", "2T", "155", "34", + "ETSI", "5G", "80M", "VHT", "2T", "155", "34", + "MKK", "5G", "80M", "VHT", "2T", "155", "63", + "FCC", "5G", "80M", "VHT", "3T", "42", "34", + "ETSI", "5G", "80M", "VHT", "3T", "42", "34", + "MKK", "5G", "80M", "VHT", "3T", "42", "34", + "FCC", "5G", "80M", "VHT", "3T", "58", "34", + "ETSI", "5G", "80M", "VHT", "3T", "58", "34", + "MKK", "5G", "80M", "VHT", "3T", "58", "34", + "FCC", "5G", "80M", "VHT", "3T", "106", "32", + "ETSI", "5G", "80M", "VHT", "3T", "106", "32", + "MKK", "5G", "80M", "VHT", "3T", "106", "32", + "FCC", "5G", "80M", "VHT", "3T", "122", "34", + "ETSI", "5G", "80M", "VHT", "3T", "122", "34", + "MKK", "5G", "80M", "VHT", "3T", "122", "34", + "FCC", "5G", "80M", "VHT", "3T", "155", "34", + "ETSI", "5G", "80M", "VHT", "3T", "155", "34", + "MKK", "5G", "80M", "VHT", "3T", "155", "63", + "FCC", "5G", "80M", "VHT", "4T", "42", "34", + "ETSI", "5G", "80M", "VHT", "4T", "42", "34", + "MKK", "5G", "80M", "VHT", "4T", "42", "34", + "FCC", "5G", "80M", "VHT", "4T", "58", "34", + "ETSI", "5G", "80M", "VHT", "4T", "58", "34", + "MKK", "5G", "80M", "VHT", "4T", "58", "34", + "FCC", "5G", "80M", "VHT", "4T", "106", "32", + "ETSI", "5G", "80M", "VHT", "4T", "106", "32", + "MKK", "5G", "80M", "VHT", "4T", "106", "32", + "FCC", "5G", "80M", "VHT", "4T", "122", "34", + "ETSI", "5G", "80M", "VHT", "4T", "122", "34", + "MKK", "5G", "80M", "VHT", "4T", "122", "34", + "FCC", "5G", "80M", "VHT", "4T", "155", "34", + "ETSI", "5G", "80M", "VHT", "4T", "155", "34", + "MKK", "5G", "80M", "VHT", "4T", "155", "63" +}; +#endif + +void +odm_read_and_config_mp_8814a_txpwr_lmt_type2(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE2 + + u32 i = 0; +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type2) / sizeof(u8); + u8 *array = (u8 *)array_mp_8814a_txpwr_lmt_type2; +#else + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type2) / sizeof(u8 *); + u8 **array = (u8 **)array_mp_8814a_txpwr_lmt_type2; +#endif + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrLmt, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrLmt = array_len / 7; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + for (i = 0; i < array_len; i += 7) { +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u8 regulation = array[i]; + u8 band = array[i + 1]; + u8 bandwidth = array[i + 2]; + u8 rate = array[i + 3]; + u8 rf_path = array[i + 4]; + u8 chnl = array[i + 5]; + u8 val = array[i + 6]; +#else + u8 *regulation = array[i]; + u8 *band = array[i + 1]; + u8 *bandwidth = array[i + 2]; + u8 *rate = array[i + 3]; + u8 *rf_path = array[i + 4]; + u8 *chnl = array[i + 5]; + u8 *val = array[i + 6]; +#endif + + odm_config_bb_txpwr_lmt_8814a(dm, regulation, band, bandwidth, + rate, rf_path, chnl, val); +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrLmt[i / 7], 100, "\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\",", + regulation, band, bandwidth, rate, rf_path, chnl, val); +#endif + } + +#endif +} + +/****************************************************************************** + * txpwr_lmt_type3.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE3 +const char *array_mp_8814a_txpwr_lmt_type3[] = { + "FCC", "2.4G", "20M", "CCK", "1T", "01", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "01", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "01", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "02", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "02", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "02", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "03", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "03", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "03", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "04", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "04", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "04", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "05", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "05", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "05", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "06", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "06", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "06", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "07", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "07", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "07", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "08", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "08", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "08", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "09", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "09", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "09", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "10", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "10", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "10", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "11", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "11", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "11", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "12", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "12", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "12", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "13", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "13", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "13", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "14", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", + "MKK", "2.4G", "20M", "CCK", "1T", "14", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "01", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "01", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "02", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "02", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "03", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "03", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "04", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "04", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "05", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "05", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "06", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "06", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "07", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "07", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "08", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "08", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "09", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "09", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "10", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "10", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "11", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "11", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "12", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "12", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "13", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "13", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63", + "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "1T", "01", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "01", "40", + "MKK", "2.4G", "20M", "HT", "1T", "01", "40", + "FCC", "2.4G", "20M", "HT", "1T", "02", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "02", "40", + "MKK", "2.4G", "20M", "HT", "1T", "02", "40", + "FCC", "2.4G", "20M", "HT", "1T", "03", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "03", "40", + "MKK", "2.4G", "20M", "HT", "1T", "03", "40", + "FCC", "2.4G", "20M", "HT", "1T", "04", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "04", "40", + "MKK", "2.4G", "20M", "HT", "1T", "04", "40", + "FCC", "2.4G", "20M", "HT", "1T", "05", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "05", "40", + "MKK", "2.4G", "20M", "HT", "1T", "05", "40", + "FCC", "2.4G", "20M", "HT", "1T", "06", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "06", "40", + "MKK", "2.4G", "20M", "HT", "1T", "06", "40", + "FCC", "2.4G", "20M", "HT", "1T", "07", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "07", "40", + "MKK", "2.4G", "20M", "HT", "1T", "07", "40", + "FCC", "2.4G", "20M", "HT", "1T", "08", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "08", "40", + "MKK", "2.4G", "20M", "HT", "1T", "08", "40", + "FCC", "2.4G", "20M", "HT", "1T", "09", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "09", "40", + "MKK", "2.4G", "20M", "HT", "1T", "09", "40", + "FCC", "2.4G", "20M", "HT", "1T", "10", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "10", "40", + "MKK", "2.4G", "20M", "HT", "1T", "10", "40", + "FCC", "2.4G", "20M", "HT", "1T", "11", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "11", "40", + "MKK", "2.4G", "20M", "HT", "1T", "11", "40", + "FCC", "2.4G", "20M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "12", "40", + "MKK", "2.4G", "20M", "HT", "1T", "12", "40", + "FCC", "2.4G", "20M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "13", "40", + "MKK", "2.4G", "20M", "HT", "1T", "13", "40", + "FCC", "2.4G", "20M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "14", "63", + "MKK", "2.4G", "20M", "HT", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "2T", "01", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "01", "40", + "MKK", "2.4G", "20M", "HT", "2T", "01", "40", + "FCC", "2.4G", "20M", "HT", "2T", "02", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "02", "40", + "MKK", "2.4G", "20M", "HT", "2T", "02", "40", + "FCC", "2.4G", "20M", "HT", "2T", "03", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "03", "40", + "MKK", "2.4G", "20M", "HT", "2T", "03", "40", + "FCC", "2.4G", "20M", "HT", "2T", "04", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "04", "40", + "MKK", "2.4G", "20M", "HT", "2T", "04", "40", + "FCC", "2.4G", "20M", "HT", "2T", "05", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "05", "40", + "MKK", "2.4G", "20M", "HT", "2T", "05", "40", + "FCC", "2.4G", "20M", "HT", "2T", "06", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "06", "40", + "MKK", "2.4G", "20M", "HT", "2T", "06", "40", + "FCC", "2.4G", "20M", "HT", "2T", "07", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "07", "40", + "MKK", "2.4G", "20M", "HT", "2T", "07", "40", + "FCC", "2.4G", "20M", "HT", "2T", "08", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "08", "40", + "MKK", "2.4G", "20M", "HT", "2T", "08", "40", + "FCC", "2.4G", "20M", "HT", "2T", "09", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "09", "40", + "MKK", "2.4G", "20M", "HT", "2T", "09", "40", + "FCC", "2.4G", "20M", "HT", "2T", "10", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "10", "40", + "MKK", "2.4G", "20M", "HT", "2T", "10", "40", + "FCC", "2.4G", "20M", "HT", "2T", "11", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "11", "40", + "MKK", "2.4G", "20M", "HT", "2T", "11", "40", + "FCC", "2.4G", "20M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "12", "40", + "MKK", "2.4G", "20M", "HT", "2T", "12", "40", + "FCC", "2.4G", "20M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "13", "40", + "MKK", "2.4G", "20M", "HT", "2T", "13", "40", + "FCC", "2.4G", "20M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", + "MKK", "2.4G", "20M", "HT", "2T", "14", "63", + "FCC", "2.4G", "20M", "HT", "3T", "01", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "01", "40", + "MKK", "2.4G", "20M", "HT", "3T", "01", "40", + "FCC", "2.4G", "20M", "HT", "3T", "02", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "02", "40", + "MKK", "2.4G", "20M", "HT", "3T", "02", "40", + "FCC", "2.4G", "20M", "HT", "3T", "03", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "03", "40", + "MKK", "2.4G", "20M", "HT", "3T", "03", "40", + "FCC", "2.4G", "20M", "HT", "3T", "04", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "04", "40", + "MKK", "2.4G", "20M", "HT", "3T", "04", "40", + "FCC", "2.4G", "20M", "HT", "3T", "05", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "05", "40", + "MKK", "2.4G", "20M", "HT", "3T", "05", "40", + "FCC", "2.4G", "20M", "HT", "3T", "06", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "06", "40", + "MKK", "2.4G", "20M", "HT", "3T", "06", "40", + "FCC", "2.4G", "20M", "HT", "3T", "07", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "07", "40", + "MKK", "2.4G", "20M", "HT", "3T", "07", "40", + "FCC", "2.4G", "20M", "HT", "3T", "08", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "08", "40", + "MKK", "2.4G", "20M", "HT", "3T", "08", "40", + "FCC", "2.4G", "20M", "HT", "3T", "09", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "09", "40", + "MKK", "2.4G", "20M", "HT", "3T", "09", "40", + "FCC", "2.4G", "20M", "HT", "3T", "10", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "10", "40", + "MKK", "2.4G", "20M", "HT", "3T", "10", "40", + "FCC", "2.4G", "20M", "HT", "3T", "11", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "11", "40", + "MKK", "2.4G", "20M", "HT", "3T", "11", "40", + "FCC", "2.4G", "20M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "12", "40", + "MKK", "2.4G", "20M", "HT", "3T", "12", "40", + "FCC", "2.4G", "20M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "13", "40", + "MKK", "2.4G", "20M", "HT", "3T", "13", "40", + "FCC", "2.4G", "20M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "14", "63", + "MKK", "2.4G", "20M", "HT", "3T", "14", "63", + "FCC", "2.4G", "20M", "HT", "4T", "01", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "01", "40", + "MKK", "2.4G", "20M", "HT", "4T", "01", "40", + "FCC", "2.4G", "20M", "HT", "4T", "02", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "02", "40", + "MKK", "2.4G", "20M", "HT", "4T", "02", "40", + "FCC", "2.4G", "20M", "HT", "4T", "03", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "03", "40", + "MKK", "2.4G", "20M", "HT", "4T", "03", "40", + "FCC", "2.4G", "20M", "HT", "4T", "04", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "04", "40", + "MKK", "2.4G", "20M", "HT", "4T", "04", "40", + "FCC", "2.4G", "20M", "HT", "4T", "05", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "05", "40", + "MKK", "2.4G", "20M", "HT", "4T", "05", "40", + "FCC", "2.4G", "20M", "HT", "4T", "06", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "06", "40", + "MKK", "2.4G", "20M", "HT", "4T", "06", "40", + "FCC", "2.4G", "20M", "HT", "4T", "07", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "07", "40", + "MKK", "2.4G", "20M", "HT", "4T", "07", "40", + "FCC", "2.4G", "20M", "HT", "4T", "08", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "08", "40", + "MKK", "2.4G", "20M", "HT", "4T", "08", "40", + "FCC", "2.4G", "20M", "HT", "4T", "09", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "09", "40", + "MKK", "2.4G", "20M", "HT", "4T", "09", "40", + "FCC", "2.4G", "20M", "HT", "4T", "10", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "10", "40", + "MKK", "2.4G", "20M", "HT", "4T", "10", "40", + "FCC", "2.4G", "20M", "HT", "4T", "11", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "11", "40", + "MKK", "2.4G", "20M", "HT", "4T", "11", "40", + "FCC", "2.4G", "20M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "12", "40", + "MKK", "2.4G", "20M", "HT", "4T", "12", "40", + "FCC", "2.4G", "20M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "13", "40", + "MKK", "2.4G", "20M", "HT", "4T", "13", "40", + "FCC", "2.4G", "20M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "14", "63", + "MKK", "2.4G", "20M", "HT", "4T", "14", "63", + "FCC", "2.4G", "40M", "HT", "1T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "01", "63", + "MKK", "2.4G", "40M", "HT", "1T", "01", "63", + "FCC", "2.4G", "40M", "HT", "1T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "02", "63", + "MKK", "2.4G", "40M", "HT", "1T", "02", "63", + "FCC", "2.4G", "40M", "HT", "1T", "03", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "03", "40", + "MKK", "2.4G", "40M", "HT", "1T", "03", "40", + "FCC", "2.4G", "40M", "HT", "1T", "04", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "04", "40", + "MKK", "2.4G", "40M", "HT", "1T", "04", "40", + "FCC", "2.4G", "40M", "HT", "1T", "05", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "05", "40", + "MKK", "2.4G", "40M", "HT", "1T", "05", "40", + "FCC", "2.4G", "40M", "HT", "1T", "06", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "06", "40", + "MKK", "2.4G", "40M", "HT", "1T", "06", "40", + "FCC", "2.4G", "40M", "HT", "1T", "07", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "07", "40", + "MKK", "2.4G", "40M", "HT", "1T", "07", "40", + "FCC", "2.4G", "40M", "HT", "1T", "08", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "08", "40", + "MKK", "2.4G", "40M", "HT", "1T", "08", "40", + "FCC", "2.4G", "40M", "HT", "1T", "09", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "09", "40", + "MKK", "2.4G", "40M", "HT", "1T", "09", "40", + "FCC", "2.4G", "40M", "HT", "1T", "10", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "10", "40", + "MKK", "2.4G", "40M", "HT", "1T", "10", "40", + "FCC", "2.4G", "40M", "HT", "1T", "11", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "11", "40", + "MKK", "2.4G", "40M", "HT", "1T", "11", "40", + "FCC", "2.4G", "40M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "12", "40", + "MKK", "2.4G", "40M", "HT", "1T", "12", "40", + "FCC", "2.4G", "40M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "13", "40", + "MKK", "2.4G", "40M", "HT", "1T", "13", "40", + "FCC", "2.4G", "40M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "14", "63", + "MKK", "2.4G", "40M", "HT", "1T", "14", "63", + "FCC", "2.4G", "40M", "HT", "2T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", + "MKK", "2.4G", "40M", "HT", "2T", "01", "63", + "FCC", "2.4G", "40M", "HT", "2T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "02", "63", + "MKK", "2.4G", "40M", "HT", "2T", "02", "63", + "FCC", "2.4G", "40M", "HT", "2T", "03", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "03", "40", + "MKK", "2.4G", "40M", "HT", "2T", "03", "40", + "FCC", "2.4G", "40M", "HT", "2T", "04", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "04", "40", + "MKK", "2.4G", "40M", "HT", "2T", "04", "40", + "FCC", "2.4G", "40M", "HT", "2T", "05", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "05", "40", + "MKK", "2.4G", "40M", "HT", "2T", "05", "40", + "FCC", "2.4G", "40M", "HT", "2T", "06", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "06", "40", + "MKK", "2.4G", "40M", "HT", "2T", "06", "40", + "FCC", "2.4G", "40M", "HT", "2T", "07", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "07", "40", + "MKK", "2.4G", "40M", "HT", "2T", "07", "40", + "FCC", "2.4G", "40M", "HT", "2T", "08", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "08", "40", + "MKK", "2.4G", "40M", "HT", "2T", "08", "40", + "FCC", "2.4G", "40M", "HT", "2T", "09", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "09", "40", + "MKK", "2.4G", "40M", "HT", "2T", "09", "40", + "FCC", "2.4G", "40M", "HT", "2T", "10", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "10", "40", + "MKK", "2.4G", "40M", "HT", "2T", "10", "40", + "FCC", "2.4G", "40M", "HT", "2T", "11", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "11", "40", + "MKK", "2.4G", "40M", "HT", "2T", "11", "40", + "FCC", "2.4G", "40M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "12", "40", + "MKK", "2.4G", "40M", "HT", "2T", "12", "40", + "FCC", "2.4G", "40M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "13", "40", + "MKK", "2.4G", "40M", "HT", "2T", "13", "40", + "FCC", "2.4G", "40M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "14", "63", + "MKK", "2.4G", "40M", "HT", "2T", "14", "63", + "FCC", "2.4G", "40M", "HT", "3T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "01", "63", + "MKK", "2.4G", "40M", "HT", "3T", "01", "63", + "FCC", "2.4G", "40M", "HT", "3T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "02", "63", + "MKK", "2.4G", "40M", "HT", "3T", "02", "63", + "FCC", "2.4G", "40M", "HT", "3T", "03", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "03", "40", + "MKK", "2.4G", "40M", "HT", "3T", "03", "40", + "FCC", "2.4G", "40M", "HT", "3T", "04", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "04", "40", + "MKK", "2.4G", "40M", "HT", "3T", "04", "40", + "FCC", "2.4G", "40M", "HT", "3T", "05", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "05", "40", + "MKK", "2.4G", "40M", "HT", "3T", "05", "40", + "FCC", "2.4G", "40M", "HT", "3T", "06", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "06", "40", + "MKK", "2.4G", "40M", "HT", "3T", "06", "40", + "FCC", "2.4G", "40M", "HT", "3T", "07", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "07", "40", + "MKK", "2.4G", "40M", "HT", "3T", "07", "40", + "FCC", "2.4G", "40M", "HT", "3T", "08", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "08", "40", + "MKK", "2.4G", "40M", "HT", "3T", "08", "40", + "FCC", "2.4G", "40M", "HT", "3T", "09", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "09", "40", + "MKK", "2.4G", "40M", "HT", "3T", "09", "40", + "FCC", "2.4G", "40M", "HT", "3T", "10", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "10", "40", + "MKK", "2.4G", "40M", "HT", "3T", "10", "40", + "FCC", "2.4G", "40M", "HT", "3T", "11", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "11", "40", + "MKK", "2.4G", "40M", "HT", "3T", "11", "40", + "FCC", "2.4G", "40M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "12", "40", + "MKK", "2.4G", "40M", "HT", "3T", "12", "40", + "FCC", "2.4G", "40M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "13", "40", + "MKK", "2.4G", "40M", "HT", "3T", "13", "40", + "FCC", "2.4G", "40M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "14", "63", + "MKK", "2.4G", "40M", "HT", "3T", "14", "63", + "FCC", "2.4G", "40M", "HT", "4T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "01", "63", + "MKK", "2.4G", "40M", "HT", "4T", "01", "63", + "FCC", "2.4G", "40M", "HT", "4T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "02", "63", + "MKK", "2.4G", "40M", "HT", "4T", "02", "63", + "FCC", "2.4G", "40M", "HT", "4T", "03", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "03", "40", + "MKK", "2.4G", "40M", "HT", "4T", "03", "40", + "FCC", "2.4G", "40M", "HT", "4T", "04", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "04", "40", + "MKK", "2.4G", "40M", "HT", "4T", "04", "40", + "FCC", "2.4G", "40M", "HT", "4T", "05", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "05", "40", + "MKK", "2.4G", "40M", "HT", "4T", "05", "40", + "FCC", "2.4G", "40M", "HT", "4T", "06", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "06", "40", + "MKK", "2.4G", "40M", "HT", "4T", "06", "40", + "FCC", "2.4G", "40M", "HT", "4T", "07", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "07", "40", + "MKK", "2.4G", "40M", "HT", "4T", "07", "40", + "FCC", "2.4G", "40M", "HT", "4T", "08", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "08", "40", + "MKK", "2.4G", "40M", "HT", "4T", "08", "40", + "FCC", "2.4G", "40M", "HT", "4T", "09", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "09", "40", + "MKK", "2.4G", "40M", "HT", "4T", "09", "40", + "FCC", "2.4G", "40M", "HT", "4T", "10", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "10", "40", + "MKK", "2.4G", "40M", "HT", "4T", "10", "40", + "FCC", "2.4G", "40M", "HT", "4T", "11", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "11", "40", + "MKK", "2.4G", "40M", "HT", "4T", "11", "40", + "FCC", "2.4G", "40M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "12", "40", + "MKK", "2.4G", "40M", "HT", "4T", "12", "40", + "FCC", "2.4G", "40M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "13", "40", + "MKK", "2.4G", "40M", "HT", "4T", "13", "40", + "FCC", "2.4G", "40M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "14", "63", + "MKK", "2.4G", "40M", "HT", "4T", "14", "63", + "FCC", "5G", "20M", "OFDM", "1T", "36", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "36", "40", + "MKK", "5G", "20M", "OFDM", "1T", "36", "40", + "FCC", "5G", "20M", "OFDM", "1T", "40", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "40", "40", + "MKK", "5G", "20M", "OFDM", "1T", "40", "40", + "FCC", "5G", "20M", "OFDM", "1T", "44", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "44", "40", + "MKK", "5G", "20M", "OFDM", "1T", "44", "40", + "FCC", "5G", "20M", "OFDM", "1T", "48", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "48", "40", + "MKK", "5G", "20M", "OFDM", "1T", "48", "40", + "FCC", "5G", "20M", "OFDM", "1T", "52", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "52", "40", + "MKK", "5G", "20M", "OFDM", "1T", "52", "40", + "FCC", "5G", "20M", "OFDM", "1T", "56", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "56", "40", + "MKK", "5G", "20M", "OFDM", "1T", "56", "40", + "FCC", "5G", "20M", "OFDM", "1T", "60", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "60", "40", + "MKK", "5G", "20M", "OFDM", "1T", "60", "40", + "FCC", "5G", "20M", "OFDM", "1T", "64", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "64", "40", + "MKK", "5G", "20M", "OFDM", "1T", "64", "40", + "FCC", "5G", "20M", "OFDM", "1T", "100", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "100", "40", + "MKK", "5G", "20M", "OFDM", "1T", "100", "40", + "FCC", "5G", "20M", "OFDM", "1T", "104", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "104", "40", + "MKK", "5G", "20M", "OFDM", "1T", "104", "40", + "FCC", "5G", "20M", "OFDM", "1T", "108", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "108", "40", + "MKK", "5G", "20M", "OFDM", "1T", "108", "40", + "FCC", "5G", "20M", "OFDM", "1T", "112", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "112", "40", + "MKK", "5G", "20M", "OFDM", "1T", "112", "40", + "FCC", "5G", "20M", "OFDM", "1T", "116", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "116", "40", + "MKK", "5G", "20M", "OFDM", "1T", "116", "40", + "FCC", "5G", "20M", "OFDM", "1T", "120", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "120", "40", + "MKK", "5G", "20M", "OFDM", "1T", "120", "40", + "FCC", "5G", "20M", "OFDM", "1T", "124", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "124", "40", + "MKK", "5G", "20M", "OFDM", "1T", "124", "40", + "FCC", "5G", "20M", "OFDM", "1T", "128", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "128", "40", + "MKK", "5G", "20M", "OFDM", "1T", "128", "40", + "FCC", "5G", "20M", "OFDM", "1T", "132", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "132", "40", + "MKK", "5G", "20M", "OFDM", "1T", "132", "40", + "FCC", "5G", "20M", "OFDM", "1T", "136", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "136", "40", + "MKK", "5G", "20M", "OFDM", "1T", "136", "40", + "FCC", "5G", "20M", "OFDM", "1T", "140", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "140", "40", + "MKK", "5G", "20M", "OFDM", "1T", "140", "40", + "FCC", "5G", "20M", "OFDM", "1T", "149", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "149", "40", + "MKK", "5G", "20M", "OFDM", "1T", "149", "63", + "FCC", "5G", "20M", "OFDM", "1T", "153", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "153", "40", + "MKK", "5G", "20M", "OFDM", "1T", "153", "63", + "FCC", "5G", "20M", "OFDM", "1T", "157", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "157", "40", + "MKK", "5G", "20M", "OFDM", "1T", "157", "63", + "FCC", "5G", "20M", "OFDM", "1T", "161", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "161", "40", + "MKK", "5G", "20M", "OFDM", "1T", "161", "63", + "FCC", "5G", "20M", "OFDM", "1T", "165", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "165", "40", + "MKK", "5G", "20M", "OFDM", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "1T", "36", "46", + "ETSI", "5G", "20M", "HT", "1T", "36", "40", + "MKK", "5G", "20M", "HT", "1T", "36", "40", + "FCC", "5G", "20M", "HT", "1T", "40", "46", + "ETSI", "5G", "20M", "HT", "1T", "40", "40", + "MKK", "5G", "20M", "HT", "1T", "40", "40", + "FCC", "5G", "20M", "HT", "1T", "44", "46", + "ETSI", "5G", "20M", "HT", "1T", "44", "40", + "MKK", "5G", "20M", "HT", "1T", "44", "40", + "FCC", "5G", "20M", "HT", "1T", "48", "46", + "ETSI", "5G", "20M", "HT", "1T", "48", "40", + "MKK", "5G", "20M", "HT", "1T", "48", "40", + "FCC", "5G", "20M", "HT", "1T", "52", "46", + "ETSI", "5G", "20M", "HT", "1T", "52", "40", + "MKK", "5G", "20M", "HT", "1T", "52", "40", + "FCC", "5G", "20M", "HT", "1T", "56", "46", + "ETSI", "5G", "20M", "HT", "1T", "56", "40", + "MKK", "5G", "20M", "HT", "1T", "56", "40", + "FCC", "5G", "20M", "HT", "1T", "60", "46", + "ETSI", "5G", "20M", "HT", "1T", "60", "40", + "MKK", "5G", "20M", "HT", "1T", "60", "40", + "FCC", "5G", "20M", "HT", "1T", "64", "46", + "ETSI", "5G", "20M", "HT", "1T", "64", "40", + "MKK", "5G", "20M", "HT", "1T", "64", "40", + "FCC", "5G", "20M", "HT", "1T", "100", "46", + "ETSI", "5G", "20M", "HT", "1T", "100", "40", + "MKK", "5G", "20M", "HT", "1T", "100", "40", + "FCC", "5G", "20M", "HT", "1T", "104", "46", + "ETSI", "5G", "20M", "HT", "1T", "104", "40", + "MKK", "5G", "20M", "HT", "1T", "104", "40", + "FCC", "5G", "20M", "HT", "1T", "108", "46", + "ETSI", "5G", "20M", "HT", "1T", "108", "40", + "MKK", "5G", "20M", "HT", "1T", "108", "40", + "FCC", "5G", "20M", "HT", "1T", "112", "46", + "ETSI", "5G", "20M", "HT", "1T", "112", "40", + "MKK", "5G", "20M", "HT", "1T", "112", "40", + "FCC", "5G", "20M", "HT", "1T", "116", "46", + "ETSI", "5G", "20M", "HT", "1T", "116", "40", + "MKK", "5G", "20M", "HT", "1T", "116", "40", + "FCC", "5G", "20M", "HT", "1T", "120", "46", + "ETSI", "5G", "20M", "HT", "1T", "120", "40", + "MKK", "5G", "20M", "HT", "1T", "120", "40", + "FCC", "5G", "20M", "HT", "1T", "124", "46", + "ETSI", "5G", "20M", "HT", "1T", "124", "40", + "MKK", "5G", "20M", "HT", "1T", "124", "40", + "FCC", "5G", "20M", "HT", "1T", "128", "46", + "ETSI", "5G", "20M", "HT", "1T", "128", "40", + "MKK", "5G", "20M", "HT", "1T", "128", "40", + "FCC", "5G", "20M", "HT", "1T", "132", "46", + "ETSI", "5G", "20M", "HT", "1T", "132", "40", + "MKK", "5G", "20M", "HT", "1T", "132", "40", + "FCC", "5G", "20M", "HT", "1T", "136", "46", + "ETSI", "5G", "20M", "HT", "1T", "136", "40", + "MKK", "5G", "20M", "HT", "1T", "136", "40", + "FCC", "5G", "20M", "HT", "1T", "140", "46", + "ETSI", "5G", "20M", "HT", "1T", "140", "40", + "MKK", "5G", "20M", "HT", "1T", "140", "40", + "FCC", "5G", "20M", "HT", "1T", "149", "46", + "ETSI", "5G", "20M", "HT", "1T", "149", "40", + "MKK", "5G", "20M", "HT", "1T", "149", "63", + "FCC", "5G", "20M", "HT", "1T", "153", "46", + "ETSI", "5G", "20M", "HT", "1T", "153", "40", + "MKK", "5G", "20M", "HT", "1T", "153", "63", + "FCC", "5G", "20M", "HT", "1T", "157", "46", + "ETSI", "5G", "20M", "HT", "1T", "157", "40", + "MKK", "5G", "20M", "HT", "1T", "157", "63", + "FCC", "5G", "20M", "HT", "1T", "161", "46", + "ETSI", "5G", "20M", "HT", "1T", "161", "40", + "MKK", "5G", "20M", "HT", "1T", "161", "63", + "FCC", "5G", "20M", "HT", "1T", "165", "46", + "ETSI", "5G", "20M", "HT", "1T", "165", "40", + "MKK", "5G", "20M", "HT", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "2T", "36", "46", + "ETSI", "5G", "20M", "HT", "2T", "36", "40", + "MKK", "5G", "20M", "HT", "2T", "36", "40", + "FCC", "5G", "20M", "HT", "2T", "40", "46", + "ETSI", "5G", "20M", "HT", "2T", "40", "40", + "MKK", "5G", "20M", "HT", "2T", "40", "40", + "FCC", "5G", "20M", "HT", "2T", "44", "46", + "ETSI", "5G", "20M", "HT", "2T", "44", "40", + "MKK", "5G", "20M", "HT", "2T", "44", "40", + "FCC", "5G", "20M", "HT", "2T", "48", "46", + "ETSI", "5G", "20M", "HT", "2T", "48", "40", + "MKK", "5G", "20M", "HT", "2T", "48", "40", + "FCC", "5G", "20M", "HT", "2T", "52", "46", + "ETSI", "5G", "20M", "HT", "2T", "52", "40", + "MKK", "5G", "20M", "HT", "2T", "52", "40", + "FCC", "5G", "20M", "HT", "2T", "56", "46", + "ETSI", "5G", "20M", "HT", "2T", "56", "40", + "MKK", "5G", "20M", "HT", "2T", "56", "40", + "FCC", "5G", "20M", "HT", "2T", "60", "46", + "ETSI", "5G", "20M", "HT", "2T", "60", "40", + "MKK", "5G", "20M", "HT", "2T", "60", "40", + "FCC", "5G", "20M", "HT", "2T", "64", "46", + "ETSI", "5G", "20M", "HT", "2T", "64", "40", + "MKK", "5G", "20M", "HT", "2T", "64", "40", + "FCC", "5G", "20M", "HT", "2T", "100", "46", + "ETSI", "5G", "20M", "HT", "2T", "100", "40", + "MKK", "5G", "20M", "HT", "2T", "100", "40", + "FCC", "5G", "20M", "HT", "2T", "104", "46", + "ETSI", "5G", "20M", "HT", "2T", "104", "40", + "MKK", "5G", "20M", "HT", "2T", "104", "40", + "FCC", "5G", "20M", "HT", "2T", "108", "46", + "ETSI", "5G", "20M", "HT", "2T", "108", "40", + "MKK", "5G", "20M", "HT", "2T", "108", "40", + "FCC", "5G", "20M", "HT", "2T", "112", "46", + "ETSI", "5G", "20M", "HT", "2T", "112", "40", + "MKK", "5G", "20M", "HT", "2T", "112", "40", + "FCC", "5G", "20M", "HT", "2T", "116", "46", + "ETSI", "5G", "20M", "HT", "2T", "116", "40", + "MKK", "5G", "20M", "HT", "2T", "116", "40", + "FCC", "5G", "20M", "HT", "2T", "120", "46", + "ETSI", "5G", "20M", "HT", "2T", "120", "40", + "MKK", "5G", "20M", "HT", "2T", "120", "40", + "FCC", "5G", "20M", "HT", "2T", "124", "46", + "ETSI", "5G", "20M", "HT", "2T", "124", "40", + "MKK", "5G", "20M", "HT", "2T", "124", "40", + "FCC", "5G", "20M", "HT", "2T", "128", "46", + "ETSI", "5G", "20M", "HT", "2T", "128", "40", + "MKK", "5G", "20M", "HT", "2T", "128", "40", + "FCC", "5G", "20M", "HT", "2T", "132", "46", + "ETSI", "5G", "20M", "HT", "2T", "132", "40", + "MKK", "5G", "20M", "HT", "2T", "132", "40", + "FCC", "5G", "20M", "HT", "2T", "136", "46", + "ETSI", "5G", "20M", "HT", "2T", "136", "40", + "MKK", "5G", "20M", "HT", "2T", "136", "40", + "FCC", "5G", "20M", "HT", "2T", "140", "46", + "ETSI", "5G", "20M", "HT", "2T", "140", "40", + "MKK", "5G", "20M", "HT", "2T", "140", "40", + "FCC", "5G", "20M", "HT", "2T", "149", "46", + "ETSI", "5G", "20M", "HT", "2T", "149", "40", + "MKK", "5G", "20M", "HT", "2T", "149", "63", + "FCC", "5G", "20M", "HT", "2T", "153", "46", + "ETSI", "5G", "20M", "HT", "2T", "153", "40", + "MKK", "5G", "20M", "HT", "2T", "153", "63", + "FCC", "5G", "20M", "HT", "2T", "157", "46", + "ETSI", "5G", "20M", "HT", "2T", "157", "40", + "MKK", "5G", "20M", "HT", "2T", "157", "63", + "FCC", "5G", "20M", "HT", "2T", "161", "46", + "ETSI", "5G", "20M", "HT", "2T", "161", "40", + "MKK", "5G", "20M", "HT", "2T", "161", "63", + "FCC", "5G", "20M", "HT", "2T", "165", "46", + "ETSI", "5G", "20M", "HT", "2T", "165", "40", + "MKK", "5G", "20M", "HT", "2T", "165", "63", + "FCC", "5G", "20M", "HT", "3T", "36", "46", + "ETSI", "5G", "20M", "HT", "3T", "36", "40", + "MKK", "5G", "20M", "HT", "3T", "36", "40", + "FCC", "5G", "20M", "HT", "3T", "40", "46", + "ETSI", "5G", "20M", "HT", "3T", "40", "40", + "MKK", "5G", "20M", "HT", "3T", "40", "40", + "FCC", "5G", "20M", "HT", "3T", "44", "46", + "ETSI", "5G", "20M", "HT", "3T", "44", "40", + "MKK", "5G", "20M", "HT", "3T", "44", "40", + "FCC", "5G", "20M", "HT", "3T", "48", "46", + "ETSI", "5G", "20M", "HT", "3T", "48", "40", + "MKK", "5G", "20M", "HT", "3T", "48", "40", + "FCC", "5G", "20M", "HT", "3T", "52", "46", + "ETSI", "5G", "20M", "HT", "3T", "52", "40", + "MKK", "5G", "20M", "HT", "3T", "52", "40", + "FCC", "5G", "20M", "HT", "3T", "56", "46", + "ETSI", "5G", "20M", "HT", "3T", "56", "40", + "MKK", "5G", "20M", "HT", "3T", "56", "40", + "FCC", "5G", "20M", "HT", "3T", "60", "46", + "ETSI", "5G", "20M", "HT", "3T", "60", "40", + "MKK", "5G", "20M", "HT", "3T", "60", "40", + "FCC", "5G", "20M", "HT", "3T", "64", "46", + "ETSI", "5G", "20M", "HT", "3T", "64", "40", + "MKK", "5G", "20M", "HT", "3T", "64", "40", + "FCC", "5G", "20M", "HT", "3T", "100", "46", + "ETSI", "5G", "20M", "HT", "3T", "100", "40", + "MKK", "5G", "20M", "HT", "3T", "100", "40", + "FCC", "5G", "20M", "HT", "3T", "104", "46", + "ETSI", "5G", "20M", "HT", "3T", "104", "40", + "MKK", "5G", "20M", "HT", "3T", "104", "40", + "FCC", "5G", "20M", "HT", "3T", "108", "46", + "ETSI", "5G", "20M", "HT", "3T", "108", "40", + "MKK", "5G", "20M", "HT", "3T", "108", "40", + "FCC", "5G", "20M", "HT", "3T", "112", "46", + "ETSI", "5G", "20M", "HT", "3T", "112", "40", + "MKK", "5G", "20M", "HT", "3T", "112", "40", + "FCC", "5G", "20M", "HT", "3T", "116", "46", + "ETSI", "5G", "20M", "HT", "3T", "116", "40", + "MKK", "5G", "20M", "HT", "3T", "116", "40", + "FCC", "5G", "20M", "HT", "3T", "120", "46", + "ETSI", "5G", "20M", "HT", "3T", "120", "40", + "MKK", "5G", "20M", "HT", "3T", "120", "40", + "FCC", "5G", "20M", "HT", "3T", "124", "46", + "ETSI", "5G", "20M", "HT", "3T", "124", "40", + "MKK", "5G", "20M", "HT", "3T", "124", "40", + "FCC", "5G", "20M", "HT", "3T", "128", "46", + "ETSI", "5G", "20M", "HT", "3T", "128", "40", + "MKK", "5G", "20M", "HT", "3T", "128", "40", + "FCC", "5G", "20M", "HT", "3T", "132", "46", + "ETSI", "5G", "20M", "HT", "3T", "132", "40", + "MKK", "5G", "20M", "HT", "3T", "132", "40", + "FCC", "5G", "20M", "HT", "3T", "136", "46", + "ETSI", "5G", "20M", "HT", "3T", "136", "40", + "MKK", "5G", "20M", "HT", "3T", "136", "40", + "FCC", "5G", "20M", "HT", "3T", "140", "46", + "ETSI", "5G", "20M", "HT", "3T", "140", "40", + "MKK", "5G", "20M", "HT", "3T", "140", "40", + "FCC", "5G", "20M", "HT", "3T", "149", "46", + "ETSI", "5G", "20M", "HT", "3T", "149", "40", + "MKK", "5G", "20M", "HT", "3T", "149", "63", + "FCC", "5G", "20M", "HT", "3T", "153", "46", + "ETSI", "5G", "20M", "HT", "3T", "153", "40", + "MKK", "5G", "20M", "HT", "3T", "153", "63", + "FCC", "5G", "20M", "HT", "3T", "157", "46", + "ETSI", "5G", "20M", "HT", "3T", "157", "40", + "MKK", "5G", "20M", "HT", "3T", "157", "63", + "FCC", "5G", "20M", "HT", "3T", "161", "46", + "ETSI", "5G", "20M", "HT", "3T", "161", "40", + "MKK", "5G", "20M", "HT", "3T", "161", "63", + "FCC", "5G", "20M", "HT", "3T", "165", "46", + "ETSI", "5G", "20M", "HT", "3T", "165", "40", + "MKK", "5G", "20M", "HT", "3T", "165", "63", + "FCC", "5G", "20M", "HT", "4T", "36", "46", + "ETSI", "5G", "20M", "HT", "4T", "36", "40", + "MKK", "5G", "20M", "HT", "4T", "36", "40", + "FCC", "5G", "20M", "HT", "4T", "40", "46", + "ETSI", "5G", "20M", "HT", "4T", "40", "40", + "MKK", "5G", "20M", "HT", "4T", "40", "40", + "FCC", "5G", "20M", "HT", "4T", "44", "46", + "ETSI", "5G", "20M", "HT", "4T", "44", "40", + "MKK", "5G", "20M", "HT", "4T", "44", "40", + "FCC", "5G", "20M", "HT", "4T", "48", "46", + "ETSI", "5G", "20M", "HT", "4T", "48", "40", + "MKK", "5G", "20M", "HT", "4T", "48", "40", + "FCC", "5G", "20M", "HT", "4T", "52", "46", + "ETSI", "5G", "20M", "HT", "4T", "52", "40", + "MKK", "5G", "20M", "HT", "4T", "52", "40", + "FCC", "5G", "20M", "HT", "4T", "56", "46", + "ETSI", "5G", "20M", "HT", "4T", "56", "40", + "MKK", "5G", "20M", "HT", "4T", "56", "40", + "FCC", "5G", "20M", "HT", "4T", "60", "46", + "ETSI", "5G", "20M", "HT", "4T", "60", "40", + "MKK", "5G", "20M", "HT", "4T", "60", "40", + "FCC", "5G", "20M", "HT", "4T", "64", "46", + "ETSI", "5G", "20M", "HT", "4T", "64", "40", + "MKK", "5G", "20M", "HT", "4T", "64", "40", + "FCC", "5G", "20M", "HT", "4T", "100", "46", + "ETSI", "5G", "20M", "HT", "4T", "100", "40", + "MKK", "5G", "20M", "HT", "4T", "100", "40", + "FCC", "5G", "20M", "HT", "4T", "104", "46", + "ETSI", "5G", "20M", "HT", "4T", "104", "40", + "MKK", "5G", "20M", "HT", "4T", "104", "40", + "FCC", "5G", "20M", "HT", "4T", "108", "46", + "ETSI", "5G", "20M", "HT", "4T", "108", "40", + "MKK", "5G", "20M", "HT", "4T", "108", "40", + "FCC", "5G", "20M", "HT", "4T", "112", "46", + "ETSI", "5G", "20M", "HT", "4T", "112", "40", + "MKK", "5G", "20M", "HT", "4T", "112", "40", + "FCC", "5G", "20M", "HT", "4T", "116", "46", + "ETSI", "5G", "20M", "HT", "4T", "116", "40", + "MKK", "5G", "20M", "HT", "4T", "116", "40", + "FCC", "5G", "20M", "HT", "4T", "120", "46", + "ETSI", "5G", "20M", "HT", "4T", "120", "40", + "MKK", "5G", "20M", "HT", "4T", "120", "40", + "FCC", "5G", "20M", "HT", "4T", "124", "46", + "ETSI", "5G", "20M", "HT", "4T", "124", "40", + "MKK", "5G", "20M", "HT", "4T", "124", "40", + "FCC", "5G", "20M", "HT", "4T", "128", "46", + "ETSI", "5G", "20M", "HT", "4T", "128", "40", + "MKK", "5G", "20M", "HT", "4T", "128", "40", + "FCC", "5G", "20M", "HT", "4T", "132", "46", + "ETSI", "5G", "20M", "HT", "4T", "132", "40", + "MKK", "5G", "20M", "HT", "4T", "132", "40", + "FCC", "5G", "20M", "HT", "4T", "136", "46", + "ETSI", "5G", "20M", "HT", "4T", "136", "40", + "MKK", "5G", "20M", "HT", "4T", "136", "40", + "FCC", "5G", "20M", "HT", "4T", "140", "46", + "ETSI", "5G", "20M", "HT", "4T", "140", "40", + "MKK", "5G", "20M", "HT", "4T", "140", "40", + "FCC", "5G", "20M", "HT", "4T", "149", "46", + "ETSI", "5G", "20M", "HT", "4T", "149", "40", + "MKK", "5G", "20M", "HT", "4T", "149", "63", + "FCC", "5G", "20M", "HT", "4T", "153", "46", + "ETSI", "5G", "20M", "HT", "4T", "153", "40", + "MKK", "5G", "20M", "HT", "4T", "153", "63", + "FCC", "5G", "20M", "HT", "4T", "157", "46", + "ETSI", "5G", "20M", "HT", "4T", "157", "40", + "MKK", "5G", "20M", "HT", "4T", "157", "63", + "FCC", "5G", "20M", "HT", "4T", "161", "46", + "ETSI", "5G", "20M", "HT", "4T", "161", "40", + "MKK", "5G", "20M", "HT", "4T", "161", "63", + "FCC", "5G", "20M", "HT", "4T", "165", "46", + "ETSI", "5G", "20M", "HT", "4T", "165", "40", + "MKK", "5G", "20M", "HT", "4T", "165", "63", + "FCC", "5G", "40M", "HT", "1T", "38", "46", + "ETSI", "5G", "40M", "HT", "1T", "38", "40", + "MKK", "5G", "40M", "HT", "1T", "38", "40", + "FCC", "5G", "40M", "HT", "1T", "46", "46", + "ETSI", "5G", "40M", "HT", "1T", "46", "40", + "MKK", "5G", "40M", "HT", "1T", "46", "40", + "FCC", "5G", "40M", "HT", "1T", "54", "46", + "ETSI", "5G", "40M", "HT", "1T", "54", "40", + "MKK", "5G", "40M", "HT", "1T", "54", "40", + "FCC", "5G", "40M", "HT", "1T", "62", "46", + "ETSI", "5G", "40M", "HT", "1T", "62", "40", + "MKK", "5G", "40M", "HT", "1T", "62", "40", + "FCC", "5G", "40M", "HT", "1T", "102", "46", + "ETSI", "5G", "40M", "HT", "1T", "102", "40", + "MKK", "5G", "40M", "HT", "1T", "102", "40", + "FCC", "5G", "40M", "HT", "1T", "110", "46", + "ETSI", "5G", "40M", "HT", "1T", "110", "40", + "MKK", "5G", "40M", "HT", "1T", "110", "40", + "FCC", "5G", "40M", "HT", "1T", "118", "46", + "ETSI", "5G", "40M", "HT", "1T", "118", "40", + "MKK", "5G", "40M", "HT", "1T", "118", "40", + "FCC", "5G", "40M", "HT", "1T", "126", "46", + "ETSI", "5G", "40M", "HT", "1T", "126", "40", + "MKK", "5G", "40M", "HT", "1T", "126", "40", + "FCC", "5G", "40M", "HT", "1T", "134", "46", + "ETSI", "5G", "40M", "HT", "1T", "134", "40", + "MKK", "5G", "40M", "HT", "1T", "134", "40", + "FCC", "5G", "40M", "HT", "1T", "151", "46", + "ETSI", "5G", "40M", "HT", "1T", "151", "40", + "MKK", "5G", "40M", "HT", "1T", "151", "63", + "FCC", "5G", "40M", "HT", "1T", "159", "46", + "ETSI", "5G", "40M", "HT", "1T", "159", "40", + "MKK", "5G", "40M", "HT", "1T", "159", "63", + "FCC", "5G", "40M", "HT", "2T", "38", "46", + "ETSI", "5G", "40M", "HT", "2T", "38", "40", + "MKK", "5G", "40M", "HT", "2T", "38", "40", + "FCC", "5G", "40M", "HT", "2T", "46", "46", + "ETSI", "5G", "40M", "HT", "2T", "46", "40", + "MKK", "5G", "40M", "HT", "2T", "46", "40", + "FCC", "5G", "40M", "HT", "2T", "54", "46", + "ETSI", "5G", "40M", "HT", "2T", "54", "40", + "MKK", "5G", "40M", "HT", "2T", "54", "40", + "FCC", "5G", "40M", "HT", "2T", "62", "46", + "ETSI", "5G", "40M", "HT", "2T", "62", "40", + "MKK", "5G", "40M", "HT", "2T", "62", "40", + "FCC", "5G", "40M", "HT", "2T", "102", "46", + "ETSI", "5G", "40M", "HT", "2T", "102", "40", + "MKK", "5G", "40M", "HT", "2T", "102", "40", + "FCC", "5G", "40M", "HT", "2T", "110", "46", + "ETSI", "5G", "40M", "HT", "2T", "110", "40", + "MKK", "5G", "40M", "HT", "2T", "110", "40", + "FCC", "5G", "40M", "HT", "2T", "118", "46", + "ETSI", "5G", "40M", "HT", "2T", "118", "40", + "MKK", "5G", "40M", "HT", "2T", "118", "40", + "FCC", "5G", "40M", "HT", "2T", "126", "46", + "ETSI", "5G", "40M", "HT", "2T", "126", "40", + "MKK", "5G", "40M", "HT", "2T", "126", "40", + "FCC", "5G", "40M", "HT", "2T", "134", "46", + "ETSI", "5G", "40M", "HT", "2T", "134", "40", + "MKK", "5G", "40M", "HT", "2T", "134", "40", + "FCC", "5G", "40M", "HT", "2T", "151", "46", + "ETSI", "5G", "40M", "HT", "2T", "151", "40", + "MKK", "5G", "40M", "HT", "2T", "151", "63", + "FCC", "5G", "40M", "HT", "2T", "159", "46", + "ETSI", "5G", "40M", "HT", "2T", "159", "40", + "MKK", "5G", "40M", "HT", "2T", "159", "63", + "FCC", "5G", "40M", "HT", "3T", "38", "46", + "ETSI", "5G", "40M", "HT", "3T", "38", "40", + "MKK", "5G", "40M", "HT", "3T", "38", "40", + "FCC", "5G", "40M", "HT", "3T", "46", "46", + "ETSI", "5G", "40M", "HT", "3T", "46", "40", + "MKK", "5G", "40M", "HT", "3T", "46", "40", + "FCC", "5G", "40M", "HT", "3T", "54", "46", + "ETSI", "5G", "40M", "HT", "3T", "54", "40", + "MKK", "5G", "40M", "HT", "3T", "54", "40", + "FCC", "5G", "40M", "HT", "3T", "62", "46", + "ETSI", "5G", "40M", "HT", "3T", "62", "40", + "MKK", "5G", "40M", "HT", "3T", "62", "40", + "FCC", "5G", "40M", "HT", "3T", "102", "46", + "ETSI", "5G", "40M", "HT", "3T", "102", "40", + "MKK", "5G", "40M", "HT", "3T", "102", "40", + "FCC", "5G", "40M", "HT", "3T", "110", "46", + "ETSI", "5G", "40M", "HT", "3T", "110", "40", + "MKK", "5G", "40M", "HT", "3T", "110", "40", + "FCC", "5G", "40M", "HT", "3T", "118", "46", + "ETSI", "5G", "40M", "HT", "3T", "118", "40", + "MKK", "5G", "40M", "HT", "3T", "118", "40", + "FCC", "5G", "40M", "HT", "3T", "126", "46", + "ETSI", "5G", "40M", "HT", "3T", "126", "40", + "MKK", "5G", "40M", "HT", "3T", "126", "40", + "FCC", "5G", "40M", "HT", "3T", "134", "46", + "ETSI", "5G", "40M", "HT", "3T", "134", "40", + "MKK", "5G", "40M", "HT", "3T", "134", "40", + "FCC", "5G", "40M", "HT", "3T", "151", "46", + "ETSI", "5G", "40M", "HT", "3T", "151", "40", + "MKK", "5G", "40M", "HT", "3T", "151", "63", + "FCC", "5G", "40M", "HT", "3T", "159", "46", + "ETSI", "5G", "40M", "HT", "3T", "159", "40", + "MKK", "5G", "40M", "HT", "3T", "159", "63", + "FCC", "5G", "40M", "HT", "4T", "38", "46", + "ETSI", "5G", "40M", "HT", "4T", "38", "40", + "MKK", "5G", "40M", "HT", "4T", "38", "40", + "FCC", "5G", "40M", "HT", "4T", "46", "46", + "ETSI", "5G", "40M", "HT", "4T", "46", "40", + "MKK", "5G", "40M", "HT", "4T", "46", "40", + "FCC", "5G", "40M", "HT", "4T", "54", "46", + "ETSI", "5G", "40M", "HT", "4T", "54", "40", + "MKK", "5G", "40M", "HT", "4T", "54", "40", + "FCC", "5G", "40M", "HT", "4T", "62", "46", + "ETSI", "5G", "40M", "HT", "4T", "62", "40", + "MKK", "5G", "40M", "HT", "4T", "62", "40", + "FCC", "5G", "40M", "HT", "4T", "102", "46", + "ETSI", "5G", "40M", "HT", "4T", "102", "40", + "MKK", "5G", "40M", "HT", "4T", "102", "40", + "FCC", "5G", "40M", "HT", "4T", "110", "46", + "ETSI", "5G", "40M", "HT", "4T", "110", "40", + "MKK", "5G", "40M", "HT", "4T", "110", "40", + "FCC", "5G", "40M", "HT", "4T", "118", "46", + "ETSI", "5G", "40M", "HT", "4T", "118", "40", + "MKK", "5G", "40M", "HT", "4T", "118", "40", + "FCC", "5G", "40M", "HT", "4T", "126", "46", + "ETSI", "5G", "40M", "HT", "4T", "126", "40", + "MKK", "5G", "40M", "HT", "4T", "126", "40", + "FCC", "5G", "40M", "HT", "4T", "134", "46", + "ETSI", "5G", "40M", "HT", "4T", "134", "40", + "MKK", "5G", "40M", "HT", "4T", "134", "40", + "FCC", "5G", "40M", "HT", "4T", "151", "46", + "ETSI", "5G", "40M", "HT", "4T", "151", "40", + "MKK", "5G", "40M", "HT", "4T", "151", "63", + "FCC", "5G", "40M", "HT", "4T", "159", "46", + "ETSI", "5G", "40M", "HT", "4T", "159", "40", + "MKK", "5G", "40M", "HT", "4T", "159", "63", + "FCC", "5G", "80M", "VHT", "1T", "42", "46", + "ETSI", "5G", "80M", "VHT", "1T", "42", "40", + "MKK", "5G", "80M", "VHT", "1T", "42", "40", + "FCC", "5G", "80M", "VHT", "1T", "58", "46", + "ETSI", "5G", "80M", "VHT", "1T", "58", "40", + "MKK", "5G", "80M", "VHT", "1T", "58", "40", + "FCC", "5G", "80M", "VHT", "1T", "106", "46", + "ETSI", "5G", "80M", "VHT", "1T", "106", "40", + "MKK", "5G", "80M", "VHT", "1T", "106", "40", + "FCC", "5G", "80M", "VHT", "1T", "122", "46", + "ETSI", "5G", "80M", "VHT", "1T", "122", "40", + "MKK", "5G", "80M", "VHT", "1T", "122", "40", + "FCC", "5G", "80M", "VHT", "1T", "155", "46", + "ETSI", "5G", "80M", "VHT", "1T", "155", "40", + "MKK", "5G", "80M", "VHT", "1T", "155", "63", + "FCC", "5G", "80M", "VHT", "2T", "42", "46", + "ETSI", "5G", "80M", "VHT", "2T", "42", "40", + "MKK", "5G", "80M", "VHT", "2T", "42", "40", + "FCC", "5G", "80M", "VHT", "2T", "58", "46", + "ETSI", "5G", "80M", "VHT", "2T", "58", "40", + "MKK", "5G", "80M", "VHT", "2T", "58", "40", + "FCC", "5G", "80M", "VHT", "2T", "106", "46", + "ETSI", "5G", "80M", "VHT", "2T", "106", "40", + "MKK", "5G", "80M", "VHT", "2T", "106", "40", + "FCC", "5G", "80M", "VHT", "2T", "122", "46", + "ETSI", "5G", "80M", "VHT", "2T", "122", "40", + "MKK", "5G", "80M", "VHT", "2T", "122", "40", + "FCC", "5G", "80M", "VHT", "2T", "155", "46", + "ETSI", "5G", "80M", "VHT", "2T", "155", "40", + "MKK", "5G", "80M", "VHT", "2T", "155", "63", + "FCC", "5G", "80M", "VHT", "3T", "42", "46", + "ETSI", "5G", "80M", "VHT", "3T", "42", "40", + "MKK", "5G", "80M", "VHT", "3T", "42", "40", + "FCC", "5G", "80M", "VHT", "3T", "58", "46", + "ETSI", "5G", "80M", "VHT", "3T", "58", "40", + "MKK", "5G", "80M", "VHT", "3T", "58", "40", + "FCC", "5G", "80M", "VHT", "3T", "106", "46", + "ETSI", "5G", "80M", "VHT", "3T", "106", "40", + "MKK", "5G", "80M", "VHT", "3T", "106", "40", + "FCC", "5G", "80M", "VHT", "3T", "122", "46", + "ETSI", "5G", "80M", "VHT", "3T", "122", "40", + "MKK", "5G", "80M", "VHT", "3T", "122", "40", + "FCC", "5G", "80M", "VHT", "3T", "155", "46", + "ETSI", "5G", "80M", "VHT", "3T", "155", "40", + "MKK", "5G", "80M", "VHT", "3T", "155", "63", + "FCC", "5G", "80M", "VHT", "4T", "42", "46", + "ETSI", "5G", "80M", "VHT", "4T", "42", "40", + "MKK", "5G", "80M", "VHT", "4T", "42", "40", + "FCC", "5G", "80M", "VHT", "4T", "58", "46", + "ETSI", "5G", "80M", "VHT", "4T", "58", "40", + "MKK", "5G", "80M", "VHT", "4T", "58", "40", + "FCC", "5G", "80M", "VHT", "4T", "106", "46", + "ETSI", "5G", "80M", "VHT", "4T", "106", "40", + "MKK", "5G", "80M", "VHT", "4T", "106", "40", + "FCC", "5G", "80M", "VHT", "4T", "122", "46", + "ETSI", "5G", "80M", "VHT", "4T", "122", "40", + "MKK", "5G", "80M", "VHT", "4T", "122", "40", + "FCC", "5G", "80M", "VHT", "4T", "155", "46", + "ETSI", "5G", "80M", "VHT", "4T", "155", "40", + "MKK", "5G", "80M", "VHT", "4T", "155", "63" +}; +#endif + +void +odm_read_and_config_mp_8814a_txpwr_lmt_type3(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE3 + + u32 i = 0; +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type3) / sizeof(u8); + u8 *array = (u8 *)array_mp_8814a_txpwr_lmt_type3; +#else + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type3) / sizeof(u8 *); + u8 **array = (u8 **)array_mp_8814a_txpwr_lmt_type3; +#endif + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrLmt, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrLmt = array_len / 7; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + for (i = 0; i < array_len; i += 7) { +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u8 regulation = array[i]; + u8 band = array[i + 1]; + u8 bandwidth = array[i + 2]; + u8 rate = array[i + 3]; + u8 rf_path = array[i + 4]; + u8 chnl = array[i + 5]; + u8 val = array[i + 6]; +#else + u8 *regulation = array[i]; + u8 *band = array[i + 1]; + u8 *bandwidth = array[i + 2]; + u8 *rate = array[i + 3]; + u8 *rf_path = array[i + 4]; + u8 *chnl = array[i + 5]; + u8 *val = array[i + 6]; +#endif + + odm_config_bb_txpwr_lmt_8814a(dm, regulation, band, bandwidth, + rate, rf_path, chnl, val); +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrLmt[i / 7], 100, "\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\",", + regulation, band, bandwidth, rate, rf_path, chnl, val); +#endif + } + +#endif +} + +/****************************************************************************** + * txpwr_lmt_type4.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE4 +const char *array_mp_8814a_txpwr_lmt_type4[] = { + "FCC", "2.4G", "20M", "CCK", "1T", "01", "42", + "ETSI", "2.4G", "20M", "CCK", "1T", "01", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "01", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "02", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "02", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "02", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "03", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "03", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "03", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "04", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "04", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "04", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "05", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "05", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "05", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "06", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "06", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "06", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "07", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "07", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "07", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "08", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "08", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "08", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "09", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "09", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "09", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "10", "50", + "ETSI", "2.4G", "20M", "CCK", "1T", "10", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "10", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "11", "44", + "ETSI", "2.4G", "20M", "CCK", "1T", "11", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "11", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "12", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "12", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "12", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "13", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "13", "42", + "MKK", "2.4G", "20M", "CCK", "1T", "13", "42", + "FCC", "2.4G", "20M", "CCK", "1T", "14", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", + "MKK", "2.4G", "20M", "CCK", "1T", "14", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "01", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "01", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "02", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "02", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "03", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "03", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "04", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "04", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "05", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "05", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "06", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "06", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "07", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "07", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "08", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "08", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "09", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "09", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "10", "42", + "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "10", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "11", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "11", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "12", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "12", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "13", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "42", + "MKK", "2.4G", "20M", "OFDM", "1T", "13", "42", + "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63", + "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "1T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "01", "42", + "MKK", "2.4G", "20M", "HT", "1T", "01", "42", + "FCC", "2.4G", "20M", "HT", "1T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "02", "42", + "MKK", "2.4G", "20M", "HT", "1T", "02", "42", + "FCC", "2.4G", "20M", "HT", "1T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "03", "42", + "MKK", "2.4G", "20M", "HT", "1T", "03", "42", + "FCC", "2.4G", "20M", "HT", "1T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "04", "42", + "MKK", "2.4G", "20M", "HT", "1T", "04", "42", + "FCC", "2.4G", "20M", "HT", "1T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "05", "42", + "MKK", "2.4G", "20M", "HT", "1T", "05", "42", + "FCC", "2.4G", "20M", "HT", "1T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "06", "42", + "MKK", "2.4G", "20M", "HT", "1T", "06", "42", + "FCC", "2.4G", "20M", "HT", "1T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "07", "42", + "MKK", "2.4G", "20M", "HT", "1T", "07", "42", + "FCC", "2.4G", "20M", "HT", "1T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "08", "42", + "MKK", "2.4G", "20M", "HT", "1T", "08", "42", + "FCC", "2.4G", "20M", "HT", "1T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "09", "42", + "MKK", "2.4G", "20M", "HT", "1T", "09", "42", + "FCC", "2.4G", "20M", "HT", "1T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "10", "42", + "MKK", "2.4G", "20M", "HT", "1T", "10", "42", + "FCC", "2.4G", "20M", "HT", "1T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "1T", "11", "42", + "MKK", "2.4G", "20M", "HT", "1T", "11", "42", + "FCC", "2.4G", "20M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "12", "42", + "MKK", "2.4G", "20M", "HT", "1T", "12", "42", + "FCC", "2.4G", "20M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "13", "42", + "MKK", "2.4G", "20M", "HT", "1T", "13", "42", + "FCC", "2.4G", "20M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "14", "63", + "MKK", "2.4G", "20M", "HT", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "2T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "01", "40", + "MKK", "2.4G", "20M", "HT", "2T", "01", "40", + "FCC", "2.4G", "20M", "HT", "2T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "02", "40", + "MKK", "2.4G", "20M", "HT", "2T", "02", "40", + "FCC", "2.4G", "20M", "HT", "2T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "03", "40", + "MKK", "2.4G", "20M", "HT", "2T", "03", "40", + "FCC", "2.4G", "20M", "HT", "2T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "04", "40", + "MKK", "2.4G", "20M", "HT", "2T", "04", "40", + "FCC", "2.4G", "20M", "HT", "2T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "05", "40", + "MKK", "2.4G", "20M", "HT", "2T", "05", "40", + "FCC", "2.4G", "20M", "HT", "2T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "06", "40", + "MKK", "2.4G", "20M", "HT", "2T", "06", "40", + "FCC", "2.4G", "20M", "HT", "2T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "07", "40", + "MKK", "2.4G", "20M", "HT", "2T", "07", "40", + "FCC", "2.4G", "20M", "HT", "2T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "08", "40", + "MKK", "2.4G", "20M", "HT", "2T", "08", "40", + "FCC", "2.4G", "20M", "HT", "2T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "09", "40", + "MKK", "2.4G", "20M", "HT", "2T", "09", "40", + "FCC", "2.4G", "20M", "HT", "2T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "10", "40", + "MKK", "2.4G", "20M", "HT", "2T", "10", "40", + "FCC", "2.4G", "20M", "HT", "2T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "2T", "11", "40", + "MKK", "2.4G", "20M", "HT", "2T", "11", "40", + "FCC", "2.4G", "20M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "12", "40", + "MKK", "2.4G", "20M", "HT", "2T", "12", "40", + "FCC", "2.4G", "20M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "13", "40", + "MKK", "2.4G", "20M", "HT", "2T", "13", "40", + "FCC", "2.4G", "20M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", + "MKK", "2.4G", "20M", "HT", "2T", "14", "63", + "FCC", "2.4G", "20M", "HT", "3T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "3T", "01", "40", + "MKK", "2.4G", "20M", "HT", "3T", "01", "40", + "FCC", "2.4G", "20M", "HT", "3T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "02", "40", + "MKK", "2.4G", "20M", "HT", "3T", "02", "40", + "FCC", "2.4G", "20M", "HT", "3T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "03", "40", + "MKK", "2.4G", "20M", "HT", "3T", "03", "40", + "FCC", "2.4G", "20M", "HT", "3T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "04", "40", + "MKK", "2.4G", "20M", "HT", "3T", "04", "40", + "FCC", "2.4G", "20M", "HT", "3T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "05", "40", + "MKK", "2.4G", "20M", "HT", "3T", "05", "40", + "FCC", "2.4G", "20M", "HT", "3T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "06", "40", + "MKK", "2.4G", "20M", "HT", "3T", "06", "40", + "FCC", "2.4G", "20M", "HT", "3T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "07", "40", + "MKK", "2.4G", "20M", "HT", "3T", "07", "40", + "FCC", "2.4G", "20M", "HT", "3T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "08", "40", + "MKK", "2.4G", "20M", "HT", "3T", "08", "40", + "FCC", "2.4G", "20M", "HT", "3T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "09", "40", + "MKK", "2.4G", "20M", "HT", "3T", "09", "40", + "FCC", "2.4G", "20M", "HT", "3T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "10", "40", + "MKK", "2.4G", "20M", "HT", "3T", "10", "40", + "FCC", "2.4G", "20M", "HT", "3T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "11", "40", + "MKK", "2.4G", "20M", "HT", "3T", "11", "40", + "FCC", "2.4G", "20M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "12", "40", + "MKK", "2.4G", "20M", "HT", "3T", "12", "40", + "FCC", "2.4G", "20M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "13", "40", + "MKK", "2.4G", "20M", "HT", "3T", "13", "40", + "FCC", "2.4G", "20M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "14", "63", + "MKK", "2.4G", "20M", "HT", "3T", "14", "63", + "FCC", "2.4G", "20M", "HT", "4T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "4T", "01", "40", + "MKK", "2.4G", "20M", "HT", "4T", "01", "40", + "FCC", "2.4G", "20M", "HT", "4T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "02", "40", + "MKK", "2.4G", "20M", "HT", "4T", "02", "40", + "FCC", "2.4G", "20M", "HT", "4T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "03", "40", + "MKK", "2.4G", "20M", "HT", "4T", "03", "40", + "FCC", "2.4G", "20M", "HT", "4T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "04", "40", + "MKK", "2.4G", "20M", "HT", "4T", "04", "40", + "FCC", "2.4G", "20M", "HT", "4T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "05", "40", + "MKK", "2.4G", "20M", "HT", "4T", "05", "40", + "FCC", "2.4G", "20M", "HT", "4T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "06", "40", + "MKK", "2.4G", "20M", "HT", "4T", "06", "40", + "FCC", "2.4G", "20M", "HT", "4T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "07", "40", + "MKK", "2.4G", "20M", "HT", "4T", "07", "40", + "FCC", "2.4G", "20M", "HT", "4T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "08", "40", + "MKK", "2.4G", "20M", "HT", "4T", "08", "40", + "FCC", "2.4G", "20M", "HT", "4T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "09", "40", + "MKK", "2.4G", "20M", "HT", "4T", "09", "40", + "FCC", "2.4G", "20M", "HT", "4T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "10", "40", + "MKK", "2.4G", "20M", "HT", "4T", "10", "40", + "FCC", "2.4G", "20M", "HT", "4T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "4T", "11", "40", + "MKK", "2.4G", "20M", "HT", "4T", "11", "40", + "FCC", "2.4G", "20M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "12", "40", + "MKK", "2.4G", "20M", "HT", "4T", "12", "40", + "FCC", "2.4G", "20M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "13", "40", + "MKK", "2.4G", "20M", "HT", "4T", "13", "40", + "FCC", "2.4G", "20M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "14", "63", + "MKK", "2.4G", "20M", "HT", "4T", "14", "63", + "FCC", "2.4G", "40M", "HT", "1T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "01", "63", + "MKK", "2.4G", "40M", "HT", "1T", "01", "63", + "FCC", "2.4G", "40M", "HT", "1T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "02", "63", + "MKK", "2.4G", "40M", "HT", "1T", "02", "63", + "FCC", "2.4G", "40M", "HT", "1T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "1T", "03", "34", + "MKK", "2.4G", "40M", "HT", "1T", "03", "34", + "FCC", "2.4G", "40M", "HT", "1T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "04", "34", + "MKK", "2.4G", "40M", "HT", "1T", "04", "34", + "FCC", "2.4G", "40M", "HT", "1T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "05", "34", + "MKK", "2.4G", "40M", "HT", "1T", "05", "34", + "FCC", "2.4G", "40M", "HT", "1T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "06", "34", + "MKK", "2.4G", "40M", "HT", "1T", "06", "34", + "FCC", "2.4G", "40M", "HT", "1T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "07", "34", + "MKK", "2.4G", "40M", "HT", "1T", "07", "34", + "FCC", "2.4G", "40M", "HT", "1T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "08", "34", + "MKK", "2.4G", "40M", "HT", "1T", "08", "34", + "FCC", "2.4G", "40M", "HT", "1T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "09", "34", + "MKK", "2.4G", "40M", "HT", "1T", "09", "34", + "FCC", "2.4G", "40M", "HT", "1T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "10", "34", + "MKK", "2.4G", "40M", "HT", "1T", "10", "34", + "FCC", "2.4G", "40M", "HT", "1T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "1T", "11", "34", + "MKK", "2.4G", "40M", "HT", "1T", "11", "34", + "FCC", "2.4G", "40M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "12", "34", + "MKK", "2.4G", "40M", "HT", "1T", "12", "34", + "FCC", "2.4G", "40M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "13", "34", + "MKK", "2.4G", "40M", "HT", "1T", "13", "34", + "FCC", "2.4G", "40M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "14", "63", + "MKK", "2.4G", "40M", "HT", "1T", "14", "63", + "FCC", "2.4G", "40M", "HT", "2T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", + "MKK", "2.4G", "40M", "HT", "2T", "01", "63", + "FCC", "2.4G", "40M", "HT", "2T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "02", "63", + "MKK", "2.4G", "40M", "HT", "2T", "02", "63", + "FCC", "2.4G", "40M", "HT", "2T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "03", "34", + "MKK", "2.4G", "40M", "HT", "2T", "03", "34", + "FCC", "2.4G", "40M", "HT", "2T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "04", "34", + "MKK", "2.4G", "40M", "HT", "2T", "04", "34", + "FCC", "2.4G", "40M", "HT", "2T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "05", "34", + "MKK", "2.4G", "40M", "HT", "2T", "05", "34", + "FCC", "2.4G", "40M", "HT", "2T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "06", "34", + "MKK", "2.4G", "40M", "HT", "2T", "06", "34", + "FCC", "2.4G", "40M", "HT", "2T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "07", "34", + "MKK", "2.4G", "40M", "HT", "2T", "07", "34", + "FCC", "2.4G", "40M", "HT", "2T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "08", "34", + "MKK", "2.4G", "40M", "HT", "2T", "08", "34", + "FCC", "2.4G", "40M", "HT", "2T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "09", "34", + "MKK", "2.4G", "40M", "HT", "2T", "09", "34", + "FCC", "2.4G", "40M", "HT", "2T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "10", "34", + "MKK", "2.4G", "40M", "HT", "2T", "10", "34", + "FCC", "2.4G", "40M", "HT", "2T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "2T", "11", "34", + "MKK", "2.4G", "40M", "HT", "2T", "11", "34", + "FCC", "2.4G", "40M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "12", "34", + "MKK", "2.4G", "40M", "HT", "2T", "12", "34", + "FCC", "2.4G", "40M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "13", "34", + "MKK", "2.4G", "40M", "HT", "2T", "13", "34", + "FCC", "2.4G", "40M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "14", "63", + "MKK", "2.4G", "40M", "HT", "2T", "14", "63", + "FCC", "2.4G", "40M", "HT", "3T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "01", "63", + "MKK", "2.4G", "40M", "HT", "3T", "01", "63", + "FCC", "2.4G", "40M", "HT", "3T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "02", "63", + "MKK", "2.4G", "40M", "HT", "3T", "02", "63", + "FCC", "2.4G", "40M", "HT", "3T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "3T", "03", "34", + "MKK", "2.4G", "40M", "HT", "3T", "03", "34", + "FCC", "2.4G", "40M", "HT", "3T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "04", "34", + "MKK", "2.4G", "40M", "HT", "3T", "04", "34", + "FCC", "2.4G", "40M", "HT", "3T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "05", "34", + "MKK", "2.4G", "40M", "HT", "3T", "05", "34", + "FCC", "2.4G", "40M", "HT", "3T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "06", "34", + "MKK", "2.4G", "40M", "HT", "3T", "06", "34", + "FCC", "2.4G", "40M", "HT", "3T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "07", "34", + "MKK", "2.4G", "40M", "HT", "3T", "07", "34", + "FCC", "2.4G", "40M", "HT", "3T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "08", "34", + "MKK", "2.4G", "40M", "HT", "3T", "08", "34", + "FCC", "2.4G", "40M", "HT", "3T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "09", "34", + "MKK", "2.4G", "40M", "HT", "3T", "09", "34", + "FCC", "2.4G", "40M", "HT", "3T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "10", "34", + "MKK", "2.4G", "40M", "HT", "3T", "10", "34", + "FCC", "2.4G", "40M", "HT", "3T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "11", "34", + "MKK", "2.4G", "40M", "HT", "3T", "11", "34", + "FCC", "2.4G", "40M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "12", "34", + "MKK", "2.4G", "40M", "HT", "3T", "12", "34", + "FCC", "2.4G", "40M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "13", "34", + "MKK", "2.4G", "40M", "HT", "3T", "13", "34", + "FCC", "2.4G", "40M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "14", "63", + "MKK", "2.4G", "40M", "HT", "3T", "14", "63", + "FCC", "2.4G", "40M", "HT", "4T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "01", "63", + "MKK", "2.4G", "40M", "HT", "4T", "01", "63", + "FCC", "2.4G", "40M", "HT", "4T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "02", "63", + "MKK", "2.4G", "40M", "HT", "4T", "02", "63", + "FCC", "2.4G", "40M", "HT", "4T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "4T", "03", "34", + "MKK", "2.4G", "40M", "HT", "4T", "03", "34", + "FCC", "2.4G", "40M", "HT", "4T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "04", "34", + "MKK", "2.4G", "40M", "HT", "4T", "04", "34", + "FCC", "2.4G", "40M", "HT", "4T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "05", "34", + "MKK", "2.4G", "40M", "HT", "4T", "05", "34", + "FCC", "2.4G", "40M", "HT", "4T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "06", "34", + "MKK", "2.4G", "40M", "HT", "4T", "06", "34", + "FCC", "2.4G", "40M", "HT", "4T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "07", "34", + "MKK", "2.4G", "40M", "HT", "4T", "07", "34", + "FCC", "2.4G", "40M", "HT", "4T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "08", "34", + "MKK", "2.4G", "40M", "HT", "4T", "08", "34", + "FCC", "2.4G", "40M", "HT", "4T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "09", "34", + "MKK", "2.4G", "40M", "HT", "4T", "09", "34", + "FCC", "2.4G", "40M", "HT", "4T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "10", "34", + "MKK", "2.4G", "40M", "HT", "4T", "10", "34", + "FCC", "2.4G", "40M", "HT", "4T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "4T", "11", "34", + "MKK", "2.4G", "40M", "HT", "4T", "11", "34", + "FCC", "2.4G", "40M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "12", "34", + "MKK", "2.4G", "40M", "HT", "4T", "12", "34", + "FCC", "2.4G", "40M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "13", "34", + "MKK", "2.4G", "40M", "HT", "4T", "13", "34", + "FCC", "2.4G", "40M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "14", "63", + "MKK", "2.4G", "40M", "HT", "4T", "14", "63", + "FCC", "5G", "20M", "OFDM", "1T", "36", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "36", "42", + "MKK", "5G", "20M", "OFDM", "1T", "36", "42", + "FCC", "5G", "20M", "OFDM", "1T", "40", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "40", "42", + "MKK", "5G", "20M", "OFDM", "1T", "40", "42", + "FCC", "5G", "20M", "OFDM", "1T", "44", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "44", "42", + "MKK", "5G", "20M", "OFDM", "1T", "44", "42", + "FCC", "5G", "20M", "OFDM", "1T", "48", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "48", "42", + "MKK", "5G", "20M", "OFDM", "1T", "48", "42", + "FCC", "5G", "20M", "OFDM", "1T", "52", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "52", "42", + "MKK", "5G", "20M", "OFDM", "1T", "52", "42", + "FCC", "5G", "20M", "OFDM", "1T", "56", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "56", "42", + "MKK", "5G", "20M", "OFDM", "1T", "56", "42", + "FCC", "5G", "20M", "OFDM", "1T", "60", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "60", "42", + "MKK", "5G", "20M", "OFDM", "1T", "60", "42", + "FCC", "5G", "20M", "OFDM", "1T", "64", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "64", "42", + "MKK", "5G", "20M", "OFDM", "1T", "64", "42", + "FCC", "5G", "20M", "OFDM", "1T", "100", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "100", "42", + "MKK", "5G", "20M", "OFDM", "1T", "100", "42", + "FCC", "5G", "20M", "OFDM", "1T", "104", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "104", "42", + "MKK", "5G", "20M", "OFDM", "1T", "104", "42", + "FCC", "5G", "20M", "OFDM", "1T", "108", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "108", "42", + "MKK", "5G", "20M", "OFDM", "1T", "108", "42", + "FCC", "5G", "20M", "OFDM", "1T", "112", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "112", "42", + "MKK", "5G", "20M", "OFDM", "1T", "112", "42", + "FCC", "5G", "20M", "OFDM", "1T", "116", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "116", "42", + "MKK", "5G", "20M", "OFDM", "1T", "116", "42", + "FCC", "5G", "20M", "OFDM", "1T", "120", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "120", "42", + "MKK", "5G", "20M", "OFDM", "1T", "120", "42", + "FCC", "5G", "20M", "OFDM", "1T", "124", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "124", "42", + "MKK", "5G", "20M", "OFDM", "1T", "124", "42", + "FCC", "5G", "20M", "OFDM", "1T", "128", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "128", "42", + "MKK", "5G", "20M", "OFDM", "1T", "128", "42", + "FCC", "5G", "20M", "OFDM", "1T", "132", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "132", "42", + "MKK", "5G", "20M", "OFDM", "1T", "132", "42", + "FCC", "5G", "20M", "OFDM", "1T", "136", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "136", "42", + "MKK", "5G", "20M", "OFDM", "1T", "136", "42", + "FCC", "5G", "20M", "OFDM", "1T", "140", "40", + "ETSI", "5G", "20M", "OFDM", "1T", "140", "40", + "MKK", "5G", "20M", "OFDM", "1T", "140", "40", + "FCC", "5G", "20M", "OFDM", "1T", "149", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "149", "44", + "MKK", "5G", "20M", "OFDM", "1T", "149", "63", + "FCC", "5G", "20M", "OFDM", "1T", "153", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "153", "44", + "MKK", "5G", "20M", "OFDM", "1T", "153", "63", + "FCC", "5G", "20M", "OFDM", "1T", "157", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "157", "44", + "MKK", "5G", "20M", "OFDM", "1T", "157", "63", + "FCC", "5G", "20M", "OFDM", "1T", "161", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "161", "44", + "MKK", "5G", "20M", "OFDM", "1T", "161", "63", + "FCC", "5G", "20M", "OFDM", "1T", "165", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "165", "44", + "MKK", "5G", "20M", "OFDM", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "1T", "36", "32", + "ETSI", "5G", "20M", "HT", "1T", "36", "32", + "MKK", "5G", "20M", "HT", "1T", "36", "32", + "FCC", "5G", "20M", "HT", "1T", "40", "32", + "ETSI", "5G", "20M", "HT", "1T", "40", "32", + "MKK", "5G", "20M", "HT", "1T", "40", "32", + "FCC", "5G", "20M", "HT", "1T", "44", "32", + "ETSI", "5G", "20M", "HT", "1T", "44", "32", + "MKK", "5G", "20M", "HT", "1T", "44", "32", + "FCC", "5G", "20M", "HT", "1T", "48", "36", + "ETSI", "5G", "20M", "HT", "1T", "48", "36", + "MKK", "5G", "20M", "HT", "1T", "48", "36", + "FCC", "5G", "20M", "HT", "1T", "52", "36", + "ETSI", "5G", "20M", "HT", "1T", "52", "36", + "MKK", "5G", "20M", "HT", "1T", "52", "36", + "FCC", "5G", "20M", "HT", "1T", "56", "32", + "ETSI", "5G", "20M", "HT", "1T", "56", "32", + "MKK", "5G", "20M", "HT", "1T", "56", "32", + "FCC", "5G", "20M", "HT", "1T", "60", "32", + "ETSI", "5G", "20M", "HT", "1T", "60", "32", + "MKK", "5G", "20M", "HT", "1T", "60", "32", + "FCC", "5G", "20M", "HT", "1T", "64", "32", + "ETSI", "5G", "20M", "HT", "1T", "64", "32", + "MKK", "5G", "20M", "HT", "1T", "64", "32", + "FCC", "5G", "20M", "HT", "1T", "100", "32", + "ETSI", "5G", "20M", "HT", "1T", "100", "32", + "MKK", "5G", "20M", "HT", "1T", "100", "32", + "FCC", "5G", "20M", "HT", "1T", "104", "32", + "ETSI", "5G", "20M", "HT", "1T", "104", "32", + "MKK", "5G", "20M", "HT", "1T", "104", "32", + "FCC", "5G", "20M", "HT", "1T", "108", "32", + "ETSI", "5G", "20M", "HT", "1T", "108", "32", + "MKK", "5G", "20M", "HT", "1T", "108", "32", + "FCC", "5G", "20M", "HT", "1T", "112", "32", + "ETSI", "5G", "20M", "HT", "1T", "112", "32", + "MKK", "5G", "20M", "HT", "1T", "112", "32", + "FCC", "5G", "20M", "HT", "1T", "116", "32", + "ETSI", "5G", "20M", "HT", "1T", "116", "32", + "MKK", "5G", "20M", "HT", "1T", "116", "32", + "FCC", "5G", "20M", "HT", "1T", "120", "32", + "ETSI", "5G", "20M", "HT", "1T", "120", "32", + "MKK", "5G", "20M", "HT", "1T", "120", "32", + "FCC", "5G", "20M", "HT", "1T", "124", "32", + "ETSI", "5G", "20M", "HT", "1T", "124", "32", + "MKK", "5G", "20M", "HT", "1T", "124", "32", + "FCC", "5G", "20M", "HT", "1T", "128", "32", + "ETSI", "5G", "20M", "HT", "1T", "128", "32", + "MKK", "5G", "20M", "HT", "1T", "128", "32", + "FCC", "5G", "20M", "HT", "1T", "132", "32", + "ETSI", "5G", "20M", "HT", "1T", "132", "32", + "MKK", "5G", "20M", "HT", "1T", "132", "32", + "FCC", "5G", "20M", "HT", "1T", "136", "32", + "ETSI", "5G", "20M", "HT", "1T", "136", "32", + "MKK", "5G", "20M", "HT", "1T", "136", "32", + "FCC", "5G", "20M", "HT", "1T", "140", "30", + "ETSI", "5G", "20M", "HT", "1T", "140", "30", + "MKK", "5G", "20M", "HT", "1T", "140", "30", + "FCC", "5G", "20M", "HT", "1T", "149", "40", + "ETSI", "5G", "20M", "HT", "1T", "149", "40", + "MKK", "5G", "20M", "HT", "1T", "149", "63", + "FCC", "5G", "20M", "HT", "1T", "153", "40", + "ETSI", "5G", "20M", "HT", "1T", "153", "40", + "MKK", "5G", "20M", "HT", "1T", "153", "63", + "FCC", "5G", "20M", "HT", "1T", "157", "40", + "ETSI", "5G", "20M", "HT", "1T", "157", "40", + "MKK", "5G", "20M", "HT", "1T", "157", "63", + "FCC", "5G", "20M", "HT", "1T", "161", "40", + "ETSI", "5G", "20M", "HT", "1T", "161", "40", + "MKK", "5G", "20M", "HT", "1T", "161", "63", + "FCC", "5G", "20M", "HT", "1T", "165", "42", + "ETSI", "5G", "20M", "HT", "1T", "165", "42", + "MKK", "5G", "20M", "HT", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "2T", "36", "32", + "ETSI", "5G", "20M", "HT", "2T", "36", "32", + "MKK", "5G", "20M", "HT", "2T", "36", "32", + "FCC", "5G", "20M", "HT", "2T", "40", "32", + "ETSI", "5G", "20M", "HT", "2T", "40", "32", + "MKK", "5G", "20M", "HT", "2T", "40", "32", + "FCC", "5G", "20M", "HT", "2T", "44", "32", + "ETSI", "5G", "20M", "HT", "2T", "44", "32", + "MKK", "5G", "20M", "HT", "2T", "44", "32", + "FCC", "5G", "20M", "HT", "2T", "48", "36", + "ETSI", "5G", "20M", "HT", "2T", "48", "36", + "MKK", "5G", "20M", "HT", "2T", "48", "36", + "FCC", "5G", "20M", "HT", "2T", "52", "36", + "ETSI", "5G", "20M", "HT", "2T", "52", "36", + "MKK", "5G", "20M", "HT", "2T", "52", "36", + "FCC", "5G", "20M", "HT", "2T", "56", "32", + "ETSI", "5G", "20M", "HT", "2T", "56", "32", + "MKK", "5G", "20M", "HT", "2T", "56", "32", + "FCC", "5G", "20M", "HT", "2T", "60", "32", + "ETSI", "5G", "20M", "HT", "2T", "60", "32", + "MKK", "5G", "20M", "HT", "2T", "60", "32", + "FCC", "5G", "20M", "HT", "2T", "64", "32", + "ETSI", "5G", "20M", "HT", "2T", "64", "32", + "MKK", "5G", "20M", "HT", "2T", "64", "32", + "FCC", "5G", "20M", "HT", "2T", "100", "32", + "ETSI", "5G", "20M", "HT", "2T", "100", "32", + "MKK", "5G", "20M", "HT", "2T", "100", "32", + "FCC", "5G", "20M", "HT", "2T", "104", "32", + "ETSI", "5G", "20M", "HT", "2T", "104", "32", + "MKK", "5G", "20M", "HT", "2T", "104", "32", + "FCC", "5G", "20M", "HT", "2T", "108", "32", + "ETSI", "5G", "20M", "HT", "2T", "108", "32", + "MKK", "5G", "20M", "HT", "2T", "108", "32", + "FCC", "5G", "20M", "HT", "2T", "112", "32", + "ETSI", "5G", "20M", "HT", "2T", "112", "32", + "MKK", "5G", "20M", "HT", "2T", "112", "32", + "FCC", "5G", "20M", "HT", "2T", "116", "32", + "ETSI", "5G", "20M", "HT", "2T", "116", "32", + "MKK", "5G", "20M", "HT", "2T", "116", "32", + "FCC", "5G", "20M", "HT", "2T", "120", "32", + "ETSI", "5G", "20M", "HT", "2T", "120", "32", + "MKK", "5G", "20M", "HT", "2T", "120", "32", + "FCC", "5G", "20M", "HT", "2T", "124", "32", + "ETSI", "5G", "20M", "HT", "2T", "124", "32", + "MKK", "5G", "20M", "HT", "2T", "124", "32", + "FCC", "5G", "20M", "HT", "2T", "128", "32", + "ETSI", "5G", "20M", "HT", "2T", "128", "32", + "MKK", "5G", "20M", "HT", "2T", "128", "32", + "FCC", "5G", "20M", "HT", "2T", "132", "32", + "ETSI", "5G", "20M", "HT", "2T", "132", "32", + "MKK", "5G", "20M", "HT", "2T", "132", "32", + "FCC", "5G", "20M", "HT", "2T", "136", "32", + "ETSI", "5G", "20M", "HT", "2T", "136", "32", + "MKK", "5G", "20M", "HT", "2T", "136", "32", + "FCC", "5G", "20M", "HT", "2T", "140", "30", + "ETSI", "5G", "20M", "HT", "2T", "140", "30", + "MKK", "5G", "20M", "HT", "2T", "140", "30", + "FCC", "5G", "20M", "HT", "2T", "149", "40", + "ETSI", "5G", "20M", "HT", "2T", "149", "40", + "MKK", "5G", "20M", "HT", "2T", "149", "63", + "FCC", "5G", "20M", "HT", "2T", "153", "40", + "ETSI", "5G", "20M", "HT", "2T", "153", "40", + "MKK", "5G", "20M", "HT", "2T", "153", "63", + "FCC", "5G", "20M", "HT", "2T", "157", "40", + "ETSI", "5G", "20M", "HT", "2T", "157", "40", + "MKK", "5G", "20M", "HT", "2T", "157", "63", + "FCC", "5G", "20M", "HT", "2T", "161", "40", + "ETSI", "5G", "20M", "HT", "2T", "161", "40", + "MKK", "5G", "20M", "HT", "2T", "161", "63", + "FCC", "5G", "20M", "HT", "2T", "165", "42", + "ETSI", "5G", "20M", "HT", "2T", "165", "42", + "MKK", "5G", "20M", "HT", "2T", "165", "63", + "FCC", "5G", "20M", "HT", "3T", "36", "32", + "ETSI", "5G", "20M", "HT", "3T", "36", "32", + "MKK", "5G", "20M", "HT", "3T", "36", "32", + "FCC", "5G", "20M", "HT", "3T", "40", "32", + "ETSI", "5G", "20M", "HT", "3T", "40", "32", + "MKK", "5G", "20M", "HT", "3T", "40", "32", + "FCC", "5G", "20M", "HT", "3T", "44", "32", + "ETSI", "5G", "20M", "HT", "3T", "44", "32", + "MKK", "5G", "20M", "HT", "3T", "44", "32", + "FCC", "5G", "20M", "HT", "3T", "48", "36", + "ETSI", "5G", "20M", "HT", "3T", "48", "36", + "MKK", "5G", "20M", "HT", "3T", "48", "36", + "FCC", "5G", "20M", "HT", "3T", "52", "36", + "ETSI", "5G", "20M", "HT", "3T", "52", "36", + "MKK", "5G", "20M", "HT", "3T", "52", "36", + "FCC", "5G", "20M", "HT", "3T", "56", "32", + "ETSI", "5G", "20M", "HT", "3T", "56", "32", + "MKK", "5G", "20M", "HT", "3T", "56", "32", + "FCC", "5G", "20M", "HT", "3T", "60", "32", + "ETSI", "5G", "20M", "HT", "3T", "60", "32", + "MKK", "5G", "20M", "HT", "3T", "60", "32", + "FCC", "5G", "20M", "HT", "3T", "64", "32", + "ETSI", "5G", "20M", "HT", "3T", "64", "32", + "MKK", "5G", "20M", "HT", "3T", "64", "32", + "FCC", "5G", "20M", "HT", "3T", "100", "32", + "ETSI", "5G", "20M", "HT", "3T", "100", "32", + "MKK", "5G", "20M", "HT", "3T", "100", "32", + "FCC", "5G", "20M", "HT", "3T", "104", "32", + "ETSI", "5G", "20M", "HT", "3T", "104", "32", + "MKK", "5G", "20M", "HT", "3T", "104", "32", + "FCC", "5G", "20M", "HT", "3T", "108", "32", + "ETSI", "5G", "20M", "HT", "3T", "108", "32", + "MKK", "5G", "20M", "HT", "3T", "108", "32", + "FCC", "5G", "20M", "HT", "3T", "112", "32", + "ETSI", "5G", "20M", "HT", "3T", "112", "32", + "MKK", "5G", "20M", "HT", "3T", "112", "32", + "FCC", "5G", "20M", "HT", "3T", "116", "32", + "ETSI", "5G", "20M", "HT", "3T", "116", "32", + "MKK", "5G", "20M", "HT", "3T", "116", "32", + "FCC", "5G", "20M", "HT", "3T", "120", "32", + "ETSI", "5G", "20M", "HT", "3T", "120", "32", + "MKK", "5G", "20M", "HT", "3T", "120", "32", + "FCC", "5G", "20M", "HT", "3T", "124", "32", + "ETSI", "5G", "20M", "HT", "3T", "124", "32", + "MKK", "5G", "20M", "HT", "3T", "124", "32", + "FCC", "5G", "20M", "HT", "3T", "128", "32", + "ETSI", "5G", "20M", "HT", "3T", "128", "32", + "MKK", "5G", "20M", "HT", "3T", "128", "32", + "FCC", "5G", "20M", "HT", "3T", "132", "32", + "ETSI", "5G", "20M", "HT", "3T", "132", "32", + "MKK", "5G", "20M", "HT", "3T", "132", "32", + "FCC", "5G", "20M", "HT", "3T", "136", "32", + "ETSI", "5G", "20M", "HT", "3T", "136", "32", + "MKK", "5G", "20M", "HT", "3T", "136", "32", + "FCC", "5G", "20M", "HT", "3T", "140", "30", + "ETSI", "5G", "20M", "HT", "3T", "140", "30", + "MKK", "5G", "20M", "HT", "3T", "140", "30", + "FCC", "5G", "20M", "HT", "3T", "149", "40", + "ETSI", "5G", "20M", "HT", "3T", "149", "40", + "MKK", "5G", "20M", "HT", "3T", "149", "63", + "FCC", "5G", "20M", "HT", "3T", "153", "40", + "ETSI", "5G", "20M", "HT", "3T", "153", "40", + "MKK", "5G", "20M", "HT", "3T", "153", "63", + "FCC", "5G", "20M", "HT", "3T", "157", "40", + "ETSI", "5G", "20M", "HT", "3T", "157", "40", + "MKK", "5G", "20M", "HT", "3T", "157", "63", + "FCC", "5G", "20M", "HT", "3T", "161", "40", + "ETSI", "5G", "20M", "HT", "3T", "161", "40", + "MKK", "5G", "20M", "HT", "3T", "161", "63", + "FCC", "5G", "20M", "HT", "3T", "165", "42", + "ETSI", "5G", "20M", "HT", "3T", "165", "42", + "MKK", "5G", "20M", "HT", "3T", "165", "63", + "FCC", "5G", "20M", "HT", "4T", "36", "32", + "ETSI", "5G", "20M", "HT", "4T", "36", "32", + "MKK", "5G", "20M", "HT", "4T", "36", "32", + "FCC", "5G", "20M", "HT", "4T", "40", "32", + "ETSI", "5G", "20M", "HT", "4T", "40", "32", + "MKK", "5G", "20M", "HT", "4T", "40", "32", + "FCC", "5G", "20M", "HT", "4T", "44", "32", + "ETSI", "5G", "20M", "HT", "4T", "44", "32", + "MKK", "5G", "20M", "HT", "4T", "44", "32", + "FCC", "5G", "20M", "HT", "4T", "48", "36", + "ETSI", "5G", "20M", "HT", "4T", "48", "36", + "MKK", "5G", "20M", "HT", "4T", "48", "36", + "FCC", "5G", "20M", "HT", "4T", "52", "36", + "ETSI", "5G", "20M", "HT", "4T", "52", "36", + "MKK", "5G", "20M", "HT", "4T", "52", "36", + "FCC", "5G", "20M", "HT", "4T", "56", "32", + "ETSI", "5G", "20M", "HT", "4T", "56", "32", + "MKK", "5G", "20M", "HT", "4T", "56", "32", + "FCC", "5G", "20M", "HT", "4T", "60", "32", + "ETSI", "5G", "20M", "HT", "4T", "60", "32", + "MKK", "5G", "20M", "HT", "4T", "60", "32", + "FCC", "5G", "20M", "HT", "4T", "64", "32", + "ETSI", "5G", "20M", "HT", "4T", "64", "32", + "MKK", "5G", "20M", "HT", "4T", "64", "32", + "FCC", "5G", "20M", "HT", "4T", "100", "32", + "ETSI", "5G", "20M", "HT", "4T", "100", "32", + "MKK", "5G", "20M", "HT", "4T", "100", "32", + "FCC", "5G", "20M", "HT", "4T", "104", "32", + "ETSI", "5G", "20M", "HT", "4T", "104", "32", + "MKK", "5G", "20M", "HT", "4T", "104", "32", + "FCC", "5G", "20M", "HT", "4T", "108", "32", + "ETSI", "5G", "20M", "HT", "4T", "108", "32", + "MKK", "5G", "20M", "HT", "4T", "108", "32", + "FCC", "5G", "20M", "HT", "4T", "112", "32", + "ETSI", "5G", "20M", "HT", "4T", "112", "32", + "MKK", "5G", "20M", "HT", "4T", "112", "32", + "FCC", "5G", "20M", "HT", "4T", "116", "32", + "ETSI", "5G", "20M", "HT", "4T", "116", "32", + "MKK", "5G", "20M", "HT", "4T", "116", "32", + "FCC", "5G", "20M", "HT", "4T", "120", "32", + "ETSI", "5G", "20M", "HT", "4T", "120", "32", + "MKK", "5G", "20M", "HT", "4T", "120", "32", + "FCC", "5G", "20M", "HT", "4T", "124", "32", + "ETSI", "5G", "20M", "HT", "4T", "124", "32", + "MKK", "5G", "20M", "HT", "4T", "124", "32", + "FCC", "5G", "20M", "HT", "4T", "128", "32", + "ETSI", "5G", "20M", "HT", "4T", "128", "32", + "MKK", "5G", "20M", "HT", "4T", "128", "32", + "FCC", "5G", "20M", "HT", "4T", "132", "32", + "ETSI", "5G", "20M", "HT", "4T", "132", "32", + "MKK", "5G", "20M", "HT", "4T", "132", "32", + "FCC", "5G", "20M", "HT", "4T", "136", "32", + "ETSI", "5G", "20M", "HT", "4T", "136", "32", + "MKK", "5G", "20M", "HT", "4T", "136", "32", + "FCC", "5G", "20M", "HT", "4T", "140", "30", + "ETSI", "5G", "20M", "HT", "4T", "140", "30", + "MKK", "5G", "20M", "HT", "4T", "140", "30", + "FCC", "5G", "20M", "HT", "4T", "149", "40", + "ETSI", "5G", "20M", "HT", "4T", "149", "40", + "MKK", "5G", "20M", "HT", "4T", "149", "63", + "FCC", "5G", "20M", "HT", "4T", "153", "40", + "ETSI", "5G", "20M", "HT", "4T", "153", "40", + "MKK", "5G", "20M", "HT", "4T", "153", "63", + "FCC", "5G", "20M", "HT", "4T", "157", "40", + "ETSI", "5G", "20M", "HT", "4T", "157", "40", + "MKK", "5G", "20M", "HT", "4T", "157", "63", + "FCC", "5G", "20M", "HT", "4T", "161", "40", + "ETSI", "5G", "20M", "HT", "4T", "161", "40", + "MKK", "5G", "20M", "HT", "4T", "161", "63", + "FCC", "5G", "20M", "HT", "4T", "165", "42", + "ETSI", "5G", "20M", "HT", "4T", "165", "42", + "MKK", "5G", "20M", "HT", "4T", "165", "63", + "FCC", "5G", "40M", "HT", "1T", "38", "32", + "ETSI", "5G", "40M", "HT", "1T", "38", "32", + "MKK", "5G", "40M", "HT", "1T", "38", "32", + "FCC", "5G", "40M", "HT", "1T", "46", "36", + "ETSI", "5G", "40M", "HT", "1T", "46", "36", + "MKK", "5G", "40M", "HT", "1T", "46", "36", + "FCC", "5G", "40M", "HT", "1T", "54", "36", + "ETSI", "5G", "40M", "HT", "1T", "54", "36", + "MKK", "5G", "40M", "HT", "1T", "54", "36", + "FCC", "5G", "40M", "HT", "1T", "62", "32", + "ETSI", "5G", "40M", "HT", "1T", "62", "32", + "MKK", "5G", "40M", "HT", "1T", "62", "32", + "FCC", "5G", "40M", "HT", "1T", "102", "30", + "ETSI", "5G", "40M", "HT", "1T", "102", "30", + "MKK", "5G", "40M", "HT", "1T", "102", "30", + "FCC", "5G", "40M", "HT", "1T", "110", "32", + "ETSI", "5G", "40M", "HT", "1T", "110", "32", + "MKK", "5G", "40M", "HT", "1T", "110", "32", + "FCC", "5G", "40M", "HT", "1T", "118", "32", + "ETSI", "5G", "40M", "HT", "1T", "118", "32", + "MKK", "5G", "40M", "HT", "1T", "118", "32", + "FCC", "5G", "40M", "HT", "1T", "126", "32", + "ETSI", "5G", "40M", "HT", "1T", "126", "32", + "MKK", "5G", "40M", "HT", "1T", "126", "32", + "FCC", "5G", "40M", "HT", "1T", "134", "36", + "ETSI", "5G", "40M", "HT", "1T", "134", "36", + "MKK", "5G", "40M", "HT", "1T", "134", "36", + "FCC", "5G", "40M", "HT", "1T", "151", "36", + "ETSI", "5G", "40M", "HT", "1T", "151", "36", + "MKK", "5G", "40M", "HT", "1T", "151", "63", + "FCC", "5G", "40M", "HT", "1T", "159", "40", + "ETSI", "5G", "40M", "HT", "1T", "159", "40", + "MKK", "5G", "40M", "HT", "1T", "159", "63", + "FCC", "5G", "40M", "HT", "2T", "38", "32", + "ETSI", "5G", "40M", "HT", "2T", "38", "32", + "MKK", "5G", "40M", "HT", "2T", "38", "32", + "FCC", "5G", "40M", "HT", "2T", "46", "36", + "ETSI", "5G", "40M", "HT", "2T", "46", "36", + "MKK", "5G", "40M", "HT", "2T", "46", "36", + "FCC", "5G", "40M", "HT", "2T", "54", "36", + "ETSI", "5G", "40M", "HT", "2T", "54", "36", + "MKK", "5G", "40M", "HT", "2T", "54", "36", + "FCC", "5G", "40M", "HT", "2T", "62", "32", + "ETSI", "5G", "40M", "HT", "2T", "62", "32", + "MKK", "5G", "40M", "HT", "2T", "62", "32", + "FCC", "5G", "40M", "HT", "2T", "102", "30", + "ETSI", "5G", "40M", "HT", "2T", "102", "30", + "MKK", "5G", "40M", "HT", "2T", "102", "30", + "FCC", "5G", "40M", "HT", "2T", "110", "32", + "ETSI", "5G", "40M", "HT", "2T", "110", "32", + "MKK", "5G", "40M", "HT", "2T", "110", "32", + "FCC", "5G", "40M", "HT", "2T", "118", "32", + "ETSI", "5G", "40M", "HT", "2T", "118", "32", + "MKK", "5G", "40M", "HT", "2T", "118", "32", + "FCC", "5G", "40M", "HT", "2T", "126", "32", + "ETSI", "5G", "40M", "HT", "2T", "126", "32", + "MKK", "5G", "40M", "HT", "2T", "126", "32", + "FCC", "5G", "40M", "HT", "2T", "134", "36", + "ETSI", "5G", "40M", "HT", "2T", "134", "36", + "MKK", "5G", "40M", "HT", "2T", "134", "36", + "FCC", "5G", "40M", "HT", "2T", "151", "36", + "ETSI", "5G", "40M", "HT", "2T", "151", "36", + "MKK", "5G", "40M", "HT", "2T", "151", "63", + "FCC", "5G", "40M", "HT", "2T", "159", "40", + "ETSI", "5G", "40M", "HT", "2T", "159", "40", + "MKK", "5G", "40M", "HT", "2T", "159", "63", + "FCC", "5G", "40M", "HT", "3T", "38", "32", + "ETSI", "5G", "40M", "HT", "3T", "38", "32", + "MKK", "5G", "40M", "HT", "3T", "38", "32", + "FCC", "5G", "40M", "HT", "3T", "46", "36", + "ETSI", "5G", "40M", "HT", "3T", "46", "36", + "MKK", "5G", "40M", "HT", "3T", "46", "36", + "FCC", "5G", "40M", "HT", "3T", "54", "36", + "ETSI", "5G", "40M", "HT", "3T", "54", "36", + "MKK", "5G", "40M", "HT", "3T", "54", "36", + "FCC", "5G", "40M", "HT", "3T", "62", "32", + "ETSI", "5G", "40M", "HT", "3T", "62", "32", + "MKK", "5G", "40M", "HT", "3T", "62", "32", + "FCC", "5G", "40M", "HT", "3T", "102", "30", + "ETSI", "5G", "40M", "HT", "3T", "102", "30", + "MKK", "5G", "40M", "HT", "3T", "102", "30", + "FCC", "5G", "40M", "HT", "3T", "110", "32", + "ETSI", "5G", "40M", "HT", "3T", "110", "32", + "MKK", "5G", "40M", "HT", "3T", "110", "32", + "FCC", "5G", "40M", "HT", "3T", "118", "32", + "ETSI", "5G", "40M", "HT", "3T", "118", "32", + "MKK", "5G", "40M", "HT", "3T", "118", "32", + "FCC", "5G", "40M", "HT", "3T", "126", "32", + "ETSI", "5G", "40M", "HT", "3T", "126", "32", + "MKK", "5G", "40M", "HT", "3T", "126", "32", + "FCC", "5G", "40M", "HT", "3T", "134", "36", + "ETSI", "5G", "40M", "HT", "3T", "134", "36", + "MKK", "5G", "40M", "HT", "3T", "134", "36", + "FCC", "5G", "40M", "HT", "3T", "151", "36", + "ETSI", "5G", "40M", "HT", "3T", "151", "36", + "MKK", "5G", "40M", "HT", "3T", "151", "63", + "FCC", "5G", "40M", "HT", "3T", "159", "40", + "ETSI", "5G", "40M", "HT", "3T", "159", "40", + "MKK", "5G", "40M", "HT", "3T", "159", "63", + "FCC", "5G", "40M", "HT", "4T", "38", "32", + "ETSI", "5G", "40M", "HT", "4T", "38", "32", + "MKK", "5G", "40M", "HT", "4T", "38", "32", + "FCC", "5G", "40M", "HT", "4T", "46", "36", + "ETSI", "5G", "40M", "HT", "4T", "46", "36", + "MKK", "5G", "40M", "HT", "4T", "46", "36", + "FCC", "5G", "40M", "HT", "4T", "54", "36", + "ETSI", "5G", "40M", "HT", "4T", "54", "36", + "MKK", "5G", "40M", "HT", "4T", "54", "36", + "FCC", "5G", "40M", "HT", "4T", "62", "32", + "ETSI", "5G", "40M", "HT", "4T", "62", "32", + "MKK", "5G", "40M", "HT", "4T", "62", "32", + "FCC", "5G", "40M", "HT", "4T", "102", "30", + "ETSI", "5G", "40M", "HT", "4T", "102", "30", + "MKK", "5G", "40M", "HT", "4T", "102", "30", + "FCC", "5G", "40M", "HT", "4T", "110", "32", + "ETSI", "5G", "40M", "HT", "4T", "110", "32", + "MKK", "5G", "40M", "HT", "4T", "110", "32", + "FCC", "5G", "40M", "HT", "4T", "118", "32", + "ETSI", "5G", "40M", "HT", "4T", "118", "32", + "MKK", "5G", "40M", "HT", "4T", "118", "32", + "FCC", "5G", "40M", "HT", "4T", "126", "32", + "ETSI", "5G", "40M", "HT", "4T", "126", "32", + "MKK", "5G", "40M", "HT", "4T", "126", "32", + "FCC", "5G", "40M", "HT", "4T", "134", "36", + "ETSI", "5G", "40M", "HT", "4T", "134", "36", + "MKK", "5G", "40M", "HT", "4T", "134", "36", + "FCC", "5G", "40M", "HT", "4T", "151", "36", + "ETSI", "5G", "40M", "HT", "4T", "151", "36", + "MKK", "5G", "40M", "HT", "4T", "151", "63", + "FCC", "5G", "40M", "HT", "4T", "159", "40", + "ETSI", "5G", "40M", "HT", "4T", "159", "40", + "MKK", "5G", "40M", "HT", "4T", "159", "63", + "FCC", "5G", "80M", "VHT", "1T", "42", "34", + "ETSI", "5G", "80M", "VHT", "1T", "42", "34", + "MKK", "5G", "80M", "VHT", "1T", "42", "34", + "FCC", "5G", "80M", "VHT", "1T", "58", "34", + "ETSI", "5G", "80M", "VHT", "1T", "58", "34", + "MKK", "5G", "80M", "VHT", "1T", "58", "34", + "FCC", "5G", "80M", "VHT", "1T", "106", "32", + "ETSI", "5G", "80M", "VHT", "1T", "106", "32", + "MKK", "5G", "80M", "VHT", "1T", "106", "32", + "FCC", "5G", "80M", "VHT", "1T", "122", "34", + "ETSI", "5G", "80M", "VHT", "1T", "122", "34", + "MKK", "5G", "80M", "VHT", "1T", "122", "34", + "FCC", "5G", "80M", "VHT", "1T", "155", "34", + "ETSI", "5G", "80M", "VHT", "1T", "155", "34", + "MKK", "5G", "80M", "VHT", "1T", "155", "63", + "FCC", "5G", "80M", "VHT", "2T", "42", "34", + "ETSI", "5G", "80M", "VHT", "2T", "42", "34", + "MKK", "5G", "80M", "VHT", "2T", "42", "34", + "FCC", "5G", "80M", "VHT", "2T", "58", "34", + "ETSI", "5G", "80M", "VHT", "2T", "58", "34", + "MKK", "5G", "80M", "VHT", "2T", "58", "34", + "FCC", "5G", "80M", "VHT", "2T", "106", "32", + "ETSI", "5G", "80M", "VHT", "2T", "106", "32", + "MKK", "5G", "80M", "VHT", "2T", "106", "32", + "FCC", "5G", "80M", "VHT", "2T", "122", "34", + "ETSI", "5G", "80M", "VHT", "2T", "122", "34", + "MKK", "5G", "80M", "VHT", "2T", "122", "34", + "FCC", "5G", "80M", "VHT", "2T", "155", "34", + "ETSI", "5G", "80M", "VHT", "2T", "155", "34", + "MKK", "5G", "80M", "VHT", "2T", "155", "63", + "FCC", "5G", "80M", "VHT", "3T", "42", "34", + "ETSI", "5G", "80M", "VHT", "3T", "42", "34", + "MKK", "5G", "80M", "VHT", "3T", "42", "34", + "FCC", "5G", "80M", "VHT", "3T", "58", "34", + "ETSI", "5G", "80M", "VHT", "3T", "58", "34", + "MKK", "5G", "80M", "VHT", "3T", "58", "34", + "FCC", "5G", "80M", "VHT", "3T", "106", "32", + "ETSI", "5G", "80M", "VHT", "3T", "106", "32", + "MKK", "5G", "80M", "VHT", "3T", "106", "32", + "FCC", "5G", "80M", "VHT", "3T", "122", "34", + "ETSI", "5G", "80M", "VHT", "3T", "122", "34", + "MKK", "5G", "80M", "VHT", "3T", "122", "34", + "FCC", "5G", "80M", "VHT", "3T", "155", "34", + "ETSI", "5G", "80M", "VHT", "3T", "155", "34", + "MKK", "5G", "80M", "VHT", "3T", "155", "63", + "FCC", "5G", "80M", "VHT", "4T", "42", "34", + "ETSI", "5G", "80M", "VHT", "4T", "42", "34", + "MKK", "5G", "80M", "VHT", "4T", "42", "34", + "FCC", "5G", "80M", "VHT", "4T", "58", "34", + "ETSI", "5G", "80M", "VHT", "4T", "58", "34", + "MKK", "5G", "80M", "VHT", "4T", "58", "34", + "FCC", "5G", "80M", "VHT", "4T", "106", "32", + "ETSI", "5G", "80M", "VHT", "4T", "106", "32", + "MKK", "5G", "80M", "VHT", "4T", "106", "32", + "FCC", "5G", "80M", "VHT", "4T", "122", "34", + "ETSI", "5G", "80M", "VHT", "4T", "122", "34", + "MKK", "5G", "80M", "VHT", "4T", "122", "34", + "FCC", "5G", "80M", "VHT", "4T", "155", "34", + "ETSI", "5G", "80M", "VHT", "4T", "155", "34", + "MKK", "5G", "80M", "VHT", "4T", "155", "63" +}; +#endif + +void +odm_read_and_config_mp_8814a_txpwr_lmt_type4(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE4 + + u32 i = 0; +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type4) / sizeof(u8); + u8 *array = (u8 *)array_mp_8814a_txpwr_lmt_type4; +#else + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type4) / sizeof(u8 *); + u8 **array = (u8 **)array_mp_8814a_txpwr_lmt_type4; +#endif + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrLmt, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrLmt = array_len / 7; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + for (i = 0; i < array_len; i += 7) { +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u8 regulation = array[i]; + u8 band = array[i + 1]; + u8 bandwidth = array[i + 2]; + u8 rate = array[i + 3]; + u8 rf_path = array[i + 4]; + u8 chnl = array[i + 5]; + u8 val = array[i + 6]; +#else + u8 *regulation = array[i]; + u8 *band = array[i + 1]; + u8 *bandwidth = array[i + 2]; + u8 *rate = array[i + 3]; + u8 *rf_path = array[i + 4]; + u8 *chnl = array[i + 5]; + u8 *val = array[i + 6]; +#endif + + odm_config_bb_txpwr_lmt_8814a(dm, regulation, band, bandwidth, + rate, rf_path, chnl, val); +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrLmt[i / 7], 100, "\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\",", + regulation, band, bandwidth, rate, rf_path, chnl, val); +#endif + } + +#endif +} + +/****************************************************************************** + * txpwr_lmt_type5.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE5 +const char *array_mp_8814a_txpwr_lmt_type5[] = { + "FCC", "2.4G", "20M", "CCK", "1T", "01", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "01", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "01", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "02", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "02", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "02", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "03", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "03", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "03", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "04", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "04", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "04", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "05", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "05", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "05", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "06", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "06", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "06", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "07", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "07", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "07", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "08", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "08", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "08", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "09", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "09", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "09", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "10", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "10", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "10", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "11", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "11", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "11", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "12", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "12", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "12", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "13", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "13", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "13", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "14", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", + "MKK", "2.4G", "20M", "CCK", "1T", "14", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "01", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "01", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "02", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "02", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "03", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "03", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "04", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "04", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "05", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "05", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "06", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "06", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "07", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "07", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "08", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "08", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "09", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "09", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "10", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "10", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "11", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "11", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "12", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "12", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "13", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "13", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63", + "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "1T", "01", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "01", "40", + "MKK", "2.4G", "20M", "HT", "1T", "01", "40", + "FCC", "2.4G", "20M", "HT", "1T", "02", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "02", "40", + "MKK", "2.4G", "20M", "HT", "1T", "02", "40", + "FCC", "2.4G", "20M", "HT", "1T", "03", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "03", "40", + "MKK", "2.4G", "20M", "HT", "1T", "03", "40", + "FCC", "2.4G", "20M", "HT", "1T", "04", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "04", "40", + "MKK", "2.4G", "20M", "HT", "1T", "04", "40", + "FCC", "2.4G", "20M", "HT", "1T", "05", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "05", "40", + "MKK", "2.4G", "20M", "HT", "1T", "05", "40", + "FCC", "2.4G", "20M", "HT", "1T", "06", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "06", "40", + "MKK", "2.4G", "20M", "HT", "1T", "06", "40", + "FCC", "2.4G", "20M", "HT", "1T", "07", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "07", "40", + "MKK", "2.4G", "20M", "HT", "1T", "07", "40", + "FCC", "2.4G", "20M", "HT", "1T", "08", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "08", "40", + "MKK", "2.4G", "20M", "HT", "1T", "08", "40", + "FCC", "2.4G", "20M", "HT", "1T", "09", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "09", "40", + "MKK", "2.4G", "20M", "HT", "1T", "09", "40", + "FCC", "2.4G", "20M", "HT", "1T", "10", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "10", "40", + "MKK", "2.4G", "20M", "HT", "1T", "10", "40", + "FCC", "2.4G", "20M", "HT", "1T", "11", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "11", "40", + "MKK", "2.4G", "20M", "HT", "1T", "11", "40", + "FCC", "2.4G", "20M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "12", "40", + "MKK", "2.4G", "20M", "HT", "1T", "12", "40", + "FCC", "2.4G", "20M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "13", "40", + "MKK", "2.4G", "20M", "HT", "1T", "13", "40", + "FCC", "2.4G", "20M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "14", "63", + "MKK", "2.4G", "20M", "HT", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "2T", "01", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "01", "40", + "MKK", "2.4G", "20M", "HT", "2T", "01", "40", + "FCC", "2.4G", "20M", "HT", "2T", "02", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "02", "40", + "MKK", "2.4G", "20M", "HT", "2T", "02", "40", + "FCC", "2.4G", "20M", "HT", "2T", "03", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "03", "40", + "MKK", "2.4G", "20M", "HT", "2T", "03", "40", + "FCC", "2.4G", "20M", "HT", "2T", "04", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "04", "40", + "MKK", "2.4G", "20M", "HT", "2T", "04", "40", + "FCC", "2.4G", "20M", "HT", "2T", "05", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "05", "40", + "MKK", "2.4G", "20M", "HT", "2T", "05", "40", + "FCC", "2.4G", "20M", "HT", "2T", "06", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "06", "40", + "MKK", "2.4G", "20M", "HT", "2T", "06", "40", + "FCC", "2.4G", "20M", "HT", "2T", "07", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "07", "40", + "MKK", "2.4G", "20M", "HT", "2T", "07", "40", + "FCC", "2.4G", "20M", "HT", "2T", "08", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "08", "40", + "MKK", "2.4G", "20M", "HT", "2T", "08", "40", + "FCC", "2.4G", "20M", "HT", "2T", "09", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "09", "40", + "MKK", "2.4G", "20M", "HT", "2T", "09", "40", + "FCC", "2.4G", "20M", "HT", "2T", "10", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "10", "40", + "MKK", "2.4G", "20M", "HT", "2T", "10", "40", + "FCC", "2.4G", "20M", "HT", "2T", "11", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "11", "40", + "MKK", "2.4G", "20M", "HT", "2T", "11", "40", + "FCC", "2.4G", "20M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "12", "40", + "MKK", "2.4G", "20M", "HT", "2T", "12", "40", + "FCC", "2.4G", "20M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "13", "40", + "MKK", "2.4G", "20M", "HT", "2T", "13", "40", + "FCC", "2.4G", "20M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", + "MKK", "2.4G", "20M", "HT", "2T", "14", "63", + "FCC", "2.4G", "20M", "HT", "3T", "01", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "01", "40", + "MKK", "2.4G", "20M", "HT", "3T", "01", "40", + "FCC", "2.4G", "20M", "HT", "3T", "02", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "02", "40", + "MKK", "2.4G", "20M", "HT", "3T", "02", "40", + "FCC", "2.4G", "20M", "HT", "3T", "03", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "03", "40", + "MKK", "2.4G", "20M", "HT", "3T", "03", "40", + "FCC", "2.4G", "20M", "HT", "3T", "04", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "04", "40", + "MKK", "2.4G", "20M", "HT", "3T", "04", "40", + "FCC", "2.4G", "20M", "HT", "3T", "05", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "05", "40", + "MKK", "2.4G", "20M", "HT", "3T", "05", "40", + "FCC", "2.4G", "20M", "HT", "3T", "06", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "06", "40", + "MKK", "2.4G", "20M", "HT", "3T", "06", "40", + "FCC", "2.4G", "20M", "HT", "3T", "07", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "07", "40", + "MKK", "2.4G", "20M", "HT", "3T", "07", "40", + "FCC", "2.4G", "20M", "HT", "3T", "08", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "08", "40", + "MKK", "2.4G", "20M", "HT", "3T", "08", "40", + "FCC", "2.4G", "20M", "HT", "3T", "09", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "09", "40", + "MKK", "2.4G", "20M", "HT", "3T", "09", "40", + "FCC", "2.4G", "20M", "HT", "3T", "10", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "10", "40", + "MKK", "2.4G", "20M", "HT", "3T", "10", "40", + "FCC", "2.4G", "20M", "HT", "3T", "11", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "11", "40", + "MKK", "2.4G", "20M", "HT", "3T", "11", "40", + "FCC", "2.4G", "20M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "12", "40", + "MKK", "2.4G", "20M", "HT", "3T", "12", "40", + "FCC", "2.4G", "20M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "13", "40", + "MKK", "2.4G", "20M", "HT", "3T", "13", "40", + "FCC", "2.4G", "20M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "14", "63", + "MKK", "2.4G", "20M", "HT", "3T", "14", "63", + "FCC", "2.4G", "20M", "HT", "4T", "01", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "01", "40", + "MKK", "2.4G", "20M", "HT", "4T", "01", "40", + "FCC", "2.4G", "20M", "HT", "4T", "02", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "02", "40", + "MKK", "2.4G", "20M", "HT", "4T", "02", "40", + "FCC", "2.4G", "20M", "HT", "4T", "03", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "03", "40", + "MKK", "2.4G", "20M", "HT", "4T", "03", "40", + "FCC", "2.4G", "20M", "HT", "4T", "04", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "04", "40", + "MKK", "2.4G", "20M", "HT", "4T", "04", "40", + "FCC", "2.4G", "20M", "HT", "4T", "05", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "05", "40", + "MKK", "2.4G", "20M", "HT", "4T", "05", "40", + "FCC", "2.4G", "20M", "HT", "4T", "06", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "06", "40", + "MKK", "2.4G", "20M", "HT", "4T", "06", "40", + "FCC", "2.4G", "20M", "HT", "4T", "07", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "07", "40", + "MKK", "2.4G", "20M", "HT", "4T", "07", "40", + "FCC", "2.4G", "20M", "HT", "4T", "08", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "08", "40", + "MKK", "2.4G", "20M", "HT", "4T", "08", "40", + "FCC", "2.4G", "20M", "HT", "4T", "09", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "09", "40", + "MKK", "2.4G", "20M", "HT", "4T", "09", "40", + "FCC", "2.4G", "20M", "HT", "4T", "10", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "10", "40", + "MKK", "2.4G", "20M", "HT", "4T", "10", "40", + "FCC", "2.4G", "20M", "HT", "4T", "11", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "11", "40", + "MKK", "2.4G", "20M", "HT", "4T", "11", "40", + "FCC", "2.4G", "20M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "12", "40", + "MKK", "2.4G", "20M", "HT", "4T", "12", "40", + "FCC", "2.4G", "20M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "13", "40", + "MKK", "2.4G", "20M", "HT", "4T", "13", "40", + "FCC", "2.4G", "20M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "14", "63", + "MKK", "2.4G", "20M", "HT", "4T", "14", "63", + "FCC", "2.4G", "40M", "HT", "1T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "01", "63", + "MKK", "2.4G", "40M", "HT", "1T", "01", "63", + "FCC", "2.4G", "40M", "HT", "1T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "02", "63", + "MKK", "2.4G", "40M", "HT", "1T", "02", "63", + "FCC", "2.4G", "40M", "HT", "1T", "03", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "03", "40", + "MKK", "2.4G", "40M", "HT", "1T", "03", "40", + "FCC", "2.4G", "40M", "HT", "1T", "04", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "04", "40", + "MKK", "2.4G", "40M", "HT", "1T", "04", "40", + "FCC", "2.4G", "40M", "HT", "1T", "05", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "05", "40", + "MKK", "2.4G", "40M", "HT", "1T", "05", "40", + "FCC", "2.4G", "40M", "HT", "1T", "06", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "06", "40", + "MKK", "2.4G", "40M", "HT", "1T", "06", "40", + "FCC", "2.4G", "40M", "HT", "1T", "07", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "07", "40", + "MKK", "2.4G", "40M", "HT", "1T", "07", "40", + "FCC", "2.4G", "40M", "HT", "1T", "08", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "08", "40", + "MKK", "2.4G", "40M", "HT", "1T", "08", "40", + "FCC", "2.4G", "40M", "HT", "1T", "09", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "09", "40", + "MKK", "2.4G", "40M", "HT", "1T", "09", "40", + "FCC", "2.4G", "40M", "HT", "1T", "10", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "10", "40", + "MKK", "2.4G", "40M", "HT", "1T", "10", "40", + "FCC", "2.4G", "40M", "HT", "1T", "11", "46", + "ETSI", "2.4G", "40M", "HT", "1T", "11", "40", + "MKK", "2.4G", "40M", "HT", "1T", "11", "40", + "FCC", "2.4G", "40M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "12", "40", + "MKK", "2.4G", "40M", "HT", "1T", "12", "40", + "FCC", "2.4G", "40M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "13", "40", + "MKK", "2.4G", "40M", "HT", "1T", "13", "40", + "FCC", "2.4G", "40M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "14", "63", + "MKK", "2.4G", "40M", "HT", "1T", "14", "63", + "FCC", "2.4G", "40M", "HT", "2T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", + "MKK", "2.4G", "40M", "HT", "2T", "01", "63", + "FCC", "2.4G", "40M", "HT", "2T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "02", "63", + "MKK", "2.4G", "40M", "HT", "2T", "02", "63", + "FCC", "2.4G", "40M", "HT", "2T", "03", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "03", "40", + "MKK", "2.4G", "40M", "HT", "2T", "03", "40", + "FCC", "2.4G", "40M", "HT", "2T", "04", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "04", "40", + "MKK", "2.4G", "40M", "HT", "2T", "04", "40", + "FCC", "2.4G", "40M", "HT", "2T", "05", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "05", "40", + "MKK", "2.4G", "40M", "HT", "2T", "05", "40", + "FCC", "2.4G", "40M", "HT", "2T", "06", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "06", "40", + "MKK", "2.4G", "40M", "HT", "2T", "06", "40", + "FCC", "2.4G", "40M", "HT", "2T", "07", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "07", "40", + "MKK", "2.4G", "40M", "HT", "2T", "07", "40", + "FCC", "2.4G", "40M", "HT", "2T", "08", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "08", "40", + "MKK", "2.4G", "40M", "HT", "2T", "08", "40", + "FCC", "2.4G", "40M", "HT", "2T", "09", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "09", "40", + "MKK", "2.4G", "40M", "HT", "2T", "09", "40", + "FCC", "2.4G", "40M", "HT", "2T", "10", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "10", "40", + "MKK", "2.4G", "40M", "HT", "2T", "10", "40", + "FCC", "2.4G", "40M", "HT", "2T", "11", "46", + "ETSI", "2.4G", "40M", "HT", "2T", "11", "40", + "MKK", "2.4G", "40M", "HT", "2T", "11", "40", + "FCC", "2.4G", "40M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "12", "40", + "MKK", "2.4G", "40M", "HT", "2T", "12", "40", + "FCC", "2.4G", "40M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "13", "40", + "MKK", "2.4G", "40M", "HT", "2T", "13", "40", + "FCC", "2.4G", "40M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "14", "63", + "MKK", "2.4G", "40M", "HT", "2T", "14", "63", + "FCC", "2.4G", "40M", "HT", "3T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "01", "63", + "MKK", "2.4G", "40M", "HT", "3T", "01", "63", + "FCC", "2.4G", "40M", "HT", "3T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "02", "63", + "MKK", "2.4G", "40M", "HT", "3T", "02", "63", + "FCC", "2.4G", "40M", "HT", "3T", "03", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "03", "40", + "MKK", "2.4G", "40M", "HT", "3T", "03", "40", + "FCC", "2.4G", "40M", "HT", "3T", "04", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "04", "40", + "MKK", "2.4G", "40M", "HT", "3T", "04", "40", + "FCC", "2.4G", "40M", "HT", "3T", "05", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "05", "40", + "MKK", "2.4G", "40M", "HT", "3T", "05", "40", + "FCC", "2.4G", "40M", "HT", "3T", "06", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "06", "40", + "MKK", "2.4G", "40M", "HT", "3T", "06", "40", + "FCC", "2.4G", "40M", "HT", "3T", "07", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "07", "40", + "MKK", "2.4G", "40M", "HT", "3T", "07", "40", + "FCC", "2.4G", "40M", "HT", "3T", "08", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "08", "40", + "MKK", "2.4G", "40M", "HT", "3T", "08", "40", + "FCC", "2.4G", "40M", "HT", "3T", "09", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "09", "40", + "MKK", "2.4G", "40M", "HT", "3T", "09", "40", + "FCC", "2.4G", "40M", "HT", "3T", "10", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "10", "40", + "MKK", "2.4G", "40M", "HT", "3T", "10", "40", + "FCC", "2.4G", "40M", "HT", "3T", "11", "46", + "ETSI", "2.4G", "40M", "HT", "3T", "11", "40", + "MKK", "2.4G", "40M", "HT", "3T", "11", "40", + "FCC", "2.4G", "40M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "12", "40", + "MKK", "2.4G", "40M", "HT", "3T", "12", "40", + "FCC", "2.4G", "40M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "13", "40", + "MKK", "2.4G", "40M", "HT", "3T", "13", "40", + "FCC", "2.4G", "40M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "14", "63", + "MKK", "2.4G", "40M", "HT", "3T", "14", "63", + "FCC", "2.4G", "40M", "HT", "4T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "01", "63", + "MKK", "2.4G", "40M", "HT", "4T", "01", "63", + "FCC", "2.4G", "40M", "HT", "4T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "02", "63", + "MKK", "2.4G", "40M", "HT", "4T", "02", "63", + "FCC", "2.4G", "40M", "HT", "4T", "03", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "03", "40", + "MKK", "2.4G", "40M", "HT", "4T", "03", "40", + "FCC", "2.4G", "40M", "HT", "4T", "04", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "04", "40", + "MKK", "2.4G", "40M", "HT", "4T", "04", "40", + "FCC", "2.4G", "40M", "HT", "4T", "05", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "05", "40", + "MKK", "2.4G", "40M", "HT", "4T", "05", "40", + "FCC", "2.4G", "40M", "HT", "4T", "06", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "06", "40", + "MKK", "2.4G", "40M", "HT", "4T", "06", "40", + "FCC", "2.4G", "40M", "HT", "4T", "07", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "07", "40", + "MKK", "2.4G", "40M", "HT", "4T", "07", "40", + "FCC", "2.4G", "40M", "HT", "4T", "08", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "08", "40", + "MKK", "2.4G", "40M", "HT", "4T", "08", "40", + "FCC", "2.4G", "40M", "HT", "4T", "09", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "09", "40", + "MKK", "2.4G", "40M", "HT", "4T", "09", "40", + "FCC", "2.4G", "40M", "HT", "4T", "10", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "10", "40", + "MKK", "2.4G", "40M", "HT", "4T", "10", "40", + "FCC", "2.4G", "40M", "HT", "4T", "11", "46", + "ETSI", "2.4G", "40M", "HT", "4T", "11", "40", + "MKK", "2.4G", "40M", "HT", "4T", "11", "40", + "FCC", "2.4G", "40M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "12", "40", + "MKK", "2.4G", "40M", "HT", "4T", "12", "40", + "FCC", "2.4G", "40M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "13", "40", + "MKK", "2.4G", "40M", "HT", "4T", "13", "40", + "FCC", "2.4G", "40M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "14", "63", + "MKK", "2.4G", "40M", "HT", "4T", "14", "63", + "FCC", "5G", "20M", "OFDM", "1T", "36", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "36", "40", + "MKK", "5G", "20M", "OFDM", "1T", "36", "40", + "FCC", "5G", "20M", "OFDM", "1T", "40", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "40", "40", + "MKK", "5G", "20M", "OFDM", "1T", "40", "40", + "FCC", "5G", "20M", "OFDM", "1T", "44", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "44", "40", + "MKK", "5G", "20M", "OFDM", "1T", "44", "40", + "FCC", "5G", "20M", "OFDM", "1T", "48", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "48", "40", + "MKK", "5G", "20M", "OFDM", "1T", "48", "40", + "FCC", "5G", "20M", "OFDM", "1T", "52", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "52", "40", + "MKK", "5G", "20M", "OFDM", "1T", "52", "40", + "FCC", "5G", "20M", "OFDM", "1T", "56", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "56", "40", + "MKK", "5G", "20M", "OFDM", "1T", "56", "40", + "FCC", "5G", "20M", "OFDM", "1T", "60", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "60", "40", + "MKK", "5G", "20M", "OFDM", "1T", "60", "40", + "FCC", "5G", "20M", "OFDM", "1T", "64", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "64", "40", + "MKK", "5G", "20M", "OFDM", "1T", "64", "40", + "FCC", "5G", "20M", "OFDM", "1T", "100", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "100", "40", + "MKK", "5G", "20M", "OFDM", "1T", "100", "40", + "FCC", "5G", "20M", "OFDM", "1T", "104", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "104", "40", + "MKK", "5G", "20M", "OFDM", "1T", "104", "40", + "FCC", "5G", "20M", "OFDM", "1T", "108", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "108", "40", + "MKK", "5G", "20M", "OFDM", "1T", "108", "40", + "FCC", "5G", "20M", "OFDM", "1T", "112", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "112", "40", + "MKK", "5G", "20M", "OFDM", "1T", "112", "40", + "FCC", "5G", "20M", "OFDM", "1T", "116", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "116", "40", + "MKK", "5G", "20M", "OFDM", "1T", "116", "40", + "FCC", "5G", "20M", "OFDM", "1T", "120", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "120", "40", + "MKK", "5G", "20M", "OFDM", "1T", "120", "40", + "FCC", "5G", "20M", "OFDM", "1T", "124", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "124", "40", + "MKK", "5G", "20M", "OFDM", "1T", "124", "40", + "FCC", "5G", "20M", "OFDM", "1T", "128", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "128", "40", + "MKK", "5G", "20M", "OFDM", "1T", "128", "40", + "FCC", "5G", "20M", "OFDM", "1T", "132", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "132", "40", + "MKK", "5G", "20M", "OFDM", "1T", "132", "40", + "FCC", "5G", "20M", "OFDM", "1T", "136", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "136", "40", + "MKK", "5G", "20M", "OFDM", "1T", "136", "40", + "FCC", "5G", "20M", "OFDM", "1T", "140", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "140", "40", + "MKK", "5G", "20M", "OFDM", "1T", "140", "40", + "FCC", "5G", "20M", "OFDM", "1T", "149", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "149", "40", + "MKK", "5G", "20M", "OFDM", "1T", "149", "63", + "FCC", "5G", "20M", "OFDM", "1T", "153", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "153", "40", + "MKK", "5G", "20M", "OFDM", "1T", "153", "63", + "FCC", "5G", "20M", "OFDM", "1T", "157", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "157", "40", + "MKK", "5G", "20M", "OFDM", "1T", "157", "63", + "FCC", "5G", "20M", "OFDM", "1T", "161", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "161", "40", + "MKK", "5G", "20M", "OFDM", "1T", "161", "63", + "FCC", "5G", "20M", "OFDM", "1T", "165", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "165", "40", + "MKK", "5G", "20M", "OFDM", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "1T", "36", "46", + "ETSI", "5G", "20M", "HT", "1T", "36", "40", + "MKK", "5G", "20M", "HT", "1T", "36", "40", + "FCC", "5G", "20M", "HT", "1T", "40", "46", + "ETSI", "5G", "20M", "HT", "1T", "40", "40", + "MKK", "5G", "20M", "HT", "1T", "40", "40", + "FCC", "5G", "20M", "HT", "1T", "44", "46", + "ETSI", "5G", "20M", "HT", "1T", "44", "40", + "MKK", "5G", "20M", "HT", "1T", "44", "40", + "FCC", "5G", "20M", "HT", "1T", "48", "46", + "ETSI", "5G", "20M", "HT", "1T", "48", "40", + "MKK", "5G", "20M", "HT", "1T", "48", "40", + "FCC", "5G", "20M", "HT", "1T", "52", "46", + "ETSI", "5G", "20M", "HT", "1T", "52", "40", + "MKK", "5G", "20M", "HT", "1T", "52", "40", + "FCC", "5G", "20M", "HT", "1T", "56", "46", + "ETSI", "5G", "20M", "HT", "1T", "56", "40", + "MKK", "5G", "20M", "HT", "1T", "56", "40", + "FCC", "5G", "20M", "HT", "1T", "60", "46", + "ETSI", "5G", "20M", "HT", "1T", "60", "40", + "MKK", "5G", "20M", "HT", "1T", "60", "40", + "FCC", "5G", "20M", "HT", "1T", "64", "46", + "ETSI", "5G", "20M", "HT", "1T", "64", "40", + "MKK", "5G", "20M", "HT", "1T", "64", "40", + "FCC", "5G", "20M", "HT", "1T", "100", "46", + "ETSI", "5G", "20M", "HT", "1T", "100", "40", + "MKK", "5G", "20M", "HT", "1T", "100", "40", + "FCC", "5G", "20M", "HT", "1T", "104", "46", + "ETSI", "5G", "20M", "HT", "1T", "104", "40", + "MKK", "5G", "20M", "HT", "1T", "104", "40", + "FCC", "5G", "20M", "HT", "1T", "108", "46", + "ETSI", "5G", "20M", "HT", "1T", "108", "40", + "MKK", "5G", "20M", "HT", "1T", "108", "40", + "FCC", "5G", "20M", "HT", "1T", "112", "46", + "ETSI", "5G", "20M", "HT", "1T", "112", "40", + "MKK", "5G", "20M", "HT", "1T", "112", "40", + "FCC", "5G", "20M", "HT", "1T", "116", "46", + "ETSI", "5G", "20M", "HT", "1T", "116", "40", + "MKK", "5G", "20M", "HT", "1T", "116", "40", + "FCC", "5G", "20M", "HT", "1T", "120", "46", + "ETSI", "5G", "20M", "HT", "1T", "120", "40", + "MKK", "5G", "20M", "HT", "1T", "120", "40", + "FCC", "5G", "20M", "HT", "1T", "124", "46", + "ETSI", "5G", "20M", "HT", "1T", "124", "40", + "MKK", "5G", "20M", "HT", "1T", "124", "40", + "FCC", "5G", "20M", "HT", "1T", "128", "46", + "ETSI", "5G", "20M", "HT", "1T", "128", "40", + "MKK", "5G", "20M", "HT", "1T", "128", "40", + "FCC", "5G", "20M", "HT", "1T", "132", "46", + "ETSI", "5G", "20M", "HT", "1T", "132", "40", + "MKK", "5G", "20M", "HT", "1T", "132", "40", + "FCC", "5G", "20M", "HT", "1T", "136", "46", + "ETSI", "5G", "20M", "HT", "1T", "136", "40", + "MKK", "5G", "20M", "HT", "1T", "136", "40", + "FCC", "5G", "20M", "HT", "1T", "140", "46", + "ETSI", "5G", "20M", "HT", "1T", "140", "40", + "MKK", "5G", "20M", "HT", "1T", "140", "40", + "FCC", "5G", "20M", "HT", "1T", "149", "46", + "ETSI", "5G", "20M", "HT", "1T", "149", "40", + "MKK", "5G", "20M", "HT", "1T", "149", "63", + "FCC", "5G", "20M", "HT", "1T", "153", "46", + "ETSI", "5G", "20M", "HT", "1T", "153", "40", + "MKK", "5G", "20M", "HT", "1T", "153", "63", + "FCC", "5G", "20M", "HT", "1T", "157", "46", + "ETSI", "5G", "20M", "HT", "1T", "157", "40", + "MKK", "5G", "20M", "HT", "1T", "157", "63", + "FCC", "5G", "20M", "HT", "1T", "161", "46", + "ETSI", "5G", "20M", "HT", "1T", "161", "40", + "MKK", "5G", "20M", "HT", "1T", "161", "63", + "FCC", "5G", "20M", "HT", "1T", "165", "46", + "ETSI", "5G", "20M", "HT", "1T", "165", "40", + "MKK", "5G", "20M", "HT", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "2T", "36", "46", + "ETSI", "5G", "20M", "HT", "2T", "36", "40", + "MKK", "5G", "20M", "HT", "2T", "36", "40", + "FCC", "5G", "20M", "HT", "2T", "40", "46", + "ETSI", "5G", "20M", "HT", "2T", "40", "40", + "MKK", "5G", "20M", "HT", "2T", "40", "40", + "FCC", "5G", "20M", "HT", "2T", "44", "46", + "ETSI", "5G", "20M", "HT", "2T", "44", "40", + "MKK", "5G", "20M", "HT", "2T", "44", "40", + "FCC", "5G", "20M", "HT", "2T", "48", "46", + "ETSI", "5G", "20M", "HT", "2T", "48", "40", + "MKK", "5G", "20M", "HT", "2T", "48", "40", + "FCC", "5G", "20M", "HT", "2T", "52", "46", + "ETSI", "5G", "20M", "HT", "2T", "52", "40", + "MKK", "5G", "20M", "HT", "2T", "52", "40", + "FCC", "5G", "20M", "HT", "2T", "56", "46", + "ETSI", "5G", "20M", "HT", "2T", "56", "40", + "MKK", "5G", "20M", "HT", "2T", "56", "40", + "FCC", "5G", "20M", "HT", "2T", "60", "46", + "ETSI", "5G", "20M", "HT", "2T", "60", "40", + "MKK", "5G", "20M", "HT", "2T", "60", "40", + "FCC", "5G", "20M", "HT", "2T", "64", "46", + "ETSI", "5G", "20M", "HT", "2T", "64", "40", + "MKK", "5G", "20M", "HT", "2T", "64", "40", + "FCC", "5G", "20M", "HT", "2T", "100", "46", + "ETSI", "5G", "20M", "HT", "2T", "100", "40", + "MKK", "5G", "20M", "HT", "2T", "100", "40", + "FCC", "5G", "20M", "HT", "2T", "104", "46", + "ETSI", "5G", "20M", "HT", "2T", "104", "40", + "MKK", "5G", "20M", "HT", "2T", "104", "40", + "FCC", "5G", "20M", "HT", "2T", "108", "46", + "ETSI", "5G", "20M", "HT", "2T", "108", "40", + "MKK", "5G", "20M", "HT", "2T", "108", "40", + "FCC", "5G", "20M", "HT", "2T", "112", "46", + "ETSI", "5G", "20M", "HT", "2T", "112", "40", + "MKK", "5G", "20M", "HT", "2T", "112", "40", + "FCC", "5G", "20M", "HT", "2T", "116", "46", + "ETSI", "5G", "20M", "HT", "2T", "116", "40", + "MKK", "5G", "20M", "HT", "2T", "116", "40", + "FCC", "5G", "20M", "HT", "2T", "120", "46", + "ETSI", "5G", "20M", "HT", "2T", "120", "40", + "MKK", "5G", "20M", "HT", "2T", "120", "40", + "FCC", "5G", "20M", "HT", "2T", "124", "46", + "ETSI", "5G", "20M", "HT", "2T", "124", "40", + "MKK", "5G", "20M", "HT", "2T", "124", "40", + "FCC", "5G", "20M", "HT", "2T", "128", "46", + "ETSI", "5G", "20M", "HT", "2T", "128", "40", + "MKK", "5G", "20M", "HT", "2T", "128", "40", + "FCC", "5G", "20M", "HT", "2T", "132", "46", + "ETSI", "5G", "20M", "HT", "2T", "132", "40", + "MKK", "5G", "20M", "HT", "2T", "132", "40", + "FCC", "5G", "20M", "HT", "2T", "136", "46", + "ETSI", "5G", "20M", "HT", "2T", "136", "40", + "MKK", "5G", "20M", "HT", "2T", "136", "40", + "FCC", "5G", "20M", "HT", "2T", "140", "46", + "ETSI", "5G", "20M", "HT", "2T", "140", "40", + "MKK", "5G", "20M", "HT", "2T", "140", "40", + "FCC", "5G", "20M", "HT", "2T", "149", "46", + "ETSI", "5G", "20M", "HT", "2T", "149", "40", + "MKK", "5G", "20M", "HT", "2T", "149", "63", + "FCC", "5G", "20M", "HT", "2T", "153", "46", + "ETSI", "5G", "20M", "HT", "2T", "153", "40", + "MKK", "5G", "20M", "HT", "2T", "153", "63", + "FCC", "5G", "20M", "HT", "2T", "157", "46", + "ETSI", "5G", "20M", "HT", "2T", "157", "40", + "MKK", "5G", "20M", "HT", "2T", "157", "63", + "FCC", "5G", "20M", "HT", "2T", "161", "46", + "ETSI", "5G", "20M", "HT", "2T", "161", "40", + "MKK", "5G", "20M", "HT", "2T", "161", "63", + "FCC", "5G", "20M", "HT", "2T", "165", "46", + "ETSI", "5G", "20M", "HT", "2T", "165", "40", + "MKK", "5G", "20M", "HT", "2T", "165", "63", + "FCC", "5G", "20M", "HT", "3T", "36", "46", + "ETSI", "5G", "20M", "HT", "3T", "36", "40", + "MKK", "5G", "20M", "HT", "3T", "36", "40", + "FCC", "5G", "20M", "HT", "3T", "40", "46", + "ETSI", "5G", "20M", "HT", "3T", "40", "40", + "MKK", "5G", "20M", "HT", "3T", "40", "40", + "FCC", "5G", "20M", "HT", "3T", "44", "46", + "ETSI", "5G", "20M", "HT", "3T", "44", "40", + "MKK", "5G", "20M", "HT", "3T", "44", "40", + "FCC", "5G", "20M", "HT", "3T", "48", "46", + "ETSI", "5G", "20M", "HT", "3T", "48", "40", + "MKK", "5G", "20M", "HT", "3T", "48", "40", + "FCC", "5G", "20M", "HT", "3T", "52", "46", + "ETSI", "5G", "20M", "HT", "3T", "52", "40", + "MKK", "5G", "20M", "HT", "3T", "52", "40", + "FCC", "5G", "20M", "HT", "3T", "56", "46", + "ETSI", "5G", "20M", "HT", "3T", "56", "40", + "MKK", "5G", "20M", "HT", "3T", "56", "40", + "FCC", "5G", "20M", "HT", "3T", "60", "46", + "ETSI", "5G", "20M", "HT", "3T", "60", "40", + "MKK", "5G", "20M", "HT", "3T", "60", "40", + "FCC", "5G", "20M", "HT", "3T", "64", "46", + "ETSI", "5G", "20M", "HT", "3T", "64", "40", + "MKK", "5G", "20M", "HT", "3T", "64", "40", + "FCC", "5G", "20M", "HT", "3T", "100", "46", + "ETSI", "5G", "20M", "HT", "3T", "100", "40", + "MKK", "5G", "20M", "HT", "3T", "100", "40", + "FCC", "5G", "20M", "HT", "3T", "104", "46", + "ETSI", "5G", "20M", "HT", "3T", "104", "40", + "MKK", "5G", "20M", "HT", "3T", "104", "40", + "FCC", "5G", "20M", "HT", "3T", "108", "46", + "ETSI", "5G", "20M", "HT", "3T", "108", "40", + "MKK", "5G", "20M", "HT", "3T", "108", "40", + "FCC", "5G", "20M", "HT", "3T", "112", "46", + "ETSI", "5G", "20M", "HT", "3T", "112", "40", + "MKK", "5G", "20M", "HT", "3T", "112", "40", + "FCC", "5G", "20M", "HT", "3T", "116", "46", + "ETSI", "5G", "20M", "HT", "3T", "116", "40", + "MKK", "5G", "20M", "HT", "3T", "116", "40", + "FCC", "5G", "20M", "HT", "3T", "120", "46", + "ETSI", "5G", "20M", "HT", "3T", "120", "40", + "MKK", "5G", "20M", "HT", "3T", "120", "40", + "FCC", "5G", "20M", "HT", "3T", "124", "46", + "ETSI", "5G", "20M", "HT", "3T", "124", "40", + "MKK", "5G", "20M", "HT", "3T", "124", "40", + "FCC", "5G", "20M", "HT", "3T", "128", "46", + "ETSI", "5G", "20M", "HT", "3T", "128", "40", + "MKK", "5G", "20M", "HT", "3T", "128", "40", + "FCC", "5G", "20M", "HT", "3T", "132", "46", + "ETSI", "5G", "20M", "HT", "3T", "132", "40", + "MKK", "5G", "20M", "HT", "3T", "132", "40", + "FCC", "5G", "20M", "HT", "3T", "136", "46", + "ETSI", "5G", "20M", "HT", "3T", "136", "40", + "MKK", "5G", "20M", "HT", "3T", "136", "40", + "FCC", "5G", "20M", "HT", "3T", "140", "46", + "ETSI", "5G", "20M", "HT", "3T", "140", "40", + "MKK", "5G", "20M", "HT", "3T", "140", "40", + "FCC", "5G", "20M", "HT", "3T", "149", "46", + "ETSI", "5G", "20M", "HT", "3T", "149", "40", + "MKK", "5G", "20M", "HT", "3T", "149", "63", + "FCC", "5G", "20M", "HT", "3T", "153", "46", + "ETSI", "5G", "20M", "HT", "3T", "153", "40", + "MKK", "5G", "20M", "HT", "3T", "153", "63", + "FCC", "5G", "20M", "HT", "3T", "157", "46", + "ETSI", "5G", "20M", "HT", "3T", "157", "40", + "MKK", "5G", "20M", "HT", "3T", "157", "63", + "FCC", "5G", "20M", "HT", "3T", "161", "46", + "ETSI", "5G", "20M", "HT", "3T", "161", "40", + "MKK", "5G", "20M", "HT", "3T", "161", "63", + "FCC", "5G", "20M", "HT", "3T", "165", "46", + "ETSI", "5G", "20M", "HT", "3T", "165", "40", + "MKK", "5G", "20M", "HT", "3T", "165", "63", + "FCC", "5G", "20M", "HT", "4T", "36", "46", + "ETSI", "5G", "20M", "HT", "4T", "36", "40", + "MKK", "5G", "20M", "HT", "4T", "36", "40", + "FCC", "5G", "20M", "HT", "4T", "40", "46", + "ETSI", "5G", "20M", "HT", "4T", "40", "40", + "MKK", "5G", "20M", "HT", "4T", "40", "40", + "FCC", "5G", "20M", "HT", "4T", "44", "46", + "ETSI", "5G", "20M", "HT", "4T", "44", "40", + "MKK", "5G", "20M", "HT", "4T", "44", "40", + "FCC", "5G", "20M", "HT", "4T", "48", "46", + "ETSI", "5G", "20M", "HT", "4T", "48", "40", + "MKK", "5G", "20M", "HT", "4T", "48", "40", + "FCC", "5G", "20M", "HT", "4T", "52", "46", + "ETSI", "5G", "20M", "HT", "4T", "52", "40", + "MKK", "5G", "20M", "HT", "4T", "52", "40", + "FCC", "5G", "20M", "HT", "4T", "56", "46", + "ETSI", "5G", "20M", "HT", "4T", "56", "40", + "MKK", "5G", "20M", "HT", "4T", "56", "40", + "FCC", "5G", "20M", "HT", "4T", "60", "46", + "ETSI", "5G", "20M", "HT", "4T", "60", "40", + "MKK", "5G", "20M", "HT", "4T", "60", "40", + "FCC", "5G", "20M", "HT", "4T", "64", "46", + "ETSI", "5G", "20M", "HT", "4T", "64", "40", + "MKK", "5G", "20M", "HT", "4T", "64", "40", + "FCC", "5G", "20M", "HT", "4T", "100", "46", + "ETSI", "5G", "20M", "HT", "4T", "100", "40", + "MKK", "5G", "20M", "HT", "4T", "100", "40", + "FCC", "5G", "20M", "HT", "4T", "104", "46", + "ETSI", "5G", "20M", "HT", "4T", "104", "40", + "MKK", "5G", "20M", "HT", "4T", "104", "40", + "FCC", "5G", "20M", "HT", "4T", "108", "46", + "ETSI", "5G", "20M", "HT", "4T", "108", "40", + "MKK", "5G", "20M", "HT", "4T", "108", "40", + "FCC", "5G", "20M", "HT", "4T", "112", "46", + "ETSI", "5G", "20M", "HT", "4T", "112", "40", + "MKK", "5G", "20M", "HT", "4T", "112", "40", + "FCC", "5G", "20M", "HT", "4T", "116", "46", + "ETSI", "5G", "20M", "HT", "4T", "116", "40", + "MKK", "5G", "20M", "HT", "4T", "116", "40", + "FCC", "5G", "20M", "HT", "4T", "120", "46", + "ETSI", "5G", "20M", "HT", "4T", "120", "40", + "MKK", "5G", "20M", "HT", "4T", "120", "40", + "FCC", "5G", "20M", "HT", "4T", "124", "46", + "ETSI", "5G", "20M", "HT", "4T", "124", "40", + "MKK", "5G", "20M", "HT", "4T", "124", "40", + "FCC", "5G", "20M", "HT", "4T", "128", "46", + "ETSI", "5G", "20M", "HT", "4T", "128", "40", + "MKK", "5G", "20M", "HT", "4T", "128", "40", + "FCC", "5G", "20M", "HT", "4T", "132", "46", + "ETSI", "5G", "20M", "HT", "4T", "132", "40", + "MKK", "5G", "20M", "HT", "4T", "132", "40", + "FCC", "5G", "20M", "HT", "4T", "136", "46", + "ETSI", "5G", "20M", "HT", "4T", "136", "40", + "MKK", "5G", "20M", "HT", "4T", "136", "40", + "FCC", "5G", "20M", "HT", "4T", "140", "46", + "ETSI", "5G", "20M", "HT", "4T", "140", "40", + "MKK", "5G", "20M", "HT", "4T", "140", "40", + "FCC", "5G", "20M", "HT", "4T", "149", "46", + "ETSI", "5G", "20M", "HT", "4T", "149", "40", + "MKK", "5G", "20M", "HT", "4T", "149", "63", + "FCC", "5G", "20M", "HT", "4T", "153", "46", + "ETSI", "5G", "20M", "HT", "4T", "153", "40", + "MKK", "5G", "20M", "HT", "4T", "153", "63", + "FCC", "5G", "20M", "HT", "4T", "157", "46", + "ETSI", "5G", "20M", "HT", "4T", "157", "40", + "MKK", "5G", "20M", "HT", "4T", "157", "63", + "FCC", "5G", "20M", "HT", "4T", "161", "46", + "ETSI", "5G", "20M", "HT", "4T", "161", "40", + "MKK", "5G", "20M", "HT", "4T", "161", "63", + "FCC", "5G", "20M", "HT", "4T", "165", "46", + "ETSI", "5G", "20M", "HT", "4T", "165", "40", + "MKK", "5G", "20M", "HT", "4T", "165", "63", + "FCC", "5G", "40M", "HT", "1T", "38", "46", + "ETSI", "5G", "40M", "HT", "1T", "38", "40", + "MKK", "5G", "40M", "HT", "1T", "38", "40", + "FCC", "5G", "40M", "HT", "1T", "46", "46", + "ETSI", "5G", "40M", "HT", "1T", "46", "40", + "MKK", "5G", "40M", "HT", "1T", "46", "40", + "FCC", "5G", "40M", "HT", "1T", "54", "46", + "ETSI", "5G", "40M", "HT", "1T", "54", "40", + "MKK", "5G", "40M", "HT", "1T", "54", "40", + "FCC", "5G", "40M", "HT", "1T", "62", "46", + "ETSI", "5G", "40M", "HT", "1T", "62", "40", + "MKK", "5G", "40M", "HT", "1T", "62", "40", + "FCC", "5G", "40M", "HT", "1T", "102", "46", + "ETSI", "5G", "40M", "HT", "1T", "102", "40", + "MKK", "5G", "40M", "HT", "1T", "102", "40", + "FCC", "5G", "40M", "HT", "1T", "110", "46", + "ETSI", "5G", "40M", "HT", "1T", "110", "40", + "MKK", "5G", "40M", "HT", "1T", "110", "40", + "FCC", "5G", "40M", "HT", "1T", "118", "46", + "ETSI", "5G", "40M", "HT", "1T", "118", "40", + "MKK", "5G", "40M", "HT", "1T", "118", "40", + "FCC", "5G", "40M", "HT", "1T", "126", "46", + "ETSI", "5G", "40M", "HT", "1T", "126", "40", + "MKK", "5G", "40M", "HT", "1T", "126", "40", + "FCC", "5G", "40M", "HT", "1T", "134", "46", + "ETSI", "5G", "40M", "HT", "1T", "134", "40", + "MKK", "5G", "40M", "HT", "1T", "134", "40", + "FCC", "5G", "40M", "HT", "1T", "151", "46", + "ETSI", "5G", "40M", "HT", "1T", "151", "40", + "MKK", "5G", "40M", "HT", "1T", "151", "63", + "FCC", "5G", "40M", "HT", "1T", "159", "46", + "ETSI", "5G", "40M", "HT", "1T", "159", "40", + "MKK", "5G", "40M", "HT", "1T", "159", "63", + "FCC", "5G", "40M", "HT", "2T", "38", "46", + "ETSI", "5G", "40M", "HT", "2T", "38", "40", + "MKK", "5G", "40M", "HT", "2T", "38", "40", + "FCC", "5G", "40M", "HT", "2T", "46", "46", + "ETSI", "5G", "40M", "HT", "2T", "46", "40", + "MKK", "5G", "40M", "HT", "2T", "46", "40", + "FCC", "5G", "40M", "HT", "2T", "54", "46", + "ETSI", "5G", "40M", "HT", "2T", "54", "40", + "MKK", "5G", "40M", "HT", "2T", "54", "40", + "FCC", "5G", "40M", "HT", "2T", "62", "46", + "ETSI", "5G", "40M", "HT", "2T", "62", "40", + "MKK", "5G", "40M", "HT", "2T", "62", "40", + "FCC", "5G", "40M", "HT", "2T", "102", "46", + "ETSI", "5G", "40M", "HT", "2T", "102", "40", + "MKK", "5G", "40M", "HT", "2T", "102", "40", + "FCC", "5G", "40M", "HT", "2T", "110", "46", + "ETSI", "5G", "40M", "HT", "2T", "110", "40", + "MKK", "5G", "40M", "HT", "2T", "110", "40", + "FCC", "5G", "40M", "HT", "2T", "118", "46", + "ETSI", "5G", "40M", "HT", "2T", "118", "40", + "MKK", "5G", "40M", "HT", "2T", "118", "40", + "FCC", "5G", "40M", "HT", "2T", "126", "46", + "ETSI", "5G", "40M", "HT", "2T", "126", "40", + "MKK", "5G", "40M", "HT", "2T", "126", "40", + "FCC", "5G", "40M", "HT", "2T", "134", "46", + "ETSI", "5G", "40M", "HT", "2T", "134", "40", + "MKK", "5G", "40M", "HT", "2T", "134", "40", + "FCC", "5G", "40M", "HT", "2T", "151", "46", + "ETSI", "5G", "40M", "HT", "2T", "151", "40", + "MKK", "5G", "40M", "HT", "2T", "151", "63", + "FCC", "5G", "40M", "HT", "2T", "159", "46", + "ETSI", "5G", "40M", "HT", "2T", "159", "40", + "MKK", "5G", "40M", "HT", "2T", "159", "63", + "FCC", "5G", "40M", "HT", "3T", "38", "46", + "ETSI", "5G", "40M", "HT", "3T", "38", "40", + "MKK", "5G", "40M", "HT", "3T", "38", "40", + "FCC", "5G", "40M", "HT", "3T", "46", "46", + "ETSI", "5G", "40M", "HT", "3T", "46", "40", + "MKK", "5G", "40M", "HT", "3T", "46", "40", + "FCC", "5G", "40M", "HT", "3T", "54", "46", + "ETSI", "5G", "40M", "HT", "3T", "54", "40", + "MKK", "5G", "40M", "HT", "3T", "54", "40", + "FCC", "5G", "40M", "HT", "3T", "62", "46", + "ETSI", "5G", "40M", "HT", "3T", "62", "40", + "MKK", "5G", "40M", "HT", "3T", "62", "40", + "FCC", "5G", "40M", "HT", "3T", "102", "46", + "ETSI", "5G", "40M", "HT", "3T", "102", "40", + "MKK", "5G", "40M", "HT", "3T", "102", "40", + "FCC", "5G", "40M", "HT", "3T", "110", "46", + "ETSI", "5G", "40M", "HT", "3T", "110", "40", + "MKK", "5G", "40M", "HT", "3T", "110", "40", + "FCC", "5G", "40M", "HT", "3T", "118", "46", + "ETSI", "5G", "40M", "HT", "3T", "118", "40", + "MKK", "5G", "40M", "HT", "3T", "118", "40", + "FCC", "5G", "40M", "HT", "3T", "126", "46", + "ETSI", "5G", "40M", "HT", "3T", "126", "40", + "MKK", "5G", "40M", "HT", "3T", "126", "40", + "FCC", "5G", "40M", "HT", "3T", "134", "46", + "ETSI", "5G", "40M", "HT", "3T", "134", "40", + "MKK", "5G", "40M", "HT", "3T", "134", "40", + "FCC", "5G", "40M", "HT", "3T", "151", "46", + "ETSI", "5G", "40M", "HT", "3T", "151", "40", + "MKK", "5G", "40M", "HT", "3T", "151", "63", + "FCC", "5G", "40M", "HT", "3T", "159", "46", + "ETSI", "5G", "40M", "HT", "3T", "159", "40", + "MKK", "5G", "40M", "HT", "3T", "159", "63", + "FCC", "5G", "40M", "HT", "4T", "38", "46", + "ETSI", "5G", "40M", "HT", "4T", "38", "40", + "MKK", "5G", "40M", "HT", "4T", "38", "40", + "FCC", "5G", "40M", "HT", "4T", "46", "46", + "ETSI", "5G", "40M", "HT", "4T", "46", "40", + "MKK", "5G", "40M", "HT", "4T", "46", "40", + "FCC", "5G", "40M", "HT", "4T", "54", "46", + "ETSI", "5G", "40M", "HT", "4T", "54", "40", + "MKK", "5G", "40M", "HT", "4T", "54", "40", + "FCC", "5G", "40M", "HT", "4T", "62", "46", + "ETSI", "5G", "40M", "HT", "4T", "62", "40", + "MKK", "5G", "40M", "HT", "4T", "62", "40", + "FCC", "5G", "40M", "HT", "4T", "102", "46", + "ETSI", "5G", "40M", "HT", "4T", "102", "40", + "MKK", "5G", "40M", "HT", "4T", "102", "40", + "FCC", "5G", "40M", "HT", "4T", "110", "46", + "ETSI", "5G", "40M", "HT", "4T", "110", "40", + "MKK", "5G", "40M", "HT", "4T", "110", "40", + "FCC", "5G", "40M", "HT", "4T", "118", "46", + "ETSI", "5G", "40M", "HT", "4T", "118", "40", + "MKK", "5G", "40M", "HT", "4T", "118", "40", + "FCC", "5G", "40M", "HT", "4T", "126", "46", + "ETSI", "5G", "40M", "HT", "4T", "126", "40", + "MKK", "5G", "40M", "HT", "4T", "126", "40", + "FCC", "5G", "40M", "HT", "4T", "134", "46", + "ETSI", "5G", "40M", "HT", "4T", "134", "40", + "MKK", "5G", "40M", "HT", "4T", "134", "40", + "FCC", "5G", "40M", "HT", "4T", "151", "46", + "ETSI", "5G", "40M", "HT", "4T", "151", "40", + "MKK", "5G", "40M", "HT", "4T", "151", "63", + "FCC", "5G", "40M", "HT", "4T", "159", "46", + "ETSI", "5G", "40M", "HT", "4T", "159", "40", + "MKK", "5G", "40M", "HT", "4T", "159", "63", + "FCC", "5G", "80M", "VHT", "1T", "42", "46", + "ETSI", "5G", "80M", "VHT", "1T", "42", "40", + "MKK", "5G", "80M", "VHT", "1T", "42", "40", + "FCC", "5G", "80M", "VHT", "1T", "58", "46", + "ETSI", "5G", "80M", "VHT", "1T", "58", "40", + "MKK", "5G", "80M", "VHT", "1T", "58", "40", + "FCC", "5G", "80M", "VHT", "1T", "106", "46", + "ETSI", "5G", "80M", "VHT", "1T", "106", "40", + "MKK", "5G", "80M", "VHT", "1T", "106", "40", + "FCC", "5G", "80M", "VHT", "1T", "122", "46", + "ETSI", "5G", "80M", "VHT", "1T", "122", "40", + "MKK", "5G", "80M", "VHT", "1T", "122", "40", + "FCC", "5G", "80M", "VHT", "1T", "155", "46", + "ETSI", "5G", "80M", "VHT", "1T", "155", "40", + "MKK", "5G", "80M", "VHT", "1T", "155", "63", + "FCC", "5G", "80M", "VHT", "2T", "42", "46", + "ETSI", "5G", "80M", "VHT", "2T", "42", "40", + "MKK", "5G", "80M", "VHT", "2T", "42", "40", + "FCC", "5G", "80M", "VHT", "2T", "58", "46", + "ETSI", "5G", "80M", "VHT", "2T", "58", "40", + "MKK", "5G", "80M", "VHT", "2T", "58", "40", + "FCC", "5G", "80M", "VHT", "2T", "106", "46", + "ETSI", "5G", "80M", "VHT", "2T", "106", "40", + "MKK", "5G", "80M", "VHT", "2T", "106", "40", + "FCC", "5G", "80M", "VHT", "2T", "122", "46", + "ETSI", "5G", "80M", "VHT", "2T", "122", "40", + "MKK", "5G", "80M", "VHT", "2T", "122", "40", + "FCC", "5G", "80M", "VHT", "2T", "155", "46", + "ETSI", "5G", "80M", "VHT", "2T", "155", "40", + "MKK", "5G", "80M", "VHT", "2T", "155", "63", + "FCC", "5G", "80M", "VHT", "3T", "42", "46", + "ETSI", "5G", "80M", "VHT", "3T", "42", "40", + "MKK", "5G", "80M", "VHT", "3T", "42", "40", + "FCC", "5G", "80M", "VHT", "3T", "58", "46", + "ETSI", "5G", "80M", "VHT", "3T", "58", "40", + "MKK", "5G", "80M", "VHT", "3T", "58", "40", + "FCC", "5G", "80M", "VHT", "3T", "106", "46", + "ETSI", "5G", "80M", "VHT", "3T", "106", "40", + "MKK", "5G", "80M", "VHT", "3T", "106", "40", + "FCC", "5G", "80M", "VHT", "3T", "122", "46", + "ETSI", "5G", "80M", "VHT", "3T", "122", "40", + "MKK", "5G", "80M", "VHT", "3T", "122", "40", + "FCC", "5G", "80M", "VHT", "3T", "155", "46", + "ETSI", "5G", "80M", "VHT", "3T", "155", "40", + "MKK", "5G", "80M", "VHT", "3T", "155", "63", + "FCC", "5G", "80M", "VHT", "4T", "42", "46", + "ETSI", "5G", "80M", "VHT", "4T", "42", "40", + "MKK", "5G", "80M", "VHT", "4T", "42", "40", + "FCC", "5G", "80M", "VHT", "4T", "58", "46", + "ETSI", "5G", "80M", "VHT", "4T", "58", "40", + "MKK", "5G", "80M", "VHT", "4T", "58", "40", + "FCC", "5G", "80M", "VHT", "4T", "106", "46", + "ETSI", "5G", "80M", "VHT", "4T", "106", "40", + "MKK", "5G", "80M", "VHT", "4T", "106", "40", + "FCC", "5G", "80M", "VHT", "4T", "122", "46", + "ETSI", "5G", "80M", "VHT", "4T", "122", "40", + "MKK", "5G", "80M", "VHT", "4T", "122", "40", + "FCC", "5G", "80M", "VHT", "4T", "155", "46", + "ETSI", "5G", "80M", "VHT", "4T", "155", "40", + "MKK", "5G", "80M", "VHT", "4T", "155", "63" +}; +#endif + +void +odm_read_and_config_mp_8814a_txpwr_lmt_type5(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE5 + + u32 i = 0; +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type5) / sizeof(u8); + u8 *array = (u8 *)array_mp_8814a_txpwr_lmt_type5; +#else + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type5) / sizeof(u8 *); + u8 **array = (u8 **)array_mp_8814a_txpwr_lmt_type5; +#endif + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrLmt, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrLmt = array_len / 7; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + for (i = 0; i < array_len; i += 7) { +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u8 regulation = array[i]; + u8 band = array[i + 1]; + u8 bandwidth = array[i + 2]; + u8 rate = array[i + 3]; + u8 rf_path = array[i + 4]; + u8 chnl = array[i + 5]; + u8 val = array[i + 6]; +#else + u8 *regulation = array[i]; + u8 *band = array[i + 1]; + u8 *bandwidth = array[i + 2]; + u8 *rate = array[i + 3]; + u8 *rf_path = array[i + 4]; + u8 *chnl = array[i + 5]; + u8 *val = array[i + 6]; +#endif + + odm_config_bb_txpwr_lmt_8814a(dm, regulation, band, bandwidth, + rate, rf_path, chnl, val); +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrLmt[i / 7], 100, "\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\",", + regulation, band, bandwidth, rate, rf_path, chnl, val); +#endif + } + +#endif +} + +/****************************************************************************** + * txpwr_lmt_type6.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE6 +const char *array_mp_8814a_txpwr_lmt_type6[] = { + "FCC", "2.4G", "20M", "CCK", "1T", "01", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "01", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "01", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "02", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "02", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "02", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "03", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "03", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "03", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "04", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "04", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "04", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "05", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "05", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "05", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "06", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "06", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "06", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "07", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "07", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "07", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "08", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "08", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "08", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "09", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "09", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "09", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "10", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "10", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "10", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "11", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "11", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "11", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "12", "24", + "ETSI", "2.4G", "20M", "CCK", "1T", "12", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "12", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "13", "16", + "ETSI", "2.4G", "20M", "CCK", "1T", "13", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "13", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "14", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", + "MKK", "2.4G", "20M", "CCK", "1T", "14", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "01", "28", + "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "01", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "02", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "02", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "03", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "03", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "04", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "04", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "05", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "05", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "06", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "06", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "07", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "07", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "08", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "08", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "09", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "09", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "10", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "10", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "11", "28", + "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "11", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "12", "18", + "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "12", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "13", "8", + "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "13", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63", + "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "1T", "01", "26", + "ETSI", "2.4G", "20M", "HT", "1T", "01", "32", + "MKK", "2.4G", "20M", "HT", "1T", "01", "32", + "FCC", "2.4G", "20M", "HT", "1T", "02", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "02", "32", + "MKK", "2.4G", "20M", "HT", "1T", "02", "32", + "FCC", "2.4G", "20M", "HT", "1T", "03", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "03", "32", + "MKK", "2.4G", "20M", "HT", "1T", "03", "32", + "FCC", "2.4G", "20M", "HT", "1T", "04", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "04", "32", + "MKK", "2.4G", "20M", "HT", "1T", "04", "32", + "FCC", "2.4G", "20M", "HT", "1T", "05", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "05", "32", + "MKK", "2.4G", "20M", "HT", "1T", "05", "32", + "FCC", "2.4G", "20M", "HT", "1T", "06", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "06", "32", + "MKK", "2.4G", "20M", "HT", "1T", "06", "32", + "FCC", "2.4G", "20M", "HT", "1T", "07", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "07", "32", + "MKK", "2.4G", "20M", "HT", "1T", "07", "32", + "FCC", "2.4G", "20M", "HT", "1T", "08", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "08", "32", + "MKK", "2.4G", "20M", "HT", "1T", "08", "32", + "FCC", "2.4G", "20M", "HT", "1T", "09", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "09", "32", + "MKK", "2.4G", "20M", "HT", "1T", "09", "32", + "FCC", "2.4G", "20M", "HT", "1T", "10", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "10", "32", + "MKK", "2.4G", "20M", "HT", "1T", "10", "32", + "FCC", "2.4G", "20M", "HT", "1T", "11", "26", + "ETSI", "2.4G", "20M", "HT", "1T", "11", "32", + "MKK", "2.4G", "20M", "HT", "1T", "11", "32", + "FCC", "2.4G", "20M", "HT", "1T", "12", "16", + "ETSI", "2.4G", "20M", "HT", "1T", "12", "32", + "MKK", "2.4G", "20M", "HT", "1T", "12", "32", + "FCC", "2.4G", "20M", "HT", "1T", "13", "6", + "ETSI", "2.4G", "20M", "HT", "1T", "13", "32", + "MKK", "2.4G", "20M", "HT", "1T", "13", "32", + "FCC", "2.4G", "20M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "14", "63", + "MKK", "2.4G", "20M", "HT", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "2T", "01", "24", + "ETSI", "2.4G", "20M", "HT", "2T", "01", "30", + "MKK", "2.4G", "20M", "HT", "2T", "01", "30", + "FCC", "2.4G", "20M", "HT", "2T", "02", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "02", "30", + "MKK", "2.4G", "20M", "HT", "2T", "02", "30", + "FCC", "2.4G", "20M", "HT", "2T", "03", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "03", "30", + "MKK", "2.4G", "20M", "HT", "2T", "03", "30", + "FCC", "2.4G", "20M", "HT", "2T", "04", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "04", "30", + "MKK", "2.4G", "20M", "HT", "2T", "04", "30", + "FCC", "2.4G", "20M", "HT", "2T", "05", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "05", "30", + "MKK", "2.4G", "20M", "HT", "2T", "05", "30", + "FCC", "2.4G", "20M", "HT", "2T", "06", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "06", "30", + "MKK", "2.4G", "20M", "HT", "2T", "06", "30", + "FCC", "2.4G", "20M", "HT", "2T", "07", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "07", "30", + "MKK", "2.4G", "20M", "HT", "2T", "07", "30", + "FCC", "2.4G", "20M", "HT", "2T", "08", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "08", "30", + "MKK", "2.4G", "20M", "HT", "2T", "08", "30", + "FCC", "2.4G", "20M", "HT", "2T", "09", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "09", "30", + "MKK", "2.4G", "20M", "HT", "2T", "09", "30", + "FCC", "2.4G", "20M", "HT", "2T", "10", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "10", "30", + "MKK", "2.4G", "20M", "HT", "2T", "10", "30", + "FCC", "2.4G", "20M", "HT", "2T", "11", "24", + "ETSI", "2.4G", "20M", "HT", "2T", "11", "30", + "MKK", "2.4G", "20M", "HT", "2T", "11", "30", + "FCC", "2.4G", "20M", "HT", "2T", "12", "14", + "ETSI", "2.4G", "20M", "HT", "2T", "12", "30", + "MKK", "2.4G", "20M", "HT", "2T", "12", "30", + "FCC", "2.4G", "20M", "HT", "2T", "13", "4", + "ETSI", "2.4G", "20M", "HT", "2T", "13", "30", + "MKK", "2.4G", "20M", "HT", "2T", "13", "30", + "FCC", "2.4G", "20M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", + "MKK", "2.4G", "20M", "HT", "2T", "14", "63", + "FCC", "2.4G", "20M", "HT", "3T", "01", "22", + "ETSI", "2.4G", "20M", "HT", "3T", "01", "28", + "MKK", "2.4G", "20M", "HT", "3T", "01", "28", + "FCC", "2.4G", "20M", "HT", "3T", "02", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "02", "28", + "MKK", "2.4G", "20M", "HT", "3T", "02", "28", + "FCC", "2.4G", "20M", "HT", "3T", "03", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "03", "28", + "MKK", "2.4G", "20M", "HT", "3T", "03", "28", + "FCC", "2.4G", "20M", "HT", "3T", "04", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "04", "28", + "MKK", "2.4G", "20M", "HT", "3T", "04", "28", + "FCC", "2.4G", "20M", "HT", "3T", "05", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "05", "28", + "MKK", "2.4G", "20M", "HT", "3T", "05", "28", + "FCC", "2.4G", "20M", "HT", "3T", "06", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "06", "28", + "MKK", "2.4G", "20M", "HT", "3T", "06", "28", + "FCC", "2.4G", "20M", "HT", "3T", "07", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "07", "28", + "MKK", "2.4G", "20M", "HT", "3T", "07", "28", + "FCC", "2.4G", "20M", "HT", "3T", "08", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "08", "28", + "MKK", "2.4G", "20M", "HT", "3T", "08", "28", + "FCC", "2.4G", "20M", "HT", "3T", "09", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "09", "28", + "MKK", "2.4G", "20M", "HT", "3T", "09", "28", + "FCC", "2.4G", "20M", "HT", "3T", "10", "28", + "ETSI", "2.4G", "20M", "HT", "3T", "10", "28", + "MKK", "2.4G", "20M", "HT", "3T", "10", "28", + "FCC", "2.4G", "20M", "HT", "3T", "11", "22", + "ETSI", "2.4G", "20M", "HT", "3T", "11", "28", + "MKK", "2.4G", "20M", "HT", "3T", "11", "28", + "FCC", "2.4G", "20M", "HT", "3T", "12", "14", + "ETSI", "2.4G", "20M", "HT", "3T", "12", "28", + "MKK", "2.4G", "20M", "HT", "3T", "12", "28", + "FCC", "2.4G", "20M", "HT", "3T", "13", "4", + "ETSI", "2.4G", "20M", "HT", "3T", "13", "28", + "MKK", "2.4G", "20M", "HT", "3T", "13", "28", + "FCC", "2.4G", "20M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "14", "63", + "MKK", "2.4G", "20M", "HT", "3T", "14", "63", + "FCC", "2.4G", "20M", "HT", "4T", "01", "20", + "ETSI", "2.4G", "20M", "HT", "4T", "01", "26", + "MKK", "2.4G", "20M", "HT", "4T", "01", "26", + "FCC", "2.4G", "20M", "HT", "4T", "02", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "02", "26", + "MKK", "2.4G", "20M", "HT", "4T", "02", "26", + "FCC", "2.4G", "20M", "HT", "4T", "03", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "03", "26", + "MKK", "2.4G", "20M", "HT", "4T", "03", "26", + "FCC", "2.4G", "20M", "HT", "4T", "04", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "04", "26", + "MKK", "2.4G", "20M", "HT", "4T", "04", "26", + "FCC", "2.4G", "20M", "HT", "4T", "05", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "05", "26", + "MKK", "2.4G", "20M", "HT", "4T", "05", "26", + "FCC", "2.4G", "20M", "HT", "4T", "06", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "06", "26", + "MKK", "2.4G", "20M", "HT", "4T", "06", "26", + "FCC", "2.4G", "20M", "HT", "4T", "07", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "07", "26", + "MKK", "2.4G", "20M", "HT", "4T", "07", "26", + "FCC", "2.4G", "20M", "HT", "4T", "08", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "08", "26", + "MKK", "2.4G", "20M", "HT", "4T", "08", "26", + "FCC", "2.4G", "20M", "HT", "4T", "09", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "09", "26", + "MKK", "2.4G", "20M", "HT", "4T", "09", "26", + "FCC", "2.4G", "20M", "HT", "4T", "10", "26", + "ETSI", "2.4G", "20M", "HT", "4T", "10", "26", + "MKK", "2.4G", "20M", "HT", "4T", "10", "26", + "FCC", "2.4G", "20M", "HT", "4T", "11", "20", + "ETSI", "2.4G", "20M", "HT", "4T", "11", "26", + "MKK", "2.4G", "20M", "HT", "4T", "11", "26", + "FCC", "2.4G", "20M", "HT", "4T", "12", "14", + "ETSI", "2.4G", "20M", "HT", "4T", "12", "26", + "MKK", "2.4G", "20M", "HT", "4T", "12", "26", + "FCC", "2.4G", "20M", "HT", "4T", "13", "4", + "ETSI", "2.4G", "20M", "HT", "4T", "13", "26", + "MKK", "2.4G", "20M", "HT", "4T", "13", "26", + "FCC", "2.4G", "20M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "14", "63", + "MKK", "2.4G", "20M", "HT", "4T", "14", "63", + "FCC", "2.4G", "40M", "HT", "1T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "01", "63", + "MKK", "2.4G", "40M", "HT", "1T", "01", "63", + "FCC", "2.4G", "40M", "HT", "1T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "02", "63", + "MKK", "2.4G", "40M", "HT", "1T", "02", "63", + "FCC", "2.4G", "40M", "HT", "1T", "03", "26", + "ETSI", "2.4G", "40M", "HT", "1T", "03", "32", + "MKK", "2.4G", "40M", "HT", "1T", "03", "32", + "FCC", "2.4G", "40M", "HT", "1T", "04", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "04", "32", + "MKK", "2.4G", "40M", "HT", "1T", "04", "32", + "FCC", "2.4G", "40M", "HT", "1T", "05", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "05", "32", + "MKK", "2.4G", "40M", "HT", "1T", "05", "32", + "FCC", "2.4G", "40M", "HT", "1T", "06", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "06", "32", + "MKK", "2.4G", "40M", "HT", "1T", "06", "32", + "FCC", "2.4G", "40M", "HT", "1T", "07", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "07", "32", + "MKK", "2.4G", "40M", "HT", "1T", "07", "32", + "FCC", "2.4G", "40M", "HT", "1T", "08", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "08", "32", + "MKK", "2.4G", "40M", "HT", "1T", "08", "32", + "FCC", "2.4G", "40M", "HT", "1T", "09", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "09", "32", + "MKK", "2.4G", "40M", "HT", "1T", "09", "32", + "FCC", "2.4G", "40M", "HT", "1T", "10", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "10", "32", + "MKK", "2.4G", "40M", "HT", "1T", "10", "32", + "FCC", "2.4G", "40M", "HT", "1T", "11", "26", + "ETSI", "2.4G", "40M", "HT", "1T", "11", "32", + "MKK", "2.4G", "40M", "HT", "1T", "11", "32", + "FCC", "2.4G", "40M", "HT", "1T", "12", "16", + "ETSI", "2.4G", "40M", "HT", "1T", "12", "32", + "MKK", "2.4G", "40M", "HT", "1T", "12", "32", + "FCC", "2.4G", "40M", "HT", "1T", "13", "10", + "ETSI", "2.4G", "40M", "HT", "1T", "13", "32", + "MKK", "2.4G", "40M", "HT", "1T", "13", "32", + "FCC", "2.4G", "40M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "14", "63", + "MKK", "2.4G", "40M", "HT", "1T", "14", "63", + "FCC", "2.4G", "40M", "HT", "2T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", + "MKK", "2.4G", "40M", "HT", "2T", "01", "63", + "FCC", "2.4G", "40M", "HT", "2T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "02", "63", + "MKK", "2.4G", "40M", "HT", "2T", "02", "63", + "FCC", "2.4G", "40M", "HT", "2T", "03", "24", + "ETSI", "2.4G", "40M", "HT", "2T", "03", "30", + "MKK", "2.4G", "40M", "HT", "2T", "03", "30", + "FCC", "2.4G", "40M", "HT", "2T", "04", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "04", "30", + "MKK", "2.4G", "40M", "HT", "2T", "04", "30", + "FCC", "2.4G", "40M", "HT", "2T", "05", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "05", "30", + "MKK", "2.4G", "40M", "HT", "2T", "05", "30", + "FCC", "2.4G", "40M", "HT", "2T", "06", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "06", "30", + "MKK", "2.4G", "40M", "HT", "2T", "06", "30", + "FCC", "2.4G", "40M", "HT", "2T", "07", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "07", "30", + "MKK", "2.4G", "40M", "HT", "2T", "07", "30", + "FCC", "2.4G", "40M", "HT", "2T", "08", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "08", "30", + "MKK", "2.4G", "40M", "HT", "2T", "08", "30", + "FCC", "2.4G", "40M", "HT", "2T", "09", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "09", "30", + "MKK", "2.4G", "40M", "HT", "2T", "09", "30", + "FCC", "2.4G", "40M", "HT", "2T", "10", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "10", "30", + "MKK", "2.4G", "40M", "HT", "2T", "10", "30", + "FCC", "2.4G", "40M", "HT", "2T", "11", "24", + "ETSI", "2.4G", "40M", "HT", "2T", "11", "30", + "MKK", "2.4G", "40M", "HT", "2T", "11", "30", + "FCC", "2.4G", "40M", "HT", "2T", "12", "14", + "ETSI", "2.4G", "40M", "HT", "2T", "12", "30", + "MKK", "2.4G", "40M", "HT", "2T", "12", "30", + "FCC", "2.4G", "40M", "HT", "2T", "13", "8", + "ETSI", "2.4G", "40M", "HT", "2T", "13", "30", + "MKK", "2.4G", "40M", "HT", "2T", "13", "30", + "FCC", "2.4G", "40M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "14", "63", + "MKK", "2.4G", "40M", "HT", "2T", "14", "63", + "FCC", "2.4G", "40M", "HT", "3T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "01", "63", + "MKK", "2.4G", "40M", "HT", "3T", "01", "63", + "FCC", "2.4G", "40M", "HT", "3T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "02", "63", + "MKK", "2.4G", "40M", "HT", "3T", "02", "63", + "FCC", "2.4G", "40M", "HT", "3T", "03", "22", + "ETSI", "2.4G", "40M", "HT", "3T", "03", "28", + "MKK", "2.4G", "40M", "HT", "3T", "03", "28", + "FCC", "2.4G", "40M", "HT", "3T", "04", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "04", "28", + "MKK", "2.4G", "40M", "HT", "3T", "04", "28", + "FCC", "2.4G", "40M", "HT", "3T", "05", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "05", "28", + "MKK", "2.4G", "40M", "HT", "3T", "05", "28", + "FCC", "2.4G", "40M", "HT", "3T", "06", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "06", "28", + "MKK", "2.4G", "40M", "HT", "3T", "06", "28", + "FCC", "2.4G", "40M", "HT", "3T", "07", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "07", "28", + "MKK", "2.4G", "40M", "HT", "3T", "07", "28", + "FCC", "2.4G", "40M", "HT", "3T", "08", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "08", "28", + "MKK", "2.4G", "40M", "HT", "3T", "08", "28", + "FCC", "2.4G", "40M", "HT", "3T", "09", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "09", "28", + "MKK", "2.4G", "40M", "HT", "3T", "09", "28", + "FCC", "2.4G", "40M", "HT", "3T", "10", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "10", "28", + "MKK", "2.4G", "40M", "HT", "3T", "10", "28", + "FCC", "2.4G", "40M", "HT", "3T", "11", "22", + "ETSI", "2.4G", "40M", "HT", "3T", "11", "28", + "MKK", "2.4G", "40M", "HT", "3T", "11", "28", + "FCC", "2.4G", "40M", "HT", "3T", "12", "14", + "ETSI", "2.4G", "40M", "HT", "3T", "12", "28", + "MKK", "2.4G", "40M", "HT", "3T", "12", "28", + "FCC", "2.4G", "40M", "HT", "3T", "13", "8", + "ETSI", "2.4G", "40M", "HT", "3T", "13", "28", + "MKK", "2.4G", "40M", "HT", "3T", "13", "28", + "FCC", "2.4G", "40M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "14", "63", + "MKK", "2.4G", "40M", "HT", "3T", "14", "63", + "FCC", "2.4G", "40M", "HT", "4T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "01", "63", + "MKK", "2.4G", "40M", "HT", "4T", "01", "63", + "FCC", "2.4G", "40M", "HT", "4T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "02", "63", + "MKK", "2.4G", "40M", "HT", "4T", "02", "63", + "FCC", "2.4G", "40M", "HT", "4T", "03", "20", + "ETSI", "2.4G", "40M", "HT", "4T", "03", "26", + "MKK", "2.4G", "40M", "HT", "4T", "03", "26", + "FCC", "2.4G", "40M", "HT", "4T", "04", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "04", "26", + "MKK", "2.4G", "40M", "HT", "4T", "04", "26", + "FCC", "2.4G", "40M", "HT", "4T", "05", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "05", "26", + "MKK", "2.4G", "40M", "HT", "4T", "05", "26", + "FCC", "2.4G", "40M", "HT", "4T", "06", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "06", "26", + "MKK", "2.4G", "40M", "HT", "4T", "06", "26", + "FCC", "2.4G", "40M", "HT", "4T", "07", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "07", "26", + "MKK", "2.4G", "40M", "HT", "4T", "07", "26", + "FCC", "2.4G", "40M", "HT", "4T", "08", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "08", "26", + "MKK", "2.4G", "40M", "HT", "4T", "08", "26", + "FCC", "2.4G", "40M", "HT", "4T", "09", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "09", "26", + "MKK", "2.4G", "40M", "HT", "4T", "09", "26", + "FCC", "2.4G", "40M", "HT", "4T", "10", "26", + "ETSI", "2.4G", "40M", "HT", "4T", "10", "26", + "MKK", "2.4G", "40M", "HT", "4T", "10", "26", + "FCC", "2.4G", "40M", "HT", "4T", "11", "20", + "ETSI", "2.4G", "40M", "HT", "4T", "11", "26", + "MKK", "2.4G", "40M", "HT", "4T", "11", "26", + "FCC", "2.4G", "40M", "HT", "4T", "12", "14", + "ETSI", "2.4G", "40M", "HT", "4T", "12", "26", + "MKK", "2.4G", "40M", "HT", "4T", "12", "26", + "FCC", "2.4G", "40M", "HT", "4T", "13", "8", + "ETSI", "2.4G", "40M", "HT", "4T", "13", "26", + "MKK", "2.4G", "40M", "HT", "4T", "13", "26", + "FCC", "2.4G", "40M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "14", "63", + "MKK", "2.4G", "40M", "HT", "4T", "14", "63", + "FCC", "5G", "20M", "OFDM", "1T", "36", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "36", "32", + "MKK", "5G", "20M", "OFDM", "1T", "36", "32", + "FCC", "5G", "20M", "OFDM", "1T", "40", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "40", "32", + "MKK", "5G", "20M", "OFDM", "1T", "40", "32", + "FCC", "5G", "20M", "OFDM", "1T", "44", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "44", "32", + "MKK", "5G", "20M", "OFDM", "1T", "44", "32", + "FCC", "5G", "20M", "OFDM", "1T", "48", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "48", "32", + "MKK", "5G", "20M", "OFDM", "1T", "48", "32", + "FCC", "5G", "20M", "OFDM", "1T", "52", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "52", "32", + "MKK", "5G", "20M", "OFDM", "1T", "52", "32", + "FCC", "5G", "20M", "OFDM", "1T", "56", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "56", "32", + "MKK", "5G", "20M", "OFDM", "1T", "56", "32", + "FCC", "5G", "20M", "OFDM", "1T", "60", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "60", "32", + "MKK", "5G", "20M", "OFDM", "1T", "60", "32", + "FCC", "5G", "20M", "OFDM", "1T", "64", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "64", "32", + "MKK", "5G", "20M", "OFDM", "1T", "64", "32", + "FCC", "5G", "20M", "OFDM", "1T", "100", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "100", "32", + "MKK", "5G", "20M", "OFDM", "1T", "100", "32", + "FCC", "5G", "20M", "OFDM", "1T", "104", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "104", "32", + "MKK", "5G", "20M", "OFDM", "1T", "104", "32", + "FCC", "5G", "20M", "OFDM", "1T", "108", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "108", "32", + "MKK", "5G", "20M", "OFDM", "1T", "108", "32", + "FCC", "5G", "20M", "OFDM", "1T", "112", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "112", "32", + "MKK", "5G", "20M", "OFDM", "1T", "112", "32", + "FCC", "5G", "20M", "OFDM", "1T", "116", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "116", "32", + "MKK", "5G", "20M", "OFDM", "1T", "116", "32", + "FCC", "5G", "20M", "OFDM", "1T", "120", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "120", "32", + "MKK", "5G", "20M", "OFDM", "1T", "120", "32", + "FCC", "5G", "20M", "OFDM", "1T", "124", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "124", "32", + "MKK", "5G", "20M", "OFDM", "1T", "124", "32", + "FCC", "5G", "20M", "OFDM", "1T", "128", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "128", "32", + "MKK", "5G", "20M", "OFDM", "1T", "128", "32", + "FCC", "5G", "20M", "OFDM", "1T", "132", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "132", "32", + "MKK", "5G", "20M", "OFDM", "1T", "132", "32", + "FCC", "5G", "20M", "OFDM", "1T", "136", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "136", "32", + "MKK", "5G", "20M", "OFDM", "1T", "136", "32", + "FCC", "5G", "20M", "OFDM", "1T", "140", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "140", "32", + "MKK", "5G", "20M", "OFDM", "1T", "140", "32", + "FCC", "5G", "20M", "OFDM", "1T", "149", "28", + "ETSI", "5G", "20M", "OFDM", "1T", "149", "32", + "MKK", "5G", "20M", "OFDM", "1T", "149", "63", + "FCC", "5G", "20M", "OFDM", "1T", "153", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "153", "32", + "MKK", "5G", "20M", "OFDM", "1T", "153", "63", + "FCC", "5G", "20M", "OFDM", "1T", "157", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "157", "32", + "MKK", "5G", "20M", "OFDM", "1T", "157", "63", + "FCC", "5G", "20M", "OFDM", "1T", "161", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "161", "32", + "MKK", "5G", "20M", "OFDM", "1T", "161", "63", + "FCC", "5G", "20M", "OFDM", "1T", "165", "32", + "ETSI", "5G", "20M", "OFDM", "1T", "165", "32", + "MKK", "5G", "20M", "OFDM", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "1T", "36", "26", + "ETSI", "5G", "20M", "HT", "1T", "36", "32", + "MKK", "5G", "20M", "HT", "1T", "36", "32", + "FCC", "5G", "20M", "HT", "1T", "40", "32", + "ETSI", "5G", "20M", "HT", "1T", "40", "32", + "MKK", "5G", "20M", "HT", "1T", "40", "32", + "FCC", "5G", "20M", "HT", "1T", "44", "32", + "ETSI", "5G", "20M", "HT", "1T", "44", "32", + "MKK", "5G", "20M", "HT", "1T", "44", "32", + "FCC", "5G", "20M", "HT", "1T", "48", "32", + "ETSI", "5G", "20M", "HT", "1T", "48", "32", + "MKK", "5G", "20M", "HT", "1T", "48", "32", + "FCC", "5G", "20M", "HT", "1T", "52", "32", + "ETSI", "5G", "20M", "HT", "1T", "52", "32", + "MKK", "5G", "20M", "HT", "1T", "52", "32", + "FCC", "5G", "20M", "HT", "1T", "56", "32", + "ETSI", "5G", "20M", "HT", "1T", "56", "32", + "MKK", "5G", "20M", "HT", "1T", "56", "32", + "FCC", "5G", "20M", "HT", "1T", "60", "32", + "ETSI", "5G", "20M", "HT", "1T", "60", "32", + "MKK", "5G", "20M", "HT", "1T", "60", "32", + "FCC", "5G", "20M", "HT", "1T", "64", "26", + "ETSI", "5G", "20M", "HT", "1T", "64", "32", + "MKK", "5G", "20M", "HT", "1T", "64", "32", + "FCC", "5G", "20M", "HT", "1T", "100", "26", + "ETSI", "5G", "20M", "HT", "1T", "100", "32", + "MKK", "5G", "20M", "HT", "1T", "100", "32", + "FCC", "5G", "20M", "HT", "1T", "104", "32", + "ETSI", "5G", "20M", "HT", "1T", "104", "32", + "MKK", "5G", "20M", "HT", "1T", "104", "32", + "FCC", "5G", "20M", "HT", "1T", "108", "32", + "ETSI", "5G", "20M", "HT", "1T", "108", "32", + "MKK", "5G", "20M", "HT", "1T", "108", "32", + "FCC", "5G", "20M", "HT", "1T", "112", "32", + "ETSI", "5G", "20M", "HT", "1T", "112", "32", + "MKK", "5G", "20M", "HT", "1T", "112", "32", + "FCC", "5G", "20M", "HT", "1T", "116", "32", + "ETSI", "5G", "20M", "HT", "1T", "116", "32", + "MKK", "5G", "20M", "HT", "1T", "116", "32", + "FCC", "5G", "20M", "HT", "1T", "120", "32", + "ETSI", "5G", "20M", "HT", "1T", "120", "32", + "MKK", "5G", "20M", "HT", "1T", "120", "32", + "FCC", "5G", "20M", "HT", "1T", "124", "32", + "ETSI", "5G", "20M", "HT", "1T", "124", "32", + "MKK", "5G", "20M", "HT", "1T", "124", "32", + "FCC", "5G", "20M", "HT", "1T", "128", "32", + "ETSI", "5G", "20M", "HT", "1T", "128", "32", + "MKK", "5G", "20M", "HT", "1T", "128", "32", + "FCC", "5G", "20M", "HT", "1T", "132", "32", + "ETSI", "5G", "20M", "HT", "1T", "132", "32", + "MKK", "5G", "20M", "HT", "1T", "132", "32", + "FCC", "5G", "20M", "HT", "1T", "136", "32", + "ETSI", "5G", "20M", "HT", "1T", "136", "32", + "MKK", "5G", "20M", "HT", "1T", "136", "32", + "FCC", "5G", "20M", "HT", "1T", "140", "26", + "ETSI", "5G", "20M", "HT", "1T", "140", "32", + "MKK", "5G", "20M", "HT", "1T", "140", "32", + "FCC", "5G", "20M", "HT", "1T", "149", "26", + "ETSI", "5G", "20M", "HT", "1T", "149", "32", + "MKK", "5G", "20M", "HT", "1T", "149", "63", + "FCC", "5G", "20M", "HT", "1T", "153", "32", + "ETSI", "5G", "20M", "HT", "1T", "153", "32", + "MKK", "5G", "20M", "HT", "1T", "153", "63", + "FCC", "5G", "20M", "HT", "1T", "157", "32", + "ETSI", "5G", "20M", "HT", "1T", "157", "32", + "MKK", "5G", "20M", "HT", "1T", "157", "63", + "FCC", "5G", "20M", "HT", "1T", "161", "32", + "ETSI", "5G", "20M", "HT", "1T", "161", "32", + "MKK", "5G", "20M", "HT", "1T", "161", "63", + "FCC", "5G", "20M", "HT", "1T", "165", "32", + "ETSI", "5G", "20M", "HT", "1T", "165", "32", + "MKK", "5G", "20M", "HT", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "2T", "36", "24", + "ETSI", "5G", "20M", "HT", "2T", "36", "28", + "MKK", "5G", "20M", "HT", "2T", "36", "28", + "FCC", "5G", "20M", "HT", "2T", "40", "28", + "ETSI", "5G", "20M", "HT", "2T", "40", "28", + "MKK", "5G", "20M", "HT", "2T", "40", "28", + "FCC", "5G", "20M", "HT", "2T", "44", "28", + "ETSI", "5G", "20M", "HT", "2T", "44", "28", + "MKK", "5G", "20M", "HT", "2T", "44", "28", + "FCC", "5G", "20M", "HT", "2T", "48", "28", + "ETSI", "5G", "20M", "HT", "2T", "48", "28", + "MKK", "5G", "20M", "HT", "2T", "48", "28", + "FCC", "5G", "20M", "HT", "2T", "52", "28", + "ETSI", "5G", "20M", "HT", "2T", "52", "28", + "MKK", "5G", "20M", "HT", "2T", "52", "28", + "FCC", "5G", "20M", "HT", "2T", "56", "28", + "ETSI", "5G", "20M", "HT", "2T", "56", "28", + "MKK", "5G", "20M", "HT", "2T", "56", "28", + "FCC", "5G", "20M", "HT", "2T", "60", "28", + "ETSI", "5G", "20M", "HT", "2T", "60", "28", + "MKK", "5G", "20M", "HT", "2T", "60", "28", + "FCC", "5G", "20M", "HT", "2T", "64", "24", + "ETSI", "5G", "20M", "HT", "2T", "64", "28", + "MKK", "5G", "20M", "HT", "2T", "64", "28", + "FCC", "5G", "20M", "HT", "2T", "100", "24", + "ETSI", "5G", "20M", "HT", "2T", "100", "28", + "MKK", "5G", "20M", "HT", "2T", "100", "28", + "FCC", "5G", "20M", "HT", "2T", "104", "28", + "ETSI", "5G", "20M", "HT", "2T", "104", "28", + "MKK", "5G", "20M", "HT", "2T", "104", "28", + "FCC", "5G", "20M", "HT", "2T", "108", "28", + "ETSI", "5G", "20M", "HT", "2T", "108", "28", + "MKK", "5G", "20M", "HT", "2T", "108", "28", + "FCC", "5G", "20M", "HT", "2T", "112", "28", + "ETSI", "5G", "20M", "HT", "2T", "112", "28", + "MKK", "5G", "20M", "HT", "2T", "112", "28", + "FCC", "5G", "20M", "HT", "2T", "116", "28", + "ETSI", "5G", "20M", "HT", "2T", "116", "28", + "MKK", "5G", "20M", "HT", "2T", "116", "28", + "FCC", "5G", "20M", "HT", "2T", "120", "28", + "ETSI", "5G", "20M", "HT", "2T", "120", "28", + "MKK", "5G", "20M", "HT", "2T", "120", "28", + "FCC", "5G", "20M", "HT", "2T", "124", "28", + "ETSI", "5G", "20M", "HT", "2T", "124", "28", + "MKK", "5G", "20M", "HT", "2T", "124", "28", + "FCC", "5G", "20M", "HT", "2T", "128", "28", + "ETSI", "5G", "20M", "HT", "2T", "128", "28", + "MKK", "5G", "20M", "HT", "2T", "128", "28", + "FCC", "5G", "20M", "HT", "2T", "132", "28", + "ETSI", "5G", "20M", "HT", "2T", "132", "28", + "MKK", "5G", "20M", "HT", "2T", "132", "28", + "FCC", "5G", "20M", "HT", "2T", "136", "28", + "ETSI", "5G", "20M", "HT", "2T", "136", "28", + "MKK", "5G", "20M", "HT", "2T", "136", "28", + "FCC", "5G", "20M", "HT", "2T", "140", "24", + "ETSI", "5G", "20M", "HT", "2T", "140", "28", + "MKK", "5G", "20M", "HT", "2T", "140", "28", + "FCC", "5G", "20M", "HT", "2T", "149", "24", + "ETSI", "5G", "20M", "HT", "2T", "149", "28", + "MKK", "5G", "20M", "HT", "2T", "149", "63", + "FCC", "5G", "20M", "HT", "2T", "153", "28", + "ETSI", "5G", "20M", "HT", "2T", "153", "28", + "MKK", "5G", "20M", "HT", "2T", "153", "63", + "FCC", "5G", "20M", "HT", "2T", "157", "28", + "ETSI", "5G", "20M", "HT", "2T", "157", "28", + "MKK", "5G", "20M", "HT", "2T", "157", "63", + "FCC", "5G", "20M", "HT", "2T", "161", "28", + "ETSI", "5G", "20M", "HT", "2T", "161", "28", + "MKK", "5G", "20M", "HT", "2T", "161", "63", + "FCC", "5G", "20M", "HT", "2T", "165", "28", + "ETSI", "5G", "20M", "HT", "2T", "165", "28", + "MKK", "5G", "20M", "HT", "2T", "165", "63", + "FCC", "5G", "20M", "HT", "3T", "36", "22", + "ETSI", "5G", "20M", "HT", "3T", "36", "26", + "MKK", "5G", "20M", "HT", "3T", "36", "26", + "FCC", "5G", "20M", "HT", "3T", "40", "26", + "ETSI", "5G", "20M", "HT", "3T", "40", "26", + "MKK", "5G", "20M", "HT", "3T", "40", "26", + "FCC", "5G", "20M", "HT", "3T", "44", "26", + "ETSI", "5G", "20M", "HT", "3T", "44", "26", + "MKK", "5G", "20M", "HT", "3T", "44", "26", + "FCC", "5G", "20M", "HT", "3T", "48", "26", + "ETSI", "5G", "20M", "HT", "3T", "48", "26", + "MKK", "5G", "20M", "HT", "3T", "48", "26", + "FCC", "5G", "20M", "HT", "3T", "52", "26", + "ETSI", "5G", "20M", "HT", "3T", "52", "26", + "MKK", "5G", "20M", "HT", "3T", "52", "26", + "FCC", "5G", "20M", "HT", "3T", "56", "26", + "ETSI", "5G", "20M", "HT", "3T", "56", "26", + "MKK", "5G", "20M", "HT", "3T", "56", "26", + "FCC", "5G", "20M", "HT", "3T", "60", "26", + "ETSI", "5G", "20M", "HT", "3T", "60", "26", + "MKK", "5G", "20M", "HT", "3T", "60", "26", + "FCC", "5G", "20M", "HT", "3T", "64", "22", + "ETSI", "5G", "20M", "HT", "3T", "64", "26", + "MKK", "5G", "20M", "HT", "3T", "64", "26", + "FCC", "5G", "20M", "HT", "3T", "100", "22", + "ETSI", "5G", "20M", "HT", "3T", "100", "26", + "MKK", "5G", "20M", "HT", "3T", "100", "26", + "FCC", "5G", "20M", "HT", "3T", "104", "26", + "ETSI", "5G", "20M", "HT", "3T", "104", "26", + "MKK", "5G", "20M", "HT", "3T", "104", "26", + "FCC", "5G", "20M", "HT", "3T", "108", "26", + "ETSI", "5G", "20M", "HT", "3T", "108", "26", + "MKK", "5G", "20M", "HT", "3T", "108", "26", + "FCC", "5G", "20M", "HT", "3T", "112", "26", + "ETSI", "5G", "20M", "HT", "3T", "112", "26", + "MKK", "5G", "20M", "HT", "3T", "112", "26", + "FCC", "5G", "20M", "HT", "3T", "116", "26", + "ETSI", "5G", "20M", "HT", "3T", "116", "26", + "MKK", "5G", "20M", "HT", "3T", "116", "26", + "FCC", "5G", "20M", "HT", "3T", "120", "26", + "ETSI", "5G", "20M", "HT", "3T", "120", "26", + "MKK", "5G", "20M", "HT", "3T", "120", "26", + "FCC", "5G", "20M", "HT", "3T", "124", "26", + "ETSI", "5G", "20M", "HT", "3T", "124", "26", + "MKK", "5G", "20M", "HT", "3T", "124", "26", + "FCC", "5G", "20M", "HT", "3T", "128", "26", + "ETSI", "5G", "20M", "HT", "3T", "128", "26", + "MKK", "5G", "20M", "HT", "3T", "128", "26", + "FCC", "5G", "20M", "HT", "3T", "132", "26", + "ETSI", "5G", "20M", "HT", "3T", "132", "26", + "MKK", "5G", "20M", "HT", "3T", "132", "26", + "FCC", "5G", "20M", "HT", "3T", "136", "26", + "ETSI", "5G", "20M", "HT", "3T", "136", "26", + "MKK", "5G", "20M", "HT", "3T", "136", "26", + "FCC", "5G", "20M", "HT", "3T", "140", "22", + "ETSI", "5G", "20M", "HT", "3T", "140", "26", + "MKK", "5G", "20M", "HT", "3T", "140", "26", + "FCC", "5G", "20M", "HT", "3T", "149", "22", + "ETSI", "5G", "20M", "HT", "3T", "149", "26", + "MKK", "5G", "20M", "HT", "3T", "149", "63", + "FCC", "5G", "20M", "HT", "3T", "153", "26", + "ETSI", "5G", "20M", "HT", "3T", "153", "26", + "MKK", "5G", "20M", "HT", "3T", "153", "63", + "FCC", "5G", "20M", "HT", "3T", "157", "26", + "ETSI", "5G", "20M", "HT", "3T", "157", "26", + "MKK", "5G", "20M", "HT", "3T", "157", "63", + "FCC", "5G", "20M", "HT", "3T", "161", "26", + "ETSI", "5G", "20M", "HT", "3T", "161", "26", + "MKK", "5G", "20M", "HT", "3T", "161", "63", + "FCC", "5G", "20M", "HT", "3T", "165", "26", + "ETSI", "5G", "20M", "HT", "3T", "165", "26", + "MKK", "5G", "20M", "HT", "3T", "165", "63", + "FCC", "5G", "20M", "HT", "4T", "36", "20", + "ETSI", "5G", "20M", "HT", "4T", "36", "24", + "MKK", "5G", "20M", "HT", "4T", "36", "24", + "FCC", "5G", "20M", "HT", "4T", "40", "24", + "ETSI", "5G", "20M", "HT", "4T", "40", "24", + "MKK", "5G", "20M", "HT", "4T", "40", "24", + "FCC", "5G", "20M", "HT", "4T", "44", "24", + "ETSI", "5G", "20M", "HT", "4T", "44", "24", + "MKK", "5G", "20M", "HT", "4T", "44", "24", + "FCC", "5G", "20M", "HT", "4T", "48", "24", + "ETSI", "5G", "20M", "HT", "4T", "48", "24", + "MKK", "5G", "20M", "HT", "4T", "48", "24", + "FCC", "5G", "20M", "HT", "4T", "52", "24", + "ETSI", "5G", "20M", "HT", "4T", "52", "24", + "MKK", "5G", "20M", "HT", "4T", "52", "24", + "FCC", "5G", "20M", "HT", "4T", "56", "24", + "ETSI", "5G", "20M", "HT", "4T", "56", "24", + "MKK", "5G", "20M", "HT", "4T", "56", "24", + "FCC", "5G", "20M", "HT", "4T", "60", "24", + "ETSI", "5G", "20M", "HT", "4T", "60", "24", + "MKK", "5G", "20M", "HT", "4T", "60", "24", + "FCC", "5G", "20M", "HT", "4T", "64", "20", + "ETSI", "5G", "20M", "HT", "4T", "64", "24", + "MKK", "5G", "20M", "HT", "4T", "64", "24", + "FCC", "5G", "20M", "HT", "4T", "100", "20", + "ETSI", "5G", "20M", "HT", "4T", "100", "24", + "MKK", "5G", "20M", "HT", "4T", "100", "24", + "FCC", "5G", "20M", "HT", "4T", "104", "24", + "ETSI", "5G", "20M", "HT", "4T", "104", "24", + "MKK", "5G", "20M", "HT", "4T", "104", "24", + "FCC", "5G", "20M", "HT", "4T", "108", "24", + "ETSI", "5G", "20M", "HT", "4T", "108", "24", + "MKK", "5G", "20M", "HT", "4T", "108", "24", + "FCC", "5G", "20M", "HT", "4T", "112", "24", + "ETSI", "5G", "20M", "HT", "4T", "112", "24", + "MKK", "5G", "20M", "HT", "4T", "112", "24", + "FCC", "5G", "20M", "HT", "4T", "116", "24", + "ETSI", "5G", "20M", "HT", "4T", "116", "24", + "MKK", "5G", "20M", "HT", "4T", "116", "24", + "FCC", "5G", "20M", "HT", "4T", "120", "24", + "ETSI", "5G", "20M", "HT", "4T", "120", "24", + "MKK", "5G", "20M", "HT", "4T", "120", "24", + "FCC", "5G", "20M", "HT", "4T", "124", "24", + "ETSI", "5G", "20M", "HT", "4T", "124", "24", + "MKK", "5G", "20M", "HT", "4T", "124", "24", + "FCC", "5G", "20M", "HT", "4T", "128", "24", + "ETSI", "5G", "20M", "HT", "4T", "128", "24", + "MKK", "5G", "20M", "HT", "4T", "128", "24", + "FCC", "5G", "20M", "HT", "4T", "132", "24", + "ETSI", "5G", "20M", "HT", "4T", "132", "24", + "MKK", "5G", "20M", "HT", "4T", "132", "24", + "FCC", "5G", "20M", "HT", "4T", "136", "24", + "ETSI", "5G", "20M", "HT", "4T", "136", "24", + "MKK", "5G", "20M", "HT", "4T", "136", "24", + "FCC", "5G", "20M", "HT", "4T", "140", "20", + "ETSI", "5G", "20M", "HT", "4T", "140", "24", + "MKK", "5G", "20M", "HT", "4T", "140", "24", + "FCC", "5G", "20M", "HT", "4T", "149", "20", + "ETSI", "5G", "20M", "HT", "4T", "149", "24", + "MKK", "5G", "20M", "HT", "4T", "149", "63", + "FCC", "5G", "20M", "HT", "4T", "153", "24", + "ETSI", "5G", "20M", "HT", "4T", "153", "24", + "MKK", "5G", "20M", "HT", "4T", "153", "63", + "FCC", "5G", "20M", "HT", "4T", "157", "24", + "ETSI", "5G", "20M", "HT", "4T", "157", "24", + "MKK", "5G", "20M", "HT", "4T", "157", "63", + "FCC", "5G", "20M", "HT", "4T", "161", "24", + "ETSI", "5G", "20M", "HT", "4T", "161", "24", + "MKK", "5G", "20M", "HT", "4T", "161", "63", + "FCC", "5G", "20M", "HT", "4T", "165", "24", + "ETSI", "5G", "20M", "HT", "4T", "165", "24", + "MKK", "5G", "20M", "HT", "4T", "165", "63", + "FCC", "5G", "40M", "HT", "1T", "38", "26", + "ETSI", "5G", "40M", "HT", "1T", "38", "32", + "MKK", "5G", "40M", "HT", "1T", "38", "32", + "FCC", "5G", "40M", "HT", "1T", "46", "32", + "ETSI", "5G", "40M", "HT", "1T", "46", "32", + "MKK", "5G", "40M", "HT", "1T", "46", "32", + "FCC", "5G", "40M", "HT", "1T", "54", "32", + "ETSI", "5G", "40M", "HT", "1T", "54", "32", + "MKK", "5G", "40M", "HT", "1T", "54", "32", + "FCC", "5G", "40M", "HT", "1T", "62", "26", + "ETSI", "5G", "40M", "HT", "1T", "62", "32", + "MKK", "5G", "40M", "HT", "1T", "62", "32", + "FCC", "5G", "40M", "HT", "1T", "102", "26", + "ETSI", "5G", "40M", "HT", "1T", "102", "32", + "MKK", "5G", "40M", "HT", "1T", "102", "32", + "FCC", "5G", "40M", "HT", "1T", "110", "32", + "ETSI", "5G", "40M", "HT", "1T", "110", "32", + "MKK", "5G", "40M", "HT", "1T", "110", "32", + "FCC", "5G", "40M", "HT", "1T", "118", "32", + "ETSI", "5G", "40M", "HT", "1T", "118", "32", + "MKK", "5G", "40M", "HT", "1T", "118", "32", + "FCC", "5G", "40M", "HT", "1T", "126", "32", + "ETSI", "5G", "40M", "HT", "1T", "126", "32", + "MKK", "5G", "40M", "HT", "1T", "126", "32", + "FCC", "5G", "40M", "HT", "1T", "134", "32", + "ETSI", "5G", "40M", "HT", "1T", "134", "32", + "MKK", "5G", "40M", "HT", "1T", "134", "32", + "FCC", "5G", "40M", "HT", "1T", "151", "26", + "ETSI", "5G", "40M", "HT", "1T", "151", "32", + "MKK", "5G", "40M", "HT", "1T", "151", "63", + "FCC", "5G", "40M", "HT", "1T", "159", "32", + "ETSI", "5G", "40M", "HT", "1T", "159", "32", + "MKK", "5G", "40M", "HT", "1T", "159", "63", + "FCC", "5G", "40M", "HT", "2T", "38", "24", + "ETSI", "5G", "40M", "HT", "2T", "38", "28", + "MKK", "5G", "40M", "HT", "2T", "38", "28", + "FCC", "5G", "40M", "HT", "2T", "46", "28", + "ETSI", "5G", "40M", "HT", "2T", "46", "28", + "MKK", "5G", "40M", "HT", "2T", "46", "28", + "FCC", "5G", "40M", "HT", "2T", "54", "28", + "ETSI", "5G", "40M", "HT", "2T", "54", "28", + "MKK", "5G", "40M", "HT", "2T", "54", "28", + "FCC", "5G", "40M", "HT", "2T", "62", "24", + "ETSI", "5G", "40M", "HT", "2T", "62", "28", + "MKK", "5G", "40M", "HT", "2T", "62", "28", + "FCC", "5G", "40M", "HT", "2T", "102", "24", + "ETSI", "5G", "40M", "HT", "2T", "102", "28", + "MKK", "5G", "40M", "HT", "2T", "102", "28", + "FCC", "5G", "40M", "HT", "2T", "110", "28", + "ETSI", "5G", "40M", "HT", "2T", "110", "28", + "MKK", "5G", "40M", "HT", "2T", "110", "28", + "FCC", "5G", "40M", "HT", "2T", "118", "28", + "ETSI", "5G", "40M", "HT", "2T", "118", "28", + "MKK", "5G", "40M", "HT", "2T", "118", "28", + "FCC", "5G", "40M", "HT", "2T", "126", "28", + "ETSI", "5G", "40M", "HT", "2T", "126", "28", + "MKK", "5G", "40M", "HT", "2T", "126", "28", + "FCC", "5G", "40M", "HT", "2T", "134", "28", + "ETSI", "5G", "40M", "HT", "2T", "134", "28", + "MKK", "5G", "40M", "HT", "2T", "134", "28", + "FCC", "5G", "40M", "HT", "2T", "151", "24", + "ETSI", "5G", "40M", "HT", "2T", "151", "28", + "MKK", "5G", "40M", "HT", "2T", "151", "63", + "FCC", "5G", "40M", "HT", "2T", "159", "28", + "ETSI", "5G", "40M", "HT", "2T", "159", "28", + "MKK", "5G", "40M", "HT", "2T", "159", "63", + "FCC", "5G", "40M", "HT", "3T", "38", "20", + "ETSI", "5G", "40M", "HT", "3T", "38", "26", + "MKK", "5G", "40M", "HT", "3T", "38", "26", + "FCC", "5G", "40M", "HT", "3T", "46", "26", + "ETSI", "5G", "40M", "HT", "3T", "46", "26", + "MKK", "5G", "40M", "HT", "3T", "46", "26", + "FCC", "5G", "40M", "HT", "3T", "54", "26", + "ETSI", "5G", "40M", "HT", "3T", "54", "26", + "MKK", "5G", "40M", "HT", "3T", "54", "26", + "FCC", "5G", "40M", "HT", "3T", "62", "20", + "ETSI", "5G", "40M", "HT", "3T", "62", "26", + "MKK", "5G", "40M", "HT", "3T", "62", "26", + "FCC", "5G", "40M", "HT", "3T", "102", "20", + "ETSI", "5G", "40M", "HT", "3T", "102", "26", + "MKK", "5G", "40M", "HT", "3T", "102", "26", + "FCC", "5G", "40M", "HT", "3T", "110", "26", + "ETSI", "5G", "40M", "HT", "3T", "110", "26", + "MKK", "5G", "40M", "HT", "3T", "110", "26", + "FCC", "5G", "40M", "HT", "3T", "118", "26", + "ETSI", "5G", "40M", "HT", "3T", "118", "26", + "MKK", "5G", "40M", "HT", "3T", "118", "26", + "FCC", "5G", "40M", "HT", "3T", "126", "26", + "ETSI", "5G", "40M", "HT", "3T", "126", "26", + "MKK", "5G", "40M", "HT", "3T", "126", "26", + "FCC", "5G", "40M", "HT", "3T", "134", "26", + "ETSI", "5G", "40M", "HT", "3T", "134", "26", + "MKK", "5G", "40M", "HT", "3T", "134", "26", + "FCC", "5G", "40M", "HT", "3T", "151", "20", + "ETSI", "5G", "40M", "HT", "3T", "151", "26", + "MKK", "5G", "40M", "HT", "3T", "151", "63", + "FCC", "5G", "40M", "HT", "3T", "159", "26", + "ETSI", "5G", "40M", "HT", "3T", "159", "26", + "MKK", "5G", "40M", "HT", "3T", "159", "63", + "FCC", "5G", "40M", "HT", "4T", "38", "18", + "ETSI", "5G", "40M", "HT", "4T", "38", "24", + "MKK", "5G", "40M", "HT", "4T", "38", "24", + "FCC", "5G", "40M", "HT", "4T", "46", "24", + "ETSI", "5G", "40M", "HT", "4T", "46", "24", + "MKK", "5G", "40M", "HT", "4T", "46", "24", + "FCC", "5G", "40M", "HT", "4T", "54", "24", + "ETSI", "5G", "40M", "HT", "4T", "54", "24", + "MKK", "5G", "40M", "HT", "4T", "54", "24", + "FCC", "5G", "40M", "HT", "4T", "62", "18", + "ETSI", "5G", "40M", "HT", "4T", "62", "24", + "MKK", "5G", "40M", "HT", "4T", "62", "24", + "FCC", "5G", "40M", "HT", "4T", "102", "18", + "ETSI", "5G", "40M", "HT", "4T", "102", "24", + "MKK", "5G", "40M", "HT", "4T", "102", "24", + "FCC", "5G", "40M", "HT", "4T", "110", "24", + "ETSI", "5G", "40M", "HT", "4T", "110", "24", + "MKK", "5G", "40M", "HT", "4T", "110", "24", + "FCC", "5G", "40M", "HT", "4T", "118", "24", + "ETSI", "5G", "40M", "HT", "4T", "118", "24", + "MKK", "5G", "40M", "HT", "4T", "118", "24", + "FCC", "5G", "40M", "HT", "4T", "126", "24", + "ETSI", "5G", "40M", "HT", "4T", "126", "24", + "MKK", "5G", "40M", "HT", "4T", "126", "24", + "FCC", "5G", "40M", "HT", "4T", "134", "24", + "ETSI", "5G", "40M", "HT", "4T", "134", "24", + "MKK", "5G", "40M", "HT", "4T", "134", "24", + "FCC", "5G", "40M", "HT", "4T", "151", "18", + "ETSI", "5G", "40M", "HT", "4T", "151", "24", + "MKK", "5G", "40M", "HT", "4T", "151", "63", + "FCC", "5G", "40M", "HT", "4T", "159", "24", + "ETSI", "5G", "40M", "HT", "4T", "159", "24", + "MKK", "5G", "40M", "HT", "4T", "159", "63", + "FCC", "5G", "80M", "VHT", "1T", "42", "22", + "ETSI", "5G", "80M", "VHT", "1T", "42", "30", + "MKK", "5G", "80M", "VHT", "1T", "42", "30", + "FCC", "5G", "80M", "VHT", "1T", "58", "22", + "ETSI", "5G", "80M", "VHT", "1T", "58", "30", + "MKK", "5G", "80M", "VHT", "1T", "58", "30", + "FCC", "5G", "80M", "VHT", "1T", "106", "22", + "ETSI", "5G", "80M", "VHT", "1T", "106", "30", + "MKK", "5G", "80M", "VHT", "1T", "106", "30", + "FCC", "5G", "80M", "VHT", "1T", "122", "30", + "ETSI", "5G", "80M", "VHT", "1T", "122", "30", + "MKK", "5G", "80M", "VHT", "1T", "122", "30", + "FCC", "5G", "80M", "VHT", "1T", "155", "22", + "ETSI", "5G", "80M", "VHT", "1T", "155", "30", + "MKK", "5G", "80M", "VHT", "1T", "155", "63", + "FCC", "5G", "80M", "VHT", "2T", "42", "20", + "ETSI", "5G", "80M", "VHT", "2T", "42", "28", + "MKK", "5G", "80M", "VHT", "2T", "42", "28", + "FCC", "5G", "80M", "VHT", "2T", "58", "20", + "ETSI", "5G", "80M", "VHT", "2T", "58", "28", + "MKK", "5G", "80M", "VHT", "2T", "58", "28", + "FCC", "5G", "80M", "VHT", "2T", "106", "20", + "ETSI", "5G", "80M", "VHT", "2T", "106", "28", + "MKK", "5G", "80M", "VHT", "2T", "106", "28", + "FCC", "5G", "80M", "VHT", "2T", "122", "28", + "ETSI", "5G", "80M", "VHT", "2T", "122", "28", + "MKK", "5G", "80M", "VHT", "2T", "122", "28", + "FCC", "5G", "80M", "VHT", "2T", "155", "20", + "ETSI", "5G", "80M", "VHT", "2T", "155", "28", + "MKK", "5G", "80M", "VHT", "2T", "155", "63", + "FCC", "5G", "80M", "VHT", "3T", "42", "18", + "ETSI", "5G", "80M", "VHT", "3T", "42", "26", + "MKK", "5G", "80M", "VHT", "3T", "42", "26", + "FCC", "5G", "80M", "VHT", "3T", "58", "18", + "ETSI", "5G", "80M", "VHT", "3T", "58", "26", + "MKK", "5G", "80M", "VHT", "3T", "58", "26", + "FCC", "5G", "80M", "VHT", "3T", "106", "18", + "ETSI", "5G", "80M", "VHT", "3T", "106", "26", + "MKK", "5G", "80M", "VHT", "3T", "106", "26", + "FCC", "5G", "80M", "VHT", "3T", "122", "26", + "ETSI", "5G", "80M", "VHT", "3T", "122", "26", + "MKK", "5G", "80M", "VHT", "3T", "122", "26", + "FCC", "5G", "80M", "VHT", "3T", "155", "18", + "ETSI", "5G", "80M", "VHT", "3T", "155", "26", + "MKK", "5G", "80M", "VHT", "3T", "155", "63", + "FCC", "5G", "80M", "VHT", "4T", "42", "16", + "ETSI", "5G", "80M", "VHT", "4T", "42", "24", + "MKK", "5G", "80M", "VHT", "4T", "42", "24", + "FCC", "5G", "80M", "VHT", "4T", "58", "16", + "ETSI", "5G", "80M", "VHT", "4T", "58", "24", + "MKK", "5G", "80M", "VHT", "4T", "58", "24", + "FCC", "5G", "80M", "VHT", "4T", "106", "16", + "ETSI", "5G", "80M", "VHT", "4T", "106", "24", + "MKK", "5G", "80M", "VHT", "4T", "106", "24", + "FCC", "5G", "80M", "VHT", "4T", "122", "24", + "ETSI", "5G", "80M", "VHT", "4T", "122", "24", + "MKK", "5G", "80M", "VHT", "4T", "122", "24", + "FCC", "5G", "80M", "VHT", "4T", "155", "16", + "ETSI", "5G", "80M", "VHT", "4T", "155", "24", + "MKK", "5G", "80M", "VHT", "4T", "155", "63" +}; +#endif + +void +odm_read_and_config_mp_8814a_txpwr_lmt_type6(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE6 + + u32 i = 0; +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type6) / sizeof(u8); + u8 *array = (u8 *)array_mp_8814a_txpwr_lmt_type6; +#else + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type6) / sizeof(u8 *); + u8 **array = (u8 **)array_mp_8814a_txpwr_lmt_type6; +#endif + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrLmt, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrLmt = array_len / 7; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + for (i = 0; i < array_len; i += 7) { +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u8 regulation = array[i]; + u8 band = array[i + 1]; + u8 bandwidth = array[i + 2]; + u8 rate = array[i + 3]; + u8 rf_path = array[i + 4]; + u8 chnl = array[i + 5]; + u8 val = array[i + 6]; +#else + u8 *regulation = array[i]; + u8 *band = array[i + 1]; + u8 *bandwidth = array[i + 2]; + u8 *rate = array[i + 3]; + u8 *rf_path = array[i + 4]; + u8 *chnl = array[i + 5]; + u8 *val = array[i + 6]; +#endif + + odm_config_bb_txpwr_lmt_8814a(dm, regulation, band, bandwidth, + rate, rf_path, chnl, val); +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrLmt[i / 7], 100, "\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\",", + regulation, band, bandwidth, rate, rf_path, chnl, val); +#endif + } + +#endif +} + +/****************************************************************************** + * txpwr_lmt_type7.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE7 +const char *array_mp_8814a_txpwr_lmt_type7[] = { + "FCC", "2.4G", "20M", "CCK", "1T", "01", "44", + "ETSI", "2.4G", "20M", "CCK", "1T", "01", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "01", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "02", "52", + "ETSI", "2.4G", "20M", "CCK", "1T", "02", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "02", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "03", "52", + "ETSI", "2.4G", "20M", "CCK", "1T", "03", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "03", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "04", "52", + "ETSI", "2.4G", "20M", "CCK", "1T", "04", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "04", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "05", "52", + "ETSI", "2.4G", "20M", "CCK", "1T", "05", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "05", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "06", "52", + "ETSI", "2.4G", "20M", "CCK", "1T", "06", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "06", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "07", "52", + "ETSI", "2.4G", "20M", "CCK", "1T", "07", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "07", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "08", "52", + "ETSI", "2.4G", "20M", "CCK", "1T", "08", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "08", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "09", "52", + "ETSI", "2.4G", "20M", "CCK", "1T", "09", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "09", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "10", "52", + "ETSI", "2.4G", "20M", "CCK", "1T", "10", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "10", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "11", "44", + "ETSI", "2.4G", "20M", "CCK", "1T", "11", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "11", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "12", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "12", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "12", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "13", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "13", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "13", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "14", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", + "MKK", "2.4G", "20M", "CCK", "1T", "14", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "01", "38", + "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "01", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "02", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "02", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "03", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "03", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "04", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "04", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "05", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "05", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "06", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "06", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "07", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "07", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "08", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "08", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "09", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "09", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "10", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "10", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "11", "38", + "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "11", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "12", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "12", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "13", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "13", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63", + "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "1T", "01", "34", + "ETSI", "2.4G", "20M", "HT", "1T", "01", "32", + "MKK", "2.4G", "20M", "HT", "1T", "01", "32", + "FCC", "2.4G", "20M", "HT", "1T", "02", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "02", "32", + "MKK", "2.4G", "20M", "HT", "1T", "02", "32", + "FCC", "2.4G", "20M", "HT", "1T", "03", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "03", "32", + "MKK", "2.4G", "20M", "HT", "1T", "03", "32", + "FCC", "2.4G", "20M", "HT", "1T", "04", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "04", "32", + "MKK", "2.4G", "20M", "HT", "1T", "04", "32", + "FCC", "2.4G", "20M", "HT", "1T", "05", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "05", "32", + "MKK", "2.4G", "20M", "HT", "1T", "05", "32", + "FCC", "2.4G", "20M", "HT", "1T", "06", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "06", "32", + "MKK", "2.4G", "20M", "HT", "1T", "06", "32", + "FCC", "2.4G", "20M", "HT", "1T", "07", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "07", "32", + "MKK", "2.4G", "20M", "HT", "1T", "07", "32", + "FCC", "2.4G", "20M", "HT", "1T", "08", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "08", "32", + "MKK", "2.4G", "20M", "HT", "1T", "08", "32", + "FCC", "2.4G", "20M", "HT", "1T", "09", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "09", "32", + "MKK", "2.4G", "20M", "HT", "1T", "09", "32", + "FCC", "2.4G", "20M", "HT", "1T", "10", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "10", "32", + "MKK", "2.4G", "20M", "HT", "1T", "10", "32", + "FCC", "2.4G", "20M", "HT", "1T", "11", "34", + "ETSI", "2.4G", "20M", "HT", "1T", "11", "32", + "MKK", "2.4G", "20M", "HT", "1T", "11", "32", + "FCC", "2.4G", "20M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "12", "32", + "MKK", "2.4G", "20M", "HT", "1T", "12", "32", + "FCC", "2.4G", "20M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "13", "32", + "MKK", "2.4G", "20M", "HT", "1T", "13", "32", + "FCC", "2.4G", "20M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "14", "63", + "MKK", "2.4G", "20M", "HT", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "2T", "01", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "01", "30", + "MKK", "2.4G", "20M", "HT", "2T", "01", "30", + "FCC", "2.4G", "20M", "HT", "2T", "02", "44", + "ETSI", "2.4G", "20M", "HT", "2T", "02", "30", + "MKK", "2.4G", "20M", "HT", "2T", "02", "30", + "FCC", "2.4G", "20M", "HT", "2T", "03", "44", + "ETSI", "2.4G", "20M", "HT", "2T", "03", "30", + "MKK", "2.4G", "20M", "HT", "2T", "03", "30", + "FCC", "2.4G", "20M", "HT", "2T", "04", "44", + "ETSI", "2.4G", "20M", "HT", "2T", "04", "30", + "MKK", "2.4G", "20M", "HT", "2T", "04", "30", + "FCC", "2.4G", "20M", "HT", "2T", "05", "44", + "ETSI", "2.4G", "20M", "HT", "2T", "05", "30", + "MKK", "2.4G", "20M", "HT", "2T", "05", "30", + "FCC", "2.4G", "20M", "HT", "2T", "06", "44", + "ETSI", "2.4G", "20M", "HT", "2T", "06", "30", + "MKK", "2.4G", "20M", "HT", "2T", "06", "30", + "FCC", "2.4G", "20M", "HT", "2T", "07", "44", + "ETSI", "2.4G", "20M", "HT", "2T", "07", "30", + "MKK", "2.4G", "20M", "HT", "2T", "07", "30", + "FCC", "2.4G", "20M", "HT", "2T", "08", "44", + "ETSI", "2.4G", "20M", "HT", "2T", "08", "30", + "MKK", "2.4G", "20M", "HT", "2T", "08", "30", + "FCC", "2.4G", "20M", "HT", "2T", "09", "44", + "ETSI", "2.4G", "20M", "HT", "2T", "09", "30", + "MKK", "2.4G", "20M", "HT", "2T", "09", "30", + "FCC", "2.4G", "20M", "HT", "2T", "10", "44", + "ETSI", "2.4G", "20M", "HT", "2T", "10", "30", + "MKK", "2.4G", "20M", "HT", "2T", "10", "30", + "FCC", "2.4G", "20M", "HT", "2T", "11", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "11", "30", + "MKK", "2.4G", "20M", "HT", "2T", "11", "30", + "FCC", "2.4G", "20M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "12", "30", + "MKK", "2.4G", "20M", "HT", "2T", "12", "30", + "FCC", "2.4G", "20M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "13", "30", + "MKK", "2.4G", "20M", "HT", "2T", "13", "30", + "FCC", "2.4G", "20M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", + "MKK", "2.4G", "20M", "HT", "2T", "14", "63", + "FCC", "2.4G", "20M", "HT", "3T", "01", "30", + "ETSI", "2.4G", "20M", "HT", "3T", "01", "28", + "MKK", "2.4G", "20M", "HT", "3T", "01", "28", + "FCC", "2.4G", "20M", "HT", "3T", "02", "42", + "ETSI", "2.4G", "20M", "HT", "3T", "02", "28", + "MKK", "2.4G", "20M", "HT", "3T", "02", "28", + "FCC", "2.4G", "20M", "HT", "3T", "03", "42", + "ETSI", "2.4G", "20M", "HT", "3T", "03", "28", + "MKK", "2.4G", "20M", "HT", "3T", "03", "28", + "FCC", "2.4G", "20M", "HT", "3T", "04", "42", + "ETSI", "2.4G", "20M", "HT", "3T", "04", "28", + "MKK", "2.4G", "20M", "HT", "3T", "04", "28", + "FCC", "2.4G", "20M", "HT", "3T", "05", "42", + "ETSI", "2.4G", "20M", "HT", "3T", "05", "28", + "MKK", "2.4G", "20M", "HT", "3T", "05", "28", + "FCC", "2.4G", "20M", "HT", "3T", "06", "42", + "ETSI", "2.4G", "20M", "HT", "3T", "06", "28", + "MKK", "2.4G", "20M", "HT", "3T", "06", "28", + "FCC", "2.4G", "20M", "HT", "3T", "07", "42", + "ETSI", "2.4G", "20M", "HT", "3T", "07", "28", + "MKK", "2.4G", "20M", "HT", "3T", "07", "28", + "FCC", "2.4G", "20M", "HT", "3T", "08", "42", + "ETSI", "2.4G", "20M", "HT", "3T", "08", "28", + "MKK", "2.4G", "20M", "HT", "3T", "08", "28", + "FCC", "2.4G", "20M", "HT", "3T", "09", "42", + "ETSI", "2.4G", "20M", "HT", "3T", "09", "28", + "MKK", "2.4G", "20M", "HT", "3T", "09", "28", + "FCC", "2.4G", "20M", "HT", "3T", "10", "42", + "ETSI", "2.4G", "20M", "HT", "3T", "10", "28", + "MKK", "2.4G", "20M", "HT", "3T", "10", "28", + "FCC", "2.4G", "20M", "HT", "3T", "11", "30", + "ETSI", "2.4G", "20M", "HT", "3T", "11", "28", + "MKK", "2.4G", "20M", "HT", "3T", "11", "28", + "FCC", "2.4G", "20M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "12", "28", + "MKK", "2.4G", "20M", "HT", "3T", "12", "28", + "FCC", "2.4G", "20M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "13", "28", + "MKK", "2.4G", "20M", "HT", "3T", "13", "28", + "FCC", "2.4G", "20M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "14", "63", + "MKK", "2.4G", "20M", "HT", "3T", "14", "63", + "FCC", "2.4G", "20M", "HT", "4T", "01", "28", + "ETSI", "2.4G", "20M", "HT", "4T", "01", "26", + "MKK", "2.4G", "20M", "HT", "4T", "01", "26", + "FCC", "2.4G", "20M", "HT", "4T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "02", "26", + "MKK", "2.4G", "20M", "HT", "4T", "02", "26", + "FCC", "2.4G", "20M", "HT", "4T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "03", "26", + "MKK", "2.4G", "20M", "HT", "4T", "03", "26", + "FCC", "2.4G", "20M", "HT", "4T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "04", "26", + "MKK", "2.4G", "20M", "HT", "4T", "04", "26", + "FCC", "2.4G", "20M", "HT", "4T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "05", "26", + "MKK", "2.4G", "20M", "HT", "4T", "05", "26", + "FCC", "2.4G", "20M", "HT", "4T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "06", "26", + "MKK", "2.4G", "20M", "HT", "4T", "06", "26", + "FCC", "2.4G", "20M", "HT", "4T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "07", "26", + "MKK", "2.4G", "20M", "HT", "4T", "07", "26", + "FCC", "2.4G", "20M", "HT", "4T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "08", "26", + "MKK", "2.4G", "20M", "HT", "4T", "08", "26", + "FCC", "2.4G", "20M", "HT", "4T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "09", "26", + "MKK", "2.4G", "20M", "HT", "4T", "09", "26", + "FCC", "2.4G", "20M", "HT", "4T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "10", "26", + "MKK", "2.4G", "20M", "HT", "4T", "10", "26", + "FCC", "2.4G", "20M", "HT", "4T", "11", "28", + "ETSI", "2.4G", "20M", "HT", "4T", "11", "26", + "MKK", "2.4G", "20M", "HT", "4T", "11", "26", + "FCC", "2.4G", "20M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "12", "26", + "MKK", "2.4G", "20M", "HT", "4T", "12", "26", + "FCC", "2.4G", "20M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "13", "26", + "MKK", "2.4G", "20M", "HT", "4T", "13", "26", + "FCC", "2.4G", "20M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "14", "63", + "MKK", "2.4G", "20M", "HT", "4T", "14", "63", + "FCC", "2.4G", "40M", "HT", "1T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "01", "63", + "MKK", "2.4G", "40M", "HT", "1T", "01", "63", + "FCC", "2.4G", "40M", "HT", "1T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "02", "63", + "MKK", "2.4G", "40M", "HT", "1T", "02", "63", + "FCC", "2.4G", "40M", "HT", "1T", "03", "36", + "ETSI", "2.4G", "40M", "HT", "1T", "03", "32", + "MKK", "2.4G", "40M", "HT", "1T", "03", "32", + "FCC", "2.4G", "40M", "HT", "1T", "04", "40", + "ETSI", "2.4G", "40M", "HT", "1T", "04", "32", + "MKK", "2.4G", "40M", "HT", "1T", "04", "32", + "FCC", "2.4G", "40M", "HT", "1T", "05", "40", + "ETSI", "2.4G", "40M", "HT", "1T", "05", "32", + "MKK", "2.4G", "40M", "HT", "1T", "05", "32", + "FCC", "2.4G", "40M", "HT", "1T", "06", "40", + "ETSI", "2.4G", "40M", "HT", "1T", "06", "32", + "MKK", "2.4G", "40M", "HT", "1T", "06", "32", + "FCC", "2.4G", "40M", "HT", "1T", "07", "40", + "ETSI", "2.4G", "40M", "HT", "1T", "07", "32", + "MKK", "2.4G", "40M", "HT", "1T", "07", "32", + "FCC", "2.4G", "40M", "HT", "1T", "08", "40", + "ETSI", "2.4G", "40M", "HT", "1T", "08", "32", + "MKK", "2.4G", "40M", "HT", "1T", "08", "32", + "FCC", "2.4G", "40M", "HT", "1T", "09", "40", + "ETSI", "2.4G", "40M", "HT", "1T", "09", "32", + "MKK", "2.4G", "40M", "HT", "1T", "09", "32", + "FCC", "2.4G", "40M", "HT", "1T", "10", "40", + "ETSI", "2.4G", "40M", "HT", "1T", "10", "32", + "MKK", "2.4G", "40M", "HT", "1T", "10", "32", + "FCC", "2.4G", "40M", "HT", "1T", "11", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "11", "32", + "MKK", "2.4G", "40M", "HT", "1T", "11", "32", + "FCC", "2.4G", "40M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "12", "32", + "MKK", "2.4G", "40M", "HT", "1T", "12", "32", + "FCC", "2.4G", "40M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "13", "32", + "MKK", "2.4G", "40M", "HT", "1T", "13", "32", + "FCC", "2.4G", "40M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "14", "63", + "MKK", "2.4G", "40M", "HT", "1T", "14", "63", + "FCC", "2.4G", "40M", "HT", "2T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", + "MKK", "2.4G", "40M", "HT", "2T", "01", "63", + "FCC", "2.4G", "40M", "HT", "2T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "02", "63", + "MKK", "2.4G", "40M", "HT", "2T", "02", "63", + "FCC", "2.4G", "40M", "HT", "2T", "03", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "03", "30", + "MKK", "2.4G", "40M", "HT", "2T", "03", "30", + "FCC", "2.4G", "40M", "HT", "2T", "04", "38", + "ETSI", "2.4G", "40M", "HT", "2T", "04", "30", + "MKK", "2.4G", "40M", "HT", "2T", "04", "30", + "FCC", "2.4G", "40M", "HT", "2T", "05", "38", + "ETSI", "2.4G", "40M", "HT", "2T", "05", "30", + "MKK", "2.4G", "40M", "HT", "2T", "05", "30", + "FCC", "2.4G", "40M", "HT", "2T", "06", "38", + "ETSI", "2.4G", "40M", "HT", "2T", "06", "30", + "MKK", "2.4G", "40M", "HT", "2T", "06", "30", + "FCC", "2.4G", "40M", "HT", "2T", "07", "38", + "ETSI", "2.4G", "40M", "HT", "2T", "07", "30", + "MKK", "2.4G", "40M", "HT", "2T", "07", "30", + "FCC", "2.4G", "40M", "HT", "2T", "08", "38", + "ETSI", "2.4G", "40M", "HT", "2T", "08", "30", + "MKK", "2.4G", "40M", "HT", "2T", "08", "30", + "FCC", "2.4G", "40M", "HT", "2T", "09", "38", + "ETSI", "2.4G", "40M", "HT", "2T", "09", "30", + "MKK", "2.4G", "40M", "HT", "2T", "09", "30", + "FCC", "2.4G", "40M", "HT", "2T", "10", "38", + "ETSI", "2.4G", "40M", "HT", "2T", "10", "30", + "MKK", "2.4G", "40M", "HT", "2T", "10", "30", + "FCC", "2.4G", "40M", "HT", "2T", "11", "32", + "ETSI", "2.4G", "40M", "HT", "2T", "11", "30", + "MKK", "2.4G", "40M", "HT", "2T", "11", "30", + "FCC", "2.4G", "40M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "12", "30", + "MKK", "2.4G", "40M", "HT", "2T", "12", "30", + "FCC", "2.4G", "40M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "13", "30", + "MKK", "2.4G", "40M", "HT", "2T", "13", "30", + "FCC", "2.4G", "40M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "14", "63", + "MKK", "2.4G", "40M", "HT", "2T", "14", "63", + "FCC", "2.4G", "40M", "HT", "3T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "01", "63", + "MKK", "2.4G", "40M", "HT", "3T", "01", "63", + "FCC", "2.4G", "40M", "HT", "3T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "02", "63", + "MKK", "2.4G", "40M", "HT", "3T", "02", "63", + "FCC", "2.4G", "40M", "HT", "3T", "03", "32", + "ETSI", "2.4G", "40M", "HT", "3T", "03", "28", + "MKK", "2.4G", "40M", "HT", "3T", "03", "28", + "FCC", "2.4G", "40M", "HT", "3T", "04", "36", + "ETSI", "2.4G", "40M", "HT", "3T", "04", "28", + "MKK", "2.4G", "40M", "HT", "3T", "04", "28", + "FCC", "2.4G", "40M", "HT", "3T", "05", "36", + "ETSI", "2.4G", "40M", "HT", "3T", "05", "28", + "MKK", "2.4G", "40M", "HT", "3T", "05", "28", + "FCC", "2.4G", "40M", "HT", "3T", "06", "36", + "ETSI", "2.4G", "40M", "HT", "3T", "06", "28", + "MKK", "2.4G", "40M", "HT", "3T", "06", "28", + "FCC", "2.4G", "40M", "HT", "3T", "07", "36", + "ETSI", "2.4G", "40M", "HT", "3T", "07", "28", + "MKK", "2.4G", "40M", "HT", "3T", "07", "28", + "FCC", "2.4G", "40M", "HT", "3T", "08", "36", + "ETSI", "2.4G", "40M", "HT", "3T", "08", "28", + "MKK", "2.4G", "40M", "HT", "3T", "08", "28", + "FCC", "2.4G", "40M", "HT", "3T", "09", "36", + "ETSI", "2.4G", "40M", "HT", "3T", "09", "28", + "MKK", "2.4G", "40M", "HT", "3T", "09", "28", + "FCC", "2.4G", "40M", "HT", "3T", "10", "36", + "ETSI", "2.4G", "40M", "HT", "3T", "10", "28", + "MKK", "2.4G", "40M", "HT", "3T", "10", "28", + "FCC", "2.4G", "40M", "HT", "3T", "11", "30", + "ETSI", "2.4G", "40M", "HT", "3T", "11", "28", + "MKK", "2.4G", "40M", "HT", "3T", "11", "28", + "FCC", "2.4G", "40M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "12", "28", + "MKK", "2.4G", "40M", "HT", "3T", "12", "28", + "FCC", "2.4G", "40M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "13", "28", + "MKK", "2.4G", "40M", "HT", "3T", "13", "28", + "FCC", "2.4G", "40M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "14", "63", + "MKK", "2.4G", "40M", "HT", "3T", "14", "63", + "FCC", "2.4G", "40M", "HT", "4T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "01", "63", + "MKK", "2.4G", "40M", "HT", "4T", "01", "63", + "FCC", "2.4G", "40M", "HT", "4T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "02", "63", + "MKK", "2.4G", "40M", "HT", "4T", "02", "63", + "FCC", "2.4G", "40M", "HT", "4T", "03", "32", + "ETSI", "2.4G", "40M", "HT", "4T", "03", "26", + "MKK", "2.4G", "40M", "HT", "4T", "03", "26", + "FCC", "2.4G", "40M", "HT", "4T", "04", "36", + "ETSI", "2.4G", "40M", "HT", "4T", "04", "26", + "MKK", "2.4G", "40M", "HT", "4T", "04", "26", + "FCC", "2.4G", "40M", "HT", "4T", "05", "36", + "ETSI", "2.4G", "40M", "HT", "4T", "05", "26", + "MKK", "2.4G", "40M", "HT", "4T", "05", "26", + "FCC", "2.4G", "40M", "HT", "4T", "06", "36", + "ETSI", "2.4G", "40M", "HT", "4T", "06", "26", + "MKK", "2.4G", "40M", "HT", "4T", "06", "26", + "FCC", "2.4G", "40M", "HT", "4T", "07", "36", + "ETSI", "2.4G", "40M", "HT", "4T", "07", "26", + "MKK", "2.4G", "40M", "HT", "4T", "07", "26", + "FCC", "2.4G", "40M", "HT", "4T", "08", "36", + "ETSI", "2.4G", "40M", "HT", "4T", "08", "26", + "MKK", "2.4G", "40M", "HT", "4T", "08", "26", + "FCC", "2.4G", "40M", "HT", "4T", "09", "36", + "ETSI", "2.4G", "40M", "HT", "4T", "09", "26", + "MKK", "2.4G", "40M", "HT", "4T", "09", "26", + "FCC", "2.4G", "40M", "HT", "4T", "10", "36", + "ETSI", "2.4G", "40M", "HT", "4T", "10", "26", + "MKK", "2.4G", "40M", "HT", "4T", "10", "26", + "FCC", "2.4G", "40M", "HT", "4T", "11", "30", + "ETSI", "2.4G", "40M", "HT", "4T", "11", "26", + "MKK", "2.4G", "40M", "HT", "4T", "11", "26", + "FCC", "2.4G", "40M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "12", "26", + "MKK", "2.4G", "40M", "HT", "4T", "12", "26", + "FCC", "2.4G", "40M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "13", "26", + "MKK", "2.4G", "40M", "HT", "4T", "13", "26", + "FCC", "2.4G", "40M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "14", "63", + "MKK", "2.4G", "40M", "HT", "4T", "14", "63", + "FCC", "5G", "20M", "OFDM", "1T", "36", "38", + "ETSI", "5G", "20M", "OFDM", "1T", "36", "32", + "MKK", "5G", "20M", "OFDM", "1T", "36", "32", + "FCC", "5G", "20M", "OFDM", "1T", "40", "38", + "ETSI", "5G", "20M", "OFDM", "1T", "40", "32", + "MKK", "5G", "20M", "OFDM", "1T", "40", "32", + "FCC", "5G", "20M", "OFDM", "1T", "44", "38", + "ETSI", "5G", "20M", "OFDM", "1T", "44", "32", + "MKK", "5G", "20M", "OFDM", "1T", "44", "32", + "FCC", "5G", "20M", "OFDM", "1T", "48", "38", + "ETSI", "5G", "20M", "OFDM", "1T", "48", "32", + "MKK", "5G", "20M", "OFDM", "1T", "48", "32", + "FCC", "5G", "20M", "OFDM", "1T", "52", "38", + "ETSI", "5G", "20M", "OFDM", "1T", "52", "32", + "MKK", "5G", "20M", "OFDM", "1T", "52", "32", + "FCC", "5G", "20M", "OFDM", "1T", "56", "38", + "ETSI", "5G", "20M", "OFDM", "1T", "56", "32", + "MKK", "5G", "20M", "OFDM", "1T", "56", "32", + "FCC", "5G", "20M", "OFDM", "1T", "60", "38", + "ETSI", "5G", "20M", "OFDM", "1T", "60", "32", + "MKK", "5G", "20M", "OFDM", "1T", "60", "32", + "FCC", "5G", "20M", "OFDM", "1T", "64", "38", + "ETSI", "5G", "20M", "OFDM", "1T", "64", "32", + "MKK", "5G", "20M", "OFDM", "1T", "64", "32", + "FCC", "5G", "20M", "OFDM", "1T", "100", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "100", "32", + "MKK", "5G", "20M", "OFDM", "1T", "100", "32", + "FCC", "5G", "20M", "OFDM", "1T", "104", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "104", "32", + "MKK", "5G", "20M", "OFDM", "1T", "104", "32", + "FCC", "5G", "20M", "OFDM", "1T", "108", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "108", "32", + "MKK", "5G", "20M", "OFDM", "1T", "108", "32", + "FCC", "5G", "20M", "OFDM", "1T", "112", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "112", "32", + "MKK", "5G", "20M", "OFDM", "1T", "112", "32", + "FCC", "5G", "20M", "OFDM", "1T", "116", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "116", "32", + "MKK", "5G", "20M", "OFDM", "1T", "116", "32", + "FCC", "5G", "20M", "OFDM", "1T", "120", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "120", "32", + "MKK", "5G", "20M", "OFDM", "1T", "120", "32", + "FCC", "5G", "20M", "OFDM", "1T", "124", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "124", "32", + "MKK", "5G", "20M", "OFDM", "1T", "124", "32", + "FCC", "5G", "20M", "OFDM", "1T", "128", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "128", "32", + "MKK", "5G", "20M", "OFDM", "1T", "128", "32", + "FCC", "5G", "20M", "OFDM", "1T", "132", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "132", "32", + "MKK", "5G", "20M", "OFDM", "1T", "132", "32", + "FCC", "5G", "20M", "OFDM", "1T", "136", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "136", "32", + "MKK", "5G", "20M", "OFDM", "1T", "136", "32", + "FCC", "5G", "20M", "OFDM", "1T", "140", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "140", "32", + "MKK", "5G", "20M", "OFDM", "1T", "140", "32", + "FCC", "5G", "20M", "OFDM", "1T", "149", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "149", "32", + "MKK", "5G", "20M", "OFDM", "1T", "149", "63", + "FCC", "5G", "20M", "OFDM", "1T", "153", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "153", "32", + "MKK", "5G", "20M", "OFDM", "1T", "153", "63", + "FCC", "5G", "20M", "OFDM", "1T", "157", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "157", "32", + "MKK", "5G", "20M", "OFDM", "1T", "157", "63", + "FCC", "5G", "20M", "OFDM", "1T", "161", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "161", "32", + "MKK", "5G", "20M", "OFDM", "1T", "161", "63", + "FCC", "5G", "20M", "OFDM", "1T", "165", "36", + "ETSI", "5G", "20M", "OFDM", "1T", "165", "32", + "MKK", "5G", "20M", "OFDM", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "1T", "36", "36", + "ETSI", "5G", "20M", "HT", "1T", "36", "32", + "MKK", "5G", "20M", "HT", "1T", "36", "32", + "FCC", "5G", "20M", "HT", "1T", "40", "36", + "ETSI", "5G", "20M", "HT", "1T", "40", "32", + "MKK", "5G", "20M", "HT", "1T", "40", "32", + "FCC", "5G", "20M", "HT", "1T", "44", "36", + "ETSI", "5G", "20M", "HT", "1T", "44", "32", + "MKK", "5G", "20M", "HT", "1T", "44", "32", + "FCC", "5G", "20M", "HT", "1T", "48", "36", + "ETSI", "5G", "20M", "HT", "1T", "48", "32", + "MKK", "5G", "20M", "HT", "1T", "48", "32", + "FCC", "5G", "20M", "HT", "1T", "52", "36", + "ETSI", "5G", "20M", "HT", "1T", "52", "32", + "MKK", "5G", "20M", "HT", "1T", "52", "32", + "FCC", "5G", "20M", "HT", "1T", "56", "36", + "ETSI", "5G", "20M", "HT", "1T", "56", "32", + "MKK", "5G", "20M", "HT", "1T", "56", "32", + "FCC", "5G", "20M", "HT", "1T", "60", "36", + "ETSI", "5G", "20M", "HT", "1T", "60", "32", + "MKK", "5G", "20M", "HT", "1T", "60", "32", + "FCC", "5G", "20M", "HT", "1T", "64", "36", + "ETSI", "5G", "20M", "HT", "1T", "64", "32", + "MKK", "5G", "20M", "HT", "1T", "64", "32", + "FCC", "5G", "20M", "HT", "1T", "100", "36", + "ETSI", "5G", "20M", "HT", "1T", "100", "32", + "MKK", "5G", "20M", "HT", "1T", "100", "32", + "FCC", "5G", "20M", "HT", "1T", "104", "36", + "ETSI", "5G", "20M", "HT", "1T", "104", "32", + "MKK", "5G", "20M", "HT", "1T", "104", "32", + "FCC", "5G", "20M", "HT", "1T", "108", "36", + "ETSI", "5G", "20M", "HT", "1T", "108", "32", + "MKK", "5G", "20M", "HT", "1T", "108", "32", + "FCC", "5G", "20M", "HT", "1T", "112", "36", + "ETSI", "5G", "20M", "HT", "1T", "112", "32", + "MKK", "5G", "20M", "HT", "1T", "112", "32", + "FCC", "5G", "20M", "HT", "1T", "116", "36", + "ETSI", "5G", "20M", "HT", "1T", "116", "32", + "MKK", "5G", "20M", "HT", "1T", "116", "32", + "FCC", "5G", "20M", "HT", "1T", "120", "36", + "ETSI", "5G", "20M", "HT", "1T", "120", "32", + "MKK", "5G", "20M", "HT", "1T", "120", "32", + "FCC", "5G", "20M", "HT", "1T", "124", "36", + "ETSI", "5G", "20M", "HT", "1T", "124", "32", + "MKK", "5G", "20M", "HT", "1T", "124", "32", + "FCC", "5G", "20M", "HT", "1T", "128", "36", + "ETSI", "5G", "20M", "HT", "1T", "128", "32", + "MKK", "5G", "20M", "HT", "1T", "128", "32", + "FCC", "5G", "20M", "HT", "1T", "132", "36", + "ETSI", "5G", "20M", "HT", "1T", "132", "32", + "MKK", "5G", "20M", "HT", "1T", "132", "32", + "FCC", "5G", "20M", "HT", "1T", "136", "36", + "ETSI", "5G", "20M", "HT", "1T", "136", "32", + "MKK", "5G", "20M", "HT", "1T", "136", "32", + "FCC", "5G", "20M", "HT", "1T", "140", "34", + "ETSI", "5G", "20M", "HT", "1T", "140", "32", + "MKK", "5G", "20M", "HT", "1T", "140", "32", + "FCC", "5G", "20M", "HT", "1T", "149", "32", + "ETSI", "5G", "20M", "HT", "1T", "149", "32", + "MKK", "5G", "20M", "HT", "1T", "149", "63", + "FCC", "5G", "20M", "HT", "1T", "153", "38", + "ETSI", "5G", "20M", "HT", "1T", "153", "32", + "MKK", "5G", "20M", "HT", "1T", "153", "63", + "FCC", "5G", "20M", "HT", "1T", "157", "38", + "ETSI", "5G", "20M", "HT", "1T", "157", "32", + "MKK", "5G", "20M", "HT", "1T", "157", "63", + "FCC", "5G", "20M", "HT", "1T", "161", "38", + "ETSI", "5G", "20M", "HT", "1T", "161", "32", + "MKK", "5G", "20M", "HT", "1T", "161", "63", + "FCC", "5G", "20M", "HT", "1T", "165", "38", + "ETSI", "5G", "20M", "HT", "1T", "165", "32", + "MKK", "5G", "20M", "HT", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "2T", "36", "34", + "ETSI", "5G", "20M", "HT", "2T", "36", "30", + "MKK", "5G", "20M", "HT", "2T", "36", "30", + "FCC", "5G", "20M", "HT", "2T", "40", "34", + "ETSI", "5G", "20M", "HT", "2T", "40", "30", + "MKK", "5G", "20M", "HT", "2T", "40", "30", + "FCC", "5G", "20M", "HT", "2T", "44", "34", + "ETSI", "5G", "20M", "HT", "2T", "44", "30", + "MKK", "5G", "20M", "HT", "2T", "44", "30", + "FCC", "5G", "20M", "HT", "2T", "48", "34", + "ETSI", "5G", "20M", "HT", "2T", "48", "30", + "MKK", "5G", "20M", "HT", "2T", "48", "30", + "FCC", "5G", "20M", "HT", "2T", "52", "34", + "ETSI", "5G", "20M", "HT", "2T", "52", "30", + "MKK", "5G", "20M", "HT", "2T", "52", "30", + "FCC", "5G", "20M", "HT", "2T", "56", "34", + "ETSI", "5G", "20M", "HT", "2T", "56", "30", + "MKK", "5G", "20M", "HT", "2T", "56", "30", + "FCC", "5G", "20M", "HT", "2T", "60", "34", + "ETSI", "5G", "20M", "HT", "2T", "60", "30", + "MKK", "5G", "20M", "HT", "2T", "60", "30", + "FCC", "5G", "20M", "HT", "2T", "64", "34", + "ETSI", "5G", "20M", "HT", "2T", "64", "30", + "MKK", "5G", "20M", "HT", "2T", "64", "30", + "FCC", "5G", "20M", "HT", "2T", "100", "34", + "ETSI", "5G", "20M", "HT", "2T", "100", "30", + "MKK", "5G", "20M", "HT", "2T", "100", "30", + "FCC", "5G", "20M", "HT", "2T", "104", "34", + "ETSI", "5G", "20M", "HT", "2T", "104", "30", + "MKK", "5G", "20M", "HT", "2T", "104", "30", + "FCC", "5G", "20M", "HT", "2T", "108", "34", + "ETSI", "5G", "20M", "HT", "2T", "108", "30", + "MKK", "5G", "20M", "HT", "2T", "108", "30", + "FCC", "5G", "20M", "HT", "2T", "112", "34", + "ETSI", "5G", "20M", "HT", "2T", "112", "30", + "MKK", "5G", "20M", "HT", "2T", "112", "30", + "FCC", "5G", "20M", "HT", "2T", "116", "34", + "ETSI", "5G", "20M", "HT", "2T", "116", "30", + "MKK", "5G", "20M", "HT", "2T", "116", "30", + "FCC", "5G", "20M", "HT", "2T", "120", "34", + "ETSI", "5G", "20M", "HT", "2T", "120", "30", + "MKK", "5G", "20M", "HT", "2T", "120", "30", + "FCC", "5G", "20M", "HT", "2T", "124", "34", + "ETSI", "5G", "20M", "HT", "2T", "124", "30", + "MKK", "5G", "20M", "HT", "2T", "124", "30", + "FCC", "5G", "20M", "HT", "2T", "128", "34", + "ETSI", "5G", "20M", "HT", "2T", "128", "30", + "MKK", "5G", "20M", "HT", "2T", "128", "30", + "FCC", "5G", "20M", "HT", "2T", "132", "34", + "ETSI", "5G", "20M", "HT", "2T", "132", "30", + "MKK", "5G", "20M", "HT", "2T", "132", "30", + "FCC", "5G", "20M", "HT", "2T", "136", "34", + "ETSI", "5G", "20M", "HT", "2T", "136", "30", + "MKK", "5G", "20M", "HT", "2T", "136", "30", + "FCC", "5G", "20M", "HT", "2T", "140", "32", + "ETSI", "5G", "20M", "HT", "2T", "140", "30", + "MKK", "5G", "20M", "HT", "2T", "140", "30", + "FCC", "5G", "20M", "HT", "2T", "149", "30", + "ETSI", "5G", "20M", "HT", "2T", "149", "30", + "MKK", "5G", "20M", "HT", "2T", "149", "63", + "FCC", "5G", "20M", "HT", "2T", "153", "36", + "ETSI", "5G", "20M", "HT", "2T", "153", "30", + "MKK", "5G", "20M", "HT", "2T", "153", "63", + "FCC", "5G", "20M", "HT", "2T", "157", "36", + "ETSI", "5G", "20M", "HT", "2T", "157", "30", + "MKK", "5G", "20M", "HT", "2T", "157", "63", + "FCC", "5G", "20M", "HT", "2T", "161", "36", + "ETSI", "5G", "20M", "HT", "2T", "161", "30", + "MKK", "5G", "20M", "HT", "2T", "161", "63", + "FCC", "5G", "20M", "HT", "2T", "165", "36", + "ETSI", "5G", "20M", "HT", "2T", "165", "30", + "MKK", "5G", "20M", "HT", "2T", "165", "63", + "FCC", "5G", "20M", "HT", "3T", "36", "32", + "ETSI", "5G", "20M", "HT", "3T", "36", "28", + "MKK", "5G", "20M", "HT", "3T", "36", "28", + "FCC", "5G", "20M", "HT", "3T", "40", "32", + "ETSI", "5G", "20M", "HT", "3T", "40", "28", + "MKK", "5G", "20M", "HT", "3T", "40", "28", + "FCC", "5G", "20M", "HT", "3T", "44", "32", + "ETSI", "5G", "20M", "HT", "3T", "44", "28", + "MKK", "5G", "20M", "HT", "3T", "44", "28", + "FCC", "5G", "20M", "HT", "3T", "48", "32", + "ETSI", "5G", "20M", "HT", "3T", "48", "28", + "MKK", "5G", "20M", "HT", "3T", "48", "28", + "FCC", "5G", "20M", "HT", "3T", "52", "32", + "ETSI", "5G", "20M", "HT", "3T", "52", "28", + "MKK", "5G", "20M", "HT", "3T", "52", "28", + "FCC", "5G", "20M", "HT", "3T", "56", "32", + "ETSI", "5G", "20M", "HT", "3T", "56", "28", + "MKK", "5G", "20M", "HT", "3T", "56", "28", + "FCC", "5G", "20M", "HT", "3T", "60", "32", + "ETSI", "5G", "20M", "HT", "3T", "60", "28", + "MKK", "5G", "20M", "HT", "3T", "60", "28", + "FCC", "5G", "20M", "HT", "3T", "64", "32", + "ETSI", "5G", "20M", "HT", "3T", "64", "28", + "MKK", "5G", "20M", "HT", "3T", "64", "28", + "FCC", "5G", "20M", "HT", "3T", "100", "32", + "ETSI", "5G", "20M", "HT", "3T", "100", "28", + "MKK", "5G", "20M", "HT", "3T", "100", "28", + "FCC", "5G", "20M", "HT", "3T", "104", "32", + "ETSI", "5G", "20M", "HT", "3T", "104", "28", + "MKK", "5G", "20M", "HT", "3T", "104", "28", + "FCC", "5G", "20M", "HT", "3T", "108", "32", + "ETSI", "5G", "20M", "HT", "3T", "108", "28", + "MKK", "5G", "20M", "HT", "3T", "108", "28", + "FCC", "5G", "20M", "HT", "3T", "112", "32", + "ETSI", "5G", "20M", "HT", "3T", "112", "28", + "MKK", "5G", "20M", "HT", "3T", "112", "28", + "FCC", "5G", "20M", "HT", "3T", "116", "32", + "ETSI", "5G", "20M", "HT", "3T", "116", "28", + "MKK", "5G", "20M", "HT", "3T", "116", "28", + "FCC", "5G", "20M", "HT", "3T", "120", "32", + "ETSI", "5G", "20M", "HT", "3T", "120", "28", + "MKK", "5G", "20M", "HT", "3T", "120", "28", + "FCC", "5G", "20M", "HT", "3T", "124", "32", + "ETSI", "5G", "20M", "HT", "3T", "124", "28", + "MKK", "5G", "20M", "HT", "3T", "124", "28", + "FCC", "5G", "20M", "HT", "3T", "128", "32", + "ETSI", "5G", "20M", "HT", "3T", "128", "28", + "MKK", "5G", "20M", "HT", "3T", "128", "28", + "FCC", "5G", "20M", "HT", "3T", "132", "32", + "ETSI", "5G", "20M", "HT", "3T", "132", "28", + "MKK", "5G", "20M", "HT", "3T", "132", "28", + "FCC", "5G", "20M", "HT", "3T", "136", "32", + "ETSI", "5G", "20M", "HT", "3T", "136", "28", + "MKK", "5G", "20M", "HT", "3T", "136", "28", + "FCC", "5G", "20M", "HT", "3T", "140", "30", + "ETSI", "5G", "20M", "HT", "3T", "140", "28", + "MKK", "5G", "20M", "HT", "3T", "140", "28", + "FCC", "5G", "20M", "HT", "3T", "149", "28", + "ETSI", "5G", "20M", "HT", "3T", "149", "28", + "MKK", "5G", "20M", "HT", "3T", "149", "63", + "FCC", "5G", "20M", "HT", "3T", "153", "34", + "ETSI", "5G", "20M", "HT", "3T", "153", "28", + "MKK", "5G", "20M", "HT", "3T", "153", "63", + "FCC", "5G", "20M", "HT", "3T", "157", "34", + "ETSI", "5G", "20M", "HT", "3T", "157", "28", + "MKK", "5G", "20M", "HT", "3T", "157", "63", + "FCC", "5G", "20M", "HT", "3T", "161", "34", + "ETSI", "5G", "20M", "HT", "3T", "161", "28", + "MKK", "5G", "20M", "HT", "3T", "161", "63", + "FCC", "5G", "20M", "HT", "3T", "165", "34", + "ETSI", "5G", "20M", "HT", "3T", "165", "28", + "MKK", "5G", "20M", "HT", "3T", "165", "63", + "FCC", "5G", "20M", "HT", "4T", "36", "30", + "ETSI", "5G", "20M", "HT", "4T", "36", "26", + "MKK", "5G", "20M", "HT", "4T", "36", "26", + "FCC", "5G", "20M", "HT", "4T", "40", "30", + "ETSI", "5G", "20M", "HT", "4T", "40", "26", + "MKK", "5G", "20M", "HT", "4T", "40", "26", + "FCC", "5G", "20M", "HT", "4T", "44", "30", + "ETSI", "5G", "20M", "HT", "4T", "44", "26", + "MKK", "5G", "20M", "HT", "4T", "44", "26", + "FCC", "5G", "20M", "HT", "4T", "48", "30", + "ETSI", "5G", "20M", "HT", "4T", "48", "26", + "MKK", "5G", "20M", "HT", "4T", "48", "26", + "FCC", "5G", "20M", "HT", "4T", "52", "30", + "ETSI", "5G", "20M", "HT", "4T", "52", "26", + "MKK", "5G", "20M", "HT", "4T", "52", "26", + "FCC", "5G", "20M", "HT", "4T", "56", "30", + "ETSI", "5G", "20M", "HT", "4T", "56", "26", + "MKK", "5G", "20M", "HT", "4T", "56", "26", + "FCC", "5G", "20M", "HT", "4T", "60", "30", + "ETSI", "5G", "20M", "HT", "4T", "60", "26", + "MKK", "5G", "20M", "HT", "4T", "60", "26", + "FCC", "5G", "20M", "HT", "4T", "64", "30", + "ETSI", "5G", "20M", "HT", "4T", "64", "26", + "MKK", "5G", "20M", "HT", "4T", "64", "26", + "FCC", "5G", "20M", "HT", "4T", "100", "30", + "ETSI", "5G", "20M", "HT", "4T", "100", "26", + "MKK", "5G", "20M", "HT", "4T", "100", "26", + "FCC", "5G", "20M", "HT", "4T", "104", "30", + "ETSI", "5G", "20M", "HT", "4T", "104", "26", + "MKK", "5G", "20M", "HT", "4T", "104", "26", + "FCC", "5G", "20M", "HT", "4T", "108", "30", + "ETSI", "5G", "20M", "HT", "4T", "108", "26", + "MKK", "5G", "20M", "HT", "4T", "108", "26", + "FCC", "5G", "20M", "HT", "4T", "112", "30", + "ETSI", "5G", "20M", "HT", "4T", "112", "26", + "MKK", "5G", "20M", "HT", "4T", "112", "26", + "FCC", "5G", "20M", "HT", "4T", "116", "30", + "ETSI", "5G", "20M", "HT", "4T", "116", "26", + "MKK", "5G", "20M", "HT", "4T", "116", "26", + "FCC", "5G", "20M", "HT", "4T", "120", "30", + "ETSI", "5G", "20M", "HT", "4T", "120", "26", + "MKK", "5G", "20M", "HT", "4T", "120", "26", + "FCC", "5G", "20M", "HT", "4T", "124", "30", + "ETSI", "5G", "20M", "HT", "4T", "124", "26", + "MKK", "5G", "20M", "HT", "4T", "124", "26", + "FCC", "5G", "20M", "HT", "4T", "128", "30", + "ETSI", "5G", "20M", "HT", "4T", "128", "26", + "MKK", "5G", "20M", "HT", "4T", "128", "26", + "FCC", "5G", "20M", "HT", "4T", "132", "30", + "ETSI", "5G", "20M", "HT", "4T", "132", "26", + "MKK", "5G", "20M", "HT", "4T", "132", "26", + "FCC", "5G", "20M", "HT", "4T", "136", "30", + "ETSI", "5G", "20M", "HT", "4T", "136", "26", + "MKK", "5G", "20M", "HT", "4T", "136", "26", + "FCC", "5G", "20M", "HT", "4T", "140", "28", + "ETSI", "5G", "20M", "HT", "4T", "140", "26", + "MKK", "5G", "20M", "HT", "4T", "140", "26", + "FCC", "5G", "20M", "HT", "4T", "149", "26", + "ETSI", "5G", "20M", "HT", "4T", "149", "26", + "MKK", "5G", "20M", "HT", "4T", "149", "63", + "FCC", "5G", "20M", "HT", "4T", "153", "32", + "ETSI", "5G", "20M", "HT", "4T", "153", "26", + "MKK", "5G", "20M", "HT", "4T", "153", "63", + "FCC", "5G", "20M", "HT", "4T", "157", "32", + "ETSI", "5G", "20M", "HT", "4T", "157", "26", + "MKK", "5G", "20M", "HT", "4T", "157", "63", + "FCC", "5G", "20M", "HT", "4T", "161", "32", + "ETSI", "5G", "20M", "HT", "4T", "161", "26", + "MKK", "5G", "20M", "HT", "4T", "161", "63", + "FCC", "5G", "20M", "HT", "4T", "165", "32", + "ETSI", "5G", "20M", "HT", "4T", "165", "26", + "MKK", "5G", "20M", "HT", "4T", "165", "63", + "FCC", "5G", "40M", "HT", "1T", "38", "32", + "ETSI", "5G", "40M", "HT", "1T", "38", "32", + "MKK", "5G", "40M", "HT", "1T", "38", "32", + "FCC", "5G", "40M", "HT", "1T", "46", "32", + "ETSI", "5G", "40M", "HT", "1T", "46", "32", + "MKK", "5G", "40M", "HT", "1T", "46", "32", + "FCC", "5G", "40M", "HT", "1T", "54", "32", + "ETSI", "5G", "40M", "HT", "1T", "54", "32", + "MKK", "5G", "40M", "HT", "1T", "54", "32", + "FCC", "5G", "40M", "HT", "1T", "62", "30", + "ETSI", "5G", "40M", "HT", "1T", "62", "32", + "MKK", "5G", "40M", "HT", "1T", "62", "32", + "FCC", "5G", "40M", "HT", "1T", "102", "30", + "ETSI", "5G", "40M", "HT", "1T", "102", "32", + "MKK", "5G", "40M", "HT", "1T", "102", "32", + "FCC", "5G", "40M", "HT", "1T", "110", "38", + "ETSI", "5G", "40M", "HT", "1T", "110", "32", + "MKK", "5G", "40M", "HT", "1T", "110", "32", + "FCC", "5G", "40M", "HT", "1T", "118", "38", + "ETSI", "5G", "40M", "HT", "1T", "118", "32", + "MKK", "5G", "40M", "HT", "1T", "118", "32", + "FCC", "5G", "40M", "HT", "1T", "126", "38", + "ETSI", "5G", "40M", "HT", "1T", "126", "32", + "MKK", "5G", "40M", "HT", "1T", "126", "32", + "FCC", "5G", "40M", "HT", "1T", "134", "38", + "ETSI", "5G", "40M", "HT", "1T", "134", "32", + "MKK", "5G", "40M", "HT", "1T", "134", "32", + "FCC", "5G", "40M", "HT", "1T", "151", "32", + "ETSI", "5G", "40M", "HT", "1T", "151", "32", + "MKK", "5G", "40M", "HT", "1T", "151", "63", + "FCC", "5G", "40M", "HT", "1T", "159", "32", + "ETSI", "5G", "40M", "HT", "1T", "159", "32", + "MKK", "5G", "40M", "HT", "1T", "159", "63", + "FCC", "5G", "40M", "HT", "2T", "38", "30", + "ETSI", "5G", "40M", "HT", "2T", "38", "30", + "MKK", "5G", "40M", "HT", "2T", "38", "30", + "FCC", "5G", "40M", "HT", "2T", "46", "30", + "ETSI", "5G", "40M", "HT", "2T", "46", "30", + "MKK", "5G", "40M", "HT", "2T", "46", "30", + "FCC", "5G", "40M", "HT", "2T", "54", "30", + "ETSI", "5G", "40M", "HT", "2T", "54", "30", + "MKK", "5G", "40M", "HT", "2T", "54", "30", + "FCC", "5G", "40M", "HT", "2T", "62", "28", + "ETSI", "5G", "40M", "HT", "2T", "62", "30", + "MKK", "5G", "40M", "HT", "2T", "62", "30", + "FCC", "5G", "40M", "HT", "2T", "102", "28", + "ETSI", "5G", "40M", "HT", "2T", "102", "30", + "MKK", "5G", "40M", "HT", "2T", "102", "30", + "FCC", "5G", "40M", "HT", "2T", "110", "36", + "ETSI", "5G", "40M", "HT", "2T", "110", "30", + "MKK", "5G", "40M", "HT", "2T", "110", "30", + "FCC", "5G", "40M", "HT", "2T", "118", "36", + "ETSI", "5G", "40M", "HT", "2T", "118", "30", + "MKK", "5G", "40M", "HT", "2T", "118", "30", + "FCC", "5G", "40M", "HT", "2T", "126", "36", + "ETSI", "5G", "40M", "HT", "2T", "126", "30", + "MKK", "5G", "40M", "HT", "2T", "126", "30", + "FCC", "5G", "40M", "HT", "2T", "134", "36", + "ETSI", "5G", "40M", "HT", "2T", "134", "30", + "MKK", "5G", "40M", "HT", "2T", "134", "30", + "FCC", "5G", "40M", "HT", "2T", "151", "30", + "ETSI", "5G", "40M", "HT", "2T", "151", "30", + "MKK", "5G", "40M", "HT", "2T", "151", "63", + "FCC", "5G", "40M", "HT", "2T", "159", "30", + "ETSI", "5G", "40M", "HT", "2T", "159", "30", + "MKK", "5G", "40M", "HT", "2T", "159", "63", + "FCC", "5G", "40M", "HT", "3T", "38", "28", + "ETSI", "5G", "40M", "HT", "3T", "38", "28", + "MKK", "5G", "40M", "HT", "3T", "38", "28", + "FCC", "5G", "40M", "HT", "3T", "46", "28", + "ETSI", "5G", "40M", "HT", "3T", "46", "28", + "MKK", "5G", "40M", "HT", "3T", "46", "28", + "FCC", "5G", "40M", "HT", "3T", "54", "28", + "ETSI", "5G", "40M", "HT", "3T", "54", "28", + "MKK", "5G", "40M", "HT", "3T", "54", "28", + "FCC", "5G", "40M", "HT", "3T", "62", "26", + "ETSI", "5G", "40M", "HT", "3T", "62", "28", + "MKK", "5G", "40M", "HT", "3T", "62", "28", + "FCC", "5G", "40M", "HT", "3T", "102", "26", + "ETSI", "5G", "40M", "HT", "3T", "102", "28", + "MKK", "5G", "40M", "HT", "3T", "102", "28", + "FCC", "5G", "40M", "HT", "3T", "110", "34", + "ETSI", "5G", "40M", "HT", "3T", "110", "28", + "MKK", "5G", "40M", "HT", "3T", "110", "28", + "FCC", "5G", "40M", "HT", "3T", "118", "34", + "ETSI", "5G", "40M", "HT", "3T", "118", "28", + "MKK", "5G", "40M", "HT", "3T", "118", "28", + "FCC", "5G", "40M", "HT", "3T", "126", "34", + "ETSI", "5G", "40M", "HT", "3T", "126", "28", + "MKK", "5G", "40M", "HT", "3T", "126", "28", + "FCC", "5G", "40M", "HT", "3T", "134", "34", + "ETSI", "5G", "40M", "HT", "3T", "134", "28", + "MKK", "5G", "40M", "HT", "3T", "134", "28", + "FCC", "5G", "40M", "HT", "3T", "151", "28", + "ETSI", "5G", "40M", "HT", "3T", "151", "28", + "MKK", "5G", "40M", "HT", "3T", "151", "63", + "FCC", "5G", "40M", "HT", "3T", "159", "28", + "ETSI", "5G", "40M", "HT", "3T", "159", "28", + "MKK", "5G", "40M", "HT", "3T", "159", "63", + "FCC", "5G", "40M", "HT", "4T", "38", "26", + "ETSI", "5G", "40M", "HT", "4T", "38", "26", + "MKK", "5G", "40M", "HT", "4T", "38", "26", + "FCC", "5G", "40M", "HT", "4T", "46", "26", + "ETSI", "5G", "40M", "HT", "4T", "46", "26", + "MKK", "5G", "40M", "HT", "4T", "46", "26", + "FCC", "5G", "40M", "HT", "4T", "54", "26", + "ETSI", "5G", "40M", "HT", "4T", "54", "26", + "MKK", "5G", "40M", "HT", "4T", "54", "26", + "FCC", "5G", "40M", "HT", "4T", "62", "24", + "ETSI", "5G", "40M", "HT", "4T", "62", "26", + "MKK", "5G", "40M", "HT", "4T", "62", "26", + "FCC", "5G", "40M", "HT", "4T", "102", "24", + "ETSI", "5G", "40M", "HT", "4T", "102", "26", + "MKK", "5G", "40M", "HT", "4T", "102", "26", + "FCC", "5G", "40M", "HT", "4T", "110", "32", + "ETSI", "5G", "40M", "HT", "4T", "110", "26", + "MKK", "5G", "40M", "HT", "4T", "110", "26", + "FCC", "5G", "40M", "HT", "4T", "118", "32", + "ETSI", "5G", "40M", "HT", "4T", "118", "26", + "MKK", "5G", "40M", "HT", "4T", "118", "26", + "FCC", "5G", "40M", "HT", "4T", "126", "32", + "ETSI", "5G", "40M", "HT", "4T", "126", "26", + "MKK", "5G", "40M", "HT", "4T", "126", "26", + "FCC", "5G", "40M", "HT", "4T", "134", "32", + "ETSI", "5G", "40M", "HT", "4T", "134", "26", + "MKK", "5G", "40M", "HT", "4T", "134", "26", + "FCC", "5G", "40M", "HT", "4T", "151", "26", + "ETSI", "5G", "40M", "HT", "4T", "151", "26", + "MKK", "5G", "40M", "HT", "4T", "151", "63", + "FCC", "5G", "40M", "HT", "4T", "159", "26", + "ETSI", "5G", "40M", "HT", "4T", "159", "26", + "MKK", "5G", "40M", "HT", "4T", "159", "63", + "FCC", "5G", "80M", "VHT", "1T", "42", "26", + "ETSI", "5G", "80M", "VHT", "1T", "42", "32", + "MKK", "5G", "80M", "VHT", "1T", "42", "32", + "FCC", "5G", "80M", "VHT", "1T", "58", "26", + "ETSI", "5G", "80M", "VHT", "1T", "58", "32", + "MKK", "5G", "80M", "VHT", "1T", "58", "32", + "FCC", "5G", "80M", "VHT", "1T", "106", "28", + "ETSI", "5G", "80M", "VHT", "1T", "106", "32", + "MKK", "5G", "80M", "VHT", "1T", "106", "32", + "FCC", "5G", "80M", "VHT", "1T", "122", "28", + "ETSI", "5G", "80M", "VHT", "1T", "122", "32", + "MKK", "5G", "80M", "VHT", "1T", "122", "32", + "FCC", "5G", "80M", "VHT", "1T", "155", "28", + "ETSI", "5G", "80M", "VHT", "1T", "155", "32", + "MKK", "5G", "80M", "VHT", "1T", "155", "63", + "FCC", "5G", "80M", "VHT", "2T", "42", "24", + "ETSI", "5G", "80M", "VHT", "2T", "42", "30", + "MKK", "5G", "80M", "VHT", "2T", "42", "30", + "FCC", "5G", "80M", "VHT", "2T", "58", "24", + "ETSI", "5G", "80M", "VHT", "2T", "58", "30", + "MKK", "5G", "80M", "VHT", "2T", "58", "30", + "FCC", "5G", "80M", "VHT", "2T", "106", "26", + "ETSI", "5G", "80M", "VHT", "2T", "106", "30", + "MKK", "5G", "80M", "VHT", "2T", "106", "30", + "FCC", "5G", "80M", "VHT", "2T", "122", "26", + "ETSI", "5G", "80M", "VHT", "2T", "122", "30", + "MKK", "5G", "80M", "VHT", "2T", "122", "30", + "FCC", "5G", "80M", "VHT", "2T", "155", "26", + "ETSI", "5G", "80M", "VHT", "2T", "155", "30", + "MKK", "5G", "80M", "VHT", "2T", "155", "63", + "FCC", "5G", "80M", "VHT", "3T", "42", "22", + "ETSI", "5G", "80M", "VHT", "3T", "42", "28", + "MKK", "5G", "80M", "VHT", "3T", "42", "28", + "FCC", "5G", "80M", "VHT", "3T", "58", "22", + "ETSI", "5G", "80M", "VHT", "3T", "58", "28", + "MKK", "5G", "80M", "VHT", "3T", "58", "28", + "FCC", "5G", "80M", "VHT", "3T", "106", "24", + "ETSI", "5G", "80M", "VHT", "3T", "106", "28", + "MKK", "5G", "80M", "VHT", "3T", "106", "28", + "FCC", "5G", "80M", "VHT", "3T", "122", "24", + "ETSI", "5G", "80M", "VHT", "3T", "122", "28", + "MKK", "5G", "80M", "VHT", "3T", "122", "28", + "FCC", "5G", "80M", "VHT", "3T", "155", "24", + "ETSI", "5G", "80M", "VHT", "3T", "155", "28", + "MKK", "5G", "80M", "VHT", "3T", "155", "63", + "FCC", "5G", "80M", "VHT", "4T", "42", "20", + "ETSI", "5G", "80M", "VHT", "4T", "42", "26", + "MKK", "5G", "80M", "VHT", "4T", "42", "26", + "FCC", "5G", "80M", "VHT", "4T", "58", "20", + "ETSI", "5G", "80M", "VHT", "4T", "58", "26", + "MKK", "5G", "80M", "VHT", "4T", "58", "26", + "FCC", "5G", "80M", "VHT", "4T", "106", "22", + "ETSI", "5G", "80M", "VHT", "4T", "106", "26", + "MKK", "5G", "80M", "VHT", "4T", "106", "26", + "FCC", "5G", "80M", "VHT", "4T", "122", "22", + "ETSI", "5G", "80M", "VHT", "4T", "122", "26", + "MKK", "5G", "80M", "VHT", "4T", "122", "26", + "FCC", "5G", "80M", "VHT", "4T", "155", "22", + "ETSI", "5G", "80M", "VHT", "4T", "155", "26", + "MKK", "5G", "80M", "VHT", "4T", "155", "63" +}; +#endif + +void +odm_read_and_config_mp_8814a_txpwr_lmt_type7(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE7 + + u32 i = 0; +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type7) / sizeof(u8); + u8 *array = (u8 *)array_mp_8814a_txpwr_lmt_type7; +#else + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type7) / sizeof(u8 *); + u8 **array = (u8 **)array_mp_8814a_txpwr_lmt_type7; +#endif + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrLmt, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrLmt = array_len / 7; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + for (i = 0; i < array_len; i += 7) { +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u8 regulation = array[i]; + u8 band = array[i + 1]; + u8 bandwidth = array[i + 2]; + u8 rate = array[i + 3]; + u8 rf_path = array[i + 4]; + u8 chnl = array[i + 5]; + u8 val = array[i + 6]; +#else + u8 *regulation = array[i]; + u8 *band = array[i + 1]; + u8 *bandwidth = array[i + 2]; + u8 *rate = array[i + 3]; + u8 *rf_path = array[i + 4]; + u8 *chnl = array[i + 5]; + u8 *val = array[i + 6]; +#endif + + odm_config_bb_txpwr_lmt_8814a(dm, regulation, band, bandwidth, + rate, rf_path, chnl, val); +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrLmt[i / 7], 100, "\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\",", + regulation, band, bandwidth, rate, rf_path, chnl, val); +#endif + } + +#endif +} + +/****************************************************************************** + * txpwr_lmt_type8.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE8 +const char *array_mp_8814a_txpwr_lmt_type8[] = { + "FCC", "2.4G", "20M", "CCK", "1T", "01", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "01", "46", + "MKK", "2.4G", "20M", "CCK", "1T", "01", "46", + "FCC", "2.4G", "20M", "CCK", "1T", "02", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "02", "46", + "MKK", "2.4G", "20M", "CCK", "1T", "02", "46", + "FCC", "2.4G", "20M", "CCK", "1T", "03", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "03", "46", + "MKK", "2.4G", "20M", "CCK", "1T", "03", "46", + "FCC", "2.4G", "20M", "CCK", "1T", "04", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "04", "46", + "MKK", "2.4G", "20M", "CCK", "1T", "04", "46", + "FCC", "2.4G", "20M", "CCK", "1T", "05", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "05", "46", + "MKK", "2.4G", "20M", "CCK", "1T", "05", "46", + "FCC", "2.4G", "20M", "CCK", "1T", "06", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "06", "46", + "MKK", "2.4G", "20M", "CCK", "1T", "06", "46", + "FCC", "2.4G", "20M", "CCK", "1T", "07", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "07", "46", + "MKK", "2.4G", "20M", "CCK", "1T", "07", "46", + "FCC", "2.4G", "20M", "CCK", "1T", "08", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "08", "46", + "MKK", "2.4G", "20M", "CCK", "1T", "08", "46", + "FCC", "2.4G", "20M", "CCK", "1T", "09", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "09", "46", + "MKK", "2.4G", "20M", "CCK", "1T", "09", "46", + "FCC", "2.4G", "20M", "CCK", "1T", "10", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "10", "46", + "MKK", "2.4G", "20M", "CCK", "1T", "10", "46", + "FCC", "2.4G", "20M", "CCK", "1T", "11", "46", + "ETSI", "2.4G", "20M", "CCK", "1T", "11", "46", + "MKK", "2.4G", "20M", "CCK", "1T", "11", "46", + "FCC", "2.4G", "20M", "CCK", "1T", "12", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "12", "46", + "MKK", "2.4G", "20M", "CCK", "1T", "12", "46", + "FCC", "2.4G", "20M", "CCK", "1T", "13", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "13", "46", + "MKK", "2.4G", "20M", "CCK", "1T", "13", "46", + "FCC", "2.4G", "20M", "CCK", "1T", "14", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", + "MKK", "2.4G", "20M", "CCK", "1T", "14", "46", + "FCC", "2.4G", "20M", "OFDM", "1T", "01", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "46", + "MKK", "2.4G", "20M", "OFDM", "1T", "01", "46", + "FCC", "2.4G", "20M", "OFDM", "1T", "02", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "46", + "MKK", "2.4G", "20M", "OFDM", "1T", "02", "46", + "FCC", "2.4G", "20M", "OFDM", "1T", "03", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "46", + "MKK", "2.4G", "20M", "OFDM", "1T", "03", "46", + "FCC", "2.4G", "20M", "OFDM", "1T", "04", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "46", + "MKK", "2.4G", "20M", "OFDM", "1T", "04", "46", + "FCC", "2.4G", "20M", "OFDM", "1T", "05", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "46", + "MKK", "2.4G", "20M", "OFDM", "1T", "05", "46", + "FCC", "2.4G", "20M", "OFDM", "1T", "06", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "46", + "MKK", "2.4G", "20M", "OFDM", "1T", "06", "46", + "FCC", "2.4G", "20M", "OFDM", "1T", "07", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "46", + "MKK", "2.4G", "20M", "OFDM", "1T", "07", "46", + "FCC", "2.4G", "20M", "OFDM", "1T", "08", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "46", + "MKK", "2.4G", "20M", "OFDM", "1T", "08", "46", + "FCC", "2.4G", "20M", "OFDM", "1T", "09", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "46", + "MKK", "2.4G", "20M", "OFDM", "1T", "09", "46", + "FCC", "2.4G", "20M", "OFDM", "1T", "10", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "46", + "MKK", "2.4G", "20M", "OFDM", "1T", "10", "46", + "FCC", "2.4G", "20M", "OFDM", "1T", "11", "46", + "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "46", + "MKK", "2.4G", "20M", "OFDM", "1T", "11", "46", + "FCC", "2.4G", "20M", "OFDM", "1T", "12", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "46", + "MKK", "2.4G", "20M", "OFDM", "1T", "12", "46", + "FCC", "2.4G", "20M", "OFDM", "1T", "13", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "46", + "MKK", "2.4G", "20M", "OFDM", "1T", "13", "46", + "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63", + "MKK", "2.4G", "20M", "OFDM", "1T", "14", "46", + "FCC", "2.4G", "20M", "HT", "1T", "01", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "01", "46", + "MKK", "2.4G", "20M", "HT", "1T", "01", "46", + "FCC", "2.4G", "20M", "HT", "1T", "02", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "02", "46", + "MKK", "2.4G", "20M", "HT", "1T", "02", "46", + "FCC", "2.4G", "20M", "HT", "1T", "03", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "03", "46", + "MKK", "2.4G", "20M", "HT", "1T", "03", "46", + "FCC", "2.4G", "20M", "HT", "1T", "04", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "04", "46", + "MKK", "2.4G", "20M", "HT", "1T", "04", "46", + "FCC", "2.4G", "20M", "HT", "1T", "05", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "05", "46", + "MKK", "2.4G", "20M", "HT", "1T", "05", "46", + "FCC", "2.4G", "20M", "HT", "1T", "06", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "06", "46", + "MKK", "2.4G", "20M", "HT", "1T", "06", "46", + "FCC", "2.4G", "20M", "HT", "1T", "07", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "07", "46", + "MKK", "2.4G", "20M", "HT", "1T", "07", "46", + "FCC", "2.4G", "20M", "HT", "1T", "08", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "08", "46", + "MKK", "2.4G", "20M", "HT", "1T", "08", "46", + "FCC", "2.4G", "20M", "HT", "1T", "09", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "09", "46", + "MKK", "2.4G", "20M", "HT", "1T", "09", "46", + "FCC", "2.4G", "20M", "HT", "1T", "10", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "10", "46", + "MKK", "2.4G", "20M", "HT", "1T", "10", "46", + "FCC", "2.4G", "20M", "HT", "1T", "11", "46", + "ETSI", "2.4G", "20M", "HT", "1T", "11", "46", + "MKK", "2.4G", "20M", "HT", "1T", "11", "46", + "FCC", "2.4G", "20M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "12", "46", + "MKK", "2.4G", "20M", "HT", "1T", "12", "46", + "FCC", "2.4G", "20M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "13", "46", + "MKK", "2.4G", "20M", "HT", "1T", "13", "46", + "FCC", "2.4G", "20M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "14", "63", + "MKK", "2.4G", "20M", "HT", "1T", "14", "46", + "FCC", "2.4G", "20M", "HT", "2T", "01", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "01", "46", + "MKK", "2.4G", "20M", "HT", "2T", "01", "46", + "FCC", "2.4G", "20M", "HT", "2T", "02", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "02", "46", + "MKK", "2.4G", "20M", "HT", "2T", "02", "46", + "FCC", "2.4G", "20M", "HT", "2T", "03", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "03", "46", + "MKK", "2.4G", "20M", "HT", "2T", "03", "46", + "FCC", "2.4G", "20M", "HT", "2T", "04", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "04", "46", + "MKK", "2.4G", "20M", "HT", "2T", "04", "46", + "FCC", "2.4G", "20M", "HT", "2T", "05", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "05", "46", + "MKK", "2.4G", "20M", "HT", "2T", "05", "46", + "FCC", "2.4G", "20M", "HT", "2T", "06", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "06", "46", + "MKK", "2.4G", "20M", "HT", "2T", "06", "46", + "FCC", "2.4G", "20M", "HT", "2T", "07", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "07", "46", + "MKK", "2.4G", "20M", "HT", "2T", "07", "46", + "FCC", "2.4G", "20M", "HT", "2T", "08", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "08", "46", + "MKK", "2.4G", "20M", "HT", "2T", "08", "46", + "FCC", "2.4G", "20M", "HT", "2T", "09", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "09", "46", + "MKK", "2.4G", "20M", "HT", "2T", "09", "46", + "FCC", "2.4G", "20M", "HT", "2T", "10", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "10", "46", + "MKK", "2.4G", "20M", "HT", "2T", "10", "46", + "FCC", "2.4G", "20M", "HT", "2T", "11", "46", + "ETSI", "2.4G", "20M", "HT", "2T", "11", "46", + "MKK", "2.4G", "20M", "HT", "2T", "11", "46", + "FCC", "2.4G", "20M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "12", "46", + "MKK", "2.4G", "20M", "HT", "2T", "12", "46", + "FCC", "2.4G", "20M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "13", "46", + "MKK", "2.4G", "20M", "HT", "2T", "13", "46", + "FCC", "2.4G", "20M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", + "MKK", "2.4G", "20M", "HT", "2T", "14", "46", + "FCC", "2.4G", "20M", "HT", "3T", "01", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "01", "46", + "MKK", "2.4G", "20M", "HT", "3T", "01", "46", + "FCC", "2.4G", "20M", "HT", "3T", "02", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "02", "46", + "MKK", "2.4G", "20M", "HT", "3T", "02", "46", + "FCC", "2.4G", "20M", "HT", "3T", "03", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "03", "46", + "MKK", "2.4G", "20M", "HT", "3T", "03", "46", + "FCC", "2.4G", "20M", "HT", "3T", "04", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "04", "46", + "MKK", "2.4G", "20M", "HT", "3T", "04", "46", + "FCC", "2.4G", "20M", "HT", "3T", "05", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "05", "46", + "MKK", "2.4G", "20M", "HT", "3T", "05", "46", + "FCC", "2.4G", "20M", "HT", "3T", "06", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "06", "46", + "MKK", "2.4G", "20M", "HT", "3T", "06", "46", + "FCC", "2.4G", "20M", "HT", "3T", "07", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "07", "46", + "MKK", "2.4G", "20M", "HT", "3T", "07", "46", + "FCC", "2.4G", "20M", "HT", "3T", "08", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "08", "46", + "MKK", "2.4G", "20M", "HT", "3T", "08", "46", + "FCC", "2.4G", "20M", "HT", "3T", "09", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "09", "46", + "MKK", "2.4G", "20M", "HT", "3T", "09", "46", + "FCC", "2.4G", "20M", "HT", "3T", "10", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "10", "46", + "MKK", "2.4G", "20M", "HT", "3T", "10", "46", + "FCC", "2.4G", "20M", "HT", "3T", "11", "46", + "ETSI", "2.4G", "20M", "HT", "3T", "11", "46", + "MKK", "2.4G", "20M", "HT", "3T", "11", "46", + "FCC", "2.4G", "20M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "12", "46", + "MKK", "2.4G", "20M", "HT", "3T", "12", "46", + "FCC", "2.4G", "20M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "13", "46", + "MKK", "2.4G", "20M", "HT", "3T", "13", "46", + "FCC", "2.4G", "20M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "14", "63", + "MKK", "2.4G", "20M", "HT", "3T", "14", "46", + "FCC", "2.4G", "20M", "HT", "4T", "01", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "01", "46", + "MKK", "2.4G", "20M", "HT", "4T", "01", "46", + "FCC", "2.4G", "20M", "HT", "4T", "02", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "02", "46", + "MKK", "2.4G", "20M", "HT", "4T", "02", "46", + "FCC", "2.4G", "20M", "HT", "4T", "03", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "03", "46", + "MKK", "2.4G", "20M", "HT", "4T", "03", "46", + "FCC", "2.4G", "20M", "HT", "4T", "04", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "04", "46", + "MKK", "2.4G", "20M", "HT", "4T", "04", "46", + "FCC", "2.4G", "20M", "HT", "4T", "05", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "05", "46", + "MKK", "2.4G", "20M", "HT", "4T", "05", "46", + "FCC", "2.4G", "20M", "HT", "4T", "06", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "06", "46", + "MKK", "2.4G", "20M", "HT", "4T", "06", "46", + "FCC", "2.4G", "20M", "HT", "4T", "07", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "07", "46", + "MKK", "2.4G", "20M", "HT", "4T", "07", "46", + "FCC", "2.4G", "20M", "HT", "4T", "08", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "08", "46", + "MKK", "2.4G", "20M", "HT", "4T", "08", "46", + "FCC", "2.4G", "20M", "HT", "4T", "09", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "09", "46", + "MKK", "2.4G", "20M", "HT", "4T", "09", "46", + "FCC", "2.4G", "20M", "HT", "4T", "10", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "10", "46", + "MKK", "2.4G", "20M", "HT", "4T", "10", "46", + "FCC", "2.4G", "20M", "HT", "4T", "11", "46", + "ETSI", "2.4G", "20M", "HT", "4T", "11", "46", + "MKK", "2.4G", "20M", "HT", "4T", "11", "46", + "FCC", "2.4G", "20M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "12", "46", + "MKK", "2.4G", "20M", "HT", "4T", "12", "46", + "FCC", "2.4G", "20M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "13", "46", + "MKK", "2.4G", "20M", "HT", "4T", "13", "46", + "FCC", "2.4G", "20M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "14", "63", + "MKK", "2.4G", "20M", "HT", "4T", "14", "46", + "FCC", "2.4G", "40M", "HT", "1T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "01", "63", + "MKK", "2.4G", "40M", "HT", "1T", "01", "63", + "FCC", "2.4G", "40M", "HT", "1T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "02", "63", + "MKK", "2.4G", "40M", "HT", "1T", "02", "63", + "FCC", "2.4G", "40M", "HT", "1T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "1T", "03", "34", + "MKK", "2.4G", "40M", "HT", "1T", "03", "34", + "FCC", "2.4G", "40M", "HT", "1T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "04", "34", + "MKK", "2.4G", "40M", "HT", "1T", "04", "34", + "FCC", "2.4G", "40M", "HT", "1T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "05", "34", + "MKK", "2.4G", "40M", "HT", "1T", "05", "34", + "FCC", "2.4G", "40M", "HT", "1T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "06", "34", + "MKK", "2.4G", "40M", "HT", "1T", "06", "34", + "FCC", "2.4G", "40M", "HT", "1T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "07", "34", + "MKK", "2.4G", "40M", "HT", "1T", "07", "34", + "FCC", "2.4G", "40M", "HT", "1T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "08", "34", + "MKK", "2.4G", "40M", "HT", "1T", "08", "34", + "FCC", "2.4G", "40M", "HT", "1T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "09", "34", + "MKK", "2.4G", "40M", "HT", "1T", "09", "34", + "FCC", "2.4G", "40M", "HT", "1T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "10", "34", + "MKK", "2.4G", "40M", "HT", "1T", "10", "34", + "FCC", "2.4G", "40M", "HT", "1T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "1T", "11", "34", + "MKK", "2.4G", "40M", "HT", "1T", "11", "34", + "FCC", "2.4G", "40M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "12", "34", + "MKK", "2.4G", "40M", "HT", "1T", "12", "34", + "FCC", "2.4G", "40M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "13", "34", + "MKK", "2.4G", "40M", "HT", "1T", "13", "34", + "FCC", "2.4G", "40M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "14", "63", + "MKK", "2.4G", "40M", "HT", "1T", "14", "63", + "FCC", "2.4G", "40M", "HT", "2T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", + "MKK", "2.4G", "40M", "HT", "2T", "01", "63", + "FCC", "2.4G", "40M", "HT", "2T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "02", "63", + "MKK", "2.4G", "40M", "HT", "2T", "02", "63", + "FCC", "2.4G", "40M", "HT", "2T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "03", "34", + "MKK", "2.4G", "40M", "HT", "2T", "03", "34", + "FCC", "2.4G", "40M", "HT", "2T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "04", "34", + "MKK", "2.4G", "40M", "HT", "2T", "04", "34", + "FCC", "2.4G", "40M", "HT", "2T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "05", "34", + "MKK", "2.4G", "40M", "HT", "2T", "05", "34", + "FCC", "2.4G", "40M", "HT", "2T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "06", "34", + "MKK", "2.4G", "40M", "HT", "2T", "06", "34", + "FCC", "2.4G", "40M", "HT", "2T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "07", "34", + "MKK", "2.4G", "40M", "HT", "2T", "07", "34", + "FCC", "2.4G", "40M", "HT", "2T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "08", "34", + "MKK", "2.4G", "40M", "HT", "2T", "08", "34", + "FCC", "2.4G", "40M", "HT", "2T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "09", "34", + "MKK", "2.4G", "40M", "HT", "2T", "09", "34", + "FCC", "2.4G", "40M", "HT", "2T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "10", "34", + "MKK", "2.4G", "40M", "HT", "2T", "10", "34", + "FCC", "2.4G", "40M", "HT", "2T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "2T", "11", "34", + "MKK", "2.4G", "40M", "HT", "2T", "11", "34", + "FCC", "2.4G", "40M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "12", "34", + "MKK", "2.4G", "40M", "HT", "2T", "12", "34", + "FCC", "2.4G", "40M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "13", "34", + "MKK", "2.4G", "40M", "HT", "2T", "13", "34", + "FCC", "2.4G", "40M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "14", "63", + "MKK", "2.4G", "40M", "HT", "2T", "14", "63", + "FCC", "2.4G", "40M", "HT", "3T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "01", "63", + "MKK", "2.4G", "40M", "HT", "3T", "01", "63", + "FCC", "2.4G", "40M", "HT", "3T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "02", "63", + "MKK", "2.4G", "40M", "HT", "3T", "02", "63", + "FCC", "2.4G", "40M", "HT", "3T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "3T", "03", "34", + "MKK", "2.4G", "40M", "HT", "3T", "03", "34", + "FCC", "2.4G", "40M", "HT", "3T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "04", "34", + "MKK", "2.4G", "40M", "HT", "3T", "04", "34", + "FCC", "2.4G", "40M", "HT", "3T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "05", "34", + "MKK", "2.4G", "40M", "HT", "3T", "05", "34", + "FCC", "2.4G", "40M", "HT", "3T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "06", "34", + "MKK", "2.4G", "40M", "HT", "3T", "06", "34", + "FCC", "2.4G", "40M", "HT", "3T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "07", "34", + "MKK", "2.4G", "40M", "HT", "3T", "07", "34", + "FCC", "2.4G", "40M", "HT", "3T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "08", "34", + "MKK", "2.4G", "40M", "HT", "3T", "08", "34", + "FCC", "2.4G", "40M", "HT", "3T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "09", "34", + "MKK", "2.4G", "40M", "HT", "3T", "09", "34", + "FCC", "2.4G", "40M", "HT", "3T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "10", "34", + "MKK", "2.4G", "40M", "HT", "3T", "10", "34", + "FCC", "2.4G", "40M", "HT", "3T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "3T", "11", "34", + "MKK", "2.4G", "40M", "HT", "3T", "11", "34", + "FCC", "2.4G", "40M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "12", "34", + "MKK", "2.4G", "40M", "HT", "3T", "12", "34", + "FCC", "2.4G", "40M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "13", "34", + "MKK", "2.4G", "40M", "HT", "3T", "13", "34", + "FCC", "2.4G", "40M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "14", "63", + "MKK", "2.4G", "40M", "HT", "3T", "14", "63", + "FCC", "2.4G", "40M", "HT", "4T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "01", "63", + "MKK", "2.4G", "40M", "HT", "4T", "01", "63", + "FCC", "2.4G", "40M", "HT", "4T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "02", "63", + "MKK", "2.4G", "40M", "HT", "4T", "02", "63", + "FCC", "2.4G", "40M", "HT", "4T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "4T", "03", "34", + "MKK", "2.4G", "40M", "HT", "4T", "03", "34", + "FCC", "2.4G", "40M", "HT", "4T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "04", "34", + "MKK", "2.4G", "40M", "HT", "4T", "04", "34", + "FCC", "2.4G", "40M", "HT", "4T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "05", "34", + "MKK", "2.4G", "40M", "HT", "4T", "05", "34", + "FCC", "2.4G", "40M", "HT", "4T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "06", "34", + "MKK", "2.4G", "40M", "HT", "4T", "06", "34", + "FCC", "2.4G", "40M", "HT", "4T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "07", "34", + "MKK", "2.4G", "40M", "HT", "4T", "07", "34", + "FCC", "2.4G", "40M", "HT", "4T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "08", "34", + "MKK", "2.4G", "40M", "HT", "4T", "08", "34", + "FCC", "2.4G", "40M", "HT", "4T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "09", "34", + "MKK", "2.4G", "40M", "HT", "4T", "09", "34", + "FCC", "2.4G", "40M", "HT", "4T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "10", "34", + "MKK", "2.4G", "40M", "HT", "4T", "10", "34", + "FCC", "2.4G", "40M", "HT", "4T", "11", "28", + "ETSI", "2.4G", "40M", "HT", "4T", "11", "34", + "MKK", "2.4G", "40M", "HT", "4T", "11", "34", + "FCC", "2.4G", "40M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "12", "34", + "MKK", "2.4G", "40M", "HT", "4T", "12", "34", + "FCC", "2.4G", "40M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "13", "34", + "MKK", "2.4G", "40M", "HT", "4T", "13", "34", + "FCC", "2.4G", "40M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "14", "63", + "MKK", "2.4G", "40M", "HT", "4T", "14", "63", + "FCC", "5G", "20M", "OFDM", "1T", "36", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "36", "46", + "MKK", "5G", "20M", "OFDM", "1T", "36", "46", + "FCC", "5G", "20M", "OFDM", "1T", "40", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "40", "46", + "MKK", "5G", "20M", "OFDM", "1T", "40", "46", + "FCC", "5G", "20M", "OFDM", "1T", "44", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "44", "46", + "MKK", "5G", "20M", "OFDM", "1T", "44", "46", + "FCC", "5G", "20M", "OFDM", "1T", "48", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "48", "46", + "MKK", "5G", "20M", "OFDM", "1T", "48", "46", + "FCC", "5G", "20M", "OFDM", "1T", "52", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "52", "46", + "MKK", "5G", "20M", "OFDM", "1T", "52", "46", + "FCC", "5G", "20M", "OFDM", "1T", "56", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "56", "46", + "MKK", "5G", "20M", "OFDM", "1T", "56", "46", + "FCC", "5G", "20M", "OFDM", "1T", "60", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "60", "46", + "MKK", "5G", "20M", "OFDM", "1T", "60", "46", + "FCC", "5G", "20M", "OFDM", "1T", "64", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "64", "46", + "MKK", "5G", "20M", "OFDM", "1T", "64", "46", + "FCC", "5G", "20M", "OFDM", "1T", "100", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "100", "46", + "MKK", "5G", "20M", "OFDM", "1T", "100", "46", + "FCC", "5G", "20M", "OFDM", "1T", "104", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "104", "46", + "MKK", "5G", "20M", "OFDM", "1T", "104", "46", + "FCC", "5G", "20M", "OFDM", "1T", "108", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "108", "46", + "MKK", "5G", "20M", "OFDM", "1T", "108", "46", + "FCC", "5G", "20M", "OFDM", "1T", "112", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "112", "46", + "MKK", "5G", "20M", "OFDM", "1T", "112", "46", + "FCC", "5G", "20M", "OFDM", "1T", "116", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "116", "46", + "MKK", "5G", "20M", "OFDM", "1T", "116", "46", + "FCC", "5G", "20M", "OFDM", "1T", "120", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "120", "46", + "MKK", "5G", "20M", "OFDM", "1T", "120", "46", + "FCC", "5G", "20M", "OFDM", "1T", "124", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "124", "46", + "MKK", "5G", "20M", "OFDM", "1T", "124", "46", + "FCC", "5G", "20M", "OFDM", "1T", "128", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "128", "46", + "MKK", "5G", "20M", "OFDM", "1T", "128", "46", + "FCC", "5G", "20M", "OFDM", "1T", "132", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "132", "46", + "MKK", "5G", "20M", "OFDM", "1T", "132", "46", + "FCC", "5G", "20M", "OFDM", "1T", "136", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "136", "46", + "MKK", "5G", "20M", "OFDM", "1T", "136", "46", + "FCC", "5G", "20M", "OFDM", "1T", "140", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "140", "46", + "MKK", "5G", "20M", "OFDM", "1T", "140", "46", + "FCC", "5G", "20M", "OFDM", "1T", "149", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "149", "46", + "MKK", "5G", "20M", "OFDM", "1T", "149", "63", + "FCC", "5G", "20M", "OFDM", "1T", "153", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "153", "46", + "MKK", "5G", "20M", "OFDM", "1T", "153", "63", + "FCC", "5G", "20M", "OFDM", "1T", "157", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "157", "46", + "MKK", "5G", "20M", "OFDM", "1T", "157", "63", + "FCC", "5G", "20M", "OFDM", "1T", "161", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "161", "46", + "MKK", "5G", "20M", "OFDM", "1T", "161", "63", + "FCC", "5G", "20M", "OFDM", "1T", "165", "46", + "ETSI", "5G", "20M", "OFDM", "1T", "165", "46", + "MKK", "5G", "20M", "OFDM", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "1T", "36", "46", + "ETSI", "5G", "20M", "HT", "1T", "36", "46", + "MKK", "5G", "20M", "HT", "1T", "36", "46", + "FCC", "5G", "20M", "HT", "1T", "40", "46", + "ETSI", "5G", "20M", "HT", "1T", "40", "46", + "MKK", "5G", "20M", "HT", "1T", "40", "46", + "FCC", "5G", "20M", "HT", "1T", "44", "46", + "ETSI", "5G", "20M", "HT", "1T", "44", "46", + "MKK", "5G", "20M", "HT", "1T", "44", "46", + "FCC", "5G", "20M", "HT", "1T", "48", "46", + "ETSI", "5G", "20M", "HT", "1T", "48", "46", + "MKK", "5G", "20M", "HT", "1T", "48", "46", + "FCC", "5G", "20M", "HT", "1T", "52", "46", + "ETSI", "5G", "20M", "HT", "1T", "52", "46", + "MKK", "5G", "20M", "HT", "1T", "52", "46", + "FCC", "5G", "20M", "HT", "1T", "56", "46", + "ETSI", "5G", "20M", "HT", "1T", "56", "46", + "MKK", "5G", "20M", "HT", "1T", "56", "46", + "FCC", "5G", "20M", "HT", "1T", "60", "46", + "ETSI", "5G", "20M", "HT", "1T", "60", "46", + "MKK", "5G", "20M", "HT", "1T", "60", "46", + "FCC", "5G", "20M", "HT", "1T", "64", "46", + "ETSI", "5G", "20M", "HT", "1T", "64", "46", + "MKK", "5G", "20M", "HT", "1T", "64", "46", + "FCC", "5G", "20M", "HT", "1T", "100", "46", + "ETSI", "5G", "20M", "HT", "1T", "100", "46", + "MKK", "5G", "20M", "HT", "1T", "100", "46", + "FCC", "5G", "20M", "HT", "1T", "104", "46", + "ETSI", "5G", "20M", "HT", "1T", "104", "46", + "MKK", "5G", "20M", "HT", "1T", "104", "46", + "FCC", "5G", "20M", "HT", "1T", "108", "46", + "ETSI", "5G", "20M", "HT", "1T", "108", "46", + "MKK", "5G", "20M", "HT", "1T", "108", "46", + "FCC", "5G", "20M", "HT", "1T", "112", "46", + "ETSI", "5G", "20M", "HT", "1T", "112", "46", + "MKK", "5G", "20M", "HT", "1T", "112", "46", + "FCC", "5G", "20M", "HT", "1T", "116", "46", + "ETSI", "5G", "20M", "HT", "1T", "116", "46", + "MKK", "5G", "20M", "HT", "1T", "116", "46", + "FCC", "5G", "20M", "HT", "1T", "120", "46", + "ETSI", "5G", "20M", "HT", "1T", "120", "46", + "MKK", "5G", "20M", "HT", "1T", "120", "46", + "FCC", "5G", "20M", "HT", "1T", "124", "46", + "ETSI", "5G", "20M", "HT", "1T", "124", "46", + "MKK", "5G", "20M", "HT", "1T", "124", "46", + "FCC", "5G", "20M", "HT", "1T", "128", "46", + "ETSI", "5G", "20M", "HT", "1T", "128", "46", + "MKK", "5G", "20M", "HT", "1T", "128", "46", + "FCC", "5G", "20M", "HT", "1T", "132", "46", + "ETSI", "5G", "20M", "HT", "1T", "132", "46", + "MKK", "5G", "20M", "HT", "1T", "132", "46", + "FCC", "5G", "20M", "HT", "1T", "136", "46", + "ETSI", "5G", "20M", "HT", "1T", "136", "46", + "MKK", "5G", "20M", "HT", "1T", "136", "46", + "FCC", "5G", "20M", "HT", "1T", "140", "46", + "ETSI", "5G", "20M", "HT", "1T", "140", "46", + "MKK", "5G", "20M", "HT", "1T", "140", "46", + "FCC", "5G", "20M", "HT", "1T", "149", "46", + "ETSI", "5G", "20M", "HT", "1T", "149", "46", + "MKK", "5G", "20M", "HT", "1T", "149", "63", + "FCC", "5G", "20M", "HT", "1T", "153", "46", + "ETSI", "5G", "20M", "HT", "1T", "153", "46", + "MKK", "5G", "20M", "HT", "1T", "153", "63", + "FCC", "5G", "20M", "HT", "1T", "157", "46", + "ETSI", "5G", "20M", "HT", "1T", "157", "46", + "MKK", "5G", "20M", "HT", "1T", "157", "63", + "FCC", "5G", "20M", "HT", "1T", "161", "46", + "ETSI", "5G", "20M", "HT", "1T", "161", "46", + "MKK", "5G", "20M", "HT", "1T", "161", "63", + "FCC", "5G", "20M", "HT", "1T", "165", "46", + "ETSI", "5G", "20M", "HT", "1T", "165", "46", + "MKK", "5G", "20M", "HT", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "2T", "36", "46", + "ETSI", "5G", "20M", "HT", "2T", "36", "46", + "MKK", "5G", "20M", "HT", "2T", "36", "46", + "FCC", "5G", "20M", "HT", "2T", "40", "46", + "ETSI", "5G", "20M", "HT", "2T", "40", "46", + "MKK", "5G", "20M", "HT", "2T", "40", "46", + "FCC", "5G", "20M", "HT", "2T", "44", "46", + "ETSI", "5G", "20M", "HT", "2T", "44", "46", + "MKK", "5G", "20M", "HT", "2T", "44", "46", + "FCC", "5G", "20M", "HT", "2T", "48", "46", + "ETSI", "5G", "20M", "HT", "2T", "48", "46", + "MKK", "5G", "20M", "HT", "2T", "48", "46", + "FCC", "5G", "20M", "HT", "2T", "52", "46", + "ETSI", "5G", "20M", "HT", "2T", "52", "46", + "MKK", "5G", "20M", "HT", "2T", "52", "46", + "FCC", "5G", "20M", "HT", "2T", "56", "46", + "ETSI", "5G", "20M", "HT", "2T", "56", "46", + "MKK", "5G", "20M", "HT", "2T", "56", "46", + "FCC", "5G", "20M", "HT", "2T", "60", "46", + "ETSI", "5G", "20M", "HT", "2T", "60", "46", + "MKK", "5G", "20M", "HT", "2T", "60", "46", + "FCC", "5G", "20M", "HT", "2T", "64", "46", + "ETSI", "5G", "20M", "HT", "2T", "64", "46", + "MKK", "5G", "20M", "HT", "2T", "64", "46", + "FCC", "5G", "20M", "HT", "2T", "100", "46", + "ETSI", "5G", "20M", "HT", "2T", "100", "46", + "MKK", "5G", "20M", "HT", "2T", "100", "46", + "FCC", "5G", "20M", "HT", "2T", "104", "46", + "ETSI", "5G", "20M", "HT", "2T", "104", "46", + "MKK", "5G", "20M", "HT", "2T", "104", "46", + "FCC", "5G", "20M", "HT", "2T", "108", "46", + "ETSI", "5G", "20M", "HT", "2T", "108", "46", + "MKK", "5G", "20M", "HT", "2T", "108", "46", + "FCC", "5G", "20M", "HT", "2T", "112", "46", + "ETSI", "5G", "20M", "HT", "2T", "112", "46", + "MKK", "5G", "20M", "HT", "2T", "112", "46", + "FCC", "5G", "20M", "HT", "2T", "116", "46", + "ETSI", "5G", "20M", "HT", "2T", "116", "46", + "MKK", "5G", "20M", "HT", "2T", "116", "46", + "FCC", "5G", "20M", "HT", "2T", "120", "46", + "ETSI", "5G", "20M", "HT", "2T", "120", "46", + "MKK", "5G", "20M", "HT", "2T", "120", "46", + "FCC", "5G", "20M", "HT", "2T", "124", "46", + "ETSI", "5G", "20M", "HT", "2T", "124", "46", + "MKK", "5G", "20M", "HT", "2T", "124", "46", + "FCC", "5G", "20M", "HT", "2T", "128", "46", + "ETSI", "5G", "20M", "HT", "2T", "128", "46", + "MKK", "5G", "20M", "HT", "2T", "128", "46", + "FCC", "5G", "20M", "HT", "2T", "132", "46", + "ETSI", "5G", "20M", "HT", "2T", "132", "46", + "MKK", "5G", "20M", "HT", "2T", "132", "46", + "FCC", "5G", "20M", "HT", "2T", "136", "46", + "ETSI", "5G", "20M", "HT", "2T", "136", "46", + "MKK", "5G", "20M", "HT", "2T", "136", "46", + "FCC", "5G", "20M", "HT", "2T", "140", "46", + "ETSI", "5G", "20M", "HT", "2T", "140", "46", + "MKK", "5G", "20M", "HT", "2T", "140", "46", + "FCC", "5G", "20M", "HT", "2T", "149", "46", + "ETSI", "5G", "20M", "HT", "2T", "149", "46", + "MKK", "5G", "20M", "HT", "2T", "149", "63", + "FCC", "5G", "20M", "HT", "2T", "153", "46", + "ETSI", "5G", "20M", "HT", "2T", "153", "46", + "MKK", "5G", "20M", "HT", "2T", "153", "63", + "FCC", "5G", "20M", "HT", "2T", "157", "46", + "ETSI", "5G", "20M", "HT", "2T", "157", "46", + "MKK", "5G", "20M", "HT", "2T", "157", "63", + "FCC", "5G", "20M", "HT", "2T", "161", "46", + "ETSI", "5G", "20M", "HT", "2T", "161", "46", + "MKK", "5G", "20M", "HT", "2T", "161", "63", + "FCC", "5G", "20M", "HT", "2T", "165", "46", + "ETSI", "5G", "20M", "HT", "2T", "165", "46", + "MKK", "5G", "20M", "HT", "2T", "165", "63", + "FCC", "5G", "20M", "HT", "3T", "36", "46", + "ETSI", "5G", "20M", "HT", "3T", "36", "46", + "MKK", "5G", "20M", "HT", "3T", "36", "46", + "FCC", "5G", "20M", "HT", "3T", "40", "46", + "ETSI", "5G", "20M", "HT", "3T", "40", "46", + "MKK", "5G", "20M", "HT", "3T", "40", "46", + "FCC", "5G", "20M", "HT", "3T", "44", "46", + "ETSI", "5G", "20M", "HT", "3T", "44", "46", + "MKK", "5G", "20M", "HT", "3T", "44", "46", + "FCC", "5G", "20M", "HT", "3T", "48", "46", + "ETSI", "5G", "20M", "HT", "3T", "48", "46", + "MKK", "5G", "20M", "HT", "3T", "48", "46", + "FCC", "5G", "20M", "HT", "3T", "52", "46", + "ETSI", "5G", "20M", "HT", "3T", "52", "46", + "MKK", "5G", "20M", "HT", "3T", "52", "46", + "FCC", "5G", "20M", "HT", "3T", "56", "46", + "ETSI", "5G", "20M", "HT", "3T", "56", "46", + "MKK", "5G", "20M", "HT", "3T", "56", "46", + "FCC", "5G", "20M", "HT", "3T", "60", "46", + "ETSI", "5G", "20M", "HT", "3T", "60", "46", + "MKK", "5G", "20M", "HT", "3T", "60", "46", + "FCC", "5G", "20M", "HT", "3T", "64", "46", + "ETSI", "5G", "20M", "HT", "3T", "64", "46", + "MKK", "5G", "20M", "HT", "3T", "64", "46", + "FCC", "5G", "20M", "HT", "3T", "100", "46", + "ETSI", "5G", "20M", "HT", "3T", "100", "46", + "MKK", "5G", "20M", "HT", "3T", "100", "46", + "FCC", "5G", "20M", "HT", "3T", "104", "46", + "ETSI", "5G", "20M", "HT", "3T", "104", "46", + "MKK", "5G", "20M", "HT", "3T", "104", "46", + "FCC", "5G", "20M", "HT", "3T", "108", "46", + "ETSI", "5G", "20M", "HT", "3T", "108", "46", + "MKK", "5G", "20M", "HT", "3T", "108", "46", + "FCC", "5G", "20M", "HT", "3T", "112", "46", + "ETSI", "5G", "20M", "HT", "3T", "112", "46", + "MKK", "5G", "20M", "HT", "3T", "112", "46", + "FCC", "5G", "20M", "HT", "3T", "116", "46", + "ETSI", "5G", "20M", "HT", "3T", "116", "46", + "MKK", "5G", "20M", "HT", "3T", "116", "46", + "FCC", "5G", "20M", "HT", "3T", "120", "46", + "ETSI", "5G", "20M", "HT", "3T", "120", "46", + "MKK", "5G", "20M", "HT", "3T", "120", "46", + "FCC", "5G", "20M", "HT", "3T", "124", "46", + "ETSI", "5G", "20M", "HT", "3T", "124", "46", + "MKK", "5G", "20M", "HT", "3T", "124", "46", + "FCC", "5G", "20M", "HT", "3T", "128", "46", + "ETSI", "5G", "20M", "HT", "3T", "128", "46", + "MKK", "5G", "20M", "HT", "3T", "128", "46", + "FCC", "5G", "20M", "HT", "3T", "132", "46", + "ETSI", "5G", "20M", "HT", "3T", "132", "46", + "MKK", "5G", "20M", "HT", "3T", "132", "46", + "FCC", "5G", "20M", "HT", "3T", "136", "46", + "ETSI", "5G", "20M", "HT", "3T", "136", "46", + "MKK", "5G", "20M", "HT", "3T", "136", "46", + "FCC", "5G", "20M", "HT", "3T", "140", "46", + "ETSI", "5G", "20M", "HT", "3T", "140", "46", + "MKK", "5G", "20M", "HT", "3T", "140", "46", + "FCC", "5G", "20M", "HT", "3T", "149", "46", + "ETSI", "5G", "20M", "HT", "3T", "149", "46", + "MKK", "5G", "20M", "HT", "3T", "149", "63", + "FCC", "5G", "20M", "HT", "3T", "153", "46", + "ETSI", "5G", "20M", "HT", "3T", "153", "46", + "MKK", "5G", "20M", "HT", "3T", "153", "63", + "FCC", "5G", "20M", "HT", "3T", "157", "46", + "ETSI", "5G", "20M", "HT", "3T", "157", "46", + "MKK", "5G", "20M", "HT", "3T", "157", "63", + "FCC", "5G", "20M", "HT", "3T", "161", "46", + "ETSI", "5G", "20M", "HT", "3T", "161", "46", + "MKK", "5G", "20M", "HT", "3T", "161", "63", + "FCC", "5G", "20M", "HT", "3T", "165", "46", + "ETSI", "5G", "20M", "HT", "3T", "165", "46", + "MKK", "5G", "20M", "HT", "3T", "165", "63", + "FCC", "5G", "20M", "HT", "4T", "36", "46", + "ETSI", "5G", "20M", "HT", "4T", "36", "46", + "MKK", "5G", "20M", "HT", "4T", "36", "46", + "FCC", "5G", "20M", "HT", "4T", "40", "46", + "ETSI", "5G", "20M", "HT", "4T", "40", "46", + "MKK", "5G", "20M", "HT", "4T", "40", "46", + "FCC", "5G", "20M", "HT", "4T", "44", "46", + "ETSI", "5G", "20M", "HT", "4T", "44", "46", + "MKK", "5G", "20M", "HT", "4T", "44", "46", + "FCC", "5G", "20M", "HT", "4T", "48", "46", + "ETSI", "5G", "20M", "HT", "4T", "48", "46", + "MKK", "5G", "20M", "HT", "4T", "48", "46", + "FCC", "5G", "20M", "HT", "4T", "52", "46", + "ETSI", "5G", "20M", "HT", "4T", "52", "46", + "MKK", "5G", "20M", "HT", "4T", "52", "46", + "FCC", "5G", "20M", "HT", "4T", "56", "46", + "ETSI", "5G", "20M", "HT", "4T", "56", "46", + "MKK", "5G", "20M", "HT", "4T", "56", "46", + "FCC", "5G", "20M", "HT", "4T", "60", "46", + "ETSI", "5G", "20M", "HT", "4T", "60", "46", + "MKK", "5G", "20M", "HT", "4T", "60", "46", + "FCC", "5G", "20M", "HT", "4T", "64", "46", + "ETSI", "5G", "20M", "HT", "4T", "64", "46", + "MKK", "5G", "20M", "HT", "4T", "64", "46", + "FCC", "5G", "20M", "HT", "4T", "100", "46", + "ETSI", "5G", "20M", "HT", "4T", "100", "46", + "MKK", "5G", "20M", "HT", "4T", "100", "46", + "FCC", "5G", "20M", "HT", "4T", "104", "46", + "ETSI", "5G", "20M", "HT", "4T", "104", "46", + "MKK", "5G", "20M", "HT", "4T", "104", "46", + "FCC", "5G", "20M", "HT", "4T", "108", "46", + "ETSI", "5G", "20M", "HT", "4T", "108", "46", + "MKK", "5G", "20M", "HT", "4T", "108", "46", + "FCC", "5G", "20M", "HT", "4T", "112", "46", + "ETSI", "5G", "20M", "HT", "4T", "112", "46", + "MKK", "5G", "20M", "HT", "4T", "112", "46", + "FCC", "5G", "20M", "HT", "4T", "116", "46", + "ETSI", "5G", "20M", "HT", "4T", "116", "46", + "MKK", "5G", "20M", "HT", "4T", "116", "46", + "FCC", "5G", "20M", "HT", "4T", "120", "46", + "ETSI", "5G", "20M", "HT", "4T", "120", "46", + "MKK", "5G", "20M", "HT", "4T", "120", "46", + "FCC", "5G", "20M", "HT", "4T", "124", "46", + "ETSI", "5G", "20M", "HT", "4T", "124", "46", + "MKK", "5G", "20M", "HT", "4T", "124", "46", + "FCC", "5G", "20M", "HT", "4T", "128", "46", + "ETSI", "5G", "20M", "HT", "4T", "128", "46", + "MKK", "5G", "20M", "HT", "4T", "128", "46", + "FCC", "5G", "20M", "HT", "4T", "132", "46", + "ETSI", "5G", "20M", "HT", "4T", "132", "46", + "MKK", "5G", "20M", "HT", "4T", "132", "46", + "FCC", "5G", "20M", "HT", "4T", "136", "46", + "ETSI", "5G", "20M", "HT", "4T", "136", "46", + "MKK", "5G", "20M", "HT", "4T", "136", "46", + "FCC", "5G", "20M", "HT", "4T", "140", "46", + "ETSI", "5G", "20M", "HT", "4T", "140", "46", + "MKK", "5G", "20M", "HT", "4T", "140", "46", + "FCC", "5G", "20M", "HT", "4T", "149", "46", + "ETSI", "5G", "20M", "HT", "4T", "149", "46", + "MKK", "5G", "20M", "HT", "4T", "149", "63", + "FCC", "5G", "20M", "HT", "4T", "153", "46", + "ETSI", "5G", "20M", "HT", "4T", "153", "46", + "MKK", "5G", "20M", "HT", "4T", "153", "63", + "FCC", "5G", "20M", "HT", "4T", "157", "46", + "ETSI", "5G", "20M", "HT", "4T", "157", "46", + "MKK", "5G", "20M", "HT", "4T", "157", "63", + "FCC", "5G", "20M", "HT", "4T", "161", "46", + "ETSI", "5G", "20M", "HT", "4T", "161", "46", + "MKK", "5G", "20M", "HT", "4T", "161", "63", + "FCC", "5G", "20M", "HT", "4T", "165", "46", + "ETSI", "5G", "20M", "HT", "4T", "165", "46", + "MKK", "5G", "20M", "HT", "4T", "165", "63", + "FCC", "5G", "40M", "HT", "1T", "38", "46", + "ETSI", "5G", "40M", "HT", "1T", "38", "46", + "MKK", "5G", "40M", "HT", "1T", "38", "46", + "FCC", "5G", "40M", "HT", "1T", "46", "46", + "ETSI", "5G", "40M", "HT", "1T", "46", "46", + "MKK", "5G", "40M", "HT", "1T", "46", "46", + "FCC", "5G", "40M", "HT", "1T", "54", "46", + "ETSI", "5G", "40M", "HT", "1T", "54", "46", + "MKK", "5G", "40M", "HT", "1T", "54", "46", + "FCC", "5G", "40M", "HT", "1T", "62", "46", + "ETSI", "5G", "40M", "HT", "1T", "62", "46", + "MKK", "5G", "40M", "HT", "1T", "62", "46", + "FCC", "5G", "40M", "HT", "1T", "102", "46", + "ETSI", "5G", "40M", "HT", "1T", "102", "46", + "MKK", "5G", "40M", "HT", "1T", "102", "46", + "FCC", "5G", "40M", "HT", "1T", "110", "46", + "ETSI", "5G", "40M", "HT", "1T", "110", "46", + "MKK", "5G", "40M", "HT", "1T", "110", "46", + "FCC", "5G", "40M", "HT", "1T", "118", "46", + "ETSI", "5G", "40M", "HT", "1T", "118", "46", + "MKK", "5G", "40M", "HT", "1T", "118", "46", + "FCC", "5G", "40M", "HT", "1T", "126", "46", + "ETSI", "5G", "40M", "HT", "1T", "126", "46", + "MKK", "5G", "40M", "HT", "1T", "126", "46", + "FCC", "5G", "40M", "HT", "1T", "134", "46", + "ETSI", "5G", "40M", "HT", "1T", "134", "46", + "MKK", "5G", "40M", "HT", "1T", "134", "46", + "FCC", "5G", "40M", "HT", "1T", "151", "46", + "ETSI", "5G", "40M", "HT", "1T", "151", "46", + "MKK", "5G", "40M", "HT", "1T", "151", "63", + "FCC", "5G", "40M", "HT", "1T", "159", "46", + "ETSI", "5G", "40M", "HT", "1T", "159", "46", + "MKK", "5G", "40M", "HT", "1T", "159", "63", + "FCC", "5G", "40M", "HT", "2T", "38", "46", + "ETSI", "5G", "40M", "HT", "2T", "38", "46", + "MKK", "5G", "40M", "HT", "2T", "38", "46", + "FCC", "5G", "40M", "HT", "2T", "46", "46", + "ETSI", "5G", "40M", "HT", "2T", "46", "46", + "MKK", "5G", "40M", "HT", "2T", "46", "46", + "FCC", "5G", "40M", "HT", "2T", "54", "46", + "ETSI", "5G", "40M", "HT", "2T", "54", "46", + "MKK", "5G", "40M", "HT", "2T", "54", "46", + "FCC", "5G", "40M", "HT", "2T", "62", "46", + "ETSI", "5G", "40M", "HT", "2T", "62", "46", + "MKK", "5G", "40M", "HT", "2T", "62", "46", + "FCC", "5G", "40M", "HT", "2T", "102", "46", + "ETSI", "5G", "40M", "HT", "2T", "102", "46", + "MKK", "5G", "40M", "HT", "2T", "102", "46", + "FCC", "5G", "40M", "HT", "2T", "110", "46", + "ETSI", "5G", "40M", "HT", "2T", "110", "46", + "MKK", "5G", "40M", "HT", "2T", "110", "46", + "FCC", "5G", "40M", "HT", "2T", "118", "46", + "ETSI", "5G", "40M", "HT", "2T", "118", "46", + "MKK", "5G", "40M", "HT", "2T", "118", "46", + "FCC", "5G", "40M", "HT", "2T", "126", "46", + "ETSI", "5G", "40M", "HT", "2T", "126", "46", + "MKK", "5G", "40M", "HT", "2T", "126", "46", + "FCC", "5G", "40M", "HT", "2T", "134", "46", + "ETSI", "5G", "40M", "HT", "2T", "134", "46", + "MKK", "5G", "40M", "HT", "2T", "134", "46", + "FCC", "5G", "40M", "HT", "2T", "151", "46", + "ETSI", "5G", "40M", "HT", "2T", "151", "46", + "MKK", "5G", "40M", "HT", "2T", "151", "63", + "FCC", "5G", "40M", "HT", "2T", "159", "46", + "ETSI", "5G", "40M", "HT", "2T", "159", "46", + "MKK", "5G", "40M", "HT", "2T", "159", "63", + "FCC", "5G", "40M", "HT", "3T", "38", "46", + "ETSI", "5G", "40M", "HT", "3T", "38", "46", + "MKK", "5G", "40M", "HT", "3T", "38", "46", + "FCC", "5G", "40M", "HT", "3T", "46", "46", + "ETSI", "5G", "40M", "HT", "3T", "46", "46", + "MKK", "5G", "40M", "HT", "3T", "46", "46", + "FCC", "5G", "40M", "HT", "3T", "54", "46", + "ETSI", "5G", "40M", "HT", "3T", "54", "46", + "MKK", "5G", "40M", "HT", "3T", "54", "46", + "FCC", "5G", "40M", "HT", "3T", "62", "46", + "ETSI", "5G", "40M", "HT", "3T", "62", "46", + "MKK", "5G", "40M", "HT", "3T", "62", "46", + "FCC", "5G", "40M", "HT", "3T", "102", "46", + "ETSI", "5G", "40M", "HT", "3T", "102", "46", + "MKK", "5G", "40M", "HT", "3T", "102", "46", + "FCC", "5G", "40M", "HT", "3T", "110", "46", + "ETSI", "5G", "40M", "HT", "3T", "110", "46", + "MKK", "5G", "40M", "HT", "3T", "110", "46", + "FCC", "5G", "40M", "HT", "3T", "118", "46", + "ETSI", "5G", "40M", "HT", "3T", "118", "46", + "MKK", "5G", "40M", "HT", "3T", "118", "46", + "FCC", "5G", "40M", "HT", "3T", "126", "46", + "ETSI", "5G", "40M", "HT", "3T", "126", "46", + "MKK", "5G", "40M", "HT", "3T", "126", "46", + "FCC", "5G", "40M", "HT", "3T", "134", "46", + "ETSI", "5G", "40M", "HT", "3T", "134", "46", + "MKK", "5G", "40M", "HT", "3T", "134", "46", + "FCC", "5G", "40M", "HT", "3T", "151", "46", + "ETSI", "5G", "40M", "HT", "3T", "151", "46", + "MKK", "5G", "40M", "HT", "3T", "151", "63", + "FCC", "5G", "40M", "HT", "3T", "159", "46", + "ETSI", "5G", "40M", "HT", "3T", "159", "46", + "MKK", "5G", "40M", "HT", "3T", "159", "63", + "FCC", "5G", "40M", "HT", "4T", "38", "46", + "ETSI", "5G", "40M", "HT", "4T", "38", "46", + "MKK", "5G", "40M", "HT", "4T", "38", "46", + "FCC", "5G", "40M", "HT", "4T", "46", "46", + "ETSI", "5G", "40M", "HT", "4T", "46", "46", + "MKK", "5G", "40M", "HT", "4T", "46", "46", + "FCC", "5G", "40M", "HT", "4T", "54", "46", + "ETSI", "5G", "40M", "HT", "4T", "54", "46", + "MKK", "5G", "40M", "HT", "4T", "54", "46", + "FCC", "5G", "40M", "HT", "4T", "62", "46", + "ETSI", "5G", "40M", "HT", "4T", "62", "46", + "MKK", "5G", "40M", "HT", "4T", "62", "46", + "FCC", "5G", "40M", "HT", "4T", "102", "46", + "ETSI", "5G", "40M", "HT", "4T", "102", "46", + "MKK", "5G", "40M", "HT", "4T", "102", "46", + "FCC", "5G", "40M", "HT", "4T", "110", "46", + "ETSI", "5G", "40M", "HT", "4T", "110", "46", + "MKK", "5G", "40M", "HT", "4T", "110", "46", + "FCC", "5G", "40M", "HT", "4T", "118", "46", + "ETSI", "5G", "40M", "HT", "4T", "118", "46", + "MKK", "5G", "40M", "HT", "4T", "118", "46", + "FCC", "5G", "40M", "HT", "4T", "126", "46", + "ETSI", "5G", "40M", "HT", "4T", "126", "46", + "MKK", "5G", "40M", "HT", "4T", "126", "46", + "FCC", "5G", "40M", "HT", "4T", "134", "46", + "ETSI", "5G", "40M", "HT", "4T", "134", "46", + "MKK", "5G", "40M", "HT", "4T", "134", "46", + "FCC", "5G", "40M", "HT", "4T", "151", "46", + "ETSI", "5G", "40M", "HT", "4T", "151", "46", + "MKK", "5G", "40M", "HT", "4T", "151", "63", + "FCC", "5G", "40M", "HT", "4T", "159", "46", + "ETSI", "5G", "40M", "HT", "4T", "159", "46", + "MKK", "5G", "40M", "HT", "4T", "159", "63", + "FCC", "5G", "80M", "VHT", "1T", "42", "46", + "ETSI", "5G", "80M", "VHT", "1T", "42", "46", + "MKK", "5G", "80M", "VHT", "1T", "42", "46", + "FCC", "5G", "80M", "VHT", "1T", "58", "46", + "ETSI", "5G", "80M", "VHT", "1T", "58", "46", + "MKK", "5G", "80M", "VHT", "1T", "58", "46", + "FCC", "5G", "80M", "VHT", "1T", "106", "46", + "ETSI", "5G", "80M", "VHT", "1T", "106", "46", + "MKK", "5G", "80M", "VHT", "1T", "106", "46", + "FCC", "5G", "80M", "VHT", "1T", "122", "46", + "ETSI", "5G", "80M", "VHT", "1T", "122", "46", + "MKK", "5G", "80M", "VHT", "1T", "122", "46", + "FCC", "5G", "80M", "VHT", "1T", "155", "46", + "ETSI", "5G", "80M", "VHT", "1T", "155", "46", + "MKK", "5G", "80M", "VHT", "1T", "155", "63", + "FCC", "5G", "80M", "VHT", "2T", "42", "46", + "ETSI", "5G", "80M", "VHT", "2T", "42", "46", + "MKK", "5G", "80M", "VHT", "2T", "42", "46", + "FCC", "5G", "80M", "VHT", "2T", "58", "46", + "ETSI", "5G", "80M", "VHT", "2T", "58", "46", + "MKK", "5G", "80M", "VHT", "2T", "58", "46", + "FCC", "5G", "80M", "VHT", "2T", "106", "46", + "ETSI", "5G", "80M", "VHT", "2T", "106", "46", + "MKK", "5G", "80M", "VHT", "2T", "106", "46", + "FCC", "5G", "80M", "VHT", "2T", "122", "46", + "ETSI", "5G", "80M", "VHT", "2T", "122", "46", + "MKK", "5G", "80M", "VHT", "2T", "122", "46", + "FCC", "5G", "80M", "VHT", "2T", "155", "46", + "ETSI", "5G", "80M", "VHT", "2T", "155", "46", + "MKK", "5G", "80M", "VHT", "2T", "155", "63", + "FCC", "5G", "80M", "VHT", "3T", "42", "46", + "ETSI", "5G", "80M", "VHT", "3T", "42", "46", + "MKK", "5G", "80M", "VHT", "3T", "42", "46", + "FCC", "5G", "80M", "VHT", "3T", "58", "46", + "ETSI", "5G", "80M", "VHT", "3T", "58", "46", + "MKK", "5G", "80M", "VHT", "3T", "58", "46", + "FCC", "5G", "80M", "VHT", "3T", "106", "46", + "ETSI", "5G", "80M", "VHT", "3T", "106", "46", + "MKK", "5G", "80M", "VHT", "3T", "106", "46", + "FCC", "5G", "80M", "VHT", "3T", "122", "46", + "ETSI", "5G", "80M", "VHT", "3T", "122", "46", + "MKK", "5G", "80M", "VHT", "3T", "122", "46", + "FCC", "5G", "80M", "VHT", "3T", "155", "46", + "ETSI", "5G", "80M", "VHT", "3T", "155", "46", + "MKK", "5G", "80M", "VHT", "3T", "155", "63", + "FCC", "5G", "80M", "VHT", "4T", "42", "46", + "ETSI", "5G", "80M", "VHT", "4T", "42", "46", + "MKK", "5G", "80M", "VHT", "4T", "42", "46", + "FCC", "5G", "80M", "VHT", "4T", "58", "46", + "ETSI", "5G", "80M", "VHT", "4T", "58", "46", + "MKK", "5G", "80M", "VHT", "4T", "58", "46", + "FCC", "5G", "80M", "VHT", "4T", "106", "46", + "ETSI", "5G", "80M", "VHT", "4T", "106", "46", + "MKK", "5G", "80M", "VHT", "4T", "106", "46", + "FCC", "5G", "80M", "VHT", "4T", "122", "46", + "ETSI", "5G", "80M", "VHT", "4T", "122", "46", + "MKK", "5G", "80M", "VHT", "4T", "122", "46", + "FCC", "5G", "80M", "VHT", "4T", "155", "46", + "ETSI", "5G", "80M", "VHT", "4T", "155", "46", + "MKK", "5G", "80M", "VHT", "4T", "155", "63" +}; +#endif + +void +odm_read_and_config_mp_8814a_txpwr_lmt_type8(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE8 + + u32 i = 0; +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type8) / sizeof(u8); + u8 *array = (u8 *)array_mp_8814a_txpwr_lmt_type8; +#else + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type8) / sizeof(u8 *); + u8 **array = (u8 **)array_mp_8814a_txpwr_lmt_type8; +#endif + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrLmt, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrLmt = array_len / 7; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + for (i = 0; i < array_len; i += 7) { +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u8 regulation = array[i]; + u8 band = array[i + 1]; + u8 bandwidth = array[i + 2]; + u8 rate = array[i + 3]; + u8 rf_path = array[i + 4]; + u8 chnl = array[i + 5]; + u8 val = array[i + 6]; +#else + u8 *regulation = array[i]; + u8 *band = array[i + 1]; + u8 *bandwidth = array[i + 2]; + u8 *rate = array[i + 3]; + u8 *rf_path = array[i + 4]; + u8 *chnl = array[i + 5]; + u8 *val = array[i + 6]; +#endif + + odm_config_bb_txpwr_lmt_8814a(dm, regulation, band, bandwidth, + rate, rf_path, chnl, val); +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrLmt[i / 7], 100, "\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\",", + regulation, band, bandwidth, rate, rf_path, chnl, val); +#endif + } + +#endif +} + +/****************************************************************************** + * txpwr_lmt_type9.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE9 +const char *array_mp_8814a_txpwr_lmt_type9[] = { + "FCC", "2.4G", "20M", "CCK", "1T", "01", "40", + "ETSI", "2.4G", "20M", "CCK", "1T", "01", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "01", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "02", "40", + "ETSI", "2.4G", "20M", "CCK", "1T", "02", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "02", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "03", "40", + "ETSI", "2.4G", "20M", "CCK", "1T", "03", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "03", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "04", "40", + "ETSI", "2.4G", "20M", "CCK", "1T", "04", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "04", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "05", "40", + "ETSI", "2.4G", "20M", "CCK", "1T", "05", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "05", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "06", "40", + "ETSI", "2.4G", "20M", "CCK", "1T", "06", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "06", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "07", "40", + "ETSI", "2.4G", "20M", "CCK", "1T", "07", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "07", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "08", "40", + "ETSI", "2.4G", "20M", "CCK", "1T", "08", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "08", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "09", "40", + "ETSI", "2.4G", "20M", "CCK", "1T", "09", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "09", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "10", "40", + "ETSI", "2.4G", "20M", "CCK", "1T", "10", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "10", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "11", "40", + "ETSI", "2.4G", "20M", "CCK", "1T", "11", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "11", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "12", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "12", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "12", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "13", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "13", "40", + "MKK", "2.4G", "20M", "CCK", "1T", "13", "40", + "FCC", "2.4G", "20M", "CCK", "1T", "14", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", + "MKK", "2.4G", "20M", "CCK", "1T", "14", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "01", "40", + "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "01", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "02", "40", + "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "02", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "03", "40", + "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "03", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "04", "40", + "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "04", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "05", "40", + "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "05", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "06", "40", + "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "06", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "07", "40", + "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "07", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "08", "40", + "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "08", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "09", "40", + "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "09", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "10", "40", + "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "10", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "11", "40", + "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "11", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "12", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "12", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "13", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "40", + "MKK", "2.4G", "20M", "OFDM", "1T", "13", "40", + "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63", + "MKK", "2.4G", "20M", "OFDM", "1T", "14", "40", + "FCC", "2.4G", "20M", "HT", "1T", "01", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "01", "40", + "MKK", "2.4G", "20M", "HT", "1T", "01", "40", + "FCC", "2.4G", "20M", "HT", "1T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "02", "40", + "MKK", "2.4G", "20M", "HT", "1T", "02", "40", + "FCC", "2.4G", "20M", "HT", "1T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "03", "40", + "MKK", "2.4G", "20M", "HT", "1T", "03", "40", + "FCC", "2.4G", "20M", "HT", "1T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "04", "40", + "MKK", "2.4G", "20M", "HT", "1T", "04", "40", + "FCC", "2.4G", "20M", "HT", "1T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "05", "40", + "MKK", "2.4G", "20M", "HT", "1T", "05", "40", + "FCC", "2.4G", "20M", "HT", "1T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "06", "40", + "MKK", "2.4G", "20M", "HT", "1T", "06", "40", + "FCC", "2.4G", "20M", "HT", "1T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "07", "40", + "MKK", "2.4G", "20M", "HT", "1T", "07", "40", + "FCC", "2.4G", "20M", "HT", "1T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "08", "40", + "MKK", "2.4G", "20M", "HT", "1T", "08", "40", + "FCC", "2.4G", "20M", "HT", "1T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "09", "40", + "MKK", "2.4G", "20M", "HT", "1T", "09", "40", + "FCC", "2.4G", "20M", "HT", "1T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "10", "40", + "MKK", "2.4G", "20M", "HT", "1T", "10", "40", + "FCC", "2.4G", "20M", "HT", "1T", "11", "40", + "ETSI", "2.4G", "20M", "HT", "1T", "11", "40", + "MKK", "2.4G", "20M", "HT", "1T", "11", "40", + "FCC", "2.4G", "20M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "12", "40", + "MKK", "2.4G", "20M", "HT", "1T", "12", "40", + "FCC", "2.4G", "20M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "13", "40", + "MKK", "2.4G", "20M", "HT", "1T", "13", "40", + "FCC", "2.4G", "20M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "14", "63", + "MKK", "2.4G", "20M", "HT", "1T", "14", "40", + "FCC", "2.4G", "20M", "HT", "2T", "01", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "01", "40", + "MKK", "2.4G", "20M", "HT", "2T", "01", "40", + "FCC", "2.4G", "20M", "HT", "2T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "02", "40", + "MKK", "2.4G", "20M", "HT", "2T", "02", "40", + "FCC", "2.4G", "20M", "HT", "2T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "03", "40", + "MKK", "2.4G", "20M", "HT", "2T", "03", "40", + "FCC", "2.4G", "20M", "HT", "2T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "04", "40", + "MKK", "2.4G", "20M", "HT", "2T", "04", "40", + "FCC", "2.4G", "20M", "HT", "2T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "05", "40", + "MKK", "2.4G", "20M", "HT", "2T", "05", "40", + "FCC", "2.4G", "20M", "HT", "2T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "06", "40", + "MKK", "2.4G", "20M", "HT", "2T", "06", "40", + "FCC", "2.4G", "20M", "HT", "2T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "07", "40", + "MKK", "2.4G", "20M", "HT", "2T", "07", "40", + "FCC", "2.4G", "20M", "HT", "2T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "08", "40", + "MKK", "2.4G", "20M", "HT", "2T", "08", "40", + "FCC", "2.4G", "20M", "HT", "2T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "09", "40", + "MKK", "2.4G", "20M", "HT", "2T", "09", "40", + "FCC", "2.4G", "20M", "HT", "2T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "10", "40", + "MKK", "2.4G", "20M", "HT", "2T", "10", "40", + "FCC", "2.4G", "20M", "HT", "2T", "11", "40", + "ETSI", "2.4G", "20M", "HT", "2T", "11", "40", + "MKK", "2.4G", "20M", "HT", "2T", "11", "40", + "FCC", "2.4G", "20M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "12", "40", + "MKK", "2.4G", "20M", "HT", "2T", "12", "40", + "FCC", "2.4G", "20M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "13", "40", + "MKK", "2.4G", "20M", "HT", "2T", "13", "40", + "FCC", "2.4G", "20M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", + "MKK", "2.4G", "20M", "HT", "2T", "14", "40", + "FCC", "2.4G", "20M", "HT", "3T", "01", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "01", "40", + "MKK", "2.4G", "20M", "HT", "3T", "01", "40", + "FCC", "2.4G", "20M", "HT", "3T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "02", "40", + "MKK", "2.4G", "20M", "HT", "3T", "02", "40", + "FCC", "2.4G", "20M", "HT", "3T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "03", "40", + "MKK", "2.4G", "20M", "HT", "3T", "03", "40", + "FCC", "2.4G", "20M", "HT", "3T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "04", "40", + "MKK", "2.4G", "20M", "HT", "3T", "04", "40", + "FCC", "2.4G", "20M", "HT", "3T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "05", "40", + "MKK", "2.4G", "20M", "HT", "3T", "05", "40", + "FCC", "2.4G", "20M", "HT", "3T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "06", "40", + "MKK", "2.4G", "20M", "HT", "3T", "06", "40", + "FCC", "2.4G", "20M", "HT", "3T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "07", "40", + "MKK", "2.4G", "20M", "HT", "3T", "07", "40", + "FCC", "2.4G", "20M", "HT", "3T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "08", "40", + "MKK", "2.4G", "20M", "HT", "3T", "08", "40", + "FCC", "2.4G", "20M", "HT", "3T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "09", "40", + "MKK", "2.4G", "20M", "HT", "3T", "09", "40", + "FCC", "2.4G", "20M", "HT", "3T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "10", "40", + "MKK", "2.4G", "20M", "HT", "3T", "10", "40", + "FCC", "2.4G", "20M", "HT", "3T", "11", "40", + "ETSI", "2.4G", "20M", "HT", "3T", "11", "40", + "MKK", "2.4G", "20M", "HT", "3T", "11", "40", + "FCC", "2.4G", "20M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "12", "40", + "MKK", "2.4G", "20M", "HT", "3T", "12", "40", + "FCC", "2.4G", "20M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "13", "40", + "MKK", "2.4G", "20M", "HT", "3T", "13", "40", + "FCC", "2.4G", "20M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "3T", "14", "63", + "MKK", "2.4G", "20M", "HT", "3T", "14", "40", + "FCC", "2.4G", "20M", "HT", "4T", "01", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "01", "40", + "MKK", "2.4G", "20M", "HT", "4T", "01", "40", + "FCC", "2.4G", "20M", "HT", "4T", "02", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "02", "40", + "MKK", "2.4G", "20M", "HT", "4T", "02", "40", + "FCC", "2.4G", "20M", "HT", "4T", "03", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "03", "40", + "MKK", "2.4G", "20M", "HT", "4T", "03", "40", + "FCC", "2.4G", "20M", "HT", "4T", "04", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "04", "40", + "MKK", "2.4G", "20M", "HT", "4T", "04", "40", + "FCC", "2.4G", "20M", "HT", "4T", "05", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "05", "40", + "MKK", "2.4G", "20M", "HT", "4T", "05", "40", + "FCC", "2.4G", "20M", "HT", "4T", "06", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "06", "40", + "MKK", "2.4G", "20M", "HT", "4T", "06", "40", + "FCC", "2.4G", "20M", "HT", "4T", "07", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "07", "40", + "MKK", "2.4G", "20M", "HT", "4T", "07", "40", + "FCC", "2.4G", "20M", "HT", "4T", "08", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "08", "40", + "MKK", "2.4G", "20M", "HT", "4T", "08", "40", + "FCC", "2.4G", "20M", "HT", "4T", "09", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "09", "40", + "MKK", "2.4G", "20M", "HT", "4T", "09", "40", + "FCC", "2.4G", "20M", "HT", "4T", "10", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "10", "40", + "MKK", "2.4G", "20M", "HT", "4T", "10", "40", + "FCC", "2.4G", "20M", "HT", "4T", "11", "40", + "ETSI", "2.4G", "20M", "HT", "4T", "11", "40", + "MKK", "2.4G", "20M", "HT", "4T", "11", "40", + "FCC", "2.4G", "20M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "12", "40", + "MKK", "2.4G", "20M", "HT", "4T", "12", "40", + "FCC", "2.4G", "20M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "13", "40", + "MKK", "2.4G", "20M", "HT", "4T", "13", "40", + "FCC", "2.4G", "20M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "4T", "14", "63", + "MKK", "2.4G", "20M", "HT", "4T", "14", "40", + "FCC", "2.4G", "40M", "HT", "1T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "01", "63", + "MKK", "2.4G", "40M", "HT", "1T", "01", "63", + "FCC", "2.4G", "40M", "HT", "1T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "02", "63", + "MKK", "2.4G", "40M", "HT", "1T", "02", "63", + "FCC", "2.4G", "40M", "HT", "1T", "03", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "03", "34", + "MKK", "2.4G", "40M", "HT", "1T", "03", "34", + "FCC", "2.4G", "40M", "HT", "1T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "04", "34", + "MKK", "2.4G", "40M", "HT", "1T", "04", "34", + "FCC", "2.4G", "40M", "HT", "1T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "05", "34", + "MKK", "2.4G", "40M", "HT", "1T", "05", "34", + "FCC", "2.4G", "40M", "HT", "1T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "06", "34", + "MKK", "2.4G", "40M", "HT", "1T", "06", "34", + "FCC", "2.4G", "40M", "HT", "1T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "07", "34", + "MKK", "2.4G", "40M", "HT", "1T", "07", "34", + "FCC", "2.4G", "40M", "HT", "1T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "08", "34", + "MKK", "2.4G", "40M", "HT", "1T", "08", "34", + "FCC", "2.4G", "40M", "HT", "1T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "09", "34", + "MKK", "2.4G", "40M", "HT", "1T", "09", "34", + "FCC", "2.4G", "40M", "HT", "1T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "10", "34", + "MKK", "2.4G", "40M", "HT", "1T", "10", "34", + "FCC", "2.4G", "40M", "HT", "1T", "11", "34", + "ETSI", "2.4G", "40M", "HT", "1T", "11", "34", + "MKK", "2.4G", "40M", "HT", "1T", "11", "34", + "FCC", "2.4G", "40M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "12", "34", + "MKK", "2.4G", "40M", "HT", "1T", "12", "34", + "FCC", "2.4G", "40M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "13", "34", + "MKK", "2.4G", "40M", "HT", "1T", "13", "34", + "FCC", "2.4G", "40M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "14", "63", + "MKK", "2.4G", "40M", "HT", "1T", "14", "63", + "FCC", "2.4G", "40M", "HT", "2T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", + "MKK", "2.4G", "40M", "HT", "2T", "01", "63", + "FCC", "2.4G", "40M", "HT", "2T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "02", "63", + "MKK", "2.4G", "40M", "HT", "2T", "02", "63", + "FCC", "2.4G", "40M", "HT", "2T", "03", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "03", "34", + "MKK", "2.4G", "40M", "HT", "2T", "03", "34", + "FCC", "2.4G", "40M", "HT", "2T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "04", "34", + "MKK", "2.4G", "40M", "HT", "2T", "04", "34", + "FCC", "2.4G", "40M", "HT", "2T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "05", "34", + "MKK", "2.4G", "40M", "HT", "2T", "05", "34", + "FCC", "2.4G", "40M", "HT", "2T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "06", "34", + "MKK", "2.4G", "40M", "HT", "2T", "06", "34", + "FCC", "2.4G", "40M", "HT", "2T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "07", "34", + "MKK", "2.4G", "40M", "HT", "2T", "07", "34", + "FCC", "2.4G", "40M", "HT", "2T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "08", "34", + "MKK", "2.4G", "40M", "HT", "2T", "08", "34", + "FCC", "2.4G", "40M", "HT", "2T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "09", "34", + "MKK", "2.4G", "40M", "HT", "2T", "09", "34", + "FCC", "2.4G", "40M", "HT", "2T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "10", "34", + "MKK", "2.4G", "40M", "HT", "2T", "10", "34", + "FCC", "2.4G", "40M", "HT", "2T", "11", "34", + "ETSI", "2.4G", "40M", "HT", "2T", "11", "34", + "MKK", "2.4G", "40M", "HT", "2T", "11", "34", + "FCC", "2.4G", "40M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "12", "34", + "MKK", "2.4G", "40M", "HT", "2T", "12", "34", + "FCC", "2.4G", "40M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "13", "34", + "MKK", "2.4G", "40M", "HT", "2T", "13", "34", + "FCC", "2.4G", "40M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "14", "63", + "MKK", "2.4G", "40M", "HT", "2T", "14", "63", + "FCC", "2.4G", "40M", "HT", "3T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "01", "63", + "MKK", "2.4G", "40M", "HT", "3T", "01", "63", + "FCC", "2.4G", "40M", "HT", "3T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "02", "63", + "MKK", "2.4G", "40M", "HT", "3T", "02", "63", + "FCC", "2.4G", "40M", "HT", "3T", "03", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "03", "34", + "MKK", "2.4G", "40M", "HT", "3T", "03", "34", + "FCC", "2.4G", "40M", "HT", "3T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "04", "34", + "MKK", "2.4G", "40M", "HT", "3T", "04", "34", + "FCC", "2.4G", "40M", "HT", "3T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "05", "34", + "MKK", "2.4G", "40M", "HT", "3T", "05", "34", + "FCC", "2.4G", "40M", "HT", "3T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "06", "34", + "MKK", "2.4G", "40M", "HT", "3T", "06", "34", + "FCC", "2.4G", "40M", "HT", "3T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "07", "34", + "MKK", "2.4G", "40M", "HT", "3T", "07", "34", + "FCC", "2.4G", "40M", "HT", "3T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "08", "34", + "MKK", "2.4G", "40M", "HT", "3T", "08", "34", + "FCC", "2.4G", "40M", "HT", "3T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "09", "34", + "MKK", "2.4G", "40M", "HT", "3T", "09", "34", + "FCC", "2.4G", "40M", "HT", "3T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "10", "34", + "MKK", "2.4G", "40M", "HT", "3T", "10", "34", + "FCC", "2.4G", "40M", "HT", "3T", "11", "34", + "ETSI", "2.4G", "40M", "HT", "3T", "11", "34", + "MKK", "2.4G", "40M", "HT", "3T", "11", "34", + "FCC", "2.4G", "40M", "HT", "3T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "12", "34", + "MKK", "2.4G", "40M", "HT", "3T", "12", "34", + "FCC", "2.4G", "40M", "HT", "3T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "13", "34", + "MKK", "2.4G", "40M", "HT", "3T", "13", "34", + "FCC", "2.4G", "40M", "HT", "3T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "3T", "14", "63", + "MKK", "2.4G", "40M", "HT", "3T", "14", "63", + "FCC", "2.4G", "40M", "HT", "4T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "01", "63", + "MKK", "2.4G", "40M", "HT", "4T", "01", "63", + "FCC", "2.4G", "40M", "HT", "4T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "02", "63", + "MKK", "2.4G", "40M", "HT", "4T", "02", "63", + "FCC", "2.4G", "40M", "HT", "4T", "03", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "03", "34", + "MKK", "2.4G", "40M", "HT", "4T", "03", "34", + "FCC", "2.4G", "40M", "HT", "4T", "04", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "04", "34", + "MKK", "2.4G", "40M", "HT", "4T", "04", "34", + "FCC", "2.4G", "40M", "HT", "4T", "05", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "05", "34", + "MKK", "2.4G", "40M", "HT", "4T", "05", "34", + "FCC", "2.4G", "40M", "HT", "4T", "06", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "06", "34", + "MKK", "2.4G", "40M", "HT", "4T", "06", "34", + "FCC", "2.4G", "40M", "HT", "4T", "07", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "07", "34", + "MKK", "2.4G", "40M", "HT", "4T", "07", "34", + "FCC", "2.4G", "40M", "HT", "4T", "08", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "08", "34", + "MKK", "2.4G", "40M", "HT", "4T", "08", "34", + "FCC", "2.4G", "40M", "HT", "4T", "09", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "09", "34", + "MKK", "2.4G", "40M", "HT", "4T", "09", "34", + "FCC", "2.4G", "40M", "HT", "4T", "10", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "10", "34", + "MKK", "2.4G", "40M", "HT", "4T", "10", "34", + "FCC", "2.4G", "40M", "HT", "4T", "11", "34", + "ETSI", "2.4G", "40M", "HT", "4T", "11", "34", + "MKK", "2.4G", "40M", "HT", "4T", "11", "34", + "FCC", "2.4G", "40M", "HT", "4T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "12", "34", + "MKK", "2.4G", "40M", "HT", "4T", "12", "34", + "FCC", "2.4G", "40M", "HT", "4T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "13", "34", + "MKK", "2.4G", "40M", "HT", "4T", "13", "34", + "FCC", "2.4G", "40M", "HT", "4T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "4T", "14", "63", + "MKK", "2.4G", "40M", "HT", "4T", "14", "63", + "FCC", "5G", "20M", "OFDM", "1T", "36", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "36", "44", + "MKK", "5G", "20M", "OFDM", "1T", "36", "44", + "FCC", "5G", "20M", "OFDM", "1T", "40", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "40", "44", + "MKK", "5G", "20M", "OFDM", "1T", "40", "44", + "FCC", "5G", "20M", "OFDM", "1T", "44", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "44", "44", + "MKK", "5G", "20M", "OFDM", "1T", "44", "44", + "FCC", "5G", "20M", "OFDM", "1T", "48", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "48", "44", + "MKK", "5G", "20M", "OFDM", "1T", "48", "44", + "FCC", "5G", "20M", "OFDM", "1T", "52", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "52", "44", + "MKK", "5G", "20M", "OFDM", "1T", "52", "44", + "FCC", "5G", "20M", "OFDM", "1T", "56", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "56", "44", + "MKK", "5G", "20M", "OFDM", "1T", "56", "44", + "FCC", "5G", "20M", "OFDM", "1T", "60", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "60", "44", + "MKK", "5G", "20M", "OFDM", "1T", "60", "44", + "FCC", "5G", "20M", "OFDM", "1T", "64", "40", + "ETSI", "5G", "20M", "OFDM", "1T", "64", "40", + "MKK", "5G", "20M", "OFDM", "1T", "64", "40", + "FCC", "5G", "20M", "OFDM", "1T", "100", "40", + "ETSI", "5G", "20M", "OFDM", "1T", "100", "40", + "MKK", "5G", "20M", "OFDM", "1T", "100", "40", + "FCC", "5G", "20M", "OFDM", "1T", "104", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "104", "44", + "MKK", "5G", "20M", "OFDM", "1T", "104", "44", + "FCC", "5G", "20M", "OFDM", "1T", "108", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "108", "44", + "MKK", "5G", "20M", "OFDM", "1T", "108", "44", + "FCC", "5G", "20M", "OFDM", "1T", "112", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "112", "44", + "MKK", "5G", "20M", "OFDM", "1T", "112", "44", + "FCC", "5G", "20M", "OFDM", "1T", "116", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "116", "44", + "MKK", "5G", "20M", "OFDM", "1T", "116", "44", + "FCC", "5G", "20M", "OFDM", "1T", "120", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "120", "44", + "MKK", "5G", "20M", "OFDM", "1T", "120", "44", + "FCC", "5G", "20M", "OFDM", "1T", "124", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "124", "44", + "MKK", "5G", "20M", "OFDM", "1T", "124", "44", + "FCC", "5G", "20M", "OFDM", "1T", "128", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "128", "44", + "MKK", "5G", "20M", "OFDM", "1T", "128", "44", + "FCC", "5G", "20M", "OFDM", "1T", "132", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "132", "44", + "MKK", "5G", "20M", "OFDM", "1T", "132", "44", + "FCC", "5G", "20M", "OFDM", "1T", "136", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "136", "44", + "MKK", "5G", "20M", "OFDM", "1T", "136", "44", + "FCC", "5G", "20M", "OFDM", "1T", "140", "40", + "ETSI", "5G", "20M", "OFDM", "1T", "140", "40", + "MKK", "5G", "20M", "OFDM", "1T", "140", "40", + "FCC", "5G", "20M", "OFDM", "1T", "149", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "149", "42", + "MKK", "5G", "20M", "OFDM", "1T", "149", "63", + "FCC", "5G", "20M", "OFDM", "1T", "153", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "153", "44", + "MKK", "5G", "20M", "OFDM", "1T", "153", "63", + "FCC", "5G", "20M", "OFDM", "1T", "157", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "157", "44", + "MKK", "5G", "20M", "OFDM", "1T", "157", "63", + "FCC", "5G", "20M", "OFDM", "1T", "161", "44", + "ETSI", "5G", "20M", "OFDM", "1T", "161", "44", + "MKK", "5G", "20M", "OFDM", "1T", "161", "63", + "FCC", "5G", "20M", "OFDM", "1T", "165", "42", + "ETSI", "5G", "20M", "OFDM", "1T", "165", "42", + "MKK", "5G", "20M", "OFDM", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "1T", "36", "40", + "ETSI", "5G", "20M", "HT", "1T", "36", "40", + "MKK", "5G", "20M", "HT", "1T", "36", "40", + "FCC", "5G", "20M", "HT", "1T", "40", "44", + "ETSI", "5G", "20M", "HT", "1T", "40", "44", + "MKK", "5G", "20M", "HT", "1T", "40", "44", + "FCC", "5G", "20M", "HT", "1T", "44", "44", + "ETSI", "5G", "20M", "HT", "1T", "44", "44", + "MKK", "5G", "20M", "HT", "1T", "44", "44", + "FCC", "5G", "20M", "HT", "1T", "48", "44", + "ETSI", "5G", "20M", "HT", "1T", "48", "44", + "MKK", "5G", "20M", "HT", "1T", "48", "44", + "FCC", "5G", "20M", "HT", "1T", "52", "44", + "ETSI", "5G", "20M", "HT", "1T", "52", "44", + "MKK", "5G", "20M", "HT", "1T", "52", "44", + "FCC", "5G", "20M", "HT", "1T", "56", "44", + "ETSI", "5G", "20M", "HT", "1T", "56", "44", + "MKK", "5G", "20M", "HT", "1T", "56", "44", + "FCC", "5G", "20M", "HT", "1T", "60", "44", + "ETSI", "5G", "20M", "HT", "1T", "60", "44", + "MKK", "5G", "20M", "HT", "1T", "60", "44", + "FCC", "5G", "20M", "HT", "1T", "64", "42", + "ETSI", "5G", "20M", "HT", "1T", "64", "42", + "MKK", "5G", "20M", "HT", "1T", "64", "42", + "FCC", "5G", "20M", "HT", "1T", "100", "40", + "ETSI", "5G", "20M", "HT", "1T", "100", "40", + "MKK", "5G", "20M", "HT", "1T", "100", "40", + "FCC", "5G", "20M", "HT", "1T", "104", "44", + "ETSI", "5G", "20M", "HT", "1T", "104", "44", + "MKK", "5G", "20M", "HT", "1T", "104", "44", + "FCC", "5G", "20M", "HT", "1T", "108", "44", + "ETSI", "5G", "20M", "HT", "1T", "108", "44", + "MKK", "5G", "20M", "HT", "1T", "108", "44", + "FCC", "5G", "20M", "HT", "1T", "112", "44", + "ETSI", "5G", "20M", "HT", "1T", "112", "44", + "MKK", "5G", "20M", "HT", "1T", "112", "44", + "FCC", "5G", "20M", "HT", "1T", "116", "44", + "ETSI", "5G", "20M", "HT", "1T", "116", "44", + "MKK", "5G", "20M", "HT", "1T", "116", "44", + "FCC", "5G", "20M", "HT", "1T", "120", "44", + "ETSI", "5G", "20M", "HT", "1T", "120", "44", + "MKK", "5G", "20M", "HT", "1T", "120", "44", + "FCC", "5G", "20M", "HT", "1T", "124", "44", + "ETSI", "5G", "20M", "HT", "1T", "124", "44", + "MKK", "5G", "20M", "HT", "1T", "124", "44", + "FCC", "5G", "20M", "HT", "1T", "128", "44", + "ETSI", "5G", "20M", "HT", "1T", "128", "44", + "MKK", "5G", "20M", "HT", "1T", "128", "44", + "FCC", "5G", "20M", "HT", "1T", "132", "44", + "ETSI", "5G", "20M", "HT", "1T", "132", "44", + "MKK", "5G", "20M", "HT", "1T", "132", "44", + "FCC", "5G", "20M", "HT", "1T", "136", "44", + "ETSI", "5G", "20M", "HT", "1T", "136", "44", + "MKK", "5G", "20M", "HT", "1T", "136", "44", + "FCC", "5G", "20M", "HT", "1T", "140", "40", + "ETSI", "5G", "20M", "HT", "1T", "140", "40", + "MKK", "5G", "20M", "HT", "1T", "140", "40", + "FCC", "5G", "20M", "HT", "1T", "149", "44", + "ETSI", "5G", "20M", "HT", "1T", "149", "44", + "MKK", "5G", "20M", "HT", "1T", "149", "63", + "FCC", "5G", "20M", "HT", "1T", "153", "44", + "ETSI", "5G", "20M", "HT", "1T", "153", "44", + "MKK", "5G", "20M", "HT", "1T", "153", "63", + "FCC", "5G", "20M", "HT", "1T", "157", "44", + "ETSI", "5G", "20M", "HT", "1T", "157", "44", + "MKK", "5G", "20M", "HT", "1T", "157", "63", + "FCC", "5G", "20M", "HT", "1T", "161", "44", + "ETSI", "5G", "20M", "HT", "1T", "161", "44", + "MKK", "5G", "20M", "HT", "1T", "161", "63", + "FCC", "5G", "20M", "HT", "1T", "165", "42", + "ETSI", "5G", "20M", "HT", "1T", "165", "42", + "MKK", "5G", "20M", "HT", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "2T", "36", "40", + "ETSI", "5G", "20M", "HT", "2T", "36", "40", + "MKK", "5G", "20M", "HT", "2T", "36", "40", + "FCC", "5G", "20M", "HT", "2T", "40", "44", + "ETSI", "5G", "20M", "HT", "2T", "40", "44", + "MKK", "5G", "20M", "HT", "2T", "40", "44", + "FCC", "5G", "20M", "HT", "2T", "44", "44", + "ETSI", "5G", "20M", "HT", "2T", "44", "44", + "MKK", "5G", "20M", "HT", "2T", "44", "44", + "FCC", "5G", "20M", "HT", "2T", "48", "44", + "ETSI", "5G", "20M", "HT", "2T", "48", "44", + "MKK", "5G", "20M", "HT", "2T", "48", "44", + "FCC", "5G", "20M", "HT", "2T", "52", "44", + "ETSI", "5G", "20M", "HT", "2T", "52", "44", + "MKK", "5G", "20M", "HT", "2T", "52", "44", + "FCC", "5G", "20M", "HT", "2T", "56", "44", + "ETSI", "5G", "20M", "HT", "2T", "56", "44", + "MKK", "5G", "20M", "HT", "2T", "56", "44", + "FCC", "5G", "20M", "HT", "2T", "60", "44", + "ETSI", "5G", "20M", "HT", "2T", "60", "44", + "MKK", "5G", "20M", "HT", "2T", "60", "44", + "FCC", "5G", "20M", "HT", "2T", "64", "42", + "ETSI", "5G", "20M", "HT", "2T", "64", "42", + "MKK", "5G", "20M", "HT", "2T", "64", "42", + "FCC", "5G", "20M", "HT", "2T", "100", "40", + "ETSI", "5G", "20M", "HT", "2T", "100", "40", + "MKK", "5G", "20M", "HT", "2T", "100", "40", + "FCC", "5G", "20M", "HT", "2T", "104", "44", + "ETSI", "5G", "20M", "HT", "2T", "104", "44", + "MKK", "5G", "20M", "HT", "2T", "104", "44", + "FCC", "5G", "20M", "HT", "2T", "108", "44", + "ETSI", "5G", "20M", "HT", "2T", "108", "44", + "MKK", "5G", "20M", "HT", "2T", "108", "44", + "FCC", "5G", "20M", "HT", "2T", "112", "44", + "ETSI", "5G", "20M", "HT", "2T", "112", "44", + "MKK", "5G", "20M", "HT", "2T", "112", "44", + "FCC", "5G", "20M", "HT", "2T", "116", "44", + "ETSI", "5G", "20M", "HT", "2T", "116", "44", + "MKK", "5G", "20M", "HT", "2T", "116", "44", + "FCC", "5G", "20M", "HT", "2T", "120", "44", + "ETSI", "5G", "20M", "HT", "2T", "120", "44", + "MKK", "5G", "20M", "HT", "2T", "120", "44", + "FCC", "5G", "20M", "HT", "2T", "124", "44", + "ETSI", "5G", "20M", "HT", "2T", "124", "44", + "MKK", "5G", "20M", "HT", "2T", "124", "44", + "FCC", "5G", "20M", "HT", "2T", "128", "44", + "ETSI", "5G", "20M", "HT", "2T", "128", "44", + "MKK", "5G", "20M", "HT", "2T", "128", "44", + "FCC", "5G", "20M", "HT", "2T", "132", "44", + "ETSI", "5G", "20M", "HT", "2T", "132", "44", + "MKK", "5G", "20M", "HT", "2T", "132", "44", + "FCC", "5G", "20M", "HT", "2T", "136", "44", + "ETSI", "5G", "20M", "HT", "2T", "136", "44", + "MKK", "5G", "20M", "HT", "2T", "136", "44", + "FCC", "5G", "20M", "HT", "2T", "140", "40", + "ETSI", "5G", "20M", "HT", "2T", "140", "40", + "MKK", "5G", "20M", "HT", "2T", "140", "40", + "FCC", "5G", "20M", "HT", "2T", "149", "44", + "ETSI", "5G", "20M", "HT", "2T", "149", "44", + "MKK", "5G", "20M", "HT", "2T", "149", "63", + "FCC", "5G", "20M", "HT", "2T", "153", "44", + "ETSI", "5G", "20M", "HT", "2T", "153", "44", + "MKK", "5G", "20M", "HT", "2T", "153", "63", + "FCC", "5G", "20M", "HT", "2T", "157", "44", + "ETSI", "5G", "20M", "HT", "2T", "157", "44", + "MKK", "5G", "20M", "HT", "2T", "157", "63", + "FCC", "5G", "20M", "HT", "2T", "161", "44", + "ETSI", "5G", "20M", "HT", "2T", "161", "44", + "MKK", "5G", "20M", "HT", "2T", "161", "63", + "FCC", "5G", "20M", "HT", "2T", "165", "42", + "ETSI", "5G", "20M", "HT", "2T", "165", "42", + "MKK", "5G", "20M", "HT", "2T", "165", "63", + "FCC", "5G", "20M", "HT", "3T", "36", "40", + "ETSI", "5G", "20M", "HT", "3T", "36", "40", + "MKK", "5G", "20M", "HT", "3T", "36", "40", + "FCC", "5G", "20M", "HT", "3T", "40", "44", + "ETSI", "5G", "20M", "HT", "3T", "40", "44", + "MKK", "5G", "20M", "HT", "3T", "40", "44", + "FCC", "5G", "20M", "HT", "3T", "44", "44", + "ETSI", "5G", "20M", "HT", "3T", "44", "44", + "MKK", "5G", "20M", "HT", "3T", "44", "44", + "FCC", "5G", "20M", "HT", "3T", "48", "44", + "ETSI", "5G", "20M", "HT", "3T", "48", "44", + "MKK", "5G", "20M", "HT", "3T", "48", "44", + "FCC", "5G", "20M", "HT", "3T", "52", "44", + "ETSI", "5G", "20M", "HT", "3T", "52", "44", + "MKK", "5G", "20M", "HT", "3T", "52", "44", + "FCC", "5G", "20M", "HT", "3T", "56", "44", + "ETSI", "5G", "20M", "HT", "3T", "56", "44", + "MKK", "5G", "20M", "HT", "3T", "56", "44", + "FCC", "5G", "20M", "HT", "3T", "60", "44", + "ETSI", "5G", "20M", "HT", "3T", "60", "44", + "MKK", "5G", "20M", "HT", "3T", "60", "44", + "FCC", "5G", "20M", "HT", "3T", "64", "42", + "ETSI", "5G", "20M", "HT", "3T", "64", "42", + "MKK", "5G", "20M", "HT", "3T", "64", "42", + "FCC", "5G", "20M", "HT", "3T", "100", "40", + "ETSI", "5G", "20M", "HT", "3T", "100", "40", + "MKK", "5G", "20M", "HT", "3T", "100", "40", + "FCC", "5G", "20M", "HT", "3T", "104", "44", + "ETSI", "5G", "20M", "HT", "3T", "104", "44", + "MKK", "5G", "20M", "HT", "3T", "104", "44", + "FCC", "5G", "20M", "HT", "3T", "108", "44", + "ETSI", "5G", "20M", "HT", "3T", "108", "44", + "MKK", "5G", "20M", "HT", "3T", "108", "44", + "FCC", "5G", "20M", "HT", "3T", "112", "44", + "ETSI", "5G", "20M", "HT", "3T", "112", "44", + "MKK", "5G", "20M", "HT", "3T", "112", "44", + "FCC", "5G", "20M", "HT", "3T", "116", "44", + "ETSI", "5G", "20M", "HT", "3T", "116", "44", + "MKK", "5G", "20M", "HT", "3T", "116", "44", + "FCC", "5G", "20M", "HT", "3T", "120", "44", + "ETSI", "5G", "20M", "HT", "3T", "120", "44", + "MKK", "5G", "20M", "HT", "3T", "120", "44", + "FCC", "5G", "20M", "HT", "3T", "124", "44", + "ETSI", "5G", "20M", "HT", "3T", "124", "44", + "MKK", "5G", "20M", "HT", "3T", "124", "44", + "FCC", "5G", "20M", "HT", "3T", "128", "44", + "ETSI", "5G", "20M", "HT", "3T", "128", "44", + "MKK", "5G", "20M", "HT", "3T", "128", "44", + "FCC", "5G", "20M", "HT", "3T", "132", "44", + "ETSI", "5G", "20M", "HT", "3T", "132", "44", + "MKK", "5G", "20M", "HT", "3T", "132", "44", + "FCC", "5G", "20M", "HT", "3T", "136", "44", + "ETSI", "5G", "20M", "HT", "3T", "136", "44", + "MKK", "5G", "20M", "HT", "3T", "136", "44", + "FCC", "5G", "20M", "HT", "3T", "140", "40", + "ETSI", "5G", "20M", "HT", "3T", "140", "40", + "MKK", "5G", "20M", "HT", "3T", "140", "40", + "FCC", "5G", "20M", "HT", "3T", "149", "44", + "ETSI", "5G", "20M", "HT", "3T", "149", "44", + "MKK", "5G", "20M", "HT", "3T", "149", "63", + "FCC", "5G", "20M", "HT", "3T", "153", "44", + "ETSI", "5G", "20M", "HT", "3T", "153", "44", + "MKK", "5G", "20M", "HT", "3T", "153", "63", + "FCC", "5G", "20M", "HT", "3T", "157", "44", + "ETSI", "5G", "20M", "HT", "3T", "157", "44", + "MKK", "5G", "20M", "HT", "3T", "157", "63", + "FCC", "5G", "20M", "HT", "3T", "161", "44", + "ETSI", "5G", "20M", "HT", "3T", "161", "44", + "MKK", "5G", "20M", "HT", "3T", "161", "63", + "FCC", "5G", "20M", "HT", "3T", "165", "42", + "ETSI", "5G", "20M", "HT", "3T", "165", "42", + "MKK", "5G", "20M", "HT", "3T", "165", "63", + "FCC", "5G", "20M", "HT", "4T", "36", "40", + "ETSI", "5G", "20M", "HT", "4T", "36", "40", + "MKK", "5G", "20M", "HT", "4T", "36", "40", + "FCC", "5G", "20M", "HT", "4T", "40", "44", + "ETSI", "5G", "20M", "HT", "4T", "40", "44", + "MKK", "5G", "20M", "HT", "4T", "40", "44", + "FCC", "5G", "20M", "HT", "4T", "44", "44", + "ETSI", "5G", "20M", "HT", "4T", "44", "44", + "MKK", "5G", "20M", "HT", "4T", "44", "44", + "FCC", "5G", "20M", "HT", "4T", "48", "44", + "ETSI", "5G", "20M", "HT", "4T", "48", "44", + "MKK", "5G", "20M", "HT", "4T", "48", "44", + "FCC", "5G", "20M", "HT", "4T", "52", "44", + "ETSI", "5G", "20M", "HT", "4T", "52", "44", + "MKK", "5G", "20M", "HT", "4T", "52", "44", + "FCC", "5G", "20M", "HT", "4T", "56", "44", + "ETSI", "5G", "20M", "HT", "4T", "56", "44", + "MKK", "5G", "20M", "HT", "4T", "56", "44", + "FCC", "5G", "20M", "HT", "4T", "60", "44", + "ETSI", "5G", "20M", "HT", "4T", "60", "44", + "MKK", "5G", "20M", "HT", "4T", "60", "44", + "FCC", "5G", "20M", "HT", "4T", "64", "42", + "ETSI", "5G", "20M", "HT", "4T", "64", "42", + "MKK", "5G", "20M", "HT", "4T", "64", "42", + "FCC", "5G", "20M", "HT", "4T", "100", "40", + "ETSI", "5G", "20M", "HT", "4T", "100", "40", + "MKK", "5G", "20M", "HT", "4T", "100", "40", + "FCC", "5G", "20M", "HT", "4T", "104", "44", + "ETSI", "5G", "20M", "HT", "4T", "104", "44", + "MKK", "5G", "20M", "HT", "4T", "104", "44", + "FCC", "5G", "20M", "HT", "4T", "108", "44", + "ETSI", "5G", "20M", "HT", "4T", "108", "44", + "MKK", "5G", "20M", "HT", "4T", "108", "44", + "FCC", "5G", "20M", "HT", "4T", "112", "44", + "ETSI", "5G", "20M", "HT", "4T", "112", "44", + "MKK", "5G", "20M", "HT", "4T", "112", "44", + "FCC", "5G", "20M", "HT", "4T", "116", "44", + "ETSI", "5G", "20M", "HT", "4T", "116", "44", + "MKK", "5G", "20M", "HT", "4T", "116", "44", + "FCC", "5G", "20M", "HT", "4T", "120", "44", + "ETSI", "5G", "20M", "HT", "4T", "120", "44", + "MKK", "5G", "20M", "HT", "4T", "120", "44", + "FCC", "5G", "20M", "HT", "4T", "124", "44", + "ETSI", "5G", "20M", "HT", "4T", "124", "44", + "MKK", "5G", "20M", "HT", "4T", "124", "44", + "FCC", "5G", "20M", "HT", "4T", "128", "44", + "ETSI", "5G", "20M", "HT", "4T", "128", "44", + "MKK", "5G", "20M", "HT", "4T", "128", "44", + "FCC", "5G", "20M", "HT", "4T", "132", "44", + "ETSI", "5G", "20M", "HT", "4T", "132", "44", + "MKK", "5G", "20M", "HT", "4T", "132", "44", + "FCC", "5G", "20M", "HT", "4T", "136", "44", + "ETSI", "5G", "20M", "HT", "4T", "136", "44", + "MKK", "5G", "20M", "HT", "4T", "136", "44", + "FCC", "5G", "20M", "HT", "4T", "140", "40", + "ETSI", "5G", "20M", "HT", "4T", "140", "40", + "MKK", "5G", "20M", "HT", "4T", "140", "40", + "FCC", "5G", "20M", "HT", "4T", "149", "44", + "ETSI", "5G", "20M", "HT", "4T", "149", "44", + "MKK", "5G", "20M", "HT", "4T", "149", "63", + "FCC", "5G", "20M", "HT", "4T", "153", "44", + "ETSI", "5G", "20M", "HT", "4T", "153", "44", + "MKK", "5G", "20M", "HT", "4T", "153", "63", + "FCC", "5G", "20M", "HT", "4T", "157", "44", + "ETSI", "5G", "20M", "HT", "4T", "157", "44", + "MKK", "5G", "20M", "HT", "4T", "157", "63", + "FCC", "5G", "20M", "HT", "4T", "161", "44", + "ETSI", "5G", "20M", "HT", "4T", "161", "44", + "MKK", "5G", "20M", "HT", "4T", "161", "63", + "FCC", "5G", "20M", "HT", "4T", "165", "42", + "ETSI", "5G", "20M", "HT", "4T", "165", "42", + "MKK", "5G", "20M", "HT", "4T", "165", "63", + "FCC", "5G", "40M", "HT", "1T", "38", "34", + "ETSI", "5G", "40M", "HT", "1T", "38", "34", + "MKK", "5G", "40M", "HT", "1T", "38", "34", + "FCC", "5G", "40M", "HT", "1T", "46", "44", + "ETSI", "5G", "40M", "HT", "1T", "46", "44", + "MKK", "5G", "40M", "HT", "1T", "46", "44", + "FCC", "5G", "40M", "HT", "1T", "54", "44", + "ETSI", "5G", "40M", "HT", "1T", "54", "44", + "MKK", "5G", "40M", "HT", "1T", "54", "44", + "FCC", "5G", "40M", "HT", "1T", "62", "34", + "ETSI", "5G", "40M", "HT", "1T", "62", "34", + "MKK", "5G", "40M", "HT", "1T", "62", "34", + "FCC", "5G", "40M", "HT", "1T", "102", "34", + "ETSI", "5G", "40M", "HT", "1T", "102", "34", + "MKK", "5G", "40M", "HT", "1T", "102", "34", + "FCC", "5G", "40M", "HT", "1T", "110", "44", + "ETSI", "5G", "40M", "HT", "1T", "110", "44", + "MKK", "5G", "40M", "HT", "1T", "110", "44", + "FCC", "5G", "40M", "HT", "1T", "118", "44", + "ETSI", "5G", "40M", "HT", "1T", "118", "44", + "MKK", "5G", "40M", "HT", "1T", "118", "44", + "FCC", "5G", "40M", "HT", "1T", "126", "44", + "ETSI", "5G", "40M", "HT", "1T", "126", "44", + "MKK", "5G", "40M", "HT", "1T", "126", "44", + "FCC", "5G", "40M", "HT", "1T", "134", "42", + "ETSI", "5G", "40M", "HT", "1T", "134", "42", + "MKK", "5G", "40M", "HT", "1T", "134", "42", + "FCC", "5G", "40M", "HT", "1T", "151", "42", + "ETSI", "5G", "40M", "HT", "1T", "151", "42", + "MKK", "5G", "40M", "HT", "1T", "151", "63", + "FCC", "5G", "40M", "HT", "1T", "159", "42", + "ETSI", "5G", "40M", "HT", "1T", "159", "42", + "MKK", "5G", "40M", "HT", "1T", "159", "63", + "FCC", "5G", "40M", "HT", "2T", "38", "34", + "ETSI", "5G", "40M", "HT", "2T", "38", "34", + "MKK", "5G", "40M", "HT", "2T", "38", "34", + "FCC", "5G", "40M", "HT", "2T", "46", "44", + "ETSI", "5G", "40M", "HT", "2T", "46", "44", + "MKK", "5G", "40M", "HT", "2T", "46", "44", + "FCC", "5G", "40M", "HT", "2T", "54", "44", + "ETSI", "5G", "40M", "HT", "2T", "54", "44", + "MKK", "5G", "40M", "HT", "2T", "54", "44", + "FCC", "5G", "40M", "HT", "2T", "62", "34", + "ETSI", "5G", "40M", "HT", "2T", "62", "34", + "MKK", "5G", "40M", "HT", "2T", "62", "34", + "FCC", "5G", "40M", "HT", "2T", "102", "34", + "ETSI", "5G", "40M", "HT", "2T", "102", "34", + "MKK", "5G", "40M", "HT", "2T", "102", "34", + "FCC", "5G", "40M", "HT", "2T", "110", "44", + "ETSI", "5G", "40M", "HT", "2T", "110", "44", + "MKK", "5G", "40M", "HT", "2T", "110", "44", + "FCC", "5G", "40M", "HT", "2T", "118", "44", + "ETSI", "5G", "40M", "HT", "2T", "118", "44", + "MKK", "5G", "40M", "HT", "2T", "118", "44", + "FCC", "5G", "40M", "HT", "2T", "126", "44", + "ETSI", "5G", "40M", "HT", "2T", "126", "44", + "MKK", "5G", "40M", "HT", "2T", "126", "44", + "FCC", "5G", "40M", "HT", "2T", "134", "42", + "ETSI", "5G", "40M", "HT", "2T", "134", "42", + "MKK", "5G", "40M", "HT", "2T", "134", "42", + "FCC", "5G", "40M", "HT", "2T", "151", "42", + "ETSI", "5G", "40M", "HT", "2T", "151", "42", + "MKK", "5G", "40M", "HT", "2T", "151", "63", + "FCC", "5G", "40M", "HT", "2T", "159", "42", + "ETSI", "5G", "40M", "HT", "2T", "159", "42", + "MKK", "5G", "40M", "HT", "2T", "159", "63", + "FCC", "5G", "40M", "HT", "3T", "38", "34", + "ETSI", "5G", "40M", "HT", "3T", "38", "34", + "MKK", "5G", "40M", "HT", "3T", "38", "34", + "FCC", "5G", "40M", "HT", "3T", "46", "44", + "ETSI", "5G", "40M", "HT", "3T", "46", "44", + "MKK", "5G", "40M", "HT", "3T", "46", "44", + "FCC", "5G", "40M", "HT", "3T", "54", "44", + "ETSI", "5G", "40M", "HT", "3T", "54", "44", + "MKK", "5G", "40M", "HT", "3T", "54", "44", + "FCC", "5G", "40M", "HT", "3T", "62", "34", + "ETSI", "5G", "40M", "HT", "3T", "62", "34", + "MKK", "5G", "40M", "HT", "3T", "62", "34", + "FCC", "5G", "40M", "HT", "3T", "102", "34", + "ETSI", "5G", "40M", "HT", "3T", "102", "34", + "MKK", "5G", "40M", "HT", "3T", "102", "34", + "FCC", "5G", "40M", "HT", "3T", "110", "44", + "ETSI", "5G", "40M", "HT", "3T", "110", "44", + "MKK", "5G", "40M", "HT", "3T", "110", "44", + "FCC", "5G", "40M", "HT", "3T", "118", "44", + "ETSI", "5G", "40M", "HT", "3T", "118", "44", + "MKK", "5G", "40M", "HT", "3T", "118", "44", + "FCC", "5G", "40M", "HT", "3T", "126", "44", + "ETSI", "5G", "40M", "HT", "3T", "126", "44", + "MKK", "5G", "40M", "HT", "3T", "126", "44", + "FCC", "5G", "40M", "HT", "3T", "134", "42", + "ETSI", "5G", "40M", "HT", "3T", "134", "42", + "MKK", "5G", "40M", "HT", "3T", "134", "42", + "FCC", "5G", "40M", "HT", "3T", "151", "42", + "ETSI", "5G", "40M", "HT", "3T", "151", "42", + "MKK", "5G", "40M", "HT", "3T", "151", "63", + "FCC", "5G", "40M", "HT", "3T", "159", "42", + "ETSI", "5G", "40M", "HT", "3T", "159", "42", + "MKK", "5G", "40M", "HT", "3T", "159", "63", + "FCC", "5G", "40M", "HT", "4T", "38", "34", + "ETSI", "5G", "40M", "HT", "4T", "38", "34", + "MKK", "5G", "40M", "HT", "4T", "38", "34", + "FCC", "5G", "40M", "HT", "4T", "46", "44", + "ETSI", "5G", "40M", "HT", "4T", "46", "44", + "MKK", "5G", "40M", "HT", "4T", "46", "44", + "FCC", "5G", "40M", "HT", "4T", "54", "44", + "ETSI", "5G", "40M", "HT", "4T", "54", "44", + "MKK", "5G", "40M", "HT", "4T", "54", "44", + "FCC", "5G", "40M", "HT", "4T", "62", "34", + "ETSI", "5G", "40M", "HT", "4T", "62", "34", + "MKK", "5G", "40M", "HT", "4T", "62", "34", + "FCC", "5G", "40M", "HT", "4T", "102", "34", + "ETSI", "5G", "40M", "HT", "4T", "102", "34", + "MKK", "5G", "40M", "HT", "4T", "102", "34", + "FCC", "5G", "40M", "HT", "4T", "110", "44", + "ETSI", "5G", "40M", "HT", "4T", "110", "44", + "MKK", "5G", "40M", "HT", "4T", "110", "44", + "FCC", "5G", "40M", "HT", "4T", "118", "44", + "ETSI", "5G", "40M", "HT", "4T", "118", "44", + "MKK", "5G", "40M", "HT", "4T", "118", "44", + "FCC", "5G", "40M", "HT", "4T", "126", "44", + "ETSI", "5G", "40M", "HT", "4T", "126", "44", + "MKK", "5G", "40M", "HT", "4T", "126", "44", + "FCC", "5G", "40M", "HT", "4T", "134", "42", + "ETSI", "5G", "40M", "HT", "4T", "134", "42", + "MKK", "5G", "40M", "HT", "4T", "134", "42", + "FCC", "5G", "40M", "HT", "4T", "151", "42", + "ETSI", "5G", "40M", "HT", "4T", "151", "42", + "MKK", "5G", "40M", "HT", "4T", "151", "63", + "FCC", "5G", "40M", "HT", "4T", "159", "42", + "ETSI", "5G", "40M", "HT", "4T", "159", "42", + "MKK", "5G", "40M", "HT", "4T", "159", "63", + "FCC", "5G", "80M", "VHT", "1T", "42", "30", + "ETSI", "5G", "80M", "VHT", "1T", "42", "30", + "MKK", "5G", "80M", "VHT", "1T", "42", "30", + "FCC", "5G", "80M", "VHT", "1T", "58", "28", + "ETSI", "5G", "80M", "VHT", "1T", "58", "28", + "MKK", "5G", "80M", "VHT", "1T", "58", "28", + "FCC", "5G", "80M", "VHT", "1T", "106", "30", + "ETSI", "5G", "80M", "VHT", "1T", "106", "30", + "MKK", "5G", "80M", "VHT", "1T", "106", "30", + "FCC", "5G", "80M", "VHT", "1T", "122", "44", + "ETSI", "5G", "80M", "VHT", "1T", "122", "44", + "MKK", "5G", "80M", "VHT", "1T", "122", "44", + "FCC", "5G", "80M", "VHT", "1T", "155", "40", + "ETSI", "5G", "80M", "VHT", "1T", "155", "40", + "MKK", "5G", "80M", "VHT", "1T", "155", "63", + "FCC", "5G", "80M", "VHT", "2T", "42", "30", + "ETSI", "5G", "80M", "VHT", "2T", "42", "30", + "MKK", "5G", "80M", "VHT", "2T", "42", "30", + "FCC", "5G", "80M", "VHT", "2T", "58", "28", + "ETSI", "5G", "80M", "VHT", "2T", "58", "28", + "MKK", "5G", "80M", "VHT", "2T", "58", "28", + "FCC", "5G", "80M", "VHT", "2T", "106", "30", + "ETSI", "5G", "80M", "VHT", "2T", "106", "30", + "MKK", "5G", "80M", "VHT", "2T", "106", "30", + "FCC", "5G", "80M", "VHT", "2T", "122", "44", + "ETSI", "5G", "80M", "VHT", "2T", "122", "44", + "MKK", "5G", "80M", "VHT", "2T", "122", "44", + "FCC", "5G", "80M", "VHT", "2T", "155", "40", + "ETSI", "5G", "80M", "VHT", "2T", "155", "40", + "MKK", "5G", "80M", "VHT", "2T", "155", "63", + "FCC", "5G", "80M", "VHT", "3T", "42", "30", + "ETSI", "5G", "80M", "VHT", "3T", "42", "30", + "MKK", "5G", "80M", "VHT", "3T", "42", "30", + "FCC", "5G", "80M", "VHT", "3T", "58", "28", + "ETSI", "5G", "80M", "VHT", "3T", "58", "28", + "MKK", "5G", "80M", "VHT", "3T", "58", "28", + "FCC", "5G", "80M", "VHT", "3T", "106", "30", + "ETSI", "5G", "80M", "VHT", "3T", "106", "30", + "MKK", "5G", "80M", "VHT", "3T", "106", "30", + "FCC", "5G", "80M", "VHT", "3T", "122", "44", + "ETSI", "5G", "80M", "VHT", "3T", "122", "44", + "MKK", "5G", "80M", "VHT", "3T", "122", "44", + "FCC", "5G", "80M", "VHT", "3T", "155", "40", + "ETSI", "5G", "80M", "VHT", "3T", "155", "40", + "MKK", "5G", "80M", "VHT", "3T", "155", "63", + "FCC", "5G", "80M", "VHT", "4T", "42", "30", + "ETSI", "5G", "80M", "VHT", "4T", "42", "30", + "MKK", "5G", "80M", "VHT", "4T", "42", "30", + "FCC", "5G", "80M", "VHT", "4T", "58", "28", + "ETSI", "5G", "80M", "VHT", "4T", "58", "28", + "MKK", "5G", "80M", "VHT", "4T", "58", "28", + "FCC", "5G", "80M", "VHT", "4T", "106", "30", + "ETSI", "5G", "80M", "VHT", "4T", "106", "30", + "MKK", "5G", "80M", "VHT", "4T", "106", "30", + "FCC", "5G", "80M", "VHT", "4T", "122", "44", + "ETSI", "5G", "80M", "VHT", "4T", "122", "44", + "MKK", "5G", "80M", "VHT", "4T", "122", "44", + "FCC", "5G", "80M", "VHT", "4T", "155", "40", + "ETSI", "5G", "80M", "VHT", "4T", "155", "40", + "MKK", "5G", "80M", "VHT", "4T", "155", "63" +}; +#endif + +void +odm_read_and_config_mp_8814a_txpwr_lmt_type9(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE9 + + u32 i = 0; +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type9) / sizeof(u8); + u8 *array = (u8 *)array_mp_8814a_txpwr_lmt_type9; +#else + u32 array_len = + sizeof(array_mp_8814a_txpwr_lmt_type9) / sizeof(u8 *); + u8 **array = (u8 **)array_mp_8814a_txpwr_lmt_type9; +#endif + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrLmt, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrLmt = array_len / 7; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + for (i = 0; i < array_len; i += 7) { +#if (DM_ODM_SUPPORT_TYPE == ODM_IOT) + u8 regulation = array[i]; + u8 band = array[i + 1]; + u8 bandwidth = array[i + 2]; + u8 rate = array[i + 3]; + u8 rf_path = array[i + 4]; + u8 chnl = array[i + 5]; + u8 val = array[i + 6]; +#else + u8 *regulation = array[i]; + u8 *band = array[i + 1]; + u8 *bandwidth = array[i + 2]; + u8 *rate = array[i + 3]; + u8 *rf_path = array[i + 4]; + u8 *chnl = array[i + 5]; + u8 *val = array[i + 6]; +#endif + + odm_config_bb_txpwr_lmt_8814a(dm, regulation, band, bandwidth, + rate, rf_path, chnl, val); +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrLmt[i / 7], 100, "\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\",", + regulation, band, bandwidth, rate, rf_path, chnl, val); +#endif + } + +#endif +} + +#endif /* end of HWIMG_SUPPORT*/ + diff --git a/hal/phydm/halrf/rtl8814a/halhwimg8814a_rf.h b/hal/phydm/halrf/rtl8814a/halhwimg8814a_rf.h new file mode 100644 index 0000000..87cac17 --- /dev/null +++ b/hal/phydm/halrf/rtl8814a/halhwimg8814a_rf.h @@ -0,0 +1,394 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +/*Image2HeaderVersion: R3 1.5.6*/ +#if (RTL8814A_SUPPORT == 1) +#ifndef __INC_MP_RF_HW_IMG_8814A_H +#define __INC_MP_RF_HW_IMG_8814A_H + +/* Please add following compiler flags definition (#define CONFIG_XXX_DRV_DIS) + * into driver source code to reduce code size if necessary. + * #define CONFIG_8814A_DRV_DIS + * #define CONFIG_8814A_TYPE0_DRV_DIS + * #define CONFIG_8814A_TYPE1_DRV_DIS + * #define CONFIG_8814A_TYPE10_DRV_DIS + * #define CONFIG_8814A_TYPE11_DRV_DIS + * #define CONFIG_8814A_TYPE2_DRV_DIS + * #define CONFIG_8814A_TYPE3_DRV_DIS + * #define CONFIG_8814A_TYPE4_DRV_DIS + * #define CONFIG_8814A_TYPE5_DRV_DIS + * #define CONFIG_8814A_TYPE6_DRV_DIS + * #define CONFIG_8814A_TYPE7_DRV_DIS + * #define CONFIG_8814A_TYPE8_DRV_DIS + * #define CONFIG_8814A_TYPE9_DRV_DIS + */ + +#define CONFIG_8814A +#ifdef CONFIG_8814A_DRV_DIS + #undef CONFIG_8814A +#endif + +#define CONFIG_8814A_TYPE0 +#ifdef CONFIG_8814A_TYPE0_DRV_DIS + #undef CONFIG_8814A_TYPE0 +#endif + +#define CONFIG_8814A_TYPE1 +#ifdef CONFIG_8814A_TYPE1_DRV_DIS + #undef CONFIG_8814A_TYPE1 +#endif + +#define CONFIG_8814A_TYPE10 +#ifdef CONFIG_8814A_TYPE10_DRV_DIS + #undef CONFIG_8814A_TYPE10 +#endif + +#define CONFIG_8814A_TYPE11 +#ifdef CONFIG_8814A_TYPE11_DRV_DIS + #undef CONFIG_8814A_TYPE11 +#endif + +#define CONFIG_8814A_TYPE2 +#ifdef CONFIG_8814A_TYPE2_DRV_DIS + #undef CONFIG_8814A_TYPE2 +#endif + +#define CONFIG_8814A_TYPE3 +#ifdef CONFIG_8814A_TYPE3_DRV_DIS + #undef CONFIG_8814A_TYPE3 +#endif + +#define CONFIG_8814A_TYPE4 +#ifdef CONFIG_8814A_TYPE4_DRV_DIS + #undef CONFIG_8814A_TYPE4 +#endif + +#define CONFIG_8814A_TYPE5 +#ifdef CONFIG_8814A_TYPE5_DRV_DIS + #undef CONFIG_8814A_TYPE5 +#endif + +#define CONFIG_8814A_TYPE6 +#ifdef CONFIG_8814A_TYPE6_DRV_DIS + #undef CONFIG_8814A_TYPE6 +#endif + +#define CONFIG_8814A_TYPE7 +#ifdef CONFIG_8814A_TYPE7_DRV_DIS + #undef CONFIG_8814A_TYPE7 +#endif + +#define CONFIG_8814A_TYPE8 +#ifdef CONFIG_8814A_TYPE8_DRV_DIS + #undef CONFIG_8814A_TYPE8 +#endif + +#define CONFIG_8814A_TYPE9 +#ifdef CONFIG_8814A_TYPE9_DRV_DIS + #undef CONFIG_8814A_TYPE9 +#endif + +/****************************************************************************** + * radioa.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_radioa(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_radioa(void); + +/****************************************************************************** + * radiob.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_radiob(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_radiob(void); + +/****************************************************************************** + * radioc.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_radioc(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_radioc(void); + +/****************************************************************************** + * radiod.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_radiod(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_radiod(void); + +/****************************************************************************** + * txpowertrack.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpowertrack(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpowertrack(void); + +/****************************************************************************** + * txpowertrack_type0.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpowertrack_type0(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpowertrack_type0(void); + +/****************************************************************************** + * txpowertrack_type1.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpowertrack_type1(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpowertrack_type1(void); + +/****************************************************************************** + * txpowertrack_type10.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpowertrack_type10(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpowertrack_type10(void); + +/****************************************************************************** + * txpowertrack_type11.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpowertrack_type11(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpowertrack_type11(void); + +/****************************************************************************** + * txpowertrack_type2.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpowertrack_type2(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpowertrack_type2(void); + +/****************************************************************************** + * txpowertrack_type3.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpowertrack_type3(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpowertrack_type3(void); + +/****************************************************************************** + * txpowertrack_type4.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpowertrack_type4(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpowertrack_type4(void); + +/****************************************************************************** + * txpowertrack_type5.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpowertrack_type5(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpowertrack_type5(void); + +/****************************************************************************** + * txpowertrack_type6.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpowertrack_type6(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpowertrack_type6(void); + +/****************************************************************************** + * txpowertrack_type7.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpowertrack_type7(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpowertrack_type7(void); + +/****************************************************************************** + * txpowertrack_type8.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpowertrack_type8(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpowertrack_type8(void); + +/****************************************************************************** + * txpowertrack_type9.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpowertrack_type9(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpowertrack_type9(void); + +/****************************************************************************** + * txpowertssi.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpowertssi(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpowertssi(void); + +/****************************************************************************** + * txpwr_lmt.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpwr_lmt(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpwr_lmt(void); + +/****************************************************************************** + * txpwr_lmt_type0.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpwr_lmt_type0(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpwr_lmt_type0(void); + +/****************************************************************************** + * txpwr_lmt_type1.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpwr_lmt_type1(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpwr_lmt_type1(void); + +/****************************************************************************** + * txpwr_lmt_type10.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpwr_lmt_type10(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpwr_lmt_type10(void); + +/****************************************************************************** + * txpwr_lmt_type11.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpwr_lmt_type11(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpwr_lmt_type11(void); + +/****************************************************************************** + * txpwr_lmt_type2.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpwr_lmt_type2(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpwr_lmt_type2(void); + +/****************************************************************************** + * txpwr_lmt_type3.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpwr_lmt_type3(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpwr_lmt_type3(void); + +/****************************************************************************** + * txpwr_lmt_type4.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpwr_lmt_type4(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpwr_lmt_type4(void); + +/****************************************************************************** + * txpwr_lmt_type5.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpwr_lmt_type5(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpwr_lmt_type5(void); + +/****************************************************************************** + * txpwr_lmt_type6.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpwr_lmt_type6(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpwr_lmt_type6(void); + +/****************************************************************************** + * txpwr_lmt_type7.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpwr_lmt_type7(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpwr_lmt_type7(void); + +/****************************************************************************** + * txpwr_lmt_type8.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpwr_lmt_type8(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpwr_lmt_type8(void); + +/****************************************************************************** + * txpwr_lmt_type9.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_txpwr_lmt_type9(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_txpwr_lmt_type9(void); + +#endif +#endif /* end of HWIMG_SUPPORT*/ + diff --git a/hal/phydm/rtl8814a/Hal8814_PhyTables.c b/hal/phydm/rtl8814a/Hal8814_PhyTables.c new file mode 100644 index 0000000..d8f14bb --- /dev/null +++ b/hal/phydm/rtl8814a/Hal8814_PhyTables.c @@ -0,0 +1,15284 @@ +/* Auto-generated by tools/extract_8814a_phy_tables.py. + * Source: aircrack-ng/rtl8814au v5.8.5.1. + * Extracted arrays: + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_agc_tab (3089 lines) + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_phy_reg (2190 lines) + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_phy_reg_mp (3 lines) + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_phy_reg_pg (132 lines) + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_phy_reg_pg_type0 (132 lines) + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_phy_reg_pg_type1 (132 lines) + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_phy_reg_pg_type10 (132 lines) + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_phy_reg_pg_type11 (132 lines) + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_phy_reg_pg_type2 (132 lines) + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_phy_reg_pg_type3 (132 lines) + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_phy_reg_pg_type4 (132 lines) + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_phy_reg_pg_type5 (132 lines) + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_phy_reg_pg_type6 (132 lines) + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_phy_reg_pg_type7 (132 lines) + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_phy_reg_pg_type8 (132 lines) + * hal/phydm/rtl8814a/halhwimg8814a_bb.c::array_mp_8814a_phy_reg_pg_type9 (132 lines) + * hal/phydm/rtl8814a/halhwimg8814a_mac.c::array_mp_8814a_mac_reg (144 lines) + * hal/phydm/halrf/rtl8814a/halhwimg8814a_rf.c::array_mp_8814a_radioa (2047 lines) + * hal/phydm/halrf/rtl8814a/halhwimg8814a_rf.c::array_mp_8814a_radiob (1955 lines) + * hal/phydm/halrf/rtl8814a/halhwimg8814a_rf.c::array_mp_8814a_radioc (1999 lines) + * hal/phydm/halrf/rtl8814a/halhwimg8814a_rf.c::array_mp_8814a_radiod (2028 lines) + * Edit the source files upstream and re-run the extractor; do not hand-edit. */ + +#include "drv_types.h" +#include "Hal8814_PhyTables.h" + +const u32 array_mp_8814a_agc_tab[] = { + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000003, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000003, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0xA0000000, 0x00000000, + 0x81C, 0xFF000003, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x81C, 0xFD020003, + 0x81C, 0xFC040003, + 0x81C, 0xFB060003, + 0x81C, 0xFA080003, + 0x81C, 0xF90A0003, + 0x81C, 0xF80C0003, + 0x81C, 0xF70E0003, + 0x81C, 0xF6100003, + 0x81C, 0xF5120003, + 0x81C, 0xF4140003, + 0x81C, 0xF3160003, + 0x81C, 0xF2180003, + 0x81C, 0xF11A0003, + 0x81C, 0xF01C0003, + 0x81C, 0xEF1E0003, + 0x81C, 0xEE200003, + 0x81C, 0xED220003, + 0x81C, 0xCF240003, + 0x81C, 0xCE260003, + 0x81C, 0xCD280003, + 0x81C, 0xCC2A0003, + 0x81C, 0xCB2C0003, + 0x81C, 0xCA2E0003, + 0x81C, 0xC9300003, + 0x81C, 0xC8320003, + 0x81C, 0xC7340003, + 0x81C, 0xC6360003, + 0x81C, 0xC5380003, + 0x81C, 0xC43A0003, + 0x81C, 0xA63C0003, + 0x81C, 0xA53E0003, + 0x81C, 0xA4400003, + 0x81C, 0xA3420003, + 0x81C, 0xA2440003, + 0x81C, 0xA1460003, + 0x81C, 0x86480003, + 0x81C, 0x854A0003, + 0x81C, 0x844C0003, + 0x81C, 0x834E0003, + 0x81C, 0x66500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x435C0003, + 0x81C, 0x425E0003, + 0x81C, 0x41600003, + 0x81C, 0x27620003, + 0x81C, 0x26640003, + 0x81C, 0x25660003, + 0x81C, 0x24680003, + 0x81C, 0x236A0003, + 0x81C, 0x226C0003, + 0x81C, 0x216E0003, + 0x81C, 0x21700003, + 0x81C, 0x21720003, + 0x81C, 0x21740003, + 0x81C, 0x21760003, + 0x81C, 0x21780003, + 0x81C, 0x217A0003, + 0x81C, 0x217C0003, + 0x81C, 0x217E0003, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000003, + 0x81C, 0xFE020003, + 0x81C, 0xFD040003, + 0x81C, 0xFC060003, + 0x81C, 0xFB080003, + 0x81C, 0xFA0A0003, + 0x81C, 0xF90C0003, + 0x81C, 0xF80E0003, + 0x81C, 0xF7100003, + 0x81C, 0xF6120003, + 0x81C, 0xF5140003, + 0x81C, 0xF4160003, + 0x81C, 0xF3180003, + 0x81C, 0xF21A0003, + 0x81C, 0xF11C0003, + 0x81C, 0xF01E0003, + 0x81C, 0xEF200003, + 0x81C, 0xEE220003, + 0x81C, 0xED240003, + 0x81C, 0xEC260003, + 0x81C, 0xEB280003, + 0x81C, 0xEA2A0003, + 0x81C, 0xE92C0003, + 0x81C, 0xE82E0003, + 0x81C, 0xE7300003, + 0x81C, 0xE6320003, + 0x81C, 0xE5340003, + 0x81C, 0xE4360003, + 0x81C, 0xE3380003, + 0x81C, 0xC53A0003, + 0x81C, 0xC43C0003, + 0x81C, 0xC33E0003, + 0x81C, 0xC2400003, + 0x81C, 0xC1420003, + 0x81C, 0xA8440003, + 0x81C, 0xA7460003, + 0x81C, 0xA6480003, + 0x81C, 0xA54A0003, + 0x81C, 0xA44C0003, + 0x81C, 0xA34E0003, + 0x81C, 0xA2500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x475C0003, + 0x81C, 0x465E0003, + 0x81C, 0x45600003, + 0x81C, 0x44620003, + 0x81C, 0x43640003, + 0x81C, 0x42660003, + 0x81C, 0x41680003, + 0x81C, 0x416A0003, + 0x81C, 0x416C0003, + 0x81C, 0x416E0003, + 0x81C, 0x41700003, + 0x81C, 0x41720003, + 0x81C, 0x41740003, + 0x81C, 0x41760003, + 0x81C, 0x41780003, + 0x81C, 0x417A0003, + 0x81C, 0x417C0003, + 0x81C, 0x417E0003, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x81C, 0xFD020003, + 0x81C, 0xFC040003, + 0x81C, 0xFB060003, + 0x81C, 0xFA080003, + 0x81C, 0xF90A0003, + 0x81C, 0xF80C0003, + 0x81C, 0xF70E0003, + 0x81C, 0xF6100003, + 0x81C, 0xF5120003, + 0x81C, 0xF4140003, + 0x81C, 0xF3160003, + 0x81C, 0xF2180003, + 0x81C, 0xF11A0003, + 0x81C, 0xF01C0003, + 0x81C, 0xEF1E0003, + 0x81C, 0xEE200003, + 0x81C, 0xED220003, + 0x81C, 0xEC240003, + 0x81C, 0xEB260003, + 0x81C, 0xEA280003, + 0x81C, 0xE92A0003, + 0x81C, 0xE82C0003, + 0x81C, 0xE72E0003, + 0x81C, 0xE6300003, + 0x81C, 0xE5320003, + 0x81C, 0xE4340003, + 0x81C, 0xE3360003, + 0x81C, 0xC6380003, + 0x81C, 0xC53A0003, + 0x81C, 0xC43C0003, + 0x81C, 0xC33E0003, + 0x81C, 0xC2400003, + 0x81C, 0xA9420003, + 0x81C, 0xA8440003, + 0x81C, 0xA7460003, + 0x81C, 0xA6480003, + 0x81C, 0xA54A0003, + 0x81C, 0xA44C0003, + 0x81C, 0xA34E0003, + 0x81C, 0x66500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x49580003, + 0x81C, 0x485A0003, + 0x81C, 0x475C0003, + 0x81C, 0x465E0003, + 0x81C, 0x45600003, + 0x81C, 0x44620003, + 0x81C, 0x43640003, + 0x81C, 0x42660003, + 0x81C, 0x41680003, + 0x81C, 0x416A0003, + 0x81C, 0x416C0003, + 0x81C, 0x416E0003, + 0x81C, 0x41700003, + 0x81C, 0x41720003, + 0x81C, 0x41740003, + 0x81C, 0x41760003, + 0x81C, 0x41780003, + 0x81C, 0x417A0003, + 0x81C, 0x417C0003, + 0x81C, 0x417E0003, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000003, + 0x81C, 0xFE020003, + 0x81C, 0xFD040003, + 0x81C, 0xFC060003, + 0x81C, 0xFB080003, + 0x81C, 0xFA0A0003, + 0x81C, 0xF90C0003, + 0x81C, 0xF80E0003, + 0x81C, 0xF7100003, + 0x81C, 0xF6120003, + 0x81C, 0xF5140003, + 0x81C, 0xF4160003, + 0x81C, 0xF3180003, + 0x81C, 0xF21A0003, + 0x81C, 0xF11C0003, + 0x81C, 0xF01E0003, + 0x81C, 0xEF200003, + 0x81C, 0xEE220003, + 0x81C, 0xED240003, + 0x81C, 0xEC260003, + 0x81C, 0xEB280003, + 0x81C, 0xEA2A0003, + 0x81C, 0xE92C0003, + 0x81C, 0xE82E0003, + 0x81C, 0xE7300003, + 0x81C, 0xE6320003, + 0x81C, 0xE5340003, + 0x81C, 0xE4360003, + 0x81C, 0xE3380003, + 0x81C, 0xC53A0003, + 0x81C, 0xC43C0003, + 0x81C, 0xC33E0003, + 0x81C, 0xC2400003, + 0x81C, 0xC1420003, + 0x81C, 0xA8440003, + 0x81C, 0xA7460003, + 0x81C, 0xA6480003, + 0x81C, 0xA54A0003, + 0x81C, 0xA44C0003, + 0x81C, 0xA34E0003, + 0x81C, 0xA2500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x475C0003, + 0x81C, 0x465E0003, + 0x81C, 0x45600003, + 0x81C, 0x44620003, + 0x81C, 0x43640003, + 0x81C, 0x42660003, + 0x81C, 0x41680003, + 0x81C, 0x416A0003, + 0x81C, 0x416C0003, + 0x81C, 0x416E0003, + 0x81C, 0x41700003, + 0x81C, 0x41720003, + 0x81C, 0x41740003, + 0x81C, 0x41760003, + 0x81C, 0x41780003, + 0x81C, 0x417A0003, + 0x81C, 0x417C0003, + 0x81C, 0x417E0003, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x81C, 0xFD020003, + 0x81C, 0xFC040003, + 0x81C, 0xFB060003, + 0x81C, 0xFA080003, + 0x81C, 0xF90A0003, + 0x81C, 0xF80C0003, + 0x81C, 0xF70E0003, + 0x81C, 0xF6100003, + 0x81C, 0xF5120003, + 0x81C, 0xF4140003, + 0x81C, 0xF3160003, + 0x81C, 0xF2180003, + 0x81C, 0xF11A0003, + 0x81C, 0xF01C0003, + 0x81C, 0xEF1E0003, + 0x81C, 0xEE200003, + 0x81C, 0xED220003, + 0x81C, 0xEC240003, + 0x81C, 0xEB260003, + 0x81C, 0xEA280003, + 0x81C, 0xE92A0003, + 0x81C, 0xE82C0003, + 0x81C, 0xE72E0003, + 0x81C, 0xE6300003, + 0x81C, 0xE5320003, + 0x81C, 0xE4340003, + 0x81C, 0xE3360003, + 0x81C, 0xC6380003, + 0x81C, 0xC53A0003, + 0x81C, 0xC43C0003, + 0x81C, 0xC33E0003, + 0x81C, 0xC2400003, + 0x81C, 0xA9420003, + 0x81C, 0xA8440003, + 0x81C, 0xA7460003, + 0x81C, 0xA6480003, + 0x81C, 0xA54A0003, + 0x81C, 0xA44C0003, + 0x81C, 0xA34E0003, + 0x81C, 0x66500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x49580003, + 0x81C, 0x485A0003, + 0x81C, 0x475C0003, + 0x81C, 0x465E0003, + 0x81C, 0x45600003, + 0x81C, 0x44620003, + 0x81C, 0x43640003, + 0x81C, 0x42660003, + 0x81C, 0x41680003, + 0x81C, 0x416A0003, + 0x81C, 0x416C0003, + 0x81C, 0x416E0003, + 0x81C, 0x41700003, + 0x81C, 0x41720003, + 0x81C, 0x41740003, + 0x81C, 0x41760003, + 0x81C, 0x41780003, + 0x81C, 0x417A0003, + 0x81C, 0x417C0003, + 0x81C, 0x417E0003, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xDF000003, + 0x81C, 0xDF020003, + 0x81C, 0xDF040003, + 0x81C, 0xDE060003, + 0x81C, 0xDD080003, + 0x81C, 0xDC0A0003, + 0x81C, 0xDB0C0003, + 0x81C, 0xDA0E0003, + 0x81C, 0xD9100003, + 0x81C, 0xD8120003, + 0x81C, 0xD7140003, + 0x81C, 0xD6160003, + 0x81C, 0xD5180003, + 0x81C, 0xD41A0003, + 0x81C, 0xD31C0003, + 0x81C, 0xD21E0003, + 0x81C, 0xD1200003, + 0x81C, 0xD0220003, + 0x81C, 0xCF240003, + 0x81C, 0xCE260003, + 0x81C, 0xCD280003, + 0x81C, 0xCC2A0003, + 0x81C, 0xCB2C0003, + 0x81C, 0xCA2E0003, + 0x81C, 0xC9300003, + 0x81C, 0xC8320003, + 0x81C, 0xC7340003, + 0x81C, 0xC6360003, + 0x81C, 0xC5380003, + 0x81C, 0xA73A0003, + 0x81C, 0xA63C0003, + 0x81C, 0xA53E0003, + 0x81C, 0xA4400003, + 0x81C, 0xA3420003, + 0x81C, 0xA2440003, + 0x81C, 0x87460003, + 0x81C, 0x86480003, + 0x81C, 0x854A0003, + 0x81C, 0x844C0003, + 0x81C, 0x834E0003, + 0x81C, 0x82500003, + 0x81C, 0x81520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x445C0003, + 0x81C, 0x435E0003, + 0x81C, 0x42600003, + 0x81C, 0x41620003, + 0x81C, 0x27640003, + 0x81C, 0x26660003, + 0x81C, 0x25680003, + 0x81C, 0x246A0003, + 0x81C, 0x236C0003, + 0x81C, 0x226E0003, + 0x81C, 0x21700003, + 0x81C, 0x21720003, + 0x81C, 0x21740003, + 0x81C, 0x21760003, + 0x81C, 0x21780003, + 0x81C, 0x217A0003, + 0x81C, 0x217C0003, + 0x81C, 0x217E0003, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000003, + 0x81C, 0xFE020003, + 0x81C, 0xFD040003, + 0x81C, 0xFC060003, + 0x81C, 0xFB080003, + 0x81C, 0xFA0A0003, + 0x81C, 0xF90C0003, + 0x81C, 0xF80E0003, + 0x81C, 0xF7100003, + 0x81C, 0xF6120003, + 0x81C, 0xF5140003, + 0x81C, 0xF4160003, + 0x81C, 0xF3180003, + 0x81C, 0xF21A0003, + 0x81C, 0xF11C0003, + 0x81C, 0xF01E0003, + 0x81C, 0xEF200003, + 0x81C, 0xEE220003, + 0x81C, 0xED240003, + 0x81C, 0xEC260003, + 0x81C, 0xEB280003, + 0x81C, 0xEA2A0003, + 0x81C, 0xE92C0003, + 0x81C, 0xE82E0003, + 0x81C, 0xE7300003, + 0x81C, 0xE6320003, + 0x81C, 0xE5340003, + 0x81C, 0xE4360003, + 0x81C, 0xE3380003, + 0x81C, 0xC53A0003, + 0x81C, 0xC43C0003, + 0x81C, 0xC33E0003, + 0x81C, 0xC2400003, + 0x81C, 0xC1420003, + 0x81C, 0xA8440003, + 0x81C, 0xA7460003, + 0x81C, 0xA6480003, + 0x81C, 0xA54A0003, + 0x81C, 0xA44C0003, + 0x81C, 0xA34E0003, + 0x81C, 0xA2500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x475C0003, + 0x81C, 0x465E0003, + 0x81C, 0x45600003, + 0x81C, 0x44620003, + 0x81C, 0x43640003, + 0x81C, 0x42660003, + 0x81C, 0x41680003, + 0x81C, 0x416A0003, + 0x81C, 0x416C0003, + 0x81C, 0x416E0003, + 0x81C, 0x41700003, + 0x81C, 0x41720003, + 0x81C, 0x41740003, + 0x81C, 0x41760003, + 0x81C, 0x41780003, + 0x81C, 0x417A0003, + 0x81C, 0x417C0003, + 0x81C, 0x417E0003, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xDF000003, + 0x81C, 0xDF020003, + 0x81C, 0xDF040003, + 0x81C, 0xDE060003, + 0x81C, 0xDD080003, + 0x81C, 0xDC0A0003, + 0x81C, 0xDB0C0003, + 0x81C, 0xDA0E0003, + 0x81C, 0xD9100003, + 0x81C, 0xD8120003, + 0x81C, 0xD7140003, + 0x81C, 0xD6160003, + 0x81C, 0xD5180003, + 0x81C, 0xD41A0003, + 0x81C, 0xD31C0003, + 0x81C, 0xD21E0003, + 0x81C, 0xD1200003, + 0x81C, 0xD0220003, + 0x81C, 0xCF240003, + 0x81C, 0xCE260003, + 0x81C, 0xCD280003, + 0x81C, 0xCC2A0003, + 0x81C, 0xCB2C0003, + 0x81C, 0xCA2E0003, + 0x81C, 0xC9300003, + 0x81C, 0xC8320003, + 0x81C, 0xC7340003, + 0x81C, 0xC6360003, + 0x81C, 0xC5380003, + 0x81C, 0xA73A0003, + 0x81C, 0xA63C0003, + 0x81C, 0xA53E0003, + 0x81C, 0xA4400003, + 0x81C, 0xA3420003, + 0x81C, 0xA2440003, + 0x81C, 0x87460003, + 0x81C, 0x86480003, + 0x81C, 0x854A0003, + 0x81C, 0x844C0003, + 0x81C, 0x834E0003, + 0x81C, 0x82500003, + 0x81C, 0x81520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x445C0003, + 0x81C, 0x435E0003, + 0x81C, 0x42600003, + 0x81C, 0x41620003, + 0x81C, 0x27640003, + 0x81C, 0x26660003, + 0x81C, 0x25680003, + 0x81C, 0x246A0003, + 0x81C, 0x236C0003, + 0x81C, 0x226E0003, + 0x81C, 0x21700003, + 0x81C, 0x21720003, + 0x81C, 0x21740003, + 0x81C, 0x21760003, + 0x81C, 0x21780003, + 0x81C, 0x217A0003, + 0x81C, 0x217C0003, + 0x81C, 0x217E0003, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x81C, 0xFE020003, + 0x81C, 0xFD040003, + 0x81C, 0xFC060003, + 0x81C, 0xFB080003, + 0x81C, 0xFA0A0003, + 0x81C, 0xF90C0003, + 0x81C, 0xF80E0003, + 0x81C, 0xF7100003, + 0x81C, 0xF6120003, + 0x81C, 0xF5140003, + 0x81C, 0xF4160003, + 0x81C, 0xF3180003, + 0x81C, 0xF21A0003, + 0x81C, 0xF11C0003, + 0x81C, 0xF01E0003, + 0x81C, 0xEF200003, + 0x81C, 0xEE220003, + 0x81C, 0xED240003, + 0x81C, 0x0F260003, + 0x81C, 0x0E280003, + 0x81C, 0x0D2A0003, + 0x81C, 0x0C2C0003, + 0x81C, 0x0B2E0003, + 0x81C, 0x0A300003, + 0x81C, 0x09320003, + 0x81C, 0x08340003, + 0x81C, 0x07360003, + 0x81C, 0x06380003, + 0x81C, 0x053A0003, + 0x81C, 0x043C0003, + 0x81C, 0x033E0003, + 0x81C, 0x23400003, + 0x81C, 0x22420003, + 0x81C, 0xA8440003, + 0x81C, 0xA7460003, + 0x81C, 0xA6480003, + 0x81C, 0xA54A0003, + 0x81C, 0xA44C0003, + 0x81C, 0x684E0003, + 0x81C, 0x67500003, + 0x81C, 0x66520003, + 0x81C, 0x65540003, + 0x81C, 0x64560003, + 0x81C, 0x63580003, + 0x81C, 0x625A0003, + 0x81C, 0x615C0003, + 0x81C, 0x475E0003, + 0x81C, 0x46600003, + 0x81C, 0x45620003, + 0x81C, 0x44640003, + 0x81C, 0x43660003, + 0x81C, 0x42680003, + 0x81C, 0x416A0003, + 0x81C, 0x416C0003, + 0x81C, 0x416E0003, + 0x81C, 0x41700003, + 0x81C, 0x41720003, + 0x81C, 0x41740003, + 0x81C, 0x41760003, + 0x81C, 0x41780003, + 0x81C, 0x417A0003, + 0x81C, 0x417C0003, + 0x81C, 0x417E0003, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x81C, 0xFE020003, + 0x81C, 0xFD040003, + 0x81C, 0xFC060003, + 0x81C, 0xFB080003, + 0x81C, 0xFA0A0003, + 0x81C, 0xF90C0003, + 0x81C, 0xF80E0003, + 0x81C, 0xF7100003, + 0x81C, 0xF6120003, + 0x81C, 0xF5140003, + 0x81C, 0xF4160003, + 0x81C, 0xF3180003, + 0x81C, 0xF21A0003, + 0x81C, 0xF11C0003, + 0x81C, 0xF01E0003, + 0x81C, 0xEF200003, + 0x81C, 0xEE220003, + 0x81C, 0xED240003, + 0x81C, 0xEC260003, + 0x81C, 0xEB280003, + 0x81C, 0xEA2A0003, + 0x81C, 0xE92C0003, + 0x81C, 0xE72E0003, + 0x81C, 0xE6300003, + 0x81C, 0xE5320003, + 0x81C, 0x08340003, + 0x81C, 0x07360003, + 0x81C, 0x06380003, + 0x81C, 0x053A0003, + 0x81C, 0x043C0003, + 0x81C, 0x033E0003, + 0x81C, 0x02400003, + 0x81C, 0xA9420003, + 0x81C, 0xA8440003, + 0x81C, 0xA7460003, + 0x81C, 0xA6480003, + 0x81C, 0xA54A0003, + 0x81C, 0x684C0003, + 0x81C, 0x674E0003, + 0x81C, 0x66500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x475C0003, + 0x81C, 0x465E0003, + 0x81C, 0x45600003, + 0x81C, 0x44620003, + 0x81C, 0x43640003, + 0x81C, 0x42660003, + 0x81C, 0x41680003, + 0x81C, 0x416A0003, + 0x81C, 0x416C0003, + 0x81C, 0x416E0003, + 0x81C, 0x41700003, + 0x81C, 0x41720003, + 0x81C, 0x41740003, + 0x81C, 0x41760003, + 0x81C, 0x41780003, + 0x81C, 0x417A0003, + 0x81C, 0x417C0003, + 0x81C, 0x417E0003, + 0xA0000000, 0x00000000, + 0x81C, 0xFE000003, + 0x81C, 0xFD020003, + 0x81C, 0xFC040003, + 0x81C, 0xFB060003, + 0x81C, 0xFA080003, + 0x81C, 0xF90A0003, + 0x81C, 0xF80C0003, + 0x81C, 0xF70E0003, + 0x81C, 0xF6100003, + 0x81C, 0xF5120003, + 0x81C, 0xF4140003, + 0x81C, 0xF3160003, + 0x81C, 0xF2180003, + 0x81C, 0xF11A0003, + 0x81C, 0xF01C0003, + 0x81C, 0xEF1E0003, + 0x81C, 0xEE200003, + 0x81C, 0xED220003, + 0x81C, 0xCF240003, + 0x81C, 0xCE260003, + 0x81C, 0xCD280003, + 0x81C, 0xCC2A0003, + 0x81C, 0xCB2C0003, + 0x81C, 0xCA2E0003, + 0x81C, 0xC9300003, + 0x81C, 0xC8320003, + 0x81C, 0xC7340003, + 0x81C, 0xC6360003, + 0x81C, 0xC5380003, + 0x81C, 0xC43A0003, + 0x81C, 0xA63C0003, + 0x81C, 0xA53E0003, + 0x81C, 0xA4400003, + 0x81C, 0xA3420003, + 0x81C, 0xA2440003, + 0x81C, 0xA1460003, + 0x81C, 0x86480003, + 0x81C, 0x854A0003, + 0x81C, 0x844C0003, + 0x81C, 0x834E0003, + 0x81C, 0x66500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x435C0003, + 0x81C, 0x425E0003, + 0x81C, 0x41600003, + 0x81C, 0x27620003, + 0x81C, 0x26640003, + 0x81C, 0x25660003, + 0x81C, 0x24680003, + 0x81C, 0x236A0003, + 0x81C, 0x226C0003, + 0x81C, 0x216E0003, + 0x81C, 0x21700003, + 0x81C, 0x21720003, + 0x81C, 0x21740003, + 0x81C, 0x21760003, + 0x81C, 0x21780003, + 0x81C, 0x217A0003, + 0x81C, 0x217C0003, + 0x81C, 0x217E0003, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF9000103, + 0x81C, 0xF8020103, + 0x81C, 0xF7040103, + 0x81C, 0xF6060103, + 0x81C, 0xF5080103, + 0x81C, 0xF40A0103, + 0x81C, 0xF30C0103, + 0x81C, 0xF20E0103, + 0x81C, 0xF1100103, + 0x81C, 0xF0120103, + 0x81C, 0xEF140103, + 0x81C, 0xEE160103, + 0x81C, 0xED180103, + 0x81C, 0xEC1A0103, + 0x81C, 0xEB1C0103, + 0x81C, 0xEA1E0103, + 0x81C, 0xE9200103, + 0x81C, 0xE8220103, + 0x81C, 0xE7240103, + 0x81C, 0xE6260103, + 0x81C, 0xE5280103, + 0x81C, 0xE42A0103, + 0x81C, 0xE32C0103, + 0x81C, 0xC32E0103, + 0x81C, 0xC2300103, + 0x81C, 0xC1320103, + 0x81C, 0xA5340103, + 0x81C, 0xA4360103, + 0x81C, 0xA3380103, + 0x81C, 0xA23A0103, + 0x81C, 0xA13C0103, + 0x81C, 0x843E0103, + 0x81C, 0x83400103, + 0x81C, 0x82420103, + 0x81C, 0x81440103, + 0x81C, 0x64460103, + 0x81C, 0x63480103, + 0x81C, 0x624A0103, + 0x81C, 0x614C0103, + 0x81C, 0x444E0103, + 0x81C, 0x43500103, + 0x81C, 0x42520103, + 0x81C, 0x41540103, + 0x81C, 0x25560103, + 0x81C, 0x24580103, + 0x81C, 0x235A0103, + 0x81C, 0x065C0103, + 0x81C, 0x055E0103, + 0x81C, 0x04600103, + 0x81C, 0x03620103, + 0x81C, 0x02640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF8000103, + 0x81C, 0xF7020103, + 0x81C, 0xF6040103, + 0x81C, 0xF5060103, + 0x81C, 0xF4080103, + 0x81C, 0xF30A0103, + 0x81C, 0xF20C0103, + 0x81C, 0xF10E0103, + 0x81C, 0xF0100103, + 0x81C, 0xEF120103, + 0x81C, 0xEE140103, + 0x81C, 0xED160103, + 0x81C, 0xEC180103, + 0x81C, 0xEB1A0103, + 0x81C, 0xEA1C0103, + 0x81C, 0xE91E0103, + 0x81C, 0xE8200103, + 0x81C, 0xE7220103, + 0x81C, 0xE6240103, + 0x81C, 0xE5260103, + 0x81C, 0xE4280103, + 0x81C, 0xE32A0103, + 0x81C, 0xE22C0103, + 0x81C, 0xE12E0103, + 0x81C, 0xA5300103, + 0x81C, 0xA4320103, + 0x81C, 0xA3340103, + 0x81C, 0xA2360103, + 0x81C, 0xA1380103, + 0x81C, 0x843A0103, + 0x81C, 0x833C0103, + 0x81C, 0x823E0103, + 0x81C, 0x81400103, + 0x81C, 0x64420103, + 0x81C, 0x63440103, + 0x81C, 0x62460103, + 0x81C, 0x61480103, + 0x81C, 0x454A0103, + 0x81C, 0x444C0103, + 0x81C, 0x434E0103, + 0x81C, 0x42500103, + 0x81C, 0x25520103, + 0x81C, 0x24540103, + 0x81C, 0x23560103, + 0x81C, 0x06580103, + 0x81C, 0x055A0103, + 0x81C, 0x045C0103, + 0x81C, 0x035E0103, + 0x81C, 0x02600103, + 0x81C, 0x01620103, + 0x81C, 0x01640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFC000103, + 0x81C, 0xFB020103, + 0x81C, 0xFA040103, + 0x81C, 0xF9060103, + 0x81C, 0xF8080103, + 0x81C, 0xF70A0103, + 0x81C, 0xF60C0103, + 0x81C, 0xF50E0103, + 0x81C, 0xF4100103, + 0x81C, 0xF3120103, + 0x81C, 0xF2140103, + 0x81C, 0xF1160103, + 0x81C, 0xF0180103, + 0x81C, 0xEF1A0103, + 0x81C, 0xEE1C0103, + 0x81C, 0xED1E0103, + 0x81C, 0xEC200103, + 0x81C, 0xEB220103, + 0x81C, 0xEA240103, + 0x81C, 0xE9260103, + 0x81C, 0xE8280103, + 0x81C, 0xE72A0103, + 0x81C, 0xE62C0103, + 0x81C, 0xE52E0103, + 0x81C, 0xE4300103, + 0x81C, 0xE3320103, + 0x81C, 0xE2340103, + 0x81C, 0xE1360103, + 0x81C, 0x87380103, + 0x81C, 0x863A0103, + 0x81C, 0x853C0103, + 0x81C, 0x843E0103, + 0x81C, 0x83400103, + 0x81C, 0x82420103, + 0x81C, 0x81440103, + 0x81C, 0x64460103, + 0x81C, 0x63480103, + 0x81C, 0x624A0103, + 0x81C, 0x464C0103, + 0x81C, 0x454E0103, + 0x81C, 0x44500103, + 0x81C, 0x43520103, + 0x81C, 0x26540103, + 0x81C, 0x25560103, + 0x81C, 0x24580103, + 0x81C, 0x075A0103, + 0x81C, 0x065C0103, + 0x81C, 0x055E0103, + 0x81C, 0x04600103, + 0x81C, 0x03620103, + 0x81C, 0x02640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF9000103, + 0x81C, 0xF8020103, + 0x81C, 0xF7040103, + 0x81C, 0xF6060103, + 0x81C, 0xF5080103, + 0x81C, 0xF40A0103, + 0x81C, 0xF30C0103, + 0x81C, 0xF20E0103, + 0x81C, 0xF1100103, + 0x81C, 0xF0120103, + 0x81C, 0xEF140103, + 0x81C, 0xEE160103, + 0x81C, 0xED180103, + 0x81C, 0xEC1A0103, + 0x81C, 0xEB1C0103, + 0x81C, 0xEA1E0103, + 0x81C, 0xE9200103, + 0x81C, 0xE8220103, + 0x81C, 0xE7240103, + 0x81C, 0xE6260103, + 0x81C, 0xE5280103, + 0x81C, 0xE42A0103, + 0x81C, 0xE32C0103, + 0x81C, 0xE22E0103, + 0x81C, 0xA6300103, + 0x81C, 0xA5320103, + 0x81C, 0xA4340103, + 0x81C, 0xA3360103, + 0x81C, 0xA2380103, + 0x81C, 0xA13A0103, + 0x81C, 0x843C0103, + 0x81C, 0x833E0103, + 0x81C, 0x82400103, + 0x81C, 0x81420103, + 0x81C, 0x64440103, + 0x81C, 0x63460103, + 0x81C, 0x62480103, + 0x81C, 0x614A0103, + 0x81C, 0x444C0103, + 0x81C, 0x434E0103, + 0x81C, 0x42500103, + 0x81C, 0x41520103, + 0x81C, 0x25540103, + 0x81C, 0x24560103, + 0x81C, 0x23580103, + 0x81C, 0x225A0103, + 0x81C, 0x055C0103, + 0x81C, 0x045E0103, + 0x81C, 0x03600103, + 0x81C, 0x02620103, + 0x81C, 0x01640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFD000103, + 0x81C, 0xFC020103, + 0x81C, 0xFB040103, + 0x81C, 0xFA060103, + 0x81C, 0xF9080103, + 0x81C, 0xF80A0103, + 0x81C, 0xF70C0103, + 0x81C, 0xF60E0103, + 0x81C, 0xF5100103, + 0x81C, 0xF4120103, + 0x81C, 0xF3140103, + 0x81C, 0xF2160103, + 0x81C, 0xF1180103, + 0x81C, 0xF01A0103, + 0x81C, 0xEF1C0103, + 0x81C, 0xEE1E0103, + 0x81C, 0xED200103, + 0x81C, 0xEC220103, + 0x81C, 0xEB240103, + 0x81C, 0xEA260103, + 0x81C, 0xE9280103, + 0x81C, 0xE82A0103, + 0x81C, 0xE72C0103, + 0x81C, 0xE62E0103, + 0x81C, 0xE5300103, + 0x81C, 0xE4320103, + 0x81C, 0xE3340103, + 0x81C, 0xE2360103, + 0x81C, 0xE1380103, + 0x81C, 0xA33A0103, + 0x81C, 0xA23C0103, + 0x81C, 0xA13E0103, + 0x81C, 0x84400103, + 0x81C, 0x83420103, + 0x81C, 0x82440103, + 0x81C, 0x81460103, + 0x81C, 0x64480103, + 0x81C, 0x634A0103, + 0x81C, 0x624C0103, + 0x81C, 0x614E0103, + 0x81C, 0x45500103, + 0x81C, 0x44520103, + 0x81C, 0x43540103, + 0x81C, 0x42560103, + 0x81C, 0x25580103, + 0x81C, 0x245A0103, + 0x81C, 0x235C0103, + 0x81C, 0x065E0103, + 0x81C, 0x05600103, + 0x81C, 0x04620103, + 0x81C, 0x03640103, + 0x81C, 0x02660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFA000103, + 0x81C, 0xF9020103, + 0x81C, 0xF8040103, + 0x81C, 0xF7060103, + 0x81C, 0xF6080103, + 0x81C, 0xF50A0103, + 0x81C, 0xF40C0103, + 0x81C, 0xF30E0103, + 0x81C, 0xF2100103, + 0x81C, 0xF1120103, + 0x81C, 0xF0140103, + 0x81C, 0xEF160103, + 0x81C, 0xEE180103, + 0x81C, 0xED1A0103, + 0x81C, 0xEC1C0103, + 0x81C, 0xEB1E0103, + 0x81C, 0xEA200103, + 0x81C, 0xE9220103, + 0x81C, 0xE8240103, + 0x81C, 0xE7260103, + 0x81C, 0xE6280103, + 0x81C, 0xE52A0103, + 0x81C, 0xE42C0103, + 0x81C, 0xE32E0103, + 0x81C, 0xE2300103, + 0x81C, 0xE1320103, + 0x81C, 0xA5340103, + 0x81C, 0xA4360103, + 0x81C, 0xA3380103, + 0x81C, 0xA23A0103, + 0x81C, 0xA13C0103, + 0x81C, 0x843E0103, + 0x81C, 0x83400103, + 0x81C, 0x82420103, + 0x81C, 0x81440103, + 0x81C, 0x64460103, + 0x81C, 0x63480103, + 0x81C, 0x624A0103, + 0x81C, 0x614C0103, + 0x81C, 0x454E0103, + 0x81C, 0x44500103, + 0x81C, 0x43520103, + 0x81C, 0x42540103, + 0x81C, 0x41560103, + 0x81C, 0x24580103, + 0x81C, 0x235A0103, + 0x81C, 0x225C0103, + 0x81C, 0x055E0103, + 0x81C, 0x04600103, + 0x81C, 0x03620103, + 0x81C, 0x02640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000103, + 0x81C, 0xFF020103, + 0x81C, 0xFE040103, + 0x81C, 0xFD060103, + 0x81C, 0xFC080103, + 0x81C, 0xFB0A0103, + 0x81C, 0xFA0C0103, + 0x81C, 0xF90E0103, + 0x81C, 0xF8100103, + 0x81C, 0xF7120103, + 0x81C, 0xF6140103, + 0x81C, 0xF5160103, + 0x81C, 0xF4180103, + 0x81C, 0xF31A0103, + 0x81C, 0xF21C0103, + 0x81C, 0xF11E0103, + 0x81C, 0xF0200103, + 0x81C, 0xEF220103, + 0x81C, 0xEE240103, + 0x81C, 0xED260103, + 0x81C, 0xEC280103, + 0x81C, 0xEB2A0103, + 0x81C, 0xEA2C0103, + 0x81C, 0xE92E0103, + 0x81C, 0xE8300103, + 0x81C, 0xE7320103, + 0x81C, 0xE6340103, + 0x81C, 0xE5360103, + 0x81C, 0xE4380103, + 0x81C, 0xE33A0103, + 0x81C, 0xA53C0103, + 0x81C, 0xA43E0103, + 0x81C, 0xA3400103, + 0x81C, 0xA2420103, + 0x81C, 0xA1440103, + 0x81C, 0x85460103, + 0x81C, 0x84480103, + 0x81C, 0x834A0103, + 0x81C, 0x824C0103, + 0x81C, 0x814E0103, + 0x81C, 0x64500103, + 0x81C, 0x63520103, + 0x81C, 0x62540103, + 0x81C, 0x44560103, + 0x81C, 0x43580103, + 0x81C, 0x425A0103, + 0x81C, 0x265C0103, + 0x81C, 0x255E0103, + 0x81C, 0x24600103, + 0x81C, 0x07620103, + 0x81C, 0x06640103, + 0x81C, 0x05660103, + 0x81C, 0x04680103, + 0x81C, 0x036A0103, + 0x81C, 0x026C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF8000103, + 0x81C, 0xF7020103, + 0x81C, 0xF6040103, + 0x81C, 0xF5060103, + 0x81C, 0xF4080103, + 0x81C, 0xF30A0103, + 0x81C, 0xF20C0103, + 0x81C, 0xF10E0103, + 0x81C, 0xF0100103, + 0x81C, 0xEF120103, + 0x81C, 0xEE140103, + 0x81C, 0xED160103, + 0x81C, 0xEC180103, + 0x81C, 0xEB1A0103, + 0x81C, 0xEA1C0103, + 0x81C, 0xE91E0103, + 0x81C, 0xE8200103, + 0x81C, 0xE7220103, + 0x81C, 0xE6240103, + 0x81C, 0xE5260103, + 0x81C, 0xE4280103, + 0x81C, 0xE32A0103, + 0x81C, 0xE22C0103, + 0x81C, 0xE12E0103, + 0x81C, 0xA4300103, + 0x81C, 0xA3320103, + 0x81C, 0xA2340103, + 0x81C, 0xA1360103, + 0x81C, 0x85380103, + 0x81C, 0x843A0103, + 0x81C, 0x833C0103, + 0x81C, 0x823E0103, + 0x81C, 0x65400103, + 0x81C, 0x64420103, + 0x81C, 0x63440103, + 0x81C, 0x62460103, + 0x81C, 0x45480103, + 0x81C, 0x444A0103, + 0x81C, 0x434C0103, + 0x81C, 0x264E0103, + 0x81C, 0x25500103, + 0x81C, 0x24520103, + 0x81C, 0x08540103, + 0x81C, 0x07560103, + 0x81C, 0x06580103, + 0x81C, 0x055A0103, + 0x81C, 0x045C0103, + 0x81C, 0x035E0103, + 0x81C, 0x02600103, + 0x81C, 0x01620103, + 0x81C, 0x01640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000103, + 0x81C, 0xFF020103, + 0x81C, 0xFE040103, + 0x81C, 0xFD060103, + 0x81C, 0xFC080103, + 0x81C, 0xFB0A0103, + 0x81C, 0xFA0C0103, + 0x81C, 0xF90E0103, + 0x81C, 0xF8100103, + 0x81C, 0xF7120103, + 0x81C, 0xF6140103, + 0x81C, 0xF5160103, + 0x81C, 0xF4180103, + 0x81C, 0xF31A0103, + 0x81C, 0xF21C0103, + 0x81C, 0xF11E0103, + 0x81C, 0xF0200103, + 0x81C, 0xEF220103, + 0x81C, 0xEE240103, + 0x81C, 0xED260103, + 0x81C, 0xEC280103, + 0x81C, 0xEB2A0103, + 0x81C, 0xEA2C0103, + 0x81C, 0xE92E0103, + 0x81C, 0xE8300103, + 0x81C, 0xE7320103, + 0x81C, 0xE6340103, + 0x81C, 0xE5360103, + 0x81C, 0xE4380103, + 0x81C, 0xE33A0103, + 0x81C, 0xA53C0103, + 0x81C, 0xA43E0103, + 0x81C, 0xA3400103, + 0x81C, 0xA2420103, + 0x81C, 0xA1440103, + 0x81C, 0x85460103, + 0x81C, 0x84480103, + 0x81C, 0x834A0103, + 0x81C, 0x824C0103, + 0x81C, 0x814E0103, + 0x81C, 0x64500103, + 0x81C, 0x63520103, + 0x81C, 0x62540103, + 0x81C, 0x44560103, + 0x81C, 0x43580103, + 0x81C, 0x425A0103, + 0x81C, 0x265C0103, + 0x81C, 0x255E0103, + 0x81C, 0x24600103, + 0x81C, 0x07620103, + 0x81C, 0x06640103, + 0x81C, 0x05660103, + 0x81C, 0x04680103, + 0x81C, 0x036A0103, + 0x81C, 0x026C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF9000103, + 0x81C, 0xF8020103, + 0x81C, 0xF7040103, + 0x81C, 0xF6060103, + 0x81C, 0xF5080103, + 0x81C, 0xF40A0103, + 0x81C, 0xF30C0103, + 0x81C, 0xF20E0103, + 0x81C, 0xF1100103, + 0x81C, 0xF0120103, + 0x81C, 0xEF140103, + 0x81C, 0xEE160103, + 0x81C, 0xED180103, + 0x81C, 0xEC1A0103, + 0x81C, 0xEB1C0103, + 0x81C, 0xEA1E0103, + 0x81C, 0xE9200103, + 0x81C, 0xE8220103, + 0x81C, 0xE7240103, + 0x81C, 0xE6260103, + 0x81C, 0xE5280103, + 0x81C, 0xE42A0103, + 0x81C, 0xE32C0103, + 0x81C, 0xE22E0103, + 0x81C, 0xA6300103, + 0x81C, 0xA5320103, + 0x81C, 0xA4340103, + 0x81C, 0xA3360103, + 0x81C, 0xA2380103, + 0x81C, 0xA13A0103, + 0x81C, 0x843C0103, + 0x81C, 0x833E0103, + 0x81C, 0x82400103, + 0x81C, 0x81420103, + 0x81C, 0x64440103, + 0x81C, 0x63460103, + 0x81C, 0x62480103, + 0x81C, 0x614A0103, + 0x81C, 0x444C0103, + 0x81C, 0x434E0103, + 0x81C, 0x42500103, + 0x81C, 0x41520103, + 0x81C, 0x25540103, + 0x81C, 0x24560103, + 0x81C, 0x23580103, + 0x81C, 0x225A0103, + 0x81C, 0x055C0103, + 0x81C, 0x045E0103, + 0x81C, 0x03600103, + 0x81C, 0x02620103, + 0x81C, 0x01640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFA000103, + 0x81C, 0xF9020103, + 0x81C, 0xF8040103, + 0x81C, 0xF7060103, + 0x81C, 0xF6080103, + 0x81C, 0xF50A0103, + 0x81C, 0xF40C0103, + 0x81C, 0xF30E0103, + 0x81C, 0xF2100103, + 0x81C, 0xF1120103, + 0x81C, 0xF0140103, + 0x81C, 0xEF160103, + 0x81C, 0xEE180103, + 0x81C, 0xED1A0103, + 0x81C, 0xCC1C0103, + 0x81C, 0xCB1E0103, + 0x81C, 0xCA200103, + 0x81C, 0xE9220103, + 0x81C, 0xE8240103, + 0x81C, 0xE7260103, + 0x81C, 0xE6280103, + 0x81C, 0xE42A0103, + 0x81C, 0xE32C0103, + 0x81C, 0xE22E0103, + 0x81C, 0xA7300103, + 0x81C, 0xA6320103, + 0x81C, 0xA5340103, + 0x81C, 0xA4360103, + 0x81C, 0xA3380103, + 0x81C, 0xA23A0103, + 0x81C, 0xA13C0103, + 0x81C, 0x843E0103, + 0x81C, 0x83400103, + 0x81C, 0x82420103, + 0x81C, 0x65440103, + 0x81C, 0x64460103, + 0x81C, 0x63480103, + 0x81C, 0x624A0103, + 0x81C, 0x614C0103, + 0x81C, 0x444E0103, + 0x81C, 0x43500103, + 0x81C, 0x42520103, + 0x81C, 0x41540103, + 0x81C, 0x24560103, + 0x81C, 0x23580103, + 0x81C, 0x055A0103, + 0x81C, 0x045C0103, + 0x81C, 0x035E0103, + 0x81C, 0x02600103, + 0x81C, 0x01620103, + 0x81C, 0x01640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0xA0000000, 0x00000000, + 0x81C, 0xFF000103, + 0x81C, 0xFE020103, + 0x81C, 0xFD040103, + 0x81C, 0xFC060103, + 0x81C, 0xFB080103, + 0x81C, 0xFA0A0103, + 0x81C, 0xF90C0103, + 0x81C, 0xF80E0103, + 0x81C, 0xF7100103, + 0x81C, 0xF6120103, + 0x81C, 0xF5140103, + 0x81C, 0xF4160103, + 0x81C, 0xF3180103, + 0x81C, 0xF21A0103, + 0x81C, 0xF11C0103, + 0x81C, 0xF01E0103, + 0x81C, 0xEF200103, + 0x81C, 0xEE220103, + 0x81C, 0xED240103, + 0x81C, 0xEC260103, + 0x81C, 0xEB280103, + 0x81C, 0xEA2A0103, + 0x81C, 0xE92C0103, + 0x81C, 0xE82E0103, + 0x81C, 0xE7300103, + 0x81C, 0xE6320103, + 0x81C, 0xE5340103, + 0x81C, 0xE4360103, + 0x81C, 0xE3380103, + 0x81C, 0xE23A0103, + 0x81C, 0xE13C0103, + 0x81C, 0xA43E0103, + 0x81C, 0xA3400103, + 0x81C, 0xA2420103, + 0x81C, 0xA1440103, + 0x81C, 0x86460103, + 0x81C, 0x85480103, + 0x81C, 0x844A0103, + 0x81C, 0x834C0103, + 0x81C, 0x824E0103, + 0x81C, 0x81500103, + 0x81C, 0x64520103, + 0x81C, 0x63540103, + 0x81C, 0x62560103, + 0x81C, 0x61580103, + 0x81C, 0x435A0103, + 0x81C, 0x425C0103, + 0x81C, 0x415E0103, + 0x81C, 0x25600103, + 0x81C, 0x24620103, + 0x81C, 0x06640103, + 0x81C, 0x05660103, + 0x81C, 0x04680103, + 0x81C, 0x036A0103, + 0x81C, 0x026C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFA000203, + 0x81C, 0xF9020203, + 0x81C, 0xF8040203, + 0x81C, 0xF7060203, + 0x81C, 0xF6080203, + 0x81C, 0xF50A0203, + 0x81C, 0xF40C0203, + 0x81C, 0xF30E0203, + 0x81C, 0xF2100203, + 0x81C, 0xF1120203, + 0x81C, 0xF0140203, + 0x81C, 0xEF160203, + 0x81C, 0xEE180203, + 0x81C, 0xED1A0203, + 0x81C, 0xEC1C0203, + 0x81C, 0xEB1E0203, + 0x81C, 0xEA200203, + 0x81C, 0xE9220203, + 0x81C, 0xE8240203, + 0x81C, 0xE7260203, + 0x81C, 0xE6280203, + 0x81C, 0xE52A0203, + 0x81C, 0xE42C0203, + 0x81C, 0xE32E0203, + 0x81C, 0xE2300203, + 0x81C, 0xE1320203, + 0x81C, 0xA5340203, + 0x81C, 0xA4360203, + 0x81C, 0xA3380203, + 0x81C, 0xA23A0203, + 0x81C, 0xA13C0203, + 0x81C, 0x843E0203, + 0x81C, 0x83400203, + 0x81C, 0x82420203, + 0x81C, 0x81440203, + 0x81C, 0x63460203, + 0x81C, 0x62480203, + 0x81C, 0x614A0203, + 0x81C, 0x464C0203, + 0x81C, 0x454E0203, + 0x81C, 0x44500203, + 0x81C, 0x43520203, + 0x81C, 0x42540203, + 0x81C, 0x41560203, + 0x81C, 0x24580203, + 0x81C, 0x235A0203, + 0x81C, 0x065C0203, + 0x81C, 0x055E0203, + 0x81C, 0x04600203, + 0x81C, 0x03620203, + 0x81C, 0x02640203, + 0x81C, 0x01660203, + 0x81C, 0x01680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF8000203, + 0x81C, 0xF7020203, + 0x81C, 0xF6040203, + 0x81C, 0xF5060203, + 0x81C, 0xF4080203, + 0x81C, 0xF30A0203, + 0x81C, 0xF20C0203, + 0x81C, 0xF10E0203, + 0x81C, 0xF0100203, + 0x81C, 0xEF120203, + 0x81C, 0xEE140203, + 0x81C, 0xED160203, + 0x81C, 0xEC180203, + 0x81C, 0xEB1A0203, + 0x81C, 0xEA1C0203, + 0x81C, 0xE91E0203, + 0x81C, 0xE8200203, + 0x81C, 0xE7220203, + 0x81C, 0xE6240203, + 0x81C, 0xE5260203, + 0x81C, 0xE4280203, + 0x81C, 0xE32A0203, + 0x81C, 0xE22C0203, + 0x81C, 0xE12E0203, + 0x81C, 0xA6300203, + 0x81C, 0xA5320203, + 0x81C, 0xA4340203, + 0x81C, 0xA3360203, + 0x81C, 0xA2380203, + 0x81C, 0x853A0203, + 0x81C, 0x843C0203, + 0x81C, 0x833E0203, + 0x81C, 0x82400203, + 0x81C, 0x81420203, + 0x81C, 0x64440203, + 0x81C, 0x63460203, + 0x81C, 0x62480203, + 0x81C, 0x614A0203, + 0x81C, 0x444C0203, + 0x81C, 0x434E0203, + 0x81C, 0x42500203, + 0x81C, 0x25520203, + 0x81C, 0x24540203, + 0x81C, 0x23560203, + 0x81C, 0x06580203, + 0x81C, 0x055A0203, + 0x81C, 0x045C0203, + 0x81C, 0x035E0203, + 0x81C, 0x02600203, + 0x81C, 0x01620203, + 0x81C, 0x01640203, + 0x81C, 0x01660203, + 0x81C, 0x01680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFC000203, + 0x81C, 0xFB020203, + 0x81C, 0xFA040203, + 0x81C, 0xF9060203, + 0x81C, 0xF8080203, + 0x81C, 0xF70A0203, + 0x81C, 0xF60C0203, + 0x81C, 0xF50E0203, + 0x81C, 0xF4100203, + 0x81C, 0xF3120203, + 0x81C, 0xF2140203, + 0x81C, 0xF1160203, + 0x81C, 0xF0180203, + 0x81C, 0xEF1A0203, + 0x81C, 0xEE1C0203, + 0x81C, 0xED1E0203, + 0x81C, 0xEC200203, + 0x81C, 0xEB220203, + 0x81C, 0xEA240203, + 0x81C, 0xE9260203, + 0x81C, 0xE8280203, + 0x81C, 0xE72A0203, + 0x81C, 0xE62C0203, + 0x81C, 0xE52E0203, + 0x81C, 0xE4300203, + 0x81C, 0xE3320203, + 0x81C, 0xE2340203, + 0x81C, 0xE1360203, + 0x81C, 0x87380203, + 0x81C, 0x863A0203, + 0x81C, 0x853C0203, + 0x81C, 0x843E0203, + 0x81C, 0x83400203, + 0x81C, 0x82420203, + 0x81C, 0x81440203, + 0x81C, 0x64460203, + 0x81C, 0x63480203, + 0x81C, 0x624A0203, + 0x81C, 0x474C0203, + 0x81C, 0x464E0203, + 0x81C, 0x45500203, + 0x81C, 0x44520203, + 0x81C, 0x43540203, + 0x81C, 0x42560203, + 0x81C, 0x24580203, + 0x81C, 0x235A0203, + 0x81C, 0x075C0203, + 0x81C, 0x065E0203, + 0x81C, 0x05600203, + 0x81C, 0x04620203, + 0x81C, 0x03640203, + 0x81C, 0x02660203, + 0x81C, 0x01680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF8000203, + 0x81C, 0xF7020203, + 0x81C, 0xF6040203, + 0x81C, 0xF5060203, + 0x81C, 0xF4080203, + 0x81C, 0xF30A0203, + 0x81C, 0xF20C0203, + 0x81C, 0xF10E0203, + 0x81C, 0xF0100203, + 0x81C, 0xEF120203, + 0x81C, 0xEE140203, + 0x81C, 0xED160203, + 0x81C, 0xEC180203, + 0x81C, 0xEB1A0203, + 0x81C, 0xEA1C0203, + 0x81C, 0xE91E0203, + 0x81C, 0xE8200203, + 0x81C, 0xE7220203, + 0x81C, 0xE6240203, + 0x81C, 0xE5260203, + 0x81C, 0xE4280203, + 0x81C, 0xE32A0203, + 0x81C, 0xE22C0203, + 0x81C, 0xE12E0203, + 0x81C, 0xA6300203, + 0x81C, 0xA5320203, + 0x81C, 0xA4340203, + 0x81C, 0xA3360203, + 0x81C, 0xA2380203, + 0x81C, 0xA13A0203, + 0x81C, 0x843C0203, + 0x81C, 0x833E0203, + 0x81C, 0x82400203, + 0x81C, 0x81420203, + 0x81C, 0x64440203, + 0x81C, 0x63460203, + 0x81C, 0x62480203, + 0x81C, 0x614A0203, + 0x81C, 0x444C0203, + 0x81C, 0x434E0203, + 0x81C, 0x42500203, + 0x81C, 0x41520203, + 0x81C, 0x25540203, + 0x81C, 0x24560203, + 0x81C, 0x23580203, + 0x81C, 0x065A0203, + 0x81C, 0x055C0203, + 0x81C, 0x045E0203, + 0x81C, 0x03600203, + 0x81C, 0x02620203, + 0x81C, 0x01640203, + 0x81C, 0x01660203, + 0x81C, 0x01680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFB000203, + 0x81C, 0xFA020203, + 0x81C, 0xF9040203, + 0x81C, 0xF8060203, + 0x81C, 0xF7080203, + 0x81C, 0xF60A0203, + 0x81C, 0xF50C0203, + 0x81C, 0xF40E0203, + 0x81C, 0xF3100203, + 0x81C, 0xF2120203, + 0x81C, 0xF1140203, + 0x81C, 0xF0160203, + 0x81C, 0xEF180203, + 0x81C, 0xEE1A0203, + 0x81C, 0xED1C0203, + 0x81C, 0xEC1E0203, + 0x81C, 0xEB200203, + 0x81C, 0xEA220203, + 0x81C, 0xE9240203, + 0x81C, 0xE8260203, + 0x81C, 0xE7280203, + 0x81C, 0xE62A0203, + 0x81C, 0xE52C0203, + 0x81C, 0xE42E0203, + 0x81C, 0xE3300203, + 0x81C, 0xE2320203, + 0x81C, 0xE1340203, + 0x81C, 0xA5360203, + 0x81C, 0xA4380203, + 0x81C, 0xA33A0203, + 0x81C, 0xA23C0203, + 0x81C, 0x843E0203, + 0x81C, 0x83400203, + 0x81C, 0x82420203, + 0x81C, 0x81440203, + 0x81C, 0x64460203, + 0x81C, 0x63480203, + 0x81C, 0x624A0203, + 0x81C, 0x614C0203, + 0x81C, 0x474E0203, + 0x81C, 0x46500203, + 0x81C, 0x45520203, + 0x81C, 0x44540203, + 0x81C, 0x43560203, + 0x81C, 0x25580203, + 0x81C, 0x245A0203, + 0x81C, 0x235C0203, + 0x81C, 0x075E0203, + 0x81C, 0x06600203, + 0x81C, 0x05620203, + 0x81C, 0x04640203, + 0x81C, 0x03660203, + 0x81C, 0x02680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFC000203, + 0x81C, 0xFB020203, + 0x81C, 0xFA040203, + 0x81C, 0xF9060203, + 0x81C, 0xF8080203, + 0x81C, 0xF70A0203, + 0x81C, 0xF60C0203, + 0x81C, 0xF50E0203, + 0x81C, 0xF4100203, + 0x81C, 0xF3120203, + 0x81C, 0xF2140203, + 0x81C, 0xF1160203, + 0x81C, 0xF0180203, + 0x81C, 0xEF1A0203, + 0x81C, 0xEE1C0203, + 0x81C, 0xED1E0203, + 0x81C, 0xEC200203, + 0x81C, 0xEB220203, + 0x81C, 0xEA240203, + 0x81C, 0xE9260203, + 0x81C, 0xE8280203, + 0x81C, 0xE72A0203, + 0x81C, 0xE62C0203, + 0x81C, 0xE52E0203, + 0x81C, 0xE4300203, + 0x81C, 0xE3320203, + 0x81C, 0xE2340203, + 0x81C, 0xE1360203, + 0x81C, 0xA5380203, + 0x81C, 0xA43A0203, + 0x81C, 0xA33C0203, + 0x81C, 0x853E0203, + 0x81C, 0x84400203, + 0x81C, 0x83420203, + 0x81C, 0x82440203, + 0x81C, 0x81460203, + 0x81C, 0x64480203, + 0x81C, 0x634A0203, + 0x81C, 0x624C0203, + 0x81C, 0x614E0203, + 0x81C, 0x46500203, + 0x81C, 0x45520203, + 0x81C, 0x44540203, + 0x81C, 0x43560203, + 0x81C, 0x25580203, + 0x81C, 0x245A0203, + 0x81C, 0x235C0203, + 0x81C, 0x075E0203, + 0x81C, 0x06600203, + 0x81C, 0x05620203, + 0x81C, 0x04640203, + 0x81C, 0x03660203, + 0x81C, 0x02680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000203, + 0x81C, 0xFF020203, + 0x81C, 0xFE040203, + 0x81C, 0xFD060203, + 0x81C, 0xFC080203, + 0x81C, 0xFB0A0203, + 0x81C, 0xFA0C0203, + 0x81C, 0xF90E0203, + 0x81C, 0xF8100203, + 0x81C, 0xF7120203, + 0x81C, 0xF6140203, + 0x81C, 0xF5160203, + 0x81C, 0xF4180203, + 0x81C, 0xF31A0203, + 0x81C, 0xF21C0203, + 0x81C, 0xF11E0203, + 0x81C, 0xF0200203, + 0x81C, 0xEF220203, + 0x81C, 0xEE240203, + 0x81C, 0xED260203, + 0x81C, 0xEC280203, + 0x81C, 0xEB2A0203, + 0x81C, 0xEA2C0203, + 0x81C, 0xE92E0203, + 0x81C, 0xE8300203, + 0x81C, 0xE7320203, + 0x81C, 0xE6340203, + 0x81C, 0xE5360203, + 0x81C, 0xE4380203, + 0x81C, 0xE33A0203, + 0x81C, 0xE23C0203, + 0x81C, 0xE13E0203, + 0x81C, 0xA4400203, + 0x81C, 0xA3420203, + 0x81C, 0xA2440203, + 0x81C, 0xA1460203, + 0x81C, 0x84480203, + 0x81C, 0x834A0203, + 0x81C, 0x824C0203, + 0x81C, 0x814E0203, + 0x81C, 0x64500203, + 0x81C, 0x63520203, + 0x81C, 0x62540203, + 0x81C, 0x61560203, + 0x81C, 0x45580203, + 0x81C, 0x445A0203, + 0x81C, 0x435C0203, + 0x81C, 0x425E0203, + 0x81C, 0x24600203, + 0x81C, 0x23620203, + 0x81C, 0x07640203, + 0x81C, 0x06660203, + 0x81C, 0x05680203, + 0x81C, 0x046A0203, + 0x81C, 0x036C0203, + 0x81C, 0x026E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF7000203, + 0x81C, 0xF6020203, + 0x81C, 0xF5040203, + 0x81C, 0xF4060203, + 0x81C, 0xF3080203, + 0x81C, 0xF20A0203, + 0x81C, 0xF10C0203, + 0x81C, 0xF00E0203, + 0x81C, 0xEF100203, + 0x81C, 0xEE120203, + 0x81C, 0xED140203, + 0x81C, 0xEC160203, + 0x81C, 0xEB180203, + 0x81C, 0xEA1A0203, + 0x81C, 0xE91C0203, + 0x81C, 0xE81E0203, + 0x81C, 0xE7200203, + 0x81C, 0xE6220203, + 0x81C, 0xE5240203, + 0x81C, 0xE4260203, + 0x81C, 0xE3280203, + 0x81C, 0xE22A0203, + 0x81C, 0xA62C0203, + 0x81C, 0xA52E0203, + 0x81C, 0xA4300203, + 0x81C, 0xA3320203, + 0x81C, 0xA2340203, + 0x81C, 0xA1360203, + 0x81C, 0x86380203, + 0x81C, 0x853A0203, + 0x81C, 0x843C0203, + 0x81C, 0x833E0203, + 0x81C, 0x65400203, + 0x81C, 0x64420203, + 0x81C, 0x63440203, + 0x81C, 0x46460203, + 0x81C, 0x45480203, + 0x81C, 0x444A0203, + 0x81C, 0x434C0203, + 0x81C, 0x264E0203, + 0x81C, 0x25500203, + 0x81C, 0x24520203, + 0x81C, 0x08540203, + 0x81C, 0x07560203, + 0x81C, 0x06580203, + 0x81C, 0x055A0203, + 0x81C, 0x045C0203, + 0x81C, 0x035E0203, + 0x81C, 0x02600203, + 0x81C, 0x01620203, + 0x81C, 0x01640203, + 0x81C, 0x01660203, + 0x81C, 0x01680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000203, + 0x81C, 0xFF020203, + 0x81C, 0xFE040203, + 0x81C, 0xFD060203, + 0x81C, 0xFC080203, + 0x81C, 0xFB0A0203, + 0x81C, 0xFA0C0203, + 0x81C, 0xF90E0203, + 0x81C, 0xF8100203, + 0x81C, 0xF7120203, + 0x81C, 0xF6140203, + 0x81C, 0xF5160203, + 0x81C, 0xF4180203, + 0x81C, 0xF31A0203, + 0x81C, 0xF21C0203, + 0x81C, 0xF11E0203, + 0x81C, 0xF0200203, + 0x81C, 0xEF220203, + 0x81C, 0xEE240203, + 0x81C, 0xED260203, + 0x81C, 0xEC280203, + 0x81C, 0xEB2A0203, + 0x81C, 0xEA2C0203, + 0x81C, 0xE92E0203, + 0x81C, 0xE8300203, + 0x81C, 0xE7320203, + 0x81C, 0xE6340203, + 0x81C, 0xE5360203, + 0x81C, 0xE4380203, + 0x81C, 0xE33A0203, + 0x81C, 0xE23C0203, + 0x81C, 0xE13E0203, + 0x81C, 0xA4400203, + 0x81C, 0xA3420203, + 0x81C, 0xA2440203, + 0x81C, 0xA1460203, + 0x81C, 0x84480203, + 0x81C, 0x834A0203, + 0x81C, 0x824C0203, + 0x81C, 0x814E0203, + 0x81C, 0x64500203, + 0x81C, 0x63520203, + 0x81C, 0x62540203, + 0x81C, 0x61560203, + 0x81C, 0x45580203, + 0x81C, 0x445A0203, + 0x81C, 0x435C0203, + 0x81C, 0x425E0203, + 0x81C, 0x24600203, + 0x81C, 0x23620203, + 0x81C, 0x07640203, + 0x81C, 0x06660203, + 0x81C, 0x05680203, + 0x81C, 0x046A0203, + 0x81C, 0x036C0203, + 0x81C, 0x026E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF8000203, + 0x81C, 0xF7020203, + 0x81C, 0xF6040203, + 0x81C, 0xF5060203, + 0x81C, 0xF4080203, + 0x81C, 0xF30A0203, + 0x81C, 0xF20C0203, + 0x81C, 0xF10E0203, + 0x81C, 0xF0100203, + 0x81C, 0xEF120203, + 0x81C, 0xEE140203, + 0x81C, 0xED160203, + 0x81C, 0xEC180203, + 0x81C, 0xEB1A0203, + 0x81C, 0xEA1C0203, + 0x81C, 0xE91E0203, + 0x81C, 0xE8200203, + 0x81C, 0xE7220203, + 0x81C, 0xE6240203, + 0x81C, 0xE5260203, + 0x81C, 0xE4280203, + 0x81C, 0xE32A0203, + 0x81C, 0xE22C0203, + 0x81C, 0xE12E0203, + 0x81C, 0xA6300203, + 0x81C, 0xA5320203, + 0x81C, 0xA4340203, + 0x81C, 0xA3360203, + 0x81C, 0xA2380203, + 0x81C, 0xA13A0203, + 0x81C, 0x843C0203, + 0x81C, 0x833E0203, + 0x81C, 0x82400203, + 0x81C, 0x81420203, + 0x81C, 0x64440203, + 0x81C, 0x63460203, + 0x81C, 0x62480203, + 0x81C, 0x614A0203, + 0x81C, 0x444C0203, + 0x81C, 0x434E0203, + 0x81C, 0x42500203, + 0x81C, 0x41520203, + 0x81C, 0x25540203, + 0x81C, 0x24560203, + 0x81C, 0x23580203, + 0x81C, 0x065A0203, + 0x81C, 0x055C0203, + 0x81C, 0x045E0203, + 0x81C, 0x03600203, + 0x81C, 0x02620203, + 0x81C, 0x01640203, + 0x81C, 0x01660203, + 0x81C, 0x01680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF9000203, + 0x81C, 0xF8020203, + 0x81C, 0xF7040203, + 0x81C, 0xF6060203, + 0x81C, 0xF5080203, + 0x81C, 0xF40A0203, + 0x81C, 0xF30C0203, + 0x81C, 0xF20E0203, + 0x81C, 0xF1100203, + 0x81C, 0xF0120203, + 0x81C, 0xEF140203, + 0x81C, 0xCE160203, + 0x81C, 0xCD180203, + 0x81C, 0xCC1A0203, + 0x81C, 0xCB1C0203, + 0x81C, 0xCA1E0203, + 0x81C, 0xC9200203, + 0x81C, 0xC8220203, + 0x81C, 0xC7240203, + 0x81C, 0xC6260203, + 0x81C, 0xC5280203, + 0x81C, 0xC42A0203, + 0x81C, 0xC32C0203, + 0x81C, 0xC22E0203, + 0x81C, 0xC1300203, + 0x81C, 0xA5320203, + 0x81C, 0xA4340203, + 0x81C, 0xA3360203, + 0x81C, 0xA2380203, + 0x81C, 0xA13A0203, + 0x81C, 0x853C0203, + 0x81C, 0x843E0203, + 0x81C, 0x83400203, + 0x81C, 0x82420203, + 0x81C, 0x81440203, + 0x81C, 0x64460203, + 0x81C, 0x63480203, + 0x81C, 0x624A0203, + 0x81C, 0x614C0203, + 0x81C, 0x444E0203, + 0x81C, 0x43500203, + 0x81C, 0x42520203, + 0x81C, 0x41540203, + 0x81C, 0x24560203, + 0x81C, 0x23580203, + 0x81C, 0x075A0203, + 0x81C, 0x065C0203, + 0x81C, 0x055E0203, + 0x81C, 0x04600203, + 0x81C, 0x03620203, + 0x81C, 0x02640203, + 0x81C, 0x01660203, + 0x81C, 0x01680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0xA0000000, 0x00000000, + 0x81C, 0xFF000203, + 0x81C, 0xFF020203, + 0x81C, 0xFE040203, + 0x81C, 0xFD060203, + 0x81C, 0xFC080203, + 0x81C, 0xFB0A0203, + 0x81C, 0xFA0C0203, + 0x81C, 0xF90E0203, + 0x81C, 0xF8100203, + 0x81C, 0xF7120203, + 0x81C, 0xF6140203, + 0x81C, 0xF5160203, + 0x81C, 0xF4180203, + 0x81C, 0xF31A0203, + 0x81C, 0xF21C0203, + 0x81C, 0xF11E0203, + 0x81C, 0xF0200203, + 0x81C, 0xEF220203, + 0x81C, 0xEE240203, + 0x81C, 0xED260203, + 0x81C, 0xEC280203, + 0x81C, 0xEB2A0203, + 0x81C, 0xEA2C0203, + 0x81C, 0xE92E0203, + 0x81C, 0xE8300203, + 0x81C, 0xE7320203, + 0x81C, 0xE6340203, + 0x81C, 0xE5360203, + 0x81C, 0xE4380203, + 0x81C, 0xE33A0203, + 0x81C, 0xE23C0203, + 0x81C, 0xE13E0203, + 0x81C, 0xA4400203, + 0x81C, 0xA3420203, + 0x81C, 0xA2440203, + 0x81C, 0xA1460203, + 0x81C, 0x85480203, + 0x81C, 0x844A0203, + 0x81C, 0x834C0203, + 0x81C, 0x824E0203, + 0x81C, 0x81500203, + 0x81C, 0x64520203, + 0x81C, 0x63540203, + 0x81C, 0x62560203, + 0x81C, 0x61580203, + 0x81C, 0x445A0203, + 0x81C, 0x435C0203, + 0x81C, 0x425E0203, + 0x81C, 0x25600203, + 0x81C, 0x24620203, + 0x81C, 0x06640203, + 0x81C, 0x05660203, + 0x81C, 0x04680203, + 0x81C, 0x036A0203, + 0x81C, 0x026C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF8000303, + 0x81C, 0xF7020303, + 0x81C, 0xF6040303, + 0x81C, 0xF5060303, + 0x81C, 0xF4080303, + 0x81C, 0xF30A0303, + 0x81C, 0xF20C0303, + 0x81C, 0xF10E0303, + 0x81C, 0xF0100303, + 0x81C, 0xEF120303, + 0x81C, 0xEE140303, + 0x81C, 0xED160303, + 0x81C, 0xEC180303, + 0x81C, 0xEB1A0303, + 0x81C, 0xEA1C0303, + 0x81C, 0xE91E0303, + 0x81C, 0xE8200303, + 0x81C, 0xE7220303, + 0x81C, 0xE6240303, + 0x81C, 0xE5260303, + 0x81C, 0xE4280303, + 0x81C, 0xE32A0303, + 0x81C, 0xE22C0303, + 0x81C, 0xE12E0303, + 0x81C, 0xA6300303, + 0x81C, 0xA5320303, + 0x81C, 0xA4340303, + 0x81C, 0xA3360303, + 0x81C, 0xA2380303, + 0x81C, 0xA13A0303, + 0x81C, 0x843C0303, + 0x81C, 0x833E0303, + 0x81C, 0x82400303, + 0x81C, 0x81420303, + 0x81C, 0x64440303, + 0x81C, 0x63460303, + 0x81C, 0x62480303, + 0x81C, 0x614A0303, + 0x81C, 0x454C0303, + 0x81C, 0x444E0303, + 0x81C, 0x43500303, + 0x81C, 0x42520303, + 0x81C, 0x41540303, + 0x81C, 0x24560303, + 0x81C, 0x23580303, + 0x81C, 0x065A0303, + 0x81C, 0x055C0303, + 0x81C, 0x045E0303, + 0x81C, 0x03600303, + 0x81C, 0x02620303, + 0x81C, 0x01640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF7000303, + 0x81C, 0xF6020303, + 0x81C, 0xF5040303, + 0x81C, 0xF4060303, + 0x81C, 0xF3080303, + 0x81C, 0xF20A0303, + 0x81C, 0xF10C0303, + 0x81C, 0xF00E0303, + 0x81C, 0xEF100303, + 0x81C, 0xEE120303, + 0x81C, 0xED140303, + 0x81C, 0xEC160303, + 0x81C, 0xEB180303, + 0x81C, 0xEA1A0303, + 0x81C, 0xE91C0303, + 0x81C, 0xE81E0303, + 0x81C, 0xE7200303, + 0x81C, 0xE6220303, + 0x81C, 0xE5240303, + 0x81C, 0xE4260303, + 0x81C, 0xE3280303, + 0x81C, 0xC32A0303, + 0x81C, 0xC22C0303, + 0x81C, 0xC12E0303, + 0x81C, 0xA5300303, + 0x81C, 0xA4320303, + 0x81C, 0xA3340303, + 0x81C, 0xA2360303, + 0x81C, 0xA1380303, + 0x81C, 0x853A0303, + 0x81C, 0x843C0303, + 0x81C, 0x833E0303, + 0x81C, 0x82400303, + 0x81C, 0x81420303, + 0x81C, 0x64440303, + 0x81C, 0x63460303, + 0x81C, 0x62480303, + 0x81C, 0x614A0303, + 0x81C, 0x454C0303, + 0x81C, 0x444E0303, + 0x81C, 0x43500303, + 0x81C, 0x25520303, + 0x81C, 0x24540303, + 0x81C, 0x23560303, + 0x81C, 0x06580303, + 0x81C, 0x055A0303, + 0x81C, 0x045C0303, + 0x81C, 0x035E0303, + 0x81C, 0x02600303, + 0x81C, 0x01620303, + 0x81C, 0x01640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF9000303, + 0x81C, 0xF8020303, + 0x81C, 0xF7040303, + 0x81C, 0xF6060303, + 0x81C, 0xF5080303, + 0x81C, 0xF40A0303, + 0x81C, 0xF30C0303, + 0x81C, 0xF20E0303, + 0x81C, 0xF1100303, + 0x81C, 0xF0120303, + 0x81C, 0xEF140303, + 0x81C, 0xEE160303, + 0x81C, 0xED180303, + 0x81C, 0xEC1A0303, + 0x81C, 0xEB1C0303, + 0x81C, 0xEA1E0303, + 0x81C, 0xE9200303, + 0x81C, 0xE8220303, + 0x81C, 0xE7240303, + 0x81C, 0xE6260303, + 0x81C, 0xE5280303, + 0x81C, 0xE42A0303, + 0x81C, 0xE32C0303, + 0x81C, 0xE22E0303, + 0x81C, 0xE1300303, + 0x81C, 0xA4320303, + 0x81C, 0xA3340303, + 0x81C, 0xA2360303, + 0x81C, 0xA1380303, + 0x81C, 0x853A0303, + 0x81C, 0x843C0303, + 0x81C, 0x833E0303, + 0x81C, 0x82400303, + 0x81C, 0x81420303, + 0x81C, 0x64440303, + 0x81C, 0x63460303, + 0x81C, 0x62480303, + 0x81C, 0x614A0303, + 0x81C, 0x444C0303, + 0x81C, 0x434E0303, + 0x81C, 0x42500303, + 0x81C, 0x25520303, + 0x81C, 0x24540303, + 0x81C, 0x23560303, + 0x81C, 0x07580303, + 0x81C, 0x065A0303, + 0x81C, 0x055C0303, + 0x81C, 0x045E0303, + 0x81C, 0x03600303, + 0x81C, 0x02620303, + 0x81C, 0x01640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF7000303, + 0x81C, 0xF6020303, + 0x81C, 0xF5040303, + 0x81C, 0xF4060303, + 0x81C, 0xF3080303, + 0x81C, 0xF20A0303, + 0x81C, 0xF10C0303, + 0x81C, 0xF00E0303, + 0x81C, 0xEF100303, + 0x81C, 0xEE120303, + 0x81C, 0xED140303, + 0x81C, 0xEC160303, + 0x81C, 0xEB180303, + 0x81C, 0xEA1A0303, + 0x81C, 0xE91C0303, + 0x81C, 0xE81E0303, + 0x81C, 0xE7200303, + 0x81C, 0xE6220303, + 0x81C, 0xE5240303, + 0x81C, 0xE4260303, + 0x81C, 0xE3280303, + 0x81C, 0xE22A0303, + 0x81C, 0xE12C0303, + 0x81C, 0xA72E0303, + 0x81C, 0xA6300303, + 0x81C, 0xA5320303, + 0x81C, 0xA4340303, + 0x81C, 0xA3360303, + 0x81C, 0xA2380303, + 0x81C, 0xA13A0303, + 0x81C, 0x843C0303, + 0x81C, 0x833E0303, + 0x81C, 0x82400303, + 0x81C, 0x81420303, + 0x81C, 0x64440303, + 0x81C, 0x63460303, + 0x81C, 0x62480303, + 0x81C, 0x614A0303, + 0x81C, 0x454C0303, + 0x81C, 0x444E0303, + 0x81C, 0x43500303, + 0x81C, 0x42520303, + 0x81C, 0x41540303, + 0x81C, 0x24560303, + 0x81C, 0x23580303, + 0x81C, 0x065A0303, + 0x81C, 0x055C0303, + 0x81C, 0x045E0303, + 0x81C, 0x03600303, + 0x81C, 0x02620303, + 0x81C, 0x01640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFB000303, + 0x81C, 0xFA020303, + 0x81C, 0xF9040303, + 0x81C, 0xF8060303, + 0x81C, 0xF7080303, + 0x81C, 0xF60A0303, + 0x81C, 0xF50C0303, + 0x81C, 0xF40E0303, + 0x81C, 0xF3100303, + 0x81C, 0xF2120303, + 0x81C, 0xF1140303, + 0x81C, 0xF0160303, + 0x81C, 0xEF180303, + 0x81C, 0xEE1A0303, + 0x81C, 0xED1C0303, + 0x81C, 0xEC1E0303, + 0x81C, 0xEB200303, + 0x81C, 0xEA220303, + 0x81C, 0xE9240303, + 0x81C, 0xE8260303, + 0x81C, 0xE7280303, + 0x81C, 0xE62A0303, + 0x81C, 0xE52C0303, + 0x81C, 0xE42E0303, + 0x81C, 0xE3300303, + 0x81C, 0xE2320303, + 0x81C, 0xE1340303, + 0x81C, 0xC2360303, + 0x81C, 0xC1380303, + 0x81C, 0xA33A0303, + 0x81C, 0xA23C0303, + 0x81C, 0x853E0303, + 0x81C, 0x84400303, + 0x81C, 0x83420303, + 0x81C, 0x66440303, + 0x81C, 0x65460303, + 0x81C, 0x64480303, + 0x81C, 0x634A0303, + 0x81C, 0x624C0303, + 0x81C, 0x614E0303, + 0x81C, 0x45500303, + 0x81C, 0x44520303, + 0x81C, 0x43540303, + 0x81C, 0x42560303, + 0x81C, 0x25580303, + 0x81C, 0x245A0303, + 0x81C, 0x235C0303, + 0x81C, 0x065E0303, + 0x81C, 0x05600303, + 0x81C, 0x04620303, + 0x81C, 0x03640303, + 0x81C, 0x02660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF9000303, + 0x81C, 0xF8020303, + 0x81C, 0xF7040303, + 0x81C, 0xF6060303, + 0x81C, 0xF5080303, + 0x81C, 0xF40A0303, + 0x81C, 0xF30C0303, + 0x81C, 0xF20E0303, + 0x81C, 0xF1100303, + 0x81C, 0xF0120303, + 0x81C, 0xEF140303, + 0x81C, 0xEE160303, + 0x81C, 0xED180303, + 0x81C, 0xEC1A0303, + 0x81C, 0xEB1C0303, + 0x81C, 0xEA1E0303, + 0x81C, 0xE9200303, + 0x81C, 0xE8220303, + 0x81C, 0xE7240303, + 0x81C, 0xE6260303, + 0x81C, 0xE5280303, + 0x81C, 0xE42A0303, + 0x81C, 0xE32C0303, + 0x81C, 0xE22E0303, + 0x81C, 0xE1300303, + 0x81C, 0xA6320303, + 0x81C, 0xA5340303, + 0x81C, 0xA4360303, + 0x81C, 0xA3380303, + 0x81C, 0xA23A0303, + 0x81C, 0xA13C0303, + 0x81C, 0x853E0303, + 0x81C, 0x84400303, + 0x81C, 0x83420303, + 0x81C, 0x82440303, + 0x81C, 0x81460303, + 0x81C, 0x64480303, + 0x81C, 0x634A0303, + 0x81C, 0x624C0303, + 0x81C, 0x614E0303, + 0x81C, 0x44500303, + 0x81C, 0x43520303, + 0x81C, 0x42540303, + 0x81C, 0x41560303, + 0x81C, 0x25580303, + 0x81C, 0x245A0303, + 0x81C, 0x235C0303, + 0x81C, 0x055E0303, + 0x81C, 0x04600303, + 0x81C, 0x03620303, + 0x81C, 0x02640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000303, + 0x81C, 0xFD020303, + 0x81C, 0xFC040303, + 0x81C, 0xFB060303, + 0x81C, 0xFA080303, + 0x81C, 0xF90A0303, + 0x81C, 0xF80C0303, + 0x81C, 0xF70E0303, + 0x81C, 0xF6100303, + 0x81C, 0xF5120303, + 0x81C, 0xF4140303, + 0x81C, 0xF3160303, + 0x81C, 0xF2180303, + 0x81C, 0xF11A0303, + 0x81C, 0xF01C0303, + 0x81C, 0xEF1E0303, + 0x81C, 0xEE200303, + 0x81C, 0xED220303, + 0x81C, 0xEC240303, + 0x81C, 0xEB260303, + 0x81C, 0xEA280303, + 0x81C, 0xE92A0303, + 0x81C, 0xE82C0303, + 0x81C, 0xE72E0303, + 0x81C, 0xE6300303, + 0x81C, 0xE5320303, + 0x81C, 0xE4340303, + 0x81C, 0xE3360303, + 0x81C, 0xC3380303, + 0x81C, 0xC23A0303, + 0x81C, 0xC13C0303, + 0x81C, 0xA43E0303, + 0x81C, 0xA3400303, + 0x81C, 0xA2420303, + 0x81C, 0xA1440303, + 0x81C, 0x85460303, + 0x81C, 0x84480303, + 0x81C, 0x834A0303, + 0x81C, 0x824C0303, + 0x81C, 0x814E0303, + 0x81C, 0x64500303, + 0x81C, 0x63520303, + 0x81C, 0x62540303, + 0x81C, 0x61560303, + 0x81C, 0x44580303, + 0x81C, 0x435A0303, + 0x81C, 0x425C0303, + 0x81C, 0x265E0303, + 0x81C, 0x25600303, + 0x81C, 0x24620303, + 0x81C, 0x06640303, + 0x81C, 0x05660303, + 0x81C, 0x04680303, + 0x81C, 0x036A0303, + 0x81C, 0x026C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF7000303, + 0x81C, 0xF6020303, + 0x81C, 0xF5040303, + 0x81C, 0xF4060303, + 0x81C, 0xF3080303, + 0x81C, 0xF20A0303, + 0x81C, 0xF10C0303, + 0x81C, 0xF00E0303, + 0x81C, 0xEF100303, + 0x81C, 0xEE120303, + 0x81C, 0xED140303, + 0x81C, 0xEC160303, + 0x81C, 0xEB180303, + 0x81C, 0xEA1A0303, + 0x81C, 0xE91C0303, + 0x81C, 0xE81E0303, + 0x81C, 0xE7200303, + 0x81C, 0xE6220303, + 0x81C, 0xE5240303, + 0x81C, 0xE4260303, + 0x81C, 0xE3280303, + 0x81C, 0xE22A0303, + 0x81C, 0xA62C0303, + 0x81C, 0xA52E0303, + 0x81C, 0xA4300303, + 0x81C, 0xA3320303, + 0x81C, 0xA2340303, + 0x81C, 0x87360303, + 0x81C, 0x86380303, + 0x81C, 0x853A0303, + 0x81C, 0x843C0303, + 0x81C, 0x833E0303, + 0x81C, 0x66400303, + 0x81C, 0x65420303, + 0x81C, 0x64440303, + 0x81C, 0x45460303, + 0x81C, 0x44480303, + 0x81C, 0x434A0303, + 0x81C, 0x274C0303, + 0x81C, 0x264E0303, + 0x81C, 0x25500303, + 0x81C, 0x24520303, + 0x81C, 0x23540303, + 0x81C, 0x08560303, + 0x81C, 0x07580303, + 0x81C, 0x065A0303, + 0x81C, 0x055C0303, + 0x81C, 0x045E0303, + 0x81C, 0x03600303, + 0x81C, 0x02620303, + 0x81C, 0x01640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000303, + 0x81C, 0xFD020303, + 0x81C, 0xFC040303, + 0x81C, 0xFB060303, + 0x81C, 0xFA080303, + 0x81C, 0xF90A0303, + 0x81C, 0xF80C0303, + 0x81C, 0xF70E0303, + 0x81C, 0xF6100303, + 0x81C, 0xF5120303, + 0x81C, 0xF4140303, + 0x81C, 0xF3160303, + 0x81C, 0xF2180303, + 0x81C, 0xF11A0303, + 0x81C, 0xF01C0303, + 0x81C, 0xEF1E0303, + 0x81C, 0xEE200303, + 0x81C, 0xED220303, + 0x81C, 0xEC240303, + 0x81C, 0xEB260303, + 0x81C, 0xEA280303, + 0x81C, 0xE92A0303, + 0x81C, 0xE82C0303, + 0x81C, 0xE72E0303, + 0x81C, 0xE6300303, + 0x81C, 0xE5320303, + 0x81C, 0xE4340303, + 0x81C, 0xE3360303, + 0x81C, 0xC3380303, + 0x81C, 0xC23A0303, + 0x81C, 0xC13C0303, + 0x81C, 0xA43E0303, + 0x81C, 0xA3400303, + 0x81C, 0xA2420303, + 0x81C, 0xA1440303, + 0x81C, 0x85460303, + 0x81C, 0x84480303, + 0x81C, 0x834A0303, + 0x81C, 0x824C0303, + 0x81C, 0x814E0303, + 0x81C, 0x64500303, + 0x81C, 0x63520303, + 0x81C, 0x62540303, + 0x81C, 0x61560303, + 0x81C, 0x44580303, + 0x81C, 0x435A0303, + 0x81C, 0x425C0303, + 0x81C, 0x265E0303, + 0x81C, 0x25600303, + 0x81C, 0x24620303, + 0x81C, 0x06640303, + 0x81C, 0x05660303, + 0x81C, 0x04680303, + 0x81C, 0x036A0303, + 0x81C, 0x026C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF7000303, + 0x81C, 0xF6020303, + 0x81C, 0xF5040303, + 0x81C, 0xF4060303, + 0x81C, 0xF3080303, + 0x81C, 0xF20A0303, + 0x81C, 0xF10C0303, + 0x81C, 0xF00E0303, + 0x81C, 0xEF100303, + 0x81C, 0xEE120303, + 0x81C, 0xED140303, + 0x81C, 0xEC160303, + 0x81C, 0xEB180303, + 0x81C, 0xEA1A0303, + 0x81C, 0xE91C0303, + 0x81C, 0xE81E0303, + 0x81C, 0xE7200303, + 0x81C, 0xE6220303, + 0x81C, 0xE5240303, + 0x81C, 0xE4260303, + 0x81C, 0xE3280303, + 0x81C, 0xE22A0303, + 0x81C, 0xE12C0303, + 0x81C, 0xA72E0303, + 0x81C, 0xA6300303, + 0x81C, 0xA5320303, + 0x81C, 0xA4340303, + 0x81C, 0xA3360303, + 0x81C, 0xA2380303, + 0x81C, 0xA13A0303, + 0x81C, 0x843C0303, + 0x81C, 0x833E0303, + 0x81C, 0x82400303, + 0x81C, 0x81420303, + 0x81C, 0x64440303, + 0x81C, 0x63460303, + 0x81C, 0x62480303, + 0x81C, 0x614A0303, + 0x81C, 0x454C0303, + 0x81C, 0x444E0303, + 0x81C, 0x43500303, + 0x81C, 0x42520303, + 0x81C, 0x41540303, + 0x81C, 0x24560303, + 0x81C, 0x23580303, + 0x81C, 0x065A0303, + 0x81C, 0x055C0303, + 0x81C, 0x045E0303, + 0x81C, 0x03600303, + 0x81C, 0x02620303, + 0x81C, 0x01640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF7000303, + 0x81C, 0xF6020303, + 0x81C, 0xF5040303, + 0x81C, 0xF4060303, + 0x81C, 0xF3080303, + 0x81C, 0xF20A0303, + 0x81C, 0xF10C0303, + 0x81C, 0xF00E0303, + 0x81C, 0xEF100303, + 0x81C, 0xEE120303, + 0x81C, 0xED140303, + 0x81C, 0xEC160303, + 0x81C, 0xEB180303, + 0x81C, 0xEA1A0303, + 0x81C, 0xAF1C0303, + 0x81C, 0xAE1E0303, + 0x81C, 0xAD200303, + 0x81C, 0xAC220303, + 0x81C, 0xAB240303, + 0x81C, 0xAA260303, + 0x81C, 0xC5280303, + 0x81C, 0xC42A0303, + 0x81C, 0xC32C0303, + 0x81C, 0xC22E0303, + 0x81C, 0xA5300303, + 0x81C, 0xA4320303, + 0x81C, 0xA3340303, + 0x81C, 0xA2360303, + 0x81C, 0xA1380303, + 0x81C, 0x853A0303, + 0x81C, 0x843C0303, + 0x81C, 0x833E0303, + 0x81C, 0x82400303, + 0x81C, 0x81420303, + 0x81C, 0x64440303, + 0x81C, 0x63460303, + 0x81C, 0x62480303, + 0x81C, 0x614A0303, + 0x81C, 0x444C0303, + 0x81C, 0x434E0303, + 0x81C, 0x42500303, + 0x81C, 0x41520303, + 0x81C, 0x25540303, + 0x81C, 0x24560303, + 0x81C, 0x06580303, + 0x81C, 0x055A0303, + 0x81C, 0x045C0303, + 0x81C, 0x035E0303, + 0x81C, 0x02600303, + 0x81C, 0x01620303, + 0x81C, 0x01640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0xA0000000, 0x00000000, + 0x81C, 0xFD000303, + 0x81C, 0xFC020303, + 0x81C, 0xFB040303, + 0x81C, 0xFA060303, + 0x81C, 0xF9080303, + 0x81C, 0xF80A0303, + 0x81C, 0xF70C0303, + 0x81C, 0xF60E0303, + 0x81C, 0xF5100303, + 0x81C, 0xF4120303, + 0x81C, 0xF3140303, + 0x81C, 0xF2160303, + 0x81C, 0xF1180303, + 0x81C, 0xF01A0303, + 0x81C, 0xEF1C0303, + 0x81C, 0xEE1E0303, + 0x81C, 0xED200303, + 0x81C, 0xEC220303, + 0x81C, 0xEB240303, + 0x81C, 0xEA260303, + 0x81C, 0xE9280303, + 0x81C, 0xE82A0303, + 0x81C, 0xE72C0303, + 0x81C, 0xE62E0303, + 0x81C, 0xE5300303, + 0x81C, 0xE4320303, + 0x81C, 0xE3340303, + 0x81C, 0xE2360303, + 0x81C, 0xE1380303, + 0x81C, 0xA53A0303, + 0x81C, 0xA43C0303, + 0x81C, 0xA33E0303, + 0x81C, 0xA2400303, + 0x81C, 0xA1420303, + 0x81C, 0x87440303, + 0x81C, 0x86460303, + 0x81C, 0x85480303, + 0x81C, 0x844A0303, + 0x81C, 0x834C0303, + 0x81C, 0x824E0303, + 0x81C, 0x81500303, + 0x81C, 0x64520303, + 0x81C, 0x63540303, + 0x81C, 0x62560303, + 0x81C, 0x61580303, + 0x81C, 0x435A0303, + 0x81C, 0x425C0303, + 0x81C, 0x415E0303, + 0x81C, 0x07600303, + 0x81C, 0x06620303, + 0x81C, 0x05640303, + 0x81C, 0x04660303, + 0x81C, 0x03680303, + 0x81C, 0x026A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0xB0000000, 0x00000000, + 0xC50, 0x00000022, + 0xC50, 0x00000020, + 0xE50, 0x00000022, + 0xE50, 0x00000020, + 0x1850, 0x00000022, + 0x1850, 0x00000020, + 0x1A50, 0x00000022, + 0x1A50, 0x00000020, + +}; +const u32 array_mp_8814a_agc_tab_len = sizeof(array_mp_8814a_agc_tab) / sizeof(u32); + +const u32 array_mp_8814a_phy_reg[] = { + 0x800, 0x9020D010, + 0x804, 0x08011280, + 0x808, 0x0E0282FF, + 0x80C, 0x1000002F, + 0x80000003, 0x00000000, 0x40000000, 0x00000000, + 0x810, 0x33303265, + 0xA0000000, 0x00000000, + 0x810, 0x33303265, + 0xB0000000, 0x00000000, + 0x814, 0x020C3D10, + 0x818, 0x04A10385, + 0x820, 0x00000000, + 0x824, 0x00033E40, + 0x828, 0x00000000, + 0x82C, 0x73985170, + 0x830, 0x79A0EA08, + 0x834, 0x042E708A, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x838, 0x86667640, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x838, 0x86667641, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x838, 0x86667641, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x838, 0x86667641, + 0xA0000000, 0x00000000, + 0x838, 0x86667640, + 0xB0000000, 0x00000000, + 0x83C, 0x9798B9B9, + 0x840, 0x17578F60, + 0x844, 0x4BBDFCDE, + 0x848, 0x5CD07F8B, + 0x84C, 0x6CFBF7B5, + 0x850, 0x28834706, + 0x854, 0x0001520C, + 0x858, 0x4060C000, + 0x85C, 0x74210368, + 0x860, 0x6929C321, + 0x864, 0x79727432, + 0x868, 0x8CA7A314, + 0x86C, 0x438C2878, + 0x870, 0x44444444, + 0x874, 0x21612C2E, + 0x878, 0x00003152, + 0x87C, 0x000FC000, + 0x8A0, 0x00000013, + 0x8A4, 0x7F7F7F7F, + 0x8A8, 0xA202033E, + 0x8AC, 0xF40F550A, + 0x8B0, 0x00000600, + 0x8B4, 0x000FC080, + 0x8B8, 0xEC0057FF, + 0x8BC, 0x8CA520C3, + 0x8C0, 0x3FF00020, + 0x8C4, 0x44C00000, + 0x80000009, 0x00000000, 0x40000000, 0x00000000, + 0x8C8, 0x80025969, + 0xA0000000, 0x00000000, + 0x8C8, 0x80025167, + 0xB0000000, 0x00000000, + 0x8CC, 0x08250492, + 0x8D0, 0x0000B800, + 0x8D4, 0x940008A0, + 0x8D8, 0x290B5612, + 0x8DC, 0x00000000, + 0x8E0, 0x32316407, + 0x8E4, 0x4A092925, + 0x8E8, 0xFFFFC42C, + 0x8EC, 0x99999999, + 0x8F0, 0x00009999, + 0x8F4, 0x00F80FA1, + 0x8F8, 0x400082C0, + 0x8FC, 0x00000000, + 0x900, 0x00400700, + 0x90C, 0x09004000, + 0x910, 0x0000FC00, + 0x914, 0xD6400404, + 0x918, 0x1C1028C0, + 0x91C, 0x64B11A1C, + 0x920, 0xE0767233, + 0x924, 0x055AA500, + 0x928, 0x4AB0E4E4, + 0x92C, 0xFFFE0000, + 0x930, 0xFFFFFFFE, + 0x934, 0x001FFFFF, + 0x938, 0x00008400, + 0x93C, 0x932C0642, + 0x940, 0x093E9360, + 0x944, 0x08000000, + 0x948, 0x04000000, + 0x950, 0x02010080, + 0x954, 0x86510080, + 0x960, 0x00000000, + 0x964, 0x00000000, + 0x968, 0x00000000, + 0x96C, 0x00000000, + 0x970, 0x801FFFFF, + 0x978, 0x00000000, + 0x97C, 0x00000000, + 0x980, 0x00000000, + 0x984, 0x00000000, + 0x988, 0x00000000, + 0x98C, 0x03440000, + 0x990, 0x27100000, + 0x994, 0xFFFF0100, + 0x998, 0xFFFFFF5C, + 0x99C, 0xFFFFFFFF, + 0x9A0, 0x000000FF, + 0x9A4, 0x00080080, + 0x9A8, 0x0C2F0000, + 0x9AC, 0x00560000, + 0x9B0, 0x81081008, + 0x9B4, 0x00000000, + 0x9B8, 0x01081008, + 0x9BC, 0x01081008, + 0x9D0, 0x00000000, + 0x9D4, 0x00000000, + 0x9D8, 0x00000000, + 0x9DC, 0x00000000, + 0x9E4, 0x00000002, + 0x9E8, 0x000022D5, + 0x9FC, 0xEFFFF7FF, + 0xB00, 0xE3100000, + 0xB04, 0x0000B000, + 0xB0C, 0x31EAA006, + 0xB5C, 0x41CFFFFF, + 0xC00, 0x00000007, + 0xC04, 0x00042020, + 0xC08, 0x80410231, + 0xC0C, 0x00000000, + 0xC10, 0x00000100, + 0xC14, 0x01000000, + 0xC1C, 0x40000053, + 0xC50, 0x00000020, + 0xC54, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0xC58, 0x3C0A0C14, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0xC58, 0x3C0A0C14, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0xC58, 0x3C0A0C14, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xC58, 0x3C0A0C14, + 0xA0000000, 0x00000000, + 0xC58, 0x3C020C14, + 0xB0000000, 0x00000000, + 0xC5C, 0x0D000058, + 0xC60, 0x1B800000, + 0xC60, 0x0B800001, + 0xC60, 0x05800002, + 0xC60, 0x07800003, + 0xC60, 0x1A800004, + 0xC60, 0x0B800005, + 0xC60, 0x05800006, + 0xC60, 0x0E800007, + 0xC60, 0x1A800008, + 0xC60, 0x0B800009, + 0xC60, 0x1580000A, + 0xC60, 0x0880000B, + 0xC60, 0x1A80000C, + 0xC60, 0x0B80000D, + 0xC60, 0x0580000E, + 0xC60, 0x0E80000F, + 0xC60, 0x1A800010, + 0xC60, 0x0B800011, + 0xC60, 0x15800012, + 0xC60, 0x08800013, + 0xC60, 0x1A800014, + 0xC60, 0x0B800015, + 0xC60, 0x05800016, + 0xC60, 0x07800017, + 0xC60, 0x1A800018, + 0xC60, 0x0B800019, + 0xC60, 0x1580001A, + 0xC60, 0x0880001B, + 0xC60, 0x1B80001C, + 0xC60, 0x0B80001D, + 0xC60, 0x0580001E, + 0xC60, 0x0780001F, + 0xC60, 0x1B800020, + 0xC60, 0x0B800021, + 0xC60, 0x05800022, + 0xC60, 0x07800023, + 0xC60, 0x1B800024, + 0xC60, 0x0B800025, + 0xC60, 0x05800026, + 0xC60, 0x07800027, + 0xC60, 0x1B800028, + 0xC60, 0x0B800029, + 0xC60, 0x0580002A, + 0xC60, 0x0780002B, + 0xC60, 0x1B800030, + 0xC60, 0x0B800031, + 0xC60, 0x05800032, + 0xC60, 0x00800033, + 0xC60, 0x1B800034, + 0xC60, 0x0B800035, + 0xC60, 0x05800036, + 0xC60, 0x00800037, + 0xC60, 0x1B800038, + 0xC60, 0x0B800039, + 0xC60, 0x0580003A, + 0xC60, 0x0E80803B, + 0xC94, 0x01000401, + 0xC98, 0x00188000, + 0xCA0, 0x00002929, + 0xCA4, 0x08040201, + 0xCA8, 0x80402010, + 0xCAC, 0x77777000, + 0xCB0, 0x54775477, + 0xCB4, 0x54775477, + 0xCB8, 0x00500000, + 0xCBC, 0x77700000, + 0xCC0, 0x00000010, + 0xCC8, 0x00000010, + 0xE00, 0x00000007, + 0xE04, 0x00042020, + 0xE08, 0x80410231, + 0xE0C, 0x00000000, + 0xE10, 0x00000100, + 0xE14, 0x01000000, + 0xE1C, 0x40000053, + 0xE50, 0x00000020, + 0xE54, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0xE58, 0x3C0A0C14, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0xE58, 0x3C0A0C14, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0xE58, 0x3C0A0C14, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xE58, 0x3C0A0C14, + 0xA0000000, 0x00000000, + 0xE58, 0x3C020C14, + 0xB0000000, 0x00000000, + 0xE5C, 0x0D000058, + 0xE60, 0x1B800000, + 0xE60, 0x0B800001, + 0xE60, 0x05800002, + 0xE60, 0x07800003, + 0xE60, 0x1A800004, + 0xE60, 0x0B800005, + 0xE60, 0x05800006, + 0xE60, 0x0E800007, + 0xE60, 0x1A800008, + 0xE60, 0x0B800009, + 0xE60, 0x1580000A, + 0xE60, 0x0880000B, + 0xE60, 0x1A80000C, + 0xE60, 0x0B80000D, + 0xE60, 0x0580000E, + 0xE60, 0x0E80000F, + 0xE60, 0x1A800010, + 0xE60, 0x0B800011, + 0xE60, 0x15800012, + 0xE60, 0x08800013, + 0xE60, 0x1A800014, + 0xE60, 0x0B800015, + 0xE60, 0x05800016, + 0xE60, 0x07800017, + 0xE60, 0x1A800018, + 0xE60, 0x0B800019, + 0xE60, 0x1580001A, + 0xE60, 0x0880001B, + 0xE60, 0x1B80001C, + 0xE60, 0x0B80001D, + 0xE60, 0x0580001E, + 0xE60, 0x0780001F, + 0xE60, 0x1B800020, + 0xE60, 0x0B800021, + 0xE60, 0x05800022, + 0xE60, 0x07800023, + 0xE60, 0x1B800024, + 0xE60, 0x0B800025, + 0xE60, 0x05800026, + 0xE60, 0x07800027, + 0xE60, 0x1B800028, + 0xE60, 0x0B800029, + 0xE60, 0x0580002A, + 0xE60, 0x0780002B, + 0xE60, 0x1B800030, + 0xE60, 0x0B800031, + 0xE60, 0x05800032, + 0xE60, 0x00800033, + 0xE60, 0x1B800034, + 0xE60, 0x0B800035, + 0xE60, 0x05800036, + 0xE60, 0x00800037, + 0xE60, 0x1B800038, + 0xE60, 0x0B800039, + 0xE60, 0x0580003A, + 0xE60, 0x0E80803B, + 0xE94, 0x01000401, + 0xE98, 0x00188000, + 0xEA0, 0x00002929, + 0xEA4, 0x08040201, + 0xEA8, 0x80402010, + 0xEAC, 0x77777000, + 0xEB0, 0x54775477, + 0xEB4, 0x54775477, + 0xEB8, 0x00500000, + 0xEBC, 0x77700000, + 0x1800, 0x00000007, + 0x1804, 0x00042020, + 0x1808, 0x80410231, + 0x180C, 0x00000000, + 0x1810, 0x00000100, + 0x1814, 0x01000000, + 0x181C, 0x40000053, + 0x1850, 0x00000020, + 0x1854, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x1858, 0x3C0A0C14, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1858, 0x3C0A0C14, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1858, 0x3C0A0C14, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1858, 0x3C0A0C14, + 0xA0000000, 0x00000000, + 0x1858, 0x3C020C14, + 0xB0000000, 0x00000000, + 0x185C, 0x0D000058, + 0x1860, 0x1B800000, + 0x1860, 0x0B800001, + 0x1860, 0x05800002, + 0x1860, 0x07800003, + 0x1860, 0x1A800004, + 0x1860, 0x0B800005, + 0x1860, 0x05800006, + 0x1860, 0x0E800007, + 0x1860, 0x1A800008, + 0x1860, 0x0B800009, + 0x1860, 0x1580000A, + 0x1860, 0x0880000B, + 0x1860, 0x1A80000C, + 0x1860, 0x0B80000D, + 0x1860, 0x0580000E, + 0x1860, 0x0E80000F, + 0x1860, 0x1A800010, + 0x1860, 0x0B800011, + 0x1860, 0x15800012, + 0x1860, 0x08800013, + 0x1860, 0x1A800014, + 0x1860, 0x0B800015, + 0x1860, 0x05800016, + 0x1860, 0x07800017, + 0x1860, 0x1A800018, + 0x1860, 0x0B800019, + 0x1860, 0x1580001A, + 0x1860, 0x0880001B, + 0x1860, 0x1B80001C, + 0x1860, 0x0B80001D, + 0x1860, 0x0580001E, + 0x1860, 0x0780001F, + 0x1860, 0x1B800020, + 0x1860, 0x0B800021, + 0x1860, 0x05800022, + 0x1860, 0x07800023, + 0x1860, 0x1B800024, + 0x1860, 0x0B800025, + 0x1860, 0x05800026, + 0x1860, 0x07800027, + 0x1860, 0x1B800028, + 0x1860, 0x0B800029, + 0x1860, 0x0580002A, + 0x1860, 0x0780002B, + 0x1860, 0x1B800030, + 0x1860, 0x0B800031, + 0x1860, 0x05800032, + 0x1860, 0x00800033, + 0x1860, 0x1B800034, + 0x1860, 0x0B800035, + 0x1860, 0x05800036, + 0x1860, 0x00800037, + 0x1860, 0x1B800038, + 0x1860, 0x0B800039, + 0x1860, 0x0580003A, + 0x1860, 0x0E80803B, + 0x1894, 0x01000401, + 0x1898, 0x00188000, + 0x18A0, 0x00002929, + 0x18A4, 0x08040201, + 0x18A8, 0x80402010, + 0x18AC, 0x77777000, + 0x18B0, 0x54775477, + 0x18B4, 0x54775477, + 0x18B8, 0x00500000, + 0x18BC, 0x77700000, + 0x1A00, 0x00000007, + 0x1A04, 0x00042020, + 0x1A08, 0x80410231, + 0x1A0C, 0x00000000, + 0x1A10, 0x00000100, + 0x1A14, 0x01000000, + 0x1A1C, 0x40000053, + 0x1A50, 0x00000020, + 0x1A54, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x1A58, 0x3C0A0C14, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1A58, 0x3C0A0C14, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1A58, 0x3C0A0C14, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1A58, 0x3C0A0C14, + 0xA0000000, 0x00000000, + 0x1A58, 0x3C020C14, + 0xB0000000, 0x00000000, + 0x1A5C, 0x0D000058, + 0x1A60, 0x1B800000, + 0x1A60, 0x0B800001, + 0x1A60, 0x05800002, + 0x1A60, 0x07800003, + 0x1A60, 0x1A800004, + 0x1A60, 0x0B800005, + 0x1A60, 0x05800006, + 0x1A60, 0x0E800007, + 0x1A60, 0x1A800008, + 0x1A60, 0x0B800009, + 0x1A60, 0x1580000A, + 0x1A60, 0x0880000B, + 0x1A60, 0x1A80000C, + 0x1A60, 0x0B80000D, + 0x1A60, 0x0580000E, + 0x1A60, 0x0E80000F, + 0x1A60, 0x1A800010, + 0x1A60, 0x0B800011, + 0x1A60, 0x15800012, + 0x1A60, 0x08800013, + 0x1A60, 0x1A800014, + 0x1A60, 0x0B800015, + 0x1A60, 0x05800016, + 0x1A60, 0x07800017, + 0x1A60, 0x1A800018, + 0x1A60, 0x0B800019, + 0x1A60, 0x1580001A, + 0x1A60, 0x0880001B, + 0x1A60, 0x1B80001C, + 0x1A60, 0x0B80001D, + 0x1A60, 0x0580001E, + 0x1A60, 0x0780001F, + 0x1A60, 0x1B800020, + 0x1A60, 0x0B800021, + 0x1A60, 0x05800022, + 0x1A60, 0x07800023, + 0x1A60, 0x1B800024, + 0x1A60, 0x0B800025, + 0x1A60, 0x05800026, + 0x1A60, 0x07800027, + 0x1A60, 0x1B800028, + 0x1A60, 0x0B800029, + 0x1A60, 0x0580002A, + 0x1A60, 0x0780002B, + 0x1A60, 0x1B800030, + 0x1A60, 0x0B800031, + 0x1A60, 0x05800032, + 0x1A60, 0x00800033, + 0x1A60, 0x1B800034, + 0x1A60, 0x0B800035, + 0x1A60, 0x05800036, + 0x1A60, 0x00800037, + 0x1A60, 0x1B800038, + 0x1A60, 0x0B800039, + 0x1A60, 0x0580003A, + 0x1A60, 0x0E80803B, + 0x1A94, 0x01000401, + 0x1A98, 0x00188000, + 0x1AA0, 0x00002929, + 0x1AA4, 0x08040201, + 0x1AA8, 0x80402010, + 0x1AAC, 0x77777000, + 0x1AB0, 0x54775477, + 0x1AB4, 0x54775477, + 0x1AB8, 0x00500000, + 0x1ABC, 0x77700000, + 0x1904, 0x00030000, + 0x1914, 0x00030000, + 0x1984, 0x03000000, + 0x1988, 0x00000087, + 0x198C, 0x00000007, + 0x1990, 0xFFAA5500, + 0x1994, 0x00000077, + 0x1998, 0x12801000, + 0x1998, 0x12801000, + 0x1998, 0x12801001, + 0x1998, 0x12801002, + 0x1998, 0x12801003, + 0x1998, 0x12801004, + 0x1998, 0x12801005, + 0x1998, 0x12801006, + 0x1998, 0x12801007, + 0x1998, 0x12801008, + 0x1998, 0x12801009, + 0x1998, 0x1280100A, + 0x1998, 0x1280100B, + 0x1998, 0x1280100C, + 0x1998, 0x1280100D, + 0x1998, 0x1280100E, + 0x1998, 0x1280100F, + 0x1998, 0x12801010, + 0x1998, 0x12801011, + 0x1998, 0x12801012, + 0x1998, 0x12801013, + 0x1998, 0x12801014, + 0x1998, 0x12801015, + 0x1998, 0x12801016, + 0x1998, 0x12801017, + 0x1998, 0x12801018, + 0x1998, 0x12801019, + 0x1998, 0x1280101A, + 0x1998, 0x1280101B, + 0x1998, 0x1280101C, + 0x1998, 0x1280101D, + 0x1998, 0x1280101E, + 0x1998, 0x1280101F, + 0x1998, 0x12801020, + 0x1998, 0x12801021, + 0x1998, 0x12801022, + 0x1998, 0x12801023, + 0x1998, 0x1280102C, + 0x1998, 0x1280102D, + 0x1998, 0x1280102E, + 0x1998, 0x1280102F, + 0x1998, 0x12801030, + 0x1998, 0x12801031, + 0x1998, 0x12801032, + 0x1998, 0x12801033, + 0x1998, 0x12801034, + 0x1998, 0x12801035, + 0x1998, 0x12801036, + 0x1998, 0x12801037, + 0x1998, 0x12801038, + 0x1998, 0x12801039, + 0x1998, 0x1280103A, + 0x1998, 0x1280103B, + 0x1998, 0x1280103C, + 0x1998, 0x1280103D, + 0x1998, 0x1280103E, + 0x1998, 0x1280103F, + 0x1998, 0x12801040, + 0x1998, 0x12801041, + 0x1998, 0x12801042, + 0x1998, 0x12801043, + 0x1998, 0x12801044, + 0x1998, 0x12801045, + 0x1998, 0x12801046, + 0x1998, 0x12801047, + 0x1998, 0x12801048, + 0x1998, 0x12801049, + 0x1998, 0x12801100, + 0x1998, 0x12801101, + 0x1998, 0x12801102, + 0x1998, 0x12801103, + 0x1998, 0x12801104, + 0x1998, 0x12801105, + 0x1998, 0x12801106, + 0x1998, 0x12801107, + 0x1998, 0x12801108, + 0x1998, 0x12801109, + 0x1998, 0x1280110A, + 0x1998, 0x1280110B, + 0x1998, 0x1280110C, + 0x1998, 0x1280110D, + 0x1998, 0x1280110E, + 0x1998, 0x1280110F, + 0x1998, 0x12801110, + 0x1998, 0x12801111, + 0x1998, 0x12801112, + 0x1998, 0x12801113, + 0x1998, 0x12801114, + 0x1998, 0x12801115, + 0x1998, 0x12801116, + 0x1998, 0x12801117, + 0x1998, 0x12801118, + 0x1998, 0x12801119, + 0x1998, 0x1280111A, + 0x1998, 0x1280111B, + 0x1998, 0x1280111C, + 0x1998, 0x1280111D, + 0x1998, 0x1280111E, + 0x1998, 0x1280111F, + 0x1998, 0x12801120, + 0x1998, 0x12801121, + 0x1998, 0x12801122, + 0x1998, 0x12801123, + 0x1998, 0x1280112C, + 0x1998, 0x1280112D, + 0x1998, 0x1280112E, + 0x1998, 0x1280112F, + 0x1998, 0x12801130, + 0x1998, 0x12801131, + 0x1998, 0x12801132, + 0x1998, 0x12801133, + 0x1998, 0x12801134, + 0x1998, 0x12801135, + 0x1998, 0x12801136, + 0x1998, 0x12801137, + 0x1998, 0x12801138, + 0x1998, 0x12801139, + 0x1998, 0x1280113A, + 0x1998, 0x1280113B, + 0x1998, 0x1280113C, + 0x1998, 0x1280113D, + 0x1998, 0x1280113E, + 0x1998, 0x1280113F, + 0x1998, 0x12801140, + 0x1998, 0x12801141, + 0x1998, 0x12801142, + 0x1998, 0x12801143, + 0x1998, 0x12801144, + 0x1998, 0x12801145, + 0x1998, 0x12801146, + 0x1998, 0x12801147, + 0x1998, 0x12801148, + 0x1998, 0x12801149, + 0x1998, 0x12801200, + 0x1998, 0x12801201, + 0x1998, 0x12801202, + 0x1998, 0x12801203, + 0x1998, 0x12801204, + 0x1998, 0x12801205, + 0x1998, 0x12801206, + 0x1998, 0x12801207, + 0x1998, 0x12801208, + 0x1998, 0x12801209, + 0x1998, 0x1280120A, + 0x1998, 0x1280120B, + 0x1998, 0x1280120C, + 0x1998, 0x1280120D, + 0x1998, 0x1280120E, + 0x1998, 0x1280120F, + 0x1998, 0x12801210, + 0x1998, 0x12801211, + 0x1998, 0x12801212, + 0x1998, 0x12801213, + 0x1998, 0x12801214, + 0x1998, 0x12801215, + 0x1998, 0x12801216, + 0x1998, 0x12801217, + 0x1998, 0x12801218, + 0x1998, 0x12801219, + 0x1998, 0x1280121A, + 0x1998, 0x1280121B, + 0x1998, 0x1280121C, + 0x1998, 0x1280121D, + 0x1998, 0x1280121E, + 0x1998, 0x1280121F, + 0x1998, 0x12801220, + 0x1998, 0x12801221, + 0x1998, 0x12801222, + 0x1998, 0x12801223, + 0x1998, 0x1280122C, + 0x1998, 0x1280122D, + 0x1998, 0x1280122E, + 0x1998, 0x1280122F, + 0x1998, 0x12801230, + 0x1998, 0x12801231, + 0x1998, 0x12801232, + 0x1998, 0x12801233, + 0x1998, 0x12801234, + 0x1998, 0x12801235, + 0x1998, 0x12801236, + 0x1998, 0x12801237, + 0x1998, 0x12801238, + 0x1998, 0x12801239, + 0x1998, 0x1280123A, + 0x1998, 0x1280123B, + 0x1998, 0x1280123C, + 0x1998, 0x1280123D, + 0x1998, 0x1280123E, + 0x1998, 0x1280123F, + 0x1998, 0x12801240, + 0x1998, 0x12801241, + 0x1998, 0x12801242, + 0x1998, 0x12801243, + 0x1998, 0x12801244, + 0x1998, 0x12801245, + 0x1998, 0x12801246, + 0x1998, 0x12801247, + 0x1998, 0x12801248, + 0x1998, 0x12801249, + 0x1998, 0x12801300, + 0x1998, 0x12801301, + 0x1998, 0x12801302, + 0x1998, 0x12801303, + 0x1998, 0x12801304, + 0x1998, 0x12801305, + 0x1998, 0x12801306, + 0x1998, 0x12801307, + 0x1998, 0x12801308, + 0x1998, 0x12801309, + 0x1998, 0x1280130A, + 0x1998, 0x1280130B, + 0x1998, 0x1280130C, + 0x1998, 0x1280130D, + 0x1998, 0x1280130E, + 0x1998, 0x1280130F, + 0x1998, 0x12801310, + 0x1998, 0x12801311, + 0x1998, 0x12801312, + 0x1998, 0x12801313, + 0x1998, 0x12801314, + 0x1998, 0x12801315, + 0x1998, 0x12801316, + 0x1998, 0x12801317, + 0x1998, 0x12801318, + 0x1998, 0x12801319, + 0x1998, 0x1280131A, + 0x1998, 0x1280131B, + 0x1998, 0x1280131C, + 0x1998, 0x1280131D, + 0x1998, 0x1280131E, + 0x1998, 0x1280131F, + 0x1998, 0x12801320, + 0x1998, 0x12801321, + 0x1998, 0x12801322, + 0x1998, 0x12801323, + 0x1998, 0x1280132C, + 0x1998, 0x1280132D, + 0x1998, 0x1280132E, + 0x1998, 0x1280132F, + 0x1998, 0x12801330, + 0x1998, 0x12801331, + 0x1998, 0x12801332, + 0x1998, 0x12801333, + 0x1998, 0x12801334, + 0x1998, 0x12801335, + 0x1998, 0x12801336, + 0x1998, 0x12801337, + 0x1998, 0x12801338, + 0x1998, 0x12801339, + 0x1998, 0x1280133A, + 0x1998, 0x1280133B, + 0x1998, 0x1280133C, + 0x1998, 0x1280133D, + 0x1998, 0x1280133E, + 0x1998, 0x1280133F, + 0x1998, 0x12801340, + 0x1998, 0x12801341, + 0x1998, 0x12801342, + 0x1998, 0x12801343, + 0x1998, 0x12801344, + 0x1998, 0x12801345, + 0x1998, 0x12801346, + 0x1998, 0x12801347, + 0x1998, 0x12801348, + 0x1998, 0x12801349, + 0x19D4, 0x88888888, + 0x19D8, 0x00000888, + 0xB00, 0xE3100100, + 0xB00, 0xE7100100, + 0xC60, 0x15808002, + 0xC60, 0x01808003, + 0xE60, 0x15808002, + 0xE60, 0x01808003, + 0x1860, 0x15808002, + 0x1860, 0x01808003, + 0x1A60, 0x15808002, + 0x1A60, 0x01808003, + 0xB00, 0xE3100100, + 0xC5C, 0x0D080058, + 0xE5C, 0x0D080058, + 0x185C, 0x0D080058, + 0x1A5C, 0x0D080058, + 0xC5C, 0x0D000058, + 0xE5C, 0x0D000058, + 0x185C, 0x0D000058, + 0x1A5C, 0x0D000058, + 0xC60, 0x05808002, + 0xC60, 0x0E808003, + 0xE60, 0x05808002, + 0xE60, 0x0E808003, + 0x1860, 0x05808002, + 0x1860, 0x0E808003, + 0x1A60, 0x05808002, + 0x1A60, 0x0E808003, + 0xB00, 0xE7100100, + 0xB00, 0xE3100100, + 0xB00, 0xE3100000, + 0x1C38, 0x00000002, + 0xA00, 0x00D047C8, + 0xA04, 0x46FF800C, + 0xA08, 0x8C838300, + 0xA0C, 0x2E7E000F, + 0xA10, 0x9500BB78, + 0xA14, 0x11144028, + 0xA18, 0x00881117, + 0xA1C, 0x89140F00, + 0xA20, 0x1A1B0030, + 0xA24, 0x090E1317, + 0xA28, 0x00000204, + 0xA2C, 0x00900000, + 0xA70, 0x101FFF00, + 0xA74, 0x00000128, + 0xA78, 0x00000900, + 0xA7C, 0x225B0606, + 0xA80, 0x218075B2, + 0xA84, 0x9C1F8C00, + 0x1B04, 0xE24628D2, + 0x1B10, 0x88010D46, + 0x1B14, 0x00000000, + 0x1B18, 0x00292903, + 0x1B00, 0xF8000000, + 0x1B00, 0xF800D000, + 0x1B00, 0xF801F000, + 0x1B1C, 0xA2123DB2, + 0x1B20, 0x07040001, + 0x1B24, 0x07060807, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0xA0000000, 0x00000000, + 0x1B28, 0xC0060348, + 0xB0000000, 0x00000000, + 0x1B2C, 0x20000003, + 0x1B30, 0x20000000, + 0x1B38, 0x20000000, + 0x1B3C, 0x20000000, + 0x1BD4, 0x00000001, + 0x1B94, 0x80000000, + 0x1B34, 0x00000000, + 0x1B34, 0x00000002, + 0x1B34, 0x00000000, + 0x1B00, 0xF8000002, + 0x1B00, 0xF800D002, + 0x1B00, 0xF801F002, + 0x1B1C, 0xA2123DB2, + 0x1B20, 0x07040001, + 0x1B24, 0x07060807, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0xA0000000, 0x00000000, + 0x1B28, 0xC0060348, + 0xB0000000, 0x00000000, + 0x1B2C, 0x20000003, + 0x1B30, 0x20000000, + 0x1B38, 0x20000000, + 0x1B3C, 0x20000000, + 0x1BD4, 0x00000001, + 0x1B94, 0x80000000, + 0x1B34, 0x00000000, + 0x1B34, 0x00000002, + 0x1B34, 0x00000000, + 0x1B00, 0xF8000004, + 0x1B00, 0xF800D004, + 0x1B00, 0xF801F004, + 0x1B1C, 0xA2123DB2, + 0x1B20, 0x07040001, + 0x1B24, 0x07060807, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0xA0000000, 0x00000000, + 0x1B28, 0xC0060348, + 0xB0000000, 0x00000000, + 0x1B2C, 0x20000003, + 0x1B30, 0x20000000, + 0x1B38, 0x20000000, + 0x1B3C, 0x20000000, + 0x1BD4, 0x00000001, + 0x1B94, 0x80000000, + 0x1B34, 0x00000000, + 0x1B34, 0x00000002, + 0x1B34, 0x00000000, + 0x1B00, 0xF8000006, + 0x1B00, 0xF800D006, + 0x1B00, 0xF801F006, + 0x1B1C, 0xA2123DB2, + 0x1B20, 0x07040001, + 0x1B24, 0x07060807, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0xA0000000, 0x00000000, + 0x1B28, 0xC0060348, + 0xB0000000, 0x00000000, + 0x1B2C, 0x20000003, + 0x1B30, 0x20000000, + 0x1B38, 0x20000000, + 0x1B3C, 0x20000000, + 0x1BD4, 0x00000001, + 0x1B94, 0x80000000, + 0x1B34, 0x00000000, + 0x1B34, 0x00000002, + 0x1B34, 0x00000000, + 0x1B00, 0xF8000000, + 0x1B80, 0x00000007, + 0x1B80, 0x09060005, + 0x1B80, 0x09060007, + 0x1B80, 0x0FFE0015, + 0x1B80, 0x0FFE0017, + 0x1B80, 0x00240025, + 0x1B80, 0x00240027, + 0x1B80, 0x00040035, + 0x1B80, 0x00040037, + 0x1B80, 0x05C00045, + 0x1B80, 0x05C00047, + 0x1B80, 0x00070055, + 0x1B80, 0x00070057, + 0x1B80, 0x64000065, + 0x1B80, 0x64000067, + 0x1B80, 0x00020075, + 0x1B80, 0x00020077, + 0x1B80, 0x00080085, + 0x1B80, 0x00080087, + 0x1B80, 0x80000095, + 0x1B80, 0x80000097, + 0x1B80, 0x090100A5, + 0x1B80, 0x090100A7, + 0x1B80, 0x0F0200B5, + 0x1B80, 0x0F0200B7, + 0x1B80, 0x002400C5, + 0x1B80, 0x002400C7, + 0x1B80, 0x000400D5, + 0x1B80, 0x000400D7, + 0x1B80, 0x05C000E5, + 0x1B80, 0x05C000E7, + 0x1B80, 0x000700F5, + 0x1B80, 0x000700F7, + 0x1B80, 0x64020105, + 0x1B80, 0x64020107, + 0x1B80, 0x00020115, + 0x1B80, 0x00020117, + 0x1B80, 0x00040125, + 0x1B80, 0x00040127, + 0x1B80, 0x4A000135, + 0x1B80, 0x4A000137, + 0x1B80, 0x4B040145, + 0x1B80, 0x4B040147, + 0x1B80, 0x85030155, + 0x1B80, 0x85030157, + 0x1B80, 0x40010165, + 0x1B80, 0x40010167, + 0x1B80, 0xE0290175, + 0x1B80, 0xE0290177, + 0x1B80, 0x00040185, + 0x1B80, 0x00040187, + 0x1B80, 0x4B050195, + 0x1B80, 0x4B050197, + 0x1B80, 0x860301A5, + 0x1B80, 0x860301A7, + 0x1B80, 0x400301B5, + 0x1B80, 0x400301B7, + 0x1B80, 0xE02901C5, + 0x1B80, 0xE02901C7, + 0x1B80, 0x000401D5, + 0x1B80, 0x000401D7, + 0x1B80, 0x4B0601E5, + 0x1B80, 0x4B0601E7, + 0x1B80, 0x870301F5, + 0x1B80, 0x870301F7, + 0x1B80, 0x40050205, + 0x1B80, 0x40050207, + 0x1B80, 0xE0290215, + 0x1B80, 0xE0290217, + 0x1B80, 0x00040225, + 0x1B80, 0x00040227, + 0x1B80, 0x4B070235, + 0x1B80, 0x4B070237, + 0x1B80, 0x88030245, + 0x1B80, 0x88030247, + 0x1B80, 0x40070255, + 0x1B80, 0x40070257, + 0x1B80, 0xE0290265, + 0x1B80, 0xE0290267, + 0x1B80, 0x4B000275, + 0x1B80, 0x4B000277, + 0x1B80, 0x30000285, + 0x1B80, 0x30000287, + 0x1B80, 0xFE100295, + 0x1B80, 0xFE100297, + 0x1B80, 0xFF1002A5, + 0x1B80, 0xFF1002A7, + 0x1B80, 0xE18602B5, + 0x1B80, 0xE18602B7, + 0x1B80, 0xF00A02C5, + 0x1B80, 0xF00A02C7, + 0x1B80, 0xF10A02D5, + 0x1B80, 0xF10A02D7, + 0x1B80, 0xF20A02E5, + 0x1B80, 0xF20A02E7, + 0x1B80, 0xF30802F5, + 0x1B80, 0xF30802F7, + 0x1B80, 0xF4070305, + 0x1B80, 0xF4070307, + 0x1B80, 0xF5060315, + 0x1B80, 0xF5060317, + 0x1B80, 0xF7060325, + 0x1B80, 0xF7060327, + 0x1B80, 0xF8050335, + 0x1B80, 0xF8050337, + 0x1B80, 0xF9040345, + 0x1B80, 0xF9040347, + 0x1B80, 0x00010355, + 0x1B80, 0x00010357, + 0x1B80, 0x303B0365, + 0x1B80, 0x303B0367, + 0x1B80, 0x30500375, + 0x1B80, 0x30500377, + 0x1B80, 0x305C0385, + 0x1B80, 0x305C0387, + 0x1B80, 0x31D50395, + 0x1B80, 0x31D50397, + 0x1B80, 0x31C503A5, + 0x1B80, 0x31C503A7, + 0x1B80, 0x4D0403B5, + 0x1B80, 0x4D0403B7, + 0x1B80, 0x2EF003C5, + 0x1B80, 0x2EF003C7, + 0x1B80, 0x000203D5, + 0x1B80, 0x000203D7, + 0x1B80, 0x208003E5, + 0x1B80, 0x208003E7, + 0x1B80, 0x000003F5, + 0x1B80, 0x000003F7, + 0x1B80, 0x4D000405, + 0x1B80, 0x4D000407, + 0x1B80, 0x55070415, + 0x1B80, 0x55070417, + 0x1B80, 0xE1230425, + 0x1B80, 0xE1230427, + 0x1B80, 0xE1230435, + 0x1B80, 0xE1230437, + 0x1B80, 0x4D040445, + 0x1B80, 0x4D040447, + 0x1B80, 0x20800455, + 0x1B80, 0x20800457, + 0x1B80, 0x84000465, + 0x1B80, 0x84000467, + 0x1B80, 0x4D000475, + 0x1B80, 0x4D000477, + 0x1B80, 0x550F0485, + 0x1B80, 0x550F0487, + 0x1B80, 0xE1230495, + 0x1B80, 0xE1230497, + 0x1B80, 0x4F0204A5, + 0x1B80, 0x4F0204A7, + 0x1B80, 0x4E0004B5, + 0x1B80, 0x4E0004B7, + 0x1B80, 0x530204C5, + 0x1B80, 0x530204C7, + 0x1B80, 0x520104D5, + 0x1B80, 0x520104D7, + 0x1B80, 0xE12704E5, + 0x1B80, 0xE12704E7, + 0x1B80, 0x000104F5, + 0x1B80, 0x000104F7, + 0x1B80, 0x5C720505, + 0x1B80, 0x5C720507, + 0x1B80, 0xE1320515, + 0x1B80, 0xE1320517, + 0x1B80, 0x54E50525, + 0x1B80, 0x54E50527, + 0x1B80, 0x54BF0535, + 0x1B80, 0x54BF0537, + 0x1B80, 0x54C50545, + 0x1B80, 0x54C50547, + 0x1B80, 0x54BE0555, + 0x1B80, 0x54BE0557, + 0x1B80, 0x54DF0565, + 0x1B80, 0x54DF0567, + 0x1B80, 0x0BA60575, + 0x1B80, 0x0BA60577, + 0x1B80, 0xF3130585, + 0x1B80, 0xF3130587, + 0x1B80, 0xF41E0595, + 0x1B80, 0xF41E0597, + 0x1B80, 0xF53C05A5, + 0x1B80, 0xF53C05A7, + 0x1B80, 0x000105B5, + 0x1B80, 0x000105B7, + 0x1B80, 0x620605C5, + 0x1B80, 0x620605C7, + 0x1B80, 0x600605D5, + 0x1B80, 0x600605D7, + 0x1B80, 0xE1A905E5, + 0x1B80, 0xE1A905E7, + 0x1B80, 0x0C0005F5, + 0x1B80, 0x0C0005F7, + 0x1B80, 0x5C720605, + 0x1B80, 0x5C720607, + 0x1B80, 0xE1320615, + 0x1B80, 0xE1320617, + 0x1B80, 0x5CF10625, + 0x1B80, 0x5CF10627, + 0x1B80, 0x0C010635, + 0x1B80, 0x0C010637, + 0x1B80, 0xF2020645, + 0x1B80, 0xF2020647, + 0x1B80, 0x30D60655, + 0x1B80, 0x30D60657, + 0x1B80, 0x0AC60665, + 0x1B80, 0x0AC60667, + 0x1B80, 0xE1B60675, + 0x1B80, 0xE1B60677, + 0x1B80, 0xE1580685, + 0x1B80, 0xE1580687, + 0x1B80, 0x54E50695, + 0x1B80, 0x54E50697, + 0x1B80, 0x000106A5, + 0x1B80, 0x000106A7, + 0x1B80, 0x560106B5, + 0x1B80, 0x560106B7, + 0x1B80, 0x5CE206C5, + 0x1B80, 0x5CE206C7, + 0x1B80, 0x0AE106D5, + 0x1B80, 0x0AE106D7, + 0x1B80, 0x630C06E5, + 0x1B80, 0x630C06E7, + 0x1B80, 0xE13F06F5, + 0x1B80, 0xE13F06F7, + 0x1B80, 0x00270705, + 0x1B80, 0x00270707, + 0x1B80, 0xE16C0715, + 0x1B80, 0xE16C0717, + 0x1B80, 0x00020725, + 0x1B80, 0x00020727, + 0x1B80, 0x002A0735, + 0x1B80, 0x002A0737, + 0x1B80, 0x07140745, + 0x1B80, 0x07140747, + 0x1B80, 0x00020755, + 0x1B80, 0x00020757, + 0x1B80, 0x30C30765, + 0x1B80, 0x30C30767, + 0x1B80, 0x56010775, + 0x1B80, 0x56010777, + 0x1B80, 0x5CE20785, + 0x1B80, 0x5CE20787, + 0x1B80, 0x0AE10795, + 0x1B80, 0x0AE10797, + 0x1B80, 0x631707A5, + 0x1B80, 0x631707A7, + 0x1B80, 0xE13F07B5, + 0x1B80, 0xE13F07B7, + 0x1B80, 0x002507C5, + 0x1B80, 0x002507C7, + 0x1B80, 0xE16C07D5, + 0x1B80, 0xE16C07D7, + 0x1B80, 0x000207E5, + 0x1B80, 0x000207E7, + 0x1B80, 0x630F07F5, + 0x1B80, 0x630F07F7, + 0x1B80, 0xE13F0805, + 0x1B80, 0xE13F0807, + 0x1B80, 0x63070815, + 0x1B80, 0x63070817, + 0x1B80, 0xE13F0825, + 0x1B80, 0xE13F0827, + 0x1B80, 0x07140835, + 0x1B80, 0x07140837, + 0x1B80, 0x56000845, + 0x1B80, 0x56000847, + 0x1B80, 0x5CF20855, + 0x1B80, 0x5CF20857, + 0x1B80, 0x0AF10865, + 0x1B80, 0x0AF10867, + 0x1B80, 0x07140875, + 0x1B80, 0x07140877, + 0x1B80, 0x07140885, + 0x1B80, 0x07140887, + 0x1B80, 0x630F0895, + 0x1B80, 0x630F0897, + 0x1B80, 0xE13F08A5, + 0x1B80, 0xE13F08A7, + 0x1B80, 0x631708B5, + 0x1B80, 0x631708B7, + 0x1B80, 0xE13F08C5, + 0x1B80, 0xE13F08C7, + 0x1B80, 0x002508D5, + 0x1B80, 0x002508D7, + 0x1B80, 0xE16C08E5, + 0x1B80, 0xE16C08E7, + 0x1B80, 0x000208F5, + 0x1B80, 0x000208F7, + 0x1B80, 0x30C30905, + 0x1B80, 0x30C30907, + 0x1B80, 0xE1A90915, + 0x1B80, 0xE1A90917, + 0x1B80, 0x62060925, + 0x1B80, 0x62060927, + 0x1B80, 0x60060935, + 0x1B80, 0x60060937, + 0x1B80, 0xE1160945, + 0x1B80, 0xE1160947, + 0x1B80, 0x54BE0955, + 0x1B80, 0x54BE0957, + 0x1B80, 0x56010965, + 0x1B80, 0x56010967, + 0x1B80, 0x5CE20975, + 0x1B80, 0x5CE20977, + 0x1B80, 0x0AE10985, + 0x1B80, 0x0AE10987, + 0x1B80, 0x633A0995, + 0x1B80, 0x633A0997, + 0x1B80, 0xE13F09A5, + 0x1B80, 0xE13F09A7, + 0x1B80, 0x633709B5, + 0x1B80, 0x633709B7, + 0x1B80, 0xE13F09C5, + 0x1B80, 0xE13F09C7, + 0x1B80, 0x632F09D5, + 0x1B80, 0x632F09D7, + 0x1B80, 0xE13F09E5, + 0x1B80, 0xE13F09E7, + 0x1B80, 0x632709F5, + 0x1B80, 0x632709F7, + 0x1B80, 0xE13F0A05, + 0x1B80, 0xE13F0A07, + 0x1B80, 0x631F0A15, + 0x1B80, 0x631F0A17, + 0x1B80, 0xE13F0A25, + 0x1B80, 0xE13F0A27, + 0x1B80, 0x63170A35, + 0x1B80, 0x63170A37, + 0x1B80, 0xE13F0A45, + 0x1B80, 0xE13F0A47, + 0x1B80, 0x630F0A55, + 0x1B80, 0x630F0A57, + 0x1B80, 0xE13F0A65, + 0x1B80, 0xE13F0A67, + 0x1B80, 0x63070A75, + 0x1B80, 0x63070A77, + 0x1B80, 0xE13F0A85, + 0x1B80, 0xE13F0A87, + 0x1B80, 0xE16C0A95, + 0x1B80, 0xE16C0A97, + 0x1B80, 0x56000AA5, + 0x1B80, 0x56000AA7, + 0x1B80, 0x5CF20AB5, + 0x1B80, 0x5CF20AB7, + 0x1B80, 0x0AF10AC5, + 0x1B80, 0x0AF10AC7, + 0x1B80, 0xF5040AD5, + 0x1B80, 0xF5040AD7, + 0x1B80, 0xE13F0AE5, + 0x1B80, 0xE13F0AE7, + 0x1B80, 0xE16C0AF5, + 0x1B80, 0xE16C0AF7, + 0x1B80, 0x30B30B05, + 0x1B80, 0x30B30B07, + 0x1B80, 0x07140B15, + 0x1B80, 0x07140B17, + 0x1B80, 0x07140B25, + 0x1B80, 0x07140B27, + 0x1B80, 0x630F0B35, + 0x1B80, 0x630F0B37, + 0x1B80, 0xE13F0B45, + 0x1B80, 0xE13F0B47, + 0x1B80, 0x63170B55, + 0x1B80, 0x63170B57, + 0x1B80, 0xE13F0B65, + 0x1B80, 0xE13F0B67, + 0x1B80, 0x631F0B75, + 0x1B80, 0x631F0B77, + 0x1B80, 0xE13F0B85, + 0x1B80, 0xE13F0B87, + 0x1B80, 0x63270B95, + 0x1B80, 0x63270B97, + 0x1B80, 0xE13F0BA5, + 0x1B80, 0xE13F0BA7, + 0x1B80, 0x632F0BB5, + 0x1B80, 0x632F0BB7, + 0x1B80, 0xE13F0BC5, + 0x1B80, 0xE13F0BC7, + 0x1B80, 0x63370BD5, + 0x1B80, 0x63370BD7, + 0x1B80, 0xE13F0BE5, + 0x1B80, 0xE13F0BE7, + 0x1B80, 0x633A0BF5, + 0x1B80, 0x633A0BF7, + 0x1B80, 0xE13F0C05, + 0x1B80, 0xE13F0C07, + 0x1B80, 0xF60B0C15, + 0x1B80, 0xF60B0C17, + 0x1B80, 0xF7170C25, + 0x1B80, 0xF7170C27, + 0x1B80, 0x4D300C35, + 0x1B80, 0x4D300C37, + 0x1B80, 0x57040C45, + 0x1B80, 0x57040C47, + 0x1B80, 0x57000C55, + 0x1B80, 0x57000C57, + 0x1B80, 0x96000C65, + 0x1B80, 0x96000C67, + 0x1B80, 0x57080C75, + 0x1B80, 0x57080C77, + 0x1B80, 0x57000C85, + 0x1B80, 0x57000C87, + 0x1B80, 0x95000C95, + 0x1B80, 0x95000C97, + 0x1B80, 0x4D000CA5, + 0x1B80, 0x4D000CA7, + 0x1B80, 0x6C070CB5, + 0x1B80, 0x6C070CB7, + 0x1B80, 0x00010CC5, + 0x1B80, 0x00010CC7, + 0x1B80, 0x00220CD5, + 0x1B80, 0x00220CD7, + 0x1B80, 0x06140CE5, + 0x1B80, 0x06140CE7, + 0x1B80, 0xE16C0CF5, + 0x1B80, 0xE16C0CF7, + 0x1B80, 0x00020D05, + 0x1B80, 0x00020D07, + 0x1B80, 0x00250D15, + 0x1B80, 0x00250D17, + 0x1B80, 0x06140D25, + 0x1B80, 0x06140D27, + 0x1B80, 0xE16C0D35, + 0x1B80, 0xE16C0D37, + 0x1B80, 0x00020D45, + 0x1B80, 0x00020D47, + 0x1B80, 0x00010D55, + 0x1B80, 0x00010D57, + 0x1B80, 0x00320D65, + 0x1B80, 0x00320D67, + 0x1B80, 0xE16C0D75, + 0x1B80, 0xE16C0D77, + 0x1B80, 0x00020D85, + 0x1B80, 0x00020D87, + 0x1B80, 0xE1860D95, + 0x1B80, 0xE1860D97, + 0x1B80, 0xE1B60DA5, + 0x1B80, 0xE1B60DA7, + 0x1B80, 0x5CD10DB5, + 0x1B80, 0x5CD10DB7, + 0x1B80, 0x673A0DC5, + 0x1B80, 0x673A0DC7, + 0x1B80, 0xE1230DD5, + 0x1B80, 0xE1230DD7, + 0x1B80, 0xF80B0DE5, + 0x1B80, 0xF80B0DE7, + 0x1B80, 0xF9110DF5, + 0x1B80, 0xF9110DF7, + 0x1B80, 0xE1580E05, + 0x1B80, 0xE1580E07, + 0x1B80, 0x67370E15, + 0x1B80, 0x67370E17, + 0x1B80, 0xE1580E25, + 0x1B80, 0xE1580E27, + 0x1B80, 0x672F0E35, + 0x1B80, 0x672F0E37, + 0x1B80, 0xE1580E45, + 0x1B80, 0xE1580E47, + 0x1B80, 0x67270E55, + 0x1B80, 0x67270E57, + 0x1B80, 0xE1580E65, + 0x1B80, 0xE1580E67, + 0x1B80, 0x671F0E75, + 0x1B80, 0x671F0E77, + 0x1B80, 0xE1580E85, + 0x1B80, 0xE1580E87, + 0x1B80, 0x67170E95, + 0x1B80, 0x67170E97, + 0x1B80, 0xE1580EA5, + 0x1B80, 0xE1580EA7, + 0x1B80, 0xF8020EB5, + 0x1B80, 0xF8020EB7, + 0x1B80, 0x30EE0EC5, + 0x1B80, 0x30EE0EC7, + 0x1B80, 0xE0D10ED5, + 0x1B80, 0xE0D10ED7, + 0x1B80, 0x670F0EE5, + 0x1B80, 0x670F0EE7, + 0x1B80, 0xE1580EF5, + 0x1B80, 0xE1580EF7, + 0x1B80, 0x67070F05, + 0x1B80, 0x67070F07, + 0x1B80, 0xE1580F15, + 0x1B80, 0xE1580F17, + 0x1B80, 0xF9020F25, + 0x1B80, 0xF9020F27, + 0x1B80, 0x30F50F35, + 0x1B80, 0x30F50F37, + 0x1B80, 0xE0CD0F45, + 0x1B80, 0xE0CD0F47, + 0x1B80, 0x06140F55, + 0x1B80, 0x06140F57, + 0x1B80, 0xE16C0F65, + 0x1B80, 0xE16C0F67, + 0x1B80, 0x5CF10F75, + 0x1B80, 0x5CF10F77, + 0x1B80, 0xE1580F85, + 0x1B80, 0xE1580F87, + 0x1B80, 0x06140F95, + 0x1B80, 0x06140F97, + 0x1B80, 0xE16C0FA5, + 0x1B80, 0xE16C0FA7, + 0x1B80, 0xF9020FB5, + 0x1B80, 0xF9020FB7, + 0x1B80, 0x30FF0FC5, + 0x1B80, 0x30FF0FC7, + 0x1B80, 0xE0CD0FD5, + 0x1B80, 0xE0CD0FD7, + 0x1B80, 0x31130FE5, + 0x1B80, 0x31130FE7, + 0x1B80, 0x670F0FF5, + 0x1B80, 0x670F0FF7, + 0x1B80, 0xE1581005, + 0x1B80, 0xE1581007, + 0x1B80, 0x67171015, + 0x1B80, 0x67171017, + 0x1B80, 0xE1581025, + 0x1B80, 0xE1581027, + 0x1B80, 0xF8021035, + 0x1B80, 0xF8021037, + 0x1B80, 0x31071045, + 0x1B80, 0x31071047, + 0x1B80, 0xE0D11055, + 0x1B80, 0xE0D11057, + 0x1B80, 0x31131065, + 0x1B80, 0x31131067, + 0x1B80, 0x670F1075, + 0x1B80, 0x670F1077, + 0x1B80, 0xE1581085, + 0x1B80, 0xE1581087, + 0x1B80, 0x671F1095, + 0x1B80, 0x671F1097, + 0x1B80, 0xE15810A5, + 0x1B80, 0xE15810A7, + 0x1B80, 0x672710B5, + 0x1B80, 0x672710B7, + 0x1B80, 0xE15810C5, + 0x1B80, 0xE15810C7, + 0x1B80, 0x672F10D5, + 0x1B80, 0x672F10D7, + 0x1B80, 0xE15810E5, + 0x1B80, 0xE15810E7, + 0x1B80, 0x673710F5, + 0x1B80, 0x673710F7, + 0x1B80, 0xE1581105, + 0x1B80, 0xE1581107, + 0x1B80, 0x673A1115, + 0x1B80, 0x673A1117, + 0x1B80, 0xE1581125, + 0x1B80, 0xE1581127, + 0x1B80, 0x4D101135, + 0x1B80, 0x4D101137, + 0x1B80, 0x30C41145, + 0x1B80, 0x30C41147, + 0x1B80, 0x00011155, + 0x1B80, 0x00011157, + 0x1B80, 0x6F241165, + 0x1B80, 0x6F241167, + 0x1B80, 0x6E401175, + 0x1B80, 0x6E401177, + 0x1B80, 0x6D001185, + 0x1B80, 0x6D001187, + 0x1B80, 0x55031195, + 0x1B80, 0x55031197, + 0x1B80, 0x312311A5, + 0x1B80, 0x312311A7, + 0x1B80, 0x6F1C11B5, + 0x1B80, 0x6F1C11B7, + 0x1B80, 0x6E4011C5, + 0x1B80, 0x6E4011C7, + 0x1B80, 0x550B11D5, + 0x1B80, 0x550B11D7, + 0x1B80, 0x312311E5, + 0x1B80, 0x312311E7, + 0x1B80, 0x061C11F5, + 0x1B80, 0x061C11F7, + 0x1B80, 0x54DE1205, + 0x1B80, 0x54DE1207, + 0x1B80, 0x06DC1215, + 0x1B80, 0x06DC1217, + 0x1B80, 0x55131225, + 0x1B80, 0x55131227, + 0x1B80, 0x74011235, + 0x1B80, 0x74011237, + 0x1B80, 0x74001245, + 0x1B80, 0x74001247, + 0x1B80, 0x8E001255, + 0x1B80, 0x8E001257, + 0x1B80, 0x00011265, + 0x1B80, 0x00011267, + 0x1B80, 0x57021275, + 0x1B80, 0x57021277, + 0x1B80, 0x57001285, + 0x1B80, 0x57001287, + 0x1B80, 0x97001295, + 0x1B80, 0x97001297, + 0x1B80, 0x000112A5, + 0x1B80, 0x000112A7, + 0x1B80, 0x54BF12B5, + 0x1B80, 0x54BF12B7, + 0x1B80, 0x54C112C5, + 0x1B80, 0x54C112C7, + 0x1B80, 0x54A212D5, + 0x1B80, 0x54A212D7, + 0x1B80, 0x54C012E5, + 0x1B80, 0x54C012E7, + 0x1B80, 0x54A112F5, + 0x1B80, 0x54A112F7, + 0x1B80, 0x54DF1305, + 0x1B80, 0x54DF1307, + 0x1B80, 0x00011315, + 0x1B80, 0x00011317, + 0x1B80, 0x55001325, + 0x1B80, 0x55001327, + 0x1B80, 0xE1231335, + 0x1B80, 0xE1231337, + 0x1B80, 0x54811345, + 0x1B80, 0x54811347, + 0x1B80, 0xE1231355, + 0x1B80, 0xE1231357, + 0x1B80, 0x54801365, + 0x1B80, 0x54801367, + 0x1B80, 0x002A1375, + 0x1B80, 0x002A1377, + 0x1B80, 0xE12B1385, + 0x1B80, 0xE12B1387, + 0x1B80, 0xE1231395, + 0x1B80, 0xE1231397, + 0x1B80, 0x548013A5, + 0x1B80, 0x548013A7, + 0x1B80, 0xE17213B5, + 0x1B80, 0xE17213B7, + 0x1B80, 0xBF3013C5, + 0x1B80, 0xBF3013C7, + 0x1B80, 0x000213D5, + 0x1B80, 0x000213D7, + 0x1B80, 0x302813E5, + 0x1B80, 0x302813E7, + 0x1B80, 0x4F7813F5, + 0x1B80, 0x4F7813F7, + 0x1B80, 0x4E001405, + 0x1B80, 0x4E001407, + 0x1B80, 0x53871415, + 0x1B80, 0x53871417, + 0x1B80, 0x52F11425, + 0x1B80, 0x52F11427, + 0x1B80, 0xE1161435, + 0x1B80, 0xE1161437, + 0x1B80, 0xE11B1445, + 0x1B80, 0xE11B1447, + 0x1B80, 0xE11F1455, + 0x1B80, 0xE11F1457, + 0x1B80, 0xE1271465, + 0x1B80, 0xE1271467, + 0x1B80, 0x54811475, + 0x1B80, 0x54811477, + 0x1B80, 0xE1161485, + 0x1B80, 0xE1161487, + 0x1B80, 0xE11B1495, + 0x1B80, 0xE11B1497, + 0x1B80, 0xE11F14A5, + 0x1B80, 0xE11F14A7, + 0x1B80, 0xE12714B5, + 0x1B80, 0xE12714B7, + 0x1B80, 0x548014C5, + 0x1B80, 0x548014C7, + 0x1B80, 0x002A14D5, + 0x1B80, 0x002A14D7, + 0x1B80, 0xE12B14E5, + 0x1B80, 0xE12B14E7, + 0x1B80, 0xE11614F5, + 0x1B80, 0xE11614F7, + 0x1B80, 0xE11B1505, + 0x1B80, 0xE11B1507, + 0x1B80, 0xE11F1515, + 0x1B80, 0xE11F1517, + 0x1B80, 0xE1271525, + 0x1B80, 0xE1271527, + 0x1B80, 0x54801535, + 0x1B80, 0x54801537, + 0x1B80, 0xE1721545, + 0x1B80, 0xE1721547, + 0x1B80, 0xBF171555, + 0x1B80, 0xBF171557, + 0x1B80, 0x00021565, + 0x1B80, 0x00021567, + 0x1B80, 0x30281575, + 0x1B80, 0x30281577, + 0x1B80, 0x06141585, + 0x1B80, 0x06141587, + 0x1B80, 0x73201595, + 0x1B80, 0x73201597, + 0x1B80, 0x720015A5, + 0x1B80, 0x720015A7, + 0x1B80, 0x710015B5, + 0x1B80, 0x710015B7, + 0x1B80, 0x550115C5, + 0x1B80, 0x550115C7, + 0x1B80, 0xE12315D5, + 0x1B80, 0xE12315D7, + 0x1B80, 0xE12715E5, + 0x1B80, 0xE12715E7, + 0x1B80, 0x548115F5, + 0x1B80, 0x548115F7, + 0x1B80, 0xE1231605, + 0x1B80, 0xE1231607, + 0x1B80, 0xE1271615, + 0x1B80, 0xE1271617, + 0x1B80, 0x54801625, + 0x1B80, 0x54801627, + 0x1B80, 0x002A1635, + 0x1B80, 0x002A1637, + 0x1B80, 0xE12B1645, + 0x1B80, 0xE12B1647, + 0x1B80, 0xE1231655, + 0x1B80, 0xE1231657, + 0x1B80, 0xE1271665, + 0x1B80, 0xE1271667, + 0x1B80, 0x54801675, + 0x1B80, 0x54801677, + 0x1B80, 0xE1721685, + 0x1B80, 0xE1721687, + 0x1B80, 0xBF031695, + 0x1B80, 0xBF031697, + 0x1B80, 0x000216A5, + 0x1B80, 0x000216A7, + 0x1B80, 0x302816B5, + 0x1B80, 0x302816B7, + 0x1B80, 0x54BF16C5, + 0x1B80, 0x54BF16C7, + 0x1B80, 0x54C516D5, + 0x1B80, 0x54C516D7, + 0x1B80, 0x050A16E5, + 0x1B80, 0x050A16E7, + 0x1B80, 0x071416F5, + 0x1B80, 0x071416F7, + 0x1B80, 0x54DF1705, + 0x1B80, 0x54DF1707, + 0x1B80, 0x00011715, + 0x1B80, 0x00011717, + 0x1B80, 0x54BF1725, + 0x1B80, 0x54BF1727, + 0x1B80, 0x54C01735, + 0x1B80, 0x54C01737, + 0x1B80, 0x54A31745, + 0x1B80, 0x54A31747, + 0x1B80, 0x54C11755, + 0x1B80, 0x54C11757, + 0x1B80, 0x54A41765, + 0x1B80, 0x54A41767, + 0x1B80, 0x4C831775, + 0x1B80, 0x4C831777, + 0x1B80, 0x4C031785, + 0x1B80, 0x4C031787, + 0x1B80, 0xBF0B1795, + 0x1B80, 0xBF0B1797, + 0x1B80, 0x54C217A5, + 0x1B80, 0x54C217A7, + 0x1B80, 0x54A417B5, + 0x1B80, 0x54A417B7, + 0x1B80, 0x4C8517C5, + 0x1B80, 0x4C8517C7, + 0x1B80, 0x4C0517D5, + 0x1B80, 0x4C0517D7, + 0x1B80, 0xBF0617E5, + 0x1B80, 0xBF0617E7, + 0x1B80, 0x54C117F5, + 0x1B80, 0x54C117F7, + 0x1B80, 0x54A31805, + 0x1B80, 0x54A31807, + 0x1B80, 0x4C861815, + 0x1B80, 0x4C861817, + 0x1B80, 0x4C061825, + 0x1B80, 0x4C061827, + 0x1B80, 0xBF011835, + 0x1B80, 0xBF011837, + 0x1B80, 0x54DF1845, + 0x1B80, 0x54DF1847, + 0x1B80, 0x00011855, + 0x1B80, 0x00011857, + 0x1B80, 0x00071865, + 0x1B80, 0x00071867, + 0x1B80, 0x54011875, + 0x1B80, 0x54011877, + 0x1B80, 0x00041885, + 0x1B80, 0x00041887, + 0x1B80, 0x56001895, + 0x1B80, 0x56001897, + 0x1B80, 0x5CF218A5, + 0x1B80, 0x5CF218A7, + 0x1B80, 0x630718B5, + 0x1B80, 0x630718B7, + 0x1B80, 0x620418C5, + 0x1B80, 0x620418C7, + 0x1B80, 0x610018D5, + 0x1B80, 0x610018D7, + 0x1B80, 0x670718E5, + 0x1B80, 0x670718E7, + 0x1B80, 0x660618F5, + 0x1B80, 0x660618F7, + 0x1B80, 0x6F201905, + 0x1B80, 0x6F201907, + 0x1B80, 0x6E001915, + 0x1B80, 0x6E001917, + 0x1B80, 0x6D001925, + 0x1B80, 0x6D001927, + 0x1B80, 0x6C031935, + 0x1B80, 0x6C031937, + 0x1B80, 0x73201945, + 0x1B80, 0x73201947, + 0x1B80, 0x72001955, + 0x1B80, 0x72001957, + 0x1B80, 0x71001965, + 0x1B80, 0x71001967, + 0x1B80, 0x7B201975, + 0x1B80, 0x7B201977, + 0x1B80, 0x7A001985, + 0x1B80, 0x7A001987, + 0x1B80, 0x79001995, + 0x1B80, 0x79001997, + 0x1B80, 0x7F2019A5, + 0x1B80, 0x7F2019A7, + 0x1B80, 0x7E0019B5, + 0x1B80, 0x7E0019B7, + 0x1B80, 0x7D0019C5, + 0x1B80, 0x7D0019C7, + 0x1B80, 0x090119D5, + 0x1B80, 0x090119D7, + 0x1B80, 0x0AC619E5, + 0x1B80, 0x0AC619E7, + 0x1B80, 0x0BA619F5, + 0x1B80, 0x0BA619F7, + 0x1B80, 0x0C011A05, + 0x1B80, 0x0C011A07, + 0x1B80, 0x0D021A15, + 0x1B80, 0x0D021A17, + 0x1B80, 0x0E041A25, + 0x1B80, 0x0E041A27, + 0x1B80, 0x0FFF1A35, + 0x1B80, 0x0FFF1A37, + 0x1B80, 0x4D041A45, + 0x1B80, 0x4D041A47, + 0x1B80, 0x28F81A55, + 0x1B80, 0x28F81A57, + 0x1B80, 0xE0001A65, + 0x1B80, 0xE0001A67, + 0x1B80, 0x4D001A75, + 0x1B80, 0x4D001A77, + 0x1B80, 0x00011A85, + 0x1B80, 0x00011A87, + 0x1B80, 0x4D041A95, + 0x1B80, 0x4D041A97, + 0x1B80, 0x2EF81AA5, + 0x1B80, 0x2EF81AA7, + 0x1B80, 0x00021AB5, + 0x1B80, 0x00021AB7, + 0x1B80, 0x23031AC5, + 0x1B80, 0x23031AC7, + 0x1B80, 0x00001AD5, + 0x1B80, 0x00001AD7, + 0x1B80, 0x23131AE5, + 0x1B80, 0x23131AE7, + 0x1B80, 0xE77F1AF5, + 0x1B80, 0xE77F1AF7, + 0x1B80, 0x232F1B05, + 0x1B80, 0x232F1B07, + 0x1B80, 0xEFBF1B15, + 0x1B80, 0xEFBF1B17, + 0x1B80, 0x2EF01B25, + 0x1B80, 0x2EF01B27, + 0x1B80, 0x00021B35, + 0x1B80, 0x00021B37, + 0x1B80, 0x4D001B45, + 0x1B80, 0x4D001B47, + 0x1B80, 0x00011B55, + 0x1B80, 0x00011B57, + 0x1B80, 0x4D041B65, + 0x1B80, 0x4D041B67, + 0x1B80, 0x2EF81B75, + 0x1B80, 0x2EF81B77, + 0x1B80, 0x00021B85, + 0x1B80, 0x00021B87, + 0x1B80, 0x23031B95, + 0x1B80, 0x23031B97, + 0x1B80, 0x00001BA5, + 0x1B80, 0x00001BA7, + 0x1B80, 0x23131BB5, + 0x1B80, 0x23131BB7, + 0x1B80, 0xE77F1BC5, + 0x1B80, 0xE77F1BC7, + 0x1B80, 0x232F1BD5, + 0x1B80, 0x232F1BD7, + 0x1B80, 0xE79F1BE5, + 0x1B80, 0xE79F1BE7, + 0x1B80, 0x2EF01BF5, + 0x1B80, 0x2EF01BF7, + 0x1B80, 0x00021C05, + 0x1B80, 0x00021C07, + 0x1B80, 0x28F81C15, + 0x1B80, 0x28F81C17, + 0x1B80, 0x80001C25, + 0x1B80, 0x80001C27, + 0x1B80, 0x4D001C35, + 0x1B80, 0x4D001C37, + 0x1B80, 0x00011C45, + 0x1B80, 0x00011C47, + 0x1B80, 0x00041C55, + 0x1B80, 0x00041C57, + 0x1B80, 0x6BC01C65, + 0x1B80, 0x6BC01C67, + 0x1B80, 0x4D041C75, + 0x1B80, 0x4D041C77, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0xA0000000, 0x00000000, + 0x1B80, 0x68481C85, + 0x1B80, 0x68481C87, + 0xB0000000, 0x00000000, + 0x1B80, 0x66061C95, + 0x1B80, 0x66061C97, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0xA0000000, 0x00000000, + 0x1B80, 0x65041CA5, + 0x1B80, 0x65041CA7, + 0xB0000000, 0x00000000, + 0x1B80, 0x64471CB5, + 0x1B80, 0x64471CB7, + 0x1B80, 0x23411CC5, + 0x1B80, 0x23411CC7, + 0x1B80, 0x100E1CD5, + 0x1B80, 0x100E1CD7, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0xA0000000, 0x00000000, + 0x1B80, 0x60011CE5, + 0x1B80, 0x60011CE7, + 0xB0000000, 0x00000000, + 0x1B80, 0x23411CF5, + 0x1B80, 0x23411CF7, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0xA0000000, 0x00000000, + 0x1B80, 0x60611D05, + 0x1B80, 0x60611D07, + 0xB0000000, 0x00000000, + 0x1B80, 0x23411D15, + 0x1B80, 0x23411D17, + 0x1B80, 0x70E11D25, + 0x1B80, 0x70E11D27, + 0x1B80, 0x4D001D35, + 0x1B80, 0x4D001D37, + 0x1B80, 0x00011D45, + 0x1B80, 0x00011D47, + 0x1B80, 0x00041D55, + 0x1B80, 0x00041D57, + 0x1B80, 0x6B401D65, + 0x1B80, 0x6B401D67, + 0x1B80, 0x4D041D75, + 0x1B80, 0x4D041D77, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241D85, + 0x1B80, 0x68241D87, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241D85, + 0x1B80, 0x68241D87, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241D85, + 0x1B80, 0x68241D87, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241D85, + 0x1B80, 0x68241D87, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241D85, + 0x1B80, 0x68241D87, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241D85, + 0x1B80, 0x68241D87, + 0xA0000000, 0x00000000, + 0x1B80, 0x68481D85, + 0x1B80, 0x68481D87, + 0xB0000000, 0x00000000, + 0x1B80, 0x66061D95, + 0x1B80, 0x66061D97, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65081DA5, + 0x1B80, 0x65081DA7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65181DA5, + 0x1B80, 0x65181DA7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65181DA5, + 0x1B80, 0x65181DA7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65181DA5, + 0x1B80, 0x65181DA7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65181DA5, + 0x1B80, 0x65181DA7, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65081DA5, + 0x1B80, 0x65081DA7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65181DA5, + 0x1B80, 0x65181DA7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65181DA5, + 0x1B80, 0x65181DA7, + 0xA0000000, 0x00000000, + 0x1B80, 0x65081DA5, + 0x1B80, 0x65081DA7, + 0xB0000000, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x64481DB5, + 0x1B80, 0x64481DB7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x64481DB5, + 0x1B80, 0x64481DB7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x64481DB5, + 0x1B80, 0x64481DB7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x64481DB5, + 0x1B80, 0x64481DB7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x64481DB5, + 0x1B80, 0x64481DB7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x64481DB5, + 0x1B80, 0x64481DB7, + 0xA0000000, 0x00000000, + 0x1B80, 0x64471DB5, + 0x1B80, 0x64471DB7, + 0xB0000000, 0x00000000, + 0x1B80, 0x23411DC5, + 0x1B80, 0x23411DC7, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E41DD5, + 0x1B80, 0x11E41DD7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E81DD5, + 0x1B80, 0x11E81DD7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E81DD5, + 0x1B80, 0x11E81DD7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E81DD5, + 0x1B80, 0x11E81DD7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E81DD5, + 0x1B80, 0x11E81DD7, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E41DD5, + 0x1B80, 0x11E41DD7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E81DD5, + 0x1B80, 0x11E81DD7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E81DD5, + 0x1B80, 0x11E81DD7, + 0xA0000000, 0x00000000, + 0x1B80, 0x11E41DD5, + 0x1B80, 0x11E41DD7, + 0xB0000000, 0x00000000, + 0x1B80, 0x60011DE5, + 0x1B80, 0x60011DE7, + 0x1B80, 0x23411DF5, + 0x1B80, 0x23411DF7, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60E11E05, + 0x1B80, 0x60E11E07, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x61E11E05, + 0x1B80, 0x61E11E07, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x61E11E05, + 0x1B80, 0x61E11E07, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x61E11E05, + 0x1B80, 0x61E11E07, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x61E11E05, + 0x1B80, 0x61E11E07, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60E11E05, + 0x1B80, 0x60E11E07, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x61E11E05, + 0x1B80, 0x61E11E07, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x61E11E05, + 0x1B80, 0x61E11E07, + 0xA0000000, 0x00000000, + 0x1B80, 0x60E11E05, + 0x1B80, 0x60E11E07, + 0xB0000000, 0x00000000, + 0x1B80, 0x23411E15, + 0x1B80, 0x23411E17, + 0x1B80, 0x70611E25, + 0x1B80, 0x70611E27, + 0x1B80, 0x4D001E35, + 0x1B80, 0x4D001E37, + 0x1B80, 0x00011E45, + 0x1B80, 0x00011E47, + 0x1B80, 0x00001E55, + 0x1B80, 0x00001E57, + 0x1B80, 0x00001E65, + 0x1B80, 0x00001E67, + 0x1B80, 0x00001E75, + 0x1B80, 0x00001E77, + 0x1B80, 0x00001E85, + 0x1B80, 0x00001E87, + 0x1B80, 0x00001E95, + 0x1B80, 0x00001E97, + 0x1B80, 0x00001EA5, + 0x1B80, 0x00001EA7, + 0x1B80, 0x00001EB5, + 0x1B80, 0x00001EB7, + 0x1B80, 0x00001EC5, + 0x1B80, 0x00001EC7, + 0x1B80, 0x00001ED5, + 0x1B80, 0x00001ED7, + 0x1B80, 0x00001EE5, + 0x1B80, 0x00001EE7, + 0x1B80, 0x00001EF5, + 0x1B80, 0x00001EF7, + 0x1B80, 0x00001F05, + 0x1B80, 0x00001F07, + 0x1B80, 0x00001F15, + 0x1B80, 0x00001F17, + 0x1B80, 0x00001F25, + 0x1B80, 0x00001F27, + 0x1B80, 0x00001F35, + 0x1B80, 0x00001F37, + 0x1B80, 0x00001F45, + 0x1B80, 0x00001F47, + 0x1B80, 0x00001F55, + 0x1B80, 0x00001F57, + 0x1B80, 0x00001F65, + 0x1B80, 0x00001F67, + 0x1B80, 0x00001F75, + 0x1B80, 0x00001F77, + 0x1B80, 0x00001F85, + 0x1B80, 0x00001F87, + 0x1B80, 0x00001F95, + 0x1B80, 0x00001F97, + 0x1B80, 0x00001FA5, + 0x1B80, 0x00001FA7, + 0x1B80, 0x00001FB5, + 0x1B80, 0x00001FB7, + 0x1B80, 0x00001FC5, + 0x1B80, 0x00001FC7, + 0x1B80, 0x00001FD5, + 0x1B80, 0x00001FD7, + 0x1B80, 0x00001FE5, + 0x1B80, 0x00001FE7, + 0x1B80, 0x00001FF5, + 0x1B80, 0x00001FF7, + 0x1B80, 0x00000006, + 0x1B80, 0x00000002, + +}; +const u32 array_mp_8814a_phy_reg_len = sizeof(array_mp_8814a_phy_reg) / sizeof(u32); + +const u32 array_mp_8814a_phy_reg_mp[] = { + 0x8FC, 0x00000000, + 0x838, 0x86667641, + +}; +const u32 array_mp_8814a_phy_reg_mp_len = sizeof(array_mp_8814a_phy_reg_mp) / sizeof(u32); + +const u32 array_mp_8814a_phy_reg_pg[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 0, 2, 0, 0x00001820, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 0, 2, 1, 0x00001834, 0xffffffff, 0x32323232, + 0, 2, 1, 0x00001838, 0xffffffff, 0x26283032, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 0, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 0, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 1, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 1, 2, 1, 0x00001834, 0xffffffff, 0x32323232, + 1, 2, 1, 0x00001838, 0xffffffff, 0x26283032, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 1, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 1, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222 +}; +const u32 array_mp_8814a_phy_reg_pg_len = sizeof(array_mp_8814a_phy_reg_pg) / sizeof(u32); + +const u32 array_mp_8814a_phy_reg_pg_type0[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x28303232, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x26283032, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x30303030, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x28282828, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x22242628, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x26283032, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x30302224, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x28303030, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x20222426, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x28282828, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x22242628, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x18202020, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x28303232, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x26283032, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x30303030, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x28282828, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x22242628, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x26283032, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x30302224, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x28303030, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x20222426, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x28282828, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x22242628, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x18202020, + 0, 2, 0, 0x00001820, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001824, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001828, 0xffffffff, 0x28303232, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001830, 0xffffffff, 0x26283032, + 0, 2, 1, 0x00001834, 0xffffffff, 0x30303030, + 0, 2, 1, 0x00001838, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x28282828, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x22242628, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001840, 0xffffffff, 0x26283032, + 0, 2, 0, 0x00001844, 0xffffffff, 0x30302224, + 0, 2, 1, 0x00001848, 0xffffffff, 0x28303030, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x20222426, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x28282828, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x22242628, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x18202020, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x28303232, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x26283032, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x30303030, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x28282828, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x22242628, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x26283032, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x30302224, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x28303030, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x20222426, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x28282828, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x22242628, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x18202020, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x32323232, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x28303232, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x32323232, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x26283032, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x30303030, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x24262830, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x28282828, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x22242628, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x32323232, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x26283032, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x30302224, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x28303030, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x20222426, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x28282828, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x22242628, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x18202020, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x32323232, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x28303232, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x32323232, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x26283032, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x30303030, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x24262830, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x28282828, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x22242628, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x32323232, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x26283032, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x30302224, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x28303030, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x20222426, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x28282828, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x22242628, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x18202020, + 1, 2, 0, 0x00001824, 0xffffffff, 0x32323232, + 1, 2, 0, 0x00001828, 0xffffffff, 0x28303232, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x32323232, + 1, 2, 0, 0x00001830, 0xffffffff, 0x26283032, + 1, 2, 1, 0x00001834, 0xffffffff, 0x30303030, + 1, 2, 1, 0x00001838, 0xffffffff, 0x24262830, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x28282828, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x22242628, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x32323232, + 1, 2, 0, 0x00001840, 0xffffffff, 0x26283032, + 1, 2, 0, 0x00001844, 0xffffffff, 0x30302224, + 1, 2, 1, 0x00001848, 0xffffffff, 0x28303030, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x20222426, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x28282828, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x22242628, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x18202020, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x32323232, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x28303232, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x32323232, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x26283032, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x30303030, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x24262830, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x28282828, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x22242628, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x32323232, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x26283032, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x30302224, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x28303030, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x20222426, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x28282828, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x22242628, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x18202020 +}; +const u32 array_mp_8814a_phy_reg_pg_type0_len = sizeof(array_mp_8814a_phy_reg_pg_type0) / sizeof(u32); + +const u32 array_mp_8814a_phy_reg_pg_type1[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 0, 2, 0, 0x00001820, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 0, 2, 1, 0x00001834, 0xffffffff, 0x32323232, + 0, 2, 1, 0x00001838, 0xffffffff, 0x26283032, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 0, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 0, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 1, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 1, 2, 1, 0x00001834, 0xffffffff, 0x32323232, + 1, 2, 1, 0x00001838, 0xffffffff, 0x26283032, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 1, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 1, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222 +}; +const u32 array_mp_8814a_phy_reg_pg_type1_len = sizeof(array_mp_8814a_phy_reg_pg_type1) / sizeof(u32); + +const u32 array_mp_8814a_phy_reg_pg_type10[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x36384042, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x34363840, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x42424242, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x34363840, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x34363840, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x42423032, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x38404242, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x30323436, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x34363840, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x30303032, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x36384042, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x34363840, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x42424242, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x34363840, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x34363840, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x42423032, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x38404242, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x30323436, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x34363840, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x30303032, + 0, 2, 0, 0x00001820, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001824, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001828, 0xffffffff, 0x36384042, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001830, 0xffffffff, 0x34363840, + 0, 2, 1, 0x00001834, 0xffffffff, 0x42424242, + 0, 2, 1, 0x00001838, 0xffffffff, 0x34363840, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001840, 0xffffffff, 0x34363840, + 0, 2, 0, 0x00001844, 0xffffffff, 0x42423032, + 0, 2, 1, 0x00001848, 0xffffffff, 0x38404242, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x30323436, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x34363840, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x30303032, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x36384042, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x34363840, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x42424242, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x34363840, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x34363840, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x42423032, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x38404242, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x30323436, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x34363840, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x30303032, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x36384042, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x34363840, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x42424242, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x34363840, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x42423032, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x38404242, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x30323436, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x34363840, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x30303032, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x36384042, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x34363840, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x42424242, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x34363840, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x34363840, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x42423032, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x38404242, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x30323436, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x34363840, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x30303032, + 1, 2, 0, 0x00001824, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001828, 0xffffffff, 0x36384042, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001830, 0xffffffff, 0x34363840, + 1, 2, 1, 0x00001834, 0xffffffff, 0x42424242, + 1, 2, 1, 0x00001838, 0xffffffff, 0x34363840, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001840, 0xffffffff, 0x34363840, + 1, 2, 0, 0x00001844, 0xffffffff, 0x42423032, + 1, 2, 1, 0x00001848, 0xffffffff, 0x38404242, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x30323436, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x34363840, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x30303032, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x36384042, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x34363840, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x42424242, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x34363840, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x34363840, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x42423032, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x38404242, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x30323436, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x34363840, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x30303032 +}; +const u32 array_mp_8814a_phy_reg_pg_type10_len = sizeof(array_mp_8814a_phy_reg_pg_type10) / sizeof(u32); + +const u32 array_mp_8814a_phy_reg_pg_type11[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x36384042, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x34363840, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x42424242, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x34363840, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x34363840, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x42423032, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x38404242, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x30323436, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x34363840, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x30303032, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x36384042, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x34363840, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x42424242, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x34363840, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x34363840, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x42423032, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x38404242, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x30323436, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x34363840, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x30303032, + 0, 2, 0, 0x00001820, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001824, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001828, 0xffffffff, 0x36384042, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001830, 0xffffffff, 0x34363840, + 0, 2, 1, 0x00001834, 0xffffffff, 0x42424242, + 0, 2, 1, 0x00001838, 0xffffffff, 0x34363840, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001840, 0xffffffff, 0x34363840, + 0, 2, 0, 0x00001844, 0xffffffff, 0x42423032, + 0, 2, 1, 0x00001848, 0xffffffff, 0x38404242, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x30323436, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x34363840, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x30303032, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x36384042, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x34363840, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x42424242, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x34363840, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x34363840, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x42423032, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x38404242, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x30323436, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x34363840, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x30303032, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x36384042, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x34363840, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x42424242, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x34363840, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x42423032, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x38404242, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x30323436, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x34363840, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x30303032, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x36384042, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x34363840, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x42424242, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x34363840, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x34363840, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x42423032, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x38404242, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x30323436, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x34363840, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x30303032, + 1, 2, 0, 0x00001824, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001828, 0xffffffff, 0x36384042, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001830, 0xffffffff, 0x34363840, + 1, 2, 1, 0x00001834, 0xffffffff, 0x42424242, + 1, 2, 1, 0x00001838, 0xffffffff, 0x34363840, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001840, 0xffffffff, 0x34363840, + 1, 2, 0, 0x00001844, 0xffffffff, 0x42423032, + 1, 2, 1, 0x00001848, 0xffffffff, 0x38404242, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x30323436, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x34363840, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x30303032, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x36384042, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x34363840, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x42424242, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x34363840, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x34363840, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x42423032, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x38404242, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x30323436, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x34363840, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x30303032 +}; +const u32 array_mp_8814a_phy_reg_pg_type11_len = sizeof(array_mp_8814a_phy_reg_pg_type11) / sizeof(u32); + +const u32 array_mp_8814a_phy_reg_pg_type2[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 0, 2, 0, 0x00001820, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 0, 2, 1, 0x00001834, 0xffffffff, 0x32323232, + 0, 2, 1, 0x00001838, 0xffffffff, 0x26283032, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 0, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 0, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 1, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 1, 2, 1, 0x00001834, 0xffffffff, 0x32323232, + 1, 2, 1, 0x00001838, 0xffffffff, 0x26283032, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 1, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 1, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222 +}; +const u32 array_mp_8814a_phy_reg_pg_type2_len = sizeof(array_mp_8814a_phy_reg_pg_type2) / sizeof(u32); + +const u32 array_mp_8814a_phy_reg_pg_type3[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x48484848, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x46464646, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x44464646, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x46464646, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x42444646, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x46464646, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x42444646, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x46464646, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x42444646, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x46464646, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x42444646, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x46463840, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x46464646, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x38404244, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x46464646, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x42444646, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x38383840, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x48484848, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x46464646, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x44464646, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x46464646, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x42444646, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x46464646, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x42444646, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x46464646, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x42444646, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x46464646, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x42444646, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x46463840, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x46464646, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x38404244, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x46464646, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x42444646, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x38383840, + 0, 2, 0, 0x00001820, 0xffffffff, 0x48484848, + 0, 2, 0, 0x00001824, 0xffffffff, 0x46464646, + 0, 2, 0, 0x00001828, 0xffffffff, 0x44464646, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x46464646, + 0, 2, 0, 0x00001830, 0xffffffff, 0x42444646, + 0, 2, 1, 0x00001834, 0xffffffff, 0x46464646, + 0, 2, 1, 0x00001838, 0xffffffff, 0x42444646, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x46464646, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x42444646, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x46464646, + 0, 2, 0, 0x00001840, 0xffffffff, 0x42444646, + 0, 2, 0, 0x00001844, 0xffffffff, 0x46463840, + 0, 2, 1, 0x00001848, 0xffffffff, 0x46464646, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x38404244, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x46464646, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x42444646, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x38383840, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x48484848, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x46464646, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x44464646, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x46464646, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x42444646, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x46464646, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x42444646, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x46464646, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x42444646, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x46464646, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x42444646, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x46463840, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x46464646, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x38404244, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x46464646, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x42444646, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x38383840, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x44464646, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x42444646, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x46464646, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x42444646, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x46464646, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x42444646, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x42444646, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x46463840, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x46464646, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x38404244, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x46464646, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x42444646, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x38383840, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x44464646, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x42444646, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x46464646, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x42444646, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x46464646, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x42444646, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x42444646, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x46463840, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x46464646, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x38404244, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x46464646, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x42444646, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x38383840, + 1, 2, 0, 0x00001824, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001828, 0xffffffff, 0x44464646, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001830, 0xffffffff, 0x42444646, + 1, 2, 1, 0x00001834, 0xffffffff, 0x46464646, + 1, 2, 1, 0x00001838, 0xffffffff, 0x42444646, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x46464646, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x42444646, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001840, 0xffffffff, 0x42444646, + 1, 2, 0, 0x00001844, 0xffffffff, 0x46463840, + 1, 2, 1, 0x00001848, 0xffffffff, 0x46464646, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x38404244, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x46464646, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x42444646, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x38383840, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x44464646, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x42444646, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x46464646, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x42444646, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x46464646, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x42444646, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x42444646, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x46463840, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x46464646, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x38404244, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x46464646, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x42444646, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x38383840 +}; +const u32 array_mp_8814a_phy_reg_pg_type3_len = sizeof(array_mp_8814a_phy_reg_pg_type3) / sizeof(u32); + +const u32 array_mp_8814a_phy_reg_pg_type4[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x36384042, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x34363840, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x42424242, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x34363840, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x34363840, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x42423032, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x38404242, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x30323436, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x34363840, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x30303032, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x36384042, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x34363840, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x42424242, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x34363840, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x34363840, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x42423032, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x38404242, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x30323436, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x34363840, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x30303032, + 0, 2, 0, 0x00001820, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001824, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001828, 0xffffffff, 0x36384042, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001830, 0xffffffff, 0x34363840, + 0, 2, 1, 0x00001834, 0xffffffff, 0x42424242, + 0, 2, 1, 0x00001838, 0xffffffff, 0x34363840, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001840, 0xffffffff, 0x34363840, + 0, 2, 0, 0x00001844, 0xffffffff, 0x42423032, + 0, 2, 1, 0x00001848, 0xffffffff, 0x38404242, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x30323436, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x34363840, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x30303032, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x36384042, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x34363840, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x42424242, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x34363840, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x34363840, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x42423032, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x38404242, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x30323436, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x34363840, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x30303032, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x36384042, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x34363840, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x42424242, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x34363840, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x42423032, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x38404242, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x30323436, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x34363840, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x30303032, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x36384042, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x34363840, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x42424242, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x34363840, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x34363840, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x42423032, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x38404242, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x30323436, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x34363840, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x30303032, + 1, 2, 0, 0x00001824, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001828, 0xffffffff, 0x36384042, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001830, 0xffffffff, 0x34363840, + 1, 2, 1, 0x00001834, 0xffffffff, 0x42424242, + 1, 2, 1, 0x00001838, 0xffffffff, 0x34363840, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001840, 0xffffffff, 0x34363840, + 1, 2, 0, 0x00001844, 0xffffffff, 0x42423032, + 1, 2, 1, 0x00001848, 0xffffffff, 0x38404242, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x30323436, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x34363840, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x30303032, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x36384042, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x34363840, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x42424242, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x34363840, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x34363840, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x42423032, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x38404242, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x30323436, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x34363840, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x30303032 +}; +const u32 array_mp_8814a_phy_reg_pg_type4_len = sizeof(array_mp_8814a_phy_reg_pg_type4) / sizeof(u32); + +const u32 array_mp_8814a_phy_reg_pg_type5[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x48484848, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x46464646, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x44464646, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x46464646, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x42444646, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x44444444, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x40424444, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x38404242, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x46464646, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x42444646, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x44444040, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x44444444, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x38384042, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x38404242, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20203636, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x48484848, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x46464646, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x44464646, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x46464646, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x42444646, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x44444444, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x40424444, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x38404242, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x46464646, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x42444646, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x44444040, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x44444444, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x38384042, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x38404242, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20203636, + 0, 2, 0, 0x00001820, 0xffffffff, 0x48484848, + 0, 2, 0, 0x00001824, 0xffffffff, 0x46464646, + 0, 2, 0, 0x00001828, 0xffffffff, 0x44464646, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x46464646, + 0, 2, 0, 0x00001830, 0xffffffff, 0x42444646, + 0, 2, 1, 0x00001834, 0xffffffff, 0x44444444, + 0, 2, 1, 0x00001838, 0xffffffff, 0x40424444, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x38404242, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x46464646, + 0, 2, 0, 0x00001840, 0xffffffff, 0x42444646, + 0, 2, 0, 0x00001844, 0xffffffff, 0x44444040, + 0, 2, 1, 0x00001848, 0xffffffff, 0x44444444, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x38384042, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x38404242, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20203636, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x48484848, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x46464646, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x44464646, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x46464646, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x42444646, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x44444444, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x40424444, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x38404242, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x46464646, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x42444646, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x44444040, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x44444444, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x38384042, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x38404242, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20203636, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x44464646, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x42444646, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x44444444, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x40424444, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x38404242, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x42444646, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x44443840, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x44444444, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x36384042, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x38404242, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x20203436, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x44464646, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x42444646, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x44444444, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x40424444, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x38404242, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x42444646, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x44443840, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x44444444, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x36384042, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x38404242, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x20203436, + 1, 2, 0, 0x00001824, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001828, 0xffffffff, 0x44464646, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001830, 0xffffffff, 0x42444646, + 1, 2, 1, 0x00001834, 0xffffffff, 0x44444444, + 1, 2, 1, 0x00001838, 0xffffffff, 0x40424444, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x38404242, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001840, 0xffffffff, 0x42444646, + 1, 2, 0, 0x00001844, 0xffffffff, 0x44443840, + 1, 2, 1, 0x00001848, 0xffffffff, 0x44444444, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x36384042, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x38404242, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x20203436, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x44464646, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x42444646, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x44444444, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x40424444, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x38404242, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x42444646, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x44443840, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x44444444, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x36384042, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x38404242, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x20203436 +}; +const u32 array_mp_8814a_phy_reg_pg_type5_len = sizeof(array_mp_8814a_phy_reg_pg_type5) / sizeof(u32); + +const u32 array_mp_8814a_phy_reg_pg_type6[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x28303232, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x26283032, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x30303030, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x28282828, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x22242628, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x26283032, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x30302224, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x28303030, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x20222426, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x28282828, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x22242628, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x18202020, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x28303232, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x26283032, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x30303030, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x28282828, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x22242628, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x26283032, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x30302224, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x28303030, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x20222426, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x28282828, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x22242628, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x18202020, + 0, 2, 0, 0x00001820, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001824, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001828, 0xffffffff, 0x28303232, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001830, 0xffffffff, 0x26283032, + 0, 2, 1, 0x00001834, 0xffffffff, 0x30303030, + 0, 2, 1, 0x00001838, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x28282828, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x22242628, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001840, 0xffffffff, 0x26283032, + 0, 2, 0, 0x00001844, 0xffffffff, 0x30302224, + 0, 2, 1, 0x00001848, 0xffffffff, 0x28303030, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x20222426, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x28282828, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x22242628, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x18202020, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x28303232, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x26283032, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x30303030, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x28282828, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x22242628, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x26283032, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x30302224, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x28303030, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x20222426, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x28282828, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x22242628, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x18202020, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x32323232, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x28303232, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x32323232, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x26283032, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x30303030, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x24262830, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x28282828, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x22242628, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x32323232, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x26283032, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x30302224, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x28303030, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x20222426, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x28282828, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x22242628, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x18202020, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x32323232, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x28303232, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x32323232, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x26283032, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x30303030, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x24262830, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x28282828, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x22242628, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x32323232, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x26283032, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x30302224, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x28303030, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x20222426, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x28282828, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x22242628, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x18202020, + 1, 2, 0, 0x00001824, 0xffffffff, 0x32323232, + 1, 2, 0, 0x00001828, 0xffffffff, 0x28303232, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x32323232, + 1, 2, 0, 0x00001830, 0xffffffff, 0x26283032, + 1, 2, 1, 0x00001834, 0xffffffff, 0x30303030, + 1, 2, 1, 0x00001838, 0xffffffff, 0x24262830, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x28282828, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x22242628, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x32323232, + 1, 2, 0, 0x00001840, 0xffffffff, 0x26283032, + 1, 2, 0, 0x00001844, 0xffffffff, 0x30302224, + 1, 2, 1, 0x00001848, 0xffffffff, 0x28303030, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x20222426, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x28282828, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x22242628, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x18202020, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x32323232, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x28303232, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x32323232, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x26283032, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x30303030, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x24262830, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x28282828, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x22242628, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x32323232, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x26283032, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x30302224, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x28303030, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x20222426, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x28282828, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x22242628, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x18202020 +}; +const u32 array_mp_8814a_phy_reg_pg_type6_len = sizeof(array_mp_8814a_phy_reg_pg_type6) / sizeof(u32); + +const u32 array_mp_8814a_phy_reg_pg_type7[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x34343434, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x28303234, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x34343434, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x34342426, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x32343434, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x34343434, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x28303234, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x24263434, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x34343434, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x28303234, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x34343434, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x34342426, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x32343434, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x34343434, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x28303234, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x24263434, + 0, 2, 0, 0x00001820, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 0, 2, 1, 0x00001834, 0xffffffff, 0x34343434, + 0, 2, 1, 0x00001838, 0xffffffff, 0x28303234, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x34343434, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x28303234, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 0, 2, 0, 0x00001844, 0xffffffff, 0x34342426, + 0, 2, 1, 0x00001848, 0xffffffff, 0x32343434, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x34343434, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x28303234, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x24263434, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x34343434, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x28303234, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x34343434, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x28303234, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x34342426, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x32343434, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x34343434, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x28303234, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x24263434, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x34343434, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x28303234, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x34343434, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x28303234, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x34342426, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x32343434, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x24262830, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x34343434, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x28303234, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x24263434, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x34343434, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x28303234, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x34343434, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x28303234, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x34342426, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x32343434, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x24262830, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x34343434, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x28303234, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x24263434, + 1, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 1, 2, 1, 0x00001834, 0xffffffff, 0x34343434, + 1, 2, 1, 0x00001838, 0xffffffff, 0x28303234, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x34343434, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x28303234, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 1, 2, 0, 0x00001844, 0xffffffff, 0x34342426, + 1, 2, 1, 0x00001848, 0xffffffff, 0x32343434, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x24262830, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x34343434, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x28303234, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x24263434, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x34343434, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x28303234, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x34343434, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x28303234, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x34342426, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x32343434, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x24262830, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x34343434, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x28303234, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x24263434 +}; +const u32 array_mp_8814a_phy_reg_pg_type7_len = sizeof(array_mp_8814a_phy_reg_pg_type7) / sizeof(u32); + +const u32 array_mp_8814a_phy_reg_pg_type8[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x43434343, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x43434343, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x35373941, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x43434343, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x33353739, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x43434343, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x31333537, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x43434343, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x29313335, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x43434343, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x43434343, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x35373941, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x41434343, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x33353739, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x39414141, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x31333537, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x37393939, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x29313335, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 0, 2, 0, 0x00001820, 0xffffffff, 0x43434343, + 0, 2, 0, 0x00001824, 0xffffffff, 0x43434343, + 0, 2, 0, 0x00001828, 0xffffffff, 0x35373941, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x41434343, + 0, 2, 0, 0x00001830, 0xffffffff, 0x33353739, + 0, 2, 1, 0x00001834, 0xffffffff, 0x39414141, + 0, 2, 1, 0x00001838, 0xffffffff, 0x31333537, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x37393939, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x29313335, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 0, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 0, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x43434343, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x43434343, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x35373941, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x41434343, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x33353739, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x39414141, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x31333537, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x37393939, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x29313335, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x39414345, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x38404244, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x46464646, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x36384042, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x46464646, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x38404244, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x46463738, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x42444646, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x35373840, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x46464646, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x37394143, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x33333335, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x39414345, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x38404244, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x46464646, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x36384042, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x46464646, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x38404244, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x46463738, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x42444646, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x35373840, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x46464646, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x37394143, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x33333335, + 1, 2, 0, 0x00001824, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001828, 0xffffffff, 0x39414345, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001830, 0xffffffff, 0x38404244, + 1, 2, 1, 0x00001834, 0xffffffff, 0x46464646, + 1, 2, 1, 0x00001838, 0xffffffff, 0x36384042, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x46464646, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001840, 0xffffffff, 0x38404244, + 1, 2, 0, 0x00001844, 0xffffffff, 0x46463738, + 1, 2, 1, 0x00001848, 0xffffffff, 0x42444646, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x35373840, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x46464646, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x37394143, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x33333335, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x39414345, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x38404244, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x46464646, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x36384042, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x46464646, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x38404244, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x46463738, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x42444646, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x35373840, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x46464646, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x37394143, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x33333335 +}; +const u32 array_mp_8814a_phy_reg_pg_type8_len = sizeof(array_mp_8814a_phy_reg_pg_type8) / sizeof(u32); + +const u32 array_mp_8814a_phy_reg_pg_type9[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x44444444, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x44444444, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x34363840, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x44444444, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x32343638, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x44444444, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x30323436, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x44444444, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x44444444, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x44444444, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x34363840, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x40444444, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x32343638, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x38404040, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x30323436, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x36383838, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 0, 2, 0, 0x00001820, 0xffffffff, 0x44444444, + 0, 2, 0, 0x00001824, 0xffffffff, 0x44444444, + 0, 2, 0, 0x00001828, 0xffffffff, 0x34363840, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x40444444, + 0, 2, 0, 0x00001830, 0xffffffff, 0x32343638, + 0, 2, 1, 0x00001834, 0xffffffff, 0x38404040, + 0, 2, 1, 0x00001838, 0xffffffff, 0x30323436, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x36383838, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x28303234, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 0, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 0, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x28303234, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x43434343, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x41434343, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x39414141, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x37393939, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222, + 1, 0, 0, 0x00001a20, 0xffffffff, 0x44444444, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x39414345, + 1, 0, 0, 0x00001a24, 0xffffffff, 0x44444444, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x38404244, + 1, 0, 0, 0x00001a28, 0xffffffff, 0x34363840, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x36384042, + 1, 0, 0, 0x00001a2c, 0xffffffff, 0x40444444, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00001a30, 0xffffffff, 0x32343638, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x38404244, + 1, 0, 1, 0x00001a34, 0xffffffff, 0x38404040, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x42444646, + 1, 0, 1, 0x00001a38, 0xffffffff, 0x30323436, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x46464646, + 1, 0, 2, 0x00001ad8, 0xffffffff, 0x36383838, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x33333335, + 1, 1, 0, 0x00000c28, 0xffffffff, 0x30323436, + 1, 1, 0, 0x00000c2c, 0xffffffff, 0x36363636, + 1, 1, 0, 0x00000c30, 0xffffffff, 0x29313335, + 1, 1, 1, 0x00000c34, 0xffffffff, 0x35353535, + 1, 1, 1, 0x00000c38, 0xffffffff, 0x28303234, + 1, 1, 2, 0x00000cd8, 0xffffffff, 0x34343434, + 1, 1, 2, 0x00000cdc, 0xffffffff, 0x27293133, + 1, 1, 0, 0x00000c3c, 0xffffffff, 0x36363636, + 1, 1, 0, 0x00000c40, 0xffffffff, 0x29313335, + 1, 1, 0, 0x00000c44, 0xffffffff, 0x35352426, + 1, 1, 1, 0x00000c48, 0xffffffff, 0x32343535, + 1, 1, 1, 0x00000c4c, 0xffffffff, 0x23252830, + 1, 1, 2, 0x00000ce0, 0xffffffff, 0x34343434, + 1, 1, 2, 0x00000ce4, 0xffffffff, 0x27293133, + 1, 1, 2, 0x00000ce8, 0x0000ffff, 0x22222224, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x33333335, + 1, 2, 0, 0x00000e28, 0xffffffff, 0x30323436, + 1, 2, 0, 0x00000e2c, 0xffffffff, 0x36363636, + 1, 2, 0, 0x00000e30, 0xffffffff, 0x29313335, + 1, 2, 1, 0x00000e34, 0xffffffff, 0x35353535, + 1, 2, 1, 0x00000e38, 0xffffffff, 0x28303234, + 1, 2, 2, 0x00000ed8, 0xffffffff, 0x34343434, + 1, 2, 2, 0x00000edc, 0xffffffff, 0x27293133, + 1, 2, 0, 0x00000e3c, 0xffffffff, 0x36363636, + 1, 2, 0, 0x00000e40, 0xffffffff, 0x29313335, + 1, 2, 0, 0x00000e44, 0xffffffff, 0x35352426, + 1, 2, 1, 0x00000e48, 0xffffffff, 0x32343535, + 1, 2, 1, 0x00000e4c, 0xffffffff, 0x23252830, + 1, 2, 2, 0x00000ee0, 0xffffffff, 0x34343434, + 1, 2, 2, 0x00000ee4, 0xffffffff, 0x27293133, + 1, 2, 2, 0x00000ee8, 0x0000ffff, 0x22222224, + 1, 2, 0, 0x00000c24, 0xffffffff, 0x36363636, + 1, 3, 0, 0x00001828, 0xffffffff, 0x30323436, + 1, 3, 0, 0x0000182c, 0xffffffff, 0x36363636, + 1, 3, 0, 0x00001830, 0xffffffff, 0x29313335, + 1, 3, 1, 0x00001834, 0xffffffff, 0x35353535, + 1, 3, 1, 0x00001838, 0xffffffff, 0x28303234, + 1, 3, 2, 0x000018d8, 0xffffffff, 0x34343434, + 1, 3, 2, 0x000018dc, 0xffffffff, 0x27293133, + 1, 3, 0, 0x0000183c, 0xffffffff, 0x36363636, + 1, 3, 0, 0x00001840, 0xffffffff, 0x29313335, + 1, 3, 0, 0x00001844, 0xffffffff, 0x35352426, + 1, 3, 1, 0x00001848, 0xffffffff, 0x32343535, + 1, 3, 1, 0x0000184c, 0xffffffff, 0x23252830, + 1, 3, 2, 0x000018e0, 0xffffffff, 0x34343434, + 1, 3, 2, 0x000018e4, 0xffffffff, 0x27293133, + 1, 3, 2, 0x000018e8, 0x0000ffff, 0x22222224, + 1, 3, 0, 0x00000e24, 0xffffffff, 0x36363636 +}; +const u32 array_mp_8814a_phy_reg_pg_type9_len = sizeof(array_mp_8814a_phy_reg_pg_type9) / sizeof(u32); + +const u32 array_mp_8814a_mac_reg[] = { + 0x010, 0x0000007C, + 0x014, 0x000000DB, + 0x016, 0x00000002, + 0x073, 0x00000010, + 0x420, 0x00000080, + 0x421, 0x0000000F, + 0x428, 0x0000000A, + 0x429, 0x00000010, + 0x430, 0x00000000, + 0x431, 0x00000000, + 0x432, 0x00000000, + 0x433, 0x00000001, + 0x434, 0x00000004, + 0x435, 0x00000005, + 0x436, 0x00000007, + 0x437, 0x00000008, + 0x43C, 0x00000004, + 0x43D, 0x00000005, + 0x43E, 0x00000007, + 0x43F, 0x00000008, + 0x440, 0x0000005D, + 0x441, 0x00000001, + 0x442, 0x00000000, + 0x444, 0x00000010, + 0x445, 0x000000F0, + 0x446, 0x00000001, + 0x447, 0x000000FE, + 0x448, 0x00000000, + 0x449, 0x00000000, + 0x44A, 0x00000000, + 0x44B, 0x00000040, + 0x44C, 0x00000010, + 0x44D, 0x000000F0, + 0x44E, 0x0000003F, + 0x44F, 0x00000000, + 0x450, 0x00000000, + 0x451, 0x00000000, + 0x452, 0x00000000, + 0x453, 0x00000040, + 0x45E, 0x00000004, + 0x49C, 0x00000010, + 0x49D, 0x000000F0, + 0x49E, 0x00000000, + 0x49F, 0x00000006, + 0x4A0, 0x000000E0, + 0x4A1, 0x00000003, + 0x4A2, 0x00000000, + 0x4A3, 0x00000040, + 0x4A4, 0x00000015, + 0x4A5, 0x000000F0, + 0x4A6, 0x00000000, + 0x4A7, 0x00000006, + 0x4A8, 0x000000E0, + 0x4A9, 0x00000000, + 0x4AA, 0x00000000, + 0x4AB, 0x00000000, + 0x7DA, 0x00000008, + 0x1448, 0x00000006, + 0x144A, 0x00000006, + 0x144C, 0x00000006, + 0x144E, 0x00000006, + 0x4C8, 0x000000FF, + 0x4C9, 0x00000008, + 0x4CA, 0x0000003C, + 0x4CB, 0x0000003C, + 0x4CC, 0x000000FF, + 0x4CD, 0x000000FF, + 0x4CE, 0x00000001, + 0x4CF, 0x00000008, + 0x500, 0x00000026, + 0x501, 0x000000A2, + 0x502, 0x0000002F, + 0x503, 0x00000000, + 0x504, 0x00000028, + 0x505, 0x000000A3, + 0x506, 0x0000005E, + 0x507, 0x00000000, + 0x508, 0x0000002B, + 0x509, 0x000000A4, + 0x50A, 0x0000005E, + 0x50B, 0x00000000, + 0x50C, 0x0000004F, + 0x50D, 0x000000A4, + 0x50E, 0x00000000, + 0x50F, 0x00000000, + 0x512, 0x0000001C, + 0x514, 0x0000000A, + 0x516, 0x0000000A, + 0x521, 0x0000002F, + 0x525, 0x00000047, + 0x550, 0x00000010, + 0x551, 0x00000010, + 0x559, 0x00000002, + 0x55C, 0x00000064, + 0x55D, 0x000000FF, + 0x577, 0x00000003, + 0x5BE, 0x00000064, + 0x604, 0x00000001, + 0x605, 0x00000030, + 0x607, 0x00000001, + 0x608, 0x0000000E, + 0x609, 0x0000002A, + 0x60A, 0x00000000, + 0x60C, 0x00000018, + 0x60D, 0x00000050, + 0x6A0, 0x000000FF, + 0x6A1, 0x000000FF, + 0x6A2, 0x000000FF, + 0x6A3, 0x000000FF, + 0x6A4, 0x000000FF, + 0x6A5, 0x000000FF, + 0x6DE, 0x00000084, + 0x620, 0x000000FF, + 0x621, 0x000000FF, + 0x622, 0x000000FF, + 0x623, 0x000000FF, + 0x624, 0x000000FF, + 0x625, 0x000000FF, + 0x626, 0x000000FF, + 0x627, 0x000000FF, + 0x638, 0x00000064, + 0x63C, 0x0000000A, + 0x63D, 0x0000000A, + 0x63E, 0x0000000E, + 0x63F, 0x0000000E, + 0x640, 0x00000040, + 0x642, 0x00000040, + 0x643, 0x00000000, + 0x652, 0x000000C8, + 0x66E, 0x00000005, + 0x700, 0x00000021, + 0x701, 0x00000043, + 0x702, 0x00000065, + 0x703, 0x00000087, + 0x708, 0x00000021, + 0x709, 0x00000043, + 0x70A, 0x00000065, + 0x70B, 0x00000087, + 0x718, 0x00000040, + 0x7D5, 0x000000BC, + 0x7D8, 0x00000028, + 0x7D9, 0x00000000, + 0x7DA, 0x0000000B, + +}; +const u32 array_mp_8814a_mac_reg_len = sizeof(array_mp_8814a_mac_reg) / sizeof(u32); + +const u32 array_mp_8814a_radioa[] = { + 0x018, 0x00013124, + 0x040, 0x00000C00, + 0x058, 0x00000F98, + 0x07F, 0x00068004, + 0x0B0, 0x000FFFFE, + 0x0B1, 0x0003FF48, + 0x0B2, 0x0006AA3F, + 0x0B3, 0x000FFC9A, + 0x0B4, 0x0000A78F, + 0x0B5, 0x00000A3F, + 0x0B6, 0x0000C09C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0B7, 0x00030008, + 0xA0000000, 0x00000000, + 0x0B7, 0x0003000C, + 0xB0000000, 0x00000000, + 0x0B8, 0x0007400E, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0xA0000000, 0x00000000, + 0x0B9, 0x000FBF50, + 0xB0000000, 0x00000000, + 0x0BA, 0x00050780, + 0x0BB, 0x00000000, + 0x0BC, 0x00040009, + 0x0BD, 0x00000000, + 0x0BE, 0x00000000, + 0x0BF, 0x00000000, + 0x0EF, 0x00020000, + 0x03E, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00030000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00030000, + 0xA0000000, 0x00000000, + 0x03F, 0x00030000, + 0xB0000000, 0x00000000, + 0x03E, 0x00020000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00040000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00040000, + 0xA0000000, 0x00000000, + 0x03F, 0x00040000, + 0xB0000000, 0x00000000, + 0x03E, 0x00040000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00030000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00030000, + 0xA0000000, 0x00000000, + 0x03F, 0x00030000, + 0xB0000000, 0x00000000, + 0x03E, 0x00060000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00030000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03F, 0x00030000, + 0xA0000000, 0x00000000, + 0x03F, 0x00030000, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x00010000, + 0x03E, 0x00000000, + 0x03F, 0x00006800, + 0x03E, 0x00000080, + 0x03F, 0x00006000, + 0x03E, 0x00000100, + 0x03F, 0x00004800, + 0x03E, 0x00000180, + 0x03F, 0x00004000, + 0x03E, 0x00000200, + 0x03F, 0x00004000, + 0x03E, 0x00000280, + 0x03F, 0x00002800, + 0x03E, 0x00000300, + 0x03F, 0x00002800, + 0x03E, 0x00000380, + 0x03F, 0x00002000, + 0x0EF, 0x00000000, + 0x0EF, 0x00040000, + 0x03E, 0x00000000, + 0x03F, 0x000000BC, + 0x03E, 0x00000040, + 0x03F, 0x00000053, + 0x03E, 0x00000050, + 0x03F, 0x00000050, + 0x03E, 0x00000060, + 0x03F, 0x00000050, + 0x0EF, 0x00000000, + 0x0EF, 0x00000400, + 0x03E, 0x00000006, + 0x041, 0x000EE080, + 0x03E, 0x00000008, + 0x041, 0x000EE0C0, + 0x03E, 0x0000000A, + 0x041, 0x000EE100, + 0x03E, 0x0000000C, + 0x041, 0x000EE100, + 0x0EF, 0x00000000, + 0x018, 0x00000006, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0xA0000000, 0x00000000, + 0x086, 0x000E4B58, + 0x087, 0x00049F80, + 0xB0000000, 0x00000000, + 0x0DF, 0x00000008, + 0x0EF, 0x00002000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x000179C3, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x000179C3, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x000179C3, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x000179C3, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x000179C3, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x000179C3, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x000179C3, + 0xA0000000, 0x00000000, + 0x03B, 0x0003F258, + 0x03B, 0x00030A58, + 0x03B, 0x0002FA58, + 0x03B, 0x00022590, + 0x03B, 0x0001FA50, + 0x03B, 0x00010248, + 0x03B, 0x00008240, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000100, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0000ADF6, + 0x034, 0x00009DF3, + 0x034, 0x00008DF0, + 0x034, 0x00007DED, + 0x034, 0x00006DEA, + 0x034, 0x00005CED, + 0x034, 0x00004CEA, + 0x034, 0x000034EA, + 0x034, 0x000024E7, + 0x034, 0x0000146A, + 0x034, 0x0000006B, + 0xB0000000, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0008ADF6, + 0x034, 0x00089DF3, + 0x034, 0x00088DF0, + 0x034, 0x00087DED, + 0x034, 0x00086DEA, + 0x034, 0x00085CED, + 0x034, 0x00084CEA, + 0x034, 0x000834EA, + 0x034, 0x000824E7, + 0x034, 0x0008146A, + 0x034, 0x0008006B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x000020A2, + 0x0DF, 0x00000080, + 0x035, 0x00000192, + 0x035, 0x00008192, + 0x035, 0x00010192, + 0x036, 0x00000024, + 0x036, 0x00008024, + 0x036, 0x00010024, + 0x036, 0x00018024, + 0x0EF, 0x00000000, + 0x051, 0x00000C21, + 0x052, 0x000006D9, + 0x053, 0x000FC649, + 0x054, 0x0000017E, + 0x018, 0x0001012A, + 0x081, 0x0007FC00, + 0x089, 0x00050110, + 0x08A, 0x00043E50, + 0x08B, 0x0002E180, + 0x08C, 0x00093C3C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0xA0000000, 0x00000000, + 0x085, 0x000F8000, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0xA0000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0xB0000000, 0x00000000, + 0x0EF, 0x00001000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0xA0000000, 0x00000000, + 0x03C, 0x00028000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00030023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00028623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00021633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0001C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00010293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00009593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0000118B, + 0xA0000000, 0x00000000, + 0x03B, 0x0000078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x000AC000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00040000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0xA0000000, 0x00000000, + 0x03C, 0x0004C000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00070023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00068623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00061633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0005C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00050293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00049593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0004138B, + 0xA0000000, 0x00000000, + 0x03B, 0x0004078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0008C000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00060000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0xA0000000, 0x00000000, + 0x03C, 0x00004000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B0023, + 0x80000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0xA0000000, 0x00000000, + 0x03C, 0x00020000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A8623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A1633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0009C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00090293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00089593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0008118B, + 0xA0000000, 0x00000000, + 0x03B, 0x0008078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x00000800, + 0x03B, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000801, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0xA0000000, 0x00000000, + 0x03A, 0x00000803, + 0xB0000000, 0x00000000, + 0x03B, 0x00040000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001801, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000003, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000003, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001001, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0xA0000000, 0x00000000, + 0x03A, 0x00001000, + 0xB0000000, 0x00000000, + 0x03B, 0x00080000, + 0x80000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001802, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000800, + 0xA0000000, 0x00000000, + 0x03A, 0x00001002, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x00013124, + 0x0EF, 0x00000100, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A1AD, + 0x034, 0x000491AA, + 0x034, 0x000481A7, + 0x034, 0x000470AA, + 0x034, 0x000460A7, + 0x034, 0x00045049, + 0x034, 0x00044046, + 0x034, 0x00043026, + 0x034, 0x00042009, + 0x034, 0x00041006, + 0x034, 0x00040003, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AF, + 0x034, 0x000483AB, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004406A, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AF, + 0x034, 0x000483AB, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004406A, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AF, + 0x034, 0x000483AB, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004406A, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AF, + 0x034, 0x000483AB, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004406A, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3F5, + 0x034, 0x000493F2, + 0x034, 0x000483B0, + 0x034, 0x00047370, + 0x034, 0x0004636D, + 0x034, 0x0004536A, + 0x034, 0x00044349, + 0x034, 0x0004316A, + 0x034, 0x00042167, + 0x034, 0x00041129, + 0x034, 0x00040049, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AF, + 0x034, 0x000483AB, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004406A, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AF, + 0x034, 0x000483AB, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004406A, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0xA0000000, 0x00000000, + 0x034, 0x0004AFF1, + 0x034, 0x00049FEE, + 0x034, 0x00048FEB, + 0x034, 0x00047FE8, + 0x034, 0x00046DEA, + 0x034, 0x00045DE7, + 0x034, 0x00044CEA, + 0x034, 0x00043CE7, + 0x034, 0x00042C69, + 0x034, 0x00041C66, + 0x034, 0x00040C28, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A1AD, + 0x034, 0x000291AA, + 0x034, 0x000281A7, + 0x034, 0x000270AA, + 0x034, 0x000260A7, + 0x034, 0x00025049, + 0x034, 0x00024046, + 0x034, 0x00023026, + 0x034, 0x00022009, + 0x034, 0x00021006, + 0x034, 0x00020003, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3F5, + 0x034, 0x000293F2, + 0x034, 0x000282F1, + 0x034, 0x000272B0, + 0x034, 0x000262AD, + 0x034, 0x000252AA, + 0x034, 0x000242A7, + 0x034, 0x000230EC, + 0x034, 0x000220E9, + 0x034, 0x0002106A, + 0x034, 0x00020067, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0xA0000000, 0x00000000, + 0x034, 0x0002AFF1, + 0x034, 0x00029FEE, + 0x034, 0x00028FEB, + 0x034, 0x00027FE8, + 0x034, 0x00026DEA, + 0x034, 0x00025DE7, + 0x034, 0x00024CEA, + 0x034, 0x00023CE7, + 0x034, 0x00022C69, + 0x034, 0x00021C66, + 0x034, 0x00020C28, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EC, + 0x034, 0x0000938C, + 0x034, 0x000081AD, + 0x034, 0x000071AA, + 0x034, 0x000061A7, + 0x034, 0x000050AA, + 0x034, 0x000040A7, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x0000100C, + 0x034, 0x00000009, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3F4, + 0x034, 0x000093F1, + 0x034, 0x000082B1, + 0x034, 0x000071D1, + 0x034, 0x000061CE, + 0x034, 0x000051CB, + 0x034, 0x000041C8, + 0x034, 0x000030CB, + 0x034, 0x000020C8, + 0x034, 0x00001087, + 0x034, 0x00000084, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0xA0000000, 0x00000000, + 0x034, 0x0000AFF1, + 0x034, 0x00009FEE, + 0x034, 0x00008FEB, + 0x034, 0x00007FE8, + 0x034, 0x00006DEA, + 0x034, 0x00005DE7, + 0x034, 0x00004CEA, + 0x034, 0x00003CE7, + 0x034, 0x00002C69, + 0x034, 0x00001C66, + 0x034, 0x00000C28, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA1AD, + 0x034, 0x000C91AA, + 0x034, 0x000C81A7, + 0x034, 0x000C70AA, + 0x034, 0x000C60A7, + 0x034, 0x000C5049, + 0x034, 0x000C4046, + 0x034, 0x000C3026, + 0x034, 0x000C2009, + 0x034, 0x000C1006, + 0x034, 0x000C0003, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AF, + 0x034, 0x000C83AB, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C406A, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AF, + 0x034, 0x000C83AB, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C406A, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AF, + 0x034, 0x000C83AB, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C406A, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AF, + 0x034, 0x000C83AB, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C406A, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3F5, + 0x034, 0x000C93F2, + 0x034, 0x000C83B0, + 0x034, 0x000C7370, + 0x034, 0x000C636D, + 0x034, 0x000C536A, + 0x034, 0x000C4349, + 0x034, 0x000C316A, + 0x034, 0x000C2167, + 0x034, 0x000C1129, + 0x034, 0x000C0049, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AF, + 0x034, 0x000C83AB, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C406A, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AF, + 0x034, 0x000C83AB, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C406A, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0xA0000000, 0x00000000, + 0x034, 0x000CA794, + 0x034, 0x000C9791, + 0x034, 0x000C878E, + 0x034, 0x000C778B, + 0x034, 0x000C658D, + 0x034, 0x000C558A, + 0x034, 0x000C448D, + 0x034, 0x000C348A, + 0x034, 0x000C244C, + 0x034, 0x000C1449, + 0x034, 0x000C042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA1AD, + 0x034, 0x000A91AA, + 0x034, 0x000A81A7, + 0x034, 0x000A70AA, + 0x034, 0x000A60A7, + 0x034, 0x000A5049, + 0x034, 0x000A4046, + 0x034, 0x000A3026, + 0x034, 0x000A2009, + 0x034, 0x000A1006, + 0x034, 0x000A0003, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3F5, + 0x034, 0x000A93F2, + 0x034, 0x000A82F1, + 0x034, 0x000A72B0, + 0x034, 0x000A62AD, + 0x034, 0x000A52AA, + 0x034, 0x000A42A7, + 0x034, 0x000A30EC, + 0x034, 0x000A20E9, + 0x034, 0x000A106A, + 0x034, 0x000A0067, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0xA0000000, 0x00000000, + 0x034, 0x000AA794, + 0x034, 0x000A9791, + 0x034, 0x000A878E, + 0x034, 0x000A778B, + 0x034, 0x000A658D, + 0x034, 0x000A558A, + 0x034, 0x000A448D, + 0x034, 0x000A348A, + 0x034, 0x000A244C, + 0x034, 0x000A1449, + 0x034, 0x000A042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EC, + 0x034, 0x0008938C, + 0x034, 0x000881AD, + 0x034, 0x000871AA, + 0x034, 0x000861A7, + 0x034, 0x000850AA, + 0x034, 0x000840A7, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x0008100C, + 0x034, 0x00080009, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3F4, + 0x034, 0x000893F1, + 0x034, 0x000882B1, + 0x034, 0x000871D1, + 0x034, 0x000861CE, + 0x034, 0x000851CB, + 0x034, 0x000841C8, + 0x034, 0x000830CB, + 0x034, 0x000820C8, + 0x034, 0x00081087, + 0x034, 0x00080084, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0xA0000000, 0x00000000, + 0x034, 0x0008A794, + 0x034, 0x00089791, + 0x034, 0x0008878E, + 0x034, 0x0008778B, + 0x034, 0x0008658D, + 0x034, 0x0008558A, + 0x034, 0x0008448D, + 0x034, 0x0008348A, + 0x034, 0x0008244C, + 0x034, 0x00081449, + 0x034, 0x0008042B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x0DF, 0x00000001, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0xA0000000, 0x00000000, + 0x035, 0x00000747, + 0x035, 0x00008747, + 0x035, 0x00010747, + 0x035, 0x00020747, + 0x035, 0x00028747, + 0x035, 0x00030747, + 0x035, 0x00040747, + 0x035, 0x00048747, + 0x035, 0x00050747, + 0x035, 0x000805FB, + 0x035, 0x000885FB, + 0x035, 0x000905FB, + 0x035, 0x000A05FB, + 0x035, 0x000A85FB, + 0x035, 0x000B05FB, + 0x035, 0x000C05FB, + 0x035, 0x000C85FB, + 0x035, 0x000D05FB, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x0DF, 0x00000001, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000473, + 0x036, 0x00008473, + 0x036, 0x00010473, + 0x036, 0x00020473, + 0x036, 0x00028473, + 0x036, 0x00030473, + 0x036, 0x00040473, + 0x036, 0x00048473, + 0x036, 0x00050473, + 0x036, 0x00080473, + 0x036, 0x00088473, + 0x036, 0x00090473, + 0x036, 0x000A0473, + 0x036, 0x000A8473, + 0x036, 0x000B0473, + 0x036, 0x000C0473, + 0x036, 0x000C8473, + 0x036, 0x000D0473, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0xA0000000, 0x00000000, + 0x036, 0x00000473, + 0x036, 0x00008473, + 0x036, 0x00010473, + 0x036, 0x00020473, + 0x036, 0x00028473, + 0x036, 0x00030473, + 0x036, 0x00040473, + 0x036, 0x00048473, + 0x036, 0x00050473, + 0x036, 0x00080473, + 0x036, 0x00088473, + 0x036, 0x00090473, + 0x036, 0x000A0473, + 0x036, 0x000A8473, + 0x036, 0x000B0473, + 0x036, 0x000C0473, + 0x036, 0x000C8473, + 0x036, 0x000D0473, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x0EF, 0x00000004, + 0x037, 0x00000000, + 0x038, 0x00005146, + 0x037, 0x00004000, + 0x038, 0x00005146, + 0x037, 0x00008000, + 0x038, 0x00005146, + 0x037, 0x00010000, + 0x038, 0x00005146, + 0x037, 0x00014000, + 0x038, 0x00005146, + 0x037, 0x00018000, + 0x038, 0x00004D4E, + 0x037, 0x0001C000, + 0x038, 0x00004D4E, + 0x037, 0x00020000, + 0x038, 0x00004D4E, + 0x037, 0x00024000, + 0x038, 0x000071C6, + 0x037, 0x00028000, + 0x038, 0x000071C6, + 0x037, 0x0002C000, + 0x038, 0x000071C6, + 0x037, 0x00030000, + 0x038, 0x000071CE, + 0x037, 0x00034000, + 0x038, 0x000071CE, + 0x037, 0x00038000, + 0x038, 0x00005126, + 0x037, 0x0003C000, + 0x038, 0x00005126, + 0x037, 0x00040000, + 0x038, 0x00005126, + 0x037, 0x00044000, + 0x038, 0x00005126, + 0x037, 0x00048000, + 0x038, 0x00005126, + 0x037, 0x00080000, + 0x038, 0x00005ECE, + 0x037, 0x00084000, + 0x038, 0x00005ECE, + 0x037, 0x00088000, + 0x038, 0x00005ECE, + 0x037, 0x00090000, + 0x038, 0x00005ECE, + 0x037, 0x00094000, + 0x038, 0x00005ECE, + 0x037, 0x00098000, + 0x038, 0x00005ECE, + 0x037, 0x0009C000, + 0x038, 0x00005ECE, + 0x037, 0x000A0000, + 0x038, 0x00005ECE, + 0x037, 0x000A4000, + 0x038, 0x00005ECE, + 0x037, 0x000A8000, + 0x038, 0x00005ECE, + 0x037, 0x000AC000, + 0x038, 0x00005ECE, + 0x037, 0x000B0000, + 0x038, 0x00005ECE, + 0x037, 0x000B4000, + 0x038, 0x00005ECE, + 0x037, 0x000B8000, + 0x038, 0x00005ECE, + 0x037, 0x000BC000, + 0x038, 0x00005ECE, + 0x037, 0x000C0000, + 0x038, 0x00005ECE, + 0x037, 0x000C4000, + 0x038, 0x00005ECE, + 0x037, 0x000C8000, + 0x038, 0x00005ECE, + 0x0EF, 0x00000000, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000008, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x03C, 0x0000007D, + 0x03C, 0x0000047D, + 0x03C, 0x0000087D, + 0x03C, 0x0000107D, + 0x03C, 0x0000147D, + 0x03C, 0x0000187D, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x0000054A, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x0000154A, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x0000254A, + 0x03C, 0x00002821, + 0xA0000000, 0x00000000, + 0x03C, 0x0000037E, + 0x03C, 0x00000575, + 0x03C, 0x00000971, + 0x03C, 0x0000127E, + 0x03C, 0x00001575, + 0x03C, 0x00001871, + 0x03C, 0x0000217E, + 0x03C, 0x00002575, + 0x03C, 0x00002871, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x061, 0x000C0D47, + 0x062, 0x0000133C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0xA0000000, 0x00000000, + 0x063, 0x0007D0E7, + 0xB0000000, 0x00000000, + 0x064, 0x00014FEC, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0xA0000000, 0x00000000, + 0x065, 0x000933FF, + 0xB0000000, 0x00000000, + 0x066, 0x00000040, + 0x057, 0x00050000, + 0x056, 0x00051DF0, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x055, 0x00082061, + 0xA0000000, 0x00000000, + 0x055, 0x00082060, + 0xB0000000, 0x00000000, + 0x01C, 0x000739D2, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x01F, 0x0002255C, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x01F, 0x0002255C, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x01F, 0x0002255C, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x01F, 0x0002255C, + 0xA0000000, 0x00000000, + 0x01F, 0x0002255C, + 0xB0000000, 0x00000000, + 0x0B1, 0x0007FF48, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0C4, 0x00081700, + 0xA0000000, 0x00000000, + 0x0C4, 0x00083F00, + 0xB0000000, 0x00000000, + 0x018, 0x0001B126, + 0xFFE, 0x00000000, + 0xFFE, 0x00000000, + 0xFFE, 0x00000000, + 0x018, 0x00013126, + 0x018, 0x00013124, + +}; +const u32 array_mp_8814a_radioa_len = sizeof(array_mp_8814a_radioa) / sizeof(u32); + +const u32 array_mp_8814a_radiob[] = { + 0x018, 0x00013124, + 0x040, 0x00000C00, + 0x058, 0x00000F98, + 0x07F, 0x00068004, + 0x018, 0x00000006, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0xA0000000, 0x00000000, + 0x086, 0x000E4B58, + 0x087, 0x00049F80, + 0xB0000000, 0x00000000, + 0x0DF, 0x00000008, + 0x0EF, 0x00002000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017BC3, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F39B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017BC3, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017BC3, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F39B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017BC3, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017BC3, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017BC3, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017BC3, + 0xA0000000, 0x00000000, + 0x03B, 0x0003F258, + 0x03B, 0x00030A58, + 0x03B, 0x0002FA58, + 0x03B, 0x00022590, + 0x03B, 0x0001FA50, + 0x03B, 0x00010248, + 0x03B, 0x00008240, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000100, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0000ADF6, + 0x034, 0x00009DF3, + 0x034, 0x00008DF0, + 0x034, 0x00007DED, + 0x034, 0x00006DEA, + 0x034, 0x00005CED, + 0x034, 0x00004CEA, + 0x034, 0x000034EA, + 0x034, 0x000024E7, + 0x034, 0x0000146A, + 0x034, 0x0000006B, + 0xB0000000, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0008ADF6, + 0x034, 0x00089DF3, + 0x034, 0x00088DF0, + 0x034, 0x00087DED, + 0x034, 0x00086DEA, + 0x034, 0x00085CED, + 0x034, 0x00084CEA, + 0x034, 0x000834EA, + 0x034, 0x000824E7, + 0x034, 0x0008146A, + 0x034, 0x0008006B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x000020A2, + 0x0DF, 0x00000080, + 0x035, 0x00000192, + 0x035, 0x00008192, + 0x035, 0x00010192, + 0x036, 0x00000024, + 0x036, 0x00008024, + 0x036, 0x00010024, + 0x036, 0x00018024, + 0x0EF, 0x00000000, + 0x051, 0x00000C21, + 0x052, 0x000006D9, + 0x053, 0x000FC649, + 0x054, 0x0000017E, + 0x018, 0x0001012A, + 0x081, 0x0007FC00, + 0x089, 0x00050110, + 0x08A, 0x00043E50, + 0x08B, 0x0002E180, + 0x08C, 0x00093C3C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0xA0000000, 0x00000000, + 0x085, 0x000F8000, + 0xB0000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x0EF, 0x00001000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0xA0000000, 0x00000000, + 0x03C, 0x00040000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00030023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00028623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00021633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0001C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00010293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00009593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x00000F8B, + 0xA0000000, 0x00000000, + 0x03B, 0x0000078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00060000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00048000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00048000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00048000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00048000, + 0xA0000000, 0x00000000, + 0x03C, 0x00020000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00070023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00068623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00061633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0005C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00050293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00049593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x03B, 0x0004078B, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00048000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00060000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0004C000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0004C000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00048000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00004000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0xA0000000, 0x00000000, + 0x03C, 0x00020000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B0023, + 0x80000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0xA0000000, 0x00000000, + 0x03C, 0x00020000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A8623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A1633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0009C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00090293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00089593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0008138B, + 0xA0000000, 0x00000000, + 0x03B, 0x0008078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x00000800, + 0x03B, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0xA0000000, 0x00000000, + 0x03A, 0x00000803, + 0xB0000000, 0x00000000, + 0x03B, 0x00040000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000800, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000800, + 0xA0000000, 0x00000000, + 0x03A, 0x00001000, + 0xB0000000, 0x00000000, + 0x03B, 0x00080000, + 0x80000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001802, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001802, + 0xA0000000, 0x00000000, + 0x03A, 0x00001002, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x00013124, + 0x0EF, 0x00000100, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38C, + 0x034, 0x000491AD, + 0x034, 0x000481AA, + 0x034, 0x000471A7, + 0x034, 0x000460AA, + 0x034, 0x000450A7, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x0004200C, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38C, + 0x034, 0x00049389, + 0x034, 0x0004816D, + 0x034, 0x0004716A, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38B, + 0x034, 0x00049388, + 0x034, 0x0004818B, + 0x034, 0x00047188, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38C, + 0x034, 0x00049389, + 0x034, 0x0004816D, + 0x034, 0x0004716A, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38B, + 0x034, 0x00049388, + 0x034, 0x0004818B, + 0x034, 0x00047188, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3F5, + 0x034, 0x000493F3, + 0x034, 0x000483B2, + 0x034, 0x00047390, + 0x034, 0x0004638D, + 0x034, 0x0004538A, + 0x034, 0x00044387, + 0x034, 0x0004324A, + 0x034, 0x00042247, + 0x034, 0x0004104D, + 0x034, 0x0004004A, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004AFF7, + 0x034, 0x00049FF6, + 0x034, 0x00048FF3, + 0x034, 0x00047FF0, + 0x034, 0x00046FED, + 0x034, 0x00045FEA, + 0x034, 0x00044FE7, + 0x034, 0x00043DEA, + 0x034, 0x00042DE7, + 0x034, 0x00041DE4, + 0x034, 0x00040CE7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38C, + 0x034, 0x00049389, + 0x034, 0x0004816D, + 0x034, 0x0004716A, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38C, + 0x034, 0x00049389, + 0x034, 0x0004816D, + 0x034, 0x0004716A, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0xA0000000, 0x00000000, + 0x034, 0x0004AFF4, + 0x034, 0x00049FF1, + 0x034, 0x00048FEE, + 0x034, 0x00047FEB, + 0x034, 0x00046FE8, + 0x034, 0x00045DEA, + 0x034, 0x00044CED, + 0x034, 0x00043CEA, + 0x034, 0x00042C6C, + 0x034, 0x00041C69, + 0x034, 0x00040C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A38C, + 0x034, 0x000291AD, + 0x034, 0x000281AA, + 0x034, 0x000271A7, + 0x034, 0x000260AA, + 0x034, 0x000250A7, + 0x034, 0x0002402C, + 0x034, 0x00023029, + 0x034, 0x0002200C, + 0x034, 0x00021009, + 0x034, 0x00020006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EE, + 0x034, 0x000293AC, + 0x034, 0x00028389, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AD, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EE, + 0x034, 0x000293AC, + 0x034, 0x00028389, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EF, + 0x034, 0x000293AD, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3F5, + 0x034, 0x000293F3, + 0x034, 0x000283D0, + 0x034, 0x00027371, + 0x034, 0x0002636E, + 0x034, 0x0002536B, + 0x034, 0x00024368, + 0x034, 0x0002332A, + 0x034, 0x00022327, + 0x034, 0x0002104C, + 0x034, 0x00020049, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002AFF7, + 0x034, 0x00029FF6, + 0x034, 0x00028FF3, + 0x034, 0x00027FF0, + 0x034, 0x00026FED, + 0x034, 0x00025FEA, + 0x034, 0x00024FE7, + 0x034, 0x00023DEA, + 0x034, 0x00022DE7, + 0x034, 0x00021DE4, + 0x034, 0x00020F25, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EE, + 0x034, 0x000293AC, + 0x034, 0x00028389, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EE, + 0x034, 0x000293AC, + 0x034, 0x00028389, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0xA0000000, 0x00000000, + 0x034, 0x0002AFF4, + 0x034, 0x00029FF1, + 0x034, 0x00028FEE, + 0x034, 0x00027FEB, + 0x034, 0x00026FE8, + 0x034, 0x00025DEA, + 0x034, 0x00024CED, + 0x034, 0x00023CEA, + 0x034, 0x00022C6C, + 0x034, 0x00021C69, + 0x034, 0x00020C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A38C, + 0x034, 0x000091AD, + 0x034, 0x000081AA, + 0x034, 0x000071A7, + 0x034, 0x000060AA, + 0x034, 0x000050A7, + 0x034, 0x0000402C, + 0x034, 0x00003029, + 0x034, 0x00002026, + 0x034, 0x00001009, + 0x034, 0x00000006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EC, + 0x034, 0x000093AC, + 0x034, 0x000081EC, + 0x034, 0x0000716D, + 0x034, 0x0000616A, + 0x034, 0x0000506D, + 0x034, 0x0000404C, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EF, + 0x034, 0x000093AD, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EC, + 0x034, 0x000093AC, + 0x034, 0x000081EC, + 0x034, 0x0000716D, + 0x034, 0x0000616A, + 0x034, 0x0000506D, + 0x034, 0x0000404C, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EF, + 0x034, 0x000093AD, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3F4, + 0x034, 0x000093F0, + 0x034, 0x000083AE, + 0x034, 0x00007350, + 0x034, 0x0000634D, + 0x034, 0x0000534A, + 0x034, 0x00004347, + 0x034, 0x0000312D, + 0x034, 0x0000212A, + 0x034, 0x00001127, + 0x034, 0x0000002A, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000AFF7, + 0x034, 0x00009FF4, + 0x034, 0x00008FF1, + 0x034, 0x00007FEE, + 0x034, 0x00006FEB, + 0x034, 0x00005FE8, + 0x034, 0x00004DEB, + 0x034, 0x00003DE8, + 0x034, 0x00002DE5, + 0x034, 0x00001C8B, + 0x034, 0x00000C88, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EC, + 0x034, 0x000093AC, + 0x034, 0x000081EC, + 0x034, 0x0000716D, + 0x034, 0x0000616A, + 0x034, 0x0000506D, + 0x034, 0x0000404C, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EC, + 0x034, 0x000093AC, + 0x034, 0x000081EC, + 0x034, 0x0000716D, + 0x034, 0x0000616A, + 0x034, 0x0000506D, + 0x034, 0x0000404C, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0xA0000000, 0x00000000, + 0x034, 0x0000AFF4, + 0x034, 0x00009FF1, + 0x034, 0x00008FEE, + 0x034, 0x00007FEB, + 0x034, 0x00006FE8, + 0x034, 0x00005DEA, + 0x034, 0x00004CED, + 0x034, 0x00003CEA, + 0x034, 0x00002C6C, + 0x034, 0x00001C69, + 0x034, 0x00000C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38C, + 0x034, 0x000C91AD, + 0x034, 0x000C81AA, + 0x034, 0x000C71A7, + 0x034, 0x000C60AA, + 0x034, 0x000C50A7, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C200C, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38C, + 0x034, 0x000C9389, + 0x034, 0x000C816D, + 0x034, 0x000C716A, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38B, + 0x034, 0x000C9388, + 0x034, 0x000C818B, + 0x034, 0x000C7188, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38C, + 0x034, 0x000C9389, + 0x034, 0x000C816D, + 0x034, 0x000C716A, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38B, + 0x034, 0x000C9388, + 0x034, 0x000C818B, + 0x034, 0x000C7188, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3F5, + 0x034, 0x000C93F3, + 0x034, 0x000C83B2, + 0x034, 0x000C7390, + 0x034, 0x000C638D, + 0x034, 0x000C538A, + 0x034, 0x000C4387, + 0x034, 0x000C324A, + 0x034, 0x000C2247, + 0x034, 0x000C104D, + 0x034, 0x000C004A, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CAFF7, + 0x034, 0x000C9FF6, + 0x034, 0x000C8FF3, + 0x034, 0x000C7FF0, + 0x034, 0x000C6FED, + 0x034, 0x000C5FEA, + 0x034, 0x000C4FE7, + 0x034, 0x000C3DEA, + 0x034, 0x000C2DE7, + 0x034, 0x000C1DE4, + 0x034, 0x000C0CE7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38C, + 0x034, 0x000C9389, + 0x034, 0x000C816D, + 0x034, 0x000C716A, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38C, + 0x034, 0x000C9389, + 0x034, 0x000C816D, + 0x034, 0x000C716A, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0xA0000000, 0x00000000, + 0x034, 0x000CA794, + 0x034, 0x000C9791, + 0x034, 0x000C878E, + 0x034, 0x000C778B, + 0x034, 0x000C658D, + 0x034, 0x000C558A, + 0x034, 0x000C448D, + 0x034, 0x000C348A, + 0x034, 0x000C244C, + 0x034, 0x000C1449, + 0x034, 0x000C042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA38C, + 0x034, 0x000A91AD, + 0x034, 0x000A81AA, + 0x034, 0x000A71A7, + 0x034, 0x000A60AA, + 0x034, 0x000A50A7, + 0x034, 0x000A402C, + 0x034, 0x000A3029, + 0x034, 0x000A200C, + 0x034, 0x000A1009, + 0x034, 0x000A0006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EE, + 0x034, 0x000A93AC, + 0x034, 0x000A8389, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AD, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EE, + 0x034, 0x000A93AC, + 0x034, 0x000A8389, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EF, + 0x034, 0x000A93AD, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3F5, + 0x034, 0x000A93F3, + 0x034, 0x000A83D0, + 0x034, 0x000A7371, + 0x034, 0x000A636E, + 0x034, 0x000A536B, + 0x034, 0x000A4368, + 0x034, 0x000A332A, + 0x034, 0x000A2327, + 0x034, 0x000A104C, + 0x034, 0x000A0049, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AAFF7, + 0x034, 0x000A9FF6, + 0x034, 0x000A8FF3, + 0x034, 0x000A7FF0, + 0x034, 0x000A6FED, + 0x034, 0x000A5FEA, + 0x034, 0x000A4FE7, + 0x034, 0x000A3DEA, + 0x034, 0x000A2DE7, + 0x034, 0x000A1DE4, + 0x034, 0x000A0F25, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EE, + 0x034, 0x000A93AC, + 0x034, 0x000A8389, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EE, + 0x034, 0x000A93AC, + 0x034, 0x000A8389, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0xA0000000, 0x00000000, + 0x034, 0x000AA794, + 0x034, 0x000A9791, + 0x034, 0x000A878E, + 0x034, 0x000A778B, + 0x034, 0x000A658D, + 0x034, 0x000A558A, + 0x034, 0x000A448D, + 0x034, 0x000A348A, + 0x034, 0x000A244C, + 0x034, 0x000A1449, + 0x034, 0x000A042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A38C, + 0x034, 0x000891AD, + 0x034, 0x000881AA, + 0x034, 0x000871A7, + 0x034, 0x000860AA, + 0x034, 0x000850A7, + 0x034, 0x0008402C, + 0x034, 0x00083029, + 0x034, 0x00082026, + 0x034, 0x00081009, + 0x034, 0x00080006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EC, + 0x034, 0x000893AC, + 0x034, 0x000881EC, + 0x034, 0x0008716D, + 0x034, 0x0008616A, + 0x034, 0x0008506D, + 0x034, 0x0008404C, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EF, + 0x034, 0x000893AD, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EC, + 0x034, 0x000893AC, + 0x034, 0x000881EC, + 0x034, 0x0008716D, + 0x034, 0x0008616A, + 0x034, 0x0008506D, + 0x034, 0x0008404C, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EF, + 0x034, 0x000893AD, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3F4, + 0x034, 0x000893F0, + 0x034, 0x000883AE, + 0x034, 0x00087350, + 0x034, 0x0008634D, + 0x034, 0x0008534A, + 0x034, 0x00084347, + 0x034, 0x0008312D, + 0x034, 0x0008212A, + 0x034, 0x00081127, + 0x034, 0x0008002A, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008AFF7, + 0x034, 0x00089FF4, + 0x034, 0x00088FF1, + 0x034, 0x00087FEE, + 0x034, 0x00086FEB, + 0x034, 0x00085FE8, + 0x034, 0x00084DEB, + 0x034, 0x00083DE8, + 0x034, 0x00082DE5, + 0x034, 0x00081C8B, + 0x034, 0x00080C88, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EC, + 0x034, 0x000893AC, + 0x034, 0x000881EC, + 0x034, 0x0008716D, + 0x034, 0x0008616A, + 0x034, 0x0008506D, + 0x034, 0x0008404C, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EC, + 0x034, 0x000893AC, + 0x034, 0x000881EC, + 0x034, 0x0008716D, + 0x034, 0x0008616A, + 0x034, 0x0008506D, + 0x034, 0x0008404C, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0xA0000000, 0x00000000, + 0x034, 0x0008A794, + 0x034, 0x00089791, + 0x034, 0x0008878E, + 0x034, 0x0008778B, + 0x034, 0x0008658D, + 0x034, 0x0008558A, + 0x034, 0x0008448D, + 0x034, 0x0008348A, + 0x034, 0x0008244C, + 0x034, 0x00081449, + 0x034, 0x0008042B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0xA0000000, 0x00000000, + 0x0DF, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0xA0000000, 0x00000000, + 0x035, 0x00000484, + 0x035, 0x00008484, + 0x035, 0x00010484, + 0x035, 0x00020584, + 0x035, 0x00028584, + 0x035, 0x00030584, + 0x035, 0x00040584, + 0x035, 0x00048584, + 0x035, 0x00050584, + 0x035, 0x000805FB, + 0x035, 0x000885FB, + 0x035, 0x000905FB, + 0x035, 0x000A05FB, + 0x035, 0x000A85FB, + 0x035, 0x000B05FB, + 0x035, 0x000C05FB, + 0x035, 0x000C85FB, + 0x035, 0x000D05FB, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0xA0000000, 0x00000000, + 0x0DF, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000473, + 0x036, 0x00008473, + 0x036, 0x00010473, + 0x036, 0x00020473, + 0x036, 0x00028473, + 0x036, 0x00030473, + 0x036, 0x00040473, + 0x036, 0x00048473, + 0x036, 0x00050473, + 0x036, 0x00080473, + 0x036, 0x00088473, + 0x036, 0x00090473, + 0x036, 0x000A0473, + 0x036, 0x000A8473, + 0x036, 0x000B0473, + 0x036, 0x000C0473, + 0x036, 0x000C8473, + 0x036, 0x000D0473, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0xA0000000, 0x00000000, + 0x036, 0x00000474, + 0x036, 0x00008474, + 0x036, 0x00010474, + 0x036, 0x00020474, + 0x036, 0x00028474, + 0x036, 0x00030474, + 0x036, 0x00040474, + 0x036, 0x00048474, + 0x036, 0x00050474, + 0x036, 0x00080474, + 0x036, 0x00088474, + 0x036, 0x00090474, + 0x036, 0x000A0474, + 0x036, 0x000A8474, + 0x036, 0x000B0474, + 0x036, 0x000C0474, + 0x036, 0x000C8474, + 0x036, 0x000D0474, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x0EF, 0x00000004, + 0x037, 0x00000000, + 0x038, 0x0000514E, + 0x037, 0x00004000, + 0x038, 0x0000514E, + 0x037, 0x00008000, + 0x038, 0x0000514E, + 0x037, 0x00010000, + 0x038, 0x0000514E, + 0x037, 0x00014000, + 0x038, 0x0000514E, + 0x037, 0x00018000, + 0x038, 0x0000514E, + 0x037, 0x0001C000, + 0x038, 0x0000514E, + 0x037, 0x00020000, + 0x038, 0x0000514E, + 0x037, 0x00024000, + 0x038, 0x0000514E, + 0x037, 0x00028000, + 0x038, 0x0000514E, + 0x037, 0x0002C000, + 0x038, 0x0000714E, + 0x037, 0x00030000, + 0x038, 0x0000514E, + 0x037, 0x00034000, + 0x038, 0x0000514E, + 0x037, 0x00038000, + 0x038, 0x0000514E, + 0x037, 0x0003C000, + 0x038, 0x0000514E, + 0x037, 0x00040000, + 0x038, 0x0000514E, + 0x037, 0x00044000, + 0x038, 0x0000514E, + 0x037, 0x00048000, + 0x038, 0x0000514E, + 0x037, 0x00080000, + 0x038, 0x00005ECE, + 0x037, 0x00084000, + 0x038, 0x00005ECE, + 0x037, 0x00088000, + 0x038, 0x00005ECE, + 0x037, 0x00090000, + 0x038, 0x00005ECE, + 0x037, 0x00094000, + 0x038, 0x00005ECE, + 0x037, 0x00098000, + 0x038, 0x00005ECE, + 0x037, 0x0009C000, + 0x038, 0x00005ECE, + 0x037, 0x000A0000, + 0x038, 0x00005ECE, + 0x037, 0x000A4000, + 0x038, 0x00005ECE, + 0x037, 0x000A8000, + 0x038, 0x00005ECE, + 0x037, 0x000AC000, + 0x038, 0x00005ECE, + 0x037, 0x000B0000, + 0x038, 0x00005ECE, + 0x037, 0x000B4000, + 0x038, 0x00005ECE, + 0x037, 0x000B8000, + 0x038, 0x00005ECE, + 0x037, 0x000BC000, + 0x038, 0x00005ECE, + 0x037, 0x000C0000, + 0x038, 0x00005ECE, + 0x037, 0x000C4000, + 0x038, 0x00005ECE, + 0x037, 0x000C8000, + 0x038, 0x00005ECE, + 0x0EF, 0x00000000, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000008, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x03C, 0x0000007D, + 0x03C, 0x0000047D, + 0x03C, 0x0000087D, + 0x03C, 0x0000107D, + 0x03C, 0x0000147D, + 0x03C, 0x0000187D, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027E, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127E, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227E, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0xA0000000, 0x00000000, + 0x03C, 0x0000037E, + 0x03C, 0x00000575, + 0x03C, 0x00000971, + 0x03C, 0x0000127E, + 0x03C, 0x00001575, + 0x03C, 0x00001871, + 0x03C, 0x0000217E, + 0x03C, 0x00002575, + 0x03C, 0x00002871, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x061, 0x000C0D47, + 0x062, 0x0000133C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0xA0000000, 0x00000000, + 0x063, 0x0007D0E7, + 0xB0000000, 0x00000000, + 0x064, 0x00014FEC, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0xA0000000, 0x00000000, + 0x065, 0x000923FF, + 0xB0000000, 0x00000000, + 0x066, 0x00000040, + 0x057, 0x00050000, + 0x056, 0x00051DF0, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x055, 0x00082060, + 0xB0000000, 0x00000000, + +}; +const u32 array_mp_8814a_radiob_len = sizeof(array_mp_8814a_radiob) / sizeof(u32); + +const u32 array_mp_8814a_radioc[] = { + 0x018, 0x00013124, + 0x040, 0x00000C00, + 0x058, 0x00000F98, + 0x07F, 0x00068004, + 0x018, 0x00000006, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0xA0000000, 0x00000000, + 0x086, 0x000E4B58, + 0x087, 0x00049F80, + 0xB0000000, 0x00000000, + 0x0DF, 0x00000008, + 0x0EF, 0x00002000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017823, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017823, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017823, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017823, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017823, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017823, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017823, + 0xA0000000, 0x00000000, + 0x03B, 0x0003F258, + 0x03B, 0x00030A58, + 0x03B, 0x0002FA58, + 0x03B, 0x00022590, + 0x03B, 0x0001FA50, + 0x03B, 0x00010248, + 0x03B, 0x00008240, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000100, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0000ADF6, + 0x034, 0x00009DF3, + 0x034, 0x00008DF0, + 0x034, 0x00007DED, + 0x034, 0x00006DEA, + 0x034, 0x00005CED, + 0x034, 0x00004CEA, + 0x034, 0x000034EA, + 0x034, 0x000024E7, + 0x034, 0x0000146A, + 0x034, 0x0000006B, + 0xB0000000, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0008ADF6, + 0x034, 0x00089DF3, + 0x034, 0x00088DF0, + 0x034, 0x00087DED, + 0x034, 0x00086DEA, + 0x034, 0x00085CED, + 0x034, 0x00084CEA, + 0x034, 0x000834EA, + 0x034, 0x000824E7, + 0x034, 0x0008146A, + 0x034, 0x0008006B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x000020A2, + 0x0DF, 0x00000080, + 0x035, 0x00000192, + 0x035, 0x00008192, + 0x035, 0x00010192, + 0x036, 0x00000024, + 0x036, 0x00008024, + 0x036, 0x00010024, + 0x036, 0x00018024, + 0x0EF, 0x00000000, + 0x051, 0x00000C21, + 0x052, 0x000006D9, + 0x053, 0x000FC649, + 0x054, 0x0000017E, + 0x018, 0x0001012A, + 0x081, 0x0007FC00, + 0x089, 0x00050110, + 0x08A, 0x00043E50, + 0x08B, 0x0002E180, + 0x08C, 0x00093C3C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0xA0000000, 0x00000000, + 0x085, 0x000F8000, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0xA0000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0xB0000000, 0x00000000, + 0x0EF, 0x00001000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0006C000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x000D4000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00080000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0006C000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0008C000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00004000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0xA0000000, 0x00000000, + 0x03C, 0x000A0000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00030023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00028623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00021633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0001C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00010293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00009593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0000118B, + 0xA0000000, 0x00000000, + 0x03B, 0x0000078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0004C000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00084000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00080000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0004C000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x000D0000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00080000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00080000, + 0xA0000000, 0x00000000, + 0x03C, 0x00028000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00070023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00068623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00061633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0005C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00050293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00049593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x03B, 0x0004078B, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00060000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00080000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0xA0000000, 0x00000000, + 0x03C, 0x00020000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B0023, + 0x80000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0xA0000000, 0x00000000, + 0x03C, 0x00020000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A8623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A1633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0009C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00090293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00089593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0008128B, + 0xA0000000, 0x00000000, + 0x03B, 0x0008078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x00000800, + 0x03B, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001803, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001803, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0xA0000000, 0x00000000, + 0x03A, 0x00000803, + 0xB0000000, 0x00000000, + 0x03B, 0x00040000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000800, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0xA0000000, 0x00000000, + 0x03A, 0x00001000, + 0xB0000000, 0x00000000, + 0x03B, 0x00080000, + 0x80000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001802, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001802, + 0xA0000000, 0x00000000, + 0x03A, 0x00001002, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0xB0000000, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x018, 0x00013124, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x018, 0x00013124, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x018, 0x00013124, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x018, 0x00013124, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x018, 0x00013124, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x018, 0x00013124, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x018, 0x00013124, + 0xA0000000, 0x00000000, + 0x018, 0x00013124, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000100, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A38C, + 0x034, 0x000491AD, + 0x034, 0x000481AA, + 0x034, 0x000471A7, + 0x034, 0x000460AA, + 0x034, 0x000450A7, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x0004200C, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AD, + 0x034, 0x0004838A, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004404C, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AD, + 0x034, 0x0004838A, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004404C, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AD, + 0x034, 0x0004838A, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004404C, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AD, + 0x034, 0x0004838A, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004404C, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3F5, + 0x034, 0x000493F3, + 0x034, 0x00048393, + 0x034, 0x00047390, + 0x034, 0x0004638D, + 0x034, 0x0004538A, + 0x034, 0x00044387, + 0x034, 0x000430ED, + 0x034, 0x000420EA, + 0x034, 0x000410E7, + 0x034, 0x0004002D, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004AFF7, + 0x034, 0x00049FF6, + 0x034, 0x00048FF3, + 0x034, 0x00047FF0, + 0x034, 0x00046FED, + 0x034, 0x00045FEA, + 0x034, 0x00044FE7, + 0x034, 0x00043CD0, + 0x034, 0x00042CCD, + 0x034, 0x00041CCA, + 0x034, 0x00040CC7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AD, + 0x034, 0x0004838A, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004404C, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EF, + 0x034, 0x000493AD, + 0x034, 0x0004838A, + 0x034, 0x0004718C, + 0x034, 0x00046189, + 0x034, 0x0004506D, + 0x034, 0x0004404C, + 0x034, 0x0004302C, + 0x034, 0x00042029, + 0x034, 0x00041026, + 0x034, 0x00040023, + 0xA0000000, 0x00000000, + 0x034, 0x0004AFF4, + 0x034, 0x00049FF1, + 0x034, 0x00048FEE, + 0x034, 0x00047FEB, + 0x034, 0x00046FE8, + 0x034, 0x00045DEA, + 0x034, 0x00044CED, + 0x034, 0x00043CEA, + 0x034, 0x00042C6C, + 0x034, 0x00041C69, + 0x034, 0x00040C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EC, + 0x034, 0x0002938C, + 0x034, 0x000281AD, + 0x034, 0x000271AA, + 0x034, 0x000261A7, + 0x034, 0x000250AA, + 0x034, 0x000240A7, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x0002100C, + 0x034, 0x00020009, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EC, + 0x034, 0x0002936D, + 0x034, 0x0002836A, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EC, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EC, + 0x034, 0x0002936D, + 0x034, 0x0002836A, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EC, + 0x034, 0x000293AC, + 0x034, 0x0002838A, + 0x034, 0x0002718C, + 0x034, 0x00026189, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3F5, + 0x034, 0x000293F3, + 0x034, 0x000282F2, + 0x034, 0x000272D0, + 0x034, 0x000262CD, + 0x034, 0x000252CA, + 0x034, 0x000242C7, + 0x034, 0x000230CD, + 0x034, 0x000220CA, + 0x034, 0x000210C7, + 0x034, 0x00020086, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002AFF7, + 0x034, 0x00029FF6, + 0x034, 0x00028FF3, + 0x034, 0x00027FF0, + 0x034, 0x00026FED, + 0x034, 0x00025FEA, + 0x034, 0x00024FE7, + 0x034, 0x00023DEA, + 0x034, 0x00022DE7, + 0x034, 0x00021DE4, + 0x034, 0x00020E44, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EC, + 0x034, 0x0002936D, + 0x034, 0x0002836A, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EC, + 0x034, 0x0002936D, + 0x034, 0x0002836A, + 0x034, 0x0002716D, + 0x034, 0x0002616A, + 0x034, 0x0002506D, + 0x034, 0x0002406A, + 0x034, 0x0002302C, + 0x034, 0x00022029, + 0x034, 0x00021026, + 0x034, 0x00020023, + 0xA0000000, 0x00000000, + 0x034, 0x0002AFF4, + 0x034, 0x00029FF1, + 0x034, 0x00028FEE, + 0x034, 0x00027FEB, + 0x034, 0x00026FE8, + 0x034, 0x00025DEA, + 0x034, 0x00024CED, + 0x034, 0x00023CEA, + 0x034, 0x00022C6C, + 0x034, 0x00021C69, + 0x034, 0x00020C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A38C, + 0x034, 0x000091AD, + 0x034, 0x000081AA, + 0x034, 0x000071A7, + 0x034, 0x000060AA, + 0x034, 0x000050A7, + 0x034, 0x0000402C, + 0x034, 0x00003029, + 0x034, 0x0000200C, + 0x034, 0x00001009, + 0x034, 0x00000006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AB, + 0x034, 0x00008389, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AB, + 0x034, 0x00008389, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AB, + 0x034, 0x00008389, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AB, + 0x034, 0x00008389, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3F5, + 0x034, 0x000093F1, + 0x034, 0x000083B0, + 0x034, 0x00007370, + 0x034, 0x0000636D, + 0x034, 0x0000536A, + 0x034, 0x00004367, + 0x034, 0x0000308E, + 0x034, 0x0000208B, + 0x034, 0x00001088, + 0x034, 0x00000085, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000AFF7, + 0x034, 0x00009FF5, + 0x034, 0x00008FF2, + 0x034, 0x00007FEF, + 0x034, 0x00006FEC, + 0x034, 0x00005FE9, + 0x034, 0x00004EAA, + 0x034, 0x00003EA7, + 0x034, 0x00002C70, + 0x034, 0x00001C6D, + 0x034, 0x00000C6A, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AB, + 0x034, 0x00008389, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AB, + 0x034, 0x00008389, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0xA0000000, 0x00000000, + 0x034, 0x0000AFF4, + 0x034, 0x00009FF1, + 0x034, 0x00008FEE, + 0x034, 0x00007FEB, + 0x034, 0x00006FE8, + 0x034, 0x00005DEA, + 0x034, 0x00004CED, + 0x034, 0x00003CEA, + 0x034, 0x00002C6C, + 0x034, 0x00001C69, + 0x034, 0x00000C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA38C, + 0x034, 0x000C91AD, + 0x034, 0x000C81AA, + 0x034, 0x000C71A7, + 0x034, 0x000C60AA, + 0x034, 0x000C50A7, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C200C, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AD, + 0x034, 0x000C838A, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C404C, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AD, + 0x034, 0x000C838A, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C404C, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AD, + 0x034, 0x000C838A, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C404C, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AD, + 0x034, 0x000C838A, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C404C, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3F5, + 0x034, 0x000C93F3, + 0x034, 0x000C8393, + 0x034, 0x000C7390, + 0x034, 0x000C638D, + 0x034, 0x000C538A, + 0x034, 0x000C4387, + 0x034, 0x000C30ED, + 0x034, 0x000C20EA, + 0x034, 0x000C10E7, + 0x034, 0x000C002D, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CAFF7, + 0x034, 0x000C9FF6, + 0x034, 0x000C8FF3, + 0x034, 0x000C7FF0, + 0x034, 0x000C6FED, + 0x034, 0x000C5FEA, + 0x034, 0x000C4FE7, + 0x034, 0x000C3CD0, + 0x034, 0x000C2CCD, + 0x034, 0x000C1CCA, + 0x034, 0x000C0CC7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AD, + 0x034, 0x000C838A, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C404C, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EF, + 0x034, 0x000C93AD, + 0x034, 0x000C838A, + 0x034, 0x000C718C, + 0x034, 0x000C6189, + 0x034, 0x000C506D, + 0x034, 0x000C404C, + 0x034, 0x000C302C, + 0x034, 0x000C2029, + 0x034, 0x000C1026, + 0x034, 0x000C0023, + 0xA0000000, 0x00000000, + 0x034, 0x000CA794, + 0x034, 0x000C9791, + 0x034, 0x000C878E, + 0x034, 0x000C778B, + 0x034, 0x000C658D, + 0x034, 0x000C558A, + 0x034, 0x000C448D, + 0x034, 0x000C348A, + 0x034, 0x000C244C, + 0x034, 0x000C1449, + 0x034, 0x000C042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EC, + 0x034, 0x000A938C, + 0x034, 0x000A81AD, + 0x034, 0x000A71AA, + 0x034, 0x000A61A7, + 0x034, 0x000A50AA, + 0x034, 0x000A40A7, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A100C, + 0x034, 0x000A0009, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EC, + 0x034, 0x000A936D, + 0x034, 0x000A836A, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EC, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EC, + 0x034, 0x000A936D, + 0x034, 0x000A836A, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EC, + 0x034, 0x000A93AC, + 0x034, 0x000A838A, + 0x034, 0x000A718C, + 0x034, 0x000A6189, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3F5, + 0x034, 0x000A93F3, + 0x034, 0x000A82F2, + 0x034, 0x000A72D0, + 0x034, 0x000A62CD, + 0x034, 0x000A52CA, + 0x034, 0x000A42C7, + 0x034, 0x000A30CD, + 0x034, 0x000A20CA, + 0x034, 0x000A10C7, + 0x034, 0x000A0086, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AAFF7, + 0x034, 0x000A9FF6, + 0x034, 0x000A8FF3, + 0x034, 0x000A7FF0, + 0x034, 0x000A6FED, + 0x034, 0x000A5FEA, + 0x034, 0x000A4FE7, + 0x034, 0x000A3DEA, + 0x034, 0x000A2DE7, + 0x034, 0x000A1DE4, + 0x034, 0x000A0E44, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EC, + 0x034, 0x000A936D, + 0x034, 0x000A836A, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EC, + 0x034, 0x000A936D, + 0x034, 0x000A836A, + 0x034, 0x000A716D, + 0x034, 0x000A616A, + 0x034, 0x000A506D, + 0x034, 0x000A406A, + 0x034, 0x000A302C, + 0x034, 0x000A2029, + 0x034, 0x000A1026, + 0x034, 0x000A0023, + 0xA0000000, 0x00000000, + 0x034, 0x000AA794, + 0x034, 0x000A9791, + 0x034, 0x000A878E, + 0x034, 0x000A778B, + 0x034, 0x000A658D, + 0x034, 0x000A558A, + 0x034, 0x000A448D, + 0x034, 0x000A348A, + 0x034, 0x000A244C, + 0x034, 0x000A1449, + 0x034, 0x000A042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A38C, + 0x034, 0x000891AD, + 0x034, 0x000881AA, + 0x034, 0x000871A7, + 0x034, 0x000860AA, + 0x034, 0x000850A7, + 0x034, 0x0008402C, + 0x034, 0x00083029, + 0x034, 0x0008200C, + 0x034, 0x00081009, + 0x034, 0x00000006, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AB, + 0x034, 0x00088389, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AB, + 0x034, 0x00088389, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AB, + 0x034, 0x00088389, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AB, + 0x034, 0x00088389, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3F5, + 0x034, 0x000893F1, + 0x034, 0x000883B0, + 0x034, 0x00087370, + 0x034, 0x0008636D, + 0x034, 0x0008536A, + 0x034, 0x00084367, + 0x034, 0x0008308E, + 0x034, 0x0008208B, + 0x034, 0x00081088, + 0x034, 0x00080085, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008AFF7, + 0x034, 0x00089FF5, + 0x034, 0x00088FF2, + 0x034, 0x00087FEF, + 0x034, 0x00086FEC, + 0x034, 0x00085FE9, + 0x034, 0x00084EAA, + 0x034, 0x00083EA7, + 0x034, 0x00082C70, + 0x034, 0x00081C6D, + 0x034, 0x00080C6A, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AB, + 0x034, 0x00088389, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AB, + 0x034, 0x00088389, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0xA0000000, 0x00000000, + 0x034, 0x0008A794, + 0x034, 0x00089791, + 0x034, 0x0008878E, + 0x034, 0x0008778B, + 0x034, 0x0008658D, + 0x034, 0x0008558A, + 0x034, 0x0008448D, + 0x034, 0x0008348A, + 0x034, 0x0008244C, + 0x034, 0x00081449, + 0x034, 0x0008042B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0xA0000000, 0x00000000, + 0x0DF, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0xA0000000, 0x00000000, + 0x035, 0x00000484, + 0x035, 0x00008484, + 0x035, 0x00010484, + 0x035, 0x00020584, + 0x035, 0x00028584, + 0x035, 0x00030584, + 0x035, 0x00040584, + 0x035, 0x00048584, + 0x035, 0x00050584, + 0x035, 0x000805FB, + 0x035, 0x000885FB, + 0x035, 0x000905FB, + 0x035, 0x000A05FB, + 0x035, 0x000A85FB, + 0x035, 0x000B05FB, + 0x035, 0x000C05FB, + 0x035, 0x000C85FB, + 0x035, 0x000D05FB, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0xA0000000, 0x00000000, + 0x0DF, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000473, + 0x036, 0x00008473, + 0x036, 0x00010473, + 0x036, 0x00020473, + 0x036, 0x00028473, + 0x036, 0x00030473, + 0x036, 0x00040473, + 0x036, 0x00048473, + 0x036, 0x00050473, + 0x036, 0x00080473, + 0x036, 0x00088473, + 0x036, 0x00090473, + 0x036, 0x000A0473, + 0x036, 0x000A8473, + 0x036, 0x000B0473, + 0x036, 0x000C0473, + 0x036, 0x000C8473, + 0x036, 0x000D0473, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0xA0000000, 0x00000000, + 0x036, 0x00000474, + 0x036, 0x00008474, + 0x036, 0x00010474, + 0x036, 0x00020474, + 0x036, 0x00028474, + 0x036, 0x00030474, + 0x036, 0x00040474, + 0x036, 0x00048474, + 0x036, 0x00050474, + 0x036, 0x00080474, + 0x036, 0x00088474, + 0x036, 0x00090474, + 0x036, 0x000A0474, + 0x036, 0x000A8474, + 0x036, 0x000B0474, + 0x036, 0x000C0474, + 0x036, 0x000C8474, + 0x036, 0x000D0474, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x0EF, 0x00000004, + 0x037, 0x00000000, + 0x038, 0x0000514E, + 0x037, 0x00004000, + 0x038, 0x0000514E, + 0x037, 0x00008000, + 0x038, 0x0000514E, + 0x037, 0x00010000, + 0x038, 0x0000514E, + 0x037, 0x00014000, + 0x038, 0x0000514E, + 0x037, 0x00018000, + 0x038, 0x0000514E, + 0x037, 0x0001C000, + 0x038, 0x0000514E, + 0x037, 0x00020000, + 0x038, 0x0000514E, + 0x037, 0x00024000, + 0x038, 0x0000514E, + 0x037, 0x00028000, + 0x038, 0x0000514E, + 0x037, 0x0002C000, + 0x038, 0x0000714E, + 0x037, 0x00030000, + 0x038, 0x0000514E, + 0x037, 0x00034000, + 0x038, 0x0000514E, + 0x037, 0x00038000, + 0x038, 0x0000514E, + 0x037, 0x0003C000, + 0x038, 0x0000514E, + 0x037, 0x00040000, + 0x038, 0x0000514E, + 0x037, 0x00044000, + 0x038, 0x0000514E, + 0x037, 0x00048000, + 0x038, 0x0000514E, + 0x037, 0x00080000, + 0x038, 0x00005ECE, + 0x037, 0x00084000, + 0x038, 0x00005ECE, + 0x037, 0x00088000, + 0x038, 0x00005ECE, + 0x037, 0x00090000, + 0x038, 0x00005ECE, + 0x037, 0x00094000, + 0x038, 0x00005ECE, + 0x037, 0x00098000, + 0x038, 0x00005ECE, + 0x037, 0x0009C000, + 0x038, 0x00005ECE, + 0x037, 0x000A0000, + 0x038, 0x00005ECE, + 0x037, 0x000A4000, + 0x038, 0x00005ECE, + 0x037, 0x000A8000, + 0x038, 0x00005ECE, + 0x037, 0x000AC000, + 0x038, 0x00005ECE, + 0x037, 0x000B0000, + 0x038, 0x00005ECE, + 0x037, 0x000B4000, + 0x038, 0x00005ECE, + 0x037, 0x000B8000, + 0x038, 0x00005ECE, + 0x037, 0x000BC000, + 0x038, 0x00005ECE, + 0x037, 0x000C0000, + 0x038, 0x00005ECE, + 0x037, 0x000C4000, + 0x038, 0x00005ECE, + 0x037, 0x000C8000, + 0x038, 0x00005ECE, + 0x0EF, 0x00000000, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000008, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x03C, 0x0000007D, + 0x03C, 0x0000047D, + 0x03C, 0x0000087D, + 0x03C, 0x0000107D, + 0x03C, 0x0000147D, + 0x03C, 0x0000187D, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000541, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001541, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002541, + 0x03C, 0x00002821, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027D, + 0x03C, 0x00000546, + 0x03C, 0x00000821, + 0x03C, 0x0000127D, + 0x03C, 0x00001546, + 0x03C, 0x00001821, + 0x03C, 0x0000227D, + 0x03C, 0x00002546, + 0x03C, 0x00002821, + 0xA0000000, 0x00000000, + 0x03C, 0x0000037E, + 0x03C, 0x00000575, + 0x03C, 0x00000971, + 0x03C, 0x0000127E, + 0x03C, 0x00001575, + 0x03C, 0x00001871, + 0x03C, 0x0000217E, + 0x03C, 0x00002575, + 0x03C, 0x00002871, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x061, 0x000C0D47, + 0x062, 0x0000133C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0xA0000000, 0x00000000, + 0x063, 0x0007D0E7, + 0xB0000000, 0x00000000, + 0x064, 0x00014FEC, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0xA0000000, 0x00000000, + 0x065, 0x000923FF, + 0xB0000000, 0x00000000, + 0x066, 0x00000040, + 0x057, 0x00050000, + 0x056, 0x00051DF0, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x055, 0x00082060, + 0xB0000000, 0x00000000, + +}; +const u32 array_mp_8814a_radioc_len = sizeof(array_mp_8814a_radioc) / sizeof(u32); + +const u32 array_mp_8814a_radiod[] = { + 0x018, 0x00013124, + 0x040, 0x00000C00, + 0x058, 0x00000F98, + 0x07F, 0x00068004, + 0x018, 0x00000006, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x086, 0x000E335A, + 0x087, 0x00079F80, + 0xA0000000, 0x00000000, + 0x086, 0x000E4B58, + 0x087, 0x00049F80, + 0xB0000000, 0x00000000, + 0x0DF, 0x00000008, + 0x0EF, 0x00002000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017803, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F09B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017803, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017803, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F09B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017803, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017803, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017803, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0003F19B, + 0x03B, 0x00037A5B, + 0x03B, 0x0002A433, + 0x03B, 0x00027BD3, + 0x03B, 0x0001F80B, + 0x03B, 0x00017803, + 0xA0000000, 0x00000000, + 0x03B, 0x0003F258, + 0x03B, 0x00030A58, + 0x03B, 0x0002FA58, + 0x03B, 0x00022590, + 0x03B, 0x0001FA50, + 0x03B, 0x00010248, + 0x03B, 0x00008240, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000100, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0000ADF6, + 0x034, 0x00009DF3, + 0x034, 0x00008DF0, + 0x034, 0x00007DED, + 0x034, 0x00006DEA, + 0x034, 0x00005CED, + 0x034, 0x00004CEA, + 0x034, 0x000034EA, + 0x034, 0x000024E7, + 0x034, 0x0000146A, + 0x034, 0x0000006B, + 0xB0000000, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A0D0, + 0x034, 0x000090CD, + 0x034, 0x000080CA, + 0x034, 0x0000704D, + 0x034, 0x0000604A, + 0x034, 0x00005047, + 0x034, 0x0000400A, + 0x034, 0x00003007, + 0x034, 0x00002004, + 0x034, 0x00001001, + 0x034, 0x00000001, + 0xA0000000, 0x00000000, + 0x034, 0x0008ADF6, + 0x034, 0x00089DF3, + 0x034, 0x00088DF0, + 0x034, 0x00087DED, + 0x034, 0x00086DEA, + 0x034, 0x00085CED, + 0x034, 0x00084CEA, + 0x034, 0x000834EA, + 0x034, 0x000824E7, + 0x034, 0x0008146A, + 0x034, 0x0008006B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x000020A2, + 0x0DF, 0x00000080, + 0x035, 0x00000192, + 0x035, 0x00008192, + 0x035, 0x00010192, + 0x036, 0x00000024, + 0x036, 0x00008024, + 0x036, 0x00010024, + 0x036, 0x00018024, + 0x0EF, 0x00000000, + 0x051, 0x00000C21, + 0x052, 0x000006D9, + 0x053, 0x000FC649, + 0x054, 0x0000017E, + 0x018, 0x0001012A, + 0x081, 0x0007FC00, + 0x089, 0x00050110, + 0x08A, 0x00043E50, + 0x08B, 0x0002E180, + 0x08C, 0x00093C3C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x085, 0x000F8000, + 0xA0000000, 0x00000000, + 0x085, 0x000F8000, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0xA0000000, 0x00000000, + 0x08D, 0x000FFFF0, + 0xB0000000, 0x00000000, + 0x0EF, 0x00001000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00038023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00048000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00040000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00088000, + 0xA0000000, 0x00000000, + 0x03C, 0x00048000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00030023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00028623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00021633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0001C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00010293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00009593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x00000F8B, + 0xA0000000, 0x00000000, + 0x03B, 0x0000078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00078023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00044000, + 0xA0000000, 0x00000000, + 0x03C, 0x00024000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00070023, + 0x03C, 0x00048000, + 0x03A, 0x0000013C, + 0x03B, 0x00068623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00061633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0005C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00050293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00049593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x00040F8B, + 0xA0000000, 0x00000000, + 0x03B, 0x0004078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xA0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B8023, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00004000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00060000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00004000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00060000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00024000, + 0xA0000000, 0x00000000, + 0x03C, 0x00004000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000B0023, + 0x80000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00020000, + 0xA0000000, 0x00000000, + 0x03C, 0x00020000, + 0xB0000000, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A8623, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x000A1633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x0009C633, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00090293, + 0x03C, 0x00000000, + 0x03A, 0x0000013C, + 0x03B, 0x00089593, + 0x03C, 0x00000000, + 0x03A, 0x00000148, + 0x80000008, 0x00000000, 0x40000000, 0x00000000, + 0x03B, 0x0008138B, + 0xA0000000, 0x00000000, + 0x03B, 0x0008078B, + 0xB0000000, 0x00000000, + 0x03C, 0x00000000, + 0x0EF, 0x00000000, + 0x0EF, 0x00000800, + 0x03B, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001003, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001803, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000803, + 0xA0000000, 0x00000000, + 0x03A, 0x00000803, + 0xB0000000, 0x00000000, + 0x03B, 0x00040000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001002, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000001, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000802, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001803, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0xA0000000, 0x00000000, + 0x03A, 0x00001000, + 0xB0000000, 0x00000000, + 0x03B, 0x00080000, + 0x80000007, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001802, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00001000, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x03A, 0x00000802, + 0xA0000000, 0x00000000, + 0x03A, 0x00001002, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x00013124, + 0x0EF, 0x00000100, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3EB, + 0x034, 0x0004938B, + 0x034, 0x000481AC, + 0x034, 0x000471A9, + 0x034, 0x000460AC, + 0x034, 0x000450A9, + 0x034, 0x0004402E, + 0x034, 0x0004302B, + 0x034, 0x00042028, + 0x034, 0x0004100B, + 0x034, 0x00040008, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3AD, + 0x034, 0x0004938A, + 0x034, 0x0004818C, + 0x034, 0x00047189, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3AD, + 0x034, 0x0004938A, + 0x034, 0x0004818C, + 0x034, 0x00047189, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3AD, + 0x034, 0x0004938A, + 0x034, 0x0004818C, + 0x034, 0x00047189, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3AD, + 0x034, 0x0004938A, + 0x034, 0x0004818C, + 0x034, 0x00047189, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3F4, + 0x034, 0x000493D2, + 0x034, 0x000482D1, + 0x034, 0x000471F1, + 0x034, 0x000461EE, + 0x034, 0x000451EB, + 0x034, 0x000441E8, + 0x034, 0x0004314B, + 0x034, 0x00042148, + 0x034, 0x0004104B, + 0x034, 0x00040048, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004AFF7, + 0x034, 0x00049FF6, + 0x034, 0x00048FF3, + 0x034, 0x00047FF0, + 0x034, 0x00046FED, + 0x034, 0x00045FEA, + 0x034, 0x00044FE7, + 0x034, 0x00043CB1, + 0x034, 0x00042CAE, + 0x034, 0x00041CAB, + 0x034, 0x00040CA8, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3AD, + 0x034, 0x0004938A, + 0x034, 0x0004818C, + 0x034, 0x00047189, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0004A3AD, + 0x034, 0x0004938A, + 0x034, 0x0004818C, + 0x034, 0x00047189, + 0x034, 0x0004606D, + 0x034, 0x0004506A, + 0x034, 0x0004402C, + 0x034, 0x00043029, + 0x034, 0x00042026, + 0x034, 0x00041009, + 0x034, 0x00040006, + 0xA0000000, 0x00000000, + 0x034, 0x0004AFF4, + 0x034, 0x00049FF1, + 0x034, 0x00048FEE, + 0x034, 0x00047FEB, + 0x034, 0x00046FE8, + 0x034, 0x00045DEA, + 0x034, 0x00044CED, + 0x034, 0x00043CEA, + 0x034, 0x00042C6C, + 0x034, 0x00041C69, + 0x034, 0x00040C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3EE, + 0x034, 0x000293EB, + 0x034, 0x0002838B, + 0x034, 0x000271AC, + 0x034, 0x000261A9, + 0x034, 0x000250AC, + 0x034, 0x000240A9, + 0x034, 0x000230A6, + 0x034, 0x0002202C, + 0x034, 0x00021029, + 0x034, 0x00020026, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3AD, + 0x034, 0x0002938A, + 0x034, 0x0002818C, + 0x034, 0x00027189, + 0x034, 0x0002606D, + 0x034, 0x0002504C, + 0x034, 0x0002402C, + 0x034, 0x00023029, + 0x034, 0x00022026, + 0x034, 0x00021023, + 0x034, 0x00020006, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3AD, + 0x034, 0x0002938A, + 0x034, 0x0002818C, + 0x034, 0x00027189, + 0x034, 0x0002606D, + 0x034, 0x0002504C, + 0x034, 0x0002402C, + 0x034, 0x00023029, + 0x034, 0x00022026, + 0x034, 0x00021023, + 0x034, 0x00020006, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3AD, + 0x034, 0x0002938A, + 0x034, 0x0002818C, + 0x034, 0x00027189, + 0x034, 0x0002606D, + 0x034, 0x0002504C, + 0x034, 0x0002402C, + 0x034, 0x00023029, + 0x034, 0x00022026, + 0x034, 0x00021023, + 0x034, 0x00020006, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3AD, + 0x034, 0x0002938A, + 0x034, 0x0002818C, + 0x034, 0x00027189, + 0x034, 0x0002606D, + 0x034, 0x0002504C, + 0x034, 0x0002402C, + 0x034, 0x00023029, + 0x034, 0x00022026, + 0x034, 0x00021023, + 0x034, 0x00020006, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3F5, + 0x034, 0x000293D2, + 0x034, 0x000283CE, + 0x034, 0x00027290, + 0x034, 0x0002628D, + 0x034, 0x0002528A, + 0x034, 0x00024287, + 0x034, 0x0002308D, + 0x034, 0x0002208A, + 0x034, 0x00021087, + 0x034, 0x00020048, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002AFF7, + 0x034, 0x00029FF6, + 0x034, 0x00028FF3, + 0x034, 0x00027FF0, + 0x034, 0x00026FED, + 0x034, 0x00025FEA, + 0x034, 0x00024FE7, + 0x034, 0x00023DEA, + 0x034, 0x00022DE7, + 0x034, 0x00021DE4, + 0x034, 0x00020D48, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3AD, + 0x034, 0x0002938A, + 0x034, 0x0002818C, + 0x034, 0x00027189, + 0x034, 0x0002606D, + 0x034, 0x0002504C, + 0x034, 0x0002402C, + 0x034, 0x00023029, + 0x034, 0x00022026, + 0x034, 0x00021023, + 0x034, 0x00020006, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0002A3AD, + 0x034, 0x0002938A, + 0x034, 0x0002818C, + 0x034, 0x00027189, + 0x034, 0x0002606D, + 0x034, 0x0002504C, + 0x034, 0x0002402C, + 0x034, 0x00023029, + 0x034, 0x00022026, + 0x034, 0x00021023, + 0x034, 0x00020006, + 0xA0000000, 0x00000000, + 0x034, 0x0002AFF4, + 0x034, 0x00029FF1, + 0x034, 0x00028FEE, + 0x034, 0x00027FEB, + 0x034, 0x00026FE8, + 0x034, 0x00025DEA, + 0x034, 0x00024CED, + 0x034, 0x00023CEA, + 0x034, 0x00022C6C, + 0x034, 0x00021C69, + 0x034, 0x00020C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EF, + 0x034, 0x000093EC, + 0x034, 0x0000838C, + 0x034, 0x000071AD, + 0x034, 0x000061AA, + 0x034, 0x000050AD, + 0x034, 0x000040AA, + 0x034, 0x0000306A, + 0x034, 0x0000202D, + 0x034, 0x0000102A, + 0x034, 0x00000027, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3F1, + 0x034, 0x000092B1, + 0x034, 0x000081CF, + 0x034, 0x00007170, + 0x034, 0x0000616D, + 0x034, 0x0000516A, + 0x034, 0x00004167, + 0x034, 0x0000302F, + 0x034, 0x0000202C, + 0x034, 0x00001029, + 0x034, 0x00000026, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000AFF7, + 0x034, 0x00009FF6, + 0x034, 0x00008FF3, + 0x034, 0x00007FF0, + 0x034, 0x00006FED, + 0x034, 0x00005FEA, + 0x034, 0x00004FE7, + 0x034, 0x00003EC7, + 0x034, 0x00002EC4, + 0x034, 0x00001D4B, + 0x034, 0x00000D48, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0000A3EE, + 0x034, 0x000093AC, + 0x034, 0x0000838A, + 0x034, 0x0000718C, + 0x034, 0x00006189, + 0x034, 0x0000506D, + 0x034, 0x0000406A, + 0x034, 0x0000302C, + 0x034, 0x00002029, + 0x034, 0x00001026, + 0x034, 0x00000023, + 0xA0000000, 0x00000000, + 0x034, 0x0000AFF4, + 0x034, 0x00009FF1, + 0x034, 0x00008FEE, + 0x034, 0x00007FEB, + 0x034, 0x00006FE8, + 0x034, 0x00005DEA, + 0x034, 0x00004CED, + 0x034, 0x00003CEA, + 0x034, 0x00002C6C, + 0x034, 0x00001C69, + 0x034, 0x00000C2B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3EB, + 0x034, 0x000C938B, + 0x034, 0x000C81AC, + 0x034, 0x000C71A9, + 0x034, 0x000C60AC, + 0x034, 0x000C50A9, + 0x034, 0x000C402E, + 0x034, 0x000C302B, + 0x034, 0x000C2028, + 0x034, 0x000C100B, + 0x034, 0x000C0008, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3AD, + 0x034, 0x000C938A, + 0x034, 0x000C818C, + 0x034, 0x000C7189, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3AD, + 0x034, 0x000C938A, + 0x034, 0x000C818C, + 0x034, 0x000C7189, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3AD, + 0x034, 0x000C938A, + 0x034, 0x000C818C, + 0x034, 0x000C7189, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3AD, + 0x034, 0x000C938A, + 0x034, 0x000C818C, + 0x034, 0x000C7189, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3F4, + 0x034, 0x000C93D2, + 0x034, 0x000C82D1, + 0x034, 0x000C71F1, + 0x034, 0x000C61EE, + 0x034, 0x000C51EB, + 0x034, 0x000C41E8, + 0x034, 0x000C314B, + 0x034, 0x000C2148, + 0x034, 0x000C104B, + 0x034, 0x000C0048, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CAFF7, + 0x034, 0x000C9FF6, + 0x034, 0x000C8FF3, + 0x034, 0x000C7FF0, + 0x034, 0x000C6FED, + 0x034, 0x000C5FEA, + 0x034, 0x000C4FE7, + 0x034, 0x000C3CB1, + 0x034, 0x000C2CAE, + 0x034, 0x000C1CAB, + 0x034, 0x000C0CA8, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3AD, + 0x034, 0x000C938A, + 0x034, 0x000C818C, + 0x034, 0x000C7189, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000CA3AD, + 0x034, 0x000C938A, + 0x034, 0x000C818C, + 0x034, 0x000C7189, + 0x034, 0x000C606D, + 0x034, 0x000C506A, + 0x034, 0x000C402C, + 0x034, 0x000C3029, + 0x034, 0x000C2026, + 0x034, 0x000C1009, + 0x034, 0x000C0006, + 0xA0000000, 0x00000000, + 0x034, 0x000CA794, + 0x034, 0x000C9791, + 0x034, 0x000C878E, + 0x034, 0x000C778B, + 0x034, 0x000C658D, + 0x034, 0x000C558A, + 0x034, 0x000C448D, + 0x034, 0x000C348A, + 0x034, 0x000C244C, + 0x034, 0x000C1449, + 0x034, 0x000C042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3EE, + 0x034, 0x000A93EB, + 0x034, 0x000A838B, + 0x034, 0x000A71AC, + 0x034, 0x000A61A9, + 0x034, 0x000A50AC, + 0x034, 0x000A40A9, + 0x034, 0x000A30A6, + 0x034, 0x000A202C, + 0x034, 0x000A1029, + 0x034, 0x000A0026, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3AD, + 0x034, 0x000A938A, + 0x034, 0x000A818C, + 0x034, 0x000A7189, + 0x034, 0x000A606D, + 0x034, 0x000A504C, + 0x034, 0x000A402C, + 0x034, 0x000A3029, + 0x034, 0x000A2026, + 0x034, 0x000A1023, + 0x034, 0x000A0006, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3AD, + 0x034, 0x000A938A, + 0x034, 0x000A818C, + 0x034, 0x000A7189, + 0x034, 0x000A606D, + 0x034, 0x000A504C, + 0x034, 0x000A402C, + 0x034, 0x000A3029, + 0x034, 0x000A2026, + 0x034, 0x000A1023, + 0x034, 0x000A0006, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3AD, + 0x034, 0x000A938A, + 0x034, 0x000A818C, + 0x034, 0x000A7189, + 0x034, 0x000A606D, + 0x034, 0x000A504C, + 0x034, 0x000A402C, + 0x034, 0x000A3029, + 0x034, 0x000A2026, + 0x034, 0x000A1023, + 0x034, 0x000A0006, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3AD, + 0x034, 0x000A938A, + 0x034, 0x000A818C, + 0x034, 0x000A7189, + 0x034, 0x000A606D, + 0x034, 0x000A504C, + 0x034, 0x000A402C, + 0x034, 0x000A3029, + 0x034, 0x000A2026, + 0x034, 0x000A1023, + 0x034, 0x000A0006, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3F5, + 0x034, 0x000A93D2, + 0x034, 0x000A83CE, + 0x034, 0x000A7290, + 0x034, 0x000A628D, + 0x034, 0x000A528A, + 0x034, 0x000A4287, + 0x034, 0x000A308D, + 0x034, 0x000A208A, + 0x034, 0x000A1087, + 0x034, 0x000A0048, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AAFF7, + 0x034, 0x000A9FF6, + 0x034, 0x000A8FF3, + 0x034, 0x000A7FF0, + 0x034, 0x000A6FED, + 0x034, 0x000A5FEA, + 0x034, 0x000A4FE7, + 0x034, 0x000A3DEA, + 0x034, 0x000A2DE7, + 0x034, 0x000A1DE4, + 0x034, 0x000A0D48, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3AD, + 0x034, 0x000A938A, + 0x034, 0x000A818C, + 0x034, 0x000A7189, + 0x034, 0x000A606D, + 0x034, 0x000A504C, + 0x034, 0x000A402C, + 0x034, 0x000A3029, + 0x034, 0x000A2026, + 0x034, 0x000A1023, + 0x034, 0x000A0006, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x000AA3AD, + 0x034, 0x000A938A, + 0x034, 0x000A818C, + 0x034, 0x000A7189, + 0x034, 0x000A606D, + 0x034, 0x000A504C, + 0x034, 0x000A402C, + 0x034, 0x000A3029, + 0x034, 0x000A2026, + 0x034, 0x000A1023, + 0x034, 0x000A0006, + 0xA0000000, 0x00000000, + 0x034, 0x000AA794, + 0x034, 0x000A9791, + 0x034, 0x000A878E, + 0x034, 0x000A778B, + 0x034, 0x000A658D, + 0x034, 0x000A558A, + 0x034, 0x000A448D, + 0x034, 0x000A348A, + 0x034, 0x000A244C, + 0x034, 0x000A1449, + 0x034, 0x000A042B, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EF, + 0x034, 0x000893EC, + 0x034, 0x0008838C, + 0x034, 0x000871AD, + 0x034, 0x000861AA, + 0x034, 0x000850AD, + 0x034, 0x000840AA, + 0x034, 0x0008306A, + 0x034, 0x0008202D, + 0x034, 0x0008102A, + 0x034, 0x00080027, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3F1, + 0x034, 0x000892B1, + 0x034, 0x000881CF, + 0x034, 0x00087170, + 0x034, 0x0008616D, + 0x034, 0x0008516A, + 0x034, 0x00084167, + 0x034, 0x0008302F, + 0x034, 0x0008202C, + 0x034, 0x00081029, + 0x034, 0x00080026, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008AFF7, + 0x034, 0x00089FF6, + 0x034, 0x00088FF3, + 0x034, 0x00087FF0, + 0x034, 0x00086FED, + 0x034, 0x00085FEA, + 0x034, 0x00084FE7, + 0x034, 0x00083EC7, + 0x034, 0x00082EC4, + 0x034, 0x00081D4B, + 0x034, 0x00080D48, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x034, 0x0008A3EE, + 0x034, 0x000893AC, + 0x034, 0x0008838A, + 0x034, 0x0008718C, + 0x034, 0x00086189, + 0x034, 0x0008506D, + 0x034, 0x0008406A, + 0x034, 0x0008302C, + 0x034, 0x00082029, + 0x034, 0x00081026, + 0x034, 0x00080023, + 0xA0000000, 0x00000000, + 0x034, 0x0008A794, + 0x034, 0x00089791, + 0x034, 0x0008878E, + 0x034, 0x0008778B, + 0x034, 0x0008658D, + 0x034, 0x0008558A, + 0x034, 0x0008448D, + 0x034, 0x0008348A, + 0x034, 0x0008244C, + 0x034, 0x00081449, + 0x034, 0x0008042B, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0xA0000000, 0x00000000, + 0x0DF, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x035, 0x000006CC, + 0x035, 0x000086CC, + 0x035, 0x000106CC, + 0x035, 0x000206CC, + 0x035, 0x000286CC, + 0x035, 0x000306CC, + 0x035, 0x000406CC, + 0x035, 0x000486CC, + 0x035, 0x000506CC, + 0x035, 0x000806CC, + 0x035, 0x000886CC, + 0x035, 0x000906CC, + 0x035, 0x000A06CC, + 0x035, 0x000A86CC, + 0x035, 0x000B06CC, + 0x035, 0x000C06CC, + 0x035, 0x000C86CC, + 0x035, 0x000D06CC, + 0xA0000000, 0x00000000, + 0x035, 0x00000484, + 0x035, 0x00008484, + 0x035, 0x00010484, + 0x035, 0x00020584, + 0x035, 0x00028584, + 0x035, 0x00030584, + 0x035, 0x00040584, + 0x035, 0x00048584, + 0x035, 0x00050584, + 0x035, 0x000805FB, + 0x035, 0x000885FB, + 0x035, 0x000905FB, + 0x035, 0x000A05FB, + 0x035, 0x000A85FB, + 0x035, 0x000B05FB, + 0x035, 0x000C05FB, + 0x035, 0x000C85FB, + 0x035, 0x000D05FB, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x0DF, 0x00000001, + 0xA0000000, 0x00000000, + 0x0DF, 0x00000000, + 0xB0000000, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000473, + 0x036, 0x00008473, + 0x036, 0x00010473, + 0x036, 0x00020473, + 0x036, 0x00028473, + 0x036, 0x00030473, + 0x036, 0x00040473, + 0x036, 0x00048473, + 0x036, 0x00050473, + 0x036, 0x00080473, + 0x036, 0x00088473, + 0x036, 0x00090473, + 0x036, 0x000A0473, + 0x036, 0x000A8473, + 0x036, 0x000B0473, + 0x036, 0x000C0473, + 0x036, 0x000C8473, + 0x036, 0x000D0473, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x036, 0x00000475, + 0x036, 0x00008475, + 0x036, 0x00010475, + 0x036, 0x00020475, + 0x036, 0x00028475, + 0x036, 0x00030475, + 0x036, 0x00040475, + 0x036, 0x00048475, + 0x036, 0x00050475, + 0x036, 0x00080475, + 0x036, 0x00088475, + 0x036, 0x00090475, + 0x036, 0x000A0475, + 0x036, 0x000A8475, + 0x036, 0x000B0475, + 0x036, 0x000C0475, + 0x036, 0x000C8475, + 0x036, 0x000D0475, + 0xA0000000, 0x00000000, + 0x036, 0x00000474, + 0x036, 0x00008474, + 0x036, 0x00010474, + 0x036, 0x00020474, + 0x036, 0x00028474, + 0x036, 0x00030474, + 0x036, 0x00040474, + 0x036, 0x00048474, + 0x036, 0x00050474, + 0x036, 0x00080474, + 0x036, 0x00088474, + 0x036, 0x00090474, + 0x036, 0x000A0474, + 0x036, 0x000A8474, + 0x036, 0x000B0474, + 0x036, 0x000C0474, + 0x036, 0x000C8474, + 0x036, 0x000D0474, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x0EF, 0x00000004, + 0x037, 0x00000000, + 0x038, 0x0000514E, + 0x037, 0x00004000, + 0x038, 0x0000514E, + 0x037, 0x00008000, + 0x038, 0x0000514E, + 0x037, 0x00010000, + 0x038, 0x0000514E, + 0x037, 0x00014000, + 0x038, 0x0000514E, + 0x037, 0x00018000, + 0x038, 0x0000514E, + 0x037, 0x0001C000, + 0x038, 0x0000514E, + 0x037, 0x00020000, + 0x038, 0x0000514E, + 0x037, 0x00024000, + 0x038, 0x0000514E, + 0x037, 0x00028000, + 0x038, 0x0000514E, + 0x037, 0x0002C000, + 0x038, 0x0000714E, + 0x037, 0x00030000, + 0x038, 0x0000514E, + 0x037, 0x00034000, + 0x038, 0x0000514E, + 0x037, 0x00038000, + 0x038, 0x0000514E, + 0x037, 0x0003C000, + 0x038, 0x0000514E, + 0x037, 0x00040000, + 0x038, 0x0000514E, + 0x037, 0x00044000, + 0x038, 0x0000514E, + 0x037, 0x00048000, + 0x038, 0x0000514E, + 0x037, 0x00080000, + 0x038, 0x00005ECE, + 0x037, 0x00084000, + 0x038, 0x00005ECE, + 0x037, 0x00088000, + 0x038, 0x00005ECE, + 0x037, 0x00090000, + 0x038, 0x00005ECE, + 0x037, 0x00094000, + 0x038, 0x00005ECE, + 0x037, 0x00098000, + 0x038, 0x00005ECE, + 0x037, 0x0009C000, + 0x038, 0x00005ECE, + 0x037, 0x000A0000, + 0x038, 0x00005ECE, + 0x037, 0x000A4000, + 0x038, 0x00005ECE, + 0x037, 0x000A8000, + 0x038, 0x00005ECE, + 0x037, 0x000AC000, + 0x038, 0x00005ECE, + 0x037, 0x000B0000, + 0x038, 0x00005ECE, + 0x037, 0x000B4000, + 0x038, 0x00005ECE, + 0x037, 0x000B8000, + 0x038, 0x00005ECE, + 0x037, 0x000BC000, + 0x038, 0x00005ECE, + 0x037, 0x000C0000, + 0x038, 0x00005ECE, + 0x037, 0x000C4000, + 0x038, 0x00005ECE, + 0x037, 0x000C8000, + 0x038, 0x00005ECE, + 0x0EF, 0x00000000, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000008, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x03C, 0x0000007D, + 0x03C, 0x0000047D, + 0x03C, 0x0000087D, + 0x03C, 0x0000107D, + 0x03C, 0x0000147D, + 0x03C, 0x0000187D, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x00000275, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x00001275, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x00002275, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027F, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x0000127F, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x0000227F, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027F, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x0000127F, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x0000227F, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027F, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x0000127F, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x0000227F, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027F, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x0000127F, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x0000227F, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027F, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x0000127F, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x0000227F, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027F, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x0000127F, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x0000227F, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x03C, 0x0000027F, + 0x03C, 0x00000542, + 0x03C, 0x00000821, + 0x03C, 0x0000127F, + 0x03C, 0x00001542, + 0x03C, 0x00001821, + 0x03C, 0x0000227F, + 0x03C, 0x00002542, + 0x03C, 0x00002821, + 0xA0000000, 0x00000000, + 0x03C, 0x0000037E, + 0x03C, 0x00000575, + 0x03C, 0x00000971, + 0x03C, 0x0000127E, + 0x03C, 0x00001575, + 0x03C, 0x00001871, + 0x03C, 0x0000217E, + 0x03C, 0x00002575, + 0x03C, 0x00002871, + 0xB0000000, 0x00000000, + 0x0EF, 0x00000000, + 0x061, 0x000C0D47, + 0x062, 0x0000133C, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x063, 0x000750E7, + 0xA0000000, 0x00000000, + 0x063, 0x0007D0E7, + 0xB0000000, 0x00000000, + 0x064, 0x00014FEC, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x065, 0x000920D0, + 0xA0000000, 0x00000000, + 0x065, 0x000923FF, + 0xB0000000, 0x00000000, + 0x066, 0x00000040, + 0x057, 0x00050000, + 0x056, 0x00051DF0, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xA0000000, 0x00000000, + 0x055, 0x00082060, + 0xB0000000, 0x00000000, + +}; +const u32 array_mp_8814a_radiod_len = sizeof(array_mp_8814a_radiod) / sizeof(u32); + diff --git a/hal/phydm/rtl8814a/Hal8814_PhyTables.h b/hal/phydm/rtl8814a/Hal8814_PhyTables.h new file mode 100644 index 0000000..8789ab1 --- /dev/null +++ b/hal/phydm/rtl8814a/Hal8814_PhyTables.h @@ -0,0 +1,60 @@ +/* Auto-generated by tools/extract_8814a_phy_tables.py. + * Source: aircrack-ng/rtl8814au v5.8.5.1. */ + +#ifndef HAL8814_PHYTABLES_H +#define HAL8814_PHYTABLES_H + +#include "drv_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern const u32 array_mp_8814a_agc_tab[]; +extern const u32 array_mp_8814a_agc_tab_len; +extern const u32 array_mp_8814a_phy_reg[]; +extern const u32 array_mp_8814a_phy_reg_len; +extern const u32 array_mp_8814a_phy_reg_mp[]; +extern const u32 array_mp_8814a_phy_reg_mp_len; +extern const u32 array_mp_8814a_phy_reg_pg[]; +extern const u32 array_mp_8814a_phy_reg_pg_len; +extern const u32 array_mp_8814a_phy_reg_pg_type0[]; +extern const u32 array_mp_8814a_phy_reg_pg_type0_len; +extern const u32 array_mp_8814a_phy_reg_pg_type1[]; +extern const u32 array_mp_8814a_phy_reg_pg_type1_len; +extern const u32 array_mp_8814a_phy_reg_pg_type10[]; +extern const u32 array_mp_8814a_phy_reg_pg_type10_len; +extern const u32 array_mp_8814a_phy_reg_pg_type11[]; +extern const u32 array_mp_8814a_phy_reg_pg_type11_len; +extern const u32 array_mp_8814a_phy_reg_pg_type2[]; +extern const u32 array_mp_8814a_phy_reg_pg_type2_len; +extern const u32 array_mp_8814a_phy_reg_pg_type3[]; +extern const u32 array_mp_8814a_phy_reg_pg_type3_len; +extern const u32 array_mp_8814a_phy_reg_pg_type4[]; +extern const u32 array_mp_8814a_phy_reg_pg_type4_len; +extern const u32 array_mp_8814a_phy_reg_pg_type5[]; +extern const u32 array_mp_8814a_phy_reg_pg_type5_len; +extern const u32 array_mp_8814a_phy_reg_pg_type6[]; +extern const u32 array_mp_8814a_phy_reg_pg_type6_len; +extern const u32 array_mp_8814a_phy_reg_pg_type7[]; +extern const u32 array_mp_8814a_phy_reg_pg_type7_len; +extern const u32 array_mp_8814a_phy_reg_pg_type8[]; +extern const u32 array_mp_8814a_phy_reg_pg_type8_len; +extern const u32 array_mp_8814a_phy_reg_pg_type9[]; +extern const u32 array_mp_8814a_phy_reg_pg_type9_len; +extern const u32 array_mp_8814a_mac_reg[]; +extern const u32 array_mp_8814a_mac_reg_len; +extern const u32 array_mp_8814a_radioa[]; +extern const u32 array_mp_8814a_radioa_len; +extern const u32 array_mp_8814a_radiob[]; +extern const u32 array_mp_8814a_radiob_len; +extern const u32 array_mp_8814a_radioc[]; +extern const u32 array_mp_8814a_radioc_len; +extern const u32 array_mp_8814a_radiod[]; +extern const u32 array_mp_8814a_radiod_len; + +#ifdef __cplusplus +} +#endif + +#endif /* HAL8814_PHYTABLES_H */ diff --git a/hal/phydm/rtl8814a/hal8814areg_odm.h b/hal/phydm/rtl8814a/hal8814areg_odm.h new file mode 100644 index 0000000..23b9821 --- /dev/null +++ b/hal/phydm/rtl8814a/hal8814areg_odm.h @@ -0,0 +1,39 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +/* ************************************************************ + * File Name: hal8814areg_odm.h + * + * Description: + * + * This file is for RTL8814A register definition. + * + * + * ************************************************************ */ +#ifndef __HAL_8814A_REG_H__ +#define __HAL_8814A_REG_H__ + +/* + * Register Definition + * */ +#define TRX_ANTDIV_PATH 0x860 +#define RX_ANTDIV_PATH 0xb2c +#define ODM_R_A_AGC_CORE1_8814A 0xc50 + +/* + * Bitmap Definition + * */ +#define BIT_FA_RESET_8814A BIT(0) + +#endif diff --git a/hal/phydm/rtl8814a/halhwimg8814a_bb.c b/hal/phydm/rtl8814a/halhwimg8814a_bb.c new file mode 100644 index 0000000..73b0ece --- /dev/null +++ b/hal/phydm/rtl8814a/halhwimg8814a_bb.c @@ -0,0 +1,8041 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +/*Image2HeaderVersion: R3 1.5.6*/ +#include "mp_precomp.h" +#include "../phydm_precomp.h" + +#if (RTL8814A_SUPPORT == 1) +static boolean +check_positive(struct dm_struct *dm, + const u32 condition1, + const u32 condition2, + const u32 condition3, + const u32 condition4 +) +{ + u32 cond1 = condition1, cond2 = condition2, + cond3 = condition3, cond4 = condition4; + + u8 cut_version_for_para = + (dm->cut_version == ODM_CUT_A) ? 15 : dm->cut_version; + + u8 pkg_type_for_para = + (dm->package_type == 0) ? 15 : dm->package_type; + + u32 driver1 = cut_version_for_para << 24 | + (dm->support_interface & 0xF0) << 16 | + dm->support_platform << 16 | + pkg_type_for_para << 12 | + (dm->support_interface & 0x0F) << 8 | + dm->rfe_type; + + u32 driver2 = (dm->type_glna & 0xFF) << 0 | + (dm->type_gpa & 0xFF) << 8 | + (dm->type_alna & 0xFF) << 16 | + (dm->type_apa & 0xFF) << 24; + + u32 driver3 = 0; + + u32 driver4 = (dm->type_glna & 0xFF00) >> 8 | + (dm->type_gpa & 0xFF00) | + (dm->type_alna & 0xFF00) << 8 | + (dm->type_apa & 0xFF00) << 16; + + PHYDM_DBG(dm, ODM_COMP_INIT, + "===> %s (cond1, cond2, cond3, cond4) = (0x%X 0x%X 0x%X 0x%X)\n", + __func__, cond1, cond2, cond3, cond4); + PHYDM_DBG(dm, ODM_COMP_INIT, + "===> %s (driver1, driver2, driver3, driver4) = (0x%X 0x%X 0x%X 0x%X)\n", + __func__, driver1, driver2, driver3, driver4); + + PHYDM_DBG(dm, ODM_COMP_INIT, + " (Platform, Interface) = (0x%X, 0x%X)\n", + dm->support_platform, dm->support_interface); + PHYDM_DBG(dm, ODM_COMP_INIT, " (RFE, Package) = (0x%X, 0x%X)\n", + dm->rfe_type, dm->package_type); + + /*============== value Defined Check ===============*/ + /*cut version [27:24] need to do value check*/ + if (((cond1 & 0x0F000000) != 0) && + ((cond1 & 0x0F000000) != (driver1 & 0x0F000000))) + return false; + + /*pkg type [15:12] need to do value check*/ + if (((cond1 & 0x0000F000) != 0) && + ((cond1 & 0x0000F000) != (driver1 & 0x0000F000))) + return false; + + /*interface [11:8] need to do value check*/ + if (((cond1 & 0x00000F00) != 0) && + ((cond1 & 0x00000F00) != (driver1 & 0x00000F00))) + return false; + /*=============== Bit Defined Check ================*/ + /* We don't care [31:28] */ + + cond1 &= 0x000000FF; + driver1 &= 0x000000FF; + + if (cond1 == driver1) + return true; + else + return false; +} + + +/****************************************************************************** + * agc_tab.TXT + ******************************************************************************/ + +const u32 array_mp_8814a_agc_tab[] = { + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000003, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000003, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0xA0000000, 0x00000000, + 0x81C, 0xFF000003, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x81C, 0xFD020003, + 0x81C, 0xFC040003, + 0x81C, 0xFB060003, + 0x81C, 0xFA080003, + 0x81C, 0xF90A0003, + 0x81C, 0xF80C0003, + 0x81C, 0xF70E0003, + 0x81C, 0xF6100003, + 0x81C, 0xF5120003, + 0x81C, 0xF4140003, + 0x81C, 0xF3160003, + 0x81C, 0xF2180003, + 0x81C, 0xF11A0003, + 0x81C, 0xF01C0003, + 0x81C, 0xEF1E0003, + 0x81C, 0xEE200003, + 0x81C, 0xED220003, + 0x81C, 0xCF240003, + 0x81C, 0xCE260003, + 0x81C, 0xCD280003, + 0x81C, 0xCC2A0003, + 0x81C, 0xCB2C0003, + 0x81C, 0xCA2E0003, + 0x81C, 0xC9300003, + 0x81C, 0xC8320003, + 0x81C, 0xC7340003, + 0x81C, 0xC6360003, + 0x81C, 0xC5380003, + 0x81C, 0xC43A0003, + 0x81C, 0xA63C0003, + 0x81C, 0xA53E0003, + 0x81C, 0xA4400003, + 0x81C, 0xA3420003, + 0x81C, 0xA2440003, + 0x81C, 0xA1460003, + 0x81C, 0x86480003, + 0x81C, 0x854A0003, + 0x81C, 0x844C0003, + 0x81C, 0x834E0003, + 0x81C, 0x66500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x435C0003, + 0x81C, 0x425E0003, + 0x81C, 0x41600003, + 0x81C, 0x27620003, + 0x81C, 0x26640003, + 0x81C, 0x25660003, + 0x81C, 0x24680003, + 0x81C, 0x236A0003, + 0x81C, 0x226C0003, + 0x81C, 0x216E0003, + 0x81C, 0x21700003, + 0x81C, 0x21720003, + 0x81C, 0x21740003, + 0x81C, 0x21760003, + 0x81C, 0x21780003, + 0x81C, 0x217A0003, + 0x81C, 0x217C0003, + 0x81C, 0x217E0003, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000003, + 0x81C, 0xFE020003, + 0x81C, 0xFD040003, + 0x81C, 0xFC060003, + 0x81C, 0xFB080003, + 0x81C, 0xFA0A0003, + 0x81C, 0xF90C0003, + 0x81C, 0xF80E0003, + 0x81C, 0xF7100003, + 0x81C, 0xF6120003, + 0x81C, 0xF5140003, + 0x81C, 0xF4160003, + 0x81C, 0xF3180003, + 0x81C, 0xF21A0003, + 0x81C, 0xF11C0003, + 0x81C, 0xF01E0003, + 0x81C, 0xEF200003, + 0x81C, 0xEE220003, + 0x81C, 0xED240003, + 0x81C, 0xEC260003, + 0x81C, 0xEB280003, + 0x81C, 0xEA2A0003, + 0x81C, 0xE92C0003, + 0x81C, 0xE82E0003, + 0x81C, 0xE7300003, + 0x81C, 0xE6320003, + 0x81C, 0xE5340003, + 0x81C, 0xE4360003, + 0x81C, 0xE3380003, + 0x81C, 0xC53A0003, + 0x81C, 0xC43C0003, + 0x81C, 0xC33E0003, + 0x81C, 0xC2400003, + 0x81C, 0xC1420003, + 0x81C, 0xA8440003, + 0x81C, 0xA7460003, + 0x81C, 0xA6480003, + 0x81C, 0xA54A0003, + 0x81C, 0xA44C0003, + 0x81C, 0xA34E0003, + 0x81C, 0xA2500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x475C0003, + 0x81C, 0x465E0003, + 0x81C, 0x45600003, + 0x81C, 0x44620003, + 0x81C, 0x43640003, + 0x81C, 0x42660003, + 0x81C, 0x41680003, + 0x81C, 0x416A0003, + 0x81C, 0x416C0003, + 0x81C, 0x416E0003, + 0x81C, 0x41700003, + 0x81C, 0x41720003, + 0x81C, 0x41740003, + 0x81C, 0x41760003, + 0x81C, 0x41780003, + 0x81C, 0x417A0003, + 0x81C, 0x417C0003, + 0x81C, 0x417E0003, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x81C, 0xFD020003, + 0x81C, 0xFC040003, + 0x81C, 0xFB060003, + 0x81C, 0xFA080003, + 0x81C, 0xF90A0003, + 0x81C, 0xF80C0003, + 0x81C, 0xF70E0003, + 0x81C, 0xF6100003, + 0x81C, 0xF5120003, + 0x81C, 0xF4140003, + 0x81C, 0xF3160003, + 0x81C, 0xF2180003, + 0x81C, 0xF11A0003, + 0x81C, 0xF01C0003, + 0x81C, 0xEF1E0003, + 0x81C, 0xEE200003, + 0x81C, 0xED220003, + 0x81C, 0xEC240003, + 0x81C, 0xEB260003, + 0x81C, 0xEA280003, + 0x81C, 0xE92A0003, + 0x81C, 0xE82C0003, + 0x81C, 0xE72E0003, + 0x81C, 0xE6300003, + 0x81C, 0xE5320003, + 0x81C, 0xE4340003, + 0x81C, 0xE3360003, + 0x81C, 0xC6380003, + 0x81C, 0xC53A0003, + 0x81C, 0xC43C0003, + 0x81C, 0xC33E0003, + 0x81C, 0xC2400003, + 0x81C, 0xA9420003, + 0x81C, 0xA8440003, + 0x81C, 0xA7460003, + 0x81C, 0xA6480003, + 0x81C, 0xA54A0003, + 0x81C, 0xA44C0003, + 0x81C, 0xA34E0003, + 0x81C, 0x66500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x49580003, + 0x81C, 0x485A0003, + 0x81C, 0x475C0003, + 0x81C, 0x465E0003, + 0x81C, 0x45600003, + 0x81C, 0x44620003, + 0x81C, 0x43640003, + 0x81C, 0x42660003, + 0x81C, 0x41680003, + 0x81C, 0x416A0003, + 0x81C, 0x416C0003, + 0x81C, 0x416E0003, + 0x81C, 0x41700003, + 0x81C, 0x41720003, + 0x81C, 0x41740003, + 0x81C, 0x41760003, + 0x81C, 0x41780003, + 0x81C, 0x417A0003, + 0x81C, 0x417C0003, + 0x81C, 0x417E0003, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000003, + 0x81C, 0xFE020003, + 0x81C, 0xFD040003, + 0x81C, 0xFC060003, + 0x81C, 0xFB080003, + 0x81C, 0xFA0A0003, + 0x81C, 0xF90C0003, + 0x81C, 0xF80E0003, + 0x81C, 0xF7100003, + 0x81C, 0xF6120003, + 0x81C, 0xF5140003, + 0x81C, 0xF4160003, + 0x81C, 0xF3180003, + 0x81C, 0xF21A0003, + 0x81C, 0xF11C0003, + 0x81C, 0xF01E0003, + 0x81C, 0xEF200003, + 0x81C, 0xEE220003, + 0x81C, 0xED240003, + 0x81C, 0xEC260003, + 0x81C, 0xEB280003, + 0x81C, 0xEA2A0003, + 0x81C, 0xE92C0003, + 0x81C, 0xE82E0003, + 0x81C, 0xE7300003, + 0x81C, 0xE6320003, + 0x81C, 0xE5340003, + 0x81C, 0xE4360003, + 0x81C, 0xE3380003, + 0x81C, 0xC53A0003, + 0x81C, 0xC43C0003, + 0x81C, 0xC33E0003, + 0x81C, 0xC2400003, + 0x81C, 0xC1420003, + 0x81C, 0xA8440003, + 0x81C, 0xA7460003, + 0x81C, 0xA6480003, + 0x81C, 0xA54A0003, + 0x81C, 0xA44C0003, + 0x81C, 0xA34E0003, + 0x81C, 0xA2500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x475C0003, + 0x81C, 0x465E0003, + 0x81C, 0x45600003, + 0x81C, 0x44620003, + 0x81C, 0x43640003, + 0x81C, 0x42660003, + 0x81C, 0x41680003, + 0x81C, 0x416A0003, + 0x81C, 0x416C0003, + 0x81C, 0x416E0003, + 0x81C, 0x41700003, + 0x81C, 0x41720003, + 0x81C, 0x41740003, + 0x81C, 0x41760003, + 0x81C, 0x41780003, + 0x81C, 0x417A0003, + 0x81C, 0x417C0003, + 0x81C, 0x417E0003, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x81C, 0xFD020003, + 0x81C, 0xFC040003, + 0x81C, 0xFB060003, + 0x81C, 0xFA080003, + 0x81C, 0xF90A0003, + 0x81C, 0xF80C0003, + 0x81C, 0xF70E0003, + 0x81C, 0xF6100003, + 0x81C, 0xF5120003, + 0x81C, 0xF4140003, + 0x81C, 0xF3160003, + 0x81C, 0xF2180003, + 0x81C, 0xF11A0003, + 0x81C, 0xF01C0003, + 0x81C, 0xEF1E0003, + 0x81C, 0xEE200003, + 0x81C, 0xED220003, + 0x81C, 0xEC240003, + 0x81C, 0xEB260003, + 0x81C, 0xEA280003, + 0x81C, 0xE92A0003, + 0x81C, 0xE82C0003, + 0x81C, 0xE72E0003, + 0x81C, 0xE6300003, + 0x81C, 0xE5320003, + 0x81C, 0xE4340003, + 0x81C, 0xE3360003, + 0x81C, 0xC6380003, + 0x81C, 0xC53A0003, + 0x81C, 0xC43C0003, + 0x81C, 0xC33E0003, + 0x81C, 0xC2400003, + 0x81C, 0xA9420003, + 0x81C, 0xA8440003, + 0x81C, 0xA7460003, + 0x81C, 0xA6480003, + 0x81C, 0xA54A0003, + 0x81C, 0xA44C0003, + 0x81C, 0xA34E0003, + 0x81C, 0x66500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x49580003, + 0x81C, 0x485A0003, + 0x81C, 0x475C0003, + 0x81C, 0x465E0003, + 0x81C, 0x45600003, + 0x81C, 0x44620003, + 0x81C, 0x43640003, + 0x81C, 0x42660003, + 0x81C, 0x41680003, + 0x81C, 0x416A0003, + 0x81C, 0x416C0003, + 0x81C, 0x416E0003, + 0x81C, 0x41700003, + 0x81C, 0x41720003, + 0x81C, 0x41740003, + 0x81C, 0x41760003, + 0x81C, 0x41780003, + 0x81C, 0x417A0003, + 0x81C, 0x417C0003, + 0x81C, 0x417E0003, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xDF000003, + 0x81C, 0xDF020003, + 0x81C, 0xDF040003, + 0x81C, 0xDE060003, + 0x81C, 0xDD080003, + 0x81C, 0xDC0A0003, + 0x81C, 0xDB0C0003, + 0x81C, 0xDA0E0003, + 0x81C, 0xD9100003, + 0x81C, 0xD8120003, + 0x81C, 0xD7140003, + 0x81C, 0xD6160003, + 0x81C, 0xD5180003, + 0x81C, 0xD41A0003, + 0x81C, 0xD31C0003, + 0x81C, 0xD21E0003, + 0x81C, 0xD1200003, + 0x81C, 0xD0220003, + 0x81C, 0xCF240003, + 0x81C, 0xCE260003, + 0x81C, 0xCD280003, + 0x81C, 0xCC2A0003, + 0x81C, 0xCB2C0003, + 0x81C, 0xCA2E0003, + 0x81C, 0xC9300003, + 0x81C, 0xC8320003, + 0x81C, 0xC7340003, + 0x81C, 0xC6360003, + 0x81C, 0xC5380003, + 0x81C, 0xA73A0003, + 0x81C, 0xA63C0003, + 0x81C, 0xA53E0003, + 0x81C, 0xA4400003, + 0x81C, 0xA3420003, + 0x81C, 0xA2440003, + 0x81C, 0x87460003, + 0x81C, 0x86480003, + 0x81C, 0x854A0003, + 0x81C, 0x844C0003, + 0x81C, 0x834E0003, + 0x81C, 0x82500003, + 0x81C, 0x81520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x445C0003, + 0x81C, 0x435E0003, + 0x81C, 0x42600003, + 0x81C, 0x41620003, + 0x81C, 0x27640003, + 0x81C, 0x26660003, + 0x81C, 0x25680003, + 0x81C, 0x246A0003, + 0x81C, 0x236C0003, + 0x81C, 0x226E0003, + 0x81C, 0x21700003, + 0x81C, 0x21720003, + 0x81C, 0x21740003, + 0x81C, 0x21760003, + 0x81C, 0x21780003, + 0x81C, 0x217A0003, + 0x81C, 0x217C0003, + 0x81C, 0x217E0003, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000003, + 0x81C, 0xFE020003, + 0x81C, 0xFD040003, + 0x81C, 0xFC060003, + 0x81C, 0xFB080003, + 0x81C, 0xFA0A0003, + 0x81C, 0xF90C0003, + 0x81C, 0xF80E0003, + 0x81C, 0xF7100003, + 0x81C, 0xF6120003, + 0x81C, 0xF5140003, + 0x81C, 0xF4160003, + 0x81C, 0xF3180003, + 0x81C, 0xF21A0003, + 0x81C, 0xF11C0003, + 0x81C, 0xF01E0003, + 0x81C, 0xEF200003, + 0x81C, 0xEE220003, + 0x81C, 0xED240003, + 0x81C, 0xEC260003, + 0x81C, 0xEB280003, + 0x81C, 0xEA2A0003, + 0x81C, 0xE92C0003, + 0x81C, 0xE82E0003, + 0x81C, 0xE7300003, + 0x81C, 0xE6320003, + 0x81C, 0xE5340003, + 0x81C, 0xE4360003, + 0x81C, 0xE3380003, + 0x81C, 0xC53A0003, + 0x81C, 0xC43C0003, + 0x81C, 0xC33E0003, + 0x81C, 0xC2400003, + 0x81C, 0xC1420003, + 0x81C, 0xA8440003, + 0x81C, 0xA7460003, + 0x81C, 0xA6480003, + 0x81C, 0xA54A0003, + 0x81C, 0xA44C0003, + 0x81C, 0xA34E0003, + 0x81C, 0xA2500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x475C0003, + 0x81C, 0x465E0003, + 0x81C, 0x45600003, + 0x81C, 0x44620003, + 0x81C, 0x43640003, + 0x81C, 0x42660003, + 0x81C, 0x41680003, + 0x81C, 0x416A0003, + 0x81C, 0x416C0003, + 0x81C, 0x416E0003, + 0x81C, 0x41700003, + 0x81C, 0x41720003, + 0x81C, 0x41740003, + 0x81C, 0x41760003, + 0x81C, 0x41780003, + 0x81C, 0x417A0003, + 0x81C, 0x417C0003, + 0x81C, 0x417E0003, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xDF000003, + 0x81C, 0xDF020003, + 0x81C, 0xDF040003, + 0x81C, 0xDE060003, + 0x81C, 0xDD080003, + 0x81C, 0xDC0A0003, + 0x81C, 0xDB0C0003, + 0x81C, 0xDA0E0003, + 0x81C, 0xD9100003, + 0x81C, 0xD8120003, + 0x81C, 0xD7140003, + 0x81C, 0xD6160003, + 0x81C, 0xD5180003, + 0x81C, 0xD41A0003, + 0x81C, 0xD31C0003, + 0x81C, 0xD21E0003, + 0x81C, 0xD1200003, + 0x81C, 0xD0220003, + 0x81C, 0xCF240003, + 0x81C, 0xCE260003, + 0x81C, 0xCD280003, + 0x81C, 0xCC2A0003, + 0x81C, 0xCB2C0003, + 0x81C, 0xCA2E0003, + 0x81C, 0xC9300003, + 0x81C, 0xC8320003, + 0x81C, 0xC7340003, + 0x81C, 0xC6360003, + 0x81C, 0xC5380003, + 0x81C, 0xA73A0003, + 0x81C, 0xA63C0003, + 0x81C, 0xA53E0003, + 0x81C, 0xA4400003, + 0x81C, 0xA3420003, + 0x81C, 0xA2440003, + 0x81C, 0x87460003, + 0x81C, 0x86480003, + 0x81C, 0x854A0003, + 0x81C, 0x844C0003, + 0x81C, 0x834E0003, + 0x81C, 0x82500003, + 0x81C, 0x81520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x445C0003, + 0x81C, 0x435E0003, + 0x81C, 0x42600003, + 0x81C, 0x41620003, + 0x81C, 0x27640003, + 0x81C, 0x26660003, + 0x81C, 0x25680003, + 0x81C, 0x246A0003, + 0x81C, 0x236C0003, + 0x81C, 0x226E0003, + 0x81C, 0x21700003, + 0x81C, 0x21720003, + 0x81C, 0x21740003, + 0x81C, 0x21760003, + 0x81C, 0x21780003, + 0x81C, 0x217A0003, + 0x81C, 0x217C0003, + 0x81C, 0x217E0003, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x81C, 0xFE020003, + 0x81C, 0xFD040003, + 0x81C, 0xFC060003, + 0x81C, 0xFB080003, + 0x81C, 0xFA0A0003, + 0x81C, 0xF90C0003, + 0x81C, 0xF80E0003, + 0x81C, 0xF7100003, + 0x81C, 0xF6120003, + 0x81C, 0xF5140003, + 0x81C, 0xF4160003, + 0x81C, 0xF3180003, + 0x81C, 0xF21A0003, + 0x81C, 0xF11C0003, + 0x81C, 0xF01E0003, + 0x81C, 0xEF200003, + 0x81C, 0xEE220003, + 0x81C, 0xED240003, + 0x81C, 0x0F260003, + 0x81C, 0x0E280003, + 0x81C, 0x0D2A0003, + 0x81C, 0x0C2C0003, + 0x81C, 0x0B2E0003, + 0x81C, 0x0A300003, + 0x81C, 0x09320003, + 0x81C, 0x08340003, + 0x81C, 0x07360003, + 0x81C, 0x06380003, + 0x81C, 0x053A0003, + 0x81C, 0x043C0003, + 0x81C, 0x033E0003, + 0x81C, 0x23400003, + 0x81C, 0x22420003, + 0x81C, 0xA8440003, + 0x81C, 0xA7460003, + 0x81C, 0xA6480003, + 0x81C, 0xA54A0003, + 0x81C, 0xA44C0003, + 0x81C, 0x684E0003, + 0x81C, 0x67500003, + 0x81C, 0x66520003, + 0x81C, 0x65540003, + 0x81C, 0x64560003, + 0x81C, 0x63580003, + 0x81C, 0x625A0003, + 0x81C, 0x615C0003, + 0x81C, 0x475E0003, + 0x81C, 0x46600003, + 0x81C, 0x45620003, + 0x81C, 0x44640003, + 0x81C, 0x43660003, + 0x81C, 0x42680003, + 0x81C, 0x416A0003, + 0x81C, 0x416C0003, + 0x81C, 0x416E0003, + 0x81C, 0x41700003, + 0x81C, 0x41720003, + 0x81C, 0x41740003, + 0x81C, 0x41760003, + 0x81C, 0x41780003, + 0x81C, 0x417A0003, + 0x81C, 0x417C0003, + 0x81C, 0x417E0003, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000003, + 0x81C, 0xFE020003, + 0x81C, 0xFD040003, + 0x81C, 0xFC060003, + 0x81C, 0xFB080003, + 0x81C, 0xFA0A0003, + 0x81C, 0xF90C0003, + 0x81C, 0xF80E0003, + 0x81C, 0xF7100003, + 0x81C, 0xF6120003, + 0x81C, 0xF5140003, + 0x81C, 0xF4160003, + 0x81C, 0xF3180003, + 0x81C, 0xF21A0003, + 0x81C, 0xF11C0003, + 0x81C, 0xF01E0003, + 0x81C, 0xEF200003, + 0x81C, 0xEE220003, + 0x81C, 0xED240003, + 0x81C, 0xEC260003, + 0x81C, 0xEB280003, + 0x81C, 0xEA2A0003, + 0x81C, 0xE92C0003, + 0x81C, 0xE72E0003, + 0x81C, 0xE6300003, + 0x81C, 0xE5320003, + 0x81C, 0x08340003, + 0x81C, 0x07360003, + 0x81C, 0x06380003, + 0x81C, 0x053A0003, + 0x81C, 0x043C0003, + 0x81C, 0x033E0003, + 0x81C, 0x02400003, + 0x81C, 0xA9420003, + 0x81C, 0xA8440003, + 0x81C, 0xA7460003, + 0x81C, 0xA6480003, + 0x81C, 0xA54A0003, + 0x81C, 0x684C0003, + 0x81C, 0x674E0003, + 0x81C, 0x66500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x475C0003, + 0x81C, 0x465E0003, + 0x81C, 0x45600003, + 0x81C, 0x44620003, + 0x81C, 0x43640003, + 0x81C, 0x42660003, + 0x81C, 0x41680003, + 0x81C, 0x416A0003, + 0x81C, 0x416C0003, + 0x81C, 0x416E0003, + 0x81C, 0x41700003, + 0x81C, 0x41720003, + 0x81C, 0x41740003, + 0x81C, 0x41760003, + 0x81C, 0x41780003, + 0x81C, 0x417A0003, + 0x81C, 0x417C0003, + 0x81C, 0x417E0003, + 0xA0000000, 0x00000000, + 0x81C, 0xFE000003, + 0x81C, 0xFD020003, + 0x81C, 0xFC040003, + 0x81C, 0xFB060003, + 0x81C, 0xFA080003, + 0x81C, 0xF90A0003, + 0x81C, 0xF80C0003, + 0x81C, 0xF70E0003, + 0x81C, 0xF6100003, + 0x81C, 0xF5120003, + 0x81C, 0xF4140003, + 0x81C, 0xF3160003, + 0x81C, 0xF2180003, + 0x81C, 0xF11A0003, + 0x81C, 0xF01C0003, + 0x81C, 0xEF1E0003, + 0x81C, 0xEE200003, + 0x81C, 0xED220003, + 0x81C, 0xCF240003, + 0x81C, 0xCE260003, + 0x81C, 0xCD280003, + 0x81C, 0xCC2A0003, + 0x81C, 0xCB2C0003, + 0x81C, 0xCA2E0003, + 0x81C, 0xC9300003, + 0x81C, 0xC8320003, + 0x81C, 0xC7340003, + 0x81C, 0xC6360003, + 0x81C, 0xC5380003, + 0x81C, 0xC43A0003, + 0x81C, 0xA63C0003, + 0x81C, 0xA53E0003, + 0x81C, 0xA4400003, + 0x81C, 0xA3420003, + 0x81C, 0xA2440003, + 0x81C, 0xA1460003, + 0x81C, 0x86480003, + 0x81C, 0x854A0003, + 0x81C, 0x844C0003, + 0x81C, 0x834E0003, + 0x81C, 0x66500003, + 0x81C, 0x65520003, + 0x81C, 0x64540003, + 0x81C, 0x63560003, + 0x81C, 0x62580003, + 0x81C, 0x615A0003, + 0x81C, 0x435C0003, + 0x81C, 0x425E0003, + 0x81C, 0x41600003, + 0x81C, 0x27620003, + 0x81C, 0x26640003, + 0x81C, 0x25660003, + 0x81C, 0x24680003, + 0x81C, 0x236A0003, + 0x81C, 0x226C0003, + 0x81C, 0x216E0003, + 0x81C, 0x21700003, + 0x81C, 0x21720003, + 0x81C, 0x21740003, + 0x81C, 0x21760003, + 0x81C, 0x21780003, + 0x81C, 0x217A0003, + 0x81C, 0x217C0003, + 0x81C, 0x217E0003, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF9000103, + 0x81C, 0xF8020103, + 0x81C, 0xF7040103, + 0x81C, 0xF6060103, + 0x81C, 0xF5080103, + 0x81C, 0xF40A0103, + 0x81C, 0xF30C0103, + 0x81C, 0xF20E0103, + 0x81C, 0xF1100103, + 0x81C, 0xF0120103, + 0x81C, 0xEF140103, + 0x81C, 0xEE160103, + 0x81C, 0xED180103, + 0x81C, 0xEC1A0103, + 0x81C, 0xEB1C0103, + 0x81C, 0xEA1E0103, + 0x81C, 0xE9200103, + 0x81C, 0xE8220103, + 0x81C, 0xE7240103, + 0x81C, 0xE6260103, + 0x81C, 0xE5280103, + 0x81C, 0xE42A0103, + 0x81C, 0xE32C0103, + 0x81C, 0xC32E0103, + 0x81C, 0xC2300103, + 0x81C, 0xC1320103, + 0x81C, 0xA5340103, + 0x81C, 0xA4360103, + 0x81C, 0xA3380103, + 0x81C, 0xA23A0103, + 0x81C, 0xA13C0103, + 0x81C, 0x843E0103, + 0x81C, 0x83400103, + 0x81C, 0x82420103, + 0x81C, 0x81440103, + 0x81C, 0x64460103, + 0x81C, 0x63480103, + 0x81C, 0x624A0103, + 0x81C, 0x614C0103, + 0x81C, 0x444E0103, + 0x81C, 0x43500103, + 0x81C, 0x42520103, + 0x81C, 0x41540103, + 0x81C, 0x25560103, + 0x81C, 0x24580103, + 0x81C, 0x235A0103, + 0x81C, 0x065C0103, + 0x81C, 0x055E0103, + 0x81C, 0x04600103, + 0x81C, 0x03620103, + 0x81C, 0x02640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF8000103, + 0x81C, 0xF7020103, + 0x81C, 0xF6040103, + 0x81C, 0xF5060103, + 0x81C, 0xF4080103, + 0x81C, 0xF30A0103, + 0x81C, 0xF20C0103, + 0x81C, 0xF10E0103, + 0x81C, 0xF0100103, + 0x81C, 0xEF120103, + 0x81C, 0xEE140103, + 0x81C, 0xED160103, + 0x81C, 0xEC180103, + 0x81C, 0xEB1A0103, + 0x81C, 0xEA1C0103, + 0x81C, 0xE91E0103, + 0x81C, 0xE8200103, + 0x81C, 0xE7220103, + 0x81C, 0xE6240103, + 0x81C, 0xE5260103, + 0x81C, 0xE4280103, + 0x81C, 0xE32A0103, + 0x81C, 0xE22C0103, + 0x81C, 0xE12E0103, + 0x81C, 0xA5300103, + 0x81C, 0xA4320103, + 0x81C, 0xA3340103, + 0x81C, 0xA2360103, + 0x81C, 0xA1380103, + 0x81C, 0x843A0103, + 0x81C, 0x833C0103, + 0x81C, 0x823E0103, + 0x81C, 0x81400103, + 0x81C, 0x64420103, + 0x81C, 0x63440103, + 0x81C, 0x62460103, + 0x81C, 0x61480103, + 0x81C, 0x454A0103, + 0x81C, 0x444C0103, + 0x81C, 0x434E0103, + 0x81C, 0x42500103, + 0x81C, 0x25520103, + 0x81C, 0x24540103, + 0x81C, 0x23560103, + 0x81C, 0x06580103, + 0x81C, 0x055A0103, + 0x81C, 0x045C0103, + 0x81C, 0x035E0103, + 0x81C, 0x02600103, + 0x81C, 0x01620103, + 0x81C, 0x01640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFC000103, + 0x81C, 0xFB020103, + 0x81C, 0xFA040103, + 0x81C, 0xF9060103, + 0x81C, 0xF8080103, + 0x81C, 0xF70A0103, + 0x81C, 0xF60C0103, + 0x81C, 0xF50E0103, + 0x81C, 0xF4100103, + 0x81C, 0xF3120103, + 0x81C, 0xF2140103, + 0x81C, 0xF1160103, + 0x81C, 0xF0180103, + 0x81C, 0xEF1A0103, + 0x81C, 0xEE1C0103, + 0x81C, 0xED1E0103, + 0x81C, 0xEC200103, + 0x81C, 0xEB220103, + 0x81C, 0xEA240103, + 0x81C, 0xE9260103, + 0x81C, 0xE8280103, + 0x81C, 0xE72A0103, + 0x81C, 0xE62C0103, + 0x81C, 0xE52E0103, + 0x81C, 0xE4300103, + 0x81C, 0xE3320103, + 0x81C, 0xE2340103, + 0x81C, 0xE1360103, + 0x81C, 0x87380103, + 0x81C, 0x863A0103, + 0x81C, 0x853C0103, + 0x81C, 0x843E0103, + 0x81C, 0x83400103, + 0x81C, 0x82420103, + 0x81C, 0x81440103, + 0x81C, 0x64460103, + 0x81C, 0x63480103, + 0x81C, 0x624A0103, + 0x81C, 0x464C0103, + 0x81C, 0x454E0103, + 0x81C, 0x44500103, + 0x81C, 0x43520103, + 0x81C, 0x26540103, + 0x81C, 0x25560103, + 0x81C, 0x24580103, + 0x81C, 0x075A0103, + 0x81C, 0x065C0103, + 0x81C, 0x055E0103, + 0x81C, 0x04600103, + 0x81C, 0x03620103, + 0x81C, 0x02640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF9000103, + 0x81C, 0xF8020103, + 0x81C, 0xF7040103, + 0x81C, 0xF6060103, + 0x81C, 0xF5080103, + 0x81C, 0xF40A0103, + 0x81C, 0xF30C0103, + 0x81C, 0xF20E0103, + 0x81C, 0xF1100103, + 0x81C, 0xF0120103, + 0x81C, 0xEF140103, + 0x81C, 0xEE160103, + 0x81C, 0xED180103, + 0x81C, 0xEC1A0103, + 0x81C, 0xEB1C0103, + 0x81C, 0xEA1E0103, + 0x81C, 0xE9200103, + 0x81C, 0xE8220103, + 0x81C, 0xE7240103, + 0x81C, 0xE6260103, + 0x81C, 0xE5280103, + 0x81C, 0xE42A0103, + 0x81C, 0xE32C0103, + 0x81C, 0xE22E0103, + 0x81C, 0xA6300103, + 0x81C, 0xA5320103, + 0x81C, 0xA4340103, + 0x81C, 0xA3360103, + 0x81C, 0xA2380103, + 0x81C, 0xA13A0103, + 0x81C, 0x843C0103, + 0x81C, 0x833E0103, + 0x81C, 0x82400103, + 0x81C, 0x81420103, + 0x81C, 0x64440103, + 0x81C, 0x63460103, + 0x81C, 0x62480103, + 0x81C, 0x614A0103, + 0x81C, 0x444C0103, + 0x81C, 0x434E0103, + 0x81C, 0x42500103, + 0x81C, 0x41520103, + 0x81C, 0x25540103, + 0x81C, 0x24560103, + 0x81C, 0x23580103, + 0x81C, 0x225A0103, + 0x81C, 0x055C0103, + 0x81C, 0x045E0103, + 0x81C, 0x03600103, + 0x81C, 0x02620103, + 0x81C, 0x01640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFD000103, + 0x81C, 0xFC020103, + 0x81C, 0xFB040103, + 0x81C, 0xFA060103, + 0x81C, 0xF9080103, + 0x81C, 0xF80A0103, + 0x81C, 0xF70C0103, + 0x81C, 0xF60E0103, + 0x81C, 0xF5100103, + 0x81C, 0xF4120103, + 0x81C, 0xF3140103, + 0x81C, 0xF2160103, + 0x81C, 0xF1180103, + 0x81C, 0xF01A0103, + 0x81C, 0xEF1C0103, + 0x81C, 0xEE1E0103, + 0x81C, 0xED200103, + 0x81C, 0xEC220103, + 0x81C, 0xEB240103, + 0x81C, 0xEA260103, + 0x81C, 0xE9280103, + 0x81C, 0xE82A0103, + 0x81C, 0xE72C0103, + 0x81C, 0xE62E0103, + 0x81C, 0xE5300103, + 0x81C, 0xE4320103, + 0x81C, 0xE3340103, + 0x81C, 0xE2360103, + 0x81C, 0xE1380103, + 0x81C, 0xA33A0103, + 0x81C, 0xA23C0103, + 0x81C, 0xA13E0103, + 0x81C, 0x84400103, + 0x81C, 0x83420103, + 0x81C, 0x82440103, + 0x81C, 0x81460103, + 0x81C, 0x64480103, + 0x81C, 0x634A0103, + 0x81C, 0x624C0103, + 0x81C, 0x614E0103, + 0x81C, 0x45500103, + 0x81C, 0x44520103, + 0x81C, 0x43540103, + 0x81C, 0x42560103, + 0x81C, 0x25580103, + 0x81C, 0x245A0103, + 0x81C, 0x235C0103, + 0x81C, 0x065E0103, + 0x81C, 0x05600103, + 0x81C, 0x04620103, + 0x81C, 0x03640103, + 0x81C, 0x02660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFA000103, + 0x81C, 0xF9020103, + 0x81C, 0xF8040103, + 0x81C, 0xF7060103, + 0x81C, 0xF6080103, + 0x81C, 0xF50A0103, + 0x81C, 0xF40C0103, + 0x81C, 0xF30E0103, + 0x81C, 0xF2100103, + 0x81C, 0xF1120103, + 0x81C, 0xF0140103, + 0x81C, 0xEF160103, + 0x81C, 0xEE180103, + 0x81C, 0xED1A0103, + 0x81C, 0xEC1C0103, + 0x81C, 0xEB1E0103, + 0x81C, 0xEA200103, + 0x81C, 0xE9220103, + 0x81C, 0xE8240103, + 0x81C, 0xE7260103, + 0x81C, 0xE6280103, + 0x81C, 0xE52A0103, + 0x81C, 0xE42C0103, + 0x81C, 0xE32E0103, + 0x81C, 0xE2300103, + 0x81C, 0xE1320103, + 0x81C, 0xA5340103, + 0x81C, 0xA4360103, + 0x81C, 0xA3380103, + 0x81C, 0xA23A0103, + 0x81C, 0xA13C0103, + 0x81C, 0x843E0103, + 0x81C, 0x83400103, + 0x81C, 0x82420103, + 0x81C, 0x81440103, + 0x81C, 0x64460103, + 0x81C, 0x63480103, + 0x81C, 0x624A0103, + 0x81C, 0x614C0103, + 0x81C, 0x454E0103, + 0x81C, 0x44500103, + 0x81C, 0x43520103, + 0x81C, 0x42540103, + 0x81C, 0x41560103, + 0x81C, 0x24580103, + 0x81C, 0x235A0103, + 0x81C, 0x225C0103, + 0x81C, 0x055E0103, + 0x81C, 0x04600103, + 0x81C, 0x03620103, + 0x81C, 0x02640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000103, + 0x81C, 0xFF020103, + 0x81C, 0xFE040103, + 0x81C, 0xFD060103, + 0x81C, 0xFC080103, + 0x81C, 0xFB0A0103, + 0x81C, 0xFA0C0103, + 0x81C, 0xF90E0103, + 0x81C, 0xF8100103, + 0x81C, 0xF7120103, + 0x81C, 0xF6140103, + 0x81C, 0xF5160103, + 0x81C, 0xF4180103, + 0x81C, 0xF31A0103, + 0x81C, 0xF21C0103, + 0x81C, 0xF11E0103, + 0x81C, 0xF0200103, + 0x81C, 0xEF220103, + 0x81C, 0xEE240103, + 0x81C, 0xED260103, + 0x81C, 0xEC280103, + 0x81C, 0xEB2A0103, + 0x81C, 0xEA2C0103, + 0x81C, 0xE92E0103, + 0x81C, 0xE8300103, + 0x81C, 0xE7320103, + 0x81C, 0xE6340103, + 0x81C, 0xE5360103, + 0x81C, 0xE4380103, + 0x81C, 0xE33A0103, + 0x81C, 0xA53C0103, + 0x81C, 0xA43E0103, + 0x81C, 0xA3400103, + 0x81C, 0xA2420103, + 0x81C, 0xA1440103, + 0x81C, 0x85460103, + 0x81C, 0x84480103, + 0x81C, 0x834A0103, + 0x81C, 0x824C0103, + 0x81C, 0x814E0103, + 0x81C, 0x64500103, + 0x81C, 0x63520103, + 0x81C, 0x62540103, + 0x81C, 0x44560103, + 0x81C, 0x43580103, + 0x81C, 0x425A0103, + 0x81C, 0x265C0103, + 0x81C, 0x255E0103, + 0x81C, 0x24600103, + 0x81C, 0x07620103, + 0x81C, 0x06640103, + 0x81C, 0x05660103, + 0x81C, 0x04680103, + 0x81C, 0x036A0103, + 0x81C, 0x026C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF8000103, + 0x81C, 0xF7020103, + 0x81C, 0xF6040103, + 0x81C, 0xF5060103, + 0x81C, 0xF4080103, + 0x81C, 0xF30A0103, + 0x81C, 0xF20C0103, + 0x81C, 0xF10E0103, + 0x81C, 0xF0100103, + 0x81C, 0xEF120103, + 0x81C, 0xEE140103, + 0x81C, 0xED160103, + 0x81C, 0xEC180103, + 0x81C, 0xEB1A0103, + 0x81C, 0xEA1C0103, + 0x81C, 0xE91E0103, + 0x81C, 0xE8200103, + 0x81C, 0xE7220103, + 0x81C, 0xE6240103, + 0x81C, 0xE5260103, + 0x81C, 0xE4280103, + 0x81C, 0xE32A0103, + 0x81C, 0xE22C0103, + 0x81C, 0xE12E0103, + 0x81C, 0xA4300103, + 0x81C, 0xA3320103, + 0x81C, 0xA2340103, + 0x81C, 0xA1360103, + 0x81C, 0x85380103, + 0x81C, 0x843A0103, + 0x81C, 0x833C0103, + 0x81C, 0x823E0103, + 0x81C, 0x65400103, + 0x81C, 0x64420103, + 0x81C, 0x63440103, + 0x81C, 0x62460103, + 0x81C, 0x45480103, + 0x81C, 0x444A0103, + 0x81C, 0x434C0103, + 0x81C, 0x264E0103, + 0x81C, 0x25500103, + 0x81C, 0x24520103, + 0x81C, 0x08540103, + 0x81C, 0x07560103, + 0x81C, 0x06580103, + 0x81C, 0x055A0103, + 0x81C, 0x045C0103, + 0x81C, 0x035E0103, + 0x81C, 0x02600103, + 0x81C, 0x01620103, + 0x81C, 0x01640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000103, + 0x81C, 0xFF020103, + 0x81C, 0xFE040103, + 0x81C, 0xFD060103, + 0x81C, 0xFC080103, + 0x81C, 0xFB0A0103, + 0x81C, 0xFA0C0103, + 0x81C, 0xF90E0103, + 0x81C, 0xF8100103, + 0x81C, 0xF7120103, + 0x81C, 0xF6140103, + 0x81C, 0xF5160103, + 0x81C, 0xF4180103, + 0x81C, 0xF31A0103, + 0x81C, 0xF21C0103, + 0x81C, 0xF11E0103, + 0x81C, 0xF0200103, + 0x81C, 0xEF220103, + 0x81C, 0xEE240103, + 0x81C, 0xED260103, + 0x81C, 0xEC280103, + 0x81C, 0xEB2A0103, + 0x81C, 0xEA2C0103, + 0x81C, 0xE92E0103, + 0x81C, 0xE8300103, + 0x81C, 0xE7320103, + 0x81C, 0xE6340103, + 0x81C, 0xE5360103, + 0x81C, 0xE4380103, + 0x81C, 0xE33A0103, + 0x81C, 0xA53C0103, + 0x81C, 0xA43E0103, + 0x81C, 0xA3400103, + 0x81C, 0xA2420103, + 0x81C, 0xA1440103, + 0x81C, 0x85460103, + 0x81C, 0x84480103, + 0x81C, 0x834A0103, + 0x81C, 0x824C0103, + 0x81C, 0x814E0103, + 0x81C, 0x64500103, + 0x81C, 0x63520103, + 0x81C, 0x62540103, + 0x81C, 0x44560103, + 0x81C, 0x43580103, + 0x81C, 0x425A0103, + 0x81C, 0x265C0103, + 0x81C, 0x255E0103, + 0x81C, 0x24600103, + 0x81C, 0x07620103, + 0x81C, 0x06640103, + 0x81C, 0x05660103, + 0x81C, 0x04680103, + 0x81C, 0x036A0103, + 0x81C, 0x026C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF9000103, + 0x81C, 0xF8020103, + 0x81C, 0xF7040103, + 0x81C, 0xF6060103, + 0x81C, 0xF5080103, + 0x81C, 0xF40A0103, + 0x81C, 0xF30C0103, + 0x81C, 0xF20E0103, + 0x81C, 0xF1100103, + 0x81C, 0xF0120103, + 0x81C, 0xEF140103, + 0x81C, 0xEE160103, + 0x81C, 0xED180103, + 0x81C, 0xEC1A0103, + 0x81C, 0xEB1C0103, + 0x81C, 0xEA1E0103, + 0x81C, 0xE9200103, + 0x81C, 0xE8220103, + 0x81C, 0xE7240103, + 0x81C, 0xE6260103, + 0x81C, 0xE5280103, + 0x81C, 0xE42A0103, + 0x81C, 0xE32C0103, + 0x81C, 0xE22E0103, + 0x81C, 0xA6300103, + 0x81C, 0xA5320103, + 0x81C, 0xA4340103, + 0x81C, 0xA3360103, + 0x81C, 0xA2380103, + 0x81C, 0xA13A0103, + 0x81C, 0x843C0103, + 0x81C, 0x833E0103, + 0x81C, 0x82400103, + 0x81C, 0x81420103, + 0x81C, 0x64440103, + 0x81C, 0x63460103, + 0x81C, 0x62480103, + 0x81C, 0x614A0103, + 0x81C, 0x444C0103, + 0x81C, 0x434E0103, + 0x81C, 0x42500103, + 0x81C, 0x41520103, + 0x81C, 0x25540103, + 0x81C, 0x24560103, + 0x81C, 0x23580103, + 0x81C, 0x225A0103, + 0x81C, 0x055C0103, + 0x81C, 0x045E0103, + 0x81C, 0x03600103, + 0x81C, 0x02620103, + 0x81C, 0x01640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFA000103, + 0x81C, 0xF9020103, + 0x81C, 0xF8040103, + 0x81C, 0xF7060103, + 0x81C, 0xF6080103, + 0x81C, 0xF50A0103, + 0x81C, 0xF40C0103, + 0x81C, 0xF30E0103, + 0x81C, 0xF2100103, + 0x81C, 0xF1120103, + 0x81C, 0xF0140103, + 0x81C, 0xEF160103, + 0x81C, 0xEE180103, + 0x81C, 0xED1A0103, + 0x81C, 0xCC1C0103, + 0x81C, 0xCB1E0103, + 0x81C, 0xCA200103, + 0x81C, 0xE9220103, + 0x81C, 0xE8240103, + 0x81C, 0xE7260103, + 0x81C, 0xE6280103, + 0x81C, 0xE42A0103, + 0x81C, 0xE32C0103, + 0x81C, 0xE22E0103, + 0x81C, 0xA7300103, + 0x81C, 0xA6320103, + 0x81C, 0xA5340103, + 0x81C, 0xA4360103, + 0x81C, 0xA3380103, + 0x81C, 0xA23A0103, + 0x81C, 0xA13C0103, + 0x81C, 0x843E0103, + 0x81C, 0x83400103, + 0x81C, 0x82420103, + 0x81C, 0x65440103, + 0x81C, 0x64460103, + 0x81C, 0x63480103, + 0x81C, 0x624A0103, + 0x81C, 0x614C0103, + 0x81C, 0x444E0103, + 0x81C, 0x43500103, + 0x81C, 0x42520103, + 0x81C, 0x41540103, + 0x81C, 0x24560103, + 0x81C, 0x23580103, + 0x81C, 0x055A0103, + 0x81C, 0x045C0103, + 0x81C, 0x035E0103, + 0x81C, 0x02600103, + 0x81C, 0x01620103, + 0x81C, 0x01640103, + 0x81C, 0x01660103, + 0x81C, 0x01680103, + 0x81C, 0x016A0103, + 0x81C, 0x016C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0xA0000000, 0x00000000, + 0x81C, 0xFF000103, + 0x81C, 0xFE020103, + 0x81C, 0xFD040103, + 0x81C, 0xFC060103, + 0x81C, 0xFB080103, + 0x81C, 0xFA0A0103, + 0x81C, 0xF90C0103, + 0x81C, 0xF80E0103, + 0x81C, 0xF7100103, + 0x81C, 0xF6120103, + 0x81C, 0xF5140103, + 0x81C, 0xF4160103, + 0x81C, 0xF3180103, + 0x81C, 0xF21A0103, + 0x81C, 0xF11C0103, + 0x81C, 0xF01E0103, + 0x81C, 0xEF200103, + 0x81C, 0xEE220103, + 0x81C, 0xED240103, + 0x81C, 0xEC260103, + 0x81C, 0xEB280103, + 0x81C, 0xEA2A0103, + 0x81C, 0xE92C0103, + 0x81C, 0xE82E0103, + 0x81C, 0xE7300103, + 0x81C, 0xE6320103, + 0x81C, 0xE5340103, + 0x81C, 0xE4360103, + 0x81C, 0xE3380103, + 0x81C, 0xE23A0103, + 0x81C, 0xE13C0103, + 0x81C, 0xA43E0103, + 0x81C, 0xA3400103, + 0x81C, 0xA2420103, + 0x81C, 0xA1440103, + 0x81C, 0x86460103, + 0x81C, 0x85480103, + 0x81C, 0x844A0103, + 0x81C, 0x834C0103, + 0x81C, 0x824E0103, + 0x81C, 0x81500103, + 0x81C, 0x64520103, + 0x81C, 0x63540103, + 0x81C, 0x62560103, + 0x81C, 0x61580103, + 0x81C, 0x435A0103, + 0x81C, 0x425C0103, + 0x81C, 0x415E0103, + 0x81C, 0x25600103, + 0x81C, 0x24620103, + 0x81C, 0x06640103, + 0x81C, 0x05660103, + 0x81C, 0x04680103, + 0x81C, 0x036A0103, + 0x81C, 0x026C0103, + 0x81C, 0x016E0103, + 0x81C, 0x01700103, + 0x81C, 0x01720103, + 0x81C, 0x01740103, + 0x81C, 0x01760103, + 0x81C, 0x01780103, + 0x81C, 0x017A0103, + 0x81C, 0x017C0103, + 0x81C, 0x017E0103, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFA000203, + 0x81C, 0xF9020203, + 0x81C, 0xF8040203, + 0x81C, 0xF7060203, + 0x81C, 0xF6080203, + 0x81C, 0xF50A0203, + 0x81C, 0xF40C0203, + 0x81C, 0xF30E0203, + 0x81C, 0xF2100203, + 0x81C, 0xF1120203, + 0x81C, 0xF0140203, + 0x81C, 0xEF160203, + 0x81C, 0xEE180203, + 0x81C, 0xED1A0203, + 0x81C, 0xEC1C0203, + 0x81C, 0xEB1E0203, + 0x81C, 0xEA200203, + 0x81C, 0xE9220203, + 0x81C, 0xE8240203, + 0x81C, 0xE7260203, + 0x81C, 0xE6280203, + 0x81C, 0xE52A0203, + 0x81C, 0xE42C0203, + 0x81C, 0xE32E0203, + 0x81C, 0xE2300203, + 0x81C, 0xE1320203, + 0x81C, 0xA5340203, + 0x81C, 0xA4360203, + 0x81C, 0xA3380203, + 0x81C, 0xA23A0203, + 0x81C, 0xA13C0203, + 0x81C, 0x843E0203, + 0x81C, 0x83400203, + 0x81C, 0x82420203, + 0x81C, 0x81440203, + 0x81C, 0x63460203, + 0x81C, 0x62480203, + 0x81C, 0x614A0203, + 0x81C, 0x464C0203, + 0x81C, 0x454E0203, + 0x81C, 0x44500203, + 0x81C, 0x43520203, + 0x81C, 0x42540203, + 0x81C, 0x41560203, + 0x81C, 0x24580203, + 0x81C, 0x235A0203, + 0x81C, 0x065C0203, + 0x81C, 0x055E0203, + 0x81C, 0x04600203, + 0x81C, 0x03620203, + 0x81C, 0x02640203, + 0x81C, 0x01660203, + 0x81C, 0x01680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF8000203, + 0x81C, 0xF7020203, + 0x81C, 0xF6040203, + 0x81C, 0xF5060203, + 0x81C, 0xF4080203, + 0x81C, 0xF30A0203, + 0x81C, 0xF20C0203, + 0x81C, 0xF10E0203, + 0x81C, 0xF0100203, + 0x81C, 0xEF120203, + 0x81C, 0xEE140203, + 0x81C, 0xED160203, + 0x81C, 0xEC180203, + 0x81C, 0xEB1A0203, + 0x81C, 0xEA1C0203, + 0x81C, 0xE91E0203, + 0x81C, 0xE8200203, + 0x81C, 0xE7220203, + 0x81C, 0xE6240203, + 0x81C, 0xE5260203, + 0x81C, 0xE4280203, + 0x81C, 0xE32A0203, + 0x81C, 0xE22C0203, + 0x81C, 0xE12E0203, + 0x81C, 0xA6300203, + 0x81C, 0xA5320203, + 0x81C, 0xA4340203, + 0x81C, 0xA3360203, + 0x81C, 0xA2380203, + 0x81C, 0x853A0203, + 0x81C, 0x843C0203, + 0x81C, 0x833E0203, + 0x81C, 0x82400203, + 0x81C, 0x81420203, + 0x81C, 0x64440203, + 0x81C, 0x63460203, + 0x81C, 0x62480203, + 0x81C, 0x614A0203, + 0x81C, 0x444C0203, + 0x81C, 0x434E0203, + 0x81C, 0x42500203, + 0x81C, 0x25520203, + 0x81C, 0x24540203, + 0x81C, 0x23560203, + 0x81C, 0x06580203, + 0x81C, 0x055A0203, + 0x81C, 0x045C0203, + 0x81C, 0x035E0203, + 0x81C, 0x02600203, + 0x81C, 0x01620203, + 0x81C, 0x01640203, + 0x81C, 0x01660203, + 0x81C, 0x01680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFC000203, + 0x81C, 0xFB020203, + 0x81C, 0xFA040203, + 0x81C, 0xF9060203, + 0x81C, 0xF8080203, + 0x81C, 0xF70A0203, + 0x81C, 0xF60C0203, + 0x81C, 0xF50E0203, + 0x81C, 0xF4100203, + 0x81C, 0xF3120203, + 0x81C, 0xF2140203, + 0x81C, 0xF1160203, + 0x81C, 0xF0180203, + 0x81C, 0xEF1A0203, + 0x81C, 0xEE1C0203, + 0x81C, 0xED1E0203, + 0x81C, 0xEC200203, + 0x81C, 0xEB220203, + 0x81C, 0xEA240203, + 0x81C, 0xE9260203, + 0x81C, 0xE8280203, + 0x81C, 0xE72A0203, + 0x81C, 0xE62C0203, + 0x81C, 0xE52E0203, + 0x81C, 0xE4300203, + 0x81C, 0xE3320203, + 0x81C, 0xE2340203, + 0x81C, 0xE1360203, + 0x81C, 0x87380203, + 0x81C, 0x863A0203, + 0x81C, 0x853C0203, + 0x81C, 0x843E0203, + 0x81C, 0x83400203, + 0x81C, 0x82420203, + 0x81C, 0x81440203, + 0x81C, 0x64460203, + 0x81C, 0x63480203, + 0x81C, 0x624A0203, + 0x81C, 0x474C0203, + 0x81C, 0x464E0203, + 0x81C, 0x45500203, + 0x81C, 0x44520203, + 0x81C, 0x43540203, + 0x81C, 0x42560203, + 0x81C, 0x24580203, + 0x81C, 0x235A0203, + 0x81C, 0x075C0203, + 0x81C, 0x065E0203, + 0x81C, 0x05600203, + 0x81C, 0x04620203, + 0x81C, 0x03640203, + 0x81C, 0x02660203, + 0x81C, 0x01680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF8000203, + 0x81C, 0xF7020203, + 0x81C, 0xF6040203, + 0x81C, 0xF5060203, + 0x81C, 0xF4080203, + 0x81C, 0xF30A0203, + 0x81C, 0xF20C0203, + 0x81C, 0xF10E0203, + 0x81C, 0xF0100203, + 0x81C, 0xEF120203, + 0x81C, 0xEE140203, + 0x81C, 0xED160203, + 0x81C, 0xEC180203, + 0x81C, 0xEB1A0203, + 0x81C, 0xEA1C0203, + 0x81C, 0xE91E0203, + 0x81C, 0xE8200203, + 0x81C, 0xE7220203, + 0x81C, 0xE6240203, + 0x81C, 0xE5260203, + 0x81C, 0xE4280203, + 0x81C, 0xE32A0203, + 0x81C, 0xE22C0203, + 0x81C, 0xE12E0203, + 0x81C, 0xA6300203, + 0x81C, 0xA5320203, + 0x81C, 0xA4340203, + 0x81C, 0xA3360203, + 0x81C, 0xA2380203, + 0x81C, 0xA13A0203, + 0x81C, 0x843C0203, + 0x81C, 0x833E0203, + 0x81C, 0x82400203, + 0x81C, 0x81420203, + 0x81C, 0x64440203, + 0x81C, 0x63460203, + 0x81C, 0x62480203, + 0x81C, 0x614A0203, + 0x81C, 0x444C0203, + 0x81C, 0x434E0203, + 0x81C, 0x42500203, + 0x81C, 0x41520203, + 0x81C, 0x25540203, + 0x81C, 0x24560203, + 0x81C, 0x23580203, + 0x81C, 0x065A0203, + 0x81C, 0x055C0203, + 0x81C, 0x045E0203, + 0x81C, 0x03600203, + 0x81C, 0x02620203, + 0x81C, 0x01640203, + 0x81C, 0x01660203, + 0x81C, 0x01680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFB000203, + 0x81C, 0xFA020203, + 0x81C, 0xF9040203, + 0x81C, 0xF8060203, + 0x81C, 0xF7080203, + 0x81C, 0xF60A0203, + 0x81C, 0xF50C0203, + 0x81C, 0xF40E0203, + 0x81C, 0xF3100203, + 0x81C, 0xF2120203, + 0x81C, 0xF1140203, + 0x81C, 0xF0160203, + 0x81C, 0xEF180203, + 0x81C, 0xEE1A0203, + 0x81C, 0xED1C0203, + 0x81C, 0xEC1E0203, + 0x81C, 0xEB200203, + 0x81C, 0xEA220203, + 0x81C, 0xE9240203, + 0x81C, 0xE8260203, + 0x81C, 0xE7280203, + 0x81C, 0xE62A0203, + 0x81C, 0xE52C0203, + 0x81C, 0xE42E0203, + 0x81C, 0xE3300203, + 0x81C, 0xE2320203, + 0x81C, 0xE1340203, + 0x81C, 0xA5360203, + 0x81C, 0xA4380203, + 0x81C, 0xA33A0203, + 0x81C, 0xA23C0203, + 0x81C, 0x843E0203, + 0x81C, 0x83400203, + 0x81C, 0x82420203, + 0x81C, 0x81440203, + 0x81C, 0x64460203, + 0x81C, 0x63480203, + 0x81C, 0x624A0203, + 0x81C, 0x614C0203, + 0x81C, 0x474E0203, + 0x81C, 0x46500203, + 0x81C, 0x45520203, + 0x81C, 0x44540203, + 0x81C, 0x43560203, + 0x81C, 0x25580203, + 0x81C, 0x245A0203, + 0x81C, 0x235C0203, + 0x81C, 0x075E0203, + 0x81C, 0x06600203, + 0x81C, 0x05620203, + 0x81C, 0x04640203, + 0x81C, 0x03660203, + 0x81C, 0x02680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFC000203, + 0x81C, 0xFB020203, + 0x81C, 0xFA040203, + 0x81C, 0xF9060203, + 0x81C, 0xF8080203, + 0x81C, 0xF70A0203, + 0x81C, 0xF60C0203, + 0x81C, 0xF50E0203, + 0x81C, 0xF4100203, + 0x81C, 0xF3120203, + 0x81C, 0xF2140203, + 0x81C, 0xF1160203, + 0x81C, 0xF0180203, + 0x81C, 0xEF1A0203, + 0x81C, 0xEE1C0203, + 0x81C, 0xED1E0203, + 0x81C, 0xEC200203, + 0x81C, 0xEB220203, + 0x81C, 0xEA240203, + 0x81C, 0xE9260203, + 0x81C, 0xE8280203, + 0x81C, 0xE72A0203, + 0x81C, 0xE62C0203, + 0x81C, 0xE52E0203, + 0x81C, 0xE4300203, + 0x81C, 0xE3320203, + 0x81C, 0xE2340203, + 0x81C, 0xE1360203, + 0x81C, 0xA5380203, + 0x81C, 0xA43A0203, + 0x81C, 0xA33C0203, + 0x81C, 0x853E0203, + 0x81C, 0x84400203, + 0x81C, 0x83420203, + 0x81C, 0x82440203, + 0x81C, 0x81460203, + 0x81C, 0x64480203, + 0x81C, 0x634A0203, + 0x81C, 0x624C0203, + 0x81C, 0x614E0203, + 0x81C, 0x46500203, + 0x81C, 0x45520203, + 0x81C, 0x44540203, + 0x81C, 0x43560203, + 0x81C, 0x25580203, + 0x81C, 0x245A0203, + 0x81C, 0x235C0203, + 0x81C, 0x075E0203, + 0x81C, 0x06600203, + 0x81C, 0x05620203, + 0x81C, 0x04640203, + 0x81C, 0x03660203, + 0x81C, 0x02680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000203, + 0x81C, 0xFF020203, + 0x81C, 0xFE040203, + 0x81C, 0xFD060203, + 0x81C, 0xFC080203, + 0x81C, 0xFB0A0203, + 0x81C, 0xFA0C0203, + 0x81C, 0xF90E0203, + 0x81C, 0xF8100203, + 0x81C, 0xF7120203, + 0x81C, 0xF6140203, + 0x81C, 0xF5160203, + 0x81C, 0xF4180203, + 0x81C, 0xF31A0203, + 0x81C, 0xF21C0203, + 0x81C, 0xF11E0203, + 0x81C, 0xF0200203, + 0x81C, 0xEF220203, + 0x81C, 0xEE240203, + 0x81C, 0xED260203, + 0x81C, 0xEC280203, + 0x81C, 0xEB2A0203, + 0x81C, 0xEA2C0203, + 0x81C, 0xE92E0203, + 0x81C, 0xE8300203, + 0x81C, 0xE7320203, + 0x81C, 0xE6340203, + 0x81C, 0xE5360203, + 0x81C, 0xE4380203, + 0x81C, 0xE33A0203, + 0x81C, 0xE23C0203, + 0x81C, 0xE13E0203, + 0x81C, 0xA4400203, + 0x81C, 0xA3420203, + 0x81C, 0xA2440203, + 0x81C, 0xA1460203, + 0x81C, 0x84480203, + 0x81C, 0x834A0203, + 0x81C, 0x824C0203, + 0x81C, 0x814E0203, + 0x81C, 0x64500203, + 0x81C, 0x63520203, + 0x81C, 0x62540203, + 0x81C, 0x61560203, + 0x81C, 0x45580203, + 0x81C, 0x445A0203, + 0x81C, 0x435C0203, + 0x81C, 0x425E0203, + 0x81C, 0x24600203, + 0x81C, 0x23620203, + 0x81C, 0x07640203, + 0x81C, 0x06660203, + 0x81C, 0x05680203, + 0x81C, 0x046A0203, + 0x81C, 0x036C0203, + 0x81C, 0x026E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF7000203, + 0x81C, 0xF6020203, + 0x81C, 0xF5040203, + 0x81C, 0xF4060203, + 0x81C, 0xF3080203, + 0x81C, 0xF20A0203, + 0x81C, 0xF10C0203, + 0x81C, 0xF00E0203, + 0x81C, 0xEF100203, + 0x81C, 0xEE120203, + 0x81C, 0xED140203, + 0x81C, 0xEC160203, + 0x81C, 0xEB180203, + 0x81C, 0xEA1A0203, + 0x81C, 0xE91C0203, + 0x81C, 0xE81E0203, + 0x81C, 0xE7200203, + 0x81C, 0xE6220203, + 0x81C, 0xE5240203, + 0x81C, 0xE4260203, + 0x81C, 0xE3280203, + 0x81C, 0xE22A0203, + 0x81C, 0xA62C0203, + 0x81C, 0xA52E0203, + 0x81C, 0xA4300203, + 0x81C, 0xA3320203, + 0x81C, 0xA2340203, + 0x81C, 0xA1360203, + 0x81C, 0x86380203, + 0x81C, 0x853A0203, + 0x81C, 0x843C0203, + 0x81C, 0x833E0203, + 0x81C, 0x65400203, + 0x81C, 0x64420203, + 0x81C, 0x63440203, + 0x81C, 0x46460203, + 0x81C, 0x45480203, + 0x81C, 0x444A0203, + 0x81C, 0x434C0203, + 0x81C, 0x264E0203, + 0x81C, 0x25500203, + 0x81C, 0x24520203, + 0x81C, 0x08540203, + 0x81C, 0x07560203, + 0x81C, 0x06580203, + 0x81C, 0x055A0203, + 0x81C, 0x045C0203, + 0x81C, 0x035E0203, + 0x81C, 0x02600203, + 0x81C, 0x01620203, + 0x81C, 0x01640203, + 0x81C, 0x01660203, + 0x81C, 0x01680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFF000203, + 0x81C, 0xFF020203, + 0x81C, 0xFE040203, + 0x81C, 0xFD060203, + 0x81C, 0xFC080203, + 0x81C, 0xFB0A0203, + 0x81C, 0xFA0C0203, + 0x81C, 0xF90E0203, + 0x81C, 0xF8100203, + 0x81C, 0xF7120203, + 0x81C, 0xF6140203, + 0x81C, 0xF5160203, + 0x81C, 0xF4180203, + 0x81C, 0xF31A0203, + 0x81C, 0xF21C0203, + 0x81C, 0xF11E0203, + 0x81C, 0xF0200203, + 0x81C, 0xEF220203, + 0x81C, 0xEE240203, + 0x81C, 0xED260203, + 0x81C, 0xEC280203, + 0x81C, 0xEB2A0203, + 0x81C, 0xEA2C0203, + 0x81C, 0xE92E0203, + 0x81C, 0xE8300203, + 0x81C, 0xE7320203, + 0x81C, 0xE6340203, + 0x81C, 0xE5360203, + 0x81C, 0xE4380203, + 0x81C, 0xE33A0203, + 0x81C, 0xE23C0203, + 0x81C, 0xE13E0203, + 0x81C, 0xA4400203, + 0x81C, 0xA3420203, + 0x81C, 0xA2440203, + 0x81C, 0xA1460203, + 0x81C, 0x84480203, + 0x81C, 0x834A0203, + 0x81C, 0x824C0203, + 0x81C, 0x814E0203, + 0x81C, 0x64500203, + 0x81C, 0x63520203, + 0x81C, 0x62540203, + 0x81C, 0x61560203, + 0x81C, 0x45580203, + 0x81C, 0x445A0203, + 0x81C, 0x435C0203, + 0x81C, 0x425E0203, + 0x81C, 0x24600203, + 0x81C, 0x23620203, + 0x81C, 0x07640203, + 0x81C, 0x06660203, + 0x81C, 0x05680203, + 0x81C, 0x046A0203, + 0x81C, 0x036C0203, + 0x81C, 0x026E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF8000203, + 0x81C, 0xF7020203, + 0x81C, 0xF6040203, + 0x81C, 0xF5060203, + 0x81C, 0xF4080203, + 0x81C, 0xF30A0203, + 0x81C, 0xF20C0203, + 0x81C, 0xF10E0203, + 0x81C, 0xF0100203, + 0x81C, 0xEF120203, + 0x81C, 0xEE140203, + 0x81C, 0xED160203, + 0x81C, 0xEC180203, + 0x81C, 0xEB1A0203, + 0x81C, 0xEA1C0203, + 0x81C, 0xE91E0203, + 0x81C, 0xE8200203, + 0x81C, 0xE7220203, + 0x81C, 0xE6240203, + 0x81C, 0xE5260203, + 0x81C, 0xE4280203, + 0x81C, 0xE32A0203, + 0x81C, 0xE22C0203, + 0x81C, 0xE12E0203, + 0x81C, 0xA6300203, + 0x81C, 0xA5320203, + 0x81C, 0xA4340203, + 0x81C, 0xA3360203, + 0x81C, 0xA2380203, + 0x81C, 0xA13A0203, + 0x81C, 0x843C0203, + 0x81C, 0x833E0203, + 0x81C, 0x82400203, + 0x81C, 0x81420203, + 0x81C, 0x64440203, + 0x81C, 0x63460203, + 0x81C, 0x62480203, + 0x81C, 0x614A0203, + 0x81C, 0x444C0203, + 0x81C, 0x434E0203, + 0x81C, 0x42500203, + 0x81C, 0x41520203, + 0x81C, 0x25540203, + 0x81C, 0x24560203, + 0x81C, 0x23580203, + 0x81C, 0x065A0203, + 0x81C, 0x055C0203, + 0x81C, 0x045E0203, + 0x81C, 0x03600203, + 0x81C, 0x02620203, + 0x81C, 0x01640203, + 0x81C, 0x01660203, + 0x81C, 0x01680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF9000203, + 0x81C, 0xF8020203, + 0x81C, 0xF7040203, + 0x81C, 0xF6060203, + 0x81C, 0xF5080203, + 0x81C, 0xF40A0203, + 0x81C, 0xF30C0203, + 0x81C, 0xF20E0203, + 0x81C, 0xF1100203, + 0x81C, 0xF0120203, + 0x81C, 0xEF140203, + 0x81C, 0xCE160203, + 0x81C, 0xCD180203, + 0x81C, 0xCC1A0203, + 0x81C, 0xCB1C0203, + 0x81C, 0xCA1E0203, + 0x81C, 0xC9200203, + 0x81C, 0xC8220203, + 0x81C, 0xC7240203, + 0x81C, 0xC6260203, + 0x81C, 0xC5280203, + 0x81C, 0xC42A0203, + 0x81C, 0xC32C0203, + 0x81C, 0xC22E0203, + 0x81C, 0xC1300203, + 0x81C, 0xA5320203, + 0x81C, 0xA4340203, + 0x81C, 0xA3360203, + 0x81C, 0xA2380203, + 0x81C, 0xA13A0203, + 0x81C, 0x853C0203, + 0x81C, 0x843E0203, + 0x81C, 0x83400203, + 0x81C, 0x82420203, + 0x81C, 0x81440203, + 0x81C, 0x64460203, + 0x81C, 0x63480203, + 0x81C, 0x624A0203, + 0x81C, 0x614C0203, + 0x81C, 0x444E0203, + 0x81C, 0x43500203, + 0x81C, 0x42520203, + 0x81C, 0x41540203, + 0x81C, 0x24560203, + 0x81C, 0x23580203, + 0x81C, 0x075A0203, + 0x81C, 0x065C0203, + 0x81C, 0x055E0203, + 0x81C, 0x04600203, + 0x81C, 0x03620203, + 0x81C, 0x02640203, + 0x81C, 0x01660203, + 0x81C, 0x01680203, + 0x81C, 0x016A0203, + 0x81C, 0x016C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0xA0000000, 0x00000000, + 0x81C, 0xFF000203, + 0x81C, 0xFF020203, + 0x81C, 0xFE040203, + 0x81C, 0xFD060203, + 0x81C, 0xFC080203, + 0x81C, 0xFB0A0203, + 0x81C, 0xFA0C0203, + 0x81C, 0xF90E0203, + 0x81C, 0xF8100203, + 0x81C, 0xF7120203, + 0x81C, 0xF6140203, + 0x81C, 0xF5160203, + 0x81C, 0xF4180203, + 0x81C, 0xF31A0203, + 0x81C, 0xF21C0203, + 0x81C, 0xF11E0203, + 0x81C, 0xF0200203, + 0x81C, 0xEF220203, + 0x81C, 0xEE240203, + 0x81C, 0xED260203, + 0x81C, 0xEC280203, + 0x81C, 0xEB2A0203, + 0x81C, 0xEA2C0203, + 0x81C, 0xE92E0203, + 0x81C, 0xE8300203, + 0x81C, 0xE7320203, + 0x81C, 0xE6340203, + 0x81C, 0xE5360203, + 0x81C, 0xE4380203, + 0x81C, 0xE33A0203, + 0x81C, 0xE23C0203, + 0x81C, 0xE13E0203, + 0x81C, 0xA4400203, + 0x81C, 0xA3420203, + 0x81C, 0xA2440203, + 0x81C, 0xA1460203, + 0x81C, 0x85480203, + 0x81C, 0x844A0203, + 0x81C, 0x834C0203, + 0x81C, 0x824E0203, + 0x81C, 0x81500203, + 0x81C, 0x64520203, + 0x81C, 0x63540203, + 0x81C, 0x62560203, + 0x81C, 0x61580203, + 0x81C, 0x445A0203, + 0x81C, 0x435C0203, + 0x81C, 0x425E0203, + 0x81C, 0x25600203, + 0x81C, 0x24620203, + 0x81C, 0x06640203, + 0x81C, 0x05660203, + 0x81C, 0x04680203, + 0x81C, 0x036A0203, + 0x81C, 0x026C0203, + 0x81C, 0x016E0203, + 0x81C, 0x01700203, + 0x81C, 0x01720203, + 0x81C, 0x01740203, + 0x81C, 0x01760203, + 0x81C, 0x01780203, + 0x81C, 0x017A0203, + 0x81C, 0x017C0203, + 0x81C, 0x017E0203, + 0xB0000000, 0x00000000, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF8000303, + 0x81C, 0xF7020303, + 0x81C, 0xF6040303, + 0x81C, 0xF5060303, + 0x81C, 0xF4080303, + 0x81C, 0xF30A0303, + 0x81C, 0xF20C0303, + 0x81C, 0xF10E0303, + 0x81C, 0xF0100303, + 0x81C, 0xEF120303, + 0x81C, 0xEE140303, + 0x81C, 0xED160303, + 0x81C, 0xEC180303, + 0x81C, 0xEB1A0303, + 0x81C, 0xEA1C0303, + 0x81C, 0xE91E0303, + 0x81C, 0xE8200303, + 0x81C, 0xE7220303, + 0x81C, 0xE6240303, + 0x81C, 0xE5260303, + 0x81C, 0xE4280303, + 0x81C, 0xE32A0303, + 0x81C, 0xE22C0303, + 0x81C, 0xE12E0303, + 0x81C, 0xA6300303, + 0x81C, 0xA5320303, + 0x81C, 0xA4340303, + 0x81C, 0xA3360303, + 0x81C, 0xA2380303, + 0x81C, 0xA13A0303, + 0x81C, 0x843C0303, + 0x81C, 0x833E0303, + 0x81C, 0x82400303, + 0x81C, 0x81420303, + 0x81C, 0x64440303, + 0x81C, 0x63460303, + 0x81C, 0x62480303, + 0x81C, 0x614A0303, + 0x81C, 0x454C0303, + 0x81C, 0x444E0303, + 0x81C, 0x43500303, + 0x81C, 0x42520303, + 0x81C, 0x41540303, + 0x81C, 0x24560303, + 0x81C, 0x23580303, + 0x81C, 0x065A0303, + 0x81C, 0x055C0303, + 0x81C, 0x045E0303, + 0x81C, 0x03600303, + 0x81C, 0x02620303, + 0x81C, 0x01640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF7000303, + 0x81C, 0xF6020303, + 0x81C, 0xF5040303, + 0x81C, 0xF4060303, + 0x81C, 0xF3080303, + 0x81C, 0xF20A0303, + 0x81C, 0xF10C0303, + 0x81C, 0xF00E0303, + 0x81C, 0xEF100303, + 0x81C, 0xEE120303, + 0x81C, 0xED140303, + 0x81C, 0xEC160303, + 0x81C, 0xEB180303, + 0x81C, 0xEA1A0303, + 0x81C, 0xE91C0303, + 0x81C, 0xE81E0303, + 0x81C, 0xE7200303, + 0x81C, 0xE6220303, + 0x81C, 0xE5240303, + 0x81C, 0xE4260303, + 0x81C, 0xE3280303, + 0x81C, 0xC32A0303, + 0x81C, 0xC22C0303, + 0x81C, 0xC12E0303, + 0x81C, 0xA5300303, + 0x81C, 0xA4320303, + 0x81C, 0xA3340303, + 0x81C, 0xA2360303, + 0x81C, 0xA1380303, + 0x81C, 0x853A0303, + 0x81C, 0x843C0303, + 0x81C, 0x833E0303, + 0x81C, 0x82400303, + 0x81C, 0x81420303, + 0x81C, 0x64440303, + 0x81C, 0x63460303, + 0x81C, 0x62480303, + 0x81C, 0x614A0303, + 0x81C, 0x454C0303, + 0x81C, 0x444E0303, + 0x81C, 0x43500303, + 0x81C, 0x25520303, + 0x81C, 0x24540303, + 0x81C, 0x23560303, + 0x81C, 0x06580303, + 0x81C, 0x055A0303, + 0x81C, 0x045C0303, + 0x81C, 0x035E0303, + 0x81C, 0x02600303, + 0x81C, 0x01620303, + 0x81C, 0x01640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF9000303, + 0x81C, 0xF8020303, + 0x81C, 0xF7040303, + 0x81C, 0xF6060303, + 0x81C, 0xF5080303, + 0x81C, 0xF40A0303, + 0x81C, 0xF30C0303, + 0x81C, 0xF20E0303, + 0x81C, 0xF1100303, + 0x81C, 0xF0120303, + 0x81C, 0xEF140303, + 0x81C, 0xEE160303, + 0x81C, 0xED180303, + 0x81C, 0xEC1A0303, + 0x81C, 0xEB1C0303, + 0x81C, 0xEA1E0303, + 0x81C, 0xE9200303, + 0x81C, 0xE8220303, + 0x81C, 0xE7240303, + 0x81C, 0xE6260303, + 0x81C, 0xE5280303, + 0x81C, 0xE42A0303, + 0x81C, 0xE32C0303, + 0x81C, 0xE22E0303, + 0x81C, 0xE1300303, + 0x81C, 0xA4320303, + 0x81C, 0xA3340303, + 0x81C, 0xA2360303, + 0x81C, 0xA1380303, + 0x81C, 0x853A0303, + 0x81C, 0x843C0303, + 0x81C, 0x833E0303, + 0x81C, 0x82400303, + 0x81C, 0x81420303, + 0x81C, 0x64440303, + 0x81C, 0x63460303, + 0x81C, 0x62480303, + 0x81C, 0x614A0303, + 0x81C, 0x444C0303, + 0x81C, 0x434E0303, + 0x81C, 0x42500303, + 0x81C, 0x25520303, + 0x81C, 0x24540303, + 0x81C, 0x23560303, + 0x81C, 0x07580303, + 0x81C, 0x065A0303, + 0x81C, 0x055C0303, + 0x81C, 0x045E0303, + 0x81C, 0x03600303, + 0x81C, 0x02620303, + 0x81C, 0x01640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF7000303, + 0x81C, 0xF6020303, + 0x81C, 0xF5040303, + 0x81C, 0xF4060303, + 0x81C, 0xF3080303, + 0x81C, 0xF20A0303, + 0x81C, 0xF10C0303, + 0x81C, 0xF00E0303, + 0x81C, 0xEF100303, + 0x81C, 0xEE120303, + 0x81C, 0xED140303, + 0x81C, 0xEC160303, + 0x81C, 0xEB180303, + 0x81C, 0xEA1A0303, + 0x81C, 0xE91C0303, + 0x81C, 0xE81E0303, + 0x81C, 0xE7200303, + 0x81C, 0xE6220303, + 0x81C, 0xE5240303, + 0x81C, 0xE4260303, + 0x81C, 0xE3280303, + 0x81C, 0xE22A0303, + 0x81C, 0xE12C0303, + 0x81C, 0xA72E0303, + 0x81C, 0xA6300303, + 0x81C, 0xA5320303, + 0x81C, 0xA4340303, + 0x81C, 0xA3360303, + 0x81C, 0xA2380303, + 0x81C, 0xA13A0303, + 0x81C, 0x843C0303, + 0x81C, 0x833E0303, + 0x81C, 0x82400303, + 0x81C, 0x81420303, + 0x81C, 0x64440303, + 0x81C, 0x63460303, + 0x81C, 0x62480303, + 0x81C, 0x614A0303, + 0x81C, 0x454C0303, + 0x81C, 0x444E0303, + 0x81C, 0x43500303, + 0x81C, 0x42520303, + 0x81C, 0x41540303, + 0x81C, 0x24560303, + 0x81C, 0x23580303, + 0x81C, 0x065A0303, + 0x81C, 0x055C0303, + 0x81C, 0x045E0303, + 0x81C, 0x03600303, + 0x81C, 0x02620303, + 0x81C, 0x01640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFB000303, + 0x81C, 0xFA020303, + 0x81C, 0xF9040303, + 0x81C, 0xF8060303, + 0x81C, 0xF7080303, + 0x81C, 0xF60A0303, + 0x81C, 0xF50C0303, + 0x81C, 0xF40E0303, + 0x81C, 0xF3100303, + 0x81C, 0xF2120303, + 0x81C, 0xF1140303, + 0x81C, 0xF0160303, + 0x81C, 0xEF180303, + 0x81C, 0xEE1A0303, + 0x81C, 0xED1C0303, + 0x81C, 0xEC1E0303, + 0x81C, 0xEB200303, + 0x81C, 0xEA220303, + 0x81C, 0xE9240303, + 0x81C, 0xE8260303, + 0x81C, 0xE7280303, + 0x81C, 0xE62A0303, + 0x81C, 0xE52C0303, + 0x81C, 0xE42E0303, + 0x81C, 0xE3300303, + 0x81C, 0xE2320303, + 0x81C, 0xE1340303, + 0x81C, 0xC2360303, + 0x81C, 0xC1380303, + 0x81C, 0xA33A0303, + 0x81C, 0xA23C0303, + 0x81C, 0x853E0303, + 0x81C, 0x84400303, + 0x81C, 0x83420303, + 0x81C, 0x66440303, + 0x81C, 0x65460303, + 0x81C, 0x64480303, + 0x81C, 0x634A0303, + 0x81C, 0x624C0303, + 0x81C, 0x614E0303, + 0x81C, 0x45500303, + 0x81C, 0x44520303, + 0x81C, 0x43540303, + 0x81C, 0x42560303, + 0x81C, 0x25580303, + 0x81C, 0x245A0303, + 0x81C, 0x235C0303, + 0x81C, 0x065E0303, + 0x81C, 0x05600303, + 0x81C, 0x04620303, + 0x81C, 0x03640303, + 0x81C, 0x02660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF9000303, + 0x81C, 0xF8020303, + 0x81C, 0xF7040303, + 0x81C, 0xF6060303, + 0x81C, 0xF5080303, + 0x81C, 0xF40A0303, + 0x81C, 0xF30C0303, + 0x81C, 0xF20E0303, + 0x81C, 0xF1100303, + 0x81C, 0xF0120303, + 0x81C, 0xEF140303, + 0x81C, 0xEE160303, + 0x81C, 0xED180303, + 0x81C, 0xEC1A0303, + 0x81C, 0xEB1C0303, + 0x81C, 0xEA1E0303, + 0x81C, 0xE9200303, + 0x81C, 0xE8220303, + 0x81C, 0xE7240303, + 0x81C, 0xE6260303, + 0x81C, 0xE5280303, + 0x81C, 0xE42A0303, + 0x81C, 0xE32C0303, + 0x81C, 0xE22E0303, + 0x81C, 0xE1300303, + 0x81C, 0xA6320303, + 0x81C, 0xA5340303, + 0x81C, 0xA4360303, + 0x81C, 0xA3380303, + 0x81C, 0xA23A0303, + 0x81C, 0xA13C0303, + 0x81C, 0x853E0303, + 0x81C, 0x84400303, + 0x81C, 0x83420303, + 0x81C, 0x82440303, + 0x81C, 0x81460303, + 0x81C, 0x64480303, + 0x81C, 0x634A0303, + 0x81C, 0x624C0303, + 0x81C, 0x614E0303, + 0x81C, 0x44500303, + 0x81C, 0x43520303, + 0x81C, 0x42540303, + 0x81C, 0x41560303, + 0x81C, 0x25580303, + 0x81C, 0x245A0303, + 0x81C, 0x235C0303, + 0x81C, 0x055E0303, + 0x81C, 0x04600303, + 0x81C, 0x03620303, + 0x81C, 0x02640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000007, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000303, + 0x81C, 0xFD020303, + 0x81C, 0xFC040303, + 0x81C, 0xFB060303, + 0x81C, 0xFA080303, + 0x81C, 0xF90A0303, + 0x81C, 0xF80C0303, + 0x81C, 0xF70E0303, + 0x81C, 0xF6100303, + 0x81C, 0xF5120303, + 0x81C, 0xF4140303, + 0x81C, 0xF3160303, + 0x81C, 0xF2180303, + 0x81C, 0xF11A0303, + 0x81C, 0xF01C0303, + 0x81C, 0xEF1E0303, + 0x81C, 0xEE200303, + 0x81C, 0xED220303, + 0x81C, 0xEC240303, + 0x81C, 0xEB260303, + 0x81C, 0xEA280303, + 0x81C, 0xE92A0303, + 0x81C, 0xE82C0303, + 0x81C, 0xE72E0303, + 0x81C, 0xE6300303, + 0x81C, 0xE5320303, + 0x81C, 0xE4340303, + 0x81C, 0xE3360303, + 0x81C, 0xC3380303, + 0x81C, 0xC23A0303, + 0x81C, 0xC13C0303, + 0x81C, 0xA43E0303, + 0x81C, 0xA3400303, + 0x81C, 0xA2420303, + 0x81C, 0xA1440303, + 0x81C, 0x85460303, + 0x81C, 0x84480303, + 0x81C, 0x834A0303, + 0x81C, 0x824C0303, + 0x81C, 0x814E0303, + 0x81C, 0x64500303, + 0x81C, 0x63520303, + 0x81C, 0x62540303, + 0x81C, 0x61560303, + 0x81C, 0x44580303, + 0x81C, 0x435A0303, + 0x81C, 0x425C0303, + 0x81C, 0x265E0303, + 0x81C, 0x25600303, + 0x81C, 0x24620303, + 0x81C, 0x06640303, + 0x81C, 0x05660303, + 0x81C, 0x04680303, + 0x81C, 0x036A0303, + 0x81C, 0x026C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000008, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF7000303, + 0x81C, 0xF6020303, + 0x81C, 0xF5040303, + 0x81C, 0xF4060303, + 0x81C, 0xF3080303, + 0x81C, 0xF20A0303, + 0x81C, 0xF10C0303, + 0x81C, 0xF00E0303, + 0x81C, 0xEF100303, + 0x81C, 0xEE120303, + 0x81C, 0xED140303, + 0x81C, 0xEC160303, + 0x81C, 0xEB180303, + 0x81C, 0xEA1A0303, + 0x81C, 0xE91C0303, + 0x81C, 0xE81E0303, + 0x81C, 0xE7200303, + 0x81C, 0xE6220303, + 0x81C, 0xE5240303, + 0x81C, 0xE4260303, + 0x81C, 0xE3280303, + 0x81C, 0xE22A0303, + 0x81C, 0xA62C0303, + 0x81C, 0xA52E0303, + 0x81C, 0xA4300303, + 0x81C, 0xA3320303, + 0x81C, 0xA2340303, + 0x81C, 0x87360303, + 0x81C, 0x86380303, + 0x81C, 0x853A0303, + 0x81C, 0x843C0303, + 0x81C, 0x833E0303, + 0x81C, 0x66400303, + 0x81C, 0x65420303, + 0x81C, 0x64440303, + 0x81C, 0x45460303, + 0x81C, 0x44480303, + 0x81C, 0x434A0303, + 0x81C, 0x274C0303, + 0x81C, 0x264E0303, + 0x81C, 0x25500303, + 0x81C, 0x24520303, + 0x81C, 0x23540303, + 0x81C, 0x08560303, + 0x81C, 0x07580303, + 0x81C, 0x065A0303, + 0x81C, 0x055C0303, + 0x81C, 0x045E0303, + 0x81C, 0x03600303, + 0x81C, 0x02620303, + 0x81C, 0x01640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x90000009, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xFE000303, + 0x81C, 0xFD020303, + 0x81C, 0xFC040303, + 0x81C, 0xFB060303, + 0x81C, 0xFA080303, + 0x81C, 0xF90A0303, + 0x81C, 0xF80C0303, + 0x81C, 0xF70E0303, + 0x81C, 0xF6100303, + 0x81C, 0xF5120303, + 0x81C, 0xF4140303, + 0x81C, 0xF3160303, + 0x81C, 0xF2180303, + 0x81C, 0xF11A0303, + 0x81C, 0xF01C0303, + 0x81C, 0xEF1E0303, + 0x81C, 0xEE200303, + 0x81C, 0xED220303, + 0x81C, 0xEC240303, + 0x81C, 0xEB260303, + 0x81C, 0xEA280303, + 0x81C, 0xE92A0303, + 0x81C, 0xE82C0303, + 0x81C, 0xE72E0303, + 0x81C, 0xE6300303, + 0x81C, 0xE5320303, + 0x81C, 0xE4340303, + 0x81C, 0xE3360303, + 0x81C, 0xC3380303, + 0x81C, 0xC23A0303, + 0x81C, 0xC13C0303, + 0x81C, 0xA43E0303, + 0x81C, 0xA3400303, + 0x81C, 0xA2420303, + 0x81C, 0xA1440303, + 0x81C, 0x85460303, + 0x81C, 0x84480303, + 0x81C, 0x834A0303, + 0x81C, 0x824C0303, + 0x81C, 0x814E0303, + 0x81C, 0x64500303, + 0x81C, 0x63520303, + 0x81C, 0x62540303, + 0x81C, 0x61560303, + 0x81C, 0x44580303, + 0x81C, 0x435A0303, + 0x81C, 0x425C0303, + 0x81C, 0x265E0303, + 0x81C, 0x25600303, + 0x81C, 0x24620303, + 0x81C, 0x06640303, + 0x81C, 0x05660303, + 0x81C, 0x04680303, + 0x81C, 0x036A0303, + 0x81C, 0x026C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF7000303, + 0x81C, 0xF6020303, + 0x81C, 0xF5040303, + 0x81C, 0xF4060303, + 0x81C, 0xF3080303, + 0x81C, 0xF20A0303, + 0x81C, 0xF10C0303, + 0x81C, 0xF00E0303, + 0x81C, 0xEF100303, + 0x81C, 0xEE120303, + 0x81C, 0xED140303, + 0x81C, 0xEC160303, + 0x81C, 0xEB180303, + 0x81C, 0xEA1A0303, + 0x81C, 0xE91C0303, + 0x81C, 0xE81E0303, + 0x81C, 0xE7200303, + 0x81C, 0xE6220303, + 0x81C, 0xE5240303, + 0x81C, 0xE4260303, + 0x81C, 0xE3280303, + 0x81C, 0xE22A0303, + 0x81C, 0xE12C0303, + 0x81C, 0xA72E0303, + 0x81C, 0xA6300303, + 0x81C, 0xA5320303, + 0x81C, 0xA4340303, + 0x81C, 0xA3360303, + 0x81C, 0xA2380303, + 0x81C, 0xA13A0303, + 0x81C, 0x843C0303, + 0x81C, 0x833E0303, + 0x81C, 0x82400303, + 0x81C, 0x81420303, + 0x81C, 0x64440303, + 0x81C, 0x63460303, + 0x81C, 0x62480303, + 0x81C, 0x614A0303, + 0x81C, 0x454C0303, + 0x81C, 0x444E0303, + 0x81C, 0x43500303, + 0x81C, 0x42520303, + 0x81C, 0x41540303, + 0x81C, 0x24560303, + 0x81C, 0x23580303, + 0x81C, 0x065A0303, + 0x81C, 0x055C0303, + 0x81C, 0x045E0303, + 0x81C, 0x03600303, + 0x81C, 0x02620303, + 0x81C, 0x01640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x81C, 0xF7000303, + 0x81C, 0xF6020303, + 0x81C, 0xF5040303, + 0x81C, 0xF4060303, + 0x81C, 0xF3080303, + 0x81C, 0xF20A0303, + 0x81C, 0xF10C0303, + 0x81C, 0xF00E0303, + 0x81C, 0xEF100303, + 0x81C, 0xEE120303, + 0x81C, 0xED140303, + 0x81C, 0xEC160303, + 0x81C, 0xEB180303, + 0x81C, 0xEA1A0303, + 0x81C, 0xAF1C0303, + 0x81C, 0xAE1E0303, + 0x81C, 0xAD200303, + 0x81C, 0xAC220303, + 0x81C, 0xAB240303, + 0x81C, 0xAA260303, + 0x81C, 0xC5280303, + 0x81C, 0xC42A0303, + 0x81C, 0xC32C0303, + 0x81C, 0xC22E0303, + 0x81C, 0xA5300303, + 0x81C, 0xA4320303, + 0x81C, 0xA3340303, + 0x81C, 0xA2360303, + 0x81C, 0xA1380303, + 0x81C, 0x853A0303, + 0x81C, 0x843C0303, + 0x81C, 0x833E0303, + 0x81C, 0x82400303, + 0x81C, 0x81420303, + 0x81C, 0x64440303, + 0x81C, 0x63460303, + 0x81C, 0x62480303, + 0x81C, 0x614A0303, + 0x81C, 0x444C0303, + 0x81C, 0x434E0303, + 0x81C, 0x42500303, + 0x81C, 0x41520303, + 0x81C, 0x25540303, + 0x81C, 0x24560303, + 0x81C, 0x06580303, + 0x81C, 0x055A0303, + 0x81C, 0x045C0303, + 0x81C, 0x035E0303, + 0x81C, 0x02600303, + 0x81C, 0x01620303, + 0x81C, 0x01640303, + 0x81C, 0x01660303, + 0x81C, 0x01680303, + 0x81C, 0x016A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0xA0000000, 0x00000000, + 0x81C, 0xFD000303, + 0x81C, 0xFC020303, + 0x81C, 0xFB040303, + 0x81C, 0xFA060303, + 0x81C, 0xF9080303, + 0x81C, 0xF80A0303, + 0x81C, 0xF70C0303, + 0x81C, 0xF60E0303, + 0x81C, 0xF5100303, + 0x81C, 0xF4120303, + 0x81C, 0xF3140303, + 0x81C, 0xF2160303, + 0x81C, 0xF1180303, + 0x81C, 0xF01A0303, + 0x81C, 0xEF1C0303, + 0x81C, 0xEE1E0303, + 0x81C, 0xED200303, + 0x81C, 0xEC220303, + 0x81C, 0xEB240303, + 0x81C, 0xEA260303, + 0x81C, 0xE9280303, + 0x81C, 0xE82A0303, + 0x81C, 0xE72C0303, + 0x81C, 0xE62E0303, + 0x81C, 0xE5300303, + 0x81C, 0xE4320303, + 0x81C, 0xE3340303, + 0x81C, 0xE2360303, + 0x81C, 0xE1380303, + 0x81C, 0xA53A0303, + 0x81C, 0xA43C0303, + 0x81C, 0xA33E0303, + 0x81C, 0xA2400303, + 0x81C, 0xA1420303, + 0x81C, 0x87440303, + 0x81C, 0x86460303, + 0x81C, 0x85480303, + 0x81C, 0x844A0303, + 0x81C, 0x834C0303, + 0x81C, 0x824E0303, + 0x81C, 0x81500303, + 0x81C, 0x64520303, + 0x81C, 0x63540303, + 0x81C, 0x62560303, + 0x81C, 0x61580303, + 0x81C, 0x435A0303, + 0x81C, 0x425C0303, + 0x81C, 0x415E0303, + 0x81C, 0x07600303, + 0x81C, 0x06620303, + 0x81C, 0x05640303, + 0x81C, 0x04660303, + 0x81C, 0x03680303, + 0x81C, 0x026A0303, + 0x81C, 0x016C0303, + 0x81C, 0x016E0303, + 0x81C, 0x01700303, + 0x81C, 0x01720303, + 0x81C, 0x01740303, + 0x81C, 0x01760303, + 0x81C, 0x01780303, + 0x81C, 0x017A0303, + 0x81C, 0x017C0303, + 0x81C, 0x017E0303, + 0xB0000000, 0x00000000, + 0xC50, 0x00000022, + 0xC50, 0x00000020, + 0xE50, 0x00000022, + 0xE50, 0x00000020, + 0x1850, 0x00000022, + 0x1850, 0x00000020, + 0x1A50, 0x00000022, + 0x1A50, 0x00000020, + +}; + +void +odm_read_and_config_mp_8814a_agc_tab(struct dm_struct *dm) +{ + u32 i = 0; + u8 c_cond; + boolean is_matched = true, is_skipped = false; + u32 array_len = + sizeof(array_mp_8814a_agc_tab) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_agc_tab; + + u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0; + u32 a1 = 0, a2 = 0, a3 = 0, a4 = 0; + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + while ((i + 1) < array_len) { + v1 = array[i]; + v2 = array[i + 1]; + + if (v1 & (BIT(31) | BIT(30))) {/*positive & negative condition*/ + if (v1 & BIT(31)) {/* positive condition*/ + c_cond = + (u8)((v1 & (BIT(29) | BIT(28))) >> 28); + if (c_cond == COND_ENDIF) {/*end*/ + is_matched = true; + is_skipped = false; + PHYDM_DBG(dm, ODM_COMP_INIT, "ENDIF\n"); + } else if (c_cond == COND_ELSE) { /*else*/ + is_matched = is_skipped ? false : true; + PHYDM_DBG(dm, ODM_COMP_INIT, "ELSE\n"); + } else {/*if , else if*/ + pre_v1 = v1; + pre_v2 = v2; + PHYDM_DBG(dm, ODM_COMP_INIT, + "IF or ELSE IF\n"); + } + } else if (v1 & BIT(30)) { /*negative condition*/ + if (!is_skipped) { + a1 = pre_v1; a2 = pre_v2; + a3 = v1; a4 = v2; + if (check_positive(dm, + a1, a2, a3, a4)) { + is_matched = true; + is_skipped = true; + } else { + is_matched = false; + is_skipped = false; + } + } else { + is_matched = false; + } + } + } else { + if (is_matched) + odm_config_bb_agc_8814a(dm, v1, MASKDWORD, v2); + } + i = i + 2; + } +} + +u32 +odm_get_version_mp_8814a_agc_tab(void) +{ + return 110; +} + +/****************************************************************************** + * phy_reg.TXT + ******************************************************************************/ + +const u32 array_mp_8814a_phy_reg[] = { + 0x800, 0x9020D010, + 0x804, 0x08011280, + 0x808, 0x0E0282FF, + 0x80C, 0x1000002F, + 0x80000003, 0x00000000, 0x40000000, 0x00000000, + 0x810, 0x33303265, + 0xA0000000, 0x00000000, + 0x810, 0x33303265, + 0xB0000000, 0x00000000, + 0x814, 0x020C3D10, + 0x818, 0x04A10385, + 0x820, 0x00000000, + 0x824, 0x00033E40, + 0x828, 0x00000000, + 0x82C, 0x73985170, + 0x830, 0x79A0EA08, + 0x834, 0x042E708A, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x838, 0x86667640, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x838, 0x86667641, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x838, 0x86667641, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x838, 0x86667641, + 0xA0000000, 0x00000000, + 0x838, 0x86667640, + 0xB0000000, 0x00000000, + 0x83C, 0x9798B9B9, + 0x840, 0x17578F60, + 0x844, 0x4BBDFCDE, + 0x848, 0x5CD07F8B, + 0x84C, 0x6CFBF7B5, + 0x850, 0x28834706, + 0x854, 0x0001520C, + 0x858, 0x4060C000, + 0x85C, 0x74210368, + 0x860, 0x6929C321, + 0x864, 0x79727432, + 0x868, 0x8CA7A314, + 0x86C, 0x438C2878, + 0x870, 0x44444444, + 0x874, 0x21612C2E, + 0x878, 0x00003152, + 0x87C, 0x000FC000, + 0x8A0, 0x00000013, + 0x8A4, 0x7F7F7F7F, + 0x8A8, 0xA202033E, + 0x8AC, 0xF40F550A, + 0x8B0, 0x00000600, + 0x8B4, 0x000FC080, + 0x8B8, 0xEC0057FF, + 0x8BC, 0x8CA520C3, + 0x8C0, 0x3FF00020, + 0x8C4, 0x44C00000, + 0x80000009, 0x00000000, 0x40000000, 0x00000000, + 0x8C8, 0x80025969, + 0xA0000000, 0x00000000, + 0x8C8, 0x80025167, + 0xB0000000, 0x00000000, + 0x8CC, 0x08250492, + 0x8D0, 0x0000B800, + 0x8D4, 0x940008A0, + 0x8D8, 0x290B5612, + 0x8DC, 0x00000000, + 0x8E0, 0x32316407, + 0x8E4, 0x4A092925, + 0x8E8, 0xFFFFC42C, + 0x8EC, 0x99999999, + 0x8F0, 0x00009999, + 0x8F4, 0x00F80FA1, + 0x8F8, 0x400082C0, + 0x8FC, 0x00000000, + 0x900, 0x00400700, + 0x90C, 0x09004000, + 0x910, 0x0000FC00, + 0x914, 0xD6400404, + 0x918, 0x1C1028C0, + 0x91C, 0x64B11A1C, + 0x920, 0xE0767233, + 0x924, 0x055AA500, + 0x928, 0x4AB0E4E4, + 0x92C, 0xFFFE0000, + 0x930, 0xFFFFFFFE, + 0x934, 0x001FFFFF, + 0x938, 0x00008400, + 0x93C, 0x932C0642, + 0x940, 0x093E9360, + 0x944, 0x08000000, + 0x948, 0x04000000, + 0x950, 0x02010080, + 0x954, 0x86510080, + 0x960, 0x00000000, + 0x964, 0x00000000, + 0x968, 0x00000000, + 0x96C, 0x00000000, + 0x970, 0x801FFFFF, + 0x978, 0x00000000, + 0x97C, 0x00000000, + 0x980, 0x00000000, + 0x984, 0x00000000, + 0x988, 0x00000000, + 0x98C, 0x03440000, + 0x990, 0x27100000, + 0x994, 0xFFFF0100, + 0x998, 0xFFFFFF5C, + 0x99C, 0xFFFFFFFF, + 0x9A0, 0x000000FF, + 0x9A4, 0x00080080, + 0x9A8, 0x0C2F0000, + 0x9AC, 0x00560000, + 0x9B0, 0x81081008, + 0x9B4, 0x00000000, + 0x9B8, 0x01081008, + 0x9BC, 0x01081008, + 0x9D0, 0x00000000, + 0x9D4, 0x00000000, + 0x9D8, 0x00000000, + 0x9DC, 0x00000000, + 0x9E4, 0x00000002, + 0x9E8, 0x000022D5, + 0x9FC, 0xEFFFF7FF, + 0xB00, 0xE3100000, + 0xB04, 0x0000B000, + 0xB0C, 0x31EAA006, + 0xB5C, 0x41CFFFFF, + 0xC00, 0x00000007, + 0xC04, 0x00042020, + 0xC08, 0x80410231, + 0xC0C, 0x00000000, + 0xC10, 0x00000100, + 0xC14, 0x01000000, + 0xC1C, 0x40000053, + 0xC50, 0x00000020, + 0xC54, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0xC58, 0x3C0A0C14, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0xC58, 0x3C0A0C14, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0xC58, 0x3C0A0C14, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xC58, 0x3C0A0C14, + 0xA0000000, 0x00000000, + 0xC58, 0x3C020C14, + 0xB0000000, 0x00000000, + 0xC5C, 0x0D000058, + 0xC60, 0x1B800000, + 0xC60, 0x0B800001, + 0xC60, 0x05800002, + 0xC60, 0x07800003, + 0xC60, 0x1A800004, + 0xC60, 0x0B800005, + 0xC60, 0x05800006, + 0xC60, 0x0E800007, + 0xC60, 0x1A800008, + 0xC60, 0x0B800009, + 0xC60, 0x1580000A, + 0xC60, 0x0880000B, + 0xC60, 0x1A80000C, + 0xC60, 0x0B80000D, + 0xC60, 0x0580000E, + 0xC60, 0x0E80000F, + 0xC60, 0x1A800010, + 0xC60, 0x0B800011, + 0xC60, 0x15800012, + 0xC60, 0x08800013, + 0xC60, 0x1A800014, + 0xC60, 0x0B800015, + 0xC60, 0x05800016, + 0xC60, 0x07800017, + 0xC60, 0x1A800018, + 0xC60, 0x0B800019, + 0xC60, 0x1580001A, + 0xC60, 0x0880001B, + 0xC60, 0x1B80001C, + 0xC60, 0x0B80001D, + 0xC60, 0x0580001E, + 0xC60, 0x0780001F, + 0xC60, 0x1B800020, + 0xC60, 0x0B800021, + 0xC60, 0x05800022, + 0xC60, 0x07800023, + 0xC60, 0x1B800024, + 0xC60, 0x0B800025, + 0xC60, 0x05800026, + 0xC60, 0x07800027, + 0xC60, 0x1B800028, + 0xC60, 0x0B800029, + 0xC60, 0x0580002A, + 0xC60, 0x0780002B, + 0xC60, 0x1B800030, + 0xC60, 0x0B800031, + 0xC60, 0x05800032, + 0xC60, 0x00800033, + 0xC60, 0x1B800034, + 0xC60, 0x0B800035, + 0xC60, 0x05800036, + 0xC60, 0x00800037, + 0xC60, 0x1B800038, + 0xC60, 0x0B800039, + 0xC60, 0x0580003A, + 0xC60, 0x0E80803B, + 0xC94, 0x01000401, + 0xC98, 0x00188000, + 0xCA0, 0x00002929, + 0xCA4, 0x08040201, + 0xCA8, 0x80402010, + 0xCAC, 0x77777000, + 0xCB0, 0x54775477, + 0xCB4, 0x54775477, + 0xCB8, 0x00500000, + 0xCBC, 0x77700000, + 0xCC0, 0x00000010, + 0xCC8, 0x00000010, + 0xE00, 0x00000007, + 0xE04, 0x00042020, + 0xE08, 0x80410231, + 0xE0C, 0x00000000, + 0xE10, 0x00000100, + 0xE14, 0x01000000, + 0xE1C, 0x40000053, + 0xE50, 0x00000020, + 0xE54, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0xE58, 0x3C0A0C14, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0xE58, 0x3C0A0C14, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0xE58, 0x3C0A0C14, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0xE58, 0x3C0A0C14, + 0xA0000000, 0x00000000, + 0xE58, 0x3C020C14, + 0xB0000000, 0x00000000, + 0xE5C, 0x0D000058, + 0xE60, 0x1B800000, + 0xE60, 0x0B800001, + 0xE60, 0x05800002, + 0xE60, 0x07800003, + 0xE60, 0x1A800004, + 0xE60, 0x0B800005, + 0xE60, 0x05800006, + 0xE60, 0x0E800007, + 0xE60, 0x1A800008, + 0xE60, 0x0B800009, + 0xE60, 0x1580000A, + 0xE60, 0x0880000B, + 0xE60, 0x1A80000C, + 0xE60, 0x0B80000D, + 0xE60, 0x0580000E, + 0xE60, 0x0E80000F, + 0xE60, 0x1A800010, + 0xE60, 0x0B800011, + 0xE60, 0x15800012, + 0xE60, 0x08800013, + 0xE60, 0x1A800014, + 0xE60, 0x0B800015, + 0xE60, 0x05800016, + 0xE60, 0x07800017, + 0xE60, 0x1A800018, + 0xE60, 0x0B800019, + 0xE60, 0x1580001A, + 0xE60, 0x0880001B, + 0xE60, 0x1B80001C, + 0xE60, 0x0B80001D, + 0xE60, 0x0580001E, + 0xE60, 0x0780001F, + 0xE60, 0x1B800020, + 0xE60, 0x0B800021, + 0xE60, 0x05800022, + 0xE60, 0x07800023, + 0xE60, 0x1B800024, + 0xE60, 0x0B800025, + 0xE60, 0x05800026, + 0xE60, 0x07800027, + 0xE60, 0x1B800028, + 0xE60, 0x0B800029, + 0xE60, 0x0580002A, + 0xE60, 0x0780002B, + 0xE60, 0x1B800030, + 0xE60, 0x0B800031, + 0xE60, 0x05800032, + 0xE60, 0x00800033, + 0xE60, 0x1B800034, + 0xE60, 0x0B800035, + 0xE60, 0x05800036, + 0xE60, 0x00800037, + 0xE60, 0x1B800038, + 0xE60, 0x0B800039, + 0xE60, 0x0580003A, + 0xE60, 0x0E80803B, + 0xE94, 0x01000401, + 0xE98, 0x00188000, + 0xEA0, 0x00002929, + 0xEA4, 0x08040201, + 0xEA8, 0x80402010, + 0xEAC, 0x77777000, + 0xEB0, 0x54775477, + 0xEB4, 0x54775477, + 0xEB8, 0x00500000, + 0xEBC, 0x77700000, + 0x1800, 0x00000007, + 0x1804, 0x00042020, + 0x1808, 0x80410231, + 0x180C, 0x00000000, + 0x1810, 0x00000100, + 0x1814, 0x01000000, + 0x181C, 0x40000053, + 0x1850, 0x00000020, + 0x1854, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x1858, 0x3C0A0C14, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1858, 0x3C0A0C14, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1858, 0x3C0A0C14, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1858, 0x3C0A0C14, + 0xA0000000, 0x00000000, + 0x1858, 0x3C020C14, + 0xB0000000, 0x00000000, + 0x185C, 0x0D000058, + 0x1860, 0x1B800000, + 0x1860, 0x0B800001, + 0x1860, 0x05800002, + 0x1860, 0x07800003, + 0x1860, 0x1A800004, + 0x1860, 0x0B800005, + 0x1860, 0x05800006, + 0x1860, 0x0E800007, + 0x1860, 0x1A800008, + 0x1860, 0x0B800009, + 0x1860, 0x1580000A, + 0x1860, 0x0880000B, + 0x1860, 0x1A80000C, + 0x1860, 0x0B80000D, + 0x1860, 0x0580000E, + 0x1860, 0x0E80000F, + 0x1860, 0x1A800010, + 0x1860, 0x0B800011, + 0x1860, 0x15800012, + 0x1860, 0x08800013, + 0x1860, 0x1A800014, + 0x1860, 0x0B800015, + 0x1860, 0x05800016, + 0x1860, 0x07800017, + 0x1860, 0x1A800018, + 0x1860, 0x0B800019, + 0x1860, 0x1580001A, + 0x1860, 0x0880001B, + 0x1860, 0x1B80001C, + 0x1860, 0x0B80001D, + 0x1860, 0x0580001E, + 0x1860, 0x0780001F, + 0x1860, 0x1B800020, + 0x1860, 0x0B800021, + 0x1860, 0x05800022, + 0x1860, 0x07800023, + 0x1860, 0x1B800024, + 0x1860, 0x0B800025, + 0x1860, 0x05800026, + 0x1860, 0x07800027, + 0x1860, 0x1B800028, + 0x1860, 0x0B800029, + 0x1860, 0x0580002A, + 0x1860, 0x0780002B, + 0x1860, 0x1B800030, + 0x1860, 0x0B800031, + 0x1860, 0x05800032, + 0x1860, 0x00800033, + 0x1860, 0x1B800034, + 0x1860, 0x0B800035, + 0x1860, 0x05800036, + 0x1860, 0x00800037, + 0x1860, 0x1B800038, + 0x1860, 0x0B800039, + 0x1860, 0x0580003A, + 0x1860, 0x0E80803B, + 0x1894, 0x01000401, + 0x1898, 0x00188000, + 0x18A0, 0x00002929, + 0x18A4, 0x08040201, + 0x18A8, 0x80402010, + 0x18AC, 0x77777000, + 0x18B0, 0x54775477, + 0x18B4, 0x54775477, + 0x18B8, 0x00500000, + 0x18BC, 0x77700000, + 0x1A00, 0x00000007, + 0x1A04, 0x00042020, + 0x1A08, 0x80410231, + 0x1A0C, 0x00000000, + 0x1A10, 0x00000100, + 0x1A14, 0x01000000, + 0x1A1C, 0x40000053, + 0x1A50, 0x00000020, + 0x1A54, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x1A58, 0x3C0A0C14, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1A58, 0x3C0A0C14, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1A58, 0x3C0A0C14, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1A58, 0x3C0A0C14, + 0xA0000000, 0x00000000, + 0x1A58, 0x3C020C14, + 0xB0000000, 0x00000000, + 0x1A5C, 0x0D000058, + 0x1A60, 0x1B800000, + 0x1A60, 0x0B800001, + 0x1A60, 0x05800002, + 0x1A60, 0x07800003, + 0x1A60, 0x1A800004, + 0x1A60, 0x0B800005, + 0x1A60, 0x05800006, + 0x1A60, 0x0E800007, + 0x1A60, 0x1A800008, + 0x1A60, 0x0B800009, + 0x1A60, 0x1580000A, + 0x1A60, 0x0880000B, + 0x1A60, 0x1A80000C, + 0x1A60, 0x0B80000D, + 0x1A60, 0x0580000E, + 0x1A60, 0x0E80000F, + 0x1A60, 0x1A800010, + 0x1A60, 0x0B800011, + 0x1A60, 0x15800012, + 0x1A60, 0x08800013, + 0x1A60, 0x1A800014, + 0x1A60, 0x0B800015, + 0x1A60, 0x05800016, + 0x1A60, 0x07800017, + 0x1A60, 0x1A800018, + 0x1A60, 0x0B800019, + 0x1A60, 0x1580001A, + 0x1A60, 0x0880001B, + 0x1A60, 0x1B80001C, + 0x1A60, 0x0B80001D, + 0x1A60, 0x0580001E, + 0x1A60, 0x0780001F, + 0x1A60, 0x1B800020, + 0x1A60, 0x0B800021, + 0x1A60, 0x05800022, + 0x1A60, 0x07800023, + 0x1A60, 0x1B800024, + 0x1A60, 0x0B800025, + 0x1A60, 0x05800026, + 0x1A60, 0x07800027, + 0x1A60, 0x1B800028, + 0x1A60, 0x0B800029, + 0x1A60, 0x0580002A, + 0x1A60, 0x0780002B, + 0x1A60, 0x1B800030, + 0x1A60, 0x0B800031, + 0x1A60, 0x05800032, + 0x1A60, 0x00800033, + 0x1A60, 0x1B800034, + 0x1A60, 0x0B800035, + 0x1A60, 0x05800036, + 0x1A60, 0x00800037, + 0x1A60, 0x1B800038, + 0x1A60, 0x0B800039, + 0x1A60, 0x0580003A, + 0x1A60, 0x0E80803B, + 0x1A94, 0x01000401, + 0x1A98, 0x00188000, + 0x1AA0, 0x00002929, + 0x1AA4, 0x08040201, + 0x1AA8, 0x80402010, + 0x1AAC, 0x77777000, + 0x1AB0, 0x54775477, + 0x1AB4, 0x54775477, + 0x1AB8, 0x00500000, + 0x1ABC, 0x77700000, + 0x1904, 0x00030000, + 0x1914, 0x00030000, + 0x1984, 0x03000000, + 0x1988, 0x00000087, + 0x198C, 0x00000007, + 0x1990, 0xFFAA5500, + 0x1994, 0x00000077, + 0x1998, 0x12801000, + 0x1998, 0x12801000, + 0x1998, 0x12801001, + 0x1998, 0x12801002, + 0x1998, 0x12801003, + 0x1998, 0x12801004, + 0x1998, 0x12801005, + 0x1998, 0x12801006, + 0x1998, 0x12801007, + 0x1998, 0x12801008, + 0x1998, 0x12801009, + 0x1998, 0x1280100A, + 0x1998, 0x1280100B, + 0x1998, 0x1280100C, + 0x1998, 0x1280100D, + 0x1998, 0x1280100E, + 0x1998, 0x1280100F, + 0x1998, 0x12801010, + 0x1998, 0x12801011, + 0x1998, 0x12801012, + 0x1998, 0x12801013, + 0x1998, 0x12801014, + 0x1998, 0x12801015, + 0x1998, 0x12801016, + 0x1998, 0x12801017, + 0x1998, 0x12801018, + 0x1998, 0x12801019, + 0x1998, 0x1280101A, + 0x1998, 0x1280101B, + 0x1998, 0x1280101C, + 0x1998, 0x1280101D, + 0x1998, 0x1280101E, + 0x1998, 0x1280101F, + 0x1998, 0x12801020, + 0x1998, 0x12801021, + 0x1998, 0x12801022, + 0x1998, 0x12801023, + 0x1998, 0x1280102C, + 0x1998, 0x1280102D, + 0x1998, 0x1280102E, + 0x1998, 0x1280102F, + 0x1998, 0x12801030, + 0x1998, 0x12801031, + 0x1998, 0x12801032, + 0x1998, 0x12801033, + 0x1998, 0x12801034, + 0x1998, 0x12801035, + 0x1998, 0x12801036, + 0x1998, 0x12801037, + 0x1998, 0x12801038, + 0x1998, 0x12801039, + 0x1998, 0x1280103A, + 0x1998, 0x1280103B, + 0x1998, 0x1280103C, + 0x1998, 0x1280103D, + 0x1998, 0x1280103E, + 0x1998, 0x1280103F, + 0x1998, 0x12801040, + 0x1998, 0x12801041, + 0x1998, 0x12801042, + 0x1998, 0x12801043, + 0x1998, 0x12801044, + 0x1998, 0x12801045, + 0x1998, 0x12801046, + 0x1998, 0x12801047, + 0x1998, 0x12801048, + 0x1998, 0x12801049, + 0x1998, 0x12801100, + 0x1998, 0x12801101, + 0x1998, 0x12801102, + 0x1998, 0x12801103, + 0x1998, 0x12801104, + 0x1998, 0x12801105, + 0x1998, 0x12801106, + 0x1998, 0x12801107, + 0x1998, 0x12801108, + 0x1998, 0x12801109, + 0x1998, 0x1280110A, + 0x1998, 0x1280110B, + 0x1998, 0x1280110C, + 0x1998, 0x1280110D, + 0x1998, 0x1280110E, + 0x1998, 0x1280110F, + 0x1998, 0x12801110, + 0x1998, 0x12801111, + 0x1998, 0x12801112, + 0x1998, 0x12801113, + 0x1998, 0x12801114, + 0x1998, 0x12801115, + 0x1998, 0x12801116, + 0x1998, 0x12801117, + 0x1998, 0x12801118, + 0x1998, 0x12801119, + 0x1998, 0x1280111A, + 0x1998, 0x1280111B, + 0x1998, 0x1280111C, + 0x1998, 0x1280111D, + 0x1998, 0x1280111E, + 0x1998, 0x1280111F, + 0x1998, 0x12801120, + 0x1998, 0x12801121, + 0x1998, 0x12801122, + 0x1998, 0x12801123, + 0x1998, 0x1280112C, + 0x1998, 0x1280112D, + 0x1998, 0x1280112E, + 0x1998, 0x1280112F, + 0x1998, 0x12801130, + 0x1998, 0x12801131, + 0x1998, 0x12801132, + 0x1998, 0x12801133, + 0x1998, 0x12801134, + 0x1998, 0x12801135, + 0x1998, 0x12801136, + 0x1998, 0x12801137, + 0x1998, 0x12801138, + 0x1998, 0x12801139, + 0x1998, 0x1280113A, + 0x1998, 0x1280113B, + 0x1998, 0x1280113C, + 0x1998, 0x1280113D, + 0x1998, 0x1280113E, + 0x1998, 0x1280113F, + 0x1998, 0x12801140, + 0x1998, 0x12801141, + 0x1998, 0x12801142, + 0x1998, 0x12801143, + 0x1998, 0x12801144, + 0x1998, 0x12801145, + 0x1998, 0x12801146, + 0x1998, 0x12801147, + 0x1998, 0x12801148, + 0x1998, 0x12801149, + 0x1998, 0x12801200, + 0x1998, 0x12801201, + 0x1998, 0x12801202, + 0x1998, 0x12801203, + 0x1998, 0x12801204, + 0x1998, 0x12801205, + 0x1998, 0x12801206, + 0x1998, 0x12801207, + 0x1998, 0x12801208, + 0x1998, 0x12801209, + 0x1998, 0x1280120A, + 0x1998, 0x1280120B, + 0x1998, 0x1280120C, + 0x1998, 0x1280120D, + 0x1998, 0x1280120E, + 0x1998, 0x1280120F, + 0x1998, 0x12801210, + 0x1998, 0x12801211, + 0x1998, 0x12801212, + 0x1998, 0x12801213, + 0x1998, 0x12801214, + 0x1998, 0x12801215, + 0x1998, 0x12801216, + 0x1998, 0x12801217, + 0x1998, 0x12801218, + 0x1998, 0x12801219, + 0x1998, 0x1280121A, + 0x1998, 0x1280121B, + 0x1998, 0x1280121C, + 0x1998, 0x1280121D, + 0x1998, 0x1280121E, + 0x1998, 0x1280121F, + 0x1998, 0x12801220, + 0x1998, 0x12801221, + 0x1998, 0x12801222, + 0x1998, 0x12801223, + 0x1998, 0x1280122C, + 0x1998, 0x1280122D, + 0x1998, 0x1280122E, + 0x1998, 0x1280122F, + 0x1998, 0x12801230, + 0x1998, 0x12801231, + 0x1998, 0x12801232, + 0x1998, 0x12801233, + 0x1998, 0x12801234, + 0x1998, 0x12801235, + 0x1998, 0x12801236, + 0x1998, 0x12801237, + 0x1998, 0x12801238, + 0x1998, 0x12801239, + 0x1998, 0x1280123A, + 0x1998, 0x1280123B, + 0x1998, 0x1280123C, + 0x1998, 0x1280123D, + 0x1998, 0x1280123E, + 0x1998, 0x1280123F, + 0x1998, 0x12801240, + 0x1998, 0x12801241, + 0x1998, 0x12801242, + 0x1998, 0x12801243, + 0x1998, 0x12801244, + 0x1998, 0x12801245, + 0x1998, 0x12801246, + 0x1998, 0x12801247, + 0x1998, 0x12801248, + 0x1998, 0x12801249, + 0x1998, 0x12801300, + 0x1998, 0x12801301, + 0x1998, 0x12801302, + 0x1998, 0x12801303, + 0x1998, 0x12801304, + 0x1998, 0x12801305, + 0x1998, 0x12801306, + 0x1998, 0x12801307, + 0x1998, 0x12801308, + 0x1998, 0x12801309, + 0x1998, 0x1280130A, + 0x1998, 0x1280130B, + 0x1998, 0x1280130C, + 0x1998, 0x1280130D, + 0x1998, 0x1280130E, + 0x1998, 0x1280130F, + 0x1998, 0x12801310, + 0x1998, 0x12801311, + 0x1998, 0x12801312, + 0x1998, 0x12801313, + 0x1998, 0x12801314, + 0x1998, 0x12801315, + 0x1998, 0x12801316, + 0x1998, 0x12801317, + 0x1998, 0x12801318, + 0x1998, 0x12801319, + 0x1998, 0x1280131A, + 0x1998, 0x1280131B, + 0x1998, 0x1280131C, + 0x1998, 0x1280131D, + 0x1998, 0x1280131E, + 0x1998, 0x1280131F, + 0x1998, 0x12801320, + 0x1998, 0x12801321, + 0x1998, 0x12801322, + 0x1998, 0x12801323, + 0x1998, 0x1280132C, + 0x1998, 0x1280132D, + 0x1998, 0x1280132E, + 0x1998, 0x1280132F, + 0x1998, 0x12801330, + 0x1998, 0x12801331, + 0x1998, 0x12801332, + 0x1998, 0x12801333, + 0x1998, 0x12801334, + 0x1998, 0x12801335, + 0x1998, 0x12801336, + 0x1998, 0x12801337, + 0x1998, 0x12801338, + 0x1998, 0x12801339, + 0x1998, 0x1280133A, + 0x1998, 0x1280133B, + 0x1998, 0x1280133C, + 0x1998, 0x1280133D, + 0x1998, 0x1280133E, + 0x1998, 0x1280133F, + 0x1998, 0x12801340, + 0x1998, 0x12801341, + 0x1998, 0x12801342, + 0x1998, 0x12801343, + 0x1998, 0x12801344, + 0x1998, 0x12801345, + 0x1998, 0x12801346, + 0x1998, 0x12801347, + 0x1998, 0x12801348, + 0x1998, 0x12801349, + 0x19D4, 0x88888888, + 0x19D8, 0x00000888, + 0xB00, 0xE3100100, + 0xB00, 0xE7100100, + 0xC60, 0x15808002, + 0xC60, 0x01808003, + 0xE60, 0x15808002, + 0xE60, 0x01808003, + 0x1860, 0x15808002, + 0x1860, 0x01808003, + 0x1A60, 0x15808002, + 0x1A60, 0x01808003, + 0xB00, 0xE3100100, + 0xC5C, 0x0D080058, + 0xE5C, 0x0D080058, + 0x185C, 0x0D080058, + 0x1A5C, 0x0D080058, + 0xC5C, 0x0D000058, + 0xE5C, 0x0D000058, + 0x185C, 0x0D000058, + 0x1A5C, 0x0D000058, + 0xC60, 0x05808002, + 0xC60, 0x0E808003, + 0xE60, 0x05808002, + 0xE60, 0x0E808003, + 0x1860, 0x05808002, + 0x1860, 0x0E808003, + 0x1A60, 0x05808002, + 0x1A60, 0x0E808003, + 0xB00, 0xE7100100, + 0xB00, 0xE3100100, + 0xB00, 0xE3100000, + 0x1C38, 0x00000002, + 0xA00, 0x00D047C8, + 0xA04, 0x46FF800C, + 0xA08, 0x8C838300, + 0xA0C, 0x2E7E000F, + 0xA10, 0x9500BB78, + 0xA14, 0x11144028, + 0xA18, 0x00881117, + 0xA1C, 0x89140F00, + 0xA20, 0x1A1B0030, + 0xA24, 0x090E1317, + 0xA28, 0x00000204, + 0xA2C, 0x00900000, + 0xA70, 0x101FFF00, + 0xA74, 0x00000128, + 0xA78, 0x00000900, + 0xA7C, 0x225B0606, + 0xA80, 0x218075B2, + 0xA84, 0x9C1F8C00, + 0x1B04, 0xE24628D2, + 0x1B10, 0x88010D46, + 0x1B14, 0x00000000, + 0x1B18, 0x00292903, + 0x1B00, 0xF8000000, + 0x1B00, 0xF800D000, + 0x1B00, 0xF801F000, + 0x1B1C, 0xA2123DB2, + 0x1B20, 0x07040001, + 0x1B24, 0x07060807, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0xA0000000, 0x00000000, + 0x1B28, 0xC0060348, + 0xB0000000, 0x00000000, + 0x1B2C, 0x20000003, + 0x1B30, 0x20000000, + 0x1B38, 0x20000000, + 0x1B3C, 0x20000000, + 0x1BD4, 0x00000001, + 0x1B94, 0x80000000, + 0x1B34, 0x00000000, + 0x1B34, 0x00000002, + 0x1B34, 0x00000000, + 0x1B00, 0xF8000002, + 0x1B00, 0xF800D002, + 0x1B00, 0xF801F002, + 0x1B1C, 0xA2123DB2, + 0x1B20, 0x07040001, + 0x1B24, 0x07060807, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0xA0000000, 0x00000000, + 0x1B28, 0xC0060348, + 0xB0000000, 0x00000000, + 0x1B2C, 0x20000003, + 0x1B30, 0x20000000, + 0x1B38, 0x20000000, + 0x1B3C, 0x20000000, + 0x1BD4, 0x00000001, + 0x1B94, 0x80000000, + 0x1B34, 0x00000000, + 0x1B34, 0x00000002, + 0x1B34, 0x00000000, + 0x1B00, 0xF8000004, + 0x1B00, 0xF800D004, + 0x1B00, 0xF801F004, + 0x1B1C, 0xA2123DB2, + 0x1B20, 0x07040001, + 0x1B24, 0x07060807, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0xA0000000, 0x00000000, + 0x1B28, 0xC0060348, + 0xB0000000, 0x00000000, + 0x1B2C, 0x20000003, + 0x1B30, 0x20000000, + 0x1B38, 0x20000000, + 0x1B3C, 0x20000000, + 0x1BD4, 0x00000001, + 0x1B94, 0x80000000, + 0x1B34, 0x00000000, + 0x1B34, 0x00000002, + 0x1B34, 0x00000000, + 0x1B00, 0xF8000006, + 0x1B00, 0xF800D006, + 0x1B00, 0xF801F006, + 0x1B1C, 0xA2123DB2, + 0x1B20, 0x07040001, + 0x1B24, 0x07060807, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B28, 0xC0060324, + 0xA0000000, 0x00000000, + 0x1B28, 0xC0060348, + 0xB0000000, 0x00000000, + 0x1B2C, 0x20000003, + 0x1B30, 0x20000000, + 0x1B38, 0x20000000, + 0x1B3C, 0x20000000, + 0x1BD4, 0x00000001, + 0x1B94, 0x80000000, + 0x1B34, 0x00000000, + 0x1B34, 0x00000002, + 0x1B34, 0x00000000, + 0x1B00, 0xF8000000, + 0x1B80, 0x00000007, + 0x1B80, 0x09060005, + 0x1B80, 0x09060007, + 0x1B80, 0x0FFE0015, + 0x1B80, 0x0FFE0017, + 0x1B80, 0x00240025, + 0x1B80, 0x00240027, + 0x1B80, 0x00040035, + 0x1B80, 0x00040037, + 0x1B80, 0x05C00045, + 0x1B80, 0x05C00047, + 0x1B80, 0x00070055, + 0x1B80, 0x00070057, + 0x1B80, 0x64000065, + 0x1B80, 0x64000067, + 0x1B80, 0x00020075, + 0x1B80, 0x00020077, + 0x1B80, 0x00080085, + 0x1B80, 0x00080087, + 0x1B80, 0x80000095, + 0x1B80, 0x80000097, + 0x1B80, 0x090100A5, + 0x1B80, 0x090100A7, + 0x1B80, 0x0F0200B5, + 0x1B80, 0x0F0200B7, + 0x1B80, 0x002400C5, + 0x1B80, 0x002400C7, + 0x1B80, 0x000400D5, + 0x1B80, 0x000400D7, + 0x1B80, 0x05C000E5, + 0x1B80, 0x05C000E7, + 0x1B80, 0x000700F5, + 0x1B80, 0x000700F7, + 0x1B80, 0x64020105, + 0x1B80, 0x64020107, + 0x1B80, 0x00020115, + 0x1B80, 0x00020117, + 0x1B80, 0x00040125, + 0x1B80, 0x00040127, + 0x1B80, 0x4A000135, + 0x1B80, 0x4A000137, + 0x1B80, 0x4B040145, + 0x1B80, 0x4B040147, + 0x1B80, 0x85030155, + 0x1B80, 0x85030157, + 0x1B80, 0x40010165, + 0x1B80, 0x40010167, + 0x1B80, 0xE0290175, + 0x1B80, 0xE0290177, + 0x1B80, 0x00040185, + 0x1B80, 0x00040187, + 0x1B80, 0x4B050195, + 0x1B80, 0x4B050197, + 0x1B80, 0x860301A5, + 0x1B80, 0x860301A7, + 0x1B80, 0x400301B5, + 0x1B80, 0x400301B7, + 0x1B80, 0xE02901C5, + 0x1B80, 0xE02901C7, + 0x1B80, 0x000401D5, + 0x1B80, 0x000401D7, + 0x1B80, 0x4B0601E5, + 0x1B80, 0x4B0601E7, + 0x1B80, 0x870301F5, + 0x1B80, 0x870301F7, + 0x1B80, 0x40050205, + 0x1B80, 0x40050207, + 0x1B80, 0xE0290215, + 0x1B80, 0xE0290217, + 0x1B80, 0x00040225, + 0x1B80, 0x00040227, + 0x1B80, 0x4B070235, + 0x1B80, 0x4B070237, + 0x1B80, 0x88030245, + 0x1B80, 0x88030247, + 0x1B80, 0x40070255, + 0x1B80, 0x40070257, + 0x1B80, 0xE0290265, + 0x1B80, 0xE0290267, + 0x1B80, 0x4B000275, + 0x1B80, 0x4B000277, + 0x1B80, 0x30000285, + 0x1B80, 0x30000287, + 0x1B80, 0xFE100295, + 0x1B80, 0xFE100297, + 0x1B80, 0xFF1002A5, + 0x1B80, 0xFF1002A7, + 0x1B80, 0xE18602B5, + 0x1B80, 0xE18602B7, + 0x1B80, 0xF00A02C5, + 0x1B80, 0xF00A02C7, + 0x1B80, 0xF10A02D5, + 0x1B80, 0xF10A02D7, + 0x1B80, 0xF20A02E5, + 0x1B80, 0xF20A02E7, + 0x1B80, 0xF30802F5, + 0x1B80, 0xF30802F7, + 0x1B80, 0xF4070305, + 0x1B80, 0xF4070307, + 0x1B80, 0xF5060315, + 0x1B80, 0xF5060317, + 0x1B80, 0xF7060325, + 0x1B80, 0xF7060327, + 0x1B80, 0xF8050335, + 0x1B80, 0xF8050337, + 0x1B80, 0xF9040345, + 0x1B80, 0xF9040347, + 0x1B80, 0x00010355, + 0x1B80, 0x00010357, + 0x1B80, 0x303B0365, + 0x1B80, 0x303B0367, + 0x1B80, 0x30500375, + 0x1B80, 0x30500377, + 0x1B80, 0x305C0385, + 0x1B80, 0x305C0387, + 0x1B80, 0x31D50395, + 0x1B80, 0x31D50397, + 0x1B80, 0x31C503A5, + 0x1B80, 0x31C503A7, + 0x1B80, 0x4D0403B5, + 0x1B80, 0x4D0403B7, + 0x1B80, 0x2EF003C5, + 0x1B80, 0x2EF003C7, + 0x1B80, 0x000203D5, + 0x1B80, 0x000203D7, + 0x1B80, 0x208003E5, + 0x1B80, 0x208003E7, + 0x1B80, 0x000003F5, + 0x1B80, 0x000003F7, + 0x1B80, 0x4D000405, + 0x1B80, 0x4D000407, + 0x1B80, 0x55070415, + 0x1B80, 0x55070417, + 0x1B80, 0xE1230425, + 0x1B80, 0xE1230427, + 0x1B80, 0xE1230435, + 0x1B80, 0xE1230437, + 0x1B80, 0x4D040445, + 0x1B80, 0x4D040447, + 0x1B80, 0x20800455, + 0x1B80, 0x20800457, + 0x1B80, 0x84000465, + 0x1B80, 0x84000467, + 0x1B80, 0x4D000475, + 0x1B80, 0x4D000477, + 0x1B80, 0x550F0485, + 0x1B80, 0x550F0487, + 0x1B80, 0xE1230495, + 0x1B80, 0xE1230497, + 0x1B80, 0x4F0204A5, + 0x1B80, 0x4F0204A7, + 0x1B80, 0x4E0004B5, + 0x1B80, 0x4E0004B7, + 0x1B80, 0x530204C5, + 0x1B80, 0x530204C7, + 0x1B80, 0x520104D5, + 0x1B80, 0x520104D7, + 0x1B80, 0xE12704E5, + 0x1B80, 0xE12704E7, + 0x1B80, 0x000104F5, + 0x1B80, 0x000104F7, + 0x1B80, 0x5C720505, + 0x1B80, 0x5C720507, + 0x1B80, 0xE1320515, + 0x1B80, 0xE1320517, + 0x1B80, 0x54E50525, + 0x1B80, 0x54E50527, + 0x1B80, 0x54BF0535, + 0x1B80, 0x54BF0537, + 0x1B80, 0x54C50545, + 0x1B80, 0x54C50547, + 0x1B80, 0x54BE0555, + 0x1B80, 0x54BE0557, + 0x1B80, 0x54DF0565, + 0x1B80, 0x54DF0567, + 0x1B80, 0x0BA60575, + 0x1B80, 0x0BA60577, + 0x1B80, 0xF3130585, + 0x1B80, 0xF3130587, + 0x1B80, 0xF41E0595, + 0x1B80, 0xF41E0597, + 0x1B80, 0xF53C05A5, + 0x1B80, 0xF53C05A7, + 0x1B80, 0x000105B5, + 0x1B80, 0x000105B7, + 0x1B80, 0x620605C5, + 0x1B80, 0x620605C7, + 0x1B80, 0x600605D5, + 0x1B80, 0x600605D7, + 0x1B80, 0xE1A905E5, + 0x1B80, 0xE1A905E7, + 0x1B80, 0x0C0005F5, + 0x1B80, 0x0C0005F7, + 0x1B80, 0x5C720605, + 0x1B80, 0x5C720607, + 0x1B80, 0xE1320615, + 0x1B80, 0xE1320617, + 0x1B80, 0x5CF10625, + 0x1B80, 0x5CF10627, + 0x1B80, 0x0C010635, + 0x1B80, 0x0C010637, + 0x1B80, 0xF2020645, + 0x1B80, 0xF2020647, + 0x1B80, 0x30D60655, + 0x1B80, 0x30D60657, + 0x1B80, 0x0AC60665, + 0x1B80, 0x0AC60667, + 0x1B80, 0xE1B60675, + 0x1B80, 0xE1B60677, + 0x1B80, 0xE1580685, + 0x1B80, 0xE1580687, + 0x1B80, 0x54E50695, + 0x1B80, 0x54E50697, + 0x1B80, 0x000106A5, + 0x1B80, 0x000106A7, + 0x1B80, 0x560106B5, + 0x1B80, 0x560106B7, + 0x1B80, 0x5CE206C5, + 0x1B80, 0x5CE206C7, + 0x1B80, 0x0AE106D5, + 0x1B80, 0x0AE106D7, + 0x1B80, 0x630C06E5, + 0x1B80, 0x630C06E7, + 0x1B80, 0xE13F06F5, + 0x1B80, 0xE13F06F7, + 0x1B80, 0x00270705, + 0x1B80, 0x00270707, + 0x1B80, 0xE16C0715, + 0x1B80, 0xE16C0717, + 0x1B80, 0x00020725, + 0x1B80, 0x00020727, + 0x1B80, 0x002A0735, + 0x1B80, 0x002A0737, + 0x1B80, 0x07140745, + 0x1B80, 0x07140747, + 0x1B80, 0x00020755, + 0x1B80, 0x00020757, + 0x1B80, 0x30C30765, + 0x1B80, 0x30C30767, + 0x1B80, 0x56010775, + 0x1B80, 0x56010777, + 0x1B80, 0x5CE20785, + 0x1B80, 0x5CE20787, + 0x1B80, 0x0AE10795, + 0x1B80, 0x0AE10797, + 0x1B80, 0x631707A5, + 0x1B80, 0x631707A7, + 0x1B80, 0xE13F07B5, + 0x1B80, 0xE13F07B7, + 0x1B80, 0x002507C5, + 0x1B80, 0x002507C7, + 0x1B80, 0xE16C07D5, + 0x1B80, 0xE16C07D7, + 0x1B80, 0x000207E5, + 0x1B80, 0x000207E7, + 0x1B80, 0x630F07F5, + 0x1B80, 0x630F07F7, + 0x1B80, 0xE13F0805, + 0x1B80, 0xE13F0807, + 0x1B80, 0x63070815, + 0x1B80, 0x63070817, + 0x1B80, 0xE13F0825, + 0x1B80, 0xE13F0827, + 0x1B80, 0x07140835, + 0x1B80, 0x07140837, + 0x1B80, 0x56000845, + 0x1B80, 0x56000847, + 0x1B80, 0x5CF20855, + 0x1B80, 0x5CF20857, + 0x1B80, 0x0AF10865, + 0x1B80, 0x0AF10867, + 0x1B80, 0x07140875, + 0x1B80, 0x07140877, + 0x1B80, 0x07140885, + 0x1B80, 0x07140887, + 0x1B80, 0x630F0895, + 0x1B80, 0x630F0897, + 0x1B80, 0xE13F08A5, + 0x1B80, 0xE13F08A7, + 0x1B80, 0x631708B5, + 0x1B80, 0x631708B7, + 0x1B80, 0xE13F08C5, + 0x1B80, 0xE13F08C7, + 0x1B80, 0x002508D5, + 0x1B80, 0x002508D7, + 0x1B80, 0xE16C08E5, + 0x1B80, 0xE16C08E7, + 0x1B80, 0x000208F5, + 0x1B80, 0x000208F7, + 0x1B80, 0x30C30905, + 0x1B80, 0x30C30907, + 0x1B80, 0xE1A90915, + 0x1B80, 0xE1A90917, + 0x1B80, 0x62060925, + 0x1B80, 0x62060927, + 0x1B80, 0x60060935, + 0x1B80, 0x60060937, + 0x1B80, 0xE1160945, + 0x1B80, 0xE1160947, + 0x1B80, 0x54BE0955, + 0x1B80, 0x54BE0957, + 0x1B80, 0x56010965, + 0x1B80, 0x56010967, + 0x1B80, 0x5CE20975, + 0x1B80, 0x5CE20977, + 0x1B80, 0x0AE10985, + 0x1B80, 0x0AE10987, + 0x1B80, 0x633A0995, + 0x1B80, 0x633A0997, + 0x1B80, 0xE13F09A5, + 0x1B80, 0xE13F09A7, + 0x1B80, 0x633709B5, + 0x1B80, 0x633709B7, + 0x1B80, 0xE13F09C5, + 0x1B80, 0xE13F09C7, + 0x1B80, 0x632F09D5, + 0x1B80, 0x632F09D7, + 0x1B80, 0xE13F09E5, + 0x1B80, 0xE13F09E7, + 0x1B80, 0x632709F5, + 0x1B80, 0x632709F7, + 0x1B80, 0xE13F0A05, + 0x1B80, 0xE13F0A07, + 0x1B80, 0x631F0A15, + 0x1B80, 0x631F0A17, + 0x1B80, 0xE13F0A25, + 0x1B80, 0xE13F0A27, + 0x1B80, 0x63170A35, + 0x1B80, 0x63170A37, + 0x1B80, 0xE13F0A45, + 0x1B80, 0xE13F0A47, + 0x1B80, 0x630F0A55, + 0x1B80, 0x630F0A57, + 0x1B80, 0xE13F0A65, + 0x1B80, 0xE13F0A67, + 0x1B80, 0x63070A75, + 0x1B80, 0x63070A77, + 0x1B80, 0xE13F0A85, + 0x1B80, 0xE13F0A87, + 0x1B80, 0xE16C0A95, + 0x1B80, 0xE16C0A97, + 0x1B80, 0x56000AA5, + 0x1B80, 0x56000AA7, + 0x1B80, 0x5CF20AB5, + 0x1B80, 0x5CF20AB7, + 0x1B80, 0x0AF10AC5, + 0x1B80, 0x0AF10AC7, + 0x1B80, 0xF5040AD5, + 0x1B80, 0xF5040AD7, + 0x1B80, 0xE13F0AE5, + 0x1B80, 0xE13F0AE7, + 0x1B80, 0xE16C0AF5, + 0x1B80, 0xE16C0AF7, + 0x1B80, 0x30B30B05, + 0x1B80, 0x30B30B07, + 0x1B80, 0x07140B15, + 0x1B80, 0x07140B17, + 0x1B80, 0x07140B25, + 0x1B80, 0x07140B27, + 0x1B80, 0x630F0B35, + 0x1B80, 0x630F0B37, + 0x1B80, 0xE13F0B45, + 0x1B80, 0xE13F0B47, + 0x1B80, 0x63170B55, + 0x1B80, 0x63170B57, + 0x1B80, 0xE13F0B65, + 0x1B80, 0xE13F0B67, + 0x1B80, 0x631F0B75, + 0x1B80, 0x631F0B77, + 0x1B80, 0xE13F0B85, + 0x1B80, 0xE13F0B87, + 0x1B80, 0x63270B95, + 0x1B80, 0x63270B97, + 0x1B80, 0xE13F0BA5, + 0x1B80, 0xE13F0BA7, + 0x1B80, 0x632F0BB5, + 0x1B80, 0x632F0BB7, + 0x1B80, 0xE13F0BC5, + 0x1B80, 0xE13F0BC7, + 0x1B80, 0x63370BD5, + 0x1B80, 0x63370BD7, + 0x1B80, 0xE13F0BE5, + 0x1B80, 0xE13F0BE7, + 0x1B80, 0x633A0BF5, + 0x1B80, 0x633A0BF7, + 0x1B80, 0xE13F0C05, + 0x1B80, 0xE13F0C07, + 0x1B80, 0xF60B0C15, + 0x1B80, 0xF60B0C17, + 0x1B80, 0xF7170C25, + 0x1B80, 0xF7170C27, + 0x1B80, 0x4D300C35, + 0x1B80, 0x4D300C37, + 0x1B80, 0x57040C45, + 0x1B80, 0x57040C47, + 0x1B80, 0x57000C55, + 0x1B80, 0x57000C57, + 0x1B80, 0x96000C65, + 0x1B80, 0x96000C67, + 0x1B80, 0x57080C75, + 0x1B80, 0x57080C77, + 0x1B80, 0x57000C85, + 0x1B80, 0x57000C87, + 0x1B80, 0x95000C95, + 0x1B80, 0x95000C97, + 0x1B80, 0x4D000CA5, + 0x1B80, 0x4D000CA7, + 0x1B80, 0x6C070CB5, + 0x1B80, 0x6C070CB7, + 0x1B80, 0x00010CC5, + 0x1B80, 0x00010CC7, + 0x1B80, 0x00220CD5, + 0x1B80, 0x00220CD7, + 0x1B80, 0x06140CE5, + 0x1B80, 0x06140CE7, + 0x1B80, 0xE16C0CF5, + 0x1B80, 0xE16C0CF7, + 0x1B80, 0x00020D05, + 0x1B80, 0x00020D07, + 0x1B80, 0x00250D15, + 0x1B80, 0x00250D17, + 0x1B80, 0x06140D25, + 0x1B80, 0x06140D27, + 0x1B80, 0xE16C0D35, + 0x1B80, 0xE16C0D37, + 0x1B80, 0x00020D45, + 0x1B80, 0x00020D47, + 0x1B80, 0x00010D55, + 0x1B80, 0x00010D57, + 0x1B80, 0x00320D65, + 0x1B80, 0x00320D67, + 0x1B80, 0xE16C0D75, + 0x1B80, 0xE16C0D77, + 0x1B80, 0x00020D85, + 0x1B80, 0x00020D87, + 0x1B80, 0xE1860D95, + 0x1B80, 0xE1860D97, + 0x1B80, 0xE1B60DA5, + 0x1B80, 0xE1B60DA7, + 0x1B80, 0x5CD10DB5, + 0x1B80, 0x5CD10DB7, + 0x1B80, 0x673A0DC5, + 0x1B80, 0x673A0DC7, + 0x1B80, 0xE1230DD5, + 0x1B80, 0xE1230DD7, + 0x1B80, 0xF80B0DE5, + 0x1B80, 0xF80B0DE7, + 0x1B80, 0xF9110DF5, + 0x1B80, 0xF9110DF7, + 0x1B80, 0xE1580E05, + 0x1B80, 0xE1580E07, + 0x1B80, 0x67370E15, + 0x1B80, 0x67370E17, + 0x1B80, 0xE1580E25, + 0x1B80, 0xE1580E27, + 0x1B80, 0x672F0E35, + 0x1B80, 0x672F0E37, + 0x1B80, 0xE1580E45, + 0x1B80, 0xE1580E47, + 0x1B80, 0x67270E55, + 0x1B80, 0x67270E57, + 0x1B80, 0xE1580E65, + 0x1B80, 0xE1580E67, + 0x1B80, 0x671F0E75, + 0x1B80, 0x671F0E77, + 0x1B80, 0xE1580E85, + 0x1B80, 0xE1580E87, + 0x1B80, 0x67170E95, + 0x1B80, 0x67170E97, + 0x1B80, 0xE1580EA5, + 0x1B80, 0xE1580EA7, + 0x1B80, 0xF8020EB5, + 0x1B80, 0xF8020EB7, + 0x1B80, 0x30EE0EC5, + 0x1B80, 0x30EE0EC7, + 0x1B80, 0xE0D10ED5, + 0x1B80, 0xE0D10ED7, + 0x1B80, 0x670F0EE5, + 0x1B80, 0x670F0EE7, + 0x1B80, 0xE1580EF5, + 0x1B80, 0xE1580EF7, + 0x1B80, 0x67070F05, + 0x1B80, 0x67070F07, + 0x1B80, 0xE1580F15, + 0x1B80, 0xE1580F17, + 0x1B80, 0xF9020F25, + 0x1B80, 0xF9020F27, + 0x1B80, 0x30F50F35, + 0x1B80, 0x30F50F37, + 0x1B80, 0xE0CD0F45, + 0x1B80, 0xE0CD0F47, + 0x1B80, 0x06140F55, + 0x1B80, 0x06140F57, + 0x1B80, 0xE16C0F65, + 0x1B80, 0xE16C0F67, + 0x1B80, 0x5CF10F75, + 0x1B80, 0x5CF10F77, + 0x1B80, 0xE1580F85, + 0x1B80, 0xE1580F87, + 0x1B80, 0x06140F95, + 0x1B80, 0x06140F97, + 0x1B80, 0xE16C0FA5, + 0x1B80, 0xE16C0FA7, + 0x1B80, 0xF9020FB5, + 0x1B80, 0xF9020FB7, + 0x1B80, 0x30FF0FC5, + 0x1B80, 0x30FF0FC7, + 0x1B80, 0xE0CD0FD5, + 0x1B80, 0xE0CD0FD7, + 0x1B80, 0x31130FE5, + 0x1B80, 0x31130FE7, + 0x1B80, 0x670F0FF5, + 0x1B80, 0x670F0FF7, + 0x1B80, 0xE1581005, + 0x1B80, 0xE1581007, + 0x1B80, 0x67171015, + 0x1B80, 0x67171017, + 0x1B80, 0xE1581025, + 0x1B80, 0xE1581027, + 0x1B80, 0xF8021035, + 0x1B80, 0xF8021037, + 0x1B80, 0x31071045, + 0x1B80, 0x31071047, + 0x1B80, 0xE0D11055, + 0x1B80, 0xE0D11057, + 0x1B80, 0x31131065, + 0x1B80, 0x31131067, + 0x1B80, 0x670F1075, + 0x1B80, 0x670F1077, + 0x1B80, 0xE1581085, + 0x1B80, 0xE1581087, + 0x1B80, 0x671F1095, + 0x1B80, 0x671F1097, + 0x1B80, 0xE15810A5, + 0x1B80, 0xE15810A7, + 0x1B80, 0x672710B5, + 0x1B80, 0x672710B7, + 0x1B80, 0xE15810C5, + 0x1B80, 0xE15810C7, + 0x1B80, 0x672F10D5, + 0x1B80, 0x672F10D7, + 0x1B80, 0xE15810E5, + 0x1B80, 0xE15810E7, + 0x1B80, 0x673710F5, + 0x1B80, 0x673710F7, + 0x1B80, 0xE1581105, + 0x1B80, 0xE1581107, + 0x1B80, 0x673A1115, + 0x1B80, 0x673A1117, + 0x1B80, 0xE1581125, + 0x1B80, 0xE1581127, + 0x1B80, 0x4D101135, + 0x1B80, 0x4D101137, + 0x1B80, 0x30C41145, + 0x1B80, 0x30C41147, + 0x1B80, 0x00011155, + 0x1B80, 0x00011157, + 0x1B80, 0x6F241165, + 0x1B80, 0x6F241167, + 0x1B80, 0x6E401175, + 0x1B80, 0x6E401177, + 0x1B80, 0x6D001185, + 0x1B80, 0x6D001187, + 0x1B80, 0x55031195, + 0x1B80, 0x55031197, + 0x1B80, 0x312311A5, + 0x1B80, 0x312311A7, + 0x1B80, 0x6F1C11B5, + 0x1B80, 0x6F1C11B7, + 0x1B80, 0x6E4011C5, + 0x1B80, 0x6E4011C7, + 0x1B80, 0x550B11D5, + 0x1B80, 0x550B11D7, + 0x1B80, 0x312311E5, + 0x1B80, 0x312311E7, + 0x1B80, 0x061C11F5, + 0x1B80, 0x061C11F7, + 0x1B80, 0x54DE1205, + 0x1B80, 0x54DE1207, + 0x1B80, 0x06DC1215, + 0x1B80, 0x06DC1217, + 0x1B80, 0x55131225, + 0x1B80, 0x55131227, + 0x1B80, 0x74011235, + 0x1B80, 0x74011237, + 0x1B80, 0x74001245, + 0x1B80, 0x74001247, + 0x1B80, 0x8E001255, + 0x1B80, 0x8E001257, + 0x1B80, 0x00011265, + 0x1B80, 0x00011267, + 0x1B80, 0x57021275, + 0x1B80, 0x57021277, + 0x1B80, 0x57001285, + 0x1B80, 0x57001287, + 0x1B80, 0x97001295, + 0x1B80, 0x97001297, + 0x1B80, 0x000112A5, + 0x1B80, 0x000112A7, + 0x1B80, 0x54BF12B5, + 0x1B80, 0x54BF12B7, + 0x1B80, 0x54C112C5, + 0x1B80, 0x54C112C7, + 0x1B80, 0x54A212D5, + 0x1B80, 0x54A212D7, + 0x1B80, 0x54C012E5, + 0x1B80, 0x54C012E7, + 0x1B80, 0x54A112F5, + 0x1B80, 0x54A112F7, + 0x1B80, 0x54DF1305, + 0x1B80, 0x54DF1307, + 0x1B80, 0x00011315, + 0x1B80, 0x00011317, + 0x1B80, 0x55001325, + 0x1B80, 0x55001327, + 0x1B80, 0xE1231335, + 0x1B80, 0xE1231337, + 0x1B80, 0x54811345, + 0x1B80, 0x54811347, + 0x1B80, 0xE1231355, + 0x1B80, 0xE1231357, + 0x1B80, 0x54801365, + 0x1B80, 0x54801367, + 0x1B80, 0x002A1375, + 0x1B80, 0x002A1377, + 0x1B80, 0xE12B1385, + 0x1B80, 0xE12B1387, + 0x1B80, 0xE1231395, + 0x1B80, 0xE1231397, + 0x1B80, 0x548013A5, + 0x1B80, 0x548013A7, + 0x1B80, 0xE17213B5, + 0x1B80, 0xE17213B7, + 0x1B80, 0xBF3013C5, + 0x1B80, 0xBF3013C7, + 0x1B80, 0x000213D5, + 0x1B80, 0x000213D7, + 0x1B80, 0x302813E5, + 0x1B80, 0x302813E7, + 0x1B80, 0x4F7813F5, + 0x1B80, 0x4F7813F7, + 0x1B80, 0x4E001405, + 0x1B80, 0x4E001407, + 0x1B80, 0x53871415, + 0x1B80, 0x53871417, + 0x1B80, 0x52F11425, + 0x1B80, 0x52F11427, + 0x1B80, 0xE1161435, + 0x1B80, 0xE1161437, + 0x1B80, 0xE11B1445, + 0x1B80, 0xE11B1447, + 0x1B80, 0xE11F1455, + 0x1B80, 0xE11F1457, + 0x1B80, 0xE1271465, + 0x1B80, 0xE1271467, + 0x1B80, 0x54811475, + 0x1B80, 0x54811477, + 0x1B80, 0xE1161485, + 0x1B80, 0xE1161487, + 0x1B80, 0xE11B1495, + 0x1B80, 0xE11B1497, + 0x1B80, 0xE11F14A5, + 0x1B80, 0xE11F14A7, + 0x1B80, 0xE12714B5, + 0x1B80, 0xE12714B7, + 0x1B80, 0x548014C5, + 0x1B80, 0x548014C7, + 0x1B80, 0x002A14D5, + 0x1B80, 0x002A14D7, + 0x1B80, 0xE12B14E5, + 0x1B80, 0xE12B14E7, + 0x1B80, 0xE11614F5, + 0x1B80, 0xE11614F7, + 0x1B80, 0xE11B1505, + 0x1B80, 0xE11B1507, + 0x1B80, 0xE11F1515, + 0x1B80, 0xE11F1517, + 0x1B80, 0xE1271525, + 0x1B80, 0xE1271527, + 0x1B80, 0x54801535, + 0x1B80, 0x54801537, + 0x1B80, 0xE1721545, + 0x1B80, 0xE1721547, + 0x1B80, 0xBF171555, + 0x1B80, 0xBF171557, + 0x1B80, 0x00021565, + 0x1B80, 0x00021567, + 0x1B80, 0x30281575, + 0x1B80, 0x30281577, + 0x1B80, 0x06141585, + 0x1B80, 0x06141587, + 0x1B80, 0x73201595, + 0x1B80, 0x73201597, + 0x1B80, 0x720015A5, + 0x1B80, 0x720015A7, + 0x1B80, 0x710015B5, + 0x1B80, 0x710015B7, + 0x1B80, 0x550115C5, + 0x1B80, 0x550115C7, + 0x1B80, 0xE12315D5, + 0x1B80, 0xE12315D7, + 0x1B80, 0xE12715E5, + 0x1B80, 0xE12715E7, + 0x1B80, 0x548115F5, + 0x1B80, 0x548115F7, + 0x1B80, 0xE1231605, + 0x1B80, 0xE1231607, + 0x1B80, 0xE1271615, + 0x1B80, 0xE1271617, + 0x1B80, 0x54801625, + 0x1B80, 0x54801627, + 0x1B80, 0x002A1635, + 0x1B80, 0x002A1637, + 0x1B80, 0xE12B1645, + 0x1B80, 0xE12B1647, + 0x1B80, 0xE1231655, + 0x1B80, 0xE1231657, + 0x1B80, 0xE1271665, + 0x1B80, 0xE1271667, + 0x1B80, 0x54801675, + 0x1B80, 0x54801677, + 0x1B80, 0xE1721685, + 0x1B80, 0xE1721687, + 0x1B80, 0xBF031695, + 0x1B80, 0xBF031697, + 0x1B80, 0x000216A5, + 0x1B80, 0x000216A7, + 0x1B80, 0x302816B5, + 0x1B80, 0x302816B7, + 0x1B80, 0x54BF16C5, + 0x1B80, 0x54BF16C7, + 0x1B80, 0x54C516D5, + 0x1B80, 0x54C516D7, + 0x1B80, 0x050A16E5, + 0x1B80, 0x050A16E7, + 0x1B80, 0x071416F5, + 0x1B80, 0x071416F7, + 0x1B80, 0x54DF1705, + 0x1B80, 0x54DF1707, + 0x1B80, 0x00011715, + 0x1B80, 0x00011717, + 0x1B80, 0x54BF1725, + 0x1B80, 0x54BF1727, + 0x1B80, 0x54C01735, + 0x1B80, 0x54C01737, + 0x1B80, 0x54A31745, + 0x1B80, 0x54A31747, + 0x1B80, 0x54C11755, + 0x1B80, 0x54C11757, + 0x1B80, 0x54A41765, + 0x1B80, 0x54A41767, + 0x1B80, 0x4C831775, + 0x1B80, 0x4C831777, + 0x1B80, 0x4C031785, + 0x1B80, 0x4C031787, + 0x1B80, 0xBF0B1795, + 0x1B80, 0xBF0B1797, + 0x1B80, 0x54C217A5, + 0x1B80, 0x54C217A7, + 0x1B80, 0x54A417B5, + 0x1B80, 0x54A417B7, + 0x1B80, 0x4C8517C5, + 0x1B80, 0x4C8517C7, + 0x1B80, 0x4C0517D5, + 0x1B80, 0x4C0517D7, + 0x1B80, 0xBF0617E5, + 0x1B80, 0xBF0617E7, + 0x1B80, 0x54C117F5, + 0x1B80, 0x54C117F7, + 0x1B80, 0x54A31805, + 0x1B80, 0x54A31807, + 0x1B80, 0x4C861815, + 0x1B80, 0x4C861817, + 0x1B80, 0x4C061825, + 0x1B80, 0x4C061827, + 0x1B80, 0xBF011835, + 0x1B80, 0xBF011837, + 0x1B80, 0x54DF1845, + 0x1B80, 0x54DF1847, + 0x1B80, 0x00011855, + 0x1B80, 0x00011857, + 0x1B80, 0x00071865, + 0x1B80, 0x00071867, + 0x1B80, 0x54011875, + 0x1B80, 0x54011877, + 0x1B80, 0x00041885, + 0x1B80, 0x00041887, + 0x1B80, 0x56001895, + 0x1B80, 0x56001897, + 0x1B80, 0x5CF218A5, + 0x1B80, 0x5CF218A7, + 0x1B80, 0x630718B5, + 0x1B80, 0x630718B7, + 0x1B80, 0x620418C5, + 0x1B80, 0x620418C7, + 0x1B80, 0x610018D5, + 0x1B80, 0x610018D7, + 0x1B80, 0x670718E5, + 0x1B80, 0x670718E7, + 0x1B80, 0x660618F5, + 0x1B80, 0x660618F7, + 0x1B80, 0x6F201905, + 0x1B80, 0x6F201907, + 0x1B80, 0x6E001915, + 0x1B80, 0x6E001917, + 0x1B80, 0x6D001925, + 0x1B80, 0x6D001927, + 0x1B80, 0x6C031935, + 0x1B80, 0x6C031937, + 0x1B80, 0x73201945, + 0x1B80, 0x73201947, + 0x1B80, 0x72001955, + 0x1B80, 0x72001957, + 0x1B80, 0x71001965, + 0x1B80, 0x71001967, + 0x1B80, 0x7B201975, + 0x1B80, 0x7B201977, + 0x1B80, 0x7A001985, + 0x1B80, 0x7A001987, + 0x1B80, 0x79001995, + 0x1B80, 0x79001997, + 0x1B80, 0x7F2019A5, + 0x1B80, 0x7F2019A7, + 0x1B80, 0x7E0019B5, + 0x1B80, 0x7E0019B7, + 0x1B80, 0x7D0019C5, + 0x1B80, 0x7D0019C7, + 0x1B80, 0x090119D5, + 0x1B80, 0x090119D7, + 0x1B80, 0x0AC619E5, + 0x1B80, 0x0AC619E7, + 0x1B80, 0x0BA619F5, + 0x1B80, 0x0BA619F7, + 0x1B80, 0x0C011A05, + 0x1B80, 0x0C011A07, + 0x1B80, 0x0D021A15, + 0x1B80, 0x0D021A17, + 0x1B80, 0x0E041A25, + 0x1B80, 0x0E041A27, + 0x1B80, 0x0FFF1A35, + 0x1B80, 0x0FFF1A37, + 0x1B80, 0x4D041A45, + 0x1B80, 0x4D041A47, + 0x1B80, 0x28F81A55, + 0x1B80, 0x28F81A57, + 0x1B80, 0xE0001A65, + 0x1B80, 0xE0001A67, + 0x1B80, 0x4D001A75, + 0x1B80, 0x4D001A77, + 0x1B80, 0x00011A85, + 0x1B80, 0x00011A87, + 0x1B80, 0x4D041A95, + 0x1B80, 0x4D041A97, + 0x1B80, 0x2EF81AA5, + 0x1B80, 0x2EF81AA7, + 0x1B80, 0x00021AB5, + 0x1B80, 0x00021AB7, + 0x1B80, 0x23031AC5, + 0x1B80, 0x23031AC7, + 0x1B80, 0x00001AD5, + 0x1B80, 0x00001AD7, + 0x1B80, 0x23131AE5, + 0x1B80, 0x23131AE7, + 0x1B80, 0xE77F1AF5, + 0x1B80, 0xE77F1AF7, + 0x1B80, 0x232F1B05, + 0x1B80, 0x232F1B07, + 0x1B80, 0xEFBF1B15, + 0x1B80, 0xEFBF1B17, + 0x1B80, 0x2EF01B25, + 0x1B80, 0x2EF01B27, + 0x1B80, 0x00021B35, + 0x1B80, 0x00021B37, + 0x1B80, 0x4D001B45, + 0x1B80, 0x4D001B47, + 0x1B80, 0x00011B55, + 0x1B80, 0x00011B57, + 0x1B80, 0x4D041B65, + 0x1B80, 0x4D041B67, + 0x1B80, 0x2EF81B75, + 0x1B80, 0x2EF81B77, + 0x1B80, 0x00021B85, + 0x1B80, 0x00021B87, + 0x1B80, 0x23031B95, + 0x1B80, 0x23031B97, + 0x1B80, 0x00001BA5, + 0x1B80, 0x00001BA7, + 0x1B80, 0x23131BB5, + 0x1B80, 0x23131BB7, + 0x1B80, 0xE77F1BC5, + 0x1B80, 0xE77F1BC7, + 0x1B80, 0x232F1BD5, + 0x1B80, 0x232F1BD7, + 0x1B80, 0xE79F1BE5, + 0x1B80, 0xE79F1BE7, + 0x1B80, 0x2EF01BF5, + 0x1B80, 0x2EF01BF7, + 0x1B80, 0x00021C05, + 0x1B80, 0x00021C07, + 0x1B80, 0x28F81C15, + 0x1B80, 0x28F81C17, + 0x1B80, 0x80001C25, + 0x1B80, 0x80001C27, + 0x1B80, 0x4D001C35, + 0x1B80, 0x4D001C37, + 0x1B80, 0x00011C45, + 0x1B80, 0x00011C47, + 0x1B80, 0x00041C55, + 0x1B80, 0x00041C57, + 0x1B80, 0x6BC01C65, + 0x1B80, 0x6BC01C67, + 0x1B80, 0x4D041C75, + 0x1B80, 0x4D041C77, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241C85, + 0x1B80, 0x68241C87, + 0xA0000000, 0x00000000, + 0x1B80, 0x68481C85, + 0x1B80, 0x68481C87, + 0xB0000000, 0x00000000, + 0x1B80, 0x66061C95, + 0x1B80, 0x66061C97, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x650C1CA5, + 0x1B80, 0x650C1CA7, + 0xA0000000, 0x00000000, + 0x1B80, 0x65041CA5, + 0x1B80, 0x65041CA7, + 0xB0000000, 0x00000000, + 0x1B80, 0x64471CB5, + 0x1B80, 0x64471CB7, + 0x1B80, 0x23411CC5, + 0x1B80, 0x23411CC7, + 0x1B80, 0x100E1CD5, + 0x1B80, 0x100E1CD7, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60101CE5, + 0x1B80, 0x60101CE7, + 0xA0000000, 0x00000000, + 0x1B80, 0x60011CE5, + 0x1B80, 0x60011CE7, + 0xB0000000, 0x00000000, + 0x1B80, 0x23411CF5, + 0x1B80, 0x23411CF7, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60811D05, + 0x1B80, 0x60811D07, + 0xA0000000, 0x00000000, + 0x1B80, 0x60611D05, + 0x1B80, 0x60611D07, + 0xB0000000, 0x00000000, + 0x1B80, 0x23411D15, + 0x1B80, 0x23411D17, + 0x1B80, 0x70E11D25, + 0x1B80, 0x70E11D27, + 0x1B80, 0x4D001D35, + 0x1B80, 0x4D001D37, + 0x1B80, 0x00011D45, + 0x1B80, 0x00011D47, + 0x1B80, 0x00041D55, + 0x1B80, 0x00041D57, + 0x1B80, 0x6B401D65, + 0x1B80, 0x6B401D67, + 0x1B80, 0x4D041D75, + 0x1B80, 0x4D041D77, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241D85, + 0x1B80, 0x68241D87, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241D85, + 0x1B80, 0x68241D87, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241D85, + 0x1B80, 0x68241D87, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241D85, + 0x1B80, 0x68241D87, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241D85, + 0x1B80, 0x68241D87, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x68241D85, + 0x1B80, 0x68241D87, + 0xA0000000, 0x00000000, + 0x1B80, 0x68481D85, + 0x1B80, 0x68481D87, + 0xB0000000, 0x00000000, + 0x1B80, 0x66061D95, + 0x1B80, 0x66061D97, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65081DA5, + 0x1B80, 0x65081DA7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65181DA5, + 0x1B80, 0x65181DA7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65181DA5, + 0x1B80, 0x65181DA7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65181DA5, + 0x1B80, 0x65181DA7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65181DA5, + 0x1B80, 0x65181DA7, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65081DA5, + 0x1B80, 0x65081DA7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65181DA5, + 0x1B80, 0x65181DA7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x65181DA5, + 0x1B80, 0x65181DA7, + 0xA0000000, 0x00000000, + 0x1B80, 0x65081DA5, + 0x1B80, 0x65081DA7, + 0xB0000000, 0x00000000, + 0x80000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x64481DB5, + 0x1B80, 0x64481DB7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x64481DB5, + 0x1B80, 0x64481DB7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x64481DB5, + 0x1B80, 0x64481DB7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x64481DB5, + 0x1B80, 0x64481DB7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x64481DB5, + 0x1B80, 0x64481DB7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x64481DB5, + 0x1B80, 0x64481DB7, + 0xA0000000, 0x00000000, + 0x1B80, 0x64471DB5, + 0x1B80, 0x64471DB7, + 0xB0000000, 0x00000000, + 0x1B80, 0x23411DC5, + 0x1B80, 0x23411DC7, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E41DD5, + 0x1B80, 0x11E41DD7, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E81DD5, + 0x1B80, 0x11E81DD7, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E81DD5, + 0x1B80, 0x11E81DD7, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E81DD5, + 0x1B80, 0x11E81DD7, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E81DD5, + 0x1B80, 0x11E81DD7, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E41DD5, + 0x1B80, 0x11E41DD7, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E81DD5, + 0x1B80, 0x11E81DD7, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x11E81DD5, + 0x1B80, 0x11E81DD7, + 0xA0000000, 0x00000000, + 0x1B80, 0x11E41DD5, + 0x1B80, 0x11E41DD7, + 0xB0000000, 0x00000000, + 0x1B80, 0x60011DE5, + 0x1B80, 0x60011DE7, + 0x1B80, 0x23411DF5, + 0x1B80, 0x23411DF7, + 0x80000001, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60E11E05, + 0x1B80, 0x60E11E07, + 0x90000002, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x61E11E05, + 0x1B80, 0x61E11E07, + 0x90000004, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x61E11E05, + 0x1B80, 0x61E11E07, + 0x90000003, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x61E11E05, + 0x1B80, 0x61E11E07, + 0x90000005, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x61E11E05, + 0x1B80, 0x61E11E07, + 0x90000006, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x60E11E05, + 0x1B80, 0x60E11E07, + 0x9000000a, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x61E11E05, + 0x1B80, 0x61E11E07, + 0x9000000b, 0x00000000, 0x40000000, 0x00000000, + 0x1B80, 0x61E11E05, + 0x1B80, 0x61E11E07, + 0xA0000000, 0x00000000, + 0x1B80, 0x60E11E05, + 0x1B80, 0x60E11E07, + 0xB0000000, 0x00000000, + 0x1B80, 0x23411E15, + 0x1B80, 0x23411E17, + 0x1B80, 0x70611E25, + 0x1B80, 0x70611E27, + 0x1B80, 0x4D001E35, + 0x1B80, 0x4D001E37, + 0x1B80, 0x00011E45, + 0x1B80, 0x00011E47, + 0x1B80, 0x00001E55, + 0x1B80, 0x00001E57, + 0x1B80, 0x00001E65, + 0x1B80, 0x00001E67, + 0x1B80, 0x00001E75, + 0x1B80, 0x00001E77, + 0x1B80, 0x00001E85, + 0x1B80, 0x00001E87, + 0x1B80, 0x00001E95, + 0x1B80, 0x00001E97, + 0x1B80, 0x00001EA5, + 0x1B80, 0x00001EA7, + 0x1B80, 0x00001EB5, + 0x1B80, 0x00001EB7, + 0x1B80, 0x00001EC5, + 0x1B80, 0x00001EC7, + 0x1B80, 0x00001ED5, + 0x1B80, 0x00001ED7, + 0x1B80, 0x00001EE5, + 0x1B80, 0x00001EE7, + 0x1B80, 0x00001EF5, + 0x1B80, 0x00001EF7, + 0x1B80, 0x00001F05, + 0x1B80, 0x00001F07, + 0x1B80, 0x00001F15, + 0x1B80, 0x00001F17, + 0x1B80, 0x00001F25, + 0x1B80, 0x00001F27, + 0x1B80, 0x00001F35, + 0x1B80, 0x00001F37, + 0x1B80, 0x00001F45, + 0x1B80, 0x00001F47, + 0x1B80, 0x00001F55, + 0x1B80, 0x00001F57, + 0x1B80, 0x00001F65, + 0x1B80, 0x00001F67, + 0x1B80, 0x00001F75, + 0x1B80, 0x00001F77, + 0x1B80, 0x00001F85, + 0x1B80, 0x00001F87, + 0x1B80, 0x00001F95, + 0x1B80, 0x00001F97, + 0x1B80, 0x00001FA5, + 0x1B80, 0x00001FA7, + 0x1B80, 0x00001FB5, + 0x1B80, 0x00001FB7, + 0x1B80, 0x00001FC5, + 0x1B80, 0x00001FC7, + 0x1B80, 0x00001FD5, + 0x1B80, 0x00001FD7, + 0x1B80, 0x00001FE5, + 0x1B80, 0x00001FE7, + 0x1B80, 0x00001FF5, + 0x1B80, 0x00001FF7, + 0x1B80, 0x00000006, + 0x1B80, 0x00000002, + +}; + +void +odm_read_and_config_mp_8814a_phy_reg(struct dm_struct *dm) +{ + u32 i = 0; + u8 c_cond; + boolean is_matched = true, is_skipped = false; + u32 array_len = + sizeof(array_mp_8814a_phy_reg) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_phy_reg; + + u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0; + u32 a1 = 0, a2 = 0, a3 = 0, a4 = 0; + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + while ((i + 1) < array_len) { + v1 = array[i]; + v2 = array[i + 1]; + + if (v1 & (BIT(31) | BIT(30))) {/*positive & negative condition*/ + if (v1 & BIT(31)) {/* positive condition*/ + c_cond = + (u8)((v1 & (BIT(29) | BIT(28))) >> 28); + if (c_cond == COND_ENDIF) {/*end*/ + is_matched = true; + is_skipped = false; + PHYDM_DBG(dm, ODM_COMP_INIT, "ENDIF\n"); + } else if (c_cond == COND_ELSE) { /*else*/ + is_matched = is_skipped ? false : true; + PHYDM_DBG(dm, ODM_COMP_INIT, "ELSE\n"); + } else {/*if , else if*/ + pre_v1 = v1; + pre_v2 = v2; + PHYDM_DBG(dm, ODM_COMP_INIT, + "IF or ELSE IF\n"); + } + } else if (v1 & BIT(30)) { /*negative condition*/ + if (!is_skipped) { + a1 = pre_v1; a2 = pre_v2; + a3 = v1; a4 = v2; + if (check_positive(dm, + a1, a2, a3, a4)) { + is_matched = true; + is_skipped = true; + } else { + is_matched = false; + is_skipped = false; + } + } else { + is_matched = false; + } + } + } else { + if (is_matched) + odm_config_bb_phy_8814a(dm, v1, MASKDWORD, v2); + } + i = i + 2; + } +} + +u32 +odm_get_version_mp_8814a_phy_reg(void) +{ + return 110; +} + +/****************************************************************************** + * phy_reg_mp.TXT + ******************************************************************************/ + +const u32 array_mp_8814a_phy_reg_mp[] = { + 0x8FC, 0x00000000, + 0x838, 0x86667641, + +}; + +void +odm_read_and_config_mp_8814a_phy_reg_mp(struct dm_struct *dm) +{ + u32 i = 0; + u8 c_cond; + boolean is_matched = true, is_skipped = false; + u32 array_len = + sizeof(array_mp_8814a_phy_reg_mp) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_phy_reg_mp; + + u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0; + u32 a1 = 0, a2 = 0, a3 = 0, a4 = 0; + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + while ((i + 1) < array_len) { + v1 = array[i]; + v2 = array[i + 1]; + + if (v1 & (BIT(31) | BIT(30))) {/*positive & negative condition*/ + if (v1 & BIT(31)) {/* positive condition*/ + c_cond = + (u8)((v1 & (BIT(29) | BIT(28))) >> 28); + if (c_cond == COND_ENDIF) {/*end*/ + is_matched = true; + is_skipped = false; + PHYDM_DBG(dm, ODM_COMP_INIT, "ENDIF\n"); + } else if (c_cond == COND_ELSE) { /*else*/ + is_matched = is_skipped ? false : true; + PHYDM_DBG(dm, ODM_COMP_INIT, "ELSE\n"); + } else {/*if , else if*/ + pre_v1 = v1; + pre_v2 = v2; + PHYDM_DBG(dm, ODM_COMP_INIT, + "IF or ELSE IF\n"); + } + } else if (v1 & BIT(30)) { /*negative condition*/ + if (!is_skipped) { + a1 = pre_v1; a2 = pre_v2; + a3 = v1; a4 = v2; + if (check_positive(dm, + a1, a2, a3, a4)) { + is_matched = true; + is_skipped = true; + } else { + is_matched = false; + is_skipped = false; + } + } else { + is_matched = false; + } + } + } else { + if (is_matched) + odm_config_bb_phy_8814a(dm, v1, MASKDWORD, v2); + } + i = i + 2; + } +} + +u32 +odm_get_version_mp_8814a_phy_reg_mp(void) +{ + return 110; +} + +/****************************************************************************** + * phy_reg_pg.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A +const u32 array_mp_8814a_phy_reg_pg[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 0, 2, 0, 0x00001820, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 0, 2, 1, 0x00001834, 0xffffffff, 0x32323232, + 0, 2, 1, 0x00001838, 0xffffffff, 0x26283032, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 0, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 0, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 1, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 1, 2, 1, 0x00001834, 0xffffffff, 0x32323232, + 1, 2, 1, 0x00001838, 0xffffffff, 0x26283032, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 1, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 1, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222 +}; + +#endif + +void +odm_read_and_config_mp_8814a_phy_reg_pg(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A + + u32 i = 0; + u32 array_len = + sizeof(array_mp_8814a_phy_reg_pg) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_phy_reg_pg; + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrByRate, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrByRate = array_len / 6; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + dm->phy_reg_pg_version = 1; + dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE; + + for (i = 0; i < array_len; i += 6) { + u32 v1 = array[i]; + u32 v2 = array[i + 1]; + u32 v3 = array[i + 2]; + u32 v4 = array[i + 3]; + u32 v5 = array[i + 4]; + u32 v6 = array[i + 5]; + + odm_config_bb_phy_reg_pg_8814a(dm, v1, v2, v3, v4, v5, v6); + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrByRate[i / 6], 100, + "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,", + (v1 == 0 ? "2.4G" : " 5G"), (v2 == 0 ? "A" : "B"), + (v3 == 0 ? "1Tx" : "2Tx"), v4, v5, v6); +#endif + } +#endif +} + +/****************************************************************************** + * phy_reg_pg_type0.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE0 +const u32 array_mp_8814a_phy_reg_pg_type0[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x28303232, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x26283032, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x30303030, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x28282828, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x22242628, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x26283032, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x30302224, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x28303030, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x20222426, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x28282828, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x22242628, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x18202020, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x28303232, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x26283032, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x30303030, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x28282828, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x22242628, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x26283032, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x30302224, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x28303030, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x20222426, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x28282828, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x22242628, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x18202020, + 0, 2, 0, 0x00001820, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001824, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001828, 0xffffffff, 0x28303232, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001830, 0xffffffff, 0x26283032, + 0, 2, 1, 0x00001834, 0xffffffff, 0x30303030, + 0, 2, 1, 0x00001838, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x28282828, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x22242628, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001840, 0xffffffff, 0x26283032, + 0, 2, 0, 0x00001844, 0xffffffff, 0x30302224, + 0, 2, 1, 0x00001848, 0xffffffff, 0x28303030, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x20222426, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x28282828, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x22242628, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x18202020, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x28303232, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x26283032, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x30303030, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x28282828, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x22242628, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x26283032, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x30302224, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x28303030, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x20222426, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x28282828, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x22242628, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x18202020, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x32323232, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x28303232, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x32323232, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x26283032, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x30303030, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x24262830, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x28282828, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x22242628, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x32323232, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x26283032, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x30302224, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x28303030, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x20222426, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x28282828, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x22242628, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x18202020, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x32323232, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x28303232, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x32323232, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x26283032, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x30303030, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x24262830, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x28282828, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x22242628, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x32323232, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x26283032, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x30302224, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x28303030, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x20222426, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x28282828, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x22242628, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x18202020, + 1, 2, 0, 0x00001824, 0xffffffff, 0x32323232, + 1, 2, 0, 0x00001828, 0xffffffff, 0x28303232, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x32323232, + 1, 2, 0, 0x00001830, 0xffffffff, 0x26283032, + 1, 2, 1, 0x00001834, 0xffffffff, 0x30303030, + 1, 2, 1, 0x00001838, 0xffffffff, 0x24262830, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x28282828, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x22242628, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x32323232, + 1, 2, 0, 0x00001840, 0xffffffff, 0x26283032, + 1, 2, 0, 0x00001844, 0xffffffff, 0x30302224, + 1, 2, 1, 0x00001848, 0xffffffff, 0x28303030, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x20222426, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x28282828, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x22242628, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x18202020, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x32323232, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x28303232, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x32323232, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x26283032, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x30303030, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x24262830, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x28282828, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x22242628, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x32323232, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x26283032, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x30302224, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x28303030, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x20222426, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x28282828, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x22242628, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x18202020 +}; + +#endif + +void +odm_read_and_config_mp_8814a_phy_reg_pg_type0(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE0 + + u32 i = 0; + u32 array_len = + sizeof(array_mp_8814a_phy_reg_pg_type0) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_phy_reg_pg_type0; + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrByRate, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrByRate = array_len / 6; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + dm->phy_reg_pg_version = 1; + dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE; + + for (i = 0; i < array_len; i += 6) { + u32 v1 = array[i]; + u32 v2 = array[i + 1]; + u32 v3 = array[i + 2]; + u32 v4 = array[i + 3]; + u32 v5 = array[i + 4]; + u32 v6 = array[i + 5]; + + odm_config_bb_phy_reg_pg_8814a(dm, v1, v2, v3, v4, v5, v6); + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrByRate[i / 6], 100, + "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,", + (v1 == 0 ? "2.4G" : " 5G"), (v2 == 0 ? "A" : "B"), + (v3 == 0 ? "1Tx" : "2Tx"), v4, v5, v6); +#endif + } +#endif +} + +/****************************************************************************** + * phy_reg_pg_type1.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE1 +const u32 array_mp_8814a_phy_reg_pg_type1[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 0, 2, 0, 0x00001820, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 0, 2, 1, 0x00001834, 0xffffffff, 0x32323232, + 0, 2, 1, 0x00001838, 0xffffffff, 0x26283032, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 0, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 0, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 1, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 1, 2, 1, 0x00001834, 0xffffffff, 0x32323232, + 1, 2, 1, 0x00001838, 0xffffffff, 0x26283032, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 1, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 1, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222 +}; + +#endif + +void +odm_read_and_config_mp_8814a_phy_reg_pg_type1(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE1 + + u32 i = 0; + u32 array_len = + sizeof(array_mp_8814a_phy_reg_pg_type1) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_phy_reg_pg_type1; + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrByRate, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrByRate = array_len / 6; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + dm->phy_reg_pg_version = 1; + dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE; + + for (i = 0; i < array_len; i += 6) { + u32 v1 = array[i]; + u32 v2 = array[i + 1]; + u32 v3 = array[i + 2]; + u32 v4 = array[i + 3]; + u32 v5 = array[i + 4]; + u32 v6 = array[i + 5]; + + odm_config_bb_phy_reg_pg_8814a(dm, v1, v2, v3, v4, v5, v6); + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrByRate[i / 6], 100, + "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,", + (v1 == 0 ? "2.4G" : " 5G"), (v2 == 0 ? "A" : "B"), + (v3 == 0 ? "1Tx" : "2Tx"), v4, v5, v6); +#endif + } +#endif +} + +/****************************************************************************** + * phy_reg_pg_type10.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE10 +const u32 array_mp_8814a_phy_reg_pg_type10[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x36384042, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x34363840, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x42424242, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x34363840, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x34363840, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x42423032, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x38404242, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x30323436, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x34363840, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x30303032, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x36384042, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x34363840, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x42424242, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x34363840, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x34363840, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x42423032, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x38404242, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x30323436, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x34363840, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x30303032, + 0, 2, 0, 0x00001820, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001824, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001828, 0xffffffff, 0x36384042, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001830, 0xffffffff, 0x34363840, + 0, 2, 1, 0x00001834, 0xffffffff, 0x42424242, + 0, 2, 1, 0x00001838, 0xffffffff, 0x34363840, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001840, 0xffffffff, 0x34363840, + 0, 2, 0, 0x00001844, 0xffffffff, 0x42423032, + 0, 2, 1, 0x00001848, 0xffffffff, 0x38404242, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x30323436, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x34363840, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x30303032, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x36384042, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x34363840, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x42424242, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x34363840, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x34363840, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x42423032, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x38404242, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x30323436, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x34363840, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x30303032, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x36384042, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x34363840, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x42424242, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x34363840, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x42423032, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x38404242, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x30323436, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x34363840, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x30303032, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x36384042, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x34363840, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x42424242, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x34363840, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x34363840, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x42423032, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x38404242, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x30323436, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x34363840, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x30303032, + 1, 2, 0, 0x00001824, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001828, 0xffffffff, 0x36384042, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001830, 0xffffffff, 0x34363840, + 1, 2, 1, 0x00001834, 0xffffffff, 0x42424242, + 1, 2, 1, 0x00001838, 0xffffffff, 0x34363840, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001840, 0xffffffff, 0x34363840, + 1, 2, 0, 0x00001844, 0xffffffff, 0x42423032, + 1, 2, 1, 0x00001848, 0xffffffff, 0x38404242, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x30323436, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x34363840, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x30303032, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x36384042, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x34363840, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x42424242, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x34363840, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x34363840, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x42423032, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x38404242, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x30323436, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x34363840, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x30303032 +}; + +#endif + +void +odm_read_and_config_mp_8814a_phy_reg_pg_type10(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE10 + + u32 i = 0; + u32 array_len = + sizeof(array_mp_8814a_phy_reg_pg_type10) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_phy_reg_pg_type10; + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrByRate, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrByRate = array_len / 6; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + dm->phy_reg_pg_version = 1; + dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE; + + for (i = 0; i < array_len; i += 6) { + u32 v1 = array[i]; + u32 v2 = array[i + 1]; + u32 v3 = array[i + 2]; + u32 v4 = array[i + 3]; + u32 v5 = array[i + 4]; + u32 v6 = array[i + 5]; + + odm_config_bb_phy_reg_pg_8814a(dm, v1, v2, v3, v4, v5, v6); + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrByRate[i / 6], 100, + "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,", + (v1 == 0 ? "2.4G" : " 5G"), (v2 == 0 ? "A" : "B"), + (v3 == 0 ? "1Tx" : "2Tx"), v4, v5, v6); +#endif + } +#endif +} + +/****************************************************************************** + * phy_reg_pg_type11.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE11 +const u32 array_mp_8814a_phy_reg_pg_type11[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x36384042, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x34363840, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x42424242, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x34363840, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x34363840, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x42423032, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x38404242, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x30323436, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x34363840, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x30303032, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x36384042, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x34363840, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x42424242, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x34363840, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x34363840, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x42423032, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x38404242, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x30323436, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x34363840, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x30303032, + 0, 2, 0, 0x00001820, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001824, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001828, 0xffffffff, 0x36384042, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001830, 0xffffffff, 0x34363840, + 0, 2, 1, 0x00001834, 0xffffffff, 0x42424242, + 0, 2, 1, 0x00001838, 0xffffffff, 0x34363840, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001840, 0xffffffff, 0x34363840, + 0, 2, 0, 0x00001844, 0xffffffff, 0x42423032, + 0, 2, 1, 0x00001848, 0xffffffff, 0x38404242, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x30323436, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x34363840, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x30303032, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x36384042, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x34363840, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x42424242, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x34363840, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x34363840, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x42423032, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x38404242, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x30323436, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x34363840, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x30303032, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x36384042, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x34363840, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x42424242, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x34363840, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x42423032, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x38404242, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x30323436, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x34363840, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x30303032, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x36384042, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x34363840, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x42424242, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x34363840, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x34363840, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x42423032, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x38404242, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x30323436, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x34363840, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x30303032, + 1, 2, 0, 0x00001824, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001828, 0xffffffff, 0x36384042, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001830, 0xffffffff, 0x34363840, + 1, 2, 1, 0x00001834, 0xffffffff, 0x42424242, + 1, 2, 1, 0x00001838, 0xffffffff, 0x34363840, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001840, 0xffffffff, 0x34363840, + 1, 2, 0, 0x00001844, 0xffffffff, 0x42423032, + 1, 2, 1, 0x00001848, 0xffffffff, 0x38404242, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x30323436, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x34363840, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x30303032, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x36384042, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x34363840, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x42424242, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x34363840, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x34363840, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x42423032, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x38404242, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x30323436, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x34363840, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x30303032 +}; + +#endif + +void +odm_read_and_config_mp_8814a_phy_reg_pg_type11(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE11 + + u32 i = 0; + u32 array_len = + sizeof(array_mp_8814a_phy_reg_pg_type11) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_phy_reg_pg_type11; + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrByRate, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrByRate = array_len / 6; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + dm->phy_reg_pg_version = 1; + dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE; + + for (i = 0; i < array_len; i += 6) { + u32 v1 = array[i]; + u32 v2 = array[i + 1]; + u32 v3 = array[i + 2]; + u32 v4 = array[i + 3]; + u32 v5 = array[i + 4]; + u32 v6 = array[i + 5]; + + odm_config_bb_phy_reg_pg_8814a(dm, v1, v2, v3, v4, v5, v6); + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrByRate[i / 6], 100, + "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,", + (v1 == 0 ? "2.4G" : " 5G"), (v2 == 0 ? "A" : "B"), + (v3 == 0 ? "1Tx" : "2Tx"), v4, v5, v6); +#endif + } +#endif +} + +/****************************************************************************** + * phy_reg_pg_type2.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE2 +const u32 array_mp_8814a_phy_reg_pg_type2[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 0, 2, 0, 0x00001820, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 0, 2, 1, 0x00001834, 0xffffffff, 0x32323232, + 0, 2, 1, 0x00001838, 0xffffffff, 0x26283032, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 0, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 0, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 1, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 1, 2, 1, 0x00001834, 0xffffffff, 0x32323232, + 1, 2, 1, 0x00001838, 0xffffffff, 0x26283032, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 1, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 1, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222 +}; + +#endif + +void +odm_read_and_config_mp_8814a_phy_reg_pg_type2(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE2 + + u32 i = 0; + u32 array_len = + sizeof(array_mp_8814a_phy_reg_pg_type2) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_phy_reg_pg_type2; + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrByRate, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrByRate = array_len / 6; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + dm->phy_reg_pg_version = 1; + dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE; + + for (i = 0; i < array_len; i += 6) { + u32 v1 = array[i]; + u32 v2 = array[i + 1]; + u32 v3 = array[i + 2]; + u32 v4 = array[i + 3]; + u32 v5 = array[i + 4]; + u32 v6 = array[i + 5]; + + odm_config_bb_phy_reg_pg_8814a(dm, v1, v2, v3, v4, v5, v6); + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrByRate[i / 6], 100, + "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,", + (v1 == 0 ? "2.4G" : " 5G"), (v2 == 0 ? "A" : "B"), + (v3 == 0 ? "1Tx" : "2Tx"), v4, v5, v6); +#endif + } +#endif +} + +/****************************************************************************** + * phy_reg_pg_type3.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE3 +const u32 array_mp_8814a_phy_reg_pg_type3[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x48484848, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x46464646, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x44464646, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x46464646, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x42444646, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x46464646, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x42444646, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x46464646, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x42444646, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x46464646, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x42444646, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x46463840, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x46464646, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x38404244, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x46464646, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x42444646, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x38383840, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x48484848, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x46464646, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x44464646, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x46464646, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x42444646, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x46464646, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x42444646, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x46464646, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x42444646, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x46464646, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x42444646, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x46463840, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x46464646, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x38404244, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x46464646, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x42444646, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x38383840, + 0, 2, 0, 0x00001820, 0xffffffff, 0x48484848, + 0, 2, 0, 0x00001824, 0xffffffff, 0x46464646, + 0, 2, 0, 0x00001828, 0xffffffff, 0x44464646, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x46464646, + 0, 2, 0, 0x00001830, 0xffffffff, 0x42444646, + 0, 2, 1, 0x00001834, 0xffffffff, 0x46464646, + 0, 2, 1, 0x00001838, 0xffffffff, 0x42444646, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x46464646, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x42444646, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x46464646, + 0, 2, 0, 0x00001840, 0xffffffff, 0x42444646, + 0, 2, 0, 0x00001844, 0xffffffff, 0x46463840, + 0, 2, 1, 0x00001848, 0xffffffff, 0x46464646, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x38404244, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x46464646, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x42444646, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x38383840, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x48484848, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x46464646, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x44464646, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x46464646, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x42444646, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x46464646, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x42444646, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x46464646, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x42444646, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x46464646, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x42444646, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x46463840, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x46464646, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x38404244, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x46464646, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x42444646, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x38383840, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x44464646, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x42444646, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x46464646, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x42444646, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x46464646, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x42444646, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x42444646, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x46463840, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x46464646, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x38404244, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x46464646, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x42444646, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x38383840, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x44464646, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x42444646, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x46464646, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x42444646, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x46464646, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x42444646, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x42444646, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x46463840, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x46464646, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x38404244, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x46464646, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x42444646, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x38383840, + 1, 2, 0, 0x00001824, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001828, 0xffffffff, 0x44464646, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001830, 0xffffffff, 0x42444646, + 1, 2, 1, 0x00001834, 0xffffffff, 0x46464646, + 1, 2, 1, 0x00001838, 0xffffffff, 0x42444646, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x46464646, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x42444646, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001840, 0xffffffff, 0x42444646, + 1, 2, 0, 0x00001844, 0xffffffff, 0x46463840, + 1, 2, 1, 0x00001848, 0xffffffff, 0x46464646, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x38404244, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x46464646, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x42444646, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x38383840, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x44464646, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x42444646, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x46464646, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x42444646, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x46464646, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x42444646, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x42444646, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x46463840, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x46464646, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x38404244, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x46464646, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x42444646, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x38383840 +}; + +#endif + +void +odm_read_and_config_mp_8814a_phy_reg_pg_type3(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE3 + + u32 i = 0; + u32 array_len = + sizeof(array_mp_8814a_phy_reg_pg_type3) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_phy_reg_pg_type3; + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrByRate, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrByRate = array_len / 6; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + dm->phy_reg_pg_version = 1; + dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE; + + for (i = 0; i < array_len; i += 6) { + u32 v1 = array[i]; + u32 v2 = array[i + 1]; + u32 v3 = array[i + 2]; + u32 v4 = array[i + 3]; + u32 v5 = array[i + 4]; + u32 v6 = array[i + 5]; + + odm_config_bb_phy_reg_pg_8814a(dm, v1, v2, v3, v4, v5, v6); + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrByRate[i / 6], 100, + "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,", + (v1 == 0 ? "2.4G" : " 5G"), (v2 == 0 ? "A" : "B"), + (v3 == 0 ? "1Tx" : "2Tx"), v4, v5, v6); +#endif + } +#endif +} + +/****************************************************************************** + * phy_reg_pg_type4.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE4 +const u32 array_mp_8814a_phy_reg_pg_type4[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x36384042, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x34363840, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x42424242, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x34363840, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x42424242, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x34363840, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x42423032, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x38404242, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x30323436, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x34363840, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x30303032, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x36384042, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x34363840, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x42424242, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x34363840, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x42424242, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x34363840, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x42423032, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x38404242, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x30323436, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x34363840, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x30303032, + 0, 2, 0, 0x00001820, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001824, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001828, 0xffffffff, 0x36384042, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001830, 0xffffffff, 0x34363840, + 0, 2, 1, 0x00001834, 0xffffffff, 0x42424242, + 0, 2, 1, 0x00001838, 0xffffffff, 0x34363840, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x42424242, + 0, 2, 0, 0x00001840, 0xffffffff, 0x34363840, + 0, 2, 0, 0x00001844, 0xffffffff, 0x42423032, + 0, 2, 1, 0x00001848, 0xffffffff, 0x38404242, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x30323436, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x34363840, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x30303032, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x36384042, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x34363840, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x42424242, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x34363840, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x42424242, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x34363840, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x42423032, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x38404242, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x30323436, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x34363840, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x30303032, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x36384042, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x34363840, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x42424242, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x34363840, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x42424242, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x42423032, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x38404242, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x30323436, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x34363840, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x30303032, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x36384042, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x34363840, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x42424242, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x34363840, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x42424242, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x34363840, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x42423032, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x38404242, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x30323436, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x34363840, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x30303032, + 1, 2, 0, 0x00001824, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001828, 0xffffffff, 0x36384042, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001830, 0xffffffff, 0x34363840, + 1, 2, 1, 0x00001834, 0xffffffff, 0x42424242, + 1, 2, 1, 0x00001838, 0xffffffff, 0x34363840, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x42424242, + 1, 2, 0, 0x00001840, 0xffffffff, 0x34363840, + 1, 2, 0, 0x00001844, 0xffffffff, 0x42423032, + 1, 2, 1, 0x00001848, 0xffffffff, 0x38404242, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x30323436, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x34363840, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x30303032, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x36384042, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x34363840, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x42424242, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x34363840, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x42424242, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x34363840, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x42423032, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x38404242, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x30323436, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x34363840, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x30303032 +}; + +#endif + +void +odm_read_and_config_mp_8814a_phy_reg_pg_type4(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE4 + + u32 i = 0; + u32 array_len = + sizeof(array_mp_8814a_phy_reg_pg_type4) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_phy_reg_pg_type4; + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrByRate, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrByRate = array_len / 6; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + dm->phy_reg_pg_version = 1; + dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE; + + for (i = 0; i < array_len; i += 6) { + u32 v1 = array[i]; + u32 v2 = array[i + 1]; + u32 v3 = array[i + 2]; + u32 v4 = array[i + 3]; + u32 v5 = array[i + 4]; + u32 v6 = array[i + 5]; + + odm_config_bb_phy_reg_pg_8814a(dm, v1, v2, v3, v4, v5, v6); + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrByRate[i / 6], 100, + "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,", + (v1 == 0 ? "2.4G" : " 5G"), (v2 == 0 ? "A" : "B"), + (v3 == 0 ? "1Tx" : "2Tx"), v4, v5, v6); +#endif + } +#endif +} + +/****************************************************************************** + * phy_reg_pg_type5.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE5 +const u32 array_mp_8814a_phy_reg_pg_type5[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x48484848, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x46464646, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x44464646, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x46464646, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x42444646, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x44444444, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x40424444, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x38404242, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x46464646, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x42444646, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x44444040, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x44444444, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x38384042, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x38404242, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20203636, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x48484848, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x46464646, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x44464646, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x46464646, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x42444646, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x44444444, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x40424444, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x38404242, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x46464646, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x42444646, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x44444040, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x44444444, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x38384042, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x38404242, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20203636, + 0, 2, 0, 0x00001820, 0xffffffff, 0x48484848, + 0, 2, 0, 0x00001824, 0xffffffff, 0x46464646, + 0, 2, 0, 0x00001828, 0xffffffff, 0x44464646, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x46464646, + 0, 2, 0, 0x00001830, 0xffffffff, 0x42444646, + 0, 2, 1, 0x00001834, 0xffffffff, 0x44444444, + 0, 2, 1, 0x00001838, 0xffffffff, 0x40424444, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x38404242, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x46464646, + 0, 2, 0, 0x00001840, 0xffffffff, 0x42444646, + 0, 2, 0, 0x00001844, 0xffffffff, 0x44444040, + 0, 2, 1, 0x00001848, 0xffffffff, 0x44444444, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x38384042, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x38404242, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20203636, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x48484848, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x46464646, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x44464646, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x46464646, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x42444646, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x44444444, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x40424444, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x38404242, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x46464646, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x42444646, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x44444040, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x44444444, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x38384042, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x38404242, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20203636, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x44464646, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x42444646, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x44444444, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x40424444, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x38404242, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x42444646, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x44443840, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x44444444, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x36384042, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x38404242, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x20203436, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x44464646, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x42444646, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x44444444, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x40424444, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x38404242, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x42444646, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x44443840, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x44444444, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x36384042, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x38404242, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x20203436, + 1, 2, 0, 0x00001824, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001828, 0xffffffff, 0x44464646, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001830, 0xffffffff, 0x42444646, + 1, 2, 1, 0x00001834, 0xffffffff, 0x44444444, + 1, 2, 1, 0x00001838, 0xffffffff, 0x40424444, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x38404242, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001840, 0xffffffff, 0x42444646, + 1, 2, 0, 0x00001844, 0xffffffff, 0x44443840, + 1, 2, 1, 0x00001848, 0xffffffff, 0x44444444, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x36384042, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x38404242, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x20203436, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x44464646, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x42444646, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x44444444, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x40424444, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x38404242, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x42444646, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x44443840, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x44444444, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x36384042, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x38404242, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x20203436 +}; + +#endif + +void +odm_read_and_config_mp_8814a_phy_reg_pg_type5(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE5 + + u32 i = 0; + u32 array_len = + sizeof(array_mp_8814a_phy_reg_pg_type5) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_phy_reg_pg_type5; + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrByRate, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrByRate = array_len / 6; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + dm->phy_reg_pg_version = 1; + dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE; + + for (i = 0; i < array_len; i += 6) { + u32 v1 = array[i]; + u32 v2 = array[i + 1]; + u32 v3 = array[i + 2]; + u32 v4 = array[i + 3]; + u32 v5 = array[i + 4]; + u32 v6 = array[i + 5]; + + odm_config_bb_phy_reg_pg_8814a(dm, v1, v2, v3, v4, v5, v6); + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrByRate[i / 6], 100, + "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,", + (v1 == 0 ? "2.4G" : " 5G"), (v2 == 0 ? "A" : "B"), + (v3 == 0 ? "1Tx" : "2Tx"), v4, v5, v6); +#endif + } +#endif +} + +/****************************************************************************** + * phy_reg_pg_type6.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE6 +const u32 array_mp_8814a_phy_reg_pg_type6[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x28303232, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x26283032, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x30303030, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x28282828, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x22242628, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x32323232, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x26283032, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x30302224, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x28303030, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x20222426, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x28282828, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x22242628, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x18202020, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x28303232, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x26283032, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x30303030, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x28282828, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x22242628, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x32323232, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x26283032, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x30302224, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x28303030, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x20222426, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x28282828, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x22242628, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x18202020, + 0, 2, 0, 0x00001820, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001824, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001828, 0xffffffff, 0x28303232, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001830, 0xffffffff, 0x26283032, + 0, 2, 1, 0x00001834, 0xffffffff, 0x30303030, + 0, 2, 1, 0x00001838, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x28282828, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x22242628, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x32323232, + 0, 2, 0, 0x00001840, 0xffffffff, 0x26283032, + 0, 2, 0, 0x00001844, 0xffffffff, 0x30302224, + 0, 2, 1, 0x00001848, 0xffffffff, 0x28303030, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x20222426, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x28282828, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x22242628, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x18202020, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x28303232, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x26283032, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x30303030, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x28282828, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x22242628, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x32323232, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x26283032, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x30302224, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x28303030, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x20222426, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x28282828, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x22242628, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x18202020, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x32323232, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x28303232, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x32323232, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x26283032, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x30303030, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x24262830, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x28282828, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x22242628, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x32323232, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x26283032, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x30302224, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x28303030, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x20222426, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x28282828, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x22242628, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x18202020, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x32323232, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x28303232, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x32323232, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x26283032, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x30303030, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x24262830, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x28282828, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x22242628, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x32323232, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x26283032, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x30302224, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x28303030, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x20222426, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x28282828, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x22242628, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x18202020, + 1, 2, 0, 0x00001824, 0xffffffff, 0x32323232, + 1, 2, 0, 0x00001828, 0xffffffff, 0x28303232, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x32323232, + 1, 2, 0, 0x00001830, 0xffffffff, 0x26283032, + 1, 2, 1, 0x00001834, 0xffffffff, 0x30303030, + 1, 2, 1, 0x00001838, 0xffffffff, 0x24262830, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x28282828, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x22242628, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x32323232, + 1, 2, 0, 0x00001840, 0xffffffff, 0x26283032, + 1, 2, 0, 0x00001844, 0xffffffff, 0x30302224, + 1, 2, 1, 0x00001848, 0xffffffff, 0x28303030, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x20222426, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x28282828, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x22242628, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x18202020, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x32323232, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x28303232, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x32323232, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x26283032, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x30303030, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x24262830, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x28282828, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x22242628, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x32323232, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x26283032, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x30302224, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x28303030, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x20222426, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x28282828, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x22242628, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x18202020 +}; + +#endif + +void +odm_read_and_config_mp_8814a_phy_reg_pg_type6(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE6 + + u32 i = 0; + u32 array_len = + sizeof(array_mp_8814a_phy_reg_pg_type6) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_phy_reg_pg_type6; + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrByRate, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrByRate = array_len / 6; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + dm->phy_reg_pg_version = 1; + dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE; + + for (i = 0; i < array_len; i += 6) { + u32 v1 = array[i]; + u32 v2 = array[i + 1]; + u32 v3 = array[i + 2]; + u32 v4 = array[i + 3]; + u32 v5 = array[i + 4]; + u32 v6 = array[i + 5]; + + odm_config_bb_phy_reg_pg_8814a(dm, v1, v2, v3, v4, v5, v6); + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrByRate[i / 6], 100, + "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,", + (v1 == 0 ? "2.4G" : " 5G"), (v2 == 0 ? "A" : "B"), + (v3 == 0 ? "1Tx" : "2Tx"), v4, v5, v6); +#endif + } +#endif +} + +/****************************************************************************** + * phy_reg_pg_type7.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE7 +const u32 array_mp_8814a_phy_reg_pg_type7[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x34343434, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x28303234, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x34343434, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x34342426, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x32343434, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x34343434, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x28303234, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x24263434, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x34343434, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x28303234, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x34343434, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x34342426, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x32343434, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x34343434, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x28303234, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x24263434, + 0, 2, 0, 0x00001820, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 0, 2, 1, 0x00001834, 0xffffffff, 0x34343434, + 0, 2, 1, 0x00001838, 0xffffffff, 0x28303234, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x34343434, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x28303234, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 0, 2, 0, 0x00001844, 0xffffffff, 0x34342426, + 0, 2, 1, 0x00001848, 0xffffffff, 0x32343434, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x34343434, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x28303234, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x24263434, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x34343434, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x28303234, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x34343434, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x28303234, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x34342426, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x32343434, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x34343434, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x28303234, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x24263434, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x34343434, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x28303234, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x34343434, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x28303234, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x34342426, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x32343434, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x24262830, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x34343434, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x28303234, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x24263434, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x34343434, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x28303234, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x34343434, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x28303234, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x34342426, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x32343434, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x24262830, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x34343434, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x28303234, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x24263434, + 1, 2, 0, 0x00001824, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001828, 0xffffffff, 0x30323434, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001830, 0xffffffff, 0x28303234, + 1, 2, 1, 0x00001834, 0xffffffff, 0x34343434, + 1, 2, 1, 0x00001838, 0xffffffff, 0x28303234, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x34343434, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x28303234, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 1, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 1, 2, 0, 0x00001844, 0xffffffff, 0x34342426, + 1, 2, 1, 0x00001848, 0xffffffff, 0x32343434, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x24262830, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x34343434, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x28303234, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x24263434, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x34343434, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x28303234, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x34343434, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x28303234, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x34342426, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x32343434, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x24262830, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x34343434, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x28303234, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x24263434 +}; + +#endif + +void +odm_read_and_config_mp_8814a_phy_reg_pg_type7(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE7 + + u32 i = 0; + u32 array_len = + sizeof(array_mp_8814a_phy_reg_pg_type7) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_phy_reg_pg_type7; + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrByRate, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrByRate = array_len / 6; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + dm->phy_reg_pg_version = 1; + dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE; + + for (i = 0; i < array_len; i += 6) { + u32 v1 = array[i]; + u32 v2 = array[i + 1]; + u32 v3 = array[i + 2]; + u32 v4 = array[i + 3]; + u32 v5 = array[i + 4]; + u32 v6 = array[i + 5]; + + odm_config_bb_phy_reg_pg_8814a(dm, v1, v2, v3, v4, v5, v6); + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrByRate[i / 6], 100, + "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,", + (v1 == 0 ? "2.4G" : " 5G"), (v2 == 0 ? "A" : "B"), + (v3 == 0 ? "1Tx" : "2Tx"), v4, v5, v6); +#endif + } +#endif +} + +/****************************************************************************** + * phy_reg_pg_type8.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE8 +const u32 array_mp_8814a_phy_reg_pg_type8[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x43434343, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x43434343, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x35373941, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x43434343, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x33353739, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x43434343, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x31333537, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x43434343, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x29313335, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x43434343, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x43434343, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x35373941, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x41434343, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x33353739, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x39414141, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x31333537, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x37393939, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x29313335, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 0, 2, 0, 0x00001820, 0xffffffff, 0x43434343, + 0, 2, 0, 0x00001824, 0xffffffff, 0x43434343, + 0, 2, 0, 0x00001828, 0xffffffff, 0x35373941, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x41434343, + 0, 2, 0, 0x00001830, 0xffffffff, 0x33353739, + 0, 2, 1, 0x00001834, 0xffffffff, 0x39414141, + 0, 2, 1, 0x00001838, 0xffffffff, 0x31333537, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x37393939, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x29313335, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 0, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 0, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 0, 3, 0, 0x00001a20, 0xffffffff, 0x43434343, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x43434343, + 0, 3, 0, 0x00001a28, 0xffffffff, 0x35373941, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x41434343, + 0, 3, 0, 0x00001a30, 0xffffffff, 0x33353739, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x39414141, + 0, 3, 1, 0x00001a38, 0xffffffff, 0x31333537, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x37393939, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x29313335, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x39414345, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x38404244, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x46464646, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x36384042, + 1, 0, 2, 0x00000cd8, 0xffffffff, 0x46464646, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x46464646, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x38404244, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x46463738, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x42444646, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x35373840, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x46464646, + 1, 0, 2, 0x00000ce4, 0xffffffff, 0x37394143, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x33333335, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x39414345, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x38404244, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x46464646, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x36384042, + 1, 1, 2, 0x00000ed8, 0xffffffff, 0x46464646, + 1, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x46464646, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x38404244, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x46463738, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x42444646, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x35373840, + 1, 1, 2, 0x00000ee0, 0xffffffff, 0x46464646, + 1, 1, 2, 0x00000ee4, 0xffffffff, 0x37394143, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x33333335, + 1, 2, 0, 0x00001824, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001828, 0xffffffff, 0x39414345, + 1, 2, 0, 0x0000182c, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001830, 0xffffffff, 0x38404244, + 1, 2, 1, 0x00001834, 0xffffffff, 0x46464646, + 1, 2, 1, 0x00001838, 0xffffffff, 0x36384042, + 1, 2, 2, 0x000018d8, 0xffffffff, 0x46464646, + 1, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, + 1, 2, 0, 0x0000183c, 0xffffffff, 0x46464646, + 1, 2, 0, 0x00001840, 0xffffffff, 0x38404244, + 1, 2, 0, 0x00001844, 0xffffffff, 0x46463738, + 1, 2, 1, 0x00001848, 0xffffffff, 0x42444646, + 1, 2, 1, 0x0000184c, 0xffffffff, 0x35373840, + 1, 2, 2, 0x000018e0, 0xffffffff, 0x46464646, + 1, 2, 2, 0x000018e4, 0xffffffff, 0x37394143, + 1, 2, 2, 0x000018e8, 0x0000ffff, 0x33333335, + 1, 3, 0, 0x00001a24, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a28, 0xffffffff, 0x39414345, + 1, 3, 0, 0x00001a2c, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a30, 0xffffffff, 0x38404244, + 1, 3, 1, 0x00001a34, 0xffffffff, 0x46464646, + 1, 3, 1, 0x00001a38, 0xffffffff, 0x36384042, + 1, 3, 2, 0x00001ad8, 0xffffffff, 0x46464646, + 1, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, + 1, 3, 0, 0x00001a3c, 0xffffffff, 0x46464646, + 1, 3, 0, 0x00001a40, 0xffffffff, 0x38404244, + 1, 3, 0, 0x00001a44, 0xffffffff, 0x46463738, + 1, 3, 1, 0x00001a48, 0xffffffff, 0x42444646, + 1, 3, 1, 0x00001a4c, 0xffffffff, 0x35373840, + 1, 3, 2, 0x00001ae0, 0xffffffff, 0x46464646, + 1, 3, 2, 0x00001ae4, 0xffffffff, 0x37394143, + 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x33333335 +}; + +#endif + +void +odm_read_and_config_mp_8814a_phy_reg_pg_type8(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE8 + + u32 i = 0; + u32 array_len = + sizeof(array_mp_8814a_phy_reg_pg_type8) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_phy_reg_pg_type8; + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrByRate, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrByRate = array_len / 6; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + dm->phy_reg_pg_version = 1; + dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE; + + for (i = 0; i < array_len; i += 6) { + u32 v1 = array[i]; + u32 v2 = array[i + 1]; + u32 v3 = array[i + 2]; + u32 v4 = array[i + 3]; + u32 v5 = array[i + 4]; + u32 v6 = array[i + 5]; + + odm_config_bb_phy_reg_pg_8814a(dm, v1, v2, v3, v4, v5, v6); + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrByRate[i / 6], 100, + "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,", + (v1 == 0 ? "2.4G" : " 5G"), (v2 == 0 ? "A" : "B"), + (v3 == 0 ? "1Tx" : "2Tx"), v4, v5, v6); +#endif + } +#endif +} + +/****************************************************************************** + * phy_reg_pg_type9.TXT + ******************************************************************************/ + +#ifdef CONFIG_8814A_TYPE9 +const u32 array_mp_8814a_phy_reg_pg_type9[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x44444444, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x44444444, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x34363840, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x44444444, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x32343638, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x44444444, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x30323436, + 0, 0, 2, 0x00000cd8, 0xffffffff, 0x44444444, + 0, 0, 2, 0x00000cdc, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 0, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, + 0, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, + 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x44444444, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x44444444, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x34363840, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x40444444, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x32343638, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x38404040, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x30323436, + 0, 1, 2, 0x00000ed8, 0xffffffff, 0x36383838, + 0, 1, 2, 0x00000edc, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 0, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, + 0, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, + 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, + 0, 2, 0, 0x00001820, 0xffffffff, 0x44444444, + 0, 2, 0, 0x00001824, 0xffffffff, 0x44444444, + 0, 2, 0, 0x00001828, 0xffffffff, 0x34363840, + 0, 2, 0, 0x0000182c, 0xffffffff, 0x40444444, + 0, 2, 0, 0x00001830, 0xffffffff, 0x32343638, + 0, 2, 1, 0x00001834, 0xffffffff, 0x38404040, + 0, 2, 1, 0x00001838, 0xffffffff, 0x30323436, + 0, 2, 2, 0x000018d8, 0xffffffff, 0x36383838, + 0, 2, 2, 0x000018dc, 0xffffffff, 0x28303234, + 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, + 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, + 0, 2, 0, 0x00001844, 0xffffffff, 0x32322426, + 0, 2, 1, 0x00001848, 0xffffffff, 0x30323232, + 0, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, + 0, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, + 0, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, + 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, + 0, 3, 2, 0x00001adc, 0xffffffff, 0x28303234, + 0, 3, 0, 0x00001a24, 0xffffffff, 0x43434343, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 0, 3, 0, 0x00001a2c, 0xffffffff, 0x41434343, + 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, + 0, 3, 1, 0x00001a34, 0xffffffff, 0x39414141, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 0, 3, 2, 0x00001ad8, 0xffffffff, 0x37393939, + 0, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, + 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 0, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, + 0, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, + 0, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, + 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222, + 1, 0, 0, 0x00001a20, 0xffffffff, 0x44444444, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x39414345, + 1, 0, 0, 0x00001a24, 0xffffffff, 0x44444444, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x38404244, + 1, 0, 0, 0x00001a28, 0xffffffff, 0x34363840, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x36384042, + 1, 0, 0, 0x00001a2c, 0xffffffff, 0x40444444, + 1, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, + 1, 0, 0, 0x00001a30, 0xffffffff, 0x32343638, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x38404244, + 1, 0, 1, 0x00001a34, 0xffffffff, 0x38404040, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x42444646, + 1, 0, 1, 0x00001a38, 0xffffffff, 0x30323436, + 1, 0, 2, 0x00000ce0, 0xffffffff, 0x46464646, + 1, 0, 2, 0x00001ad8, 0xffffffff, 0x36383838, + 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x33333335, + 1, 1, 0, 0x00000c28, 0xffffffff, 0x30323436, + 1, 1, 0, 0x00000c2c, 0xffffffff, 0x36363636, + 1, 1, 0, 0x00000c30, 0xffffffff, 0x29313335, + 1, 1, 1, 0x00000c34, 0xffffffff, 0x35353535, + 1, 1, 1, 0x00000c38, 0xffffffff, 0x28303234, + 1, 1, 2, 0x00000cd8, 0xffffffff, 0x34343434, + 1, 1, 2, 0x00000cdc, 0xffffffff, 0x27293133, + 1, 1, 0, 0x00000c3c, 0xffffffff, 0x36363636, + 1, 1, 0, 0x00000c40, 0xffffffff, 0x29313335, + 1, 1, 0, 0x00000c44, 0xffffffff, 0x35352426, + 1, 1, 1, 0x00000c48, 0xffffffff, 0x32343535, + 1, 1, 1, 0x00000c4c, 0xffffffff, 0x23252830, + 1, 1, 2, 0x00000ce0, 0xffffffff, 0x34343434, + 1, 1, 2, 0x00000ce4, 0xffffffff, 0x27293133, + 1, 1, 2, 0x00000ce8, 0x0000ffff, 0x22222224, + 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x33333335, + 1, 2, 0, 0x00000e28, 0xffffffff, 0x30323436, + 1, 2, 0, 0x00000e2c, 0xffffffff, 0x36363636, + 1, 2, 0, 0x00000e30, 0xffffffff, 0x29313335, + 1, 2, 1, 0x00000e34, 0xffffffff, 0x35353535, + 1, 2, 1, 0x00000e38, 0xffffffff, 0x28303234, + 1, 2, 2, 0x00000ed8, 0xffffffff, 0x34343434, + 1, 2, 2, 0x00000edc, 0xffffffff, 0x27293133, + 1, 2, 0, 0x00000e3c, 0xffffffff, 0x36363636, + 1, 2, 0, 0x00000e40, 0xffffffff, 0x29313335, + 1, 2, 0, 0x00000e44, 0xffffffff, 0x35352426, + 1, 2, 1, 0x00000e48, 0xffffffff, 0x32343535, + 1, 2, 1, 0x00000e4c, 0xffffffff, 0x23252830, + 1, 2, 2, 0x00000ee0, 0xffffffff, 0x34343434, + 1, 2, 2, 0x00000ee4, 0xffffffff, 0x27293133, + 1, 2, 2, 0x00000ee8, 0x0000ffff, 0x22222224, + 1, 2, 0, 0x00000c24, 0xffffffff, 0x36363636, + 1, 3, 0, 0x00001828, 0xffffffff, 0x30323436, + 1, 3, 0, 0x0000182c, 0xffffffff, 0x36363636, + 1, 3, 0, 0x00001830, 0xffffffff, 0x29313335, + 1, 3, 1, 0x00001834, 0xffffffff, 0x35353535, + 1, 3, 1, 0x00001838, 0xffffffff, 0x28303234, + 1, 3, 2, 0x000018d8, 0xffffffff, 0x34343434, + 1, 3, 2, 0x000018dc, 0xffffffff, 0x27293133, + 1, 3, 0, 0x0000183c, 0xffffffff, 0x36363636, + 1, 3, 0, 0x00001840, 0xffffffff, 0x29313335, + 1, 3, 0, 0x00001844, 0xffffffff, 0x35352426, + 1, 3, 1, 0x00001848, 0xffffffff, 0x32343535, + 1, 3, 1, 0x0000184c, 0xffffffff, 0x23252830, + 1, 3, 2, 0x000018e0, 0xffffffff, 0x34343434, + 1, 3, 2, 0x000018e4, 0xffffffff, 0x27293133, + 1, 3, 2, 0x000018e8, 0x0000ffff, 0x22222224, + 1, 3, 0, 0x00000e24, 0xffffffff, 0x36363636 +}; + +#endif + +void +odm_read_and_config_mp_8814a_phy_reg_pg_type9(struct dm_struct *dm) +{ +#ifdef CONFIG_8814A_TYPE9 + + u32 i = 0; + u32 array_len = + sizeof(array_mp_8814a_phy_reg_pg_type9) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_phy_reg_pg_type9; + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + void *adapter = dm->adapter; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter)); + + odm_memory_set(dm, hal_data->BufOfLinesPwrByRate, 0, + MAX_LINES_HWCONFIG_TXT * + MAX_BYTES_LINE_HWCONFIG_TXT); + hal_data->nLinesReadPwrByRate = array_len / 6; +#endif + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + dm->phy_reg_pg_version = 1; + dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE; + + for (i = 0; i < array_len; i += 6) { + u32 v1 = array[i]; + u32 v2 = array[i + 1]; + u32 v3 = array[i + 2]; + u32 v4 = array[i + 3]; + u32 v5 = array[i + 4]; + u32 v6 = array[i + 5]; + + odm_config_bb_phy_reg_pg_8814a(dm, v1, v2, v3, v4, v5, v6); + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + rsprintf((char *)hal_data->BufOfLinesPwrByRate[i / 6], 100, + "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,", + (v1 == 0 ? "2.4G" : " 5G"), (v2 == 0 ? "A" : "B"), + (v3 == 0 ? "1Tx" : "2Tx"), v4, v5, v6); +#endif + } +#endif +} + +#endif /* end of HWIMG_SUPPORT*/ + diff --git a/hal/phydm/rtl8814a/halhwimg8814a_bb.h b/hal/phydm/rtl8814a/halhwimg8814a_bb.h new file mode 100644 index 0000000..8fe9381 --- /dev/null +++ b/hal/phydm/rtl8814a/halhwimg8814a_bb.h @@ -0,0 +1,177 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +/*Image2HeaderVersion: R3 1.5.6*/ +#if (RTL8814A_SUPPORT == 1) +#ifndef __INC_MP_BB_HW_IMG_8814A_H +#define __INC_MP_BB_HW_IMG_8814A_H + +/****************************************************************************** + * agc_tab.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_agc_tab(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_agc_tab(void); + +/****************************************************************************** + * phy_reg.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_phy_reg(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_phy_reg(void); + +/****************************************************************************** + * phy_reg_mp.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_phy_reg_mp(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_phy_reg_mp(void); + +/****************************************************************************** + * phy_reg_pg.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_phy_reg_pg(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_phy_reg_pg(void); + +/****************************************************************************** + * phy_reg_pg_type0.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_phy_reg_pg_type0(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_phy_reg_pg_type0(void); + +/****************************************************************************** + * phy_reg_pg_type1.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_phy_reg_pg_type1(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_phy_reg_pg_type1(void); + +/****************************************************************************** + * phy_reg_pg_type10.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_phy_reg_pg_type10(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_phy_reg_pg_type10(void); + +/****************************************************************************** + * phy_reg_pg_type11.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_phy_reg_pg_type11(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_phy_reg_pg_type11(void); + +/****************************************************************************** + * phy_reg_pg_type2.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_phy_reg_pg_type2(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_phy_reg_pg_type2(void); + +/****************************************************************************** + * phy_reg_pg_type3.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_phy_reg_pg_type3(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_phy_reg_pg_type3(void); + +/****************************************************************************** + * phy_reg_pg_type4.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_phy_reg_pg_type4(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_phy_reg_pg_type4(void); + +/****************************************************************************** + * phy_reg_pg_type5.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_phy_reg_pg_type5(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_phy_reg_pg_type5(void); + +/****************************************************************************** + * phy_reg_pg_type6.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_phy_reg_pg_type6(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_phy_reg_pg_type6(void); + +/****************************************************************************** + * phy_reg_pg_type7.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_phy_reg_pg_type7(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_phy_reg_pg_type7(void); + +/****************************************************************************** + * phy_reg_pg_type8.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_phy_reg_pg_type8(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_phy_reg_pg_type8(void); + +/****************************************************************************** + * phy_reg_pg_type9.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_phy_reg_pg_type9(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_phy_reg_pg_type9(void); + +#endif +#endif /* end of HWIMG_SUPPORT*/ + diff --git a/hal/phydm/rtl8814a/halhwimg8814a_mac.c b/hal/phydm/rtl8814a/halhwimg8814a_mac.c new file mode 100644 index 0000000..2c3b653 --- /dev/null +++ b/hal/phydm/rtl8814a/halhwimg8814a_mac.c @@ -0,0 +1,326 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +/*Image2HeaderVersion: R3 1.5.6*/ +#include "mp_precomp.h" +#include "../phydm_precomp.h" + +#if (RTL8814A_SUPPORT == 1) +static boolean +check_positive(struct dm_struct *dm, + const u32 condition1, + const u32 condition2, + const u32 condition3, + const u32 condition4 +) +{ + u32 cond1 = condition1, cond2 = condition2, + cond3 = condition3, cond4 = condition4; + + u8 cut_version_for_para = + (dm->cut_version == ODM_CUT_A) ? 15 : dm->cut_version; + + u8 pkg_type_for_para = + (dm->package_type == 0) ? 15 : dm->package_type; + + u32 driver1 = cut_version_for_para << 24 | + (dm->support_interface & 0xF0) << 16 | + dm->support_platform << 16 | + pkg_type_for_para << 12 | + (dm->support_interface & 0x0F) << 8 | + dm->rfe_type; + + u32 driver2 = (dm->type_glna & 0xFF) << 0 | + (dm->type_gpa & 0xFF) << 8 | + (dm->type_alna & 0xFF) << 16 | + (dm->type_apa & 0xFF) << 24; + + u32 driver3 = 0; + + u32 driver4 = (dm->type_glna & 0xFF00) >> 8 | + (dm->type_gpa & 0xFF00) | + (dm->type_alna & 0xFF00) << 8 | + (dm->type_apa & 0xFF00) << 16; + + PHYDM_DBG(dm, ODM_COMP_INIT, + "===> %s (cond1, cond2, cond3, cond4) = (0x%X 0x%X 0x%X 0x%X)\n", + __func__, cond1, cond2, cond3, cond4); + PHYDM_DBG(dm, ODM_COMP_INIT, + "===> %s (driver1, driver2, driver3, driver4) = (0x%X 0x%X 0x%X 0x%X)\n", + __func__, driver1, driver2, driver3, driver4); + + PHYDM_DBG(dm, ODM_COMP_INIT, + " (Platform, Interface) = (0x%X, 0x%X)\n", + dm->support_platform, dm->support_interface); + PHYDM_DBG(dm, ODM_COMP_INIT, " (RFE, Package) = (0x%X, 0x%X)\n", + dm->rfe_type, dm->package_type); + + /*============== value Defined Check ===============*/ + /*cut version [27:24] need to do value check*/ + if (((cond1 & 0x0F000000) != 0) && + ((cond1 & 0x0F000000) != (driver1 & 0x0F000000))) + return false; + + /*pkg type [15:12] need to do value check*/ + if (((cond1 & 0x0000F000) != 0) && + ((cond1 & 0x0000F000) != (driver1 & 0x0000F000))) + return false; + + /*interface [11:8] need to do value check*/ + if (((cond1 & 0x00000F00) != 0) && + ((cond1 & 0x00000F00) != (driver1 & 0x00000F00))) + return false; + /*=============== Bit Defined Check ================*/ + /* We don't care [31:28] */ + + cond1 &= 0x000000FF; + driver1 &= 0x000000FF; + + if (cond1 == driver1) + return true; + else + return false; +} + + +/****************************************************************************** + * mac_reg.TXT + ******************************************************************************/ + +const u32 array_mp_8814a_mac_reg[] = { + 0x010, 0x0000007C, + 0x014, 0x000000DB, + 0x016, 0x00000002, + 0x073, 0x00000010, + 0x420, 0x00000080, + 0x421, 0x0000000F, + 0x428, 0x0000000A, + 0x429, 0x00000010, + 0x430, 0x00000000, + 0x431, 0x00000000, + 0x432, 0x00000000, + 0x433, 0x00000001, + 0x434, 0x00000004, + 0x435, 0x00000005, + 0x436, 0x00000007, + 0x437, 0x00000008, + 0x43C, 0x00000004, + 0x43D, 0x00000005, + 0x43E, 0x00000007, + 0x43F, 0x00000008, + 0x440, 0x0000005D, + 0x441, 0x00000001, + 0x442, 0x00000000, + 0x444, 0x00000010, + 0x445, 0x000000F0, + 0x446, 0x00000001, + 0x447, 0x000000FE, + 0x448, 0x00000000, + 0x449, 0x00000000, + 0x44A, 0x00000000, + 0x44B, 0x00000040, + 0x44C, 0x00000010, + 0x44D, 0x000000F0, + 0x44E, 0x0000003F, + 0x44F, 0x00000000, + 0x450, 0x00000000, + 0x451, 0x00000000, + 0x452, 0x00000000, + 0x453, 0x00000040, + 0x45E, 0x00000004, + 0x49C, 0x00000010, + 0x49D, 0x000000F0, + 0x49E, 0x00000000, + 0x49F, 0x00000006, + 0x4A0, 0x000000E0, + 0x4A1, 0x00000003, + 0x4A2, 0x00000000, + 0x4A3, 0x00000040, + 0x4A4, 0x00000015, + 0x4A5, 0x000000F0, + 0x4A6, 0x00000000, + 0x4A7, 0x00000006, + 0x4A8, 0x000000E0, + 0x4A9, 0x00000000, + 0x4AA, 0x00000000, + 0x4AB, 0x00000000, + 0x7DA, 0x00000008, + 0x1448, 0x00000006, + 0x144A, 0x00000006, + 0x144C, 0x00000006, + 0x144E, 0x00000006, + 0x4C8, 0x000000FF, + 0x4C9, 0x00000008, + 0x4CA, 0x0000003C, + 0x4CB, 0x0000003C, + 0x4CC, 0x000000FF, + 0x4CD, 0x000000FF, + 0x4CE, 0x00000001, + 0x4CF, 0x00000008, + 0x500, 0x00000026, + 0x501, 0x000000A2, + 0x502, 0x0000002F, + 0x503, 0x00000000, + 0x504, 0x00000028, + 0x505, 0x000000A3, + 0x506, 0x0000005E, + 0x507, 0x00000000, + 0x508, 0x0000002B, + 0x509, 0x000000A4, + 0x50A, 0x0000005E, + 0x50B, 0x00000000, + 0x50C, 0x0000004F, + 0x50D, 0x000000A4, + 0x50E, 0x00000000, + 0x50F, 0x00000000, + 0x512, 0x0000001C, + 0x514, 0x0000000A, + 0x516, 0x0000000A, + 0x521, 0x0000002F, + 0x525, 0x00000047, + 0x550, 0x00000010, + 0x551, 0x00000010, + 0x559, 0x00000002, + 0x55C, 0x00000064, + 0x55D, 0x000000FF, + 0x577, 0x00000003, + 0x5BE, 0x00000064, + 0x604, 0x00000001, + 0x605, 0x00000030, + 0x607, 0x00000001, + 0x608, 0x0000000E, + 0x609, 0x0000002A, + 0x60A, 0x00000000, + 0x60C, 0x00000018, + 0x60D, 0x00000050, + 0x6A0, 0x000000FF, + 0x6A1, 0x000000FF, + 0x6A2, 0x000000FF, + 0x6A3, 0x000000FF, + 0x6A4, 0x000000FF, + 0x6A5, 0x000000FF, + 0x6DE, 0x00000084, + 0x620, 0x000000FF, + 0x621, 0x000000FF, + 0x622, 0x000000FF, + 0x623, 0x000000FF, + 0x624, 0x000000FF, + 0x625, 0x000000FF, + 0x626, 0x000000FF, + 0x627, 0x000000FF, + 0x638, 0x00000064, + 0x63C, 0x0000000A, + 0x63D, 0x0000000A, + 0x63E, 0x0000000E, + 0x63F, 0x0000000E, + 0x640, 0x00000040, + 0x642, 0x00000040, + 0x643, 0x00000000, + 0x652, 0x000000C8, + 0x66E, 0x00000005, + 0x700, 0x00000021, + 0x701, 0x00000043, + 0x702, 0x00000065, + 0x703, 0x00000087, + 0x708, 0x00000021, + 0x709, 0x00000043, + 0x70A, 0x00000065, + 0x70B, 0x00000087, + 0x718, 0x00000040, + 0x7D5, 0x000000BC, + 0x7D8, 0x00000028, + 0x7D9, 0x00000000, + 0x7DA, 0x0000000B, + +}; + +void +odm_read_and_config_mp_8814a_mac_reg(struct dm_struct *dm) +{ + u32 i = 0; + u8 c_cond; + boolean is_matched = true, is_skipped = false; + u32 array_len = + sizeof(array_mp_8814a_mac_reg) / sizeof(u32); + u32 *array = (u32 *)array_mp_8814a_mac_reg; + + u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0; + u32 a1 = 0, a2 = 0, a3 = 0, a4 = 0; + + PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); + + while ((i + 1) < array_len) { + v1 = array[i]; + v2 = array[i + 1]; + + if (v1 & (BIT(31) | BIT(30))) {/*positive & negative condition*/ + if (v1 & BIT(31)) {/* positive condition*/ + c_cond = + (u8)((v1 & (BIT(29) | BIT(28))) >> 28); + if (c_cond == COND_ENDIF) {/*end*/ + is_matched = true; + is_skipped = false; + PHYDM_DBG(dm, ODM_COMP_INIT, "ENDIF\n"); + } else if (c_cond == COND_ELSE) { /*else*/ + is_matched = is_skipped ? false : true; + PHYDM_DBG(dm, ODM_COMP_INIT, "ELSE\n"); + } else {/*if , else if*/ + pre_v1 = v1; + pre_v2 = v2; + PHYDM_DBG(dm, ODM_COMP_INIT, + "IF or ELSE IF\n"); + } + } else if (v1 & BIT(30)) { /*negative condition*/ + if (!is_skipped) { + a1 = pre_v1; a2 = pre_v2; + a3 = v1; a4 = v2; + if (check_positive(dm, + a1, a2, a3, a4)) { + is_matched = true; + is_skipped = true; + } else { + is_matched = false; + is_skipped = false; + } + } else { + is_matched = false; + } + } + } else { + if (is_matched) + odm_config_mac_8814a(dm, v1, (u8)v2); + } + i = i + 2; + } +} + +u32 +odm_get_version_mp_8814a_mac_reg(void) +{ + return 110; +} + +#endif /* end of HWIMG_SUPPORT*/ + diff --git a/hal/phydm/rtl8814a/halhwimg8814a_mac.h b/hal/phydm/rtl8814a/halhwimg8814a_mac.h new file mode 100644 index 0000000..b9f5690 --- /dev/null +++ b/hal/phydm/rtl8814a/halhwimg8814a_mac.h @@ -0,0 +1,42 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +/*Image2HeaderVersion: R3 1.5.6*/ +#if (RTL8814A_SUPPORT == 1) +#ifndef __INC_MP_MAC_HW_IMG_8814A_H +#define __INC_MP_MAC_HW_IMG_8814A_H + +/****************************************************************************** + * mac_reg.TXT + ******************************************************************************/ + +/* tc: Test Chip, mp: mp Chip*/ +void +odm_read_and_config_mp_8814a_mac_reg(struct dm_struct *dm); +u32 odm_get_version_mp_8814a_mac_reg(void); + +#endif +#endif /* end of HWIMG_SUPPORT*/ + diff --git a/hal/phydm/rtl8814a/phydm_regconfig8814a.c b/hal/phydm/rtl8814a/phydm_regconfig8814a.c new file mode 100644 index 0000000..dc98112 --- /dev/null +++ b/hal/phydm/rtl8814a/phydm_regconfig8814a.c @@ -0,0 +1,244 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ + +#include "mp_precomp.h" +#include "../phydm_precomp.h" + +#if (RTL8814A_SUPPORT == 1) + +void odm_config_rf_reg_8814a(struct dm_struct *dm, u32 addr, u32 data, + enum rf_path rf_path, u32 reg_addr) +{ + if (dm->fw_offload_ability & PHYDM_PHY_PARAM_OFFLOAD) { + if (addr == 0xfe || addr == 0xffe) + phydm_set_reg_by_fw(dm, + PHYDM_HALMAC_CMD_DELAY_MS, + reg_addr, + data, + RFREGOFFSETMASK, + rf_path, + 50); + else { + phydm_set_reg_by_fw(dm, + PHYDM_HALMAC_CMD_RF_W, + reg_addr, + data, + RFREGOFFSETMASK, + rf_path, + 0); + phydm_set_reg_by_fw(dm, + PHYDM_HALMAC_CMD_DELAY_US, + reg_addr, + data, + RFREGOFFSETMASK, + rf_path, + 1); + } + } else { + if (addr == 0xfe || addr == 0xffe) { +#ifdef CONFIG_LONG_DELAY_ISSUE + ODM_sleep_ms(50); +#else + ODM_delay_ms(50); +#endif + } else { + odm_set_rf_reg(dm, rf_path, reg_addr, RFREGOFFSETMASK, data); + /* Add 1us delay between BB/RF register setting. */ + ODM_delay_us(1); + } + } +} + +void odm_config_rf_radio_a_8814a(struct dm_struct *dm, u32 addr, u32 data) +{ + u32 content = 0x1000; /* RF_Content: radioa_txt */ + u32 maskfor_phy_set = (u32)(content & 0xE000); + + odm_config_rf_reg_8814a(dm, addr, data, RF_PATH_A, addr | maskfor_phy_set); + + PHYDM_DBG(dm, ODM_COMP_INIT, + "===> odm_config_rf_with_header_file: [RadioA] %08X %08X\n", + addr, data); +} + +void odm_config_rf_radio_b_8814a(struct dm_struct *dm, u32 addr, u32 data) +{ + u32 content = 0x1001; /* RF_Content: radiob_txt */ + u32 maskfor_phy_set = (u32)(content & 0xE000); + + odm_config_rf_reg_8814a(dm, addr, data, RF_PATH_B, addr | maskfor_phy_set); + + PHYDM_DBG(dm, ODM_COMP_INIT, + "===> odm_config_rf_with_header_file: [RadioB] %08X %08X\n", + addr, data); +} + +void odm_config_rf_radio_c_8814a(struct dm_struct *dm, u32 addr, u32 data) +{ + u32 content = 0x1001; /* RF_Content: radiob_txt */ + u32 maskfor_phy_set = (u32)(content & 0xE000); + + odm_config_rf_reg_8814a(dm, addr, data, RF_PATH_C, addr | maskfor_phy_set); + + PHYDM_DBG(dm, ODM_COMP_INIT, + "===> odm_config_rf_with_header_file: [RadioC] %08X %08X\n", + addr, data); +} + +void odm_config_rf_radio_d_8814a(struct dm_struct *dm, u32 addr, u32 data) +{ + u32 content = 0x1001; /* RF_Content: radiob_txt */ + u32 maskfor_phy_set = (u32)(content & 0xE000); + + odm_config_rf_reg_8814a(dm, addr, data, RF_PATH_D, addr | maskfor_phy_set); + + PHYDM_DBG(dm, ODM_COMP_INIT, + "===> odm_config_rf_with_header_file: [RadioD] %08X %08X\n", + addr, data); +} + +void odm_config_mac_8814a(struct dm_struct *dm, u32 addr, u8 data) +{ + if (dm->fw_offload_ability & PHYDM_PHY_PARAM_OFFLOAD) + phydm_set_reg_by_fw(dm, + PHYDM_HALMAC_CMD_MAC_W8, + addr, + data, + 0, + (enum rf_path)0, + 0); + else + odm_write_1byte(dm, addr, data); + PHYDM_DBG(dm, ODM_COMP_INIT, + "===> odm_config_mac_with_header_file: [MAC_REG] %08X %08X\n", + addr, data); +} + +void odm_config_bb_agc_8814a(struct dm_struct *dm, u32 addr, u32 bitmask, + u32 data) +{ + if (dm->fw_offload_ability & PHYDM_PHY_PARAM_OFFLOAD) + phydm_set_reg_by_fw(dm, + PHYDM_HALMAC_CMD_BB_W32, + addr, + data, + bitmask, + (enum rf_path)0, + 0); + else + odm_set_bb_reg(dm, addr, bitmask, data); + + PHYDM_DBG(dm, ODM_COMP_INIT, + "===> odm_config_bb_with_header_file: [AGC_TAB] %08X %08X\n", + addr, data); +} + +void odm_config_bb_phy_reg_pg_8814a(struct dm_struct *dm, u32 band, u32 rf_path, + u32 tx_num, u32 addr, u32 bitmask, u32 data) +{ + if (addr == 0xfe || addr == 0xffe) +#ifdef CONFIG_LONG_DELAY_ISSUE + ODM_sleep_ms(50); +#else + ODM_delay_ms(50); +#endif + else { +#if (DM_ODM_SUPPORT_TYPE & ODM_CE) + phy_store_tx_power_by_rate(dm->adapter, band, rf_path, tx_num, addr, bitmask, data); +#elif (DM_ODM_SUPPORT_TYPE & ODM_WIN) + PHY_StoreTxPowerByRate(dm->adapter, band, rf_path, tx_num, addr, bitmask, data); +#endif + } + PHYDM_DBG(dm, ODM_COMP_INIT, + "===> odm_config_bb_with_header_file: [PHY_REG] %08X %08X %08X\n", + addr, bitmask, data); +} + +void odm_config_bb_phy_8814a(struct dm_struct *dm, u32 addr, u32 bitmask, + u32 data) +{ + if (dm->fw_offload_ability & PHYDM_PHY_PARAM_OFFLOAD) { + u32 delay_time = 0; + + if (addr >= 0xf9 && addr <= 0xfe) { + if (addr == 0xfe || addr == 0xfb) + delay_time = 50; + else if (addr == 0xfd || addr == 0xfa) + delay_time = 5; + else + delay_time = 1; + + if (addr >= 0xfc && addr <= 0xfe) + phydm_set_reg_by_fw(dm, + PHYDM_HALMAC_CMD_DELAY_MS, + addr, + data, + bitmask, + (enum rf_path)0, + delay_time); + else + phydm_set_reg_by_fw(dm, + PHYDM_HALMAC_CMD_DELAY_US, + addr, + data, + bitmask, + (enum rf_path)0, + delay_time); + } else + phydm_set_reg_by_fw(dm, + PHYDM_HALMAC_CMD_BB_W32, + addr, + data, + bitmask, + (enum rf_path)0, + 0); + } else { + if (addr == 0xfe) +#ifdef CONFIG_LONG_DELAY_ISSUE + ODM_sleep_ms(50); +#else + ODM_delay_ms(50); +#endif + else if (addr == 0xfd) + ODM_delay_ms(5); + else if (addr == 0xfc) + ODM_delay_ms(1); + else if (addr == 0xfb) + ODM_delay_us(50); + else if (addr == 0xfa) + ODM_delay_us(5); + else if (addr == 0xf9) + ODM_delay_us(1); + else + odm_set_bb_reg(dm, addr, bitmask, data); + } + PHYDM_DBG(dm, ODM_COMP_INIT, + "===> odm_config_bb_with_header_file: [PHY_REG] %08X %08X\n", + addr, data); +} + +void odm_config_bb_txpwr_lmt_8814a(struct dm_struct *dm, u8 *regulation, + u8 *band, u8 *bandwidth, u8 *rate_section, + u8 *rf_path, u8 *channel, u8 *power_limit) +{ +#if (DM_ODM_SUPPORT_TYPE & ODM_CE) + phy_set_tx_power_limit(dm, regulation, band, + bandwidth, rate_section, rf_path, channel, power_limit); +#elif (DM_ODM_SUPPORT_TYPE & ODM_WIN) + PHY_SetTxPowerLimit(dm, regulation, band, + bandwidth, rate_section, rf_path, channel, power_limit); +#endif +} +#endif diff --git a/hal/phydm/rtl8814a/phydm_regconfig8814a.h b/hal/phydm/rtl8814a/phydm_regconfig8814a.h new file mode 100644 index 0000000..332e7d8 --- /dev/null +++ b/hal/phydm/rtl8814a/phydm_regconfig8814a.h @@ -0,0 +1,47 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#ifndef __INC_ODM_REGCONFIG_H_8814A +#define __INC_ODM_REGCONFIG_H_8814A + +#if (RTL8814A_SUPPORT == 1) + +void odm_config_rf_reg_8814a(struct dm_struct *dm, u32 addr, u32 data, + enum rf_path rf_path, u32 reg_addr); + +void odm_config_rf_radio_a_8814a(struct dm_struct *dm, u32 addr, u32 data); + +void odm_config_rf_radio_b_8814a(struct dm_struct *dm, u32 addr, u32 data); + +void odm_config_rf_radio_c_8814a(struct dm_struct *dm, u32 addr, u32 data); + +void odm_config_rf_radio_d_8814a(struct dm_struct *dm, u32 addr, u32 data); + +void odm_config_mac_8814a(struct dm_struct *dm, u32 addr, u8 data); + +void odm_config_bb_agc_8814a(struct dm_struct *dm, u32 addr, u32 bitmask, + u32 data); + +void odm_config_bb_phy_reg_pg_8814a(struct dm_struct *dm, u32 band, u32 rf_path, + u32 tx_num, u32 addr, u32 bitmask, + u32 data); + +void odm_config_bb_phy_8814a(struct dm_struct *dm, u32 addr, u32 bitmask, + u32 data); + +void odm_config_bb_txpwr_lmt_8814a(struct dm_struct *dm, u8 *regulation, + u8 *band, u8 *bandwidth, u8 *rate_section, + u8 *rf_path, u8 *channel, u8 *power_limit); +#endif +#endif /* end of SUPPORT */ diff --git a/hal/phydm/rtl8814a/phydm_rtl8814a.c b/hal/phydm/rtl8814a/phydm_rtl8814a.c new file mode 100644 index 0000000..a969fb5 --- /dev/null +++ b/hal/phydm/rtl8814a/phydm_rtl8814a.c @@ -0,0 +1,254 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ + +/* ************************************************************ + * include files + * ************************************************************ */ + +#include "mp_precomp.h" +#include "../phydm_precomp.h" + +#if (RTL8814A_SUPPORT == 1) +s8 phydm_cck_rssi_8814a(struct dm_struct *dm, u16 lna_idx, u8 vga_idx) +{ + s8 rx_pwr_all = 0; + + switch (lna_idx) { + case 7: + rx_pwr_all = -38 - (2 * vga_idx); + break; + case 5: + rx_pwr_all = -28 - (2 * vga_idx); + break; + case 3: + rx_pwr_all = -8 - (2 * vga_idx); + break; + case 2: + rx_pwr_all = -1 - (2 * vga_idx); + break; + default: + break; + } + return rx_pwr_all; +} + +u8 phydm_spur_nbi_setting_8814a(struct dm_struct *dm) +{ + u8 set_result = 0; + + /*dm->channel means central frequency, so we can use 20M as input*/ + if (dm->rfe_type == 0 || dm->rfe_type == 1 || dm->rfe_type == 6 || + dm->rfe_type == 7) { + /*channel asked by RF Jeff*/ + if (*dm->channel == 14) + set_result = phydm_nbi_setting(dm, FUNC_ENABLE, + *dm->channel, 40, 2480, + PHYDM_DONT_CARE); + else if (*dm->channel >= 4 && *dm->channel <= 8) + set_result = phydm_nbi_setting(dm, FUNC_ENABLE, + *dm->channel, 40, 2440, + PHYDM_DONT_CARE); +#if 0 + else if (*dm->channel == 153) + set_result = phydm_nbi_setting(dm, FUNC_ENABLE, + *dm->channel, 20, 5760, + PHYDM_DONT_CARE); + else if (*dm->channel == 54) + set_result = phydm_nbi_setting(dm, FUNC_ENABLE, + *dm->channel, 40, 5280, + PHYDM_DONT_CARE); + else if (*dm->channel == 118) + set_result = phydm_nbi_setting(dm, FUNC_ENABLE, + *dm->channel, 40, 5600, + PHYDM_DONT_CARE); + else if (*dm->channel == 151) + set_result = phydm_nbi_setting(dm, FUNC_ENABLE, + *dm->channel, 40, 5760, + PHYDM_DONT_CARE); + else if (*dm->channel == 58) + set_result = phydm_nbi_setting(dm, FUNC_ENABLE, + *dm->channel, 80, 5280, + PHYDM_DONT_CARE); + else if (*dm->channel == 122) + set_result = phydm_nbi_setting(dm, FUNC_ENABLE, + *dm->channel, 80, 5600, + PHYDM_DONT_CARE); + else if (*dm->channel == 155) + set_result = phydm_nbi_setting(dm, FUNC_ENABLE, + *dm->channel, 80, 5760, + PHYDM_DONT_CARE); +#endif + else + set_result = phydm_nbi_setting(dm, FUNC_DISABLE, + *dm->channel, 40, 2440, + PHYDM_DONT_CARE); + } + PHYDM_DBG(dm, ODM_COMP_API, "%s, set_result = 0x%x, channel = %d\n", + __func__, set_result, *dm->channel); + dm->nbi_set_result = set_result; + return set_result; +} + +void phydm_dynamic_nbi_switch_8814a(struct dm_struct *dm) +{ + /*if rssi < 15%, disable nbi notch filter, if rssi > 20%, enable nbi notch filter*/ + /*add by YuChen 20160218*/ + if (dm->rfe_type == 0 || dm->rfe_type == 1 || dm->rfe_type == 6 || dm->rfe_type == 7) { + if (dm->nbi_set_result == PHYDM_SET_SUCCESS) { + if (dm->rssi_min <= 15) + odm_set_bb_reg(dm, R_0x87c, BIT(13), 0x0); + else if (dm->rssi_min >= 20) + odm_set_bb_reg(dm, R_0x87c, BIT(13), 0x1); + } + PHYDM_DBG(dm, ODM_COMP_API, "%s\n", __func__); + } +} + +void phydm_hwsetting_8814a(struct dm_struct *dm) +{ + phydm_dynamic_nbi_switch_8814a(dm); +} + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) +/*@For normal driver we always use the FW method to configure TX power index to reduce I/O transaction.*/ +void odm_set_tx_power_level8814(void *adapter, u8 channel, u8 pwr_lvl) +{ +#if (DEV_BUS_TYPE == RT_USB_INTERFACE) + u32 i, j, k = 0; + u32 value[264] = {0}; + u32 path = 0, power_index, txagc_table_wd = 0x00801000; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA((PADAPTER)adapter); + u8 jaguar2_rates[][4] = {{MGN_1M, MGN_2M, MGN_5_5M, MGN_11M}, + {MGN_6M, MGN_9M, MGN_12M, MGN_18M}, + {MGN_24M, MGN_36M, MGN_48M, MGN_54M}, + {MGN_MCS0, MGN_MCS1, MGN_MCS2, MGN_MCS3}, + {MGN_MCS4, MGN_MCS5, MGN_MCS6, MGN_MCS7}, + {MGN_MCS8, MGN_MCS9, MGN_MCS10, MGN_MCS11}, + {MGN_MCS12, MGN_MCS13, MGN_MCS14, MGN_MCS15}, + {MGN_MCS16, MGN_MCS17, MGN_MCS18, MGN_MCS19}, + {MGN_MCS20, MGN_MCS21, MGN_MCS22, MGN_MCS23}, + {MGN_VHT1SS_MCS0, MGN_VHT1SS_MCS1, MGN_VHT1SS_MCS2, MGN_VHT1SS_MCS3}, + {MGN_VHT1SS_MCS4, MGN_VHT1SS_MCS5, MGN_VHT1SS_MCS6, MGN_VHT1SS_MCS7}, + {MGN_VHT2SS_MCS8, MGN_VHT2SS_MCS9, MGN_VHT2SS_MCS0, MGN_VHT2SS_MCS1}, + {MGN_VHT2SS_MCS2, MGN_VHT2SS_MCS3, MGN_VHT2SS_MCS4, MGN_VHT2SS_MCS5}, + {MGN_VHT2SS_MCS6, MGN_VHT2SS_MCS7, MGN_VHT2SS_MCS8, MGN_VHT2SS_MCS9}, + {MGN_VHT3SS_MCS0, MGN_VHT3SS_MCS1, MGN_VHT3SS_MCS2, MGN_VHT3SS_MCS3}, + {MGN_VHT3SS_MCS4, MGN_VHT3SS_MCS5, MGN_VHT3SS_MCS6, MGN_VHT3SS_MCS7}, + {MGN_VHT3SS_MCS8, MGN_VHT3SS_MCS9, 0, 0}}; + + for (path = RF_PATH_A; path <= RF_PATH_D; ++path) { + u8 usb_host = UsbModeQueryHubUsbType(adapter); + u8 usb_rfset = UsbModeQueryRfSet(adapter); + u8 usb_rf_type = RT_GetRFType((PADAPTER)adapter); + + for (i = 0; i <= 16; i++) { + for (j = 0; j <= 3; j++) { + if (jaguar2_rates[i][j] == 0) + continue; + + txagc_table_wd = 0x00801000; + power_index = (u32)PHY_GetTxPowerIndex(adapter, (u8)path, jaguar2_rates[i][j], hal_data->CurrentChannelBW, channel); + + /*@for Query bus type to recude tx power.*/ + if (usb_host != USB_MODE_U3 && usb_rfset == 1 && IS_HARDWARE_TYPE_8814AU(adapter) && usb_rf_type == RF_3T3R) { + if (channel <= 14) { + if (power_index >= 16) + power_index -= 16; + else + power_index = 0; + } else + power_index = 0; + } + + if (pwr_lvl == tx_high_pwr_level_level1) { + if (power_index >= 0x10) + power_index -= 0x10; + else + power_index = 0; + } else if (pwr_lvl == tx_high_pwr_level_level2) + power_index = 0; + + txagc_table_wd |= (path << 8) | MRateToHwRate(jaguar2_rates[i][j]) | (power_index << 24); + + PHY_SetTxPowerIndexShadow(adapter, (u8)power_index, (u8)path, jaguar2_rates[i][j]); + + value[k++] = txagc_table_wd; + } + } + } + + if (((PADAPTER)adapter)->MgntInfo.bScanInProgress == false && ((PADAPTER)adapter)->MgntInfo.RegFWOffload == 2) + HalDownloadTxPowerLevel8814(adapter, value); +#endif +} + +void odm_dynamic_tx_power_8814a(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + void *adapter = dm->adapter; + PMGNT_INFO mgnt_info = &((PADAPTER)adapter)->MgntInfo; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA((PADAPTER)adapter); + s32 rssi = dm->rssi_min; + + PHYDM_DBG(dm, DBG_DYN_TXPWR, + "[%s] Tx_Lv=%d, iot_action=%x DTP_en=%d\n", + __func__, hal_data->DynamicTxHighPowerLvl, + mgnt_info->IOTAction, mgnt_info->bDynamicTxPowerEnable); + + /*STA not connected and AP not connected*/ + if (!mgnt_info->bMediaConnect && + hal_data->EntryMinUndecoratedSmoothedPWDB == 0) { + PHYDM_DBG(dm, DBG_DYN_TXPWR, + "Not connected to any reset power lvl\n"); + hal_data->DynamicTxHighPowerLvl = tx_high_pwr_level_normal; + return; + } + + if (!mgnt_info->bDynamicTxPowerEnable || + mgnt_info->IOTAction & HT_IOT_ACT_DISABLE_HIGH_POWER) { + hal_data->DynamicTxHighPowerLvl = tx_high_pwr_level_normal; + } else { + /*Should we separate as 2.4G/5G band?*/ + PHYDM_DBG(dm, DBG_DYN_TXPWR, "rssi_tmp = %d\n", rssi); + + if (rssi >= TX_POWER_NEAR_FIELD_THRESH_LVL2) { + hal_data->DynamicTxHighPowerLvl = tx_high_pwr_level_level2; + } else if ((rssi < (TX_POWER_NEAR_FIELD_THRESH_LVL2 - 3)) && + (rssi >= TX_POWER_NEAR_FIELD_THRESH_LVL1)) { + hal_data->DynamicTxHighPowerLvl = tx_high_pwr_level_level1; + } else if (rssi < (TX_POWER_NEAR_FIELD_THRESH_LVL1 - 5)) { + hal_data->DynamicTxHighPowerLvl = tx_high_pwr_level_normal; + } + PHYDM_DBG(dm, DBG_DYN_TXPWR, "TxHighPowerLvl = %d\n", + hal_data->DynamicTxHighPowerLvl); + } + + if (hal_data->DynamicTxHighPowerLvl != hal_data->LastDTPLvl) { + PHYDM_DBG(dm, DBG_DYN_TXPWR, "channel = %d\n", + hal_data->CurrentChannel); + odm_set_tx_power_level8814(adapter, hal_data->CurrentChannel, + hal_data->DynamicTxHighPowerLvl); + } + + PHYDM_DBG(dm, DBG_DYN_TXPWR, "channel = %d TXpower lvl=%d/%d\n", + hal_data->CurrentChannel, hal_data->LastDTPLvl, + hal_data->DynamicTxHighPowerLvl); + + hal_data->LastDTPLvl = hal_data->DynamicTxHighPowerLvl; +} +#endif /* #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) */ + + +#endif /* RTL8814A_SUPPORT == 1 */ diff --git a/hal/phydm/rtl8814a/phydm_rtl8814a.h b/hal/phydm/rtl8814a/phydm_rtl8814a.h new file mode 100644 index 0000000..7106df1 --- /dev/null +++ b/hal/phydm/rtl8814a/phydm_rtl8814a.h @@ -0,0 +1,26 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#ifndef __ODM_RTL8814A_H__ +#define __ODM_RTL8814A_H__ +#if (RTL8814A_SUPPORT == 1) +s8 phydm_cck_rssi_8814a(struct dm_struct *dm, u16 lna_idx, u8 vga_idx); + +u8 phydm_spur_nbi_setting_8814a(struct dm_struct *dm); + +void phydm_hwsetting_8814a(struct dm_struct *dm); + +void odm_dynamic_tx_power_8814a(void *dm_void); +#endif +#endif diff --git a/hal/phydm/rtl8814a/version_rtl8814a.h b/hal/phydm/rtl8814a/version_rtl8814a.h new file mode 100644 index 0000000..554db75 --- /dev/null +++ b/hal/phydm/rtl8814a/version_rtl8814a.h @@ -0,0 +1,34 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ +/*RTL8814A PHY Parameters*/ +/* +[Caution] + Since 01/Aug/2015, the commit rules will be simplified. + You do not need to fill up the version.h anymore, + only the maintenance supervisor fills it before formal release. +*/ +#define RELEASE_DATE_8814A 20181211 +#define COMMIT_BY_8814A "BB_Dino" +#define RELEASE_VERSION_8814A 110 diff --git a/hal/rtl8814a/rtl8814a_cmd.c b/hal/rtl8814a/rtl8814a_cmd.c new file mode 100644 index 0000000..ff07fe7 --- /dev/null +++ b/hal/rtl8814a/rtl8814a_cmd.c @@ -0,0 +1,942 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#define _RTL8814A_CMD_C_ + +/* #include */ +#include + +#define CONFIG_H2C_EF + +#define RTL8814_MAX_H2C_BOX_NUMS 4 +#define RTL8814_MAX_CMD_LEN 7 +#define RTL8814_MESSAGE_BOX_SIZE 4 +#define RTL8814_EX_MESSAGE_BOX_SIZE 4 + + +static u8 _is_fw_read_cmd_down(_adapter *padapter, u8 msgbox_num) +{ + u8 read_down = _FALSE; + int retry_cnts = 100; + + u8 valid; + + /* RTW_INFO(" _is_fw_read_cmd_down ,reg_1cc(%x),msg_box(%d)...\n",rtw_read8(padapter,REG_HMETFR),msgbox_num); */ + + do { + valid = rtw_read8(padapter, REG_HMETFR) & BIT(msgbox_num); + if (0 == valid) + read_down = _TRUE; + else + rtw_msleep_os(1); + } while ((!read_down) && (retry_cnts--)); + + return read_down; + +} + + +/***************************************** +* H2C Msg format : +* 0x1DF - 0x1D0 +*| 31 - 8 | 7-5 4 - 0 | +*| h2c_msg |Class_ID CMD_ID | +* +* Extend 0x1FF - 0x1F0 +*|31 - 0 | +*|ext_msg| +******************************************/ +s32 FillH2CCmd_8814(PADAPTER padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer) +{ + u8 h2c_box_num; + u32 msgbox_addr; + u32 msgbox_ex_addr = 0; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + u8 cmd_idx ; + u32 h2c_cmd = 0; + u32 h2c_cmd_ex = 0; + s32 ret = _FAIL; + + + padapter = GET_PRIMARY_ADAPTER(padapter); + pHalData = GET_HAL_DATA(padapter); + + + if (pHalData->bFWReady == _FALSE) { + /* RTW_INFO("FillH2CCmd_8814(): return H2C cmd because fw is not ready\n"); */ + return ret; + } + + _enter_critical_mutex(&(adapter_to_dvobj(padapter)->h2c_fwcmd_mutex), NULL); + + + if (!pCmdBuffer) + goto exit; + + if (CmdLen > RTL8814_MAX_CMD_LEN) { + RTW_WARN("%s, CmdLen: %d > %d, return!\n", __func__, CmdLen, RTL8814_MAX_CMD_LEN); + goto exit; + } + + if (rtw_is_surprise_removed(padapter)) + goto exit; + + /* pay attention to if race condition happened in H2C cmd setting. */ + do { + h2c_box_num = pHalData->LastHMEBoxNum; + + if (!_is_fw_read_cmd_down(padapter, h2c_box_num)) { + RTW_INFO(" fw read cmd failed...\n"); + goto exit; + } + + *(u8 *)(&h2c_cmd) = ElementID; + + if (CmdLen <= 3) { + _rtw_memcpy((u8 *)(&h2c_cmd) + 1, pCmdBuffer, CmdLen); + h2c_cmd_ex = 0; + } else { + _rtw_memcpy((u8 *)(&h2c_cmd) + 1, pCmdBuffer, 3); + _rtw_memcpy((u8 *)(&h2c_cmd_ex), pCmdBuffer + 3, CmdLen - 3); + } + + /* Write Ext command */ + msgbox_ex_addr = REG_HMEBOX_EXT0_8814A + (h2c_box_num * RTL8814_EX_MESSAGE_BOX_SIZE); +#ifdef CONFIG_H2C_EF + for (cmd_idx = 0; cmd_idx < RTL8814_MESSAGE_BOX_SIZE; cmd_idx++) + rtw_write8(padapter, msgbox_ex_addr + cmd_idx, *((u8 *)(&h2c_cmd_ex) + cmd_idx)); +#else + h2c_cmd_ex = le32_to_cpu(h2c_cmd_ex); + rtw_write32(padapter, msgbox_ex_addr, h2c_cmd_ex); +#endif + + /* Write command */ + msgbox_addr = REG_HMEBOX_0 + (h2c_box_num * RTL8814_MESSAGE_BOX_SIZE); +#ifdef CONFIG_H2C_EF + for (cmd_idx = 0; cmd_idx < RTL8814_MESSAGE_BOX_SIZE; cmd_idx++) + rtw_write8(padapter, msgbox_addr + cmd_idx, *((u8 *)(&h2c_cmd) + cmd_idx)); +#else + h2c_cmd = le32_to_cpu(h2c_cmd); + rtw_write32(padapter, msgbox_addr, h2c_cmd); +#endif + + /* RTW_INFO("MSG_BOX:%d,CmdLen(%d), reg:0x%x =>h2c_cmd:0x%x, reg:0x%x =>h2c_cmd_ex:0x%x ..\n" */ + /* ,pHalData->LastHMEBoxNum ,CmdLen,msgbox_addr,h2c_cmd,msgbox_ex_addr,h2c_cmd_ex); */ + + pHalData->LastHMEBoxNum = (h2c_box_num + 1) % RTL8814_MAX_H2C_BOX_NUMS; + + } while (0); + + ret = _SUCCESS; + +exit: + + _exit_critical_mutex(&(adapter_to_dvobj(padapter)->h2c_fwcmd_mutex), NULL); + + + return ret; +} +#ifdef CONFIG_FW_CORRECT_BCN +void rtl8814_fw_update_beacon_cmd(_adapter *padapter) +{ + u8 param[2] = {0}; + u16 txpktbuf_bndy; + + + + SET_8814A_H2CCMD_BCNHWSEQ_EN(param, 1); + SET_8814A_H2CCMD_BCNHWSEQ_BCN_NUMBER(param, 0); + SET_8814A_H2CCMD_BCNHWSEQ_HWSEQ(param, 1); + SET_8814A_H2CCMD_BCNHWSEQ_EXHWSEQ(param, 0); + SET_8814A_H2CCMD_BCNHWSEQ_PAGE(param, 0); + if (GET_HAL_DATA(padapter)->firmware_version < 23) + /* FW v21, v22 use H2C_BCNHWSEQ = 0xC2 */ + FillH2CCmd_8814(padapter, 0xC2, 2, param); + else + FillH2CCmd_8814(padapter, H2C_BCNHWSEQ, 2, param); + + /*RTW_INFO("%s, %d, correct beacon HW sequence, FirmwareVersion=%d, H2C_BCNHWSEQ=%d\n", __func__, __LINE__, GET_HAL_DATA(padapter)->firmware_version, H2C_BCNHWSEQ);*/ + +} +#endif +u8 Get_VHT_ENI( + u32 IOTAction, + u32 WirelessMode, + u32 ratr_bitmap +) +{ + u8 Ret = 0; + + if (WirelessMode == WIRELESS_11_24AC) { + if (ratr_bitmap & 0xfff00000) /* Mix , 2SS */ + Ret = 3; + else /* Mix, 1SS */ + Ret = 2; + } else if (WirelessMode == WIRELESS_11_5AC) { + Ret = 1; /* VHT */ + } + + return Ret << 4; +} + +BOOLEAN +Get_RA_ShortGI_8814( + PADAPTER Adapter, + struct sta_info *psta, + u8 shortGIrate, + u32 ratr_bitmap +) +{ + BOOLEAN bShortGI; + struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + bShortGI = shortGIrate; + +#ifdef CONFIG_80211AC_VHT + if (bShortGI && + is_supported_vht(psta->wireless_mode) && + (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK_JAGUAR_CCUTAP) && + TEST_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_ENABLE_TX) + ) { + if (ratr_bitmap & 0xC0000000) + bShortGI = _FALSE; + } +#endif /* CONFIG_80211AC_VHT */ + + return bShortGI; +} + + +void +Set_RA_LDPC_8814( + struct sta_info *psta, + BOOLEAN bLDPC +) +{ + if (psta == NULL) + return; +#ifdef CONFIG_80211AC_VHT + if (psta->wireless_mode == WIRELESS_11_5AC) { + if (bLDPC && TEST_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_CAP_TX)) + SET_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_ENABLE_TX); + else + CLEAR_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_ENABLE_TX); + } else if (is_supported_ht(psta->wireless_mode) || is_supported_vht(psta->wireless_mode)) { + if (bLDPC && TEST_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_CAP_TX)) + SET_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_ENABLE_TX); + else + CLEAR_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_ENABLE_TX); + } + + update_ldpc_stbc_cap(psta); +#endif /* CONFIG_80211AC_VHT */ + + /* RTW_INFO("MacId %d bLDPC %d\n", psta->cmn.mac_id, bLDPC); */ +} + +void rtl8814_req_txrpt_cmd(PADAPTER padapter, u8 macid) +{ + u8 u1H2CApReqRptParm[H2C_AP_REQ_TXRPT_LEN] = {0}; + + SET_8814A_H2CCMD_TXREP_PARM_STA1(u1H2CApReqRptParm, macid); + SET_8814A_H2CCMD_TXREP_PARM_STA2(u1H2CApReqRptParm, 0xff); + SET_8814A_H2CCMD_TXREP_PARM_RTY(u1H2CApReqRptParm, 0x00); + FillH2CCmd_8814(padapter, H2C_AP_REQ_TXRPT, H2C_AP_REQ_TXRPT_LEN, u1H2CApReqRptParm); + SET_8814A_H2CCMD_TXREP_PARM_RTY(u1H2CApReqRptParm, 0x02); + FillH2CCmd_8814(padapter, H2C_AP_REQ_TXRPT, H2C_AP_REQ_TXRPT_LEN, u1H2CApReqRptParm); +} + +void rtl8814_set_FwPwrMode_cmd(PADAPTER padapter, u8 PSMode) +{ + u8 u1H2CSetPwrMode[H2C_PWRMODE_LEN] = {0}; + struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); + u8 Mode = 0, RLBM = 0, PowerState = 0, LPSAwakeIntvl = 2; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + u8 allQueueUAPSD = 0; + + RTW_INFO("%s: Mode=%d SmartPS=%d\n", __FUNCTION__, PSMode, pwrpriv->smart_ps); + + switch (PSMode) { + case PS_MODE_ACTIVE: + Mode = 0; + break; + case PS_MODE_MIN: + Mode = 1; + break; + case PS_MODE_MAX: + RLBM = 1; + Mode = 1; + break; + case PS_MODE_DTIM: + RLBM = 2; + Mode = 1; + break; + case PS_MODE_UAPSD_WMM: + Mode = 2; + break; + default: + Mode = 0; + break; + } + + if (Mode > PS_MODE_ACTIVE) { +#ifdef CONFIG_BT_COEXIST + if ((rtw_btcoex_IsBtControlLps(padapter) == _TRUE) && (_TRUE == pHalData->EEPROMBluetoothCoexist)) + PowerState = rtw_btcoex_RpwmVal(padapter); + else +#endif /* CONFIG_BT_COEXIST */ + PowerState = 0x00;/* AllON(0x0C), RFON(0x04), RFOFF(0x00) */ + +#ifdef CONFIG_EXT_CLK + Mode |= BIT(7);/* supporting 26M XTAL CLK_Request feature. */ +#endif /* CONFIG_EXT_CLK */ + } else + PowerState = 0x0C;/* AllON(0x0C), RFON(0x04), RFOFF(0x00) */ + + /* 0: Active, 1: LPS, 2: WMMPS */ + SET_8814A_H2CCMD_PWRMODE_PARM_MODE(u1H2CSetPwrMode, Mode); + + /* 0:Min, 1:Max , 2:User define */ + SET_8814A_H2CCMD_PWRMODE_PARM_RLBM(u1H2CSetPwrMode, RLBM); + + /* (LPS) smart_ps: 0: PS_Poll, 1: PS_Poll , 2: NullData */ + /* (WMM)smart_ps: 0:PS_Poll, 1:NullData */ + SET_8814A_H2CCMD_PWRMODE_PARM_SMART_PS(u1H2CSetPwrMode, pwrpriv->smart_ps); + + /* AwakeInterval: Unit is beacon interval, this field is only valid in PS_DTIM mode */ + SET_8814A_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(u1H2CSetPwrMode, LPSAwakeIntvl); + + /* (WMM only)bAllQueueUAPSD */ + SET_8814A_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(u1H2CSetPwrMode, allQueueUAPSD); + + /* AllON(0x0C), RFON(0x04), RFOFF(0x00) */ + SET_8814A_H2CCMD_PWRMODE_PARM_PWR_STATE(u1H2CSetPwrMode, PowerState); + +#ifdef CONFIG_BT_COEXIST + if (_TRUE == pHalData->EEPROMBluetoothCoexist) + rtw_btcoex_RecordPwrMode(padapter, u1H2CSetPwrMode, sizeof(u1H2CSetPwrMode)); +#endif /* CONFIG_BT_COEXIST */ + /* RTW_INFO("u1H2CSetPwrMode="MAC_FMT"\n", MAC_ARG(u1H2CSetPwrMode)); */ + FillH2CCmd_8814(padapter, H2C_SET_PWR_MODE, sizeof(u1H2CSetPwrMode), u1H2CSetPwrMode); + +} + +#ifdef CONFIG_TDLS +#ifdef CONFIG_TDLS_CH_SW +void rtl8814_set_BcnEarly_C2H_Rpt_cmd(PADAPTER padapter, u8 enable) +{ + u8 u1H2CSetPwrMode[H2C_PWRMODE_LEN] = {0}; + + SET_8814A_H2CCMD_PWRMODE_PARM_MODE(u1H2CSetPwrMode, 1); + SET_8814A_H2CCMD_PWRMODE_PARM_RLBM(u1H2CSetPwrMode, 1); + SET_8814A_H2CCMD_PWRMODE_PARM_SMART_PS(u1H2CSetPwrMode, 0); + SET_8814A_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(u1H2CSetPwrMode, 0); + SET_8814A_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(u1H2CSetPwrMode, 0); + SET_8814A_H2CCMD_PWRMODE_PARM_BCN_EARLY_C2H_RPT(u1H2CSetPwrMode, enable); + SET_8814A_H2CCMD_PWRMODE_PARM_PWR_STATE(u1H2CSetPwrMode, 0x0C); + FillH2CCmd_8814(padapter, H2C_SET_PWR_MODE, sizeof(u1H2CSetPwrMode), u1H2CSetPwrMode); +} +#endif +#endif + +void rtl8814a_set_FwPwrModeInIPS_cmd(PADAPTER padapter, u8 cmd_param) +{ + struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); + u8 parm[H2C_INACTIVE_PS_LEN] = {0}; + + /* u8 cmd_param; */ /* BIT0:enable, BIT1:NoConnect32k */ + if (cmd_param) { + +#ifdef CONFIG_BT_COEXIST + rtw_btcoex_IpsNotify(padapter, pwrpriv->ips_mode_req); +#endif + /* Enter IPS */ + RTW_INFO("%s: issue H2C to FW when entering IPS\n", __func__); + + parm[0] = 0x1;/* suggest by Isaac.Hsu*/ + + rtw_hal_fill_h2c_cmd(padapter, /* H2C_FWLPS_IN_IPS_, */ + H2C_INACTIVE_PS_, + H2C_INACTIVE_PS_LEN, parm); + } else { + /* Leave IPS */ + RTW_INFO("%s: Leaving IPS in FWLPS state\n", __func__); + + parm[0] = 0x0; + parm[1] = 0x0; + parm[2] = 0x0; + rtw_hal_fill_h2c_cmd(padapter, H2C_INACTIVE_PS_, + H2C_INACTIVE_PS_LEN, parm); +#ifdef CONFIG_BT_COEXIST + rtw_btcoex_IpsNotify(padapter, IPS_NONE); +#endif + } +} + +/* + * Description: Get the reserved page number in Tx packet buffer. + * Retrun value: the page number. + * 2012.08.09, by tynli. + * */ +u8 +GetTxBufferRsvdPageNum8814(_adapter *Adapter, bool bWoWLANBoundary) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 RsvdPageNum = 0; + u16 TxPageBndy = LAST_ENTRY_OF_TX_PKT_BUFFER_8814A; /* default reseved 1 page for the IC type which is undefined. */ + + if (bWoWLANBoundary) + rtw_hal_get_def_var(Adapter, HAL_DEF_TX_PAGE_BOUNDARY_WOWLAN, (u8 *)&TxPageBndy); + else + rtw_hal_get_def_var(Adapter, HAL_DEF_TX_PAGE_BOUNDARY, (u8 *)&TxPageBndy); + + RsvdPageNum = LAST_ENTRY_OF_TX_PKT_BUFFER_8814A - TxPageBndy + 1; + + return RsvdPageNum; +} + +void rtl8814_download_rsvd_page(PADAPTER padapter, u8 mstatus) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + BOOLEAN bSendBeacon = _FALSE; + BOOLEAN bcn_valid = _FALSE; + u8 DLBcnCount = 0; + u32 poll = 0; + u8 RegFwHwTxQCtrl; + + RTW_INFO("%s mstatus(%x)\n", __FUNCTION__, mstatus); + + if (mstatus == 1) { + u8 bcn_ctrl = rtw_read8(padapter, REG_BCN_CTRL); + + /* We should set AID, correct TSF, HW seq enable before set JoinBssReport to Fw in 88/92C. */ + /* Suggested by filen. Added by tynli. */ + rtw_write16(padapter, REG_BCN_PSR_RPT, (0xC000 | pmlmeinfo->aid)); + /* Hw sequende enable by dedault. 2010.06.23. by tynli. */ + /* rtw_write16(padapter, REG_NQOS_SEQ, ((pmlmeext->mgnt_seq+100)&0xFFF)); */ + /* rtw_write8(padapter, REG_HWSEQ_CTRL, 0xFF); */ + + /* Set REG_CR bit 8. DMA beacon by SW. */ + rtw_write8(padapter, REG_CR + 1, + rtw_read8(padapter, REG_CR + 1) | BIT0); + + /*RTW_INFO("%s-%d: enable SW BCN, REG_CR=0x%x\n", __func__, __LINE__, rtw_read32(padapter, REG_CR));*/ + + /* Disable Hw protection for a time which revserd for Hw sending beacon. */ + /* Fix download reserved page packet fail that access collision with the protection time. */ + /* 2010.05.11. Added by tynli. */ + rtw_write8(padapter, REG_BCN_CTRL, (bcn_ctrl & (~EN_BCN_FUNCTION)) | DIS_TSF_UDT); + + RegFwHwTxQCtrl = rtw_read8(padapter, REG_FWHW_TXQ_CTRL + 2); + if (RegFwHwTxQCtrl & BIT6) { + RTW_INFO("HalDownloadRSVDPage(): There is an Adapter is sending beacon.\n"); + bSendBeacon = _TRUE; + } + + /* Set FWHW_TXQ_CTRL 0x422[6]=0 to tell Hw the packet is not a real beacon frame. */ + RegFwHwTxQCtrl &= (~BIT6); + rtw_write8(padapter, REG_FWHW_TXQ_CTRL + 2, RegFwHwTxQCtrl); + + /* Clear beacon valid check bit. */ + rtw_hal_set_hwreg(padapter, HW_VAR_BCN_VALID, NULL); + DLBcnCount = 0; + poll = 0; + do { + /* download rsvd page. */ + rtw_hal_set_fw_rsvd_page(padapter, _FALSE); + DLBcnCount++; + do { + rtw_yield_os(); + /* rtw_mdelay_os(10); */ + /* check rsvd page download OK. */ + rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, (u8 *)(&bcn_valid)); + poll++; + } while (!bcn_valid && (poll % 10) != 0 && !RTW_CANNOT_RUN(padapter)); + + } while (!bcn_valid && DLBcnCount <= 100 && !RTW_CANNOT_RUN(padapter)); + + /* RT_ASSERT(bcn_valid, ("HalDownloadRSVDPage88ES(): 1 Download RSVD page failed!\n")); */ + if (RTW_CANNOT_RUN(padapter)) + ; + else if (!bcn_valid) + RTW_ERR(ADPT_FMT": 1 DL RSVD page failed! DLBcnCount:%u, poll:%u\n", + ADPT_ARG(padapter) , DLBcnCount, poll); + else { + struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter); + + pwrctl->fw_psmode_iface_id = padapter->iface_id; + rtw_hal_set_fw_rsvd_page(padapter, _TRUE); + RTW_INFO(ADPT_FMT": 1 DL RSVD page success! DLBcnCount:%u, poll:%u\n", + ADPT_ARG(padapter), DLBcnCount, poll); + } + + /* restore bcn_ctrl */ + rtw_write8(padapter, REG_BCN_CTRL, bcn_ctrl); + + /* To make sure that if there exists an adapter which would like to send beacon. */ + /* If exists, the origianl value of 0x422[6] will be 1, we should check this to */ + /* prevent from setting 0x422[6] to 0 after download reserved page, or it will cause */ + /* the beacon cannot be sent by HW. */ + /* 2010.06.23. Added by tynli. */ + if (bSendBeacon) { + RegFwHwTxQCtrl |= BIT6; + rtw_write8(padapter, REG_FWHW_TXQ_CTRL + 2, RegFwHwTxQCtrl); + } + + /* */ + /* Update RSVD page location H2C to Fw. */ + /* */ + if (bcn_valid) { + rtw_hal_set_hwreg(padapter, HW_VAR_BCN_VALID, NULL); + RTW_INFO("Set RSVD page location to Fw.\n"); + /* FillH2CCmd88E(Adapter, H2C_88E_RSVDPAGE, H2C_RSVDPAGE_LOC_LENGTH, pMgntInfo->u1RsvdPageLoc); */ + } + + /* Do not enable HW DMA BCN or it will cause Pcie interface hang by timing issue. 2011.11.24. by tynli. */ + /* if(!padapter->bEnterPnpSleep) */ +#ifndef CONFIG_PCI_HCI + { +#ifndef RTL8814AE_SW_BCN + /* Clear CR[8] or beacon packet will not be send to TxBuf anymore. */ + rtw_write8(padapter, REG_CR + 1, + rtw_read8(padapter, REG_CR + 1) & (~BIT0)); + + /*RTW_INFO("%s-%d: disable SW BCN, REG_CR=0x%x\n", __func__, __LINE__, rtw_read32(padapter, REG_CR));*/ +#endif + } +#endif /* !CONFIG_PCI_HCI */ + } +} + +void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) +{ + if (mstatus == 1) + rtl8814_download_rsvd_page(padapter, RT_MEDIA_CONNECT); +} + +#ifdef CONFIG_P2P_PS +void rtl8814_set_p2p_ps_offload_cmd(_adapter *padapter, u8 p2p_ps_state) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); + struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + u8 *p2p_ps_offload = (u8 *)&pHalData->p2p_ps_offload; + u8 i; + + +#if 1 + switch (p2p_ps_state) { + case P2P_PS_DISABLE: + RTW_INFO("P2P_PS_DISABLE\n"); + _rtw_memset(p2p_ps_offload, 0, 1); + break; + case P2P_PS_ENABLE: + RTW_INFO("P2P_PS_ENABLE\n"); + /* update CTWindow value. */ + if (pwdinfo->ctwindow > 0) { + SET_8814A_H2CCMD_P2P_PS_OFFLOAD_CTWINDOW_EN(p2p_ps_offload, 1); + rtw_write8(padapter, REG_P2P_CTWIN, pwdinfo->ctwindow); + } + + /* hw only support 2 set of NoA */ + for (i = 0 ; i < pwdinfo->noa_num ; i++) { + /* To control the register setting for which NOA */ + rtw_write8(padapter, REG_NOA_DESC_SEL, (i << 4)); + if (i == 0) + SET_8814A_H2CCMD_P2P_PS_OFFLOAD_NOA0_EN(p2p_ps_offload, 1); + else + SET_8814A_H2CCMD_P2P_PS_OFFLOAD_NOA1_EN(p2p_ps_offload, 1); + + /* config P2P NoA Descriptor Register */ + /* RTW_INFO("%s(): noa_duration = %x\n",__FUNCTION__,pwdinfo->noa_duration[i]); */ + rtw_write32(padapter, REG_NOA_DESC_DURATION, pwdinfo->noa_duration[i]); + + /* RTW_INFO("%s(): noa_interval = %x\n",__FUNCTION__,pwdinfo->noa_interval[i]); */ + rtw_write32(padapter, REG_NOA_DESC_INTERVAL, pwdinfo->noa_interval[i]); + + /* RTW_INFO("%s(): start_time = %x\n",__FUNCTION__,pwdinfo->noa_start_time[i]); */ + rtw_write32(padapter, REG_NOA_DESC_START, pwdinfo->noa_start_time[i]); + + /* RTW_INFO("%s(): noa_count = %x\n",__FUNCTION__,pwdinfo->noa_count[i]); */ + rtw_write8(padapter, REG_NOA_DESC_COUNT, pwdinfo->noa_count[i]); + } + + if ((pwdinfo->opp_ps == 1) || (pwdinfo->noa_num > 0)) { + /* rst p2p circuit: reg 0x5F0 */ + rtw_write8(padapter, REG_P2P_RST_8814A, BIT(0)); /* rst p2p 0 circuit NOA 0 */ + + SET_8814A_H2CCMD_P2P_PS_OFFLOAD_ENABLE(p2p_ps_offload, 1); + + if (pwdinfo->role == P2P_ROLE_GO) { + /* 1: Owner, 0: Client */ + SET_8814A_H2CCMD_P2P_PS_OFFLOAD_ROLE(p2p_ps_offload, 1); + SET_8814A_H2CCMD_P2P_PS_OFFLOAD_ALLSTASLEEP(p2p_ps_offload, 0); + } else { + /* 1: Owner, 0: Client */ + SET_8814A_H2CCMD_P2P_PS_OFFLOAD_ROLE(p2p_ps_offload, 0); + } + + SET_8814A_H2CCMD_P2P_PS_OFFLOAD_DISCOVERY(p2p_ps_offload, 0); + } + break; + case P2P_PS_SCAN: + RTW_INFO("P2P_PS_SCAN\n"); + SET_8814A_H2CCMD_P2P_PS_OFFLOAD_DISCOVERY(p2p_ps_offload, 1); + break; + case P2P_PS_SCAN_DONE: + RTW_INFO("P2P_PS_SCAN_DONE\n"); + SET_8814A_H2CCMD_P2P_PS_OFFLOAD_DISCOVERY(p2p_ps_offload, 0); + pwdinfo->p2p_ps_state = P2P_PS_ENABLE; + break; + default: + break; + } + + RTW_INFO("P2P_PS_OFFLOAD : %x\n", p2p_ps_offload[0]); + FillH2CCmd_8814(padapter, H2C_P2P_PS_OFFLOAD, 1, p2p_ps_offload); +#endif + + +} +#endif /* CONFIG_P2P */ + + + +static void +C2HTxBeamformingHandler_8814( + PADAPTER Adapter, + u8 *CmdBuf, + u8 CmdLen +) +{ +#ifdef CONFIG_BEAMFORMING /*PHYDM_BF - (BEAMFORMING_SUPPORT == 1)*/ + u8 status = CmdBuf[0] & BIT0; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_struct *pDM_Odm = &pHalData->odmpriv; + /*beamforming_check_sounding_success(Adapter, status);*/ + phydm_beamforming_end_sw(pDM_Odm, status); +#endif /*CONFIG_BEAMFORMING*/ +} + +static void +C2HTxFeedbackHandler_8814( + PADAPTER Adapter, + u8 *CmdBuf, + u8 CmdLen +) +{ +#ifdef CONFIG_XMIT_ACK + if (GET_8814A_C2H_TX_RPT_RETRY_OVER(CmdBuf) | GET_8814A_C2H_TX_RPT_LIFE_TIME_OVER(CmdBuf)) + rtw_ack_tx_done(&Adapter->xmitpriv, RTW_SCTX_DONE_CCX_PKT_FAIL); + else + rtw_ack_tx_done(&Adapter->xmitpriv, RTW_SCTX_DONE_SUCCESS); +#endif +} + +static void +C2HTxRPTHandler_8814( + PADAPTER Adapter, + u8 *CmdBuf, + u8 CmdLen +) +{ + _irqL irqL; + u8 macid = 0, IniRate = 0; + u16 TxOK = 0, TxFail = 0; + struct sta_priv *pstapriv = &(GET_PRIMARY_ADAPTER(Adapter))->stapriv, *pstapriv_original = NULL; + struct sta_info *psta = NULL; + struct sta_info *pbcmc_stainfo = rtw_get_bcmc_stainfo(Adapter); + _list *plist, *phead; + PADAPTER adapter_ognl = NULL; + + if(!pstapriv->gotc2h) { + RTW_WARN("%s,%d: No gotc2h!\n", __FUNCTION__, __LINE__); + return; + } + + adapter_ognl = rtw_get_iface_by_id(GET_PRIMARY_ADAPTER(Adapter), pstapriv->c2h_adapter_id); + if(!adapter_ognl) { + RTW_WARN("%s: No adapter!\n", __FUNCTION__); + return; + } + + psta = rtw_get_stainfo(&adapter_ognl->stapriv, pstapriv->c2h_sta_mac); + if (!psta) { + RTW_WARN("%s: No corresponding sta_info!\n", __FUNCTION__); + return; + } + + macid = GET_8814A_C2H_TC2H_APREQ_TXRPT_MACID1(CmdBuf); + TxOK = GET_8814A_C2H_TC2H_APREQ_TXRPT_TXOK1(CmdBuf); + TxFail = GET_8814A_C2H_TC2H_APREQ_TXRPT_TXFAIL1(CmdBuf); + IniRate = GET_8814A_C2H_TC2H_APREQ_TXRPT_INIRATE1(CmdBuf); + psta->sta_stats.tx_ok_cnt = TxOK; + psta->sta_stats.tx_fail_cnt = TxFail; + +} + +static void +C2HSPC_STAT_8814( + PADAPTER Adapter, + u8 *CmdBuf, + u8 CmdLen +) +{ + _irqL irqL; + struct sta_priv *pstapriv = &(GET_PRIMARY_ADAPTER(Adapter))->stapriv; + struct sta_info *psta = NULL; + _list *plist, *phead; + PADAPTER adapter_ognl = NULL; + + if(!pstapriv->gotc2h) { + RTW_WARN("%s, %d: No gotc2h!\n", __FUNCTION__, __LINE__); + return; + } + + adapter_ognl = rtw_get_iface_by_id(GET_PRIMARY_ADAPTER(Adapter), pstapriv->c2h_adapter_id); + if(!adapter_ognl) { + RTW_WARN("%s: No adapter!\n", __FUNCTION__); + return; + } + + psta = rtw_get_stainfo(&adapter_ognl->stapriv, pstapriv->c2h_sta_mac); + if (!psta) { + RTW_WARN("%s: No corresponding sta_info!\n", __FUNCTION__); + return; + } + psta->sta_stats.tx_retry_cnt = GET_8814A_C2H_SPC_STAT_TYPEB_RETRY1(CmdBuf); + rtw_sctx_done(&pstapriv->gotc2h); +} + +s32 c2h_handler_8814a(_adapter *adapter, u8 id, u8 seq, u8 plen, u8 *payload) +{ + s32 ret = _SUCCESS; + + switch (id) { + case C2H_TXBF: + RTW_INFO("[C2H], C2H_TXBF!!\n"); + C2HTxBeamformingHandler_8814(adapter, payload, plen); + break; + case C2H_CCX_TX_RPT: + C2HTxFeedbackHandler_8814(adapter, payload, plen); + break; + case C2H_AP_REQ_TXRPT: + C2HTxRPTHandler_8814(adapter, payload, plen); + break; + case C2H_SPC_STAT: + C2HSPC_STAT_8814(adapter, payload, plen); + break; + default: + ret = _FAIL; + break; + } + + return ret; +} + +#ifdef CONFIG_BT_COEXIST +#if 0 +static void rtl8814_set_FwRsvdPage_cmd(PADAPTER padapter, PRSVDPAGE_LOC rsvdpageloc) +{ + u8 u1H2CRsvdPageParm[H2C_RSVDPAGE_LOC_LEN] = {0}; + + RTW_INFO("8812au/8821/8811 RsvdPageLoc: ProbeRsp=%d PsPoll=%d Null=%d QoSNull=%d BTNull=%d\n", + rsvdpageloc->LocProbeRsp, rsvdpageloc->LocPsPoll, + rsvdpageloc->LocNullData, rsvdpageloc->LocQosNull, + rsvdpageloc->LocBTQosNull); + + SET_H2CCMD_RSVDPAGE_LOC_PROBE_RSP(u1H2CRsvdPageParm, rsvdpageloc->LocProbeRsp); + SET_H2CCMD_RSVDPAGE_LOC_PSPOLL(u1H2CRsvdPageParm, rsvdpageloc->LocPsPoll); + SET_H2CCMD_RSVDPAGE_LOC_NULL_DATA(u1H2CRsvdPageParm, rsvdpageloc->LocNullData); + SET_H2CCMD_RSVDPAGE_LOC_QOS_NULL_DATA(u1H2CRsvdPageParm, rsvdpageloc->LocQosNull); + SET_H2CCMD_RSVDPAGE_LOC_BT_QOS_NULL_DATA(u1H2CRsvdPageParm, rsvdpageloc->LocBTQosNull); + + RTW_DBG_DUMP("u1H2CRsvdPageParm:", u1H2CRsvdPageParm, H2C_RSVDPAGE_LOC_LEN); + FillH2CCmd_8814(padapter, H2C_RSVD_PAGE, H2C_RSVDPAGE_LOC_LEN, u1H2CRsvdPageParm); +} + +#ifdef CONFIG_WOWLAN +static void rtl8814_set_FwAoacRsvdPage_cmd(PADAPTER padapter, PRSVDPAGE_LOC rsvdpageloc) +{ + struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + u8 res = 0, count = 0; +#ifdef CONFIG_WOWLAN + u8 u1H2CAoacRsvdPageParm[H2C_AOAC_RSVDPAGE_LOC_LEN] = {0}; + + RTW_INFO("rtl8814_set_FwAoacRsvdPage_cmd: RWC=%d ArpRsp=%d NbrAdv=%d GtkRsp=%d GtkInfo=%d ProbeReq=%d NetworkList=%d\n", + rsvdpageloc->LocRemoteCtrlInfo, rsvdpageloc->LocArpRsp, + rsvdpageloc->LocNbrAdv, rsvdpageloc->LocGTKRsp, + rsvdpageloc->LocGTKInfo, rsvdpageloc->LocProbeReq, + rsvdpageloc->LocNetList); + +#ifdef CONFIG_PNO_SUPPORT + RTW_INFO("NLO_INFO=%d\n", rsvdpageloc->LocPNOInfo); +#endif + if (check_fwstate(pmlmepriv, _FW_LINKED)) { + SET_H2CCMD_AOAC_RSVDPAGE_LOC_REMOTE_WAKE_CTRL_INFO(u1H2CAoacRsvdPageParm, rsvdpageloc->LocRemoteCtrlInfo); + SET_H2CCMD_AOAC_RSVDPAGE_LOC_ARP_RSP(u1H2CAoacRsvdPageParm, rsvdpageloc->LocArpRsp); + /* SET_H2CCMD_AOAC_RSVDPAGE_LOC_NEIGHBOR_ADV(u1H2CAoacRsvdPageParm, rsvdpageloc->LocNbrAdv); */ + SET_H2CCMD_AOAC_RSVDPAGE_LOC_GTK_RSP(u1H2CAoacRsvdPageParm, rsvdpageloc->LocGTKRsp); + SET_H2CCMD_AOAC_RSVDPAGE_LOC_GTK_INFO(u1H2CAoacRsvdPageParm, rsvdpageloc->LocGTKInfo); +#ifdef CONFIG_GTK_OL + SET_H2CCMD_AOAC_RSVDPAGE_LOC_GTK_EXT_MEM(u1H2CAoacRsvdPageParm, rsvdpageloc->LocGTKEXTMEM); +#endif /* CONFIG_GTK_OL */ + } else { +#ifdef CONFIG_PNO_SUPPORT + if (!pwrpriv->wowlan_in_resume) + SET_H2CCMD_AOAC_RSVDPAGE_LOC_NLO_INFO(u1H2CAoacRsvdPageParm, rsvdpageloc->LocPNOInfo); +#endif + } + + RTW_DBG_DUMP("u1H2CAoacRsvdPageParm:", u1H2CAoacRsvdPageParm, H2C_AOAC_RSVDPAGE_LOC_LEN); + FillH2CCmd_8814(padapter, H2C_AOAC_RSVD_PAGE, H2C_AOAC_RSVDPAGE_LOC_LEN, u1H2CAoacRsvdPageParm); + +#ifdef CONFIG_PNO_SUPPORT + if (!MLME_IS_AP(padapter) && !MLME_IS_MESH(padapter) && + !check_fwstate(pmlmepriv, _FW_LINKED) && + pwrpriv->wowlan_in_resume == _FALSE) { + + res = rtw_read8(padapter, 0x1b8); + while (res == 0 && count < 25) { + RTW_INFO("[%d] FW loc_NLOInfo: %d\n", count, res); + res = rtw_read8(padapter, 0x1b8); + count++; + rtw_msleep_os(2); + } + } +#endif /* CONFIG_PNO_SUPPORT */ +#endif /* CONFIG_WOWLAN */ +} +#endif + +static void SetFwRsvdPagePkt_BTCoex(PADAPTER padapter) +{ + PHAL_DATA_TYPE pHalData; + struct xmit_frame *pcmdframe; + struct pkt_attrib *pattrib; + struct xmit_priv *pxmitpriv; + struct pwrctrl_priv *pwrctl; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + u32 BeaconLength = 0; + u32 NullDataLength = 0, QosNullLength = 0, BTQosNullLength = 0; + u32 ProbeReqLength = 0; + u8 *ReservedPagePacket; + u8 TxDescLen = TXDESC_SIZE, TxDescOffset = TXDESC_OFFSET; + u8 TotalPageNum = 0, CurtPktPageNum = 0, RsvdPageNum = 0; + u16 BufIndex, PageSize = PAGE_SIZE_TX_8814; + u32 TotalPacketLen, MaxRsvdPageBufSize = 0; + RSVDPAGE_LOC RsvdPageLoc; + + pHalData = GET_HAL_DATA(padapter); + + pxmitpriv = &padapter->xmitpriv; + pwrctl = adapter_to_pwrctl(padapter); + + /* RsvdPageNum = BCNQ_PAGE_NUM_8723B + WOWLAN_PAGE_NUM_8723B; */ + + RsvdPageNum = BCNQ_PAGE_NUM_8814; + MaxRsvdPageBufSize = RsvdPageNum * PageSize; + + pcmdframe = rtw_alloc_cmdxmitframe(pxmitpriv); + if (pcmdframe == NULL) { + RTW_INFO("%s: alloc ReservedPagePacket fail!\n", __FUNCTION__); + return; + } + + ReservedPagePacket = pcmdframe->buf_addr; + _rtw_memset(&RsvdPageLoc, 0, sizeof(RSVDPAGE_LOC)); + + /* 3 (1) beacon */ + BufIndex = TxDescOffset; + rtw_hal_construct_beacon(padapter, + &ReservedPagePacket[BufIndex], &BeaconLength); + + /* When we count the first page size, we need to reserve description size for the RSVD */ + /* packet, it will be filled in front of the packet in TXPKTBUF. */ + CurtPktPageNum = (u8)PageNum(TxDescLen + BeaconLength, PageSize); + + /* If we don't add 1 more page, the WOWLAN function has a problem. Baron thinks it's a bug of firmware */ + if (CurtPktPageNum == 1) + CurtPktPageNum += 1; + TotalPageNum += CurtPktPageNum; + + BufIndex += (CurtPktPageNum * PageSize); + + /* Jump to lastest page */ + if (BufIndex < (MaxRsvdPageBufSize - PageSize)) { + BufIndex = TxDescOffset + (MaxRsvdPageBufSize - PageSize); + TotalPageNum = BCNQ_PAGE_NUM_8814 - 1; + + } + + /* 3 (6) BT Qos null data */ + RsvdPageLoc.LocBTQosNull = TotalPageNum; + rtw_hal_construct_NullFunctionData( + padapter, + &ReservedPagePacket[BufIndex], + &BTQosNullLength, + _TRUE, 0, 0, _FALSE); + rtl8814a_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex - TxDescLen], BTQosNullLength, _FALSE, _TRUE, _FALSE); + + /* RTW_INFO("%s(): HW_VAR_SET_TX_CMD: BT QOS NULL DATA %p %d\n", */ + /* __FUNCTION__, &ReservedPagePacket[BufIndex-TxDescLen], (BTQosNullLength+TxDescLen)); */ + + CurtPktPageNum = (u8)PageNum(TxDescLen + BTQosNullLength, PageSize); + + TotalPageNum += CurtPktPageNum; + + TotalPacketLen = BufIndex + BTQosNullLength; + if (TotalPacketLen > MaxRsvdPageBufSize) { + RTW_INFO("%s(): ERROR: The rsvd page size is not enough!!TotalPacketLen %d, MaxRsvdPageBufSize %d\n", __FUNCTION__, + TotalPacketLen, MaxRsvdPageBufSize); + goto error; + } else { + /* update attribute */ + pattrib = &pcmdframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + pattrib->qsel = QSLT_BEACON; + pattrib->pktlen = pattrib->last_txcmdsz = TotalPacketLen - TxDescOffset; +#ifdef CONFIG_PCI_HCI + dump_mgntframe(padapter, pcmdframe); +#else + dump_mgntframe_and_wait(padapter, pcmdframe, 100); +#endif + } + + RTW_INFO("%s: Set RSVD page location to Fw ,TotalPacketLen(%d), TotalPageNum(%d)\n", __FUNCTION__, TotalPacketLen, TotalPageNum); + if (check_fwstate(pmlmepriv, _FW_LINKED)) { + rtl8814_set_FwRsvdPage_cmd(padapter, &RsvdPageLoc); +#ifdef CONFIG_WOWLAN + rtl8814_set_FwAoacRsvdPage_cmd(padapter, &RsvdPageLoc); +#endif + } + + return; + +error: + + rtw_free_xmitframe(pxmitpriv, pcmdframe); +} +#endif + +void rtl8814a_download_BTCoex_AP_mode_rsvd_page(PADAPTER padapter) +{ + rtl8814_download_rsvd_page(padapter, RT_MEDIA_CONNECT); +} + +#endif /* CONFIG_BT_COEXIST */ diff --git a/hal/rtl8814a/rtl8814a_dm.c b/hal/rtl8814a/rtl8814a_dm.c new file mode 100644 index 0000000..e802792 --- /dev/null +++ b/hal/rtl8814a/rtl8814a_dm.c @@ -0,0 +1,300 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +/* ************************************************************ + * Description: + * + * This file is for 92CE/92CU dynamic mechanism only + * + * + * ************************************************************ */ +#define _RTL8814A_DM_C_ + +/* ************************************************************ + * include files + * ************************************************************ + * #include */ +#include + +/* ************************************************************ + * Global var + * ************************************************************ */ +#ifdef CONFIG_SUPPORT_HW_WPS_PBC +static void dm_CheckPbcGPIO(_adapter *padapter) +{ + u8 tmp1byte; + u8 bPbcPressed = _FALSE; + + if (!padapter->registrypriv.hw_wps_pbc) + return; +#ifdef CONFIG_BT_COEXIST + if (hal_btcoex_IsBtExist(padapter)) + return; +#endif /* CONFIG_BT_COEXIST */ + +#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) + + tmp1byte = rtw_read8(padapter, REG_GPIO_EXT_CTRL_8814A); + /* RTW_INFO("CheckPbcGPIO - %x\n", tmp1byte); */ + + if (tmp1byte == 0xff) + return ; + else if (tmp1byte & BIT3) { + /* Here we only set bPbcPressed to TRUE. After trigger PBC, the variable will be set to FALSE */ + RTW_INFO("CheckPbcGPIO - PBC is pressed\n"); + bPbcPressed = _TRUE; + } + +#endif + + if (_TRUE == bPbcPressed) { + /* Here we only set bPbcPressed to true */ + /* After trigger PBC, the variable will be set to false */ + RTW_INFO("CheckPbcGPIO - PBC is pressed\n"); + + rtw_request_wps_pbc_event(padapter); + } +} +#endif /* #ifdef CONFIG_SUPPORT_HW_WPS_PBC */ + +#ifdef CONFIG_PCI_HCI +/* + * Description: + * Perform interrupt migration dynamically to reduce CPU utilization. + * + * Assumption: + * 1. Do not enable migration under WIFI test. + * + * Created by Roger, 2010.03.05. + * */ +void +dm_InterruptMigration( + PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); + BOOLEAN bCurrentIntMt, bCurrentACIntDisable; + BOOLEAN IntMtToSet = _FALSE; + BOOLEAN ACIntToSet = _FALSE; + + + /* Retrieve current interrupt migration and Tx four ACs IMR settings first. */ + bCurrentIntMt = pHalData->bInterruptMigration; + bCurrentACIntDisable = pHalData->bDisableTxInt; + + /* */ + /* Currently we use busy traffic for reference instead of RxIntOK counts to prevent non-linear Rx statistics */ + /* when interrupt migration is set before. 2010.03.05. */ + /* */ + if (!Adapter->registrypriv.wifi_spec && + (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) && + pmlmepriv->LinkDetectInfo.bHigherBusyTraffic) { + IntMtToSet = _TRUE; + + /* To check whether we should disable Tx interrupt or not. */ + if (pmlmepriv->LinkDetectInfo.bHigherBusyRxTraffic) + ACIntToSet = _TRUE; + } + + /* Update current settings. */ + if (bCurrentIntMt != IntMtToSet) { + RTW_INFO("%s(): Update interrrupt migration(%d)\n", __FUNCTION__, IntMtToSet); + if (IntMtToSet) { + /* */ + /* Set interrrupt migration timer and corresponging Tx/Rx counter. */ + /* timer 25ns*0xfa0=100us for 0xf packets. */ + /* 2010.03.05. */ + /* */ + rtw_write32(Adapter, REG_INT_MIG_8814A, 0xff000fa0);/* 0x306:Rx, 0x307:Tx */ + pHalData->bInterruptMigration = IntMtToSet; + } else { + /* Reset all interrupt migration settings. */ + rtw_write32(Adapter, REG_INT_MIG_8814A, 0); + pHalData->bInterruptMigration = IntMtToSet; + } + } + +#if 0 + if (bCurrentACIntDisable != ACIntToSet) { + RTW_INFO("%s(): Update AC interrrupt(%d)\n", __FUNCTION__, ACIntToSet); + if (ACIntToSet) { /* Disable four ACs interrupts. */ + /* */ + /* Disable VO, VI, BE and BK four AC interrupts to gain more efficient CPU utilization. */ + /* When extremely highly Rx OK occurs, we will disable Tx interrupts. */ + /* 2010.03.05. */ + /* */ + UpdateInterruptMask8192CE(Adapter, 0, RT_AC_INT_MASKS); + pHalData->bDisableTxInt = ACIntToSet; + } else { /* Enable four ACs interrupts. */ + UpdateInterruptMask8192CE(Adapter, RT_AC_INT_MASKS, 0); + pHalData->bDisableTxInt = ACIntToSet; + } + } +#endif + +} + +#endif /* CONFIG_PCI_HCI */ + +/* + * Initialize GPIO setting registers + * */ +#ifdef CONFIG_USB_HCI +static void +dm_InitGPIOSetting( + PADAPTER Adapter +) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + + u8 tmp1byte; + + tmp1byte = rtw_read8(Adapter, REG_GPIO_MUXCFG); + tmp1byte &= (GPIOSEL_GPIO | ~GPIOSEL_ENBT); + + rtw_write8(Adapter, REG_GPIO_MUXCFG, tmp1byte); +} +#endif +/* ************************************************************ + * functions + * ************************************************************ */ +static void Init_ODM_ComInfo_8814(PADAPTER Adapter) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + struct dm_struct *pDM_Odm = &(pHalData->odmpriv); + u32 SupportAbility = 0; + + u8 cut_ver, fab_ver; + + Init_ODM_ComInfo(Adapter); + + fab_ver = ODM_TSMC; + if (IS_A_CUT(pHalData->version_id)) + cut_ver = ODM_CUT_A; + else if (IS_B_CUT(pHalData->version_id)) + cut_ver = ODM_CUT_B; + else if (IS_C_CUT(pHalData->version_id)) + cut_ver = ODM_CUT_C; + else if (IS_D_CUT(pHalData->version_id)) + cut_ver = ODM_CUT_D; + else if (IS_E_CUT(pHalData->version_id)) + cut_ver = ODM_CUT_E; + else + cut_ver = ODM_CUT_A; + + odm_cmn_info_init(pDM_Odm, ODM_CMNINFO_FAB_VER, fab_ver); + odm_cmn_info_init(pDM_Odm, ODM_CMNINFO_CUT_VER, cut_ver); + +} + +void +rtl8814_InitHalDm( + PADAPTER Adapter +) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + struct dm_struct *pDM_Odm = &(pHalData->odmpriv); + +#ifdef CONFIG_USB_HCI + dm_InitGPIOSetting(Adapter); +#endif /* CONFIG_USB_HCI */ + rtw_phydm_init(Adapter); + /* Adapter->fix_rate = 0xFF; */ +} + + +void +rtl8814_HalDmWatchDog( + PADAPTER Adapter +) +{ + BOOLEAN bFwCurrentInPSMode = _FALSE; + u8 bFwPSAwake = _TRUE; + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + struct dm_struct *pDM_Odm = &(pHalData->odmpriv); + struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(Adapter); + u8 in_lps = _FALSE; + + if (!rtw_is_hw_init_completed(Adapter)) + goto skip_dm; + +#ifdef CONFIG_LPS + bFwCurrentInPSMode = pwrpriv->bFwCurrentInPSMode; + rtw_hal_get_hwreg(Adapter, HW_VAR_FWLPS_RF_ON, &bFwPSAwake); +#endif + +#ifdef CONFIG_P2P_PS + /* Fw is under p2p powersaving mode, driver should stop dynamic mechanism. */ + /* modifed by thomas. 2011.06.11. */ + if (Adapter->wdinfo.p2p_ps_mode) + bFwPSAwake = _FALSE; +#endif /* CONFIG_P2P_PS */ + + if ((rtw_is_hw_init_completed(Adapter)) + && ((!bFwCurrentInPSMode) && bFwPSAwake)) { + + rtw_hal_check_rxfifo_full(Adapter); + /* */ + /* Dynamically switch RTS/CTS protection. */ + /* */ + +#ifdef CONFIG_PCI_HCI + /* 20100630 Joseph: Disable Interrupt Migration mechanism temporarily because it degrades Rx throughput. */ + /* Tx Migration settings. */ + /* dm_InterruptMigration(Adapter); */ + + /* if(Adapter->HalFunc.TxCheckStuckHandler(Adapter)) */ + /* PlatformScheduleWorkItem(&(GET_HAL_DATA(Adapter)->HalResetWorkItem)); */ +#endif + + } + +#ifdef CONFIG_DISABLE_ODM + goto skip_dm; +#endif +#ifdef CONFIG_LPS + if (pwrpriv->bLeisurePs && bFwCurrentInPSMode && pwrpriv->pwr_mode != PS_MODE_ACTIVE) + in_lps = _TRUE; +#endif + + rtw_phydm_watchdog(Adapter, in_lps); + +skip_dm: + +#ifdef CONFIG_SUPPORT_HW_WPS_PBC + /* Check GPIO to determine current Pbc status. */ + dm_CheckPbcGPIO(Adapter); +#endif + + return; +} + +void rtl8814_init_dm_priv(PADAPTER Adapter) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + struct dm_struct *podmpriv = &pHalData->odmpriv; + + Init_ODM_ComInfo_8814(Adapter); + odm_init_all_timers(podmpriv); + pHalData->CurrentTxPwrIdx = 20; +} + +void rtl8814_deinit_dm_priv(PADAPTER Adapter) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + struct dm_struct *podmpriv = &pHalData->odmpriv; + /* _rtw_spinlock_free(&pHalData->odm_stainfo_lock); */ + odm_cancel_all_timers(podmpriv); +} diff --git a/hal/rtl8814a/rtl8814a_hal_init.c b/hal/rtl8814a/rtl8814a_hal_init.c new file mode 100644 index 0000000..25dd878 --- /dev/null +++ b/hal/rtl8814a/rtl8814a_hal_init.c @@ -0,0 +1,4496 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#define _RTL8814A_HAL_INIT_C_ + +/* #include */ +#include +#include "hal8814a_fw.h" +/* ------------------------------------------------------------------------- + * + * LLT R/W/Init function + * + * ------------------------------------------------------------------------- */ +void +Hal_InitEfuseVars_8814A( + PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + PEFUSE_HAL pEfuseHal = &(pHalData->EfuseHal); + u16 *ptr; + +#define INIT_EFUSE(var, value) ptr = (u16 *)&var; *ptr = value + + RTW_INFO("====> %s\n", __func__); + /* 2 Common */ + INIT_EFUSE(pEfuseHal->WordUnit , EFUSE_MAX_WORD_UNIT); + RTW_INFO("====>pEfuseHal->WordUnit %d\n", pEfuseHal->WordUnit); + INIT_EFUSE(pEfuseHal->BankSize , 512); + INIT_EFUSE(pEfuseHal->OOBProtectBytes, EFUSE_OOB_PROTECT_BYTES); + RTW_INFO("====>pEfuseHal->OOBProtectBytes %d\n", pEfuseHal->OOBProtectBytes); + INIT_EFUSE(pEfuseHal->ProtectBytes , EFUSE_PROTECT_BYTES_BANK_8814A); + RTW_INFO("====>pEfuseHal->ProtectBytes %d\n", pEfuseHal->ProtectBytes); + INIT_EFUSE(pEfuseHal->BankAvailBytes , (pEfuseHal->BankSize - pEfuseHal->OOBProtectBytes)); + INIT_EFUSE(pEfuseHal->TotalBankNum , EFUSE_MAX_BANK_8814A); + INIT_EFUSE(pEfuseHal->HeaderRetry , 0); + INIT_EFUSE(pEfuseHal->DataRetry , 0); + + /* 2 Wi-Fi */ + INIT_EFUSE(pEfuseHal->MaxSecNum_WiFi , EFUSE_MAX_SECTION_8814A); + RTW_INFO("====>pEfuseHal->MaxSecNum_WiFi %d\n", pEfuseHal->MaxSecNum_WiFi); + INIT_EFUSE(pEfuseHal->PhysicalLen_WiFi , EFUSE_REAL_CONTENT_LEN_8814A); + RTW_INFO("====>pEfuseHal->PhysicalLen_WiFi %d\n", pEfuseHal->PhysicalLen_WiFi); + INIT_EFUSE(pEfuseHal->LogicalLen_WiFi , EFUSE_MAP_LEN_8814A); + RTW_INFO("====>pEfuseHal->LogicalLen_WiFi %d\n", pEfuseHal->LogicalLen_WiFi); + INIT_EFUSE(pEfuseHal->BankNum_WiFi , pEfuseHal->PhysicalLen_WiFi / pEfuseHal->BankSize); + INIT_EFUSE(pEfuseHal->TotalAvailBytes_WiFi, (pEfuseHal->PhysicalLen_WiFi - (pEfuseHal->TotalBankNum * pEfuseHal->OOBProtectBytes))); + + /* 2 BT */ + INIT_EFUSE(pEfuseHal->MaxSecNum_BT , 0); + INIT_EFUSE(pEfuseHal->PhysicalLen_BT , 0); + INIT_EFUSE(pEfuseHal->LogicalLen_BT , 0); + INIT_EFUSE(pEfuseHal->BankNum_BT , 0); + INIT_EFUSE(pEfuseHal->TotalAvailBytes_BT, 0); + + RTW_INFO("%s <====\n", __func__); +} + + +s32 InitLLTTable8814A( + PADAPTER Adapter +) +{ + /* Auto-init LLT table ( Set REG:0x208[BIT0] ) */ + /* Write 1 to enable HW init LLT, driver need polling to 0 meaning init success */ + u8 tmp1byte = 0, testcnt = 0; + s32 Status = _SUCCESS; + + tmp1byte = rtw_read8(Adapter, REG_AUTO_LLT_8814A); + rtw_write8(Adapter, REG_AUTO_LLT_8814A, tmp1byte | BIT0); + while (tmp1byte & BIT0) { + tmp1byte = rtw_read8(Adapter, REG_AUTO_LLT_8814A); + rtw_mdelay_os(100); + testcnt++; + if (testcnt > 100) { + Status = _FAIL; + break; + } + } + return Status; +} + +#ifdef CONFIG_WOWLAN +void hal_DetectWoWMode(PADAPTER pAdapter) +{ + adapter_to_pwrctl(pAdapter)->bSupportRemoteWakeup = _TRUE; +} +#endif + +void +_FWDownloadEnable_8814A( + PADAPTER Adapter, + BOOLEAN enable +) +{ + u8 tmp; + u16 u2Tmp = 0; + + if (enable) { + /* MCU firmware download enable. */ + u2Tmp = rtw_read16(Adapter, REG_8051FW_CTRL_8814A); + u2Tmp &= 0x3000; + u2Tmp &= (~BIT12); + u2Tmp |= BIT13; + u2Tmp |= BIT0; + rtw_write16(Adapter, REG_8051FW_CTRL_8814A, u2Tmp); + + /* Clear Rom DL enable */ + /* tmp = rtw_read8(Adapter, REG_8051FW_CTRL_8814A+2); */ /* modify by gw 20130826(advice by hw) */ + /* rtw_write8(Adapter, REG_8051FW_CTRL_8814A+2, tmp&0xf7); */ /* clear bit3 */ + } else { + /* MCU firmware download enable. */ + tmp = rtw_read8(Adapter, REG_8051FW_CTRL_8814A); + rtw_write8(Adapter, REG_8051FW_CTRL_8814A, tmp & 0xfe); + } +} + +#define MAX_REG_BOLCK_SIZE 196 + +void +_BlockWrite_8814A( + PADAPTER Adapter, + void *buffer, + u32 buffSize +) +{ + u32 blockSize_p1 = 4; /* (Default) Phase #1 : PCI muse use 4-byte write to download FW */ + u32 blockSize_p2 = 8; /* Phase #2 : Use 8-byte, if Phase#1 use big size to write FW. */ + u32 blockSize_p3 = 1; /* Phase #3 : Use 1-byte, the remnant of FW image. */ + u32 blockCount_p1 = 0, blockCount_p2 = 0, blockCount_p3 = 0; + u32 remainSize_p1 = 0, remainSize_p2 = 0; + u8 *bufferPtr = (u8 *)buffer; + u32 i = 0, offset = 0; + +#ifdef CONFIG_USB_HCI + blockSize_p1 = MAX_REG_BOLCK_SIZE; /* Use 196-byte write to download FW */ + /* Small block size will increase USB init speed. But prevent FW download fail */ + /* use 4-Byte instead of 196-Byte to write FW. */ +#endif + + /* 3 Phase #1 */ + blockCount_p1 = buffSize / blockSize_p1; + remainSize_p1 = buffSize % blockSize_p1; + + + + for (i = 0 ; i < blockCount_p1 ; i++) { +#ifdef CONFIG_USB_HCI + rtw_writeN(Adapter, (FW_START_ADDRESS + i * blockSize_p1), blockSize_p1, (bufferPtr + i * blockSize_p1)); +#else + rtw_write32(Adapter, (FW_START_ADDRESS + i * blockSize_p1), *((u32 *)(bufferPtr + i * blockSize_p1))); +#endif + } + + /* 3 Phase #2 */ + if (remainSize_p1) { + offset = blockCount_p1 * blockSize_p1; + + blockCount_p2 = remainSize_p1 / blockSize_p2; + remainSize_p2 = remainSize_p1 % blockSize_p2; + + + +#ifdef CONFIG_USB_HCI + for (i = 0 ; i < blockCount_p2 ; i++) + rtw_writeN(Adapter, (FW_START_ADDRESS + offset + i * blockSize_p2), blockSize_p2, (bufferPtr + offset + i * blockSize_p2)); +#endif + } + + /* 3 Phase #3 */ + if (remainSize_p2) { + offset = (blockCount_p1 * blockSize_p1) + (blockCount_p2 * blockSize_p2); + + blockCount_p3 = remainSize_p2 / blockSize_p3; + + + for (i = 0 ; i < blockCount_p3 ; i++) + rtw_write8(Adapter, (FW_START_ADDRESS + offset + i), *(bufferPtr + offset + i)); + } +} + +void +_PageWrite_8814A( + PADAPTER Adapter, + u32 page, + void *buffer, + u32 size +) +{ + u8 value8; + u8 u8Page = (u8)(page & 0x07) ; + + value8 = (rtw_read8(Adapter, REG_8051FW_CTRL_8814A + 2) & 0xF8) | u8Page ; + rtw_write8(Adapter, REG_8051FW_CTRL_8814A + 2, value8); + + _BlockWrite_8814A(Adapter, buffer, size); +} + +void +_FillDummy_8814A( + u8 *pFwBuf, + u32 *pFwLen +) +{ + u32 FwLen = *pFwLen; + u8 remain = (u8)(FwLen % 4); + remain = (remain == 0) ? 0 : (4 - remain); + + while (remain > 0) { + pFwBuf[FwLen] = 0; + FwLen++; + remain--; + } + + *pFwLen = FwLen; +} + +void +_WriteFW_8814A( + PADAPTER Adapter, + void *buffer, + u32 size +) +{ + u32 pageNums, remainSize ; + u32 page, offset; + u8 *bufferPtr = (u8 *)buffer; + +#ifdef CONFIG_PCI_HCI + /* 20100120 Joseph: Add for 88CE normal chip. */ + /* Fill in zero to make firmware image to dword alignment. */ + _FillDummy_8814A(bufferPtr, &size); +#endif /* CONFIG_PCI_HCI */ + + pageNums = size / MAX_PAGE_SIZE ; + + /* RT_ASSERT((pageNums <= 8), ("Page numbers should not greater then 8\n")); */ + + remainSize = size % MAX_PAGE_SIZE; + + for (page = 0; page < pageNums; page++) { + offset = page * MAX_PAGE_SIZE; + _PageWrite_8814A(Adapter, page, (bufferPtr + offset), MAX_PAGE_SIZE); + rtw_udelay_os(2); + } + if (remainSize) { + offset = pageNums * MAX_PAGE_SIZE; + page = pageNums; + _PageWrite_8814A(Adapter, page, (bufferPtr + offset), remainSize); + } +} + +void +_3081Disable8814A( + PADAPTER Adapter +) +{ + u8 u1bTmp; + u1bTmp = rtw_read8(Adapter, REG_SYS_FUNC_EN_8814A + 1); + rtw_write8(Adapter, REG_SYS_FUNC_EN_8814A + 1, u1bTmp & (~BIT2)); + + +} + +void +_3081Enable8814A( + PADAPTER Adapter +) +{ + u8 u1bTmp; + u1bTmp = rtw_read8(Adapter, REG_SYS_FUNC_EN_8814A + 1); + rtw_write8(Adapter, REG_SYS_FUNC_EN_8814A + 1, u1bTmp | BIT2); +} + + +/* add by ylb 20130814 for 3081 download FW */ +static +BOOLEAN +IDDMADownLoadFW_3081( + PADAPTER Adapter, + u32 source, + u32 dest, + u32 length, + BOOLEAN fs, + BOOLEAN ls +) +{ + u32 ch0ctrl = (DDMA_CHKSUM_EN | DDMA_CH_OWN); + u32 cnt; + u8 tmp; + /* check if ddma ch0 is idle */ + cnt = 20; + while (rtw_read32(Adapter, REG_DDMA_CH0CTRL) & DDMA_CH_OWN) { + rtw_udelay_os(1000); + cnt--; + if (cnt == 0) { + RTW_INFO("IDDMADownLoadFW_3081, line%d: CNT fail\n", __LINE__); + return _FALSE; + } + } + ch0ctrl |= length & DDMA_LEN_MASK; + + /* check if chksum continuous */ + if (fs == _FALSE) + ch0ctrl |= DDMA_CH_CHKSUM_CNT; + rtw_write32(Adapter, REG_DDMA_CH0SA, source); + rtw_write32(Adapter, REG_DDMA_CH0DA, dest); + rtw_write32(Adapter, REG_DDMA_CH0CTRL, ch0ctrl); + + cnt = 20; + while (rtw_read32(Adapter, REG_DDMA_CH0CTRL) & DDMA_CH_OWN) { + rtw_udelay_os(1000); + cnt--; + if (cnt == 0) { + RTW_INFO("IDDMADownLoadFW_3081, line%d: CNT fail\n", __LINE__); + return _FALSE; + } + } + + /* check checksum */ + if (ls == _TRUE) { + tmp = rtw_read8(Adapter, REG_8051FW_CTRL_8814A); + if (0 == (rtw_read32(Adapter, REG_DDMA_CH0CTRL) & DDMA_CHKSUM_FAIL)) { + /* chksum ok */ + RTW_INFO("Check sum OK\n"); + /* imem */ + if (dest < OCPBASE_DMEM_3081) { + tmp |= IMEM_DL_RDY; + rtw_write8(Adapter, REG_8051FW_CTRL_8814A, tmp | IMEM_CHKSUM_OK); + RTW_INFO("imem check sum tmp %d\n", tmp); + } + /* dmem */ + else { + tmp |= DMEM_DL_RDY; + rtw_write8(Adapter, REG_8051FW_CTRL_8814A, tmp | DMEM_CHKSUM_OK); + RTW_INFO("dmem check sum tmp %d\n", tmp); + } + } else { + /* chksum fail */ + RTW_INFO("Check sum fail\n"); + ch0ctrl = rtw_read32(Adapter, REG_DDMA_CH0CTRL); + rtw_write32(Adapter, REG_DDMA_CH0CTRL, ch0ctrl | DDMA_RST_CHKSUM_STS); + + /* imem */ + if (dest < OCPBASE_DMEM_3081) { + tmp &= (~IMEM_DL_RDY); + rtw_write8(Adapter, REG_8051FW_CTRL_8814A, tmp & ~IMEM_CHKSUM_OK); + } + /* dmem */ + else { + tmp &= (~DMEM_DL_RDY); + rtw_write8(Adapter, REG_8051FW_CTRL_8814A, tmp & ~DMEM_CHKSUM_OK); + } + return _FALSE; + } + } + return _TRUE; +} + + +/* add by ylb 20130814 for 3081 download FW */ +static +BOOLEAN +WaitDownLoadRSVDPageOK_3081( + PADAPTER Adapter +) +{ + u8 BcnValidReg = 0, TxBcReg = 0; + u8 count = 0, DLBcnCount = 0; + BOOLEAN bRetValue = _FALSE; + +#if defined(CONFIG_PCI_HCI) + /* Polling Beacon Queue to send Beacon */ + TxBcReg = rtw_read8(Adapter, REG_MGQ_TXBD_NUM_8814A + 3); + count = 0; + while ((count < 20) && (TxBcReg & BIT4)) { + count++; + rtw_udelay_os(10); + TxBcReg = rtw_read8(Adapter, REG_MGQ_TXBD_NUM_8814A + 3); + } + + rtw_write8(Adapter, REG_MGQ_TXBD_NUM_8814A + 3, TxBcReg | BIT4); +#endif /* #if defined(CONFIG_PCI_HCI) */ + /* check rsvd page download OK. */ + BcnValidReg = rtw_read8(Adapter, REG_FIFOPAGE_CTRL_2_8814A + 1); + count = 0; + while (!(BcnValidReg & BIT7) && count < 20) { + count++; + rtw_udelay_os(50); + BcnValidReg = rtw_read8(Adapter, REG_FIFOPAGE_CTRL_2_8814A + 1); + } + + /* Set 1 to Clear BIT7 by SW */ + if (BcnValidReg & BIT7) { + rtw_write8(Adapter, REG_FIFOPAGE_CTRL_2_8814A + 1, (BcnValidReg | BIT7)); + bRetValue = _TRUE; + } else { + RTW_INFO("WaitDownLoadRSVDPageOK_3081(): Download RSVD page failed!\n"); + bRetValue = _FALSE; + } + + return bRetValue; +} + + +void +SetDownLoadFwRsvdPagePkt_8814A( + PADAPTER Adapter, + void *buffer, + u32 len +) +{ + PHAL_DATA_TYPE pHalData; + struct xmit_frame *pcmdframe; + struct xmit_priv *pxmitpriv; + struct pkt_attrib *pattrib; + /* The desc lengh in Tx packet buffer of 8814A is 40 bytes. */ + u16 BufIndex = 0, TxDescOffset = TXDESC_OFFSET; + u32 TotalPacketLen = len; + BOOLEAN bDLOK = FALSE; + u8 *ReservedPagePacket; + + pHalData = GET_HAL_DATA(Adapter); + pxmitpriv = &Adapter->xmitpriv; + +#ifdef CONFIG_BCN_ICF + pcmdframe = rtw_alloc_cmdxmitframe(pxmitpriv); +#else + pcmdframe = alloc_mgtxmitframe(pxmitpriv); +#endif + if (pcmdframe == NULL) + return; + + ReservedPagePacket = pcmdframe->buf_addr; + + BufIndex = TxDescOffset; + + TotalPacketLen = len + BufIndex; + + _rtw_memcpy(&ReservedPagePacket[BufIndex], buffer, len); + /* RTW_INFO("SetFwRsvdPagePkt_8814A(): HW_VAR_SET_TX_CMD: BCN, %p, %d\n", &ReservedPagePacket[BufIndex], len); */ + + /* RTW_INFO("SetFwRsvdPagePkt(): TotalPacketLen=%d\n", TotalPacketLen); */ + + /* update attribute */ + pattrib = &pcmdframe->attrib; + update_mgntframe_attrib(Adapter, pattrib); + pattrib->qsel = QSLT_BEACON; + pattrib->pktlen = pattrib->last_txcmdsz = TotalPacketLen - TxDescOffset; + + dump_mgntframe(Adapter, pcmdframe); + + /* ReturnGenTempBuffer(pAdapter, pGenBufReservedPagePacket); */ +} + + +void +HalROMDownloadFWRSVDPage8814A( + PADAPTER Adapter, + void *buffer, + u32 Len +) +{ + u8 u1bTmp = 0, tmpReg422 = 0; + u8 BcnValidReg = 0, TxBcReg = 0; + BOOLEAN bSendBeacon = _FALSE, bDownLoadRSVDPageOK = _FALSE; + u8 *pbuffer = buffer; + + BOOLEAN fs = _TRUE, ls = _FALSE; + u8 FWHeaderSize = 64, PageSize = 128 ; + u16 RsvdPageNum = 0; + u32 dmem_pkt_size = 0, iram_pkt_size = 0 , MaxRsvdPageBufSize = 0; + u32 last_block_size = 0, filesize_ram_block = 0, pkt_offset = 0; + u32 txpktbuf_bndy = 0; + u32 BeaconHeaderInTxPacketBuf = 0, MEMOffsetInTxPacketBuf = 0; + u8 bcn_ctrl = rtw_read8(Adapter, REG_BCN_CTRL); + + /* Set REG_CR bit 8. DMA beacon by SW. */ + u1bTmp = rtw_read8(Adapter, REG_CR_8814A + 1); + rtw_write8(Adapter, REG_CR_8814A + 1, (u1bTmp | BIT0)); + /*RTW_INFO("%s-%d: enable SW BCN, REG_CR=0x%x\n", __func__, __LINE__, rtw_read32(Adapter, REG_CR));*/ + + /* Disable Hw protection for a time which revserd for Hw sending beacon. */ + /* Fix download reserved page packet fail that access collision with the protection time. */ + /* 2010.05.11. Added by tynli. 0x550[4]=1, 0x550[3]=0 */ + rtw_write8(Adapter, REG_BCN_CTRL, (bcn_ctrl & (~EN_BCN_FUNCTION)) | DIS_TSF_UDT); + + /* Set FWHW_TXQ_CTRL 0x422[6]=0 to tell Hw the packet is not a real beacon frame. 0x422[6]=0 */ + tmpReg422 = rtw_read8(Adapter, REG_FWHW_TXQ_CTRL_8814A + 2); + rtw_write8(Adapter, REG_FWHW_TXQ_CTRL_8814A + 2, tmpReg422 & (~BIT6)); + + if (tmpReg422 & BIT6) { + RTW_INFO("HalROMDownloadFWRSVDPage8814A(): There is an Adapter is sending beacon.\n"); + bSendBeacon = _TRUE; + } + + /* Set The head page of packet of Bcnq */ + rtw_hal_get_def_var(Adapter, HAL_DEF_TX_PAGE_BOUNDARY, (u16 *)&txpktbuf_bndy); + rtw_write16(Adapter, REG_FIFOPAGE_CTRL_2_8814A, txpktbuf_bndy); + + /* RTW_INFO("HalROMDownloadFWRSVDPage8814A: txpktbuf_bndy=%d\n", txpktbuf_bndy); */ + + /* Clear beacon valid check bit. 0x205[7]=1 */ + BcnValidReg = rtw_read8(Adapter, REG_FIFOPAGE_CTRL_2_8814A + 1); + rtw_write8(Adapter, REG_FIFOPAGE_CTRL_2_8814A + 1, (BcnValidReg | BIT7)); + + /* Return Beacon TCB. */ + /* ReturnBeaconQueueTcb_8814A(Adapter); */ + + dmem_pkt_size = (u32)GET_FIRMWARE_HDR_TOTAL_DMEM_SZ_3081(pbuffer); + iram_pkt_size = (u32)GET_FIRMWARE_HDR_IRAM_SZ_3081(pbuffer); + dmem_pkt_size += (u32)FW_CHKSUM_DUMMY_SZ; + iram_pkt_size += (u32)FW_CHKSUM_DUMMY_SZ; + + if (dmem_pkt_size + iram_pkt_size + FWHeaderSize != Len) { + RTW_INFO("ERROR: Fw Hdr size do not match the real fw size!!\n"); + RTW_INFO("dmem_pkt_size = %d, iram_pkt_size = %d,FWHeaderSize = %d, Len = %d!!\n", dmem_pkt_size, iram_pkt_size, FWHeaderSize, Len); + return; + } + RTW_INFO("dmem_pkt_size = %d, iram_pkt_size = %d,FWHeaderSize = %d, Len = %d!!\n", dmem_pkt_size, iram_pkt_size, FWHeaderSize, Len); + + /* download rsvd page. */ + /* RsvdPageNum = GetTxBufferRsvdPageNum8814A(Adapter, _FALSE); */ +#ifdef CONFIG_BCN_IC + /* TODO: check tx buffer and DMA size */ + MaxRsvdPageBufSize = MAX_CMDBUF_SZ - TXDESC_OFFSET; +#else + MaxRsvdPageBufSize = MAX_XMIT_EXTBUF_SZ - TXDESC_OFFSET;/* RsvdPageNum*PageSize - 40 -16 modified for usb; */ /* TX_INFO_SIZE_8814AE; */ +#endif + RTW_INFO("MaxRsvdPageBufSize %d, Total len %d\n", MaxRsvdPageBufSize, Len); + + BeaconHeaderInTxPacketBuf = txpktbuf_bndy * PageSize; + MEMOffsetInTxPacketBuf = OCPBASE_TXBUF_3081 + BeaconHeaderInTxPacketBuf + 40;/* TX_INFO_SIZE_8814AE; */ + /* download DMEM */ + while (dmem_pkt_size > 0) { + if (dmem_pkt_size > MaxRsvdPageBufSize) { + filesize_ram_block = MaxRsvdPageBufSize; + ls = _FALSE; + + last_block_size = dmem_pkt_size - MaxRsvdPageBufSize; + if (last_block_size < MaxRsvdPageBufSize) { + if (((last_block_size + 40) & 0x3F) == 0) /* Multiples of 64 */ + filesize_ram_block -= 4; + } + } else { + filesize_ram_block = dmem_pkt_size; + ls = _TRUE; + } + fs = (pkt_offset == 0 ? _TRUE : _FALSE); + /* Return Beacon TCB. */ + /* ReturnBeaconQueueTcb_8814A(Adapter); */ + /* RTW_INFO("%d packet offset %d dmem_pkt_size %d\n", __LINE__,pkt_offset, dmem_pkt_size); */ + SetDownLoadFwRsvdPagePkt_8814A(Adapter, pbuffer + FWHeaderSize + pkt_offset, filesize_ram_block); + bDownLoadRSVDPageOK = WaitDownLoadRSVDPageOK_3081(Adapter); + if (!bDownLoadRSVDPageOK) { + RTW_INFO("ERROR: DMEM bDownLoadRSVDPageOK is false!!\n"); + return; + } + + IDDMADownLoadFW_3081(Adapter, MEMOffsetInTxPacketBuf, OCPBASE_DMEM_3081 + pkt_offset, filesize_ram_block, fs, ls); + dmem_pkt_size -= filesize_ram_block; + pkt_offset += filesize_ram_block; + } + + /* download IRAM */ + pkt_offset = 0; + while (iram_pkt_size > 0) { + if (iram_pkt_size > MaxRsvdPageBufSize) { + filesize_ram_block = MaxRsvdPageBufSize; + ls = _FALSE; + + last_block_size = iram_pkt_size - MaxRsvdPageBufSize; + if (last_block_size < MaxRsvdPageBufSize) { + if (((last_block_size + 40) & 0x3F) == 0) /* Multiples of 64 */ + filesize_ram_block -= 4; + } + } else { + filesize_ram_block = iram_pkt_size; + ls = _TRUE; + } + + fs = (pkt_offset == 0 ? _TRUE : _FALSE); + /* Return Beacon TCB. */ + /* ReturnBeaconQueueTcb_8814A(Adapter); */ + /* RTW_INFO("%d packet offset %d iram_pkt_size %d\n", __LINE__,pkt_offset, iram_pkt_size); */ + SetDownLoadFwRsvdPagePkt_8814A(Adapter, pbuffer + Len - iram_pkt_size, filesize_ram_block); + + bDownLoadRSVDPageOK = WaitDownLoadRSVDPageOK_3081(Adapter); + if (!bDownLoadRSVDPageOK) { + RTW_INFO("ERROR: IRAM bDownLoadRSVDPageOK is false!!\n"); + return; + } + + IDDMADownLoadFW_3081(Adapter, MEMOffsetInTxPacketBuf, OCPBASE_IMEM_3081 + pkt_offset, filesize_ram_block, fs, ls); + + iram_pkt_size -= filesize_ram_block; + pkt_offset += filesize_ram_block; + } + + /* restore bcn_ctrl */ + rtw_write8(Adapter, REG_BCN_CTRL, bcn_ctrl); + + /* To make sure that if there exists an adapter which would like to send beacon. */ + /* If exists, the origianl value of 0x422[6] will be 1, we should check this to */ + /* prevent from setting 0x422[6] to 0 after download reserved page, or it will cause */ + /* the beacon cannot be sent by HW. */ + /* 2010.06.23. Added by tynli. */ + if (bSendBeacon) + rtw_write8(Adapter, REG_FWHW_TXQ_CTRL_8814A + 2, tmpReg422); + + /* Do not enable HW DMA BCN or it will cause Pcie interface hang by timing issue. 2011.11.24. by tynli. */ + /* if(!Adapter->bEnterPnpSleep) */ + { + /* Clear CR[8] or beacon packet will not be send to TxBuf anymore. */ + u1bTmp = rtw_read8(Adapter, REG_CR_8814A + 1); + rtw_write8(Adapter, REG_CR_8814A + 1, (u1bTmp & (~BIT0))); + } + + u1bTmp = rtw_read8(Adapter, REG_8051FW_CTRL_8814A); /* add by gw for flags to show the fw download ok 20130826 */ + if (u1bTmp & DMEM_CHKSUM_OK) { + if (u1bTmp & IMEM_CHKSUM_OK) { + u8 tem; + tem = rtw_read8(Adapter, REG_8051FW_CTRL_8814A + 1); + rtw_write8(Adapter, REG_8051FW_CTRL_8814A + 1, (tem | BIT6)); + } + } +} + +s32 +_FWFreeToGo8814A( + PADAPTER Adapter +) +{ + u32 counter = 0; + u32 value32; + + /* polling CheckSum report */ + do { + rtw_mdelay_os(50); + value32 = rtw_read32(Adapter, REG_8051FW_CTRL_8814A); + + } while ((counter++ < 100) && (!(value32 & CPU_DL_READY))); + + if (counter >= 100) { + return _FAIL; + } + + + return _SUCCESS; +} + + +#ifdef CONFIG_FILE_FWIMG + u8 FwBuffer8814[FW_SIZE]; +#endif /* CONFIG_FILE_FWIMG */ + +s32 +FirmwareDownload8814A( + PADAPTER Adapter, + BOOLEAN bUsedWoWLANFw +) +{ + s32 rtStatus = _SUCCESS; + u8 write_fw = 0; + systime fwdl_start_time; + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + + u8 *pFwImageFileName; + u8 *pucMappedFile = NULL; + PRT_FIRMWARE_8814 pFirmware = NULL; + u8 *pFwHdr = NULL; + u8 *pFirmwareBuf; + u32 FirmwareLen; +#ifdef CONFIG_FILE_FWIMG + u8 *fwfilepath; +#endif + u32 u32tmp; + + + pFirmware = (PRT_FIRMWARE_8814)rtw_zmalloc(sizeof(RT_FIRMWARE_8814)); + if (!pFirmware) { + rtStatus = _FAIL; + goto exit; + } + +#ifdef CONFIG_FILE_FWIMG +#ifdef CONFIG_WOWLAN + if (bUsedWoWLANFw) + fwfilepath = rtw_fw_wow_file_path; + else +#endif /* CONFIG_WOWLAN */ + { + fwfilepath = rtw_fw_file_path; + } + + if (rtw_is_file_readable(fwfilepath) == _TRUE) { + RTW_INFO("%s acquire FW from file:%s\n", __FUNCTION__, fwfilepath); + pFirmware->eFWSource = FW_SOURCE_IMG_FILE; + } else +#endif /* CONFIG_FILE_FWIMG */ + { + RTW_INFO("%s fw source from Header\n", __FUNCTION__); + pFirmware->eFWSource = FW_SOURCE_HEADER_FILE; + } + + switch (pFirmware->eFWSource) { + case FW_SOURCE_IMG_FILE: +#ifdef CONFIG_FILE_FWIMG + rtStatus = rtw_retrieve_from_file(fwfilepath, FwBuffer8814, FW_SIZE); + pFirmware->ulFwLength = rtStatus >= 0 ? rtStatus : 0; + pFirmware->szFwBuffer = FwBuffer8814; + RTW_INFO("%s fw size: %d\n", __FUNCTION__, pFirmware->ulFwLength); +#endif /* CONFIG_FILE_FWIMG */ + break; + case FW_SOURCE_HEADER_FILE: + if (bUsedWoWLANFw) { + #ifdef CONFIG_WOWLAN + pFirmware->szFwBuffer = array_mp_8814a_fw_wowlan; + pFirmware->ulFwLength = array_length_mp_8814a_fw_wowlan; + RTW_INFO("%s fw:%s, size: %d\n", __FUNCTION__, "WoWLAN", pFirmware->ulFwLength); + #endif /* CONFIG_WOWLAN */ + } else { + pFirmware->szFwBuffer = array_mp_8814a_fw_nic; + pFirmware->ulFwLength = array_length_mp_8814a_fw_nic; + RTW_INFO("%s fw:%s, size: %d\n", __FUNCTION__, "NIC", pFirmware->ulFwLength); + } + break; + } + + if (pFirmware->ulFwLength == 0) { + RTW_ERR("Firmware size:%u\n", pFirmware->ulFwLength); + goto exit; + } + + if ((pFirmware->ulFwLength - 64) > FW_SIZE) { + rtStatus = _FAIL; + RTW_ERR("Firmware size:%u exceed %u\n", pFirmware->ulFwLength, FW_SIZE); + goto exit; + } + + pFirmwareBuf = pFirmware->szFwBuffer; + FirmwareLen = pFirmware->ulFwLength; + pFwHdr = (u8 *)pFirmware->szFwBuffer; + + pHalData->firmware_version = (u16)GET_FIRMWARE_HDR_VERSION_3081(pFwHdr); + pHalData->firmware_sub_version = (u16)GET_FIRMWARE_HDR_SUB_VER_3081(pFwHdr); + pHalData->FirmwareSignature = (u16)GET_FIRMWARE_HDR_SIGNATURE_3081(pFwHdr); + + RTW_INFO("%s: fw_ver=%d fw_subver=%d sig=0x%x\n", + __FUNCTION__, pHalData->firmware_version, pHalData->firmware_sub_version, pHalData->FirmwareSignature); + fwdl_start_time = rtw_get_current_time(); + + _FWDownloadEnable_8814A(Adapter, _TRUE); + + _3081Disable8814A(Adapter);/* add by gw 2013026 for disable mcu core */ + + /* DDMA reset, suggest by MAC yodar */ + u32tmp = rtw_read32(Adapter, REG_CPU_DMEM_CON_8814A); + rtw_write32(Adapter, REG_CPU_DMEM_CON_8814A, u32tmp&(~BIT16)); + rtw_write32(Adapter, REG_CPU_DMEM_CON_8814A, u32tmp | BIT16); + + HalROMDownloadFWRSVDPage8814A(Adapter, pFirmwareBuf, FirmwareLen); + + _3081Enable8814A(Adapter);/* add by gw 2013026 for Enable mcu core */ + + _FWDownloadEnable_8814A(Adapter, _FALSE); + + rtStatus = _FWFreeToGo8814A(Adapter); + if (_SUCCESS != rtStatus) + goto fwdl_stat; + +fwdl_stat: + RTW_INFO("FWDL %s. write_fw:%u, %dms\n" + , (rtStatus == _SUCCESS) ? "success" : "fail" + , write_fw + , rtw_get_passing_time_ms(fwdl_start_time) + ); + +exit: + if (pFirmware) + rtw_mfree((u8 *)pFirmware, sizeof(RT_FIRMWARE_8814)); + + InitializeFirmwareVars8814(Adapter); + + return rtStatus; +} + + + +void InitializeFirmwareVars8814(PADAPTER padapter) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter); + struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); + + /* Init Fw LPS related. */ + pwrpriv->bFwCurrentInPSMode = _FALSE; + + /* Init H2C cmd.*/ + rtw_write8(padapter, REG_HMETFR_8814A, 0x0f); + + /* Init H2C counter. by tynli. 2009.12.09. */ + pHalData->LastHMEBoxNum = 0; +} + +#if 0 +/* */ +/* Description: Determine the contents of H2C BT_FW_PATCH Command sent to FW. */ +/* 2013.01.23 by tynli */ +/* Porting from 8723B. 2013.04.01 */ +/* */ +void +SetFwBTFwPatchCmd( + PADAPTER Adapter, + u16 FwSize +) +{ + u8 u1BTFwPatchParm[6] = {0}; + + RTW_INFO("SetFwBTFwPatchCmd_8821(): FwSize = %d\n", FwSize); + + /* SET_8812_H2CCMD_BT_FW_PATCH_ENABLE(u1BTFwPatchParm, 1); */ + SET_H2CCMD_BT_FW_PATCH_SIZE(u1BTFwPatchParm, FwSize); + SET_H2CCMD_BT_FW_PATCH_ADDR0(u1BTFwPatchParm, 0); + SET_H2CCMD_BT_FW_PATCH_ADDR1(u1BTFwPatchParm, 0xa0); + SET_H2CCMD_BT_FW_PATCH_ADDR2(u1BTFwPatchParm, 0x10); + SET_H2CCMD_BT_FW_PATCH_ADDR3(u1BTFwPatchParm, 0x80); + + fill_h2c_cmd_8812(Adapter, H2C_BT_FW_PATCH, 6 , u1BTFwPatchParm); +} + + +int ReservedPage_Compare(PADAPTER Adapter, PRT_MP_FIRMWARE pFirmware, u32 BTPatchSize) +{ + u8 temp, ret, lastBTsz; + u32 u1bTmp = 0, address_start = 0, count = 0, i = 0; + u8 *myBTFwBuffer = NULL; + + myBTFwBuffer = rtw_zmalloc(BTPatchSize); + if (myBTFwBuffer == NULL) { + RTW_INFO("%s can't be executed due to the failed malloc.\n", __FUNCTION__); + Adapter->mppriv.bTxBufCkFail = _TRUE; + return _FALSE; + } + + temp = rtw_read8(Adapter, 0x209); + + address_start = (temp * 128) / 8; + + rtw_write32(Adapter, 0x140, 0x00000000); + rtw_write32(Adapter, 0x144, 0x00000000); + rtw_write32(Adapter, 0x148, 0x00000000); + + rtw_write8(Adapter, 0x106, 0x69); + + + for (i = 0; i < (BTPatchSize / 8); i++) { + rtw_write32(Adapter, 0x140, address_start + 5 + i) ; + + /* polling until reg 0x140[23]=1; */ + do { + u1bTmp = rtw_read32(Adapter, 0x140); + if (u1bTmp & BIT(23)) { + ret = _SUCCESS; + break; + } + count++; + RTW_INFO("0x140=%x, wait for 10 ms (%d) times.\n", u1bTmp, count); + rtw_msleep_os(10); /* 10ms */ + } while (!(u1bTmp & BIT(23)) && count < 50); + + myBTFwBuffer[i * 8 + 0] = rtw_read8(Adapter, 0x144); + myBTFwBuffer[i * 8 + 1] = rtw_read8(Adapter, 0x145); + myBTFwBuffer[i * 8 + 2] = rtw_read8(Adapter, 0x146); + myBTFwBuffer[i * 8 + 3] = rtw_read8(Adapter, 0x147); + myBTFwBuffer[i * 8 + 4] = rtw_read8(Adapter, 0x148); + myBTFwBuffer[i * 8 + 5] = rtw_read8(Adapter, 0x149); + myBTFwBuffer[i * 8 + 6] = rtw_read8(Adapter, 0x14a); + myBTFwBuffer[i * 8 + 7] = rtw_read8(Adapter, 0x14b); + } + + rtw_write32(Adapter, 0x140, address_start + 5 + BTPatchSize / 8) ; + + lastBTsz = BTPatchSize % 8; + + /* polling until reg 0x140[23]=1; */ + u1bTmp = 0; + count = 0; + do { + u1bTmp = rtw_read32(Adapter, 0x140); + if (u1bTmp & BIT(23)) { + ret = _SUCCESS; + break; + } + count++; + RTW_INFO("0x140=%x, wait for 10 ms (%d) times.\n", u1bTmp, count); + rtw_msleep_os(10); /* 10ms */ + } while (!(u1bTmp & BIT(23)) && count < 50); + + for (i = 0; i < lastBTsz; i++) + myBTFwBuffer[(BTPatchSize / 8) * 8 + i] = rtw_read8(Adapter, (0x144 + i)); + + + for (i = 0; i < BTPatchSize; i++) { + if (myBTFwBuffer[i] != pFirmware->szFwBuffer[i]) { + RTW_INFO(" In direct myBTFwBuffer[%d]=%x , pFirmware->szFwBuffer=%x\n", i, myBTFwBuffer[i], pFirmware->szFwBuffer[i]); + Adapter->mppriv.bTxBufCkFail = _TRUE; + break; + } + } + + if (myBTFwBuffer != NULL) + rtw_mfree(myBTFwBuffer, BTPatchSize); + + return _TRUE; +} + +#ifdef CONFIG_RTL8821A +s32 FirmwareDownloadBT(PADAPTER padapter, PRT_MP_FIRMWARE pFirmware) +{ + s32 rtStatus; + u8 *pBTFirmwareBuf; + u32 BTFirmwareLen; + u8 download_time; + s8 i; + + + rtStatus = _SUCCESS; + pBTFirmwareBuf = NULL; + BTFirmwareLen = 0; + + /* */ + /* Patch BT Fw. Download BT RAM code to Tx packet buffer. */ + /* */ + if (GET_HAL_DATA(padapter)->bBTFWReady) { + RTW_INFO("%s: BT Firmware is ready!!\n", __FUNCTION__); + return _FAIL; + } + +#ifdef CONFIG_FILE_FWIMG + if (rtw_is_file_readable(rtw_fw_mp_bt_file_path) == _TRUE) { + RTW_INFO("%s: accquire MP BT FW from file:%s\n", __FUNCTION__, rtw_fw_mp_bt_file_path); + + rtStatus = rtw_retrieve_from_file(rtw_fw_mp_bt_file_path, FwBuffer, 0x8000); + BTFirmwareLen = rtStatus >= 0 ? rtStatus : 0; + pBTFirmwareBuf = FwBuffer; + } else +#endif /* CONFIG_FILE_FWIMG */ + { +#ifdef CONFIG_EMBEDDED_FWIMG + RTW_INFO("%s: Download MP BT FW from header\n", __FUNCTION__); + + pBTFirmwareBuf = (u8 *)Rtl8821A_BT_MP_Patch_FW; + BTFirmwareLen = Rtl8812BFwBTImgArrayLength; + pFirmware->szFwBuffer = pBTFirmwareBuf; + pFirmware->ulFwLength = BTFirmwareLen; +#endif /* CONFIG_EMBEDDED_FWIMG */ + } + + RTW_INFO("%s: MP BT Firmware size=%d\n", __FUNCTION__, BTFirmwareLen); + + /* for h2c cam here should be set to true */ + GET_HAL_DATA(padapter)->bFWReady = _TRUE; + + download_time = (BTFirmwareLen + 4095) / 4096; + RTW_INFO("%s: download_time is %d\n", __FUNCTION__, download_time); + + /* Download BT patch Fw. */ + for (i = (download_time - 1); i >= 0; i--) { + if (i == (download_time - 1)) { + rtStatus = _WriteBTFWtoTxPktBuf8812(padapter, pBTFirmwareBuf + (4096 * i), (BTFirmwareLen - (4096 * i)), 1); + RTW_INFO("%s: start %d, len %d, time 1\n", __FUNCTION__, 4096 * i, BTFirmwareLen - (4096 * i)); + } else { + rtStatus = _WriteBTFWtoTxPktBuf8812(padapter, pBTFirmwareBuf + (4096 * i), 4096, (download_time - i)); + RTW_INFO("%s: start %d, len 4096, time %d\n", __FUNCTION__, 4096 * i, download_time - i); + } + + if (rtStatus != _SUCCESS) { + RTW_INFO("%s: BT Firmware download to Tx packet buffer fail!\n", __FUNCTION__); + GET_HAL_DATA(padapter)->bBTFWReady = _FALSE; + return rtStatus; + } + } + + ReservedPage_Compare(padapter, pFirmware, BTFirmwareLen); + + GET_HAL_DATA(padapter)->bBTFWReady = _TRUE; + SetFwBTFwPatchCmd_8821(padapter, (u16)BTFirmwareLen); + rtStatus = _CheckWLANFwPatchBTFwReady_8821A(padapter); + + RTW_INFO("<===%s: return %s!\n", __FUNCTION__, rtStatus == _SUCCESS ? "SUCCESS" : "FAIL"); + return rtStatus; +} +#endif /* CONFIG_RTL8821A */ +#endif + +/* *********************************************************** + * Efuse related code + * *********************************************************** */ +void +hal_EfuseParseBTCoexistInfo8814A( + PADAPTER Adapter, + u8 *hwinfo, + BOOLEAN AutoLoadFail +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 tempval = 0x0; + + if (!AutoLoadFail) { + tempval = hwinfo[EEPROM_RF_BOARD_OPTION_8814]; + if (((tempval & 0xe0) >> 5) == 0x1) /* [7:5] */ + pHalData->EEPROMBluetoothCoexist = 1; + else + pHalData->EEPROMBluetoothCoexist = 0; + pHalData->EEPROMBluetoothType = BT_RTL8814A; + + tempval = hwinfo[EEPROM_RF_BT_SETTING_8814]; + if (tempval != 0xFF) + pHalData->EEPROMBluetoothAntNum = (tempval&0x1) ? Ant_x1 : Ant_x2; + } else { + pHalData->EEPROMBluetoothCoexist = 0; + pHalData->EEPROMBluetoothType = BT_RTL8814A; + pHalData->EEPROMBluetoothAntNum = Ant_x1; + } + + RTW_INFO("EEPROMBluetoothCoexist = %d, EEPROMBluetoothAntNum = %s\n", + pHalData->EEPROMBluetoothCoexist, + (pHalData->EEPROMBluetoothAntNum == Ant_x1) ? "Ant_x1" : "Ant_x2"); +} + +void +hal_ReadPROMVersion8814A( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoloadFail +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if (AutoloadFail) + pHalData->EEPROMVersion = EEPROM_Default_Version; + else { + pHalData->EEPROMVersion = *(u8 *)&PROMContent[EEPROM_VERSION_8814]; + if (pHalData->EEPROMVersion == 0xFF) + pHalData->EEPROMVersion = EEPROM_Default_Version; + } +} + +void +hal_ReadTxPowerInfo8814A( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoLoadFail +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + /* 2010/10/19 MH Add Regulator recognize for CU. */ + if (!AutoLoadFail) { + struct registry_priv *registry_par = &Adapter->registrypriv; + + pHalData->EEPROMRegulatory = (PROMContent[EEPROM_RF_BOARD_OPTION_8814] & 0x7); /* bit0~2 */ + if (PROMContent[EEPROM_RF_BOARD_OPTION_8814] == 0xFF) + pHalData->EEPROMRegulatory = (EEPROM_DEFAULT_BOARD_OPTION & 0x7); /* bit0~2 */ + } else + pHalData->EEPROMRegulatory = 0; + + RTW_INFO("EEPROMRegulatory = 0x%x\n", pHalData->EEPROMRegulatory); + +} + +void +hal_ReadBoardType8814A( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoloadFail +) +{ + + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if (!AutoloadFail) { + pHalData->InterfaceSel = (PROMContent[EEPROM_RF_BOARD_OPTION_8814] & 0xE0) >> 5; + if (PROMContent[EEPROM_RF_BOARD_OPTION_8814] == 0xFF) + pHalData->InterfaceSel = (EEPROM_DEFAULT_BOARD_OPTION & 0xE0) >> 5; + } else + pHalData->InterfaceSel = 0; +} + +enum rf_type rtl8814a_rfpath_decision(_adapter *adapter) +{ + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); + struct registry_priv *regpriv = &adapter->registrypriv; + enum rf_type rf_path = RF_TYPE_MAX; + u8 trx_antenna; + + if (!hal_data->bautoload_fail_flag) { + u8 option = hal_data->efuse_eeprom_data[EEPROM_TRX_ANTENNA_OPTION_8814]; + + if (option == 0xff) { + trx_antenna = RF_4T4R; + RTW_INFO("EEPROM RF set 4T4R\n"); + } else if (option == 0xee) { + trx_antenna = RF_3T3R; + RTW_INFO("EEPROM RF set 3T3R\n"); + } else if (option == 0x66) { + trx_antenna = RF_2T2R; + RTW_INFO("EEPROM RF set 2T2R\n"); + } else if (option == 0x6f) { + trx_antenna = RF_2T4R; + RTW_INFO("EEPROM RF set 2T4R\n"); + } else { + trx_antenna = RF_2T4R; + RTW_INFO("unknown EEPROM RF set, default to 2T4R\n"); + } + } else { + trx_antenna = RF_2T4R; + RTW_INFO("AutoloadFail, default to 2T4R\n"); + } + + /* if driver doesn't set rf_path in registry, use the value of EEPROM */ + if (!RF_TYPE_VALID(regpriv->rf_path)) { + if ((trx_antenna == RF_4T4R || trx_antenna == RF_3T3R) + #ifdef CONFIG_USB_HCI + && IS_SUPER_SPEED_USB(adapter) + #endif + ) + rf_path = RF_3T3R; + else if (trx_antenna == RF_2T4R) + rf_path = RF_2T4R; + else { + rf_path = RF_2T4R; + RTW_INFO("default rf type: %d\n", rf_path); + } + } else { + rf_path = regpriv->rf_path; + #ifdef CONFIG_USB_HCI + if (!IS_SUPER_SPEED_USB(adapter)) + rf_path = RF_2T4R; + #endif + } + + RTW_INFO("[8814A] Final rf_config: %d\n", rf_path); + + return rf_path; +} + +void +hal_Read_TRX_antenna_8814A( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoloadFail +) +{ + /* move to rtl8814a_rfpath_decision */ +} + +void +hal_ReadThermalMeter_8814A( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoloadFail +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + pHalData->eeprom_thermal_meter = 0xff; + + if (!AutoloadFail) + pHalData->eeprom_thermal_meter = PROMContent[EEPROM_THERMAL_METER_8814]; + +#if 0 /* ToDo: check with RF */ + else + pHalData->eeprom_thermal_meter = EEPROM_Default_ThermalMeter_8814A; + + if ((pHalData->eeprom_thermal_meter == 0xff) || (_TRUE == AutoloadFail)) { + pHalData->odmpriv.RFCalibrateInfo.bAPKThermalMeterIgnore = _TRUE; + pHalData->eeprom_thermal_meter = EEPROM_Default_ThermalMeter_8814A; + } +#endif + + /* pHalData->ThermalMeter[0] = pHalData->eeprom_thermal_meter; */ + RTW_INFO("ThermalMeter = 0x%x\n", pHalData->eeprom_thermal_meter); +} + + +void hal_ReadRemoteWakeup_8814A( + PADAPTER padapter, + u8 *hwinfo, + BOOLEAN AutoLoadFail +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter); + u8 tmpvalue; + + if (AutoLoadFail) { + pwrctl->bHWPowerdown = _FALSE; + pwrctl->bSupportRemoteWakeup = _FALSE; + } else { + /* decide hw if support remote wakeup function */ + /* if hw supported, 8051 (SIE) will generate WeakUP signal( D+/D- toggle) when autoresume */ +#if 0 + /* todo: wowlan should check the efuse again */ +#ifdef CONFIG_USB_HCI + if (IS_HARDWARE_TYPE_8821U(padapter)) + pwrctl->bSupportRemoteWakeup = (hwinfo[EEPROM_USB_OPTIONAL_FUNCTION0_8811AU] & BIT1) ? _TRUE : _FALSE; + else + pwrctl->bSupportRemoteWakeup = (hwinfo[EEPROM_USB_OPTIONAL_FUNCTION0] & BIT1) ? _TRUE : _FALSE; +#endif /* CONFIG_USB_HCI */ +#endif + RTW_INFO("%s...bSupportRemoteWakeup(%x)\n", __FUNCTION__, pwrctl->bSupportRemoteWakeup); + } +} + +void +hal_ReadChannelPlan8814A( + PADAPTER padapter, + u8 *hwinfo, + BOOLEAN AutoLoadFail +) +{ + hal_com_config_channel_plan( + padapter + , hwinfo ? &hwinfo[EEPROM_COUNTRY_CODE_8814] : NULL + , hwinfo ? hwinfo[EEPROM_ChannelPlan_8814] : 0xFF + , padapter->registrypriv.alpha2 + , padapter->registrypriv.channel_plan + , RTW_CHPLAN_REALTEK_DEFINE + , AutoLoadFail + ); +} + +void hal_GetRxGainOffset_8814A( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoloadFail +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct registry_priv *pregistrypriv = &Adapter->registrypriv; + + pHalData->RxGainOffset[0] = 0; + pHalData->RxGainOffset[1] = 0; + pHalData->RxGainOffset[2] = 0; + pHalData->RxGainOffset[3] = 0; + + if (((pregistrypriv->reg_rxgain_offset_2g != 0) && (pregistrypriv->reg_rxgain_offset_5gl != 0)) && + ((pregistrypriv->reg_rxgain_offset_5gm != 0) && (pregistrypriv->reg_rxgain_offset_5gh != 0))) { + + pHalData->RxGainOffset[0] = pregistrypriv->reg_rxgain_offset_2g; + pHalData->RxGainOffset[1] = pregistrypriv->reg_rxgain_offset_5gl; + pHalData->RxGainOffset[2] = pregistrypriv->reg_rxgain_offset_5gm; + pHalData->RxGainOffset[3] = pregistrypriv->reg_rxgain_offset_5gh; + RTW_INFO("%s():Use registrypriv 0x%x 0x%x 0x%x 0x%x !!\n", __func__, pregistrypriv->reg_rxgain_offset_2g, pregistrypriv->reg_rxgain_offset_5gl, pregistrypriv->reg_rxgain_offset_5gm, + pregistrypriv->reg_rxgain_offset_5gh); + + } else { + RTW_INFO("%s(): AutoloadFail = %d!!\n", __func__, AutoloadFail); + pHalData->RxGainOffset[0] = PROMContent[EEPROM_IG_OFFSET_4_CD_2G_8814A]; + pHalData->RxGainOffset[0] |= (PROMContent[EEPROM_IG_OFFSET_4_AB_2G_8814A]) << 8; + pHalData->RxGainOffset[1] = PROMContent[EEPROM_IG_OFFSET_4_CD_5GL_8814A]; + pHalData->RxGainOffset[1] |= (PROMContent[EEPROM_IG_OFFSET_4_AB_5GL_8814A]) << 8; + pHalData->RxGainOffset[2] = PROMContent[EEPROM_IG_OFFSET_4_CD_5GM_8814A]; + pHalData->RxGainOffset[2] |= (PROMContent[EEPROM_IG_OFFSET_4_AB_5GM_8814A]) << 8; + pHalData->RxGainOffset[3] = PROMContent[EEPROM_IG_OFFSET_4_CD_5GH_8814A]; + pHalData->RxGainOffset[3] |= (PROMContent[EEPROM_IG_OFFSET_4_AB_5GH_8814A]) << 8; + } + RTW_INFO("hal_GetRxGainOffset_8814A(): RegRxGainOffset_2G = 0x%x!!\n", pHalData->RxGainOffset[0]); + RTW_INFO("hal_GetRxGainOffset_8814A(): RegRxGainOffset_5GL = 0x%x!!\n", pHalData->RxGainOffset[1]); + RTW_INFO("hal_GetRxGainOffset_8814A(): RegRxGainOffset_5GM = 0x%x!!\n", pHalData->RxGainOffset[2]); + RTW_INFO("hal_GetRxGainOffset_8814A(): RegRxGainOffset_5GH = 0x%x!!\n", pHalData->RxGainOffset[3]); +} + + +void Hal_EfuseParseKFreeData_8814A( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoloadFail) +{ +#ifdef CONFIG_RF_POWER_TRIM + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct kfree_data_t *kfree_data = &pHalData->kfree_data; + u8 kfreePhydata[KFREE_GAIN_DATA_LENGTH_8814A]; + u32 i = 0, j = 2, chidx = 0, efuseaddr = 0; + u8 rfpath = 0; + + if (GET_PG_KFREE_ON_8814A(PROMContent) && PROMContent[0xc8] != 0xff) + kfree_data->flag |= KFREE_FLAG_ON; + if (GET_PG_KFREE_THERMAL_K_ON_8814A(PROMContent) && PROMContent[0xc8] != 0xff) + kfree_data->flag |= KFREE_FLAG_THERMAL_K_ON; + + if (Adapter->registrypriv.RegPwrTrimEnable == 1) { + kfree_data->flag |= KFREE_FLAG_ON; + kfree_data->flag |= KFREE_FLAG_THERMAL_K_ON; + } + + _rtw_memset(kfree_data->bb_gain, 0xff, BB_GAIN_NUM * RF_PATH_MAX); + + if (kfree_data->flag & KFREE_FLAG_ON) { + + for (i = 0; i < KFREE_GAIN_DATA_LENGTH_8814A; i++) { + efuseaddr = PPG_BB_GAIN_2G_TXBA_OFFSET_8814A - i; + + if (efuseaddr <= PPG_BB_GAIN_2G_TXBA_OFFSET_8814A) { + efuse_OneByteRead(Adapter, efuseaddr, &kfreePhydata[i], _FALSE); + RTW_INFO("%s,kfreePhydata[%d] = %x\n", __func__, i, kfreePhydata[i]); + } + } + kfree_data->bb_gain[0][RF_PATH_A] + = (kfreePhydata[0] & PPG_BB_GAIN_2G_TX_OFFSET_MASK); + kfree_data->bb_gain[0][RF_PATH_B] + = (kfreePhydata[0] & PPG_BB_GAIN_2G_TXB_OFFSET_MASK) >> 4; + kfree_data->bb_gain[0][RF_PATH_C] + = (kfreePhydata[1] & PPG_BB_GAIN_2G_TX_OFFSET_MASK); + kfree_data->bb_gain[0][RF_PATH_D] + = (kfreePhydata[1] & PPG_BB_GAIN_2G_TXB_OFFSET_MASK) >> 4; + + for (chidx = 1; chidx <= BB_GAIN_5GHB; chidx++) { + for (rfpath = RF_PATH_A; rfpath < RF_PATH_MAX; rfpath++) + kfree_data->bb_gain[chidx][rfpath] = kfreePhydata[j + rfpath] & PPG_BB_GAIN_5G_TX_OFFSET_MASK; + + j = j + RF_PATH_MAX; + } + } + + if (kfree_data->flag & KFREE_FLAG_THERMAL_K_ON) + pHalData->eeprom_thermal_meter += kfree_data->thermal; + + RTW_INFO("registrypriv.RegPwrTrimEnable = %d\n", Adapter->registrypriv.RegPwrTrimEnable); + + RTW_INFO("kfree flag:%u\n", kfree_data->flag); + if (Adapter->registrypriv.RegPwrTrimEnable == 1 || kfree_data->flag & KFREE_FLAG_ON) { + for (chidx = 0 ; chidx <= BB_GAIN_5GHB; chidx++) { + for (rfpath = RF_PATH_A; rfpath < RF_PATH_MAX; rfpath++) + RTW_INFO("bb_gain[%d][%d]= %x\n", chidx, rfpath, kfree_data->bb_gain[chidx][rfpath]); + } + } + +#endif /*CONFIG_RF_POWER_TRIM */ +} + + +void +hal_EfuseParseXtal_8814A( + PADAPTER pAdapter, + u8 *hwinfo, + BOOLEAN AutoLoadFail +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + if (!AutoLoadFail) { + pHalData->crystal_cap = hwinfo[EEPROM_XTAL_8814]; + if (pHalData->crystal_cap == 0xFF) + pHalData->crystal_cap = EEPROM_Default_CrystalCap_8814; /* what value should 8814 set? */ + } else + pHalData->crystal_cap = EEPROM_Default_CrystalCap_8814; + RTW_INFO("crystal_cap: 0x%2x\n", pHalData->crystal_cap); +} + +void +hal_ReadAntennaDiversity8814A( + PADAPTER pAdapter, + u8 *PROMContent, + BOOLEAN AutoLoadFail +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + pHalData->AntDivCfg = 0; + + RTW_INFO("SWAS: bHwAntDiv = %x, TRxAntDivType = %x\n", + pHalData->AntDivCfg, pHalData->TRxAntDivType); +} + +void +hal_ReadPAType_8814A( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoloadFail, + u8 *pPAType, + u8 *pLNAType +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 LNAType_AB, LNAType_CD; + + if (!AutoloadFail) { + u8 RFEType = PROMContent[EEPROM_RFE_OPTION_8814]; + + if (GetRegAmplifierType2G(Adapter) == 0) { /* AUTO */ + *pPAType = ReadLE1Byte(&PROMContent[EEPROM_PA_TYPE_8814]); + + LNAType_AB = ReadLE1Byte(&PROMContent[EEPROM_LNA_TYPE_AB_2G_8814]); + LNAType_CD = ReadLE1Byte(&PROMContent[EEPROM_LNA_TYPE_CD_2G_8814]); + + if (*pPAType == 0xFF && RFEType == 0xFF) + pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter) & ODM_BOARD_EXT_PA) ? 1 : 0; + else + pHalData->ExternalPA_2G = (*pPAType & BIT4) ? 1 : 0; + + if (LNAType_AB == 0xFF) + pHalData->ExternalLNA_2G = (GetRegAmplifierType2G(Adapter) & ODM_BOARD_EXT_LNA) ? 1 : 0; + else + pHalData->ExternalLNA_2G = (LNAType_AB & BIT3) ? 1 : 0; + + *pLNAType = (LNAType_AB & BIT3) << 1 | (LNAType_AB & BIT7) >> 2 | + (LNAType_CD & BIT3) << 3 | (LNAType_CD & BIT7); + } else { + pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter) & ODM_BOARD_EXT_PA) ? 1 : 0; + pHalData->ExternalLNA_2G = (GetRegAmplifierType2G(Adapter) & ODM_BOARD_EXT_LNA) ? 1 : 0; + } + + if (GetRegAmplifierType5G(Adapter) == 0) { /* AUTO */ + LNAType_AB = ReadLE1Byte(&PROMContent[EEPROM_LNA_TYPE_AB_5G_8814]); + LNAType_CD = ReadLE1Byte(&PROMContent[EEPROM_LNA_TYPE_CD_5G_8814]); + + if (*pPAType == 0xFF && RFEType == 0xFF) + pHalData->external_pa_5g = (GetRegAmplifierType5G(Adapter) & ODM_BOARD_EXT_PA) ? 1 : 0; + else + pHalData->external_pa_5g = (*pPAType & BIT0) ? 1 : 0; + + if (LNAType_AB == 0xFF) + pHalData->external_lna_5g = (GetRegAmplifierType5G(Adapter) & ODM_BOARD_EXT_LNA) ? 1 : 0; + else + pHalData->external_lna_5g = (LNAType_AB & BIT3) ? 1 : 0; + + (*pLNAType) |= ((LNAType_AB & BIT3) >> 3 | (LNAType_AB & BIT7) >> 6 | + (LNAType_CD & BIT3) >> 1 | (LNAType_CD & BIT7) >> 4); + } else { + pHalData->external_pa_5g = (GetRegAmplifierType5G(Adapter) & ODM_BOARD_EXT_PA_5G) ? 1 : 0; + pHalData->external_lna_5g = (GetRegAmplifierType5G(Adapter) & ODM_BOARD_EXT_LNA_5G) ? 1 : 0; + } + } else { + pHalData->ExternalPA_2G = EEPROM_Default_PAType; + pHalData->external_pa_5g = 0xFF; + pHalData->ExternalLNA_2G = EEPROM_Default_LNAType; + pHalData->external_lna_5g = 0xFF; + + if (GetRegAmplifierType2G(Adapter) == 0) { + pHalData->ExternalPA_2G = 0; + pHalData->ExternalLNA_2G = 0; + } else { + pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter) & ODM_BOARD_EXT_PA) ? 1 : 0; + pHalData->ExternalLNA_2G = (GetRegAmplifierType2G(Adapter) & ODM_BOARD_EXT_LNA) ? 1 : 0; + } + if (GetRegAmplifierType5G(Adapter) == 0) { + pHalData->external_pa_5g = 0; + pHalData->external_lna_5g = 0; + } else { + pHalData->external_pa_5g = (GetRegAmplifierType5G(Adapter) & ODM_BOARD_EXT_PA_5G) ? 1 : 0; + pHalData->external_lna_5g = (GetRegAmplifierType5G(Adapter) & ODM_BOARD_EXT_LNA_5G) ? 1 : 0; + } + } + RTW_INFO("PAType is 0x%x, LNAType is 0x%x\n", *pPAType, *pLNAType); + RTW_INFO("pHalData->ExternalPA_2G = %d, pHalData->external_pa_5g = %d\n", pHalData->ExternalPA_2G, pHalData->external_pa_5g); + RTW_INFO("pHalData->ExternalLNA_2G = %d, pHalData->external_lna_5g = %d\n", pHalData->ExternalLNA_2G, pHalData->external_lna_5g); +} + +void hal_ReadAmplifierType_8814A( + PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + switch (pHalData->rfe_type) { + case 1: /* 8814AU */ + pHalData->external_pa_5g = pHalData->external_lna_5g = _TRUE; + pHalData->TypeAPA = pHalData->TypeALNA = 0;/* APA and ALNA is 0 */ + break; + case 2: /* socket board 8814AR and 8194AR */ + pHalData->ExternalPA_2G = pHalData->external_pa_5g = _TRUE; + pHalData->ExternalLNA_2G = pHalData->external_lna_5g = _TRUE; + pHalData->TypeAPA = pHalData->TypeALNA = 0x55;/* APA and ALNA is 1 */ + pHalData->TypeGPA = pHalData->TypeGLNA = 0x55;/* GPA and GLNA is 1 */ + break; + case 3: /* high power on-board 8814AR and 8194AR */ + pHalData->ExternalPA_2G = pHalData->external_pa_5g = _TRUE; + pHalData->ExternalLNA_2G = pHalData->external_lna_5g = _TRUE; + pHalData->TypeAPA = pHalData->TypeALNA = 0xaa;/* APA and ALNA is 2 */ + pHalData->TypeGPA = pHalData->TypeGLNA = 0xaa;/* GPA and GLNA is 2 */ + break; + case 4: /* on-board 8814AR and 8194AR */ + pHalData->ExternalPA_2G = pHalData->external_pa_5g = _TRUE; + pHalData->ExternalLNA_2G = pHalData->external_lna_5g = _TRUE; + pHalData->TypeAPA = 0x55;/* APA is 1 */ + pHalData->TypeALNA = 0xff; /* ALNA is 3 */ + pHalData->TypeGPA = pHalData->TypeGLNA = 0x55;/* GPA and GLNA is 1 */ + break; + case 5: + pHalData->ExternalPA_2G = pHalData->external_pa_5g = _TRUE; + pHalData->ExternalLNA_2G = pHalData->external_lna_5g = _TRUE; + pHalData->TypeAPA = 0xaa; /* APA2 */ + pHalData->TypeALNA = 0x5500; /* ALNA4 */ + pHalData->TypeGPA = pHalData->TypeGLNA = 0xaa; /* GPA2,GLNA2 */ + break; + case 6: + pHalData->external_lna_5g = _TRUE; + pHalData->TypeALNA = 0; /* ALNA0 */ + break; + case 0: + default: /* 8814AE */ + break; + } + + RTW_INFO("pHalData->ExternalPA_2G = %d, pHalData->external_pa_5g = %d\n", pHalData->ExternalPA_2G, pHalData->external_pa_5g); + RTW_INFO("pHalData->ExternalLNA_2G = %d, pHalData->external_lna_5g = %d\n", pHalData->ExternalLNA_2G, pHalData->external_lna_5g); + RTW_INFO("pHalData->TypeGPA = 0x%X, pHalData->TypeAPA = 0x%X\n", pHalData->TypeGPA, pHalData->TypeAPA); + RTW_INFO("pHalData->TypeGLNA = 0x%X, pHalData->TypeALNA = 0x%X\n", pHalData->TypeGLNA, pHalData->TypeALNA); +} + + +void +hal_ReadRFEType_8814A( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoloadFail +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if (!AutoloadFail) { + if ((GetRegRFEType(Adapter) != 64) || 0xFF == PROMContent[EEPROM_RFE_OPTION_8814] || PROMContent[EEPROM_RFE_OPTION_8814] & BIT7) { + if (GetRegRFEType(Adapter) != 64) + pHalData->rfe_type = GetRegRFEType(Adapter); + else if (IS_HARDWARE_TYPE_8814AE(Adapter)) + pHalData->rfe_type = 0; + else if (IS_HARDWARE_TYPE_8814AU(Adapter)) + pHalData->rfe_type = 1; + hal_ReadAmplifierType_8814A(Adapter); + + } else { + /* bit7==0 means RFE type defined by 0xCA[6:0] */ + pHalData->rfe_type = PROMContent[EEPROM_RFE_OPTION_8814] & 0x7F; + hal_ReadAmplifierType_8814A(Adapter); + } + } else { + if (GetRegRFEType(Adapter) != 64) + pHalData->rfe_type = GetRegRFEType(Adapter); + else if (IS_HARDWARE_TYPE_8814AE(Adapter)) + pHalData->rfe_type = 0; + else if (IS_HARDWARE_TYPE_8814AU(Adapter)) + pHalData->rfe_type = 1; + + hal_ReadAmplifierType_8814A(Adapter); + } + RTW_INFO("RFE Type: 0x%2x\n", pHalData->rfe_type); +} + +void +hal_ReadPowerTrackingType_8814A( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoloadFail +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + /*Efuse 0xC8[7:6] TX Power Tracking Mode*/ + u8 PowerTrackingType = ((PROMContent[EEPROM_TX_PWR_CALIBRATE_RATE_8812] & 0xC0) >> 6); + + if (!AutoloadFail) { + if (GetRegPowerTrackingType(Adapter) != 64) + pHalData->rf_power_tracking_type = GetRegPowerTrackingType(Adapter); + } else + pHalData->rf_power_tracking_type = 0; + + if (PowerTrackingType == 0 || PowerTrackingType == 1 || PowerTrackingType == 2 || PowerTrackingType == 3) + pHalData->rf_power_tracking_type = PowerTrackingType; + else + pHalData->rf_power_tracking_type = 0; + + RTW_INFO("PowerTracking Type: 0x%2x\n", pHalData->rf_power_tracking_type); +} + + +static void +hal_EfusePowerSwitch8814A( + PADAPTER pAdapter, + u8 bWrite, + u8 PwrState) +{ + u8 tempval; + u16 tmpV16; + u8 EFUSE_ACCESS_ON_8814A = 0x69; + u8 EFUSE_ACCESS_OFF_8814A = 0x00; + + if (PwrState == _TRUE) { + rtw_write8(pAdapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_ON_8814A); + + /* Reset: 0x0000h[28], default valid */ + tmpV16 = PlatformEFIORead2Byte(pAdapter, REG_SYS_FUNC_EN); + if (!(tmpV16 & FEN_ELDR)) { + tmpV16 |= FEN_ELDR ; + rtw_write16(pAdapter, REG_SYS_FUNC_EN, tmpV16); + } + + /* Clock: Gated(0x0008h[5]) 8M(0x0008h[1]) clock from ANA, default valid */ + tmpV16 = PlatformEFIORead2Byte(pAdapter, REG_SYS_CLKR); + if ((!(tmpV16 & LOADER_CLK_EN)) || (!(tmpV16 & ANA8M))) { + tmpV16 |= (LOADER_CLK_EN | ANA8M) ; + rtw_write16(pAdapter, REG_SYS_CLKR, tmpV16); + } + + if (bWrite == _TRUE) { + /* Enable LDO 2.5V before read/write action */ + tempval = rtw_read8(pAdapter, EFUSE_TEST + 3); + tempval &= 0x0F; + tempval |= (VOLTAGE_V25 << 4); + rtw_write8(pAdapter, EFUSE_TEST + 3, (tempval | 0x80)); + } + } else { + rtw_write8(pAdapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_OFF_8814A); + + if (bWrite == _TRUE) { + /* Disable LDO 2.5V after read/write action */ + tempval = rtw_read8(pAdapter, EFUSE_TEST + 3); + rtw_write8(pAdapter, EFUSE_TEST + 3, (tempval & 0x7F)); + } + } +} + +static void +rtl8814_EfusePowerSwitch( + PADAPTER pAdapter, + u8 bWrite, + u8 PwrState) +{ + hal_EfusePowerSwitch8814A(pAdapter, bWrite, PwrState); +} + +static void +hal_EfuseReadEFuse8814A( + PADAPTER Adapter, + u16 _offset, + u16 _size_byte, + u8 *pbuf, + BOOLEAN bPseudoTest +) +{ + u8 *efuseTbl = NULL; + u16 eFuse_Addr = 0; + u8 offset = 0, wden = 0; + u16 i, j; + u16 **eFuseWord = NULL; + u16 efuse_utilized = 0; + u8 efuse_usage = 0; + u8 offset_2_0 = 0; + u8 efuseHeader = 0, efuseExtHdr = 0, efuseData = 0; + + /* */ + /* Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. */ + /* */ + if ((_offset + _size_byte) > EFUSE_MAP_LEN_8814A) { + /* total E-Fuse table is 512bytes */ + RTW_INFO("Hal_EfuseReadEFuse8814A(): Invalid offset(%#x) with read bytes(%#x)!!\n", _offset, _size_byte); + goto exit; + } + + efuseTbl = (u8 *)rtw_zmalloc(EFUSE_MAP_LEN_8814A); + if (efuseTbl == NULL) { + RTW_INFO("%s: alloc efuseTbl fail!\n", __FUNCTION__); + goto exit; + } + + eFuseWord = (u16 **)rtw_malloc2d(EFUSE_MAX_SECTION_8814A, EFUSE_MAX_WORD_UNIT_8814A, 2); + if (eFuseWord == NULL) { + RTW_INFO("%s: alloc eFuseWord fail!\n", __FUNCTION__); + goto exit; + } + + /* 0. Refresh efuse init map as all oxFF. */ + for (i = 0; i < EFUSE_MAX_SECTION_8814A; i++) + for (j = 0; j < EFUSE_MAX_WORD_UNIT_8814A; j++) + eFuseWord[i][j] = 0xFFFF; + + /* */ + /* 1. Read the first byte to check if efuse is empty!!! */ + /* */ + /* */ + efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); + + if (efuseHeader != 0xFF) + efuse_utilized++; + else { + RTW_INFO("EFUSE is empty\n"); + efuse_utilized = 0; + goto exit; + } + /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("Hal_EfuseReadEFuse8814A(): efuse_utilized: %d\n", efuse_utilized)); */ + + /* */ + /* 2. Read real efuse content. Filter PG header and every section data. */ + /* */ + while ((efuseHeader != 0xFF) && AVAILABLE_EFUSE_ADDR_8814A(eFuse_Addr)) { + /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("efuse_Addr-%d efuse_data=%x\n", eFuse_Addr-1, *rtemp8)); */ + + /* Check PG header for section num. */ + if (EXT_HEADER(efuseHeader)) { /* extended header */ + offset_2_0 = GET_HDR_OFFSET_2_0(efuseHeader); + /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("extended header offset_2_0=%X\n", offset_2_0)); */ + + efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseExtHdr, bPseudoTest); + + /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("efuse[%X]=%X\n", eFuse_Addr-1, efuseExtHdr)); */ + + if (efuseExtHdr != 0xff) { + efuse_utilized++; + if (ALL_WORDS_DISABLED(efuseExtHdr)) { + efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); + if (efuseHeader != 0xff) + efuse_utilized++; + break; + } else { + offset = ((efuseExtHdr & 0xF0) >> 1) | offset_2_0; + wden = (efuseExtHdr & 0x0F); + } + } else { + RTW_INFO("Error condition, extended = 0xff\n"); + /* We should handle this condition. */ + break; + } + } else { + offset = ((efuseHeader >> 4) & 0x0f); + wden = (efuseHeader & 0x0f); + } + + if (offset < EFUSE_MAX_SECTION_8814A) { + /* Get word enable value from PG header */ + /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("Offset-%X Worden=%X\n", offset, wden)); */ + + for (i = 0; i < EFUSE_MAX_WORD_UNIT_8814A; i++) { + /* Check word enable condition in the section */ + if (!(wden & (0x01 << i))) { + efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseData, bPseudoTest); + /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("efuse[%X]=%X\n", eFuse_Addr-1, efuseData)); */ + efuse_utilized++; + eFuseWord[offset][i] = (efuseData & 0xff); + + if (!AVAILABLE_EFUSE_ADDR_8814A(eFuse_Addr)) + break; + + efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseData, bPseudoTest); + /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("efuse[%X]=%X\n", eFuse_Addr-1, efuseData)); */ + efuse_utilized++; + eFuseWord[offset][i] |= (((u16)efuseData << 8) & 0xff00); + + if (!AVAILABLE_EFUSE_ADDR_8814A(eFuse_Addr)) + break; + } + } + } else { /* deal with error offset,skip error data */ + RTW_PRINT("invalid offset:0x%02x\n", offset); + for (i = 0; i < EFUSE_MAX_WORD_UNIT_8814A; i++) { + /* Check word enable condition in the section */ + if (!(wden & 0x01)) { + eFuse_Addr++; + efuse_utilized++; + if (!AVAILABLE_EFUSE_ADDR_8814A(eFuse_Addr)) + break; + eFuse_Addr++; + efuse_utilized++; + if (!AVAILABLE_EFUSE_ADDR_8814A(eFuse_Addr)) + break; + } + } + } + /* Read next PG header */ + efuse_OneByteRead(Adapter, eFuse_Addr, &efuseHeader, bPseudoTest); + /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Addr=%d rtemp 0x%x\n", eFuse_Addr, *rtemp8)); */ + + if (efuseHeader != 0xFF) { + eFuse_Addr++; + efuse_utilized++; + } + + } + + /* */ + /* 3. Collect 16 sections and 4 word unit into Efuse map. */ + /* */ + for (i = 0; i < EFUSE_MAX_SECTION_8814A; i++) { + for (j = 0; j < EFUSE_MAX_WORD_UNIT_8814A; j++) { + efuseTbl[(i * 8) + (j * 2)] = (eFuseWord[i][j] & 0xff); + efuseTbl[(i * 8) + ((j * 2) + 1)] = ((eFuseWord[i][j] >> 8) & 0xff); + } + } + + /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("Hal_EfuseReadEFuse8814A(): efuse_utilized: %d\n", efuse_utilized)); */ + + /* */ + /* 4. Copy from Efuse map to output pointer memory!!! */ + /* */ + for (i = 0; i < _size_byte; i++) + pbuf[i] = efuseTbl[_offset + i]; + + /* */ + /* 5. Calculate Efuse utilization. */ + /* */ + efuse_usage = (u8)((eFuse_Addr * 100) / EFUSE_REAL_CONTENT_LEN_8814A); + rtw_hal_set_hwreg(Adapter, HW_VAR_EFUSE_BYTES, (u8 *)&eFuse_Addr); + +exit: + if (efuseTbl) + rtw_mfree(efuseTbl, EFUSE_MAP_LEN_8814A); + + if (eFuseWord) + rtw_mfree2d((void *)eFuseWord, EFUSE_MAX_SECTION_8814A, EFUSE_MAX_WORD_UNIT_8814A, sizeof(u16)); +} + +static void +rtl8814_ReadEFuse( + PADAPTER Adapter, + u8 efuseType, + u16 _offset, + u16 _size_byte, + u8 *pbuf, + BOOLEAN bPseudoTest +) +{ + hal_EfuseReadEFuse8814A(Adapter, _offset, _size_byte, pbuf, bPseudoTest); +} + +/* Do not support BT */ +void +hal_EFUSEGetEfuseDefinition8814A( + PADAPTER pAdapter, + u8 efuseType, + u8 type, + void *pOut +) +{ + switch (type) { + case TYPE_EFUSE_MAX_SECTION: { + u8 *pMax_section; + pMax_section = (u8 *)pOut; + *pMax_section = EFUSE_MAX_SECTION_8814A; + } + break; + case TYPE_EFUSE_REAL_CONTENT_LEN: { + u16 *pu2Tmp; + pu2Tmp = (u16 *)pOut; + *pu2Tmp = EFUSE_REAL_CONTENT_LEN_8814A; + } + break; + case TYPE_EFUSE_CONTENT_LEN_BANK: { + u16 *pu2Tmp; + pu2Tmp = (u16 *)pOut; + *pu2Tmp = EFUSE_REAL_CONTENT_LEN_8814A; + } + break; + case TYPE_AVAILABLE_EFUSE_BYTES_BANK: { + u16 *pu2Tmp; + pu2Tmp = (u16 *)pOut; + *pu2Tmp = (u16)(EFUSE_REAL_CONTENT_LEN_8814A - EFUSE_OOB_PROTECT_BYTES); + } + break; + case TYPE_AVAILABLE_EFUSE_BYTES_TOTAL: { + u16 *pu2Tmp; + pu2Tmp = (u16 *)pOut; + *pu2Tmp = (u16)(EFUSE_REAL_CONTENT_LEN_8814A - EFUSE_OOB_PROTECT_BYTES); + } + break; + case TYPE_EFUSE_MAP_LEN: { + u16 *pu2Tmp; + pu2Tmp = (u16 *)pOut; + *pu2Tmp = (u16)EFUSE_MAP_LEN_8814A; + } + break; + case TYPE_EFUSE_PROTECT_BYTES_BANK: { + u8 *pu1Tmp; + pu1Tmp = (u8 *)pOut; + *pu1Tmp = (u8)(EFUSE_OOB_PROTECT_BYTES); + } + break; + default: { + u8 *pu1Tmp; + pu1Tmp = (u8 *)pOut; + *pu1Tmp = 0; + } + break; + } +} + +static void +rtl8814_EFUSE_GetEfuseDefinition( + PADAPTER pAdapter, + u8 efuseType, + u8 type, + void *pOut, + BOOLEAN bPseudoTest +) +{ + hal_EFUSEGetEfuseDefinition8814A(pAdapter, efuseType, type, pOut); +} + +static u8 +hal_EfuseWordEnableDataWrite8814A(PADAPTER pAdapter, + u16 efuse_addr, + u8 word_en, + u8 *data, + BOOLEAN bPseudoTest) +{ + u16 readbackAddr = 0; + u16 start_addr = efuse_addr; + u8 badworden = 0x0F; + u8 readbackData[PGPKT_DATA_SIZE]; + + _rtw_memset((void *)readbackData, 0xff, PGPKT_DATA_SIZE); + + RTW_INFO("word_en = %x efuse_addr=%x\n", word_en, efuse_addr); + + if (!(word_en & BIT0)) { + readbackAddr = start_addr; + efuse_OneByteWrite(pAdapter, start_addr++, data[0], bPseudoTest); + efuse_OneByteWrite(pAdapter, start_addr++, data[1], bPseudoTest); + + if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || + IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter) || IS_HARDWARE_TYPE_8814A(pAdapter)) + phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT26, 0); /* Use 10K Read, Suggested by Morris & Victor */ + + efuse_OneByteRead(pAdapter, readbackAddr, &readbackData[0], bPseudoTest); + efuse_OneByteRead(pAdapter, readbackAddr + 1, &readbackData[1], bPseudoTest); + + if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || + IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter) || IS_HARDWARE_TYPE_8814A(pAdapter)) + phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT26, 1); /* Restored to 1.5K Read, Suggested by Morris & Victor */ + + if ((data[0] != readbackData[0]) || (data[1] != readbackData[1])) + badworden &= (~BIT0); + } + if (!(word_en & BIT1)) { + readbackAddr = start_addr; + efuse_OneByteWrite(pAdapter, start_addr++, data[2], bPseudoTest); + efuse_OneByteWrite(pAdapter, start_addr++, data[3], bPseudoTest); + + if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || + IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter) || IS_HARDWARE_TYPE_8814A(pAdapter)) + phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT26, 0); /* Use 10K Read, Suggested by Morris & Victor */ + + efuse_OneByteRead(pAdapter, readbackAddr , &readbackData[2], bPseudoTest); + efuse_OneByteRead(pAdapter, readbackAddr + 1, &readbackData[3], bPseudoTest); + + if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || + IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter) || IS_HARDWARE_TYPE_8814A(pAdapter)) + phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT26, 1); /* Restored to 1.5K Read, Suggested by Morris & Victor */ + + if ((data[2] != readbackData[2]) || (data[3] != readbackData[3])) + badworden &= (~BIT1); + } + if (!(word_en & BIT2)) { + readbackAddr = start_addr; + efuse_OneByteWrite(pAdapter, start_addr++, data[4], bPseudoTest); + efuse_OneByteWrite(pAdapter, start_addr++, data[5], bPseudoTest); + + if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || + IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter) || IS_HARDWARE_TYPE_8814A(pAdapter)) + phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT26, 0); /* Use 10K Read, Suggested by Morris & Victor */ + + efuse_OneByteRead(pAdapter, readbackAddr, &readbackData[4], bPseudoTest); + efuse_OneByteRead(pAdapter, readbackAddr + 1, &readbackData[5], bPseudoTest); + + if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || + IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter) || IS_HARDWARE_TYPE_8814A(pAdapter)) + phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT26, 1); /* Restored to 1.5K Read, Suggested by Morris & Victor */ + + if ((data[4] != readbackData[4]) || (data[5] != readbackData[5])) + badworden &= (~BIT2); + } + if (!(word_en & BIT3)) { + readbackAddr = start_addr; + efuse_OneByteWrite(pAdapter, start_addr++, data[6], bPseudoTest); + efuse_OneByteWrite(pAdapter, start_addr++, data[7], bPseudoTest); + + if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || + IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter) || IS_HARDWARE_TYPE_8814A(pAdapter)) + phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT26, 0); /* Use 10K Read, Suggested by Morris & Victor */ + + efuse_OneByteRead(pAdapter, readbackAddr, &readbackData[6], bPseudoTest); + efuse_OneByteRead(pAdapter, readbackAddr + 1, &readbackData[7], bPseudoTest); + + if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || + IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter) || IS_HARDWARE_TYPE_8814A(pAdapter)) + phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT26, 1); /* Restored to 1.5K Read, Suggested by Morris & Victor */ + + if ((data[6] != readbackData[6]) || (data[7] != readbackData[7])) + badworden &= (~BIT3); + } + return badworden; +} + +static u8 +rtl8814_Efuse_WordEnableDataWrite(PADAPTER pAdapter, + u16 efuse_addr, + u8 word_en, + u8 *data, + BOOLEAN bPseudoTest) +{ + u8 ret = 0; + + ret = hal_EfuseWordEnableDataWrite8814A(pAdapter, efuse_addr, word_en, data, bPseudoTest); + + return ret; +} + + +static u16 hal_EfuseGetCurrentSize_8814A(PADAPTER pAdapter, BOOLEAN bPseudoTest) +{ + int bContinual = _TRUE; + + u16 efuse_addr = 0; + u8 hoffset = 0, hworden = 0; + u8 efuse_data, word_cnts = 0; + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + PEFUSE_HAL pEfuseHal = &(pHalData->EfuseHal); + + RTW_INFO("=======> %s()\n", __func__); + + if (bPseudoTest) + efuse_addr = (u16)(fakeEfuseUsedBytes); + else + rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&efuse_addr); + /* RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfuseGetCurrentSize_8723A(), start_efuse_addr = %d\n", efuse_addr)); */ + + while (bContinual && + efuse_OneByteRead(pAdapter, efuse_addr , &efuse_data, bPseudoTest) && + (efuse_addr < EFUSE_REAL_CONTENT_LEN_8814A)) { + if (efuse_data != 0xFF) { + if ((efuse_data & 0x1F) == 0x0F) { /* extended header */ + hoffset = efuse_data; + efuse_addr++; + efuse_OneByteRead(pAdapter, efuse_addr, &efuse_data, bPseudoTest); + if ((efuse_data & 0x0F) == 0x0F) { + efuse_addr++; + continue; + } else { + hoffset = ((hoffset & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); + hworden = efuse_data & 0x0F; + } + } else { + hoffset = (efuse_data >> 4) & 0x0F; + hworden = efuse_data & 0x0F; + } + RTW_INFO(FUNC_ADPT_FMT": Offset=%d Worden=%#X\n", + FUNC_ADPT_ARG(pAdapter), hoffset, hworden); + word_cnts = Efuse_CalculateWordCnts(hworden); + /* read next header */ + efuse_addr = efuse_addr + (word_cnts * 2) + 1; + } else + bContinual = _FALSE ; + } + + if (bPseudoTest) { + fakeEfuseUsedBytes = efuse_addr; + pEfuseHal->fakeEfuseUsedBytes = efuse_addr; + RTW_INFO("%s(), return %d\n", __func__, pEfuseHal->fakeEfuseUsedBytes); + } else { + pEfuseHal->EfuseUsedBytes = efuse_addr; + pEfuseHal->EfuseUsedPercentage = (u8)((pEfuseHal->EfuseUsedBytes * 100) / pEfuseHal->PhysicalLen_WiFi); + rtw_hal_set_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&efuse_addr); + rtw_hal_set_hwreg(pAdapter, HW_VAR_EFUSE_USAGE, (u8 *)&(pEfuseHal->EfuseUsedPercentage)); + RTW_INFO("%s(), return %d\n", __func__, efuse_addr); + } + + return efuse_addr; + +} + +static u16 +rtl8814_EfuseGetCurrentSize( + PADAPTER pAdapter, + u8 efuseType, + BOOLEAN bPseudoTest) +{ + u16 ret = 0; + + ret = hal_EfuseGetCurrentSize_8814A(pAdapter, bPseudoTest); + + return ret; +} + + +static int +hal_EfusePgPacketRead_8814A( + PADAPTER pAdapter, + u8 offset, + u8 *data, + BOOLEAN bPseudoTest) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + PEFUSE_HAL pEfuseHal = &(pHalData->EfuseHal); + u8 ReadState = PG_STATE_HEADER; + + int bContinual = _TRUE; + int bDataEmpty = _TRUE ; + + u8 efuse_data, word_cnts = 0; + u16 efuse_addr = 0; + u8 hoffset = 0, hworden = 0; + u8 tmpidx = 0; + u8 tmpdata[8]; + u8 tmp_header = 0; + + if (data == NULL) + return _FALSE; + if (offset >= EFUSE_MAX_SECTION_JAGUAR) + return _FALSE; + + _rtw_memset((void *)data, 0xff, sizeof(u8) * PGPKT_DATA_SIZE); + _rtw_memset((void *)tmpdata, 0xff, sizeof(u8) * PGPKT_DATA_SIZE); + + /* */ + /* Efuse has been pre-programmed dummy 5Bytes at the end of Efuse by CP. */ + /* Skip dummy parts to prevent unexpected data read from Efuse. */ + /* By pass right now. 2009.02.19. */ + /* */ + while (bContinual && (efuse_addr < pEfuseHal->PhysicalLen_WiFi)) { + /* ------- Header Read ------------- */ + if (ReadState & PG_STATE_HEADER) { + if (efuse_OneByteRead(pAdapter, efuse_addr , &efuse_data, bPseudoTest) && (efuse_data != 0xFF)) { + if (ALL_WORDS_DISABLED(efuse_data)) { + tmp_header = efuse_data; + efuse_addr++; + efuse_OneByteRead(pAdapter, efuse_addr , &efuse_data, bPseudoTest); + if ((efuse_data & 0x0F) != 0x0F) { + hoffset = ((tmp_header & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); + hworden = efuse_data & 0x0F; + } else { + efuse_addr++; + break; + } + + } else { + hoffset = (efuse_data >> 4) & 0x0F; + hworden = efuse_data & 0x0F; + } + word_cnts = Efuse_CalculateWordCnts(hworden); + bDataEmpty = _TRUE ; + + if (hoffset == offset) { + for (tmpidx = 0; tmpidx < word_cnts * 2 ; tmpidx++) { + if (efuse_OneByteRead(pAdapter, efuse_addr + 1 + tmpidx , &efuse_data, bPseudoTest)) { + tmpdata[tmpidx] = efuse_data; + if (efuse_data != 0xff) + bDataEmpty = _FALSE; + } + } + if (bDataEmpty == _FALSE) + ReadState = PG_STATE_DATA; + else { /* read next header */ + efuse_addr = efuse_addr + (word_cnts * 2) + 1; + ReadState = PG_STATE_HEADER; + } + } else { /* read next header */ + efuse_addr = efuse_addr + (word_cnts * 2) + 1; + ReadState = PG_STATE_HEADER; + } + + } else + bContinual = _FALSE ; + } + /* ------- Data section Read ------------- */ + else if (ReadState & PG_STATE_DATA) { + efuse_WordEnableDataRead(hworden, tmpdata, data); + efuse_addr = efuse_addr + (word_cnts * 2) + 1; + ReadState = PG_STATE_HEADER; + } + + } + + if ((data[0] == 0xff) && (data[1] == 0xff) && (data[2] == 0xff) && (data[3] == 0xff) && + (data[4] == 0xff) && (data[5] == 0xff) && (data[6] == 0xff) && (data[7] == 0xff)) + return _FALSE; + else + return _TRUE; +} + +static int +rtl8814_Efuse_PgPacketRead(PADAPTER pAdapter, + u8 offset, + u8 *data, + BOOLEAN bPseudoTest) +{ + int ret = 0; + + ret = hal_EfusePgPacketRead_8814A(pAdapter, offset, data, bPseudoTest); + + return ret; +} + +BOOLEAN +efuse_PgPacketCheck( + PADAPTER pAdapter, + u8 efuseType, + BOOLEAN bPseudoTest +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + if (Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest) >= (EFUSE_REAL_CONTENT_LEN_8814A - EFUSE_PROTECT_BYTES_BANK_8814A)) { + RTW_INFO("%s()error: %x >= %x\n", __func__, Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest), (EFUSE_REAL_CONTENT_LEN_8814A - EFUSE_PROTECT_BYTES_BANK_8814A)); + return _FALSE; + } + + return _TRUE; +} + +void +efuse_PgPacketConstruct( + u8 offset, + u8 word_en, + u8 *pData, + PPGPKT_STRUCT pTargetPkt +) +{ + _rtw_memset((void *)pTargetPkt->data, 0xFF, sizeof(u8) * 8); + pTargetPkt->offset = offset; + pTargetPkt->word_en = word_en; + efuse_WordEnableDataRead(word_en, pData, pTargetPkt->data); + pTargetPkt->word_cnts = Efuse_CalculateWordCnts(pTargetPkt->word_en); + + RTW_INFO("efuse_PgPacketConstruct(), targetPkt, offset=%d, word_en=0x%x, word_cnts=%d\n", pTargetPkt->offset, pTargetPkt->word_en, pTargetPkt->word_cnts); +} + + +u16 +efuse_PgPacketExceptionHandle( + PADAPTER pAdapter, + u16 ErrOffset +) +{ + RTW_INFO("===> efuse_PgPacketExceptionHandle(), ErrOffset = 0x%X\n", ErrOffset); + + /* ErrOffset is the offset of bad (extension) header. */ + /* if (IS_HARDWARE_TYPE_8812AU(pAdapter)) */ + /* ErrOffset = Hal_EfusePgPacketExceptionHandle_8812A(pAdapter, ErrOffset); */ + + RTW_INFO("<=== efuse_PgPacketExceptionHandle(), recovered! Jump to Offset = 0x%X\n", ErrOffset); + + return ErrOffset; +} + + +BOOLEAN +hal_EfuseCheckIfDatafollowed( + PADAPTER pAdapter, + u8 word_cnts, + u16 startAddr, + BOOLEAN bPseudoTest +) +{ + BOOLEAN bRet = FALSE; + u8 i, efuse_data; + + for (i = 0; i < (word_cnts * 2) ; i++) { + if (efuse_OneByteRead(pAdapter, (startAddr + i) , &efuse_data, bPseudoTest) && (efuse_data != 0xFF)) + bRet = TRUE; + } + + return bRet; +} + +BOOLEAN +hal_EfuseWordEnMatched( + PPGPKT_STRUCT pTargetPkt, + PPGPKT_STRUCT pCurPkt, + u8 *pWden +) +{ + u8 match_word_en = 0x0F; /* default all words are disabled */ + + /* check if the same words are enabled both target and current PG packet */ + if (((pTargetPkt->word_en & BIT0) == 0) && + ((pCurPkt->word_en & BIT0) == 0)) { + match_word_en &= ~BIT0; /* enable word 0 */ + } + if (((pTargetPkt->word_en & BIT1) == 0) && + ((pCurPkt->word_en & BIT1) == 0)) { + match_word_en &= ~BIT1; /* enable word 1 */ + } + if (((pTargetPkt->word_en & BIT2) == 0) && + ((pCurPkt->word_en & BIT2) == 0)) { + match_word_en &= ~BIT2; /* enable word 2 */ + } + if (((pTargetPkt->word_en & BIT3) == 0) && + ((pCurPkt->word_en & BIT3) == 0)) { + match_word_en &= ~BIT3; /* enable word 3 */ + } + + *pWden = match_word_en; + + if (match_word_en != 0xf) + return TRUE; + else + return FALSE; +} + + +BOOLEAN +efuse_PgPacketPartialWrite( + PADAPTER pAdapter, + u8 efuseType, + u16 *pAddr, + PPGPKT_STRUCT pTargetPkt, + BOOLEAN bPseudoTest +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + PEFUSE_HAL pEfuseHal = &(pHalData->EfuseHal); + BOOLEAN bRet = _FALSE; + u8 i, efuse_data = 0, cur_header = 0; + u8 matched_wden = 0, badworden = 0; + u16 startAddr = 0; + PGPKT_STRUCT curPkt; + u16 max_sec_num = (efuseType == EFUSE_WIFI) ? pEfuseHal->MaxSecNum_WiFi : pEfuseHal->MaxSecNum_BT; + u16 efuse_max = pEfuseHal->BankSize; + u16 efuse_max_available_len = + (efuseType == EFUSE_WIFI) ? pEfuseHal->TotalAvailBytes_WiFi : pEfuseHal->TotalAvailBytes_BT; + + if (bPseudoTest) { + pEfuseHal->fakeEfuseBank = (efuseType == EFUSE_WIFI) ? 0 : pEfuseHal->fakeEfuseBank; + Efuse_GetCurrentSize(pAdapter, efuseType, _TRUE); + } + + /* EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, &efuse_max_available_len, bPseudoTest); */ + /* EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_CONTENT_LEN_BANK, &efuse_max, bPseudoTest); */ + + if (efuseType == EFUSE_WIFI) { + if (bPseudoTest) { +#ifdef HAL_EFUSE_MEMORY + startAddr = (u16)pEfuseHal->fakeEfuseUsedBytes; +#else + startAddr = (u16)fakeEfuseUsedBytes; +#endif + + } else + rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&startAddr); + } else { + if (bPseudoTest) { +#ifdef HAL_EFUSE_MEMORY + startAddr = (u16)pEfuseHal->fakeBTEfuseUsedBytes; +#else + startAddr = (u16)fakeBTEfuseUsedBytes; +#endif + + } else + rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BT_BYTES, (u8 *)&startAddr); + } + + startAddr %= efuse_max; + RTW_INFO("%s: startAddr=%#X\n", __FUNCTION__, startAddr); + RTW_INFO("efuse_PgPacketPartialWrite(), startAddr = 0x%X\n", startAddr); + + while (1) { + if (startAddr >= efuse_max_available_len) { + bRet = _FALSE; + RTW_INFO("startAddr(%d) >= efuse_max_available_len(%d)\n", + startAddr, efuse_max_available_len); + break; + } + + if (efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest) && (efuse_data != 0xFF)) { + if (EXT_HEADER(efuse_data)) { + cur_header = efuse_data; + startAddr++; + efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest); + if (ALL_WORDS_DISABLED(efuse_data)) { + u16 recoveredAddr = startAddr; + recoveredAddr = efuse_PgPacketExceptionHandle(pAdapter, startAddr - 1); + + if (recoveredAddr == (startAddr - 1)) { + RTW_INFO("Error! All words disabled and the recovery failed, (Addr, Data) = (0x%X, 0x%X)\n", + startAddr, efuse_data); + pAdapter->LastError = ERR_INVALID_DATA; + break; + } else { + startAddr = recoveredAddr; + RTW_INFO("Bad extension header but recovered => Keep going.\n"); + continue; + } + } else { + curPkt.offset = ((cur_header & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); + curPkt.word_en = efuse_data & 0x0F; + } + } else { + if (ALL_WORDS_DISABLED(efuse_data)) { + u16 recoveredAddr = startAddr; + recoveredAddr = efuse_PgPacketExceptionHandle(pAdapter, startAddr); + if (recoveredAddr != startAddr) { + efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest); + RTW_INFO("Bad header but recovered => Read header again.\n"); + } + } + + cur_header = efuse_data; + curPkt.offset = (cur_header >> 4) & 0x0F; + curPkt.word_en = cur_header & 0x0F; + } + + if (curPkt.offset > max_sec_num) { + pAdapter->LastError = ERR_OUT_OF_RANGE; + pEfuseHal->Status = ERR_OUT_OF_RANGE; + bRet = _FALSE; + break; + } + + curPkt.word_cnts = Efuse_CalculateWordCnts(curPkt.word_en); + /* if same header is found but no data followed */ + /* write some part of data followed by the header. */ + if ((curPkt.offset == pTargetPkt->offset) && + (!hal_EfuseCheckIfDatafollowed(pAdapter, curPkt.word_cnts, startAddr + 1, bPseudoTest)) && + hal_EfuseWordEnMatched(pTargetPkt, &curPkt, &matched_wden)) { + RTW_INFO("Need to partial write data by the previous wrote header\n"); + /* RT_ASSERT(_FALSE, ("Error, Need to partial write data by the previous wrote header!!\n")); */ + /* Here to write partial data */ + badworden = Efuse_WordEnableDataWrite(pAdapter, startAddr + 1, matched_wden, pTargetPkt->data, bPseudoTest); + if (badworden != 0x0F) { + u32 PgWriteSuccess = 0; + /* if write fail on some words, write these bad words again */ + + PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pTargetPkt->offset, badworden, pTargetPkt->data, bPseudoTest); + + if (!PgWriteSuccess) { + bRet = _FALSE; /* write fail, return */ + break; + } + } + /* partial write ok, update the target packet for later use */ + for (i = 0; i < 4; i++) { + if ((matched_wden & (0x1 << i)) == 0) { /* this word has been written */ + pTargetPkt->word_en |= (0x1 << i); /* disable the word */ + } + } + pTargetPkt->word_cnts = Efuse_CalculateWordCnts(pTargetPkt->word_en); + } + /* read from next header */ + startAddr = startAddr + (curPkt.word_cnts * 2) + 1; + } else { + /* not used header, 0xff */ + *pAddr = startAddr; + RTW_INFO("Started from unused header offset=%d\n", startAddr); + bRet = _TRUE; + break; + } + } + return bRet; +} + + +BOOLEAN +hal_EfuseFixHeaderProcess( + PADAPTER pAdapter, + u8 efuseType, + PPGPKT_STRUCT pFixPkt, + u16 *pAddr, + BOOLEAN bPseudoTest +) +{ + u8 originaldata[8], badworden = 0; + u16 efuse_addr = *pAddr; + u32 PgWriteSuccess = 0; + + _rtw_memset((void *)originaldata, 0xff, 8); + + if (Efuse_PgPacketRead(pAdapter, pFixPkt->offset, originaldata, bPseudoTest)) { + /* check if data exist */ + badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr + 1, pFixPkt->word_en, originaldata, bPseudoTest); + + if (badworden != 0xf) { /* write fail */ + PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pFixPkt->offset, badworden, originaldata, bPseudoTest); + if (!PgWriteSuccess) + return _FALSE; + else + efuse_addr = Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest); + } else + efuse_addr = efuse_addr + (pFixPkt->word_cnts * 2) + 1; + } else + efuse_addr = efuse_addr + (pFixPkt->word_cnts * 2) + 1; + *pAddr = efuse_addr; + return _TRUE; +} + + +BOOLEAN +efuse_PgPacketWrite2ByteHeader( + PADAPTER pAdapter, + u8 efuseType, + u16 *pAddr, + PPGPKT_STRUCT pTargetPkt, + BOOLEAN bPseudoTest) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + PEFUSE_HAL pEfuseHal = &(pHalData->EfuseHal); + BOOLEAN bRet = _FALSE; + u16 efuse_addr = *pAddr; + u8 pg_header = 0, tmp_header = 0, pg_header_temp = 0; + u8 repeatcnt = 0; + u16 efuse_max_available_len = + (efuseType == EFUSE_WIFI) ? pEfuseHal->TotalAvailBytes_WiFi : pEfuseHal->TotalAvailBytes_BT; + + RTW_INFO("Wirte 2byte header\n"); + + + while (efuse_addr < efuse_max_available_len) { + pg_header = ((pTargetPkt->offset & 0x07) << 5) | 0x0F; + RTW_INFO("pg_header = 0x%x\n", pg_header); + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); + + if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || + IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter) || IS_HARDWARE_TYPE_8814A(pAdapter)) + phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT26, 0); /* Use 10K Read, Suggested by Morris & Victor*/ + + efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + + if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || + IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter) || IS_HARDWARE_TYPE_8814A(pAdapter)) + phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT26, 1); /* Use 10K Read, Suggested by Morris & Victor*/ + + while (tmp_header == 0xFF || pg_header != tmp_header) { + if (repeatcnt++ > pEfuseHal->DataRetry) { + RTW_INFO("Repeat over limit for pg_header!!\n"); + return _FALSE; + } + + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + } + + /* to write ext_header */ + if (tmp_header == pg_header) { + efuse_addr++; + pg_header_temp = pg_header; + pg_header = ((pTargetPkt->offset & 0x78) << 1) | pTargetPkt->word_en; + + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); + + if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || + IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter) || IS_HARDWARE_TYPE_8814A(pAdapter)) + phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT26, 0); /* Use 10K Read, Suggested by Morris & Victor*/ + + efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + + if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || + IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter) || IS_HARDWARE_TYPE_8814A(pAdapter)) + phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT26, 1); /* Use 10K Read, Suggested by Morris & Victor*/ + + while (tmp_header == 0xFF || pg_header != tmp_header) { + if (repeatcnt++ > pEfuseHal->DataRetry) { + RTW_INFO("Repeat over limit for ext_header!!\n"); + return _FALSE; + } + + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + } + + if ((tmp_header & 0x0F) == 0x0F) { /* word_en PG fail */ + if (repeatcnt++ > pEfuseHal->DataRetry) { + RTW_INFO("Repeat over limit for word_en!!\n"); + return _FALSE; + } else { + efuse_addr++; + continue; + } + } else if (pg_header != tmp_header) { /* offset PG fail */ + PGPKT_STRUCT fixPkt; + /* RT_ASSERT(_FALSE, ("Error, efuse_PgPacketWrite2ByteHeader(), offset PG fail, need to cover the existed data!!\n")); */ + RTW_INFO("Error condition for offset PG fail, need to cover the existed data\n"); + fixPkt.offset = ((pg_header_temp & 0xE0) >> 5) | ((tmp_header & 0xF0) >> 1); + fixPkt.word_en = tmp_header & 0x0F; + fixPkt.word_cnts = Efuse_CalculateWordCnts(fixPkt.word_en); + if (!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) + return _FALSE; + } else { + bRet = _TRUE; + break; + } + } else if ((tmp_header & 0x1F) == 0x0F) { /* wrong extended header */ + efuse_addr += 2; + continue; + } + } + + *pAddr = efuse_addr; + return bRet; +} + + +BOOLEAN +efuse_PgPacketWrite1ByteHeader( + PADAPTER pAdapter, + u8 efuseType, + u16 *pAddr, + PPGPKT_STRUCT pTargetPkt, + BOOLEAN bPseudoTest) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + PEFUSE_HAL pEfuseHal = &(pHalData->EfuseHal); + BOOLEAN bRet = _FALSE; + u8 pg_header = 0, tmp_header = 0; + u16 efuse_addr = *pAddr; + u8 repeatcnt = 0; + + RTW_INFO("Wirte 1byte header\n"); + pg_header = ((pTargetPkt->offset << 4) & 0xf0) | pTargetPkt->word_en; + + if (IS_HARDWARE_TYPE_8723BE(pAdapter)) + efuse_OneByteWrite(pAdapter, 0x1FF, 00, _FALSE); /* increase current */ + + + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); + + if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || + IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter) || IS_HARDWARE_TYPE_8814A(pAdapter)) + phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT26, 0); /* Use 10K Read, Suggested by Morris & Victor */ + + efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + + if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || + IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter) || IS_HARDWARE_TYPE_8814A(pAdapter)) + phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT26, 1); /* Restored to 1.5K Read, Suggested by Morris & Victor */ + + + while (tmp_header == 0xFF || pg_header != tmp_header) { + if (repeatcnt++ > pEfuseHal->HeaderRetry) { + RTW_INFO("retry %d times fail!!\n", repeatcnt); + return _FALSE; + } + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + RTW_INFO("===> efuse_PgPacketWrite1ByteHeader: Keep %d-th retrying, tmp_header = 0x%X\n", repeatcnt, tmp_header); + } + + if (pg_header == tmp_header) + bRet = _TRUE; + else { + PGPKT_STRUCT fixPkt; + /* RT_ASSERT(_FALSE, ("Error, efuse_PgPacketWrite1ByteHeader(), offset PG fail, need to cover the existed data!!\n")); */ + RTW_INFO(" pg_header(0x%X) != tmp_header(0x%X)\n", pg_header, tmp_header); + RTW_INFO("Error condition for fixed PG packet, need to cover the existed data: (Addr, Data) = (0x%X, 0x%X)\n", + efuse_addr, tmp_header); + fixPkt.offset = (tmp_header >> 4) & 0x0F; + fixPkt.word_en = tmp_header & 0x0F; + fixPkt.word_cnts = Efuse_CalculateWordCnts(fixPkt.word_en); + if (!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) + return _FALSE; + } + + *pAddr = efuse_addr; + return bRet; +} + + + +BOOLEAN +efuse_PgPacketWriteHeader( + PADAPTER pAdapter, + u8 efuseType, + u16 *pAddr, + PPGPKT_STRUCT pTargetPkt, + BOOLEAN bPseudoTest) +{ + BOOLEAN bRet = _FALSE; + + if (pTargetPkt->offset >= EFUSE_MAX_SECTION_BASE) + bRet = efuse_PgPacketWrite2ByteHeader(pAdapter, efuseType, pAddr, pTargetPkt, bPseudoTest); + else + bRet = efuse_PgPacketWrite1ByteHeader(pAdapter, efuseType, pAddr, pTargetPkt, bPseudoTest); + + return bRet; +} + +BOOLEAN +efuse_PgPacketWriteData( + PADAPTER pAdapter, + u8 efuseType, + u16 *pAddr, + PPGPKT_STRUCT pTargetPkt, + BOOLEAN bPseudoTest) +{ + BOOLEAN bRet = _FALSE; + u16 efuse_addr = *pAddr; + u8 badworden = 0; + u32 PgWriteSuccess = 0; + + badworden = 0x0f; + badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr + 1, pTargetPkt->word_en, pTargetPkt->data, bPseudoTest); + if (badworden == 0x0F) { + RTW_INFO("efuse_PgPacketWriteData ok!!\n"); + return _TRUE; + } else { + /* Reorganize other pg packet */ + /* RT_ASSERT(_FALSE, ("Error, efuse_PgPacketWriteData(), wirte data fail!!\n")); */ + RTW_INFO("efuse_PgPacketWriteData Fail!!\n"); + + PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pTargetPkt->offset, badworden, pTargetPkt->data, bPseudoTest); + if (!PgWriteSuccess) + return _FALSE; + else + return _TRUE; + } + + return bRet; +} + + +int +hal_EfusePgPacketWrite_8814A(PADAPTER pAdapter, + u8 offset, + u8 word_en, + u8 *pData, + BOOLEAN bPseudoTest) +{ + u8 efuseType = EFUSE_WIFI; + PGPKT_STRUCT targetPkt; + u16 startAddr = 0; + + RTW_INFO("===> efuse_PgPacketWrite[%s], offset: 0x%X\n", (efuseType == EFUSE_WIFI) ? "WIFI" : "BT", offset); + + /* 4 [1] Check if the remaining space is available to write. */ + if (!efuse_PgPacketCheck(pAdapter, efuseType, bPseudoTest)) { + pAdapter->LastError = ERR_WRITE_PROTECT; + RTW_INFO("efuse_PgPacketCheck(), fail!!\n"); + return _FALSE; + } + + /* 4 [2] Construct a packet to write: (Data, Offset, and WordEnable) */ + efuse_PgPacketConstruct(offset, word_en, pData, &targetPkt); + + + /* 4 [3] Fix headers without data or fix bad headers, and then return the address where to get started. */ + if (!efuse_PgPacketPartialWrite(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) { + pAdapter->LastError = ERR_INVALID_DATA; + RTW_INFO("efuse_PgPacketPartialWrite(), fail!!\n"); + return _FALSE; + } + + /* 4 [4] Write the (extension) header. */ + if (!efuse_PgPacketWriteHeader(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) { + pAdapter->LastError = ERR_IO_FAILURE; + RTW_INFO("efuse_PgPacketWriteHeader(), fail!!\n"); + return _FALSE; + } + + /* 4 [5] Write the data. */ + if (!efuse_PgPacketWriteData(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) { + pAdapter->LastError = ERR_IO_FAILURE; + RTW_INFO("efuse_PgPacketWriteData(), fail!!\n"); + return _FALSE; + } + + RTW_INFO("<=== efuse_PgPacketWrite\n"); + return _TRUE; +} + +static int +rtl8814_Efuse_PgPacketWrite(PADAPTER pAdapter, + u8 offset, + u8 word_en, + u8 *data, + BOOLEAN bPseudoTest) +{ + int ret; + + ret = hal_EfusePgPacketWrite_8814A(pAdapter, offset, word_en, data, bPseudoTest); + + return ret; +} + +void InitRDGSetting8814A(PADAPTER padapter) +{ + rtw_write8(padapter, REG_RD_CTRL, 0xFF); + rtw_write16(padapter, REG_RD_NAV_NXT, 0x200); + rtw_write8(padapter, REG_RD_RESP_PKT_TH, 0x05); +} + +void ReadRFType8814A(PADAPTER padapter) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter); + +#if DISABLE_BB_RF + pHalData->rf_chip = RF_PSEUDO_11N; +#else + pHalData->rf_chip = RF_6052; +#endif + + /* if (pHalData->rf_type == RF_1T1R){ */ + /* pHalData->bRFPathRxEnable[0] = _TRUE; */ + /* } */ + /* else { */ /* Default unknow type is 2T2r */ + /* pHalData->bRFPathRxEnable[0] = pHalData->bRFPathRxEnable[1] = _TRUE; */ + /* } */ + + if (IsSupported24G(padapter->registrypriv.wireless_mode) && + is_supported_5g(padapter->registrypriv.wireless_mode)) + pHalData->BandSet = BAND_ON_BOTH; + else if (is_supported_5g(padapter->registrypriv.wireless_mode)) + pHalData->BandSet = BAND_ON_5G; + else + pHalData->BandSet = BAND_ON_2_4G; + + /* if(padapter->bInHctTest) */ + /* pHalData->BandSet = BAND_ON_2_4G; */ +} + +void rtl8814_start_thread(PADAPTER padapter) +{ +} + +void rtl8814_stop_thread(PADAPTER padapter) +{ +} + +void hal_notch_filter_8814(_adapter *adapter, bool enable) +{ + if (enable) { + RTW_INFO("Enable notch filter\n"); + /* rtw_write8(adapter, rOFDM0_RxDSP+1, rtw_read8(adapter, rOFDM0_RxDSP+1) | BIT1); */ + } else { + RTW_INFO("Disable notch filter\n"); + /* rtw_write8(adapter, rOFDM0_RxDSP+1, rtw_read8(adapter, rOFDM0_RxDSP+1) & ~BIT1); */ + } +} + +u8 +GetEEPROMSize8814A( + PADAPTER Adapter +) +{ + u8 size = 0; + u32 curRCR; + + curRCR = rtw_read16(Adapter, REG_SYS_EEPROM_CTRL); + size = (curRCR & EEPROMSEL) ? 6 : 4; /* 6: EEPROM used is 93C46, 4: boot from E-Fuse. */ + + RTW_INFO("EEPROM type is %s\n", size == 4 ? "E-FUSE" : "93C46"); + /* return size; */ + return 4; /* <20120713, Kordan> The default value of HW is 6 ?!! */ +} + +#if 0 +void CheckAutoloadState8812A(PADAPTER padapter) +{ + + u8 val8; + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter); + + + /* check system boot selection */ + val8 = rtw_read8(padapter, REG_9346CR); + pHalData->EepromOrEfuse = (val8 & BOOT_FROM_EEPROM) ? _TRUE : _FALSE; + pHalData->bautoload_fail_flag = (val8 & EEPROM_EN) ? _FALSE : _TRUE; + + RTW_INFO("%s: 9346CR(%#x)=0x%02x, Boot from %s, Autoload %s!\n", + __FUNCTION__, REG_9346CR, val8, + (pHalData->EepromOrEfuse ? "EEPROM" : "EFUSE"), + (pHalData->bautoload_fail_flag ? "Fail" : "OK")); +} +#endif + +void +hal_InitPGData_8814A( + PADAPTER padapter, + u8 *PROMContent +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + u32 i; + u16 value16; + + if (_FALSE == pHalData->bautoload_fail_flag) { + /* autoload OK. */ + /* hal_ReadeFuse_8814A is FW offload read efuse, todo */ + /* #if (defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI)) && (MP_DRIVER != 1) */ + /* if(hal_ReadeFuse_8814A(pAdapter) == _FAIL) */ + /* #endif */ + + /* Read EFUSE real map to shadow. */ + EFUSE_ShadowMapUpdate(padapter, EFUSE_WIFI, _FALSE); + } else { + /* autoload fail */ + RTW_INFO("AutoLoad Fail reported from CR9346!!\n"); + /* update to default value 0xFF */ + EFUSE_ShadowMapUpdate(padapter, EFUSE_WIFI, _FALSE); + } + +#ifdef CONFIG_EFUSE_CONFIG_FILE + if (check_phy_efuse_tx_power_info_valid(padapter) == _FALSE) { + if (Hal_readPGDataFromConfigFile(padapter) != _SUCCESS) + RTW_ERR("invalid phy efuse and read from file fail, will use driver default!!\n"); + } +#endif +} + +static void read_chip_version_8814a(PADAPTER Adapter) +{ + u32 value32; + PHAL_DATA_TYPE pHalData; + u8 vdr; + + pHalData = GET_HAL_DATA(Adapter); + + value32 = rtw_read32(Adapter, REG_SYS_CFG); + RTW_INFO("%s SYS_CFG(0x%X)=0x%08x\n", __FUNCTION__, REG_SYS_CFG, value32); + + pHalData->version_id.ICType = CHIP_8814A; + + pHalData->version_id.ChipType = ((value32 & RTL_ID) ? TEST_CHIP : NORMAL_CHIP); + + pHalData->version_id.RFType = RF_TYPE_3T3R; + + vdr = (value32 & EXT_VENDOR_ID) >> EXT_VENDOR_ID_SHIFT; + if (vdr == 0x00) + pHalData->version_id.VendorType = CHIP_VENDOR_TSMC; + else if (vdr == 0x01) + pHalData->version_id.VendorType = CHIP_VENDOR_SMIC; + else if (vdr == 0x02) + pHalData->version_id.VendorType = CHIP_VENDOR_UMC; + + pHalData->version_id.CUTVersion = (value32 & CHIP_VER_RTL_MASK) >> CHIP_VER_RTL_SHIFT; /* IC version (CUT) */ + + pHalData->MultiFunc = RT_MULTI_FUNC_NONE; + +#if 1 + dump_chip_info(pHalData->version_id); +#endif + +} + +void +hal_PatchwithJaguar_8814( + PADAPTER Adapter, + RT_MEDIA_STATUS MediaStatus +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct mlme_ext_priv *pmlmeext = &(Adapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + if ((MediaStatus == RT_MEDIA_CONNECT) && + (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK_JAGUAR_BCUTAP)) { + rtw_write8(Adapter, rVhtlen_Use_Lsig_Jaguar, 0x1); + rtw_write8(Adapter, REG_TCR + 3, BIT2); + } else { + rtw_write8(Adapter, rVhtlen_Use_Lsig_Jaguar, 0x3F); + rtw_write8(Adapter, REG_TCR + 3, BIT0 | BIT1 | BIT2); + } + + + /*if( (MediaStatus == RT_MEDIA_CONNECT) && + ((pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK_JAGUAR_BCUTAP) || + (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK_JAGUAR_CCUTAP))) + { + rtw_write8(Adapter, rBWIndication_Jaguar + 3, + (rtw_read8(Adapter, rBWIndication_Jaguar + 3) | BIT2)); + } + else + { + rtw_write8(Adapter, rBWIndication_Jaguar + 3, + (rtw_read8(Adapter, rBWIndication_Jaguar + 3) & (~BIT2))); + }*/ +} + +void init_hal_spec_8814a(_adapter *adapter) +{ + struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter); + + hal_spec->ic_name = "rtl8814a"; + hal_spec->macid_num = 128; + hal_spec->sec_cam_ent_num = 64; + hal_spec->sec_cap = SEC_CAP_CHK_BMC; + + hal_spec->rfpath_num_2g = 4; + hal_spec->rfpath_num_5g = 4; + hal_spec->rf_reg_path_num = 4; + hal_spec->max_tx_cnt = 3; + + hal_spec->tx_nss_num = 3; + hal_spec->rx_nss_num = 3; + hal_spec->band_cap = BAND_CAP_2G | BAND_CAP_5G; + hal_spec->bw_cap = BW_CAP_20M | BW_CAP_40M | BW_CAP_80M; + hal_spec->port_num = 5; + hal_spec->proto_cap = PROTO_CAP_11B | PROTO_CAP_11G | PROTO_CAP_11N | PROTO_CAP_11AC; + + hal_spec->txgi_max = 63; + hal_spec->txgi_pdbm = 2; + + hal_spec->wl_func = 0 + | WL_FUNC_P2P + | WL_FUNC_MIRACAST + | WL_FUNC_TDLS + ; + +#if CONFIG_TX_AC_LIFETIME + hal_spec->tx_aclt_unit_factor = 8; +#endif + + hal_spec->pg_txpwr_saddr = 0x10; + hal_spec->pg_txgi_diff_factor = 1; + + rtw_macid_ctl_init_sleep_reg(adapter_to_macidctl(adapter) + , REG_MACID_SLEEP + , REG_MACID_SLEEP_1 + , REG_MACID_SLEEP_2 + , REG_MACID_SLEEP_3); +} + +void InitDefaultValue8814A(PADAPTER padapter) +{ + PHAL_DATA_TYPE pHalData; + struct pwrctrl_priv *pwrctrlpriv; + u8 i; + + pHalData = GET_HAL_DATA(padapter); + pwrctrlpriv = adapter_to_pwrctl(padapter); + + /* init default value */ + pHalData->fw_ractrl = _FALSE; + if (!pwrctrlpriv->bkeepfwalive) + pHalData->LastHMEBoxNum = 0; + + /* init dm default value */ + pHalData->bChnlBWInitialized = _FALSE; + pHalData->bIQKInitialized = _FALSE; + + pHalData->EfuseHal.fakeEfuseBank = 0; + pHalData->EfuseHal.fakeEfuseUsedBytes = 0; + _rtw_memset(pHalData->EfuseHal.fakeEfuseContent, 0xFF, EFUSE_MAX_HW_SIZE); + _rtw_memset(pHalData->EfuseHal.fakeEfuseInitMap, 0xFF, EFUSE_MAX_MAP_LEN); + _rtw_memset(pHalData->EfuseHal.fakeEfuseModifiedMap, 0xFF, EFUSE_MAX_MAP_LEN); +} + +void +_InitBeaconParameters_8814A( + PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u16 val16; + u8 val8; + + val8 = DIS_TSF_UDT; + val16 = val8 | (val8 << 8); /* port0 and port1 */ +#ifdef CONFIG_BT_COEXIST + if (pHalData->EEPROMBluetoothCoexist == 1) { + /* Enable prot0 beacon function for PSTDMA */ + val16 |= EN_BCN_FUNCTION; + } +#endif + rtw_write16(Adapter, REG_BCN_CTRL, val16); + + /* TBTT setup time */ + rtw_write8(Adapter, REG_TBTT_PROHIBIT, TBTT_PROHIBIT_SETUP_TIME); + + /* TBTT hold time: 0x540[19:8] */ + rtw_write8(Adapter, REG_TBTT_PROHIBIT + 1, TBTT_PROHIBIT_HOLD_TIME_STOP_BCN & 0xFF); + rtw_write8(Adapter, REG_TBTT_PROHIBIT + 2, + (rtw_read8(Adapter, REG_TBTT_PROHIBIT + 2) & 0xF0) | (TBTT_PROHIBIT_HOLD_TIME_STOP_BCN >> 8)); + + rtw_write8(Adapter, REG_DRVERLYINT, DRIVER_EARLY_INT_TIME_8814);/* 5ms */ + rtw_write8(Adapter, REG_BCNDMATIM, BCN_DMA_ATIME_INT_TIME_8814); /* 2ms */ + + /* Suggested by designer timchen. Change beacon AIFS to the largest number */ + /* beacause test chip does not contension before sending beacon. by tynli. 2009.11.03 */ + rtw_write16(Adapter, REG_BCNTCFG, 0x4413); + +} + +static void +_BeaconFunctionEnable( + PADAPTER Adapter, + BOOLEAN Enable, + BOOLEAN Linked +) +{ + rtw_write8(Adapter, REG_BCN_CTRL, (DIS_TSF_UDT | EN_BCN_FUNCTION | DIS_BCNQ_SUB)); + + rtw_write8(Adapter, REG_RD_CTRL + 1, 0x6F); +} + + + +void SetBeaconRelatedRegisters8814A(PADAPTER padapter) +{ + u32 value32; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u32 bcn_ctrl_reg = REG_BCN_CTRL; + /* reset TSF, enable update TSF, correcting TSF On Beacon */ + + /* REG_MBSSID_BCN_SPACE */ + /* REG_BCNDMATIM */ + /* REG_ATIMWND */ + /* REG_TBTT_PROHIBIT */ + /* REG_DRVERLYINT */ + /* REG_BCN_MAX_ERR */ + /* REG_BCNTCFG */ /* (0x510) */ + /* REG_DUAL_TSF_RST */ + /* REG_BCN_CTRL */ /* (0x550) */ + +#ifdef CONFIG_CONCURRENT_MODE + if (padapter->hw_port == HW_PORT1) + bcn_ctrl_reg = REG_BCN_CTRL_1; +#endif + + /* BCN interval */ + rtw_hal_set_hwreg(padapter, HW_VAR_BEACON_INTERVAL, (u8 *)&pmlmeinfo->bcn_interval); + + rtw_write8(padapter, REG_ATIMWND, 0x02);/* 2ms */ + + _InitBeaconParameters_8814A(padapter); + + rtw_write8(padapter, REG_SLOT, 0x09); + + value32 = rtw_read32(padapter, REG_TCR); + value32 &= ~TSFRST; + rtw_write32(padapter, REG_TCR, value32); + + value32 |= TSFRST; + rtw_write32(padapter, REG_TCR, value32); + + /* NOTE: Fix test chip's bug (about contention windows's randomness) */ + rtw_write8(padapter, REG_RXTSF_OFFSET_CCK, 0x50); + rtw_write8(padapter, REG_RXTSF_OFFSET_OFDM, 0x50); + + _BeaconFunctionEnable(padapter, _TRUE, _TRUE); + + ResumeTxBeacon(padapter); + + /* rtw_write8(padapter, 0x422, rtw_read8(padapter, 0x422)|BIT(6)); */ + + /* rtw_write8(padapter, 0x541, 0xff); */ + + /* rtw_write8(padapter, 0x542, rtw_read8(padapter, 0x541)|BIT(0)); */ + + rtw_write8(padapter, bcn_ctrl_reg, rtw_read8(padapter, bcn_ctrl_reg) | DIS_BCNQ_SUB); + +} + +static void hw_var_set_monitor(PADAPTER Adapter, u8 variable, u8 *val) +{ + u32 rcr_bits; + u16 value_rxfltmap2; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); + + if (*((u8 *)val) == _HW_STATE_MONITOR_) { + +#ifdef CONFIG_CUSTOMER_ALIBABA_GENERAL + rcr_bits = RCR_AAP | RCR_APM | RCR_AM | RCR_AB | RCR_APWRMGT | RCR_ADF | RCR_AMF | RCR_APP_PHYST_RXFF; +#else + /* Receive all type */ + rcr_bits = RCR_AAP | RCR_APM | RCR_AM | RCR_AB | RCR_APWRMGT | RCR_ADF | RCR_ACF | RCR_AMF | RCR_APP_PHYST_RXFF; + + /* Append FCS */ + rcr_bits |= RCR_APPFCS; +#endif +#if 0 + /* + CRC and ICV packet will drop in recvbuf2recvframe() + We no turn on it. + */ + rcr_bits |= (RCR_ACRC32 | RCR_AICV); +#endif + + rtw_hal_get_hwreg(Adapter, HW_VAR_RCR, (u8 *)&pHalData->rcr_backup); + rtw_hal_set_hwreg(Adapter, HW_VAR_RCR, (u8 *)&rcr_bits); + + /* Receive all data frames */ + value_rxfltmap2 = 0xFFFF; + rtw_write16(Adapter, REG_RXFLTMAP2, value_rxfltmap2); + +#if 0 + /* tx pause */ + rtw_write8(padapter, REG_TXPAUSE, 0xFF); +#endif + } else { + /* do nothing */ + } + +} + +static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8 *val) +{ + u8 val8; + u8 mode = *((u8 *)val); + static u8 isMonitor = _FALSE; + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if (isMonitor == _TRUE) { + /* reset RCR from backup */ + rtw_hal_set_hwreg(Adapter, HW_VAR_RCR, (u8 *)&pHalData->rcr_backup); + rtw_hal_rcr_set_chk_bssid(Adapter, MLME_ACTION_NONE); + isMonitor = _FALSE; + } + + if (mode == _HW_STATE_MONITOR_) { + isMonitor = _TRUE; + /* set net_type */ + Set_MSR(Adapter, _HW_STATE_NOLINK_); + + hw_var_set_monitor(Adapter, variable, val); + return; + } + + rtw_hal_set_hwreg(Adapter, HW_VAR_MAC_ADDR, adapter_mac_addr(Adapter)); /* set mac addr to mac register */ + +#ifdef CONFIG_CONCURRENT_MODE + if (Adapter->hw_port == HW_PORT1) { + /* disable Port1 TSF update */ + rtw_iface_disable_tsf_update(Adapter); + + /* set net_type */ + Set_MSR(Adapter, mode); + + RTW_INFO("%s()-%d mode = %d\n", __FUNCTION__, __LINE__, mode); + + if ((mode == _HW_STATE_STATION_) || (mode == _HW_STATE_NOLINK_)) { + if (!rtw_mi_get_ap_num(Adapter) && !rtw_mi_get_mesh_num(Adapter)) { + StopTxBeacon(Adapter); +#ifdef CONFIG_PCI_HCI + UpdateInterruptMask8814AE(Adapter, 0, 0, RT_BCN_INT_MASKS, 0); +#else /* CONFIG_PCI_HCI */ +#ifdef CONFIG_INTERRUPT_BASED_TXBCN + +#ifdef CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT + rtw_write8(Adapter, REG_DRVERLYINT, 0x05);/* restore early int time to 5ms */ + UpdateInterruptMask8814AU(Adapter, _TRUE, 0, IMR_BCNDMAINT0_8812); +#endif /* CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT */ + +#ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR + UpdateInterruptMask8814AU(Adapter, _TRUE , 0, (IMR_TXBCN0ERR_8812 | IMR_TXBCN0OK_8812)); +#endif/* CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR */ + +#endif /* CONFIG_INTERRUPT_BASED_TXBCN */ +#endif /* CONFIG_PCI_HCI */ + } + + rtw_write8(Adapter, REG_BCN_CTRL_1, DIS_TSF_UDT | DIS_ATIM); /* disable atim wnd and disable beacon function */ + /* rtw_write8(Adapter,REG_BCN_CTRL_1, DIS_TSF_UDT | EN_BCN_FUNCTION); */ + } else if (mode == _HW_STATE_ADHOC_) { +#ifdef RTL8814AE_SW_BCN + /*Beacon is polled to TXBUF*/ + rtw_write16(Adapter, REG_CR, rtw_read16(Adapter, REG_CR) | BIT(8)); + RTW_INFO("%s-%d: enable SW BCN, REG_CR=0x%x\n", __func__, __LINE__, rtw_read32(Adapter, REG_CR)); +#endif + ResumeTxBeacon(Adapter); + rtw_write8(Adapter, REG_BCN_CTRL_1, DIS_TSF_UDT | EN_BCN_FUNCTION | DIS_BCNQ_SUB); + } else if (mode == _HW_STATE_AP_) { +#ifdef CONFIG_PCI_HCI + UpdateInterruptMask8814AE(Adapter, RT_BCN_INT_MASKS, 0, 0, 0); +#else +#ifdef CONFIG_INTERRUPT_BASED_TXBCN +#ifdef CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT + UpdateInterruptMask8814AU(Adapter, _TRUE , IMR_BCNDMAINT0_8812, 0); +#endif/* CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT */ + +#ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR + UpdateInterruptMask8814AU(Adapter, _TRUE , (IMR_TXBCN0ERR_8812 | IMR_TXBCN0OK_8812), 0); +#endif/* CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR */ + +#endif /* CONFIG_INTERRUPT_BASED_TXBCN */ +#endif + + rtw_write8(Adapter, REG_BCN_CTRL_1, DIS_TSF_UDT | DIS_BCNQ_SUB); + +#ifdef RTL8814AE_SW_BCN + rtw_write16(Adapter, REG_CR, rtw_read16(Adapter, REG_CR) | BIT(8)); + RTW_INFO("%s-%d: enable SW BCN, REG_CR=0x%x\n", __func__, __LINE__, rtw_read32(Adapter, REG_CR)); +#endif + + /* enable to rx data frame */ + rtw_write16(Adapter, REG_RXFLTMAP2, 0xFFFF); + + /* Beacon Control related register for first time */ + rtw_write8(Adapter, REG_BCNDMATIM, 0x02); /* 2ms */ + + /* rtw_write8(Adapter, REG_BCN_MAX_ERR, 0xFF); */ + rtw_write8(Adapter, REG_ATIMWND_1, 0x0c); /* 12ms for port1 */ + + rtw_write16(Adapter, REG_TSFTR_SYN_OFFSET, 0x7fff);/* +32767 (~32ms) */ + + /* reset TSF2 */ + rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(1)); + + /* enable BCN1 Function for if2 */ + /* don't enable update TSF1 for if2 (due to TSF update when beacon/probe rsp are received) */ + rtw_write8(Adapter, REG_BCN_CTRL_1, (DIS_TSF_UDT | EN_BCN_FUNCTION | EN_TXBCN_RPT | DIS_BCNQ_SUB)); + +#ifdef CONFIG_CONCURRENT_MODE + if (!rtw_mi_buddy_check_mlmeinfo_state(Adapter, WIFI_FW_ASSOC_SUCCESS)) + rtw_write8(Adapter, REG_BCN_CTRL, + rtw_read8(Adapter, REG_BCN_CTRL) & ~EN_BCN_FUNCTION); +#endif + /* BCN1 TSF will sync to BCN0 TSF with offset(0x518) if if1_sta linked */ + /* rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(5)); */ + /* rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(3)); */ + + /* dis BCN0 ATIM WND if if1 is station */ + rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL) | DIS_ATIM); + +#ifdef CONFIG_TSF_RESET_OFFLOAD + /* Reset TSF for STA+AP concurrent mode */ + if (DEV_STA_LD_NUM(adapter_to_dvobj(Adapter))) { + if (rtw_hal_reset_tsf(Adapter, HW_PORT1) == _FAIL) + RTW_INFO("ERROR! %s()-%d: Reset port1 TSF fail\n", + __FUNCTION__, __LINE__); + } +#endif /* CONFIG_TSF_RESET_OFFLOAD */ + } + } else /* else for port0 */ +#endif /* CONFIG_CONCURRENT_MODE */ + { +#ifdef CONFIG_MI_WITH_MBSSID_CAM /*For Port0 - MBSS CAM*/ + hw_var_set_opmode_mbid(Adapter, mode); +#else + /* disable Port0 TSF update */ + rtw_iface_disable_tsf_update(Adapter); + + /* set net_type */ + Set_MSR(Adapter, mode); + + RTW_INFO("%s()-%d mode = %d\n", __FUNCTION__, __LINE__, mode); + + if ((mode == _HW_STATE_STATION_) || (mode == _HW_STATE_NOLINK_)) { +#ifdef CONFIG_CONCURRENT_MODE + if (!rtw_mi_get_ap_num(Adapter) && !rtw_mi_get_mesh_num(Adapter)) +#endif /* CONFIG_CONCURRENT_MODE */ + { + StopTxBeacon(Adapter); +#ifdef CONFIG_PCI_HCI + UpdateInterruptMask8814AE(Adapter, 0, 0, RT_BCN_INT_MASKS, 0); +#else +#ifdef CONFIG_INTERRUPT_BASED_TXBCN +#ifdef CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT + rtw_write8(Adapter, REG_DRVERLYINT, 0x05);/* restore early int time to 5ms */ + UpdateInterruptMask8814AU(Adapter, _TRUE, 0, IMR_BCNDMAINT0_8812); +#endif/* CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT */ + +#ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR + UpdateInterruptMask8814AU(Adapter, _TRUE , 0, (IMR_TXBCN0ERR_8812 | IMR_TXBCN0OK_8812)); +#endif /* CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR */ + +#endif /* CONFIG_INTERRUPT_BASED_TXBCN */ +#endif + } + + rtw_write8(Adapter, REG_BCN_CTRL, DIS_TSF_UDT | EN_BCN_FUNCTION | DIS_ATIM); /* disable atim wnd */ + /* rtw_write8(Adapter,REG_BCN_CTRL, DIS_TSF_UDT | EN_BCN_FUNCTION); */ + } else if (mode == _HW_STATE_ADHOC_) { +#ifdef RTL8814AE_SW_BCN + rtw_write16(Adapter, REG_CR, rtw_read16(Adapter, REG_CR) | BIT(8)); + RTW_INFO("%s-%d: enable SW BCN, REG_CR=0x%x\n", __func__, __LINE__, rtw_read32(Adapter, REG_CR)); +#endif + ResumeTxBeacon(Adapter); + rtw_write8(Adapter, REG_BCN_CTRL, DIS_TSF_UDT | EN_BCN_FUNCTION | DIS_BCNQ_SUB); + } else if (mode == _HW_STATE_AP_) { +#ifdef CONFIG_PCI_HCI + UpdateInterruptMask8814AE(Adapter, RT_BCN_INT_MASKS, 0, 0, 0); +#else +#ifdef CONFIG_INTERRUPT_BASED_TXBCN +#ifdef CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT + UpdateInterruptMask8814AU(Adapter, _TRUE , IMR_BCNDMAINT0_8812, 0); +#endif/* CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT */ + +#ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR + UpdateInterruptMask8814AU(Adapter, _TRUE , (IMR_TXBCN0ERR_8812 | IMR_TXBCN0OK_8812), 0); +#endif/* CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR */ + +#endif /* CONFIG_INTERRUPT_BASED_TXBCN */ +#endif + + rtw_write8(Adapter, REG_BCN_CTRL, DIS_TSF_UDT | DIS_BCNQ_SUB); + /*Beacon is polled to TXBUF*/ +#ifdef RTL8814AE_SW_BCN + rtw_write16(Adapter, REG_CR, rtw_read16(Adapter, REG_CR) | BIT(8)); + RTW_INFO("%s-%d: enable SW BCN, REG_CR=0x%x\n", __func__, __LINE__, rtw_read32(Adapter, REG_CR)); +#endif + + /* enable to rx data frame */ + rtw_write16(Adapter, REG_RXFLTMAP2, 0xFFFF); + + /* Beacon Control related register for first time */ + rtw_write8(Adapter, REG_BCNDMATIM, 0x02); /* 2ms */ + + /* rtw_write8(Adapter, REG_BCN_MAX_ERR, 0xFF); */ + rtw_write8(Adapter, REG_ATIMWND, 0x0c); /* 12ms */ + + rtw_write16(Adapter, REG_TSFTR_SYN_OFFSET, 0x7fff);/* +32767 (~32ms) */ + + /* reset TSF */ + rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(0)); + + /* enable BCN0 Function for if1 */ + /* don't enable update TSF0 for if1 (due to TSF update when beacon/probe rsp are received) */ + rtw_write8(Adapter, REG_BCN_CTRL, (DIS_TSF_UDT | EN_BCN_FUNCTION | EN_TXBCN_RPT | DIS_BCNQ_SUB)); + +#ifdef CONFIG_CONCURRENT_MODE + if (!rtw_mi_buddy_check_mlmeinfo_state(Adapter, WIFI_FW_ASSOC_SUCCESS)) + rtw_write8(Adapter, REG_BCN_CTRL_1, + rtw_read8(Adapter, REG_BCN_CTRL_1) & ~EN_BCN_FUNCTION); +#endif + + /* dis BCN1 ATIM WND if if2 is station */ + rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1) | DIS_ATIM); +#ifdef CONFIG_TSF_RESET_OFFLOAD + /* Reset TSF for STA+AP concurrent mode */ + if (DEV_STA_LD_NUM(adapter_to_dvobj(Adapter))) { + if (rtw_hal_reset_tsf(Adapter, HW_PORT0) == _FAIL) + RTW_INFO("ERROR! %s()-%d: Reset port0 TSF fail\n", + __FUNCTION__, __LINE__); + } +#endif /* CONFIG_TSF_RESET_OFFLOAD */ + } +#endif /* #ifdef CONFIG_MI_WITH_MBSSID_CAM*/ + } +} + +static void rtw_store_all_sta_hwseq(_adapter *padapter) +{ + _irqL irqL; + _list *plist, *phead; + u8 index; + u16 hw_seq[NUM_STA]; + u32 shcut_addr = 0; + struct sta_info *psta; + struct sta_priv *pstapriv = &padapter->stapriv; + struct dvobj_priv *dvobj = adapter_to_dvobj(padapter); + struct macid_ctl_t *macid_ctl = dvobj_to_macidctl(dvobj); + + _rtw_memset(hw_seq, 0, NUM_STA); + + /* save each HW sequence of mac id from report fifo */ + for (index = 0; index < macid_ctl->num && index < NUM_STA; index++) { + if (rtw_macid_is_used(macid_ctl, index)) { + rtw_write16(padapter, 0x140, 0x662 | ((index & BIT5) >> 5)); + shcut_addr = 0x8000; + shcut_addr = (shcut_addr | ((index & 0x1f) << 7) | (10 << 2)) + 1; + + /* 2 byte un-alignment handling */ + if (shcut_addr%2) + hw_seq[index] = le16_to_cpu(rtw_read8(padapter, shcut_addr) + (rtw_read8(padapter, shcut_addr + 1) << 8)); + else + hw_seq[index] = rtw_read16(padapter, shcut_addr); + /* RTW_INFO("mac_id:%d is used, hw_seq[index]=%d\n", index, hw_seq[index]); */ + } + } + + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); + for (index = 0; index < NUM_STA; index++) { + psta = NULL; + + phead = &(pstapriv->sta_hash[index]); + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { + psta = LIST_CONTAINOR(plist, struct sta_info, hash_list); + plist = get_next(plist); + + psta->hwseq = hw_seq[psta->cmn.mac_id]; + /* RTW_INFO(" psta->mac_id=%d, psta->hwseq=%d\n" , psta->cmn.mac_id, psta->hwseq); */ + } + + } + _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); + + +} + +static void rtw_restore_all_sta_hwseq(_adapter *padapter) +{ + _irqL irqL; + _list *plist, *phead; + u8 index; + u16 hw_seq[NUM_STA]; + u32 shcut_addr = 0; + struct sta_info *psta; + struct sta_priv *pstapriv = &padapter->stapriv; + struct dvobj_priv *dvobj = adapter_to_dvobj(padapter); + struct macid_ctl_t *macid_ctl = dvobj_to_macidctl(dvobj); + + _rtw_memset(hw_seq, 0, NUM_STA); + + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); + for (index = 0; index < NUM_STA; index++) { + psta = NULL; + + phead = &(pstapriv->sta_hash[index]); + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { + psta = LIST_CONTAINOR(plist, struct sta_info, hash_list); + plist = get_next(plist); + + hw_seq[psta->cmn.mac_id] = psta->hwseq; + /* RTW_INFO(" psta->mac_id=%d, psta->hwseq=%d\n", psta->mac_id, psta->hwseq); */ + } + + } + _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); + + /* restore each HW sequence of mac id to report fifo */ + for (index = 0; index < macid_ctl->num && index < NUM_STA; index++) { + if (rtw_macid_is_used(macid_ctl, index)) { + rtw_write16(padapter, 0x140, 0x662 | ((index & BIT5) >> 5)); + shcut_addr = 0x8000; + shcut_addr = (shcut_addr | ((index & 0x1f) << 7) | (10 << 2)) + 1; + rtw_write16(padapter, shcut_addr, hw_seq[index]); + /* RTW_INFO("mac_id:%d is used, hw_seq[index]=%d\n", index, hw_seq[index]); */ + } + } + + +} + +u8 SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) +{ + PHAL_DATA_TYPE pHalData; + u8 ret = _SUCCESS; + u8 val8; + u16 val16; + u32 val32; + + + pHalData = GET_HAL_DATA(padapter); + + switch (variable) { + case HW_VAR_SET_OPMODE: + hw_var_set_opmode(padapter, variable, pval); + break; + + case HW_VAR_BASIC_RATE: + rtw_var_set_basic_rate(padapter, pval); + break; + + case HW_VAR_TXPAUSE: + rtw_write8(padapter, REG_TXPAUSE, *pval); + break; + + case HW_VAR_SLOT_TIME: + rtw_write8(padapter, REG_SLOT, *pval); + break; + + case HW_VAR_RESP_SIFS: + /* SIFS_Timer = 0x0a0a0808; */ + /* RESP_SIFS for CCK */ + rtw_write8(padapter, REG_RESP_SIFS_CCK, pval[0]); /* SIFS_T2T_CCK (0x08) */ + rtw_write8(padapter, REG_RESP_SIFS_CCK + 1, pval[1]); /* SIFS_R2T_CCK(0x08) */ + /* RESP_SIFS for OFDM */ + rtw_write8(padapter, REG_RESP_SIFS_OFDM, pval[2]); /* SIFS_T2T_OFDM (0x0a) */ + rtw_write8(padapter, REG_RESP_SIFS_OFDM + 1, pval[3]); /* SIFS_R2T_OFDM(0x0a) */ + break; + + case HW_VAR_ACK_PREAMBLE: { + u8 bShortPreamble = *pval; + + /* Joseph marked out for Netgear 3500 TKIP channel 7 issue.(Temporarily) */ + val8 = (pHalData->nCur40MhzPrimeSC) << 5; + if (bShortPreamble) + val8 |= 0x80; + rtw_write8(padapter, REG_RRSR + 2, val8); + } + break; + + case HW_VAR_CAM_INVALID_ALL: + val32 = BIT(31) | BIT(30); + rtw_write32(padapter, REG_CAMCMD, val32); + break; + + case HW_VAR_AC_PARAM_VO: + rtw_write32(padapter, REG_EDCA_VO_PARAM, *(u32 *)pval); + break; + + case HW_VAR_AC_PARAM_VI: + rtw_write32(padapter, REG_EDCA_VI_PARAM, *(u32 *)pval); + break; + + case HW_VAR_AC_PARAM_BE: + pHalData->ac_param_be = *(u32 *)pval; + rtw_write32(padapter, REG_EDCA_BE_PARAM, *(u32 *)pval); + break; + + case HW_VAR_AC_PARAM_BK: + rtw_write32(padapter, REG_EDCA_BK_PARAM, *(u32 *)pval); + break; + + case HW_VAR_ACM_CTRL: { + u8 acm_ctrl; + u8 AcmCtrl; + + acm_ctrl = *(u8 *)pval; + AcmCtrl = rtw_read8(padapter, REG_ACMHWCTRL); + + if (acm_ctrl > 1) + AcmCtrl = AcmCtrl | 0x1; + + if (acm_ctrl & BIT(1)) + AcmCtrl |= AcmHw_VoqEn; + else + AcmCtrl &= (~AcmHw_VoqEn); + + if (acm_ctrl & BIT(2)) + AcmCtrl |= AcmHw_ViqEn; + else + AcmCtrl &= (~AcmHw_ViqEn); + + if (acm_ctrl & BIT(3)) + AcmCtrl |= AcmHw_BeqEn; + else + AcmCtrl &= (~AcmHw_BeqEn); + + RTW_INFO("[HW_VAR_ACM_CTRL] Write 0x%X\n", AcmCtrl); + rtw_write8(padapter, REG_ACMHWCTRL, AcmCtrl); + } + break; +#ifdef CONFIG_80211N_HT + case HW_VAR_AMPDU_FACTOR: { + u32 AMPDULen = *(u8 *)pval; + + + if (AMPDULen < VHT_AGG_SIZE_256K) + AMPDULen = (0x2000 << (*((u8 *)pval))) - 1; + else + AMPDULen = 0x3ffff; + rtw_write32(padapter, REG_AMPDU_MAX_LENGTH_8814A, AMPDULen); + /* RTW_INFO("SetHwReg8814AU(): HW_VAR_AMPDU_FACTOR %x\n" ,AMPDULen); */ + } + break; +#endif /* CONFIG_80211N_HT */ + case HW_VAR_H2C_FW_PWRMODE: { + u8 psmode = *pval; + rtl8814_set_FwPwrMode_cmd(padapter, psmode); + } + break; + + case HW_VAR_H2C_FW_JOINBSSRPT: + rtl8814_set_FwJoinBssReport_cmd(padapter, *pval); + break; + case HW_VAR_DL_RSVD_PAGE: +#ifdef CONFIG_BT_COEXIST + if (pHalData->EEPROMBluetoothCoexist == 1) { + if (check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE) == _TRUE) + rtl8814a_download_BTCoex_AP_mode_rsvd_page(padapter); + } +#endif /* CONFIG_BT_COEXIST */ + break; + +#ifdef CONFIG_P2P_PS + case HW_VAR_H2C_FW_P2P_PS_OFFLOAD: + rtl8814_set_p2p_ps_offload_cmd(padapter, *pval); + break; +#endif /* CONFIG_P2P_PS */ + + case HW_VAR_EFUSE_USAGE: + pHalData->EfuseUsedPercentage = *pval; + break; + + case HW_VAR_EFUSE_BYTES: + pHalData->EfuseUsedBytes = *(u16 *)pval; + break; +#if 0 + case HW_VAR_EFUSE_BT_USAGE: +#ifdef HAL_EFUSE_MEMORY + pHalData->EfuseHal.BTEfuseUsedPercentage = *pval; +#endif /* HAL_EFUSE_MEMORY */ + break; + + case HW_VAR_EFUSE_BT_BYTES: +#ifdef HAL_EFUSE_MEMORY + pHalData->EfuseHal.BTEfuseUsedBytes = *(u16 *)pval; +#else /* HAL_EFUSE_MEMORY */ + BTEfuseUsedBytes = *(u16 *)pval; +#endif /* HAL_EFUSE_MEMORY */ + break; +#endif /* 0 */ + case HW_VAR_FIFO_CLEARN_UP: { + struct pwrctrl_priv *pwrpriv; + u8 trycnt = 100; + + pwrpriv = adapter_to_pwrctl(padapter); + + /* pause tx */ + rtw_write8(padapter, REG_TXPAUSE, 0xff); + + /* keep sn */ + rtw_store_all_sta_hwseq(padapter); + + if (pwrpriv->bkeepfwalive != _TRUE) { + /* RX DMA stop */ + val32 = rtw_read32(padapter, REG_RXPKT_NUM); + val32 |= RW_RELEASE_EN; + rtw_write32(padapter, REG_RXPKT_NUM, val32); + do { + val32 = rtw_read32(padapter, REG_RXPKT_NUM); + val32 &= RXDMA_IDLE; + if (val32) + break; + } while (--trycnt); + if (trycnt == 0) + RTW_INFO("[HW_VAR_FIFO_CLEARN_UP] Stop RX DMA failed......\n"); + + /* RQPN Load 0 */ + rtw_write16(padapter, REG_RQPN_NPQ, 0x0); + rtw_write32(padapter, REG_RQPN, 0x80000000); + rtw_mdelay_os(10); + } + } + break; + + case HW_VAR_RESTORE_HW_SEQ: + rtw_restore_all_sta_hwseq(padapter); + break; + + case HW_VAR_CHECK_TXBUF: { + u8 retry_limit; + u32 reg_230 = 0, reg_234 = 0, reg_238 = 0, reg_23c = 0, reg_240 = 0; + u32 init_reg_230 = 0, init_reg_234 = 0, init_reg_238 = 0, init_reg_23c = 0, init_reg_240 = 0; + systime start = rtw_get_current_time(); + u32 pass_ms; + int i = 0; + + retry_limit = 0x01; + + val16 = BIT_SRL(retry_limit) | BIT_LRL(retry_limit); + rtw_write16(padapter, REG_RETRY_LIMIT, val16); + + while (rtw_get_passing_time_ms(start) < 2000 + && !RTW_CANNOT_RUN(padapter) + ) { + reg_230 = rtw_read32(padapter, REG_FIFOPAGE_INFO_1_8814A); + reg_234 = rtw_read32(padapter, REG_FIFOPAGE_INFO_2_8814A); + reg_238 = rtw_read32(padapter, REG_FIFOPAGE_INFO_3_8814A); + reg_23c = rtw_read32(padapter, REG_FIFOPAGE_INFO_4_8814A); + reg_240 = rtw_read32(padapter, REG_FIFOPAGE_INFO_5_8814A); + + if (i == 0) { + init_reg_230 = reg_230; + init_reg_234 = reg_234; + init_reg_238 = reg_238; + init_reg_23c = reg_23c; + init_reg_240 = reg_240; + } + + i++; + if ((((reg_230 & 0x0c) != ((reg_230 >> 16) & 0x0c)) || ((reg_234 & 0x0c) != ((reg_234 >> 16) & 0x0c)) + || ((reg_238 & 0x0c) != ((reg_238 >> 16) & 0x0c)) || ((reg_23c & 0x0c) != ((reg_23c >> 16) & 0x0c)) + || ((reg_240 & 0x0c) != ((reg_240 >> 16) & 0x0c)))) { + /* RTW_INFO("%s: (HW_VAR_CHECK_TXBUF)TXBUF NOT empty - 0x230=0x%08x, 0x234=0x%08x 0x238=0x%08x," + " 0x23c=0x%08x, 0x240=0x%08x (%d)\n" + , __FUNCTION__, reg_230, reg_234, reg_238, reg_23c, reg_240, i); */ + rtw_msleep_os(10); + } else + break; + } + + pass_ms = rtw_get_passing_time_ms(start); + + if (RTW_CANNOT_RUN(padapter)) + RTW_INFO("bDriverStopped or bSurpriseRemoved\n"); + else if (pass_ms >= 2000 || (((reg_230 & 0x0c) != ((reg_230 >> 16) & 0x0c)) || ((reg_234 & 0x0c) != ((reg_234 >> 16) & 0x0c)) + || ((reg_238 & 0x0c) != ((reg_238 >> 16) & 0x0c)) || ((reg_23c & 0x0c) != ((reg_23c >> 16) & 0x0c)) + || ((reg_240 & 0x0c) != ((reg_240 >> 16) & 0x0c)))) { + RTW_PRINT("%s:(HW_VAR_CHECK_TXBUF)NOT empty(%d) in %d ms\n", __func__, i, pass_ms); + RTW_PRINT("%s:(HW_VAR_CHECK_TXBUF) 0x230=0x%08x, 0x234=0x%08x 0x238=0x%08x, 0x23c=0x%08x, 0x240=0x%08x (0x%08x, 0x%08x, 0x%08x, 0x%08x, 0x%08x)\n", __func__, + reg_230, reg_234, reg_238, reg_23c, reg_240 + , init_reg_230, init_reg_234, init_reg_238, init_reg_23c, init_reg_240); + /* rtw_warn_on(1); */ + } else + RTW_INFO("%s:(HW_VAR_CHECK_TXBUF)TXBUF Empty(%d) in %d ms\n", __FUNCTION__, i, pass_ms); + + retry_limit = RL_VAL_STA; + val16 = BIT_SRL(retry_limit) | BIT_LRL(retry_limit); + rtw_write16(padapter, REG_RETRY_LIMIT, val16); + } + + break; + + case HW_VAR_NAV_UPPER: { + u32 usNavUpper = *((u32 *)pval); + + if (usNavUpper > HAL_NAV_UPPER_UNIT * 0xFF) { + RTW_INFO("%s: [HW_VAR_NAV_UPPER] set value(0x%08X us) is larger than (%d * 0xFF)!\n", + __FUNCTION__, usNavUpper, HAL_NAV_UPPER_UNIT); + break; + } + + /* The value of ((usNavUpper + HAL_NAV_UPPER_UNIT - 1) / HAL_NAV_UPPER_UNIT) */ + /* is getting the upper integer. */ + usNavUpper = (usNavUpper + HAL_NAV_UPPER_UNIT - 1) / HAL_NAV_UPPER_UNIT; + rtw_write8(padapter, REG_NAV_UPPER, (u8)usNavUpper); + } + break; + + case HW_VAR_BCN_VALID: +#ifdef CONFIG_CONCURRENT_MODE + if (padapter->hw_port == HW_PORT1) { + /* BCN_VALID, BIT31 of REG_FIFOPAGE_CTRL_2_8814A, write 1 to clear, Clear by sw */ + val8 = rtw_read8(padapter, REG_FIFOPAGE_CTRL_2_8814A + 3); + val8 |= BIT(7); + rtw_write8(padapter, REG_FIFOPAGE_CTRL_2_8814A + 3, val8); + } else +#endif + { + /* BCN_VALID, BIT15 of REG_FIFOPAGE_CTRL_2_8814A, write 1 to clear, Clear by sw */ + val8 = rtw_read8(padapter, REG_FIFOPAGE_CTRL_2_8814A + 1); + val8 |= BIT(7); + rtw_write8(padapter, REG_FIFOPAGE_CTRL_2_8814A + 1, val8); + } + break; + + case HW_VAR_DL_BCN_SEL: +#if 0 /* for MBSSID, so far we don't need this */ +#ifdef CONFIG_CONCURRENT_MODE + if (IS_HARDWARE_TYPE_8821(padapter) && padapter->hw_port == HW_PORT1) { + /* SW_BCN_SEL - Port1 */ + val8 = rtw_read8(padapter, REG_AUTO_LLT_8814A); + val8 |= BIT(2); + rtw_write8(padapter, REG_AUTO_LLT_8814A, val8); + } else +#endif /* CONFIG_CONCURRENT_MODE */ + { + /* SW_BCN_SEL - Port0 , BIT_r_EN_BCN_SW_HEAD_SEL */ + val8 = rtw_read8(padapter, REG_AUTO_LLT_8814A); + val8 &= ~BIT(2); + rtw_write8(padapter, REG_AUTO_LLT_8814A, val8); + } +#endif /* for MBSSID, so far we don't need this */ + break; + + case HW_VAR_WIRELESS_MODE: { + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + u8 R2T_SIFS = 0, SIFS_Timer = 0; + u8 wireless_mode = *pval; + + if ((wireless_mode == WIRELESS_11BG) || (wireless_mode == WIRELESS_11G)) + SIFS_Timer = 0xa; + else + SIFS_Timer = 0xe; + + /* SIFS for OFDM Data ACK */ + rtw_write8(padapter, REG_SIFS_CTX + 1, SIFS_Timer); + /* SIFS for OFDM consecutive tx like CTS data! */ + rtw_write8(padapter, REG_SIFS_TRX + 1, SIFS_Timer); + + rtw_write8(padapter, REG_SPEC_SIFS + 1, SIFS_Timer); + rtw_write8(padapter, REG_MAC_SPEC_SIFS + 1, SIFS_Timer); + + /* 20100719 Joseph: Revise SIFS setting due to Hardware register definition change. */ + rtw_write8(padapter, REG_RESP_SIFS_OFDM + 1, SIFS_Timer); + rtw_write8(padapter, REG_RESP_SIFS_OFDM, SIFS_Timer); + + /* */ + /* Adjust R2T SIFS for IOT issue. Add by hpfan 2013.01.25 */ + /* Set R2T SIFS to 0x0a for Atheros IOT. Add by hpfan 2013.02.22 */ + /* */ + /* Mac has 10 us delay so use 0xa value is enough. */ + R2T_SIFS = 0xa; +#ifdef CONFIG_80211AC_VHT + if (wireless_mode & WIRELESS_11_5AC && + /* MgntLinkStatusQuery(Adapter) && */ + TEST_FLAG(pmlmepriv->vhtpriv.ldpc_cap, LDPC_VHT_ENABLE_RX) && + TEST_FLAG(pmlmepriv->vhtpriv.stbc_cap, STBC_VHT_ENABLE_RX)) { + if (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_ATHEROS) + R2T_SIFS = 0x8; + else + R2T_SIFS = 0xa; + } +#endif /* CONFIG_80211AC_VHT */ + + rtw_write8(padapter, REG_RESP_SIFS_OFDM + 1, R2T_SIFS); + } + break; + +#ifdef CONFIG_BEAMFORMING /*PHYDM_BF - (BEAMFORMING_SUPPORT == 1)*/ + /*add by YuChen for PHYDM-TxBF AutoTest HW Timer*/ + case HW_VAR_HW_REG_TIMER_INIT: { + HAL_HW_TIMER_TYPE TimerType = (*(PHAL_HW_TIMER_TYPE)pval) >> 16; + + rtw_write8(padapter, 0x164, 1); + + if (TimerType == HAL_TIMER_TXBF) + rtw_write32(padapter, 0x15C, (*(u16 *)pval)); + else if (TimerType == HAL_TIMER_EARLYMODE) + rtw_write32(padapter, 0x160, 0x05000190); + break; + } + case HW_VAR_HW_REG_TIMER_START: { + HAL_HW_TIMER_TYPE TimerType = *(PHAL_HW_TIMER_TYPE)pval; + + if (TimerType == HAL_TIMER_TXBF) + rtw_write8(padapter, 0x15F, 0x5); + else if (TimerType == HAL_TIMER_EARLYMODE) + rtw_write8(padapter, 0x163, 0x5); + break; + } + case HW_VAR_HW_REG_TIMER_RESTART: { + HAL_HW_TIMER_TYPE TimerType = *(PHAL_HW_TIMER_TYPE)pval; + + if (TimerType == HAL_TIMER_TXBF) { + rtw_write8(padapter, 0x15F, 0x0); + rtw_write8(padapter, 0x15F, 0x5); + } else if (TimerType == HAL_TIMER_EARLYMODE) { + rtw_write8(padapter, 0x163, 0x0); + rtw_write8(padapter, 0x163, 0x5); + } + break; + } + case HW_VAR_HW_REG_TIMER_STOP: { + HAL_HW_TIMER_TYPE TimerType = *(PHAL_HW_TIMER_TYPE)pval; + + if (TimerType == HAL_TIMER_TXBF) + rtw_write8(padapter, 0x15F, 0); + else if (TimerType == HAL_TIMER_EARLYMODE) + rtw_write8(padapter, 0x163, 0x0); + break; + } +#endif/*#ifdef CONFIG_BEAMFORMING*/ + +#ifdef CONFIG_GPIO_WAKEUP + case HW_SET_GPIO_WL_CTRL: { + u8 enable = *pval; + u8 value = rtw_read8(padapter, 0x4e); + if (enable && (value & BIT(6))) { + value &= ~BIT(6); + rtw_write8(padapter, 0x4e, value); + } else if (enable == _FALSE) { + value |= BIT(6); + rtw_write8(padapter, 0x4e, value); + } + RTW_INFO("%s: set WL control, 0x4E=0x%02X\n", + __func__, rtw_read8(padapter, 0x4e)); + } + break; +#endif + +#if defined(CONFIG_TDLS) && defined(CONFIG_TDLS_CH_SW) + case HW_VAR_TDLS_BCN_EARLY_C2H_RPT: + rtl8814_set_BcnEarly_C2H_Rpt_cmd(padapter, *pval); + break; +#endif + + default: + ret = SetHwReg(padapter, variable, pval); + break; + } + + return ret; +} + +struct qinfo_8814a { + u32 head:11; + u32 tail:11; + u32 empty:1; + u32 ac:2; + u32 macid:7; +}; + +struct bcn_qinfo_8814a { + u16 head:12; + u16 rsvd:4; +}; + +void dump_qinfo_8814a(void *sel, struct qinfo_8814a *info, u32 pkt_num, const char *tag) +{ + /* if (info->pkt_num) */ + RTW_PRINT_SEL(sel, "%shead:0x%02x, tail:0x%02x, pkt_num:%u, macid:%u, ac:%u\n" + , tag ? tag : "", info->head, info->tail, pkt_num, info->macid, info->ac + ); +} + +void dump_bcn_qinfo_8814a(void *sel, struct bcn_qinfo_8814a *info, u32 pkt_num, const char *tag) +{ + /* if (info->pkt_num) */ + RTW_PRINT_SEL(sel, "%shead:0x%02x, pkt_num:%u\n" + , tag ? tag : "", info->head, pkt_num + ); +} + +void dump_mac_qinfo_8814a(void *sel, _adapter *adapter) +{ + u32 q0_info; + u32 q1_info; + u32 q2_info; + u32 q3_info; + u32 q4_info; + u32 q5_info; + u32 q6_info; + u32 q7_info; + u32 mg_q_info; + u32 hi_q_info; + u16 bcn_q_info; + u32 q0_q1_info; + u32 q2_q3_info; + u32 q4_q5_info; + u32 q6_q7_info; + u32 mg_hi_q_info; + u32 cmd_bcn_q_info; + + + q0_info = rtw_read32(adapter, REG_Q0_INFO); + q1_info = rtw_read32(adapter, REG_Q1_INFO); + q2_info = rtw_read32(adapter, REG_Q2_INFO); + q3_info = rtw_read32(adapter, REG_Q3_INFO); + q4_info = rtw_read32(adapter, REG_Q4_INFO); + q5_info = rtw_read32(adapter, REG_Q5_INFO); + q6_info = rtw_read32(adapter, REG_Q6_INFO); + q7_info = rtw_read32(adapter, REG_Q7_INFO); + mg_q_info = rtw_read32(adapter, REG_MGQ_INFO); + hi_q_info = rtw_read32(adapter, REG_HGQ_INFO); + bcn_q_info = rtw_read16(adapter, REG_BCNQ_INFO); + + q0_q1_info = rtw_read32(adapter, REG_Q0_Q1_INFO_8814A); + q2_q3_info = rtw_read32(adapter, REG_Q2_Q3_INFO_8814A); + q4_q5_info = rtw_read32(adapter, REG_Q4_Q5_INFO_8814A); + q6_q7_info = rtw_read32(adapter, REG_Q6_Q7_INFO_8814A); + mg_hi_q_info = rtw_read32(adapter, REG_MGQ_HIQ_INFO_8814A); + cmd_bcn_q_info = rtw_read32(adapter, REG_CMDQ_BCNQ_INFO_8814A); + + dump_qinfo_8814a(sel, (struct qinfo_8814a *)&q0_info, q0_q1_info&0xFFF, "Q0 "); + dump_qinfo_8814a(sel, (struct qinfo_8814a *)&q1_info, (q0_q1_info>>15)&0xFFF, "Q1 "); + dump_qinfo_8814a(sel, (struct qinfo_8814a *)&q2_info, q2_q3_info&0xFFF, "Q2 "); + dump_qinfo_8814a(sel, (struct qinfo_8814a *)&q3_info, (q2_q3_info>>15)&0xFFF, "Q3 "); + dump_qinfo_8814a(sel, (struct qinfo_8814a *)&q4_info, q4_q5_info&0xFFF, "Q4 "); + dump_qinfo_8814a(sel, (struct qinfo_8814a *)&q5_info, (q4_q5_info>>15)&0xFFF, "Q5 "); + dump_qinfo_8814a(sel, (struct qinfo_8814a *)&q6_info, q6_q7_info&0xFFF, "Q6 "); + dump_qinfo_8814a(sel, (struct qinfo_8814a *)&q7_info, (q6_q7_info>>15)&0xFFF, "Q7 "); + dump_qinfo_8814a(sel, (struct qinfo_8814a *)&mg_q_info, mg_hi_q_info&0xFFF, "MG "); + dump_qinfo_8814a(sel, (struct qinfo_8814a *)&hi_q_info, (mg_hi_q_info>>15)&0xFFF, "HI "); + dump_bcn_qinfo_8814a(sel, (struct bcn_qinfo_8814a *)&bcn_q_info, cmd_bcn_q_info&0xFFF, "BCN "); +} + +static void dump_mac_txfifo_8814a(void *sel, _adapter *adapter) +{ + u32 hpq, lpq, npq, epq, pubq; + + hpq = rtw_read32(adapter, REG_FIFOPAGE_INFO_1_8814A); + lpq = rtw_read32(adapter, REG_FIFOPAGE_INFO_2_8814A); + npq = rtw_read32(adapter, REG_FIFOPAGE_INFO_3_8814A); + epq = rtw_read32(adapter, REG_FIFOPAGE_INFO_4_8814A); + pubq = rtw_read32(adapter, REG_FIFOPAGE_INFO_5_8814A); + + hpq = (hpq & 0xFFF0000)>>16; + lpq = (lpq & 0xFFF0000)>>16; + npq = (npq & 0xFFF0000)>>16; + epq = (epq & 0xFFF0000)>>16; + pubq = (pubq & 0xFFF0000)>>16; + + RTW_PRINT_SEL(sel, "Tx: available page num: "); + if ((hpq == 0xAEA) && (hpq == lpq) && (hpq == pubq)) + RTW_PRINT_SEL(sel, "N/A (reg val = 0xea)\n"); + else + RTW_PRINT_SEL(sel, "HPQ: %d, LPQ: %d, NPQ: %d, EPQ: %d, PUBQ: %d\n" + , hpq, lpq, npq, epq, pubq); +} + +void rtl8814a_read_wmmedca_reg(PADAPTER adapter, u16 *vo_params, u16 *vi_params, u16 *be_params, u16 *bk_params) +{ + u8 vo_reg_params[4]; + u8 vi_reg_params[4]; + u8 be_reg_params[4]; + u8 bk_reg_params[4]; + + GetHwReg8814A(adapter, HW_VAR_AC_PARAM_VO, vo_reg_params); + GetHwReg8814A(adapter, HW_VAR_AC_PARAM_VI, vi_reg_params); + GetHwReg8814A(adapter, HW_VAR_AC_PARAM_BE, be_reg_params); + GetHwReg8814A(adapter, HW_VAR_AC_PARAM_BK, bk_reg_params); + + vo_params[0] = vo_reg_params[0]; + vo_params[1] = vo_reg_params[1] & 0x0F; + vo_params[2] = (vo_reg_params[1] & 0xF0) >> 4; + vo_params[3] = ((vo_reg_params[3] << 8) | (vo_reg_params[2])) * 32; + + vi_params[0] = vi_reg_params[0]; + vi_params[1] = vi_reg_params[1] & 0x0F; + vi_params[2] = (vi_reg_params[1] & 0xF0) >> 4; + vi_params[3] = ((vi_reg_params[3] << 8) | (vi_reg_params[2])) * 32; + + be_params[0] = be_reg_params[0]; + be_params[1] = be_reg_params[1] & 0x0F; + be_params[2] = (be_reg_params[1] & 0xF0) >> 4; + be_params[3] = ((be_reg_params[3] << 8) | (be_reg_params[2])) * 32; + + bk_params[0] = bk_reg_params[0]; + bk_params[1] = bk_reg_params[1] & 0x0F; + bk_params[2] = (bk_reg_params[1] & 0xF0) >> 4; + bk_params[3] = ((bk_reg_params[3] << 8) | (bk_reg_params[2])) * 32; + + vo_params[1] = (1 << vo_params[1]) - 1; + vo_params[2] = (1 << vo_params[2]) - 1; + vi_params[1] = (1 << vi_params[1]) - 1; + vi_params[2] = (1 << vi_params[2]) - 1; + be_params[1] = (1 << be_params[1]) - 1; + be_params[2] = (1 << be_params[2]) - 1; + bk_params[1] = (1 << bk_params[1]) - 1; + bk_params[2] = (1 << bk_params[2]) - 1; +} + +void GetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) +{ + PHAL_DATA_TYPE pHalData; + u8 val8; + u16 val16; + u32 val32; + + + pHalData = GET_HAL_DATA(padapter); + + switch (variable) { + case HW_VAR_TXPAUSE: + *pval = rtw_read8(padapter, REG_TXPAUSE); + break; + + case HW_VAR_BCN_VALID: +#ifdef CONFIG_CONCURRENT_MODE + if (padapter->hw_port == HW_PORT1) { + /* BCN_VALID, BIT31 of REG_FIFOPAGE_CTRL_2_8814A, write 1 to clear */ + val8 = rtw_read8(padapter, REG_FIFOPAGE_CTRL_2_8814A + 3); + *pval = (BIT(7) & val8) ? _TRUE : _FALSE; + } else +#endif /* CONFIG_CONCURRENT_MODE */ + { + /* BCN_VALID, BIT15 of REG_FIFOPAGE_CTRL_2_8814A, write 1 to clear */ + val8 = rtw_read8(padapter, REG_FIFOPAGE_CTRL_2_8814A + 1); + *pval = (BIT(7) & val8) ? _TRUE : _FALSE; + } + break; + + case HW_VAR_AC_PARAM_VO: + val32 = rtw_read32(padapter, REG_EDCA_VO_PARAM); + pval[0] = val32 & 0xFF; + pval[1] = (val32 >> 8) & 0xFF; + pval[2] = (val32 >> 16) & 0xFF; + pval[3] = (val32 >> 24) & 0x07; + break; + + case HW_VAR_AC_PARAM_VI: + val32 = rtw_read32(padapter, REG_EDCA_VI_PARAM); + pval[0] = val32 & 0xFF; + pval[1] = (val32 >> 8) & 0xFF; + pval[2] = (val32 >> 16) & 0xFF; + pval[3] = (val32 >> 24) & 0x07; + break; + + case HW_VAR_AC_PARAM_BE: + val32 = rtw_read32(padapter, REG_EDCA_BE_PARAM); + pval[0] = val32 & 0xFF; + pval[1] = (val32 >> 8) & 0xFF; + pval[2] = (val32 >> 16) & 0xFF; + pval[3] = (val32 >> 24) & 0x07; + break; + + case HW_VAR_AC_PARAM_BK: + val32 = rtw_read32(padapter, REG_EDCA_BK_PARAM); + pval[0] = val32 & 0xFF; + pval[1] = (val32 >> 8) & 0xFF; + pval[2] = (val32 >> 16) & 0xFF; + pval[3] = (val32 >> 24) & 0x07; + break; + + case HW_VAR_EFUSE_BYTES: /* To get EFUE total used bytes, added by Roger, 2008.12.22. */ + *(u16 *)pval = pHalData->EfuseUsedBytes; + break; + + case HW_VAR_CHK_HI_QUEUE_EMPTY: + val16 = rtw_read16(padapter, REG_TXPKT_EMPTY); + *pval = (val16 & BIT(10)) ? _TRUE : _FALSE; + break; + case HW_VAR_CHK_MGQ_CPU_EMPTY: + val16 = rtw_read16(padapter, REG_TXPKT_EMPTY); + *pval = (val16 & BIT(8)) ? _TRUE : _FALSE; + break; + case HW_VAR_DUMP_MAC_QUEUE_INFO: + dump_mac_qinfo_8814a(pval, padapter); + break; + + case HW_VAR_DUMP_MAC_TXFIFO: + dump_mac_txfifo_8814a(pval, padapter); + break; + + default: + GetHwReg(padapter, variable, pval); + break; + } + +} + +/* + * Description: + * Change default setting of specified variable. + */ +u8 SetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) +{ + PHAL_DATA_TYPE pHalData; + u8 bResult; + + + pHalData = GET_HAL_DATA(padapter); + bResult = _SUCCESS; + + switch (variable) { + case HAL_DEF_EFUSE_BYTES: + pHalData->EfuseUsedBytes = *((u16 *)pval); + break; + case HAL_DEF_EFUSE_USAGE: + pHalData->EfuseUsedPercentage = *((u8 *)pval); + break; + default: + bResult = SetHalDefVar(padapter, variable, pval); + break; + } + + return bResult; +} + +/* + * Description: + * Query setting of specified variable. + */ +u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) +{ + PHAL_DATA_TYPE pHalData; + u8 bResult; + + + pHalData = GET_HAL_DATA(padapter); + bResult = _SUCCESS; + + switch (variable) { + + +#ifdef CONFIG_ANTENNA_DIVERSITY + case HAL_DEF_IS_SUPPORT_ANT_DIV: + *((u8 *)pval) = (pHalData->AntDivCfg == 0) ? _FALSE : _TRUE; + break; +#endif /* CONFIG_ANTENNA_DIVERSITY */ + + case HAL_DEF_DRVINFO_SZ: + *((u32 *)pval) = DRVINFO_SZ; + break; + + case HAL_DEF_MAX_RECVBUF_SZ: + *((u32 *)pval) = MAX_RECVBUF_SZ; + break; + + case HAL_DEF_RX_PACKET_OFFSET: + *((u32 *)pval) = RXDESC_SIZE + DRVINFO_SZ * 8; + break; + + case HW_VAR_MAX_RX_AMPDU_FACTOR: + *((u32 *)pval) = MAX_AMPDU_FACTOR_64K; + break; + + case HW_VAR_BEST_AMPDU_DENSITY: + *((u32 *)pval) = AMPDU_DENSITY_VALUE_4; + break; + + case HAL_DEF_TX_LDPC: + *(u8 *)pval = _TRUE; + break; + + case HAL_DEF_RX_LDPC: + *(u8 *)pval = _TRUE; + break; + + case HAL_DEF_RX_STBC: + *(u8 *)pval = 1; + break; + + case HAL_DEF_EXPLICIT_BEAMFORMER: + if (pHalData->rf_type != RF_1T2R && pHalData->rf_type != RF_1T1R)/*1T?R not support mer*/ + *((PBOOLEAN)pval) = _TRUE; + else + *((PBOOLEAN)pval) = _FALSE; + break; + case HAL_DEF_EXPLICIT_BEAMFORMEE: + *((PBOOLEAN)pval) = _TRUE; + break; + + case HW_DEF_RA_INFO_DUMP: +#if 0 + { + u8 mac_id = *(u8 *)pval; + u32 cmd ; + u32 ra_info1, ra_info2; + u32 rate_mask1, rate_mask2; + u8 curr_tx_rate, curr_tx_sgi, hight_rate, lowest_rate; + + RTW_INFO("============ RA status check Mac_id:%d ===================\n", mac_id); + + cmd = 0x40000100 | mac_id; + rtw_write32(padapter, REG_HMEBOX_E2_E3_8812, cmd); + rtw_msleep_os(10); + ra_info1 = rtw_read32(padapter, REG_RSVD5_8812); + curr_tx_rate = ra_info1 & 0x7F; + curr_tx_sgi = (ra_info1 >> 7) & 0x01; + RTW_INFO("[ ra_info1:0x%08x ] =>cur_tx_rate= %s,cur_sgi:%d, PWRSTS = 0x%02x\n", + ra_info1, + HDATA_RATE(curr_tx_rate), + curr_tx_sgi, + (ra_info1 >> 8) & 0x07); + + cmd = 0x40000400 | mac_id; + rtw_write32(padapter, REG_HMEBOX_E2_E3_8812, cmd); + rtw_msleep_os(10); + ra_info1 = rtw_read32(padapter, REG_RSVD5_8812); + ra_info2 = rtw_read32(padapter, REG_RSVD6_8812); + rate_mask1 = rtw_read32(padapter, REG_RSVD7_8812); + rate_mask2 = rtw_read32(padapter, REG_RSVD8_8812); + hight_rate = ra_info2 & 0xFF; + lowest_rate = (ra_info2 >> 8) & 0xFF; + RTW_INFO("[ ra_info1:0x%08x ] =>RSSI=%d, BW_setting=0x%02x, DISRA=0x%02x, VHT_EN=0x%02x\n", + ra_info1, + ra_info1 & 0xFF, + (ra_info1 >> 8) & 0xFF, + (ra_info1 >> 16) & 0xFF, + (ra_info1 >> 24) & 0xFF); + + RTW_INFO("[ ra_info2:0x%08x ] =>hight_rate=%s, lowest_rate=%s, SGI=0x%02x, RateID=%d\n", + ra_info2, + HDATA_RATE(hight_rate), + HDATA_RATE(lowest_rate), + (ra_info2 >> 16) & 0xFF, + (ra_info2 >> 24) & 0xFF); + RTW_INFO("rate_mask2=0x%08x, rate_mask1=0x%08x\n", rate_mask2, rate_mask1); + } +#else /* 0 */ + RTW_INFO("%s,%d, 8814 need to fix\n", __FUNCTION__, __LINE__); +#endif /* 0 */ + break; + + case HAL_DEF_TX_PAGE_SIZE: + *(u32 *)pval = PAGE_SIZE_128; + break; + + case HAL_DEF_TX_PAGE_BOUNDARY: + if (!padapter->registrypriv.wifi_spec) + *(u16 *)pval = TX_PAGE_BOUNDARY_8814A; + else + *(u16 *)pval = WMM_NORMAL_TX_PAGE_BOUNDARY_8814A; + break; + + case HAL_DEF_TX_PAGE_BOUNDARY_WOWLAN: + *(u16 *)pval = TX_PAGE_BOUNDARY_WOWLAN_8814A; + break; + case HAL_DEF_EFUSE_BYTES: + *((u16 *)(pval)) = pHalData->EfuseUsedBytes; + break; + case HAL_DEF_EFUSE_USAGE: + *((u32 *)(pval)) = (pHalData->EfuseUsedPercentage << 16) | (pHalData->EfuseUsedBytes); + break; + case HAL_DEF_RX_DMA_SZ_WOW: + *((u32 *)pval) = RX_DMA_BOUNDARY_8814A + 1; + break; + case HAL_DEF_RX_DMA_SZ: + *((u32 *)pval) = RX_DMA_BOUNDARY_8814A + 1; + break; + case HAL_DEF_RX_PAGE_SIZE: + *((u32 *)pval) = 8; + break; + default: + bResult = GetHalDefVar(padapter, variable, pval); + break; + } + + return bResult; +} + +#ifdef CONFIG_BT_COEXIST +void rtl8814a_combo_card_WifiOnlyHwInit(PADAPTER pdapter) +{ + u8 u1Tmp; + RTW_INFO("%s !\n", __FUNCTION__); + if (IS_HARDWARE_TYPE_8812(pdapter)) { + /* 0x790[5:0]=0x5 */ + u1Tmp = rtw_read8(pdapter, 0x790); + u1Tmp = (u1Tmp & 0xb0) | 0x05 ; + rtw_write8(pdapter, 0x790, u1Tmp); + /* PTA parameter */ + /* pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x6cc, 0x0); */ + /* pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x6c8, 0xffffff); */ + /* pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x6c4, 0x55555555); */ + /* pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x6c0, 0x55555555); */ + rtw_write8(pdapter, 0x6cc, 0x0); + rtw_write32(pdapter, 0x6c8, 0xffffff); + rtw_write32(pdapter, 0x6c4, 0x55555555); + rtw_write32(pdapter, 0x6c0, 0x55555555); + + /* coex parameters */ + /* pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x778, 0x3); */ + rtw_write8(pdapter, 0x778, 0x3); + + /* enable counter statistics */ + /* pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0xc); */ + rtw_write8(pdapter, 0x76e, 0xc); + + /* enable PTA */ + /* pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x40, 0x20); */ + rtw_write8(pdapter, 0x40, 0x20); + + /* bt clock related */ + /* u1Tmp = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x4); */ + /* u1Tmp |= BIT7; */ + /* pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x4, u1Tmp); */ + u1Tmp = rtw_read8(pdapter, 0x4); + u1Tmp |= BIT7; + rtw_write8(pdapter, 0x4, u1Tmp); + + /* bt clock related */ + /* u1Tmp = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x7); */ + /* u1Tmp |= BIT1; */ + /* pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x7, u1Tmp); */ + u1Tmp = rtw_read8(pdapter, 0x7); + u1Tmp |= BIT1; + rtw_write8(pdapter, 0x7, u1Tmp); + } + + +} +#endif /* CONFIG_BT_COEXIST */ + +void rtl8814_set_hal_ops(struct hal_ops *pHalFunc) +{ + pHalFunc->dm_init = &rtl8814_init_dm_priv; + pHalFunc->dm_deinit = &rtl8814_deinit_dm_priv; + + pHalFunc->SetBeaconRelatedRegistersHandler = &SetBeaconRelatedRegisters8814A; + + pHalFunc->read_chip_version = read_chip_version_8814a; + + pHalFunc->set_chnl_bw_handler = &PHY_SetSwChnlBWMode8814; + + pHalFunc->set_tx_power_level_handler = &PHY_SetTxPowerLevel8814; + pHalFunc->set_tx_power_index_handler = PHY_SetTxPowerIndex_8814A; + pHalFunc->get_tx_power_index_handler = &PHY_GetTxPowerIndex8814A; + + pHalFunc->hal_dm_watchdog = &rtl8814_HalDmWatchDog; + + pHalFunc->run_thread = &rtl8814_start_thread; + pHalFunc->cancel_thread = &rtl8814_stop_thread; + + pHalFunc->read_bbreg = &PHY_QueryBBReg8814A; + pHalFunc->write_bbreg = &PHY_SetBBReg8814A; + pHalFunc->read_rfreg = &PHY_QueryRFReg8814A; + pHalFunc->write_rfreg = &PHY_SetRFReg8814A; + + pHalFunc->read_wmmedca_reg = &rtl8814a_read_wmmedca_reg; + + /* Efuse related function */ + pHalFunc->EfusePowerSwitch = &rtl8814_EfusePowerSwitch; + pHalFunc->ReadEFuse = &rtl8814_ReadEFuse; + pHalFunc->EFUSEGetEfuseDefinition = &rtl8814_EFUSE_GetEfuseDefinition; + pHalFunc->EfuseGetCurrentSize = &rtl8814_EfuseGetCurrentSize; + pHalFunc->Efuse_PgPacketRead = &rtl8814_Efuse_PgPacketRead; + pHalFunc->Efuse_PgPacketWrite = &rtl8814_Efuse_PgPacketWrite; + pHalFunc->Efuse_WordEnableDataWrite = &rtl8814_Efuse_WordEnableDataWrite; + +#ifdef DBG_CONFIG_ERROR_DETECT + pHalFunc->sreset_init_value = &sreset_init_value; + pHalFunc->sreset_reset_value = &sreset_reset_value; + pHalFunc->silentreset = &sreset_reset; + pHalFunc->sreset_xmit_status_check = &rtl8814_sreset_xmit_status_check; + pHalFunc->sreset_linked_status_check = &rtl8814_sreset_linked_status_check; + pHalFunc->sreset_get_wifi_status = &sreset_get_wifi_status; + pHalFunc->sreset_inprogress = &sreset_inprogress; +#endif /* DBG_CONFIG_ERROR_DETECT */ + + pHalFunc->GetHalODMVarHandler = GetHalODMVar; + pHalFunc->SetHalODMVarHandler = SetHalODMVar; + pHalFunc->hal_notch_filter = &hal_notch_filter_8814; + + pHalFunc->c2h_handler = c2h_handler_8814a; + pHalFunc->reqtxrpt = &rtl8814_req_txrpt_cmd; + + pHalFunc->fill_h2c_cmd = &FillH2CCmd_8814; + pHalFunc->fill_fake_txdesc = &rtl8814a_fill_fake_txdesc; + pHalFunc->fw_dl = &FirmwareDownload8814A; + pHalFunc->hal_get_tx_buff_rsvd_page_num = &GetTxBufferRsvdPageNum8814; +} diff --git a/hal/rtl8814a/rtl8814a_phycfg.c b/hal/rtl8814a/rtl8814a_phycfg.c new file mode 100644 index 0000000..14d4a4d --- /dev/null +++ b/hal/rtl8814a/rtl8814a_phycfg.c @@ -0,0 +1,2353 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#define _RTL8814A_PHYCFG_C_ + +/* #include */ + +#include +#include "hal_com_h2c.h" + +/*---------------------Define local function prototype-----------------------*/ + +/*----------------------------Function Body----------------------------------*/ +/* 1 1. BB register R/W API */ + +u32 +PHY_QueryBBReg8814A( + PADAPTER Adapter, + u32 RegAddr, + u32 BitMask +) +{ + u32 ReturnValue = 0, OriginalValue, BitShift; + +#if (DISABLE_BB_RF == 1) + return 0; +#endif + +#if (SIC_ENABLE == 1) + return SIC_QueryBBReg(Adapter, RegAddr, BitMask); +#endif + + OriginalValue = rtw_read32(Adapter, RegAddr); + BitShift = PHY_CalculateBitShift(BitMask); + ReturnValue = (OriginalValue & BitMask) >> BitShift; + + /* RTW_INFO("BBR MASK=0x%x Addr[0x%x]=0x%x\n", BitMask, RegAddr, OriginalValue); */ + + return ReturnValue; +} + + +void +PHY_SetBBReg8814A( + PADAPTER Adapter, + u32 RegAddr, + u32 BitMask, + u32 Data +) +{ + u32 OriginalValue, BitShift; + +#if (DISABLE_BB_RF == 1) + return; +#endif + +#if (SIC_ENABLE == 1) + SIC_SetBBReg(Adapter, RegAddr, BitMask, Data); + return; +#endif + + if (BitMask != bMaskDWord) { + /* if not "double word" write */ + OriginalValue = rtw_read32(Adapter, RegAddr); + BitShift = PHY_CalculateBitShift(BitMask); + Data = ((OriginalValue)&(~BitMask)) | (((Data << BitShift)) & BitMask); + } + + rtw_write32(Adapter, RegAddr, Data); + + /* RTW_INFO("BBW MASK=0x%x Addr[0x%x]=0x%x\n", BitMask, RegAddr, Data); */ +} + + + +static u32 +phy_RFRead_8814A( + PADAPTER Adapter, + enum rf_path eRFPath, + u32 RegAddr, + u32 BitMask +) +{ + u32 DataAndAddr = 0; + u32 Readback_Value, Direct_Addr; + + RegAddr &= 0xff; + switch (eRFPath) { + case RF_PATH_A: + Direct_Addr = 0x2800 + RegAddr * 4; + break; + case RF_PATH_B: + Direct_Addr = 0x2c00 + RegAddr * 4; + break; + case RF_PATH_C: + Direct_Addr = 0x3800 + RegAddr * 4; + break; + case RF_PATH_D: + Direct_Addr = 0x3c00 + RegAddr * 4; + break; + default: /* pathA */ + Direct_Addr = 0x2800 + RegAddr * 4; + break; + } + + + BitMask &= bRFRegOffsetMask; + + Readback_Value = phy_query_bb_reg(Adapter, Direct_Addr, BitMask); + /* RTW_INFO("RFR-%d Addr[0x%x]=0x%x\n", eRFPath, RegAddr, Readback_Value); */ + + return Readback_Value; +} + + +static void +phy_RFWrite_8814A( + PADAPTER Adapter, + enum rf_path eRFPath, + u32 Offset, + u32 Data +) +{ + u32 DataAndAddr = 0; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + BB_REGISTER_DEFINITION_T *pPhyReg = &pHalData->PHYRegDef[eRFPath]; + + /* 2009/06/17 MH We can not execute IO for power save or other accident mode. */ + /* if(RT_CANNOT_IO(Adapter)) */ + /* { */ + /* RT_DISP(FPHY, PHY_RFW, ("phy_RFSerialWrite stop\n")); */ + /* return; */ + /* } */ + + Offset &= 0xff; + + /* Shadow Update */ + /* PHY_RFShadowWrite(Adapter, eRFPath, Offset, Data); */ + + /* Put write addr in [27:20] and write data in [19:00] */ + DataAndAddr = ((Offset << 20) | (Data & 0x000fffff)) & 0x0fffffff; + + /* Write Operation */ + phy_set_bb_reg(Adapter, pPhyReg->rf3wireOffset, bMaskDWord, DataAndAddr); + /* RTW_INFO("RFW-%d Addr[0x%x]=0x%x\n", eRFPath, pPhyReg->rf3wireOffset, DataAndAddr); */ +} + + +u32 +PHY_QueryRFReg8814A( + PADAPTER Adapter, + enum rf_path eRFPath, + u32 RegAddr, + u32 BitMask +) +{ + u32 Readback_Value; + +#if (DISABLE_BB_RF == 1) + return 0; +#endif + + Readback_Value = phy_RFRead_8814A(Adapter, eRFPath, RegAddr, BitMask); + + return Readback_Value; +} + + +void +PHY_SetRFReg8814A( + PADAPTER Adapter, + enum rf_path eRFPath, + u32 RegAddr, + u32 BitMask, + u32 Data +) +{ + +#if (DISABLE_BB_RF == 1) + return; +#endif + + if (BitMask == 0) + return; + + RegAddr &= 0xff; + /* RF data is 20 bits only */ + if (BitMask != bLSSIWrite_data_Jaguar) { + u32 Original_Value, BitShift; + + Original_Value = phy_RFRead_8814A(Adapter, eRFPath, RegAddr, bLSSIWrite_data_Jaguar); + BitShift = PHY_CalculateBitShift(BitMask); + Data = ((Original_Value)&(~BitMask)) | (Data << BitShift); + } + + phy_RFWrite_8814A(Adapter, eRFPath, RegAddr, Data); + + +} + +/* + * 3. Initial MAC/BB/RF config by reading MAC/BB/RF txt. + * */ + +s32 PHY_MACConfig8814(PADAPTER Adapter) +{ + int rtStatus = _FAIL; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + /* */ + /* Config MAC */ + /* */ +#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE + rtStatus = phy_ConfigMACWithParaFile(Adapter, PHY_FILE_MAC_REG); + if (rtStatus == _FAIL) +#endif /* CONFIG_LOAD_PHY_PARA_FROM_FILE */ + { +#ifdef CONFIG_EMBEDDED_FWIMG + odm_config_mac_with_header_file(&pHalData->odmpriv); + rtStatus = _SUCCESS; +#endif/* CONFIG_EMBEDDED_FWIMG */ + } + + return rtStatus; +} + + +static void +phy_InitBBRFRegisterDefinition( + PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + /* RF Interface Sowrtware Control */ + pHalData->PHYRegDef[RF_PATH_A].rfintfs = rFPGA0_XAB_RFInterfaceSW; /* 16 LSBs if read 32-bit from 0x870 */ + pHalData->PHYRegDef[RF_PATH_B].rfintfs = rFPGA0_XAB_RFInterfaceSW; /* 16 MSBs if read 32-bit from 0x870 (16-bit for 0x872) */ + + /* RF Interface Output (and Enable) */ + pHalData->PHYRegDef[RF_PATH_A].rfintfo = rFPGA0_XA_RFInterfaceOE; /* 16 LSBs if read 32-bit from 0x860 */ + pHalData->PHYRegDef[RF_PATH_B].rfintfo = rFPGA0_XB_RFInterfaceOE; /* 16 LSBs if read 32-bit from 0x864 */ + + /* RF Interface (Output and) Enable */ + pHalData->PHYRegDef[RF_PATH_A].rfintfe = rFPGA0_XA_RFInterfaceOE; /* 16 MSBs if read 32-bit from 0x860 (16-bit for 0x862) */ + pHalData->PHYRegDef[RF_PATH_B].rfintfe = rFPGA0_XB_RFInterfaceOE; /* 16 MSBs if read 32-bit from 0x864 (16-bit for 0x866) */ + + if (IS_HARDWARE_TYPE_JAGUAR_AND_JAGUAR2(Adapter)) { + pHalData->PHYRegDef[RF_PATH_A].rf3wireOffset = rA_LSSIWrite_Jaguar; /* LSSI Parameter */ + pHalData->PHYRegDef[RF_PATH_B].rf3wireOffset = rB_LSSIWrite_Jaguar; + + pHalData->PHYRegDef[RF_PATH_A].rfHSSIPara2 = rHSSIRead_Jaguar; /* wire control parameter2 */ + pHalData->PHYRegDef[RF_PATH_B].rfHSSIPara2 = rHSSIRead_Jaguar; /* wire control parameter2 */ + } else { + pHalData->PHYRegDef[RF_PATH_A].rf3wireOffset = rFPGA0_XA_LSSIParameter; /* LSSI Parameter */ + pHalData->PHYRegDef[RF_PATH_B].rf3wireOffset = rFPGA0_XB_LSSIParameter; + + pHalData->PHYRegDef[RF_PATH_A].rfHSSIPara2 = rFPGA0_XA_HSSIParameter2; /* wire control parameter2 */ + pHalData->PHYRegDef[RF_PATH_B].rfHSSIPara2 = rFPGA0_XB_HSSIParameter2; /* wire control parameter2 */ + } + + if (IS_HARDWARE_TYPE_8814A(Adapter)) { + pHalData->PHYRegDef[RF_PATH_C].rf3wireOffset = rC_LSSIWrite_Jaguar2; /* LSSI Parameter */ + pHalData->PHYRegDef[RF_PATH_D].rf3wireOffset = rD_LSSIWrite_Jaguar2; + + pHalData->PHYRegDef[RF_PATH_C].rfHSSIPara2 = rHSSIRead_Jaguar; /* wire control parameter2 */ + pHalData->PHYRegDef[RF_PATH_D].rfHSSIPara2 = rHSSIRead_Jaguar; /* wire control parameter2 */ + } + + if (IS_HARDWARE_TYPE_JAGUAR_AND_JAGUAR2(Adapter)) { + /* Tranceiver Readback LSSI/HSPI mode */ + pHalData->PHYRegDef[RF_PATH_A].rfLSSIReadBack = rA_SIRead_Jaguar; + pHalData->PHYRegDef[RF_PATH_B].rfLSSIReadBack = rB_SIRead_Jaguar; + pHalData->PHYRegDef[RF_PATH_A].rfLSSIReadBackPi = rA_PIRead_Jaguar; + pHalData->PHYRegDef[RF_PATH_B].rfLSSIReadBackPi = rB_PIRead_Jaguar; + } else { + /* Tranceiver Readback LSSI/HSPI mode */ + pHalData->PHYRegDef[RF_PATH_A].rfLSSIReadBack = rFPGA0_XA_LSSIReadBack; + pHalData->PHYRegDef[RF_PATH_B].rfLSSIReadBack = rFPGA0_XB_LSSIReadBack; + pHalData->PHYRegDef[RF_PATH_A].rfLSSIReadBackPi = TransceiverA_HSPI_Readback; + pHalData->PHYRegDef[RF_PATH_B].rfLSSIReadBackPi = TransceiverB_HSPI_Readback; + } + + if (IS_HARDWARE_TYPE_8814A(Adapter)) { + /* Tranceiver Readback LSSI/HSPI mode */ + pHalData->PHYRegDef[RF_PATH_C].rfLSSIReadBack = rC_SIRead_Jaguar2; + pHalData->PHYRegDef[RF_PATH_D].rfLSSIReadBack = rD_SIRead_Jaguar2; + pHalData->PHYRegDef[RF_PATH_C].rfLSSIReadBackPi = rC_PIRead_Jaguar2; + pHalData->PHYRegDef[RF_PATH_D].rfLSSIReadBackPi = rD_PIRead_Jaguar2; + } + + /* pHalData->bPhyValueInitReady=TRUE; */ +} + +void _rtw_config_trx_path_8814a(_adapter *adapter) +{ + enum rf_type rf_path = GET_HAL_RFPATH(adapter); + + /*config RF PATH*/ + switch (rf_path) { + case RF_1T1R: + case RF_2T4R: + case RF_3T3R: + /*RX CCK disable 2R CCA*/ + phy_set_bb_reg(adapter, rCCK0_FalseAlarmReport, BIT18|BIT22, 0); + /*pathB tx on, path A/C/D tx off*/ + phy_set_bb_reg(adapter, rCCK_RX_Jaguar, 0xf0000000, 0x4); + /*pathB rx*/ + phy_set_bb_reg(adapter, rCCK_RX_Jaguar, 0x0f000000, 0x5); + break; + default: + /*RX CCK disable 2R CCA*/ + phy_set_bb_reg(adapter, rCCK0_FalseAlarmReport, BIT18|BIT22, 0); + /*pathB tx on, path A/C/D tx off*/ + phy_set_bb_reg(adapter, rCCK_RX_Jaguar, 0xf0000000, 0x4); + /*pathB rx*/ + phy_set_bb_reg(adapter, rCCK_RX_Jaguar, 0x0f000000, 0x5); + RTW_INFO("%s, unknown rf_type: %d\n", __func__, rf_path); + break; + } +} + +int +PHY_BBConfig8814( + PADAPTER Adapter +) +{ + int rtStatus = _SUCCESS; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 TmpU1B = 0; + + phy_InitBBRFRegisterDefinition(Adapter); + + /* . APLL_EN,,APLL_320_GATEB,APLL_320BIAS, auto config by hw fsm after pfsm_go (0x4 bit 8) set */ + TmpU1B = PlatformEFIORead1Byte(Adapter, REG_SYS_FUNC_EN_8814A); + + if (IS_HARDWARE_TYPE_8814AU(Adapter)) + TmpU1B |= FEN_USBA; + else if (IS_HARDWARE_TYPE_8814AE(Adapter)) + TmpU1B |= FEN_PCIEA; + + PlatformEFIOWrite1Byte(Adapter, REG_SYS_FUNC_EN, TmpU1B); + + TmpU1B = PlatformEFIORead1Byte(Adapter, 0x1002); + PlatformEFIOWrite1Byte(Adapter, 0x1002, (TmpU1B | FEN_BB_GLB_RSTn | FEN_BBRSTB)); /* same with 8812 */ + + /* 6. 0x1f[7:0] = 0x07 PathA RF Power On */ + PlatformEFIOWrite1Byte(Adapter, REG_RF_CTRL0_8814A , 0x07);/* RF_SDMRSTB,RF_RSTB,RF_EN same with 8723a */ + /* 7. 0x20[7:0] = 0x07 PathB RF Power On */ + /* 8. 0x21[7:0] = 0x07 PathC RF Power On */ + PlatformEFIOWrite2Byte(Adapter, REG_RF_CTRL1_8814A , 0x0707);/* RF_SDMRSTB,RF_RSTB,RF_EN same with 8723a */ + /* 9. 0x76[7:0] = 0x07 PathD RF Power On */ + PlatformEFIOWrite1Byte(Adapter, REG_RF_CTRL3_8814A , 0x7); + + /* */ + /* Config BB and AGC */ + /* */ + rtStatus = phy_BB8814A_Config_ParaFile(Adapter); + + if (rtw_phydm_set_crystal_cap(Adapter, pHalData->crystal_cap) == _FALSE) { + RTW_ERR("Init crystal_cap failed\n"); + rtw_warn_on(1); + rtStatus = _FAIL; + } + _rtw_config_trx_path_8814a(Adapter); + + return rtStatus; +} + +s32 +phy_BB8814A_Config_ParaFile( + PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + int rtStatus = _SUCCESS; + + /* Read PHY_REG.TXT BB INIT!! */ +#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE + if (phy_ConfigBBWithParaFile(Adapter, PHY_FILE_PHY_REG, CONFIG_BB_PHY_REG) == _FAIL) +#endif + { +#ifdef CONFIG_EMBEDDED_FWIMG + if (HAL_STATUS_SUCCESS != odm_config_bb_with_header_file(&pHalData->odmpriv, CONFIG_BB_PHY_REG)) + rtStatus = _FAIL; +#endif + } + + if (rtStatus != _SUCCESS) { + RTW_INFO("%s(): CONFIG_BB_PHY_REG Fail!!\n", __FUNCTION__); + goto phy_BB_Config_ParaFile_Fail; + } + + /* Read PHY_REG_MP.TXT BB INIT!! */ +#if (MP_DRIVER == 1) + if (Adapter->registrypriv.mp_mode == 1) { +#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE + if (phy_ConfigBBWithMpParaFile(Adapter, PHY_FILE_PHY_REG_MP) == _FAIL) +#endif + { +#ifdef CONFIG_EMBEDDED_FWIMG + if (HAL_STATUS_SUCCESS != odm_config_bb_with_header_file(&pHalData->odmpriv, CONFIG_BB_PHY_REG_MP)) + rtStatus = _FAIL; +#endif + } + + if (rtStatus != _SUCCESS) { + RTW_INFO("phy_BB8812_Config_ParaFile():Write BB Reg MP Fail!!\n"); + goto phy_BB_Config_ParaFile_Fail; + } + } +#endif /* #if (MP_DRIVER == 1) */ + + /* BB AGC table Initialization */ +#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE + if (phy_ConfigBBWithParaFile(Adapter, PHY_FILE_AGC_TAB, CONFIG_BB_AGC_TAB) == _FAIL) +#endif + { +#ifdef CONFIG_EMBEDDED_FWIMG + if (HAL_STATUS_SUCCESS != odm_config_bb_with_header_file(&pHalData->odmpriv, CONFIG_BB_AGC_TAB)) + rtStatus = _FAIL; +#endif + } + + if (rtStatus != _SUCCESS) + RTW_INFO("%s(): CONFIG_BB_AGC_TAB Fail!!\n", __FUNCTION__); + +phy_BB_Config_ParaFile_Fail: + + return rtStatus; + +} + + +void +phy_ADC_CLK_8814A( + PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u32 MAC_REG_520, BB_REG_8FC, BB_REG_808, RXIQC[4]; + u32 Search_index = 0, MAC_Active = 1; + u32 RXIQC_REG[2][4] = {{0xc10, 0xe10, 0x1810, 0x1a10}, {0xc14, 0xe14, 0x1814, 0x1a14}} ; + + if (GET_CVID_CUT_VERSION(pHalData->version_id) != A_CUT_VERSION) + return; + + /* 1 Step1. MAC TX pause */ + MAC_REG_520 = phy_query_bb_reg(Adapter, 0x520, bMaskDWord); + BB_REG_8FC = phy_query_bb_reg(Adapter, 0x8fc, bMaskDWord); + BB_REG_808 = phy_query_bb_reg(Adapter, 0x808, bMaskDWord); + phy_set_bb_reg(Adapter, 0x520, bMaskByte2, 0x3f); + + /* 1 Step 2. Backup RXIQC & RXIQC = 0 */ + for (Search_index = 0; Search_index < 4; Search_index++) { + RXIQC[Search_index] = phy_query_bb_reg(Adapter, RXIQC_REG[0][Search_index], bMaskDWord); + phy_set_bb_reg(Adapter, RXIQC_REG[0][Search_index], bMaskDWord, 0x0); + phy_set_bb_reg(Adapter, RXIQC_REG[1][Search_index], bMaskDWord, 0x0); + } + phy_set_bb_reg(Adapter, 0xa14, 0x00000300, 0x3); + Search_index = 0; + + /* 1 Step 3. Monitor MAC IDLE */ + phy_set_bb_reg(Adapter, 0x8fc, bMaskDWord, 0x0); + while (MAC_Active) { + MAC_Active = phy_query_bb_reg(Adapter, 0xfa0, bMaskDWord) & (0x803e0008); + Search_index++; + if (Search_index > 1000) + break; + } + + /* 1 Step 4. ADC clk flow */ + phy_set_bb_reg(Adapter, 0x808, bMaskByte0, 0x11); + phy_set_bb_reg(Adapter, 0x90c, BIT(13), 0x1); + phy_set_bb_reg(Adapter, 0x764, BIT(10) | BIT(9), 0x3); + phy_set_bb_reg(Adapter, 0x804, BIT(2), 0x1); + + /* 0xc1c/0xe1c/0x181c/0x1a1c[4] must=1 to ensure table can be written when bbrstb=0 */ + /* 0xc60/0xe60/0x1860/0x1a60[15] always = 1 after this line */ + /* 0xc60/0xe60/0x1860/0x1a60[14] always = 0 bcz its error in A-cut */ + + /* power_off/clk_off @ anapar_state=idle mode */ + phy_set_bb_reg(Adapter, 0xc60, bMaskDWord, 0x15800002); /* 0xc60 0x15808002 */ + phy_set_bb_reg(Adapter, 0xc60, bMaskDWord, 0x01808003); /* 0xc60 0x01808003 */ + phy_set_bb_reg(Adapter, 0xe60, bMaskDWord, 0x15800002); /* 0xe60 0x15808002 */ + phy_set_bb_reg(Adapter, 0xe60, bMaskDWord, 0x01808003); /* 0xe60 0x01808003 */ + phy_set_bb_reg(Adapter, 0x1860, bMaskDWord, 0x15800002); /* 0x1860 0x15808002 */ + phy_set_bb_reg(Adapter, 0x1860, bMaskDWord, 0x01808003); /* 0x1860 0x01808003 */ + phy_set_bb_reg(Adapter, 0x1a60, bMaskDWord, 0x15800002); /* 0x1a60 0x15808002 */ + phy_set_bb_reg(Adapter, 0x1a60, bMaskDWord, 0x01808003); /* 0x1a60 0x01808003 */ + + phy_set_bb_reg(Adapter, 0x764, BIT(10), 0x0); + phy_set_bb_reg(Adapter, 0x804, BIT(2), 0x0); + phy_set_bb_reg(Adapter, 0xc5c, bMaskDWord, 0x0D080058); /* 0xc5c 0x00080058 */ /* [19] =1 to turn off ADC */ + phy_set_bb_reg(Adapter, 0xe5c, bMaskDWord, 0x0D080058); /* 0xe5c 0x00080058 */ /* [19] =1 to turn off ADC */ + phy_set_bb_reg(Adapter, 0x185c, bMaskDWord, 0x0D080058); /* 0x185c 0x00080058 */ /* [19] =1 to turn off ADC */ + phy_set_bb_reg(Adapter, 0x1a5c, bMaskDWord, 0x0D080058); /* 0x1a5c 0x00080058 */ /* [19] =1 to turn off ADC */ + + /* power_on/clk_off */ + /* phy_set_bb_reg(Adapter, 0x764, BIT(10), 0x1); */ + phy_set_bb_reg(Adapter, 0xc5c, bMaskDWord, 0x0D000058); /* 0xc5c 0x0D000058 */ /* [19] =0 to turn on ADC */ + phy_set_bb_reg(Adapter, 0xe5c, bMaskDWord, 0x0D000058); /* 0xe5c 0x0D000058 */ /* [19] =0 to turn on ADC */ + phy_set_bb_reg(Adapter, 0x185c, bMaskDWord, 0x0D000058); /* 0x185c 0x0D000058 */ /* [19] =0 to turn on ADC */ + phy_set_bb_reg(Adapter, 0x1a5c, bMaskDWord, 0x0D000058); /* 0x1a5c 0x0D000058 */ /* [19] =0 to turn on ADC */ + + /* power_on/clk_on @ anapar_state=BT mode */ + phy_set_bb_reg(Adapter, 0xc60, bMaskDWord, 0x05808032); /* 0xc60 0x05808002 */ + phy_set_bb_reg(Adapter, 0xe60, bMaskDWord, 0x05808032); /* 0xe60 0x05808002 */ + phy_set_bb_reg(Adapter, 0x1860, bMaskDWord, 0x05808032); /* 0x1860 0x05808002 */ + phy_set_bb_reg(Adapter, 0x1a60, bMaskDWord, 0x05808032); /* 0x1a60 0x05808002 */ + phy_set_bb_reg(Adapter, 0x764, BIT(10), 0x1); + phy_set_bb_reg(Adapter, 0x804, BIT(2), 0x1); + + /* recover original setting @ anapar_state=BT mode */ + phy_set_bb_reg(Adapter, 0xc60, bMaskDWord, 0x05808032); /* 0xc60 0x05808036 */ + phy_set_bb_reg(Adapter, 0xe60, bMaskDWord, 0x05808032); /* 0xe60 0x05808036 */ + phy_set_bb_reg(Adapter, 0x1860, bMaskDWord, 0x05808032); /* 0x1860 0x05808036 */ + phy_set_bb_reg(Adapter, 0x1a60, bMaskDWord, 0x05808032); /* 0x1a60 0x05808036 */ + + phy_set_bb_reg(Adapter, 0xc60, bMaskDWord, 0x05800002); /* 0xc60 0x05800002 */ + phy_set_bb_reg(Adapter, 0xc60, bMaskDWord, 0x07808003); /* 0xc60 0x07808003 */ + phy_set_bb_reg(Adapter, 0xe60, bMaskDWord, 0x05800002); /* 0xe60 0x05800002 */ + phy_set_bb_reg(Adapter, 0xe60, bMaskDWord, 0x07808003); /* 0xe60 0x07808003 */ + phy_set_bb_reg(Adapter, 0x1860, bMaskDWord, 0x05800002); /* 0x1860 0x05800002 */ + phy_set_bb_reg(Adapter, 0x1860, bMaskDWord, 0x07808003); /* 0x1860 0x07808003 */ + phy_set_bb_reg(Adapter, 0x1a60, bMaskDWord, 0x05800002); /* 0x1a60 0x05800002 */ + phy_set_bb_reg(Adapter, 0x1a60, bMaskDWord, 0x07808003); /* 0x1a60 0x07808003 */ + + phy_set_bb_reg(Adapter, 0x764, BIT(10) | BIT(9), 0x0); + phy_set_bb_reg(Adapter, 0x804, BIT(2), 0x0); + phy_set_bb_reg(Adapter, 0x90c, BIT(13), 0x0); + + /* 1 Step 5. Recover MAC TX & IQC */ + phy_set_bb_reg(Adapter, 0x520, bMaskDWord, MAC_REG_520); + phy_set_bb_reg(Adapter, 0x8fc, bMaskDWord, BB_REG_8FC); + phy_set_bb_reg(Adapter, 0x808, bMaskDWord, BB_REG_808); + for (Search_index = 0; Search_index < 4; Search_index++) { + phy_set_bb_reg(Adapter, RXIQC_REG[0][Search_index], bMaskDWord, RXIQC[Search_index]); + phy_set_bb_reg(Adapter, RXIQC_REG[1][Search_index], bMaskDWord, 0x01000000); + } + phy_set_bb_reg(Adapter, 0xa14, 0x00000300, 0x0); +} + +void +PHY_ConfigBB_8814A( + PADAPTER Adapter +) +{ + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + phy_set_bb_reg(Adapter, rOFDMCCKEN_Jaguar, bOFDMEN_Jaguar | bCCKEN_Jaguar, 0x3); +} + + + +/* 2 3.3 RF Config */ + +s32 +PHY_RFConfig8814A( + PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + int rtStatus = _SUCCESS; + + /* vivi added this, 20100610 */ + if (rtw_is_surprise_removed(Adapter)) + return _FAIL; + + switch (pHalData->rf_chip) { + case RF_PSEUDO_11N: + RTW_INFO("%s(): RF_PSEUDO_11N\n", __FUNCTION__); + break; + default: + rtStatus = PHY_RF6052_Config_8814A(Adapter); + break; + } + + return rtStatus; +} + +/* 1 5. Tx Power setting API */ + +void +phy_TxPwrAdjInPercentage( + PADAPTER Adapter, + s16* pTxPwrIdx) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + int txPower = *pTxPwrIdx + pHalData->CurrentTxPwrIdx - 18; + + *pTxPwrIdx = txPower > RF6052_MAX_TX_PWR ? RF6052_MAX_TX_PWR : txPower; +} + + +#if 0 //unused? +void +PHY_GetTxPowerLevel8814( + IN PADAPTER Adapter, + OUT s32* powerlevel + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + *powerlevel = pHalData->CurrentTxPwrIdx; +#if 0 + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); + s4Byte TxPwrDbm = 13; + + if ( pMgntInfo->ClientConfigPwrInDbm != UNSPECIFIED_PWR_DBM ) + *powerlevel = pMgntInfo->ClientConfigPwrInDbm; + else + *powerlevel = TxPwrDbm; +#endif //0 +/* + //PMPT_CONTEXT pMptCtx = &(Adapter->mppriv.mpt_ctx); + //u8 mgn_rate = mpt_to_mgnt_rate(HwRateToMPTRate(Adapter->mppriv.rateidx)); + *powerlevel=PHY_GetTxPowerIndex8814A(Adapter,RF_PATH_A ,MGN_MCS7, pHalData->current_channel_bw, pHalData->current_channel, NULL); + *powerlevel/=2; +*/ +} +#endif + +void +PHY_SetTxPowerLevel8814( + PADAPTER Adapter, + u8 Channel +) +{ + u32 i, j, k = 0; + u32 value[264] = {0}; + u32 path = 0, PowerIndex, txagc_table_wd = 0x00801000; + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + u8 jaguar2Rates[][4] = { {MGN_1M, MGN_2M, MGN_5_5M, MGN_11M}, + {MGN_6M, MGN_9M, MGN_12M, MGN_18M}, + {MGN_24M, MGN_36M, MGN_48M, MGN_54M}, + {MGN_MCS0, MGN_MCS1, MGN_MCS2, MGN_MCS3}, + {MGN_MCS4, MGN_MCS5, MGN_MCS6, MGN_MCS7}, + {MGN_MCS8, MGN_MCS9, MGN_MCS10, MGN_MCS11}, + {MGN_MCS12, MGN_MCS13, MGN_MCS14, MGN_MCS15}, + {MGN_MCS16, MGN_MCS17, MGN_MCS18, MGN_MCS19}, + {MGN_MCS20, MGN_MCS21, MGN_MCS22, MGN_MCS23}, + {MGN_VHT1SS_MCS0, MGN_VHT1SS_MCS1, MGN_VHT1SS_MCS2, MGN_VHT1SS_MCS3}, + {MGN_VHT1SS_MCS4, MGN_VHT1SS_MCS5, MGN_VHT1SS_MCS6, MGN_VHT1SS_MCS7}, + {MGN_VHT2SS_MCS8, MGN_VHT2SS_MCS9, MGN_VHT2SS_MCS0, MGN_VHT2SS_MCS1}, + {MGN_VHT2SS_MCS2, MGN_VHT2SS_MCS3, MGN_VHT2SS_MCS4, MGN_VHT2SS_MCS5}, + {MGN_VHT2SS_MCS6, MGN_VHT2SS_MCS7, MGN_VHT2SS_MCS8, MGN_VHT2SS_MCS9}, + {MGN_VHT3SS_MCS0, MGN_VHT3SS_MCS1, MGN_VHT3SS_MCS2, MGN_VHT3SS_MCS3}, + {MGN_VHT3SS_MCS4, MGN_VHT3SS_MCS5, MGN_VHT3SS_MCS6, MGN_VHT3SS_MCS7}, + {MGN_VHT3SS_MCS8, MGN_VHT3SS_MCS9, 0, 0} + }; + + + for (path = RF_PATH_A; path <= RF_PATH_D; ++path) + phy_set_tx_power_level_by_path(Adapter, Channel, (u8)path); +#if 0 /* todo H2C_TXPOWER_INDEX_OFFLOAD ? */ + if (Adapter->MgntInfo.bScanInProgress == FALSE && pHalData->RegFWOffload == 2) + HalDownloadTxPowerLevel8814(Adapter, value); +#endif /* 0 */ +} + + +/************************************************************************************************************** + * Description: + * The low-level interface to get the FINAL Tx Power Index , called by both MP and Normal Driver. + * + * <20120830, Kordan> + **************************************************************************************************************/ +u8 +PHY_GetTxPowerIndex8814A( + PADAPTER pAdapter, + enum rf_path RFPath, + u8 Rate, + u8 BandWidth, + u8 Channel, + struct txpwr_idx_comp *tic +) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter); + struct hal_spec_t *hal_spec = GET_HAL_SPEC(pAdapter); + s16 power_idx; + u8 pg = 0; + s8 by_rate_diff = 0, limit = 0, tpt_offset = 0; + u8 ntx_idx = phy_get_current_tx_num(pAdapter, Rate); + BOOLEAN bIn24G = FALSE; + + pg = phy_get_pg_txpwr_idx(pAdapter, RFPath, Rate, ntx_idx, BandWidth, Channel, &bIn24G); + + by_rate_diff = PHY_GetTxPowerByRate(pAdapter, (u8)(!bIn24G), RFPath, Rate); + limit = PHY_GetTxPowerLimit(pAdapter, NULL, (u8)(!bIn24G), pHalData->current_channel_bw, RFPath, Rate, ntx_idx, pHalData->current_channel); + + /* tpt_offset += PHY_GetTxPowerTrackingOffset(pAdapter, RFPath, Rate); */ + + if (tic) + txpwr_idx_comp_set(tic, ntx_idx, pg, by_rate_diff, limit, tpt_offset, 0, 0, 0); + + by_rate_diff = by_rate_diff > limit ? limit : by_rate_diff; + power_idx = pg + by_rate_diff + tpt_offset; + +#if 0 /* todo ? */ +#if CCX_SUPPORT + CCX_CellPowerLimit(pAdapter, Channel, Rate, &power_idx); +#endif +#endif + + + phy_TxPwrAdjInPercentage(pAdapter, &power_idx); + + if (power_idx < 0) + power_idx = 0; + else if (power_idx > hal_spec->txgi_max) + power_idx = hal_spec->txgi_max; + + return power_idx; +} + +u8 +phy_get_tx_power_index_8814a( + PADAPTER pAdapter, + enum rf_path RFPath, + u8 Rate, + enum channel_width BandWidth, + u8 Channel +) +{ + return PHY_GetTxPowerIndex8814A(pAdapter, RFPath, Rate, BandWidth, Channel, NULL); +} + +void +PHY_SetTxPowerIndex_8814A( + PADAPTER Adapter, + u32 PowerIndex, + enum rf_path RFPath, + u8 Rate +) +{ + u32 txagc_table_wd = 0x00801000; + + txagc_table_wd |= (RFPath << 8) | MRateToHwRate(Rate) | (PowerIndex << 24); + phy_set_bb_reg(Adapter, 0x1998, bMaskDWord, txagc_table_wd); + /* RTW_INFO("txagc_table_wd %x\n", txagc_table_wd); */ + if (Rate == MGN_1M) { + phy_set_bb_reg(Adapter, 0x1998, bMaskDWord, txagc_table_wd); /* first time to turn on the txagc table */ + /* second to write the addr0 */ + } +} + +u32 +PHY_GetTxBBSwing_8814A( + PADAPTER Adapter, + BAND_TYPE Band, + enum rf_path RFPath +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(GetDefaultAdapter(Adapter)); + struct dm_struct *pDM_Odm = &pHalData->odmpriv; + struct dm_rf_calibration_struct *pRFCalibrateInfo = &(pDM_Odm->rf_calibrate_info); + s8 bbSwing_2G = -1 * GetRegTxBBSwing_2G(Adapter); + s8 bbSwing_5G = -1 * GetRegTxBBSwing_5G(Adapter); + u32 out = 0x200; + const s8 AUTO = -1; + + + if (pHalData->bautoload_fail_flag) { + if (Band == BAND_ON_2_4G) { + pRFCalibrateInfo->bb_swing_diff_2g = bbSwing_2G; + if (bbSwing_2G == 0) + out = 0x200; /* 0 dB */ + else if (bbSwing_2G == -3) + out = 0x16A; /* -3 dB */ + else if (bbSwing_2G == -6) + out = 0x101; /* -6 dB */ + else if (bbSwing_2G == -9) + out = 0x0B6; /* -9 dB */ + else { + if (pHalData->ExternalPA_2G) { + pRFCalibrateInfo->bb_swing_diff_2g = -3; + out = 0x16A; + } else { + pRFCalibrateInfo->bb_swing_diff_2g = 0; + out = 0x200; + } + } + } else if (Band == BAND_ON_5G) { + pRFCalibrateInfo->bb_swing_diff_5g = bbSwing_5G; + if (bbSwing_5G == 0) + out = 0x200; /* 0 dB */ + else if (bbSwing_5G == -3) + out = 0x16A; /* -3 dB */ + else if (bbSwing_5G == -6) + out = 0x101; /* -6 dB */ + else if (bbSwing_5G == -9) + out = 0x0B6; /* -9 dB */ + else { + if (pHalData->external_pa_5g) { + pRFCalibrateInfo->bb_swing_diff_5g = -3; + out = 0x16A; + } else { + pRFCalibrateInfo->bb_swing_diff_5g = 0; + out = 0x200; + } + } + } else { + pRFCalibrateInfo->bb_swing_diff_2g = -3; + pRFCalibrateInfo->bb_swing_diff_5g = -3; + out = 0x16A; /* -3 dB */ + } + } else { + u32 swing = 0, onePathSwing = 0; + + if (Band == BAND_ON_2_4G) { + if (GetRegTxBBSwing_2G(Adapter) == AUTO) { + EFUSE_ShadowRead(Adapter, 1, EEPROM_TX_BBSWING_2G_8814, (u32 *)&swing); + if (swing == 0xFF) { + if (bbSwing_2G == 0) + swing = 0x00; /* 0 dB */ + else if (bbSwing_2G == -3) + swing = 0x55; /* -3 dB */ + else if (bbSwing_2G == -6) + swing = 0xAA; /* -6 dB */ + else if (bbSwing_2G == -9) + swing = 0xFF; /* -9 dB */ + else + swing = 0x00; + } + } else if (bbSwing_2G == 0) + swing = 0x00; /* 0 dB */ + else if (bbSwing_2G == -3) + swing = 0x55; /* -3 dB */ + else if (bbSwing_2G == -6) + swing = 0xAA; /* -6 dB */ + else if (bbSwing_2G == -9) + swing = 0xFF; /* -9 dB */ + else + swing = 0x00; + } else { + if (GetRegTxBBSwing_5G(Adapter) == AUTO) { + EFUSE_ShadowRead(Adapter, 1, EEPROM_TX_BBSWING_5G_8814, (u32 *)&swing); + if (swing == 0xFF) { + if (bbSwing_5G == 0) + swing = 0x00; /* 0 dB */ + else if (bbSwing_5G == -3) + swing = 0x55; /* -3 dB */ + else if (bbSwing_5G == -6) + swing = 0xAA; /* -6 dB */ + else if (bbSwing_5G == -9) + swing = 0xFF; /* -9 dB */ + else + swing = 0x00; + } + } else if (bbSwing_5G == 0) + swing = 0x00; /* 0 dB */ + else if (bbSwing_5G == -3) + swing = 0x55; /* -3 dB */ + else if (bbSwing_5G == -6) + swing = 0xAA; /* -6 dB */ + else if (bbSwing_5G == -9) + swing = 0xFF; /* -9 dB */ + else + swing = 0x00; + } + + if (RFPath == RF_PATH_A) + onePathSwing = (swing & 0x3) >> 0; /* 0xC6/C7[1:0] */ + else if (RFPath == RF_PATH_B) + onePathSwing = (swing & 0xC) >> 2; /* 0xC6/C7[3:2] */ + else if (RFPath == RF_PATH_C) + onePathSwing = (swing & 0x30) >> 4; /* 0xC6/C7[5:4] */ + else if (RFPath == RF_PATH_D) + onePathSwing = (swing & 0xC0) >> 6; /* 0xC6/C7[7:6] */ + + if (onePathSwing == 0x0) { + if (Band == BAND_ON_2_4G) + pRFCalibrateInfo->bb_swing_diff_2g = 0; + else + pRFCalibrateInfo->bb_swing_diff_5g = 0; + out = 0x200; /* 0 dB */ + } else if (onePathSwing == 0x1) { + if (Band == BAND_ON_2_4G) + pRFCalibrateInfo->bb_swing_diff_2g = -3; + else + pRFCalibrateInfo->bb_swing_diff_5g = -3; + out = 0x16A; /* -3 dB */ + } else if (onePathSwing == 0x2) { + if (Band == BAND_ON_2_4G) + pRFCalibrateInfo->bb_swing_diff_2g = -6; + else + pRFCalibrateInfo->bb_swing_diff_5g = -6; + out = 0x101; /* -6 dB */ + } else if (onePathSwing == 0x3) { + if (Band == BAND_ON_2_4G) + pRFCalibrateInfo->bb_swing_diff_2g = -9; + else + pRFCalibrateInfo->bb_swing_diff_5g = -9; + out = 0x0B6; /* -9 dB */ + } + } + return out; +} + + +/* 1 7. BandWidth setting API */ + +void +phy_SetBwRegAdc_8814A( + PADAPTER Adapter, + u8 Band, + enum channel_width CurrentBW +) +{ + switch (CurrentBW) { + case CHANNEL_WIDTH_20: + if (Band == BAND_ON_5G) { + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, BIT(1) | BIT(0), 0x0); /* 0x8ac[28, 21,20,16, 9:6,1,0]=10'b10_0011_0000 */ + } else { + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, BIT(1) | BIT(0), 0x0); /* 0x8ac[28, 21,20,16, 9:6,1,0]=10'b10_0101_0000 */ + } + break; + + case CHANNEL_WIDTH_40: + if (Band == BAND_ON_5G) { + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, BIT(1) | BIT(0), 0x1); /* 0x8ac[17, 11, 10, 7:6,1,0]=7'b100_0001 */ + } else { + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, BIT(1) | BIT(0), 0x1); /* 0x8ac[17, 11, 10, 7:6,1,0]=7'b101_0001 */ + } + break; + + case CHANNEL_WIDTH_80: + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, BIT(1) | BIT(0), 0x02); /* 0x8ac[7:6,1,0]=4'b0010 */ + break; + + default: + RT_DISP(FPHY, PHY_BBW, ("phy_SetBwRegAdc_8814A(): unknown Bandwidth: %#X\n", CurrentBW)); + break; + } +} + + +void +phy_SetBwRegAgc_8814A( + PADAPTER Adapter, + u8 Band, + enum channel_width CurrentBW +) +{ + u32 AgcValue = 7; + switch (CurrentBW) { + case CHANNEL_WIDTH_20: + if (Band == BAND_ON_5G) + AgcValue = 6; + else + AgcValue = 6; + break; + + case CHANNEL_WIDTH_40: + if (Band == BAND_ON_5G) + AgcValue = 8; + else + AgcValue = 7; + break; + + case CHANNEL_WIDTH_80: + AgcValue = 3; + break; + + default: + RT_DISP(FPHY, PHY_BBW, ("phy_SetBwRegAgc_8814A(): unknown Bandwidth: %#X\n", CurrentBW)); + break; + } + + phy_set_bb_reg(Adapter, rAGC_table_Jaguar, 0xf000, AgcValue); /* 0x82C[15:12] = AgcValue */ +} + + +BOOLEAN +phy_SwBand8814A( + PADAPTER pAdapter, + u8 channelToSW) +{ + u8 u1Btmp; + BOOLEAN ret_value = _TRUE; + u8 Band = BAND_ON_5G, BandToSW; + + u1Btmp = rtw_read8(pAdapter, REG_CCK_CHECK_8814A); + if (u1Btmp & BIT7) + Band = BAND_ON_5G; + else + Band = BAND_ON_2_4G; + + /* Use current channel to judge Band Type and switch Band if need. */ + if (channelToSW > 14) + BandToSW = BAND_ON_5G; + else + BandToSW = BAND_ON_2_4G; + + if (BandToSW != Band) + PHY_SwitchWirelessBand8814A(pAdapter, BandToSW); + + return ret_value; +} + + +void +PHY_SetRFEReg8814A( + PADAPTER Adapter, + BOOLEAN bInit, + u8 Band +) +{ + u8 u1tmp = 0; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if (bInit) { + switch (pHalData->rfe_type) { + case 2: + case 1: + phy_set_bb_reg(Adapter, 0x1994, 0xf, 0xf); /* 0x1994[3:0] = 0xf */ + u1tmp = PlatformEFIORead1Byte(Adapter, REG_GPIO_IO_SEL_8814A); + rtw_write8(Adapter, REG_GPIO_IO_SEL_8814A, u1tmp | 0xf0); /* 0x40[23:20] = 0xf */ + break; + case 0: + phy_set_bb_reg(Adapter, 0x1994, 0xf, 0xf); /* 0x1994[3:0] = 0xf */ + u1tmp = PlatformEFIORead1Byte(Adapter, REG_GPIO_IO_SEL_8814A); + rtw_write8(Adapter, REG_GPIO_IO_SEL_8814A, u1tmp | 0xc0); /* 0x40[23:22] = 2b'11 */ + break; + } + } else if (Band == BAND_ON_2_4G) { + switch (pHalData->rfe_type) { + case 2: + phy_set_bb_reg(Adapter, rA_RFE_Pinmux_Jaguar, bMaskDWord, 0x72707270); /* 0xCB0 = 0x72707270 */ + phy_set_bb_reg(Adapter, rB_RFE_Pinmux_Jaguar, bMaskDWord, 0x72707270); /* 0xEB0 = 0x72707270 */ + phy_set_bb_reg(Adapter, rC_RFE_Pinmux_Jaguar, bMaskDWord, 0x72707270); /* 0x18B4 = 0x72707270 */ + phy_set_bb_reg(Adapter, rD_RFE_Pinmux_Jaguar, bMaskDWord, 0x77707770); /* 0x1AB4 = 0x77707770 */ + if (pHalData->EEPROMBluetoothCoexist == FALSE) /*WiFi*/ + phy_set_bb_reg(Adapter, 0x1ABC, 0x0ff00000, 0x72); /* 0x1ABC[27:20] = 0x72 */ + break; + + case 1: + phy_set_bb_reg(Adapter, rA_RFE_Pinmux_Jaguar, bMaskDWord, 0x77777777); /* 0xCB0 = 0x77777777 */ + phy_set_bb_reg(Adapter, rB_RFE_Pinmux_Jaguar, bMaskDWord, 0x77777777); /* 0xEB0 = 0x77777777 */ + phy_set_bb_reg(Adapter, rC_RFE_Pinmux_Jaguar, bMaskDWord, 0x77777777); /* 0x18B4 = 0x77777777 */ + phy_set_bb_reg(Adapter, rD_RFE_Pinmux_Jaguar, bMaskDWord, 0x77777777); /* 0x1AB4 = 0x77777777 */ + if (pHalData->EEPROMBluetoothCoexist == FALSE) /*WiFi*/ + phy_set_bb_reg(Adapter, 0x1ABC, 0x0ff00000, 0x77); /* 0x1ABC[27:20] = 0x77 */ + break; + + case 0: + default: + phy_set_bb_reg(Adapter, rA_RFE_Pinmux_Jaguar, bMaskDWord, 0x77777777); /* 0xCB0 = 0x77777777 */ + phy_set_bb_reg(Adapter, rB_RFE_Pinmux_Jaguar, bMaskDWord, 0x77777777); /* 0xEB0 = 0x77777777 */ + phy_set_bb_reg(Adapter, rC_RFE_Pinmux_Jaguar, bMaskDWord, 0x77777777); /* 0x18B4 = 0x77777777 */ + if (pHalData->EEPROMBluetoothCoexist == FALSE) /*WiFi*/ + phy_set_bb_reg(Adapter, 0x1ABC, 0x0ff00000, 0x77); /* 0x1ABC[27:20] = 0x77 */ + break; + + } + } else { + switch (pHalData->rfe_type) { + case 2: + phy_set_bb_reg(Adapter, rA_RFE_Pinmux_Jaguar, bMaskDWord, 0x37173717); /* 0xCB0 = 0x37173717 */ + phy_set_bb_reg(Adapter, rB_RFE_Pinmux_Jaguar, bMaskDWord, 0x37173717); /* 0xEB0 = 0x37173717 */ + phy_set_bb_reg(Adapter, rC_RFE_Pinmux_Jaguar, bMaskDWord, 0x37173717); /* 0x18B4 = 0x37173717 */ + phy_set_bb_reg(Adapter, rD_RFE_Pinmux_Jaguar, bMaskDWord, 0x77177717); /* 0x1AB4 = 0x77177717 */ + if (pHalData->EEPROMBluetoothCoexist == FALSE) /*WiFi*/ + phy_set_bb_reg(Adapter, 0x1ABC, 0x0ff00000, 0x37); /* 0x1ABC[27:20] = 0x37 */ + break; + + case 1: + phy_set_bb_reg(Adapter, rA_RFE_Pinmux_Jaguar, bMaskDWord, 0x33173317); /* 0xCB0 = 0x33173317 */ + phy_set_bb_reg(Adapter, rB_RFE_Pinmux_Jaguar, bMaskDWord, 0x33173317); /* 0xEB0 = 0x33173317 */ + phy_set_bb_reg(Adapter, rC_RFE_Pinmux_Jaguar, bMaskDWord, 0x33173317); /* 0x18B4 = 0x33173317 */ + phy_set_bb_reg(Adapter, rD_RFE_Pinmux_Jaguar, bMaskDWord, 0x77177717); /* 0x1AB4 = 0x77177717 */ + if (pHalData->EEPROMBluetoothCoexist == FALSE) /*WiFi*/ + phy_set_bb_reg(Adapter, 0x1ABC, 0x0ff00000, 0x33); /* 0x1ABC[27:20] = 0x33 */ + break; + + case 0: + default: + phy_set_bb_reg(Adapter, rA_RFE_Pinmux_Jaguar, bMaskDWord, 0x54775477); /* 0xCB0 = 0x54775477 */ + phy_set_bb_reg(Adapter, rB_RFE_Pinmux_Jaguar, bMaskDWord, 0x54775477); /* 0xEB0 = 0x54775477 */ + phy_set_bb_reg(Adapter, rC_RFE_Pinmux_Jaguar, bMaskDWord, 0x54775477); /* 0x18B4 = 0x54775477 */ + phy_set_bb_reg(Adapter, rD_RFE_Pinmux_Jaguar, bMaskDWord, 0x54775477); /* 0x1AB4 = 0x54775477 */ + if (pHalData->EEPROMBluetoothCoexist == FALSE) /*WiFi*/ + phy_set_bb_reg(Adapter, 0x1ABC, 0x0ff00000, 0x54); /* 0x1ABC[27:20] = 0x54 */ + break; + } + } +} + +void +phy_SetBBSwingByBand_8814A( + PADAPTER Adapter, + u8 Band, + u8 PreviousBand +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + s8 BBDiffBetweenBand = 0; + struct dm_struct *pDM_Odm = &pHalData->odmpriv; + struct dm_rf_calibration_struct *pRFCalibrateInfo = &(pDM_Odm->rf_calibrate_info); + + phy_set_bb_reg(Adapter, rA_TxScale_Jaguar, 0xFFE00000, + PHY_GetTxBBSwing_8814A(Adapter, (BAND_TYPE)Band, RF_PATH_A)); /* 0xC1C[31:21] */ + phy_set_bb_reg(Adapter, rB_TxScale_Jaguar, 0xFFE00000, + PHY_GetTxBBSwing_8814A(Adapter, (BAND_TYPE)Band, RF_PATH_B)); /* 0xE1C[31:21] */ + phy_set_bb_reg(Adapter, rC_TxScale_Jaguar2, 0xFFE00000, + PHY_GetTxBBSwing_8814A(Adapter, (BAND_TYPE)Band, RF_PATH_C)); /* 0x181C[31:21] */ + phy_set_bb_reg(Adapter, rD_TxScale_Jaguar2, 0xFFE00000, + PHY_GetTxBBSwing_8814A(Adapter, (BAND_TYPE)Band, RF_PATH_D)); /* 0x1A1C[31:21] */ + + /* <20121005, Kordan> When TxPowerTrack is ON, we should take care of the change of BB swing. */ + /* That is, reset all info to trigger Tx power tracking. */ + + if (Band != PreviousBand) { + BBDiffBetweenBand = (pRFCalibrateInfo->bb_swing_diff_2g - pRFCalibrateInfo->bb_swing_diff_5g); + BBDiffBetweenBand = (Band == BAND_ON_2_4G) ? BBDiffBetweenBand : (-1 * BBDiffBetweenBand); + pRFCalibrateInfo->default_ofdm_index += BBDiffBetweenBand * 2; + } + + odm_clear_txpowertracking_state(pDM_Odm); +} + + +s32 +PHY_SwitchWirelessBand8814A( + PADAPTER Adapter, + u8 Band +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 PreBand = pHalData->current_band_type, tepReg = 0; + + //RTW_INFO("==>PHY_SwitchWirelessBand8814() %s\n", ((Band == 0) ? "2.4G" : "5G")); + + pHalData->current_band_type = (BAND_TYPE)Band; + +#ifdef CONFIG_BT_COEXIST + if (pHalData->EEPROMBluetoothCoexist) { + struct mlme_ext_priv *mlmeext; + + /* switch band under site survey or not, must notify to BT COEX */ + mlmeext = &Adapter->mlmeextpriv; + if (mlmeext_scan_state(mlmeext) != SCAN_DISABLE) + rtw_btcoex_switchband_notify(_TRUE, pHalData->current_band_type); + else + rtw_btcoex_switchband_notify(_FALSE, pHalData->current_band_type); + } else + rtw_btcoex_wifionly_switchband_notify(Adapter); +#else /* !CONFIG_BT_COEXIST */ + rtw_btcoex_wifionly_switchband_notify(Adapter); +#endif /* CONFIG_BT_COEXIST */ + + /*clear 0x1000[16], When this bit is set to 0, CCK and OFDM are disabled, and clock are gated. Otherwise, CCK and OFDM are enabled. */ + tepReg = rtw_read8(Adapter, REG_SYS_CFG3_8814A + 2); + rtw_write8(Adapter, REG_SYS_CFG3_8814A + 2, tepReg & (~BIT0)); + + /* STOP Tx/Rx */ + /* phy_set_bb_reg(Adapter, rOFDMCCKEN_Jaguar, bOFDMEN_Jaguar|bCCKEN_Jaguar, 0x00); */ + + if (Band == BAND_ON_2_4G) { + /* 2.4G band */ + + /* AGC table select */ + phy_set_bb_reg(Adapter, rAGC_table_Jaguar2, 0x1F, 0); /* 0x958[4:0] = 5b'00000 */ + + PHY_SetRFEReg8814A(Adapter, FALSE, Band); + + /* cck_enable */ + /* phy_set_bb_reg(Adapter, rOFDMCCKEN_Jaguar, bOFDMEN_Jaguar|bCCKEN_Jaguar, 0x3); */ + + if (Adapter->registrypriv.mp_mode == 0) { + /* 0x80C & 0xa04 must set the same value. */ + phy_set_bb_reg(Adapter, rTxPath_Jaguar, 0xf0, 0x2); + phy_set_bb_reg(Adapter, rCCK_RX_Jaguar, 0x0f000000, 0x5); + } + + phy_set_bb_reg(Adapter, rOFDMCCKEN_Jaguar, bOFDMEN_Jaguar | bCCKEN_Jaguar, 0x3); + + + /* CCK_CHECK_en */ + rtw_write8(Adapter, REG_CCK_CHECK_8814A, 0x0); + /* after 5G swicth 2G , set A82[2] = 0 */ + phy_set_bb_reg(Adapter, 0xa80, BIT18, 0x0); + + } else { /* 5G band */ + /* CCK_CHECK_en */ + rtw_write8(Adapter, REG_CCK_CHECK_8814A, 0x80); + /* Enable CCK Tx function, even when CCK is off */ + phy_set_bb_reg(Adapter, 0xa80, BIT18, 0x1); + + /* AGC table select */ + /* Postpone to channel switch */ + /* phy_set_bb_reg(Adapter, rAGC_table_Jaguar2, 0x1F, 1); */ /* 0x958[4:0] = 5b'00001 */ + + PHY_SetRFEReg8814A(Adapter, FALSE, Band); + + if (Adapter->registrypriv.mp_mode == 0) { + phy_set_bb_reg(Adapter, rTxPath_Jaguar, 0xf0, 0x0); + phy_set_bb_reg(Adapter, rCCK_RX_Jaguar, 0x0f000000, 0xF); + } + + phy_set_bb_reg(Adapter, rOFDMCCKEN_Jaguar, bOFDMEN_Jaguar | bCCKEN_Jaguar, 0x02); + /* RTW_INFO("==>PHY_SwitchWirelessBand8814() BAND_ON_5G settings OFDM index 0x%x\n", pHalData->OFDM_index[0]); */ + } + + phy_SetBBSwingByBand_8814A(Adapter, Band, PreBand); + phy_SetBwRegAdc_8814A(Adapter, Band, pHalData->current_channel_bw); + phy_SetBwRegAgc_8814A(Adapter, Band, pHalData->current_channel_bw); + /* set 0x1000[16], When this bit is set to 0, CCK and OFDM are disabled, and clock are gated. Otherwise, CCK and OFDM are enabled.*/ + tepReg = rtw_read8(Adapter, REG_SYS_CFG3_8814A + 2); + rtw_write8(Adapter, REG_SYS_CFG3_8814A + 2, tepReg | BIT0); + + RTW_INFO("<==PHY_SwitchWirelessBand8814():Switch Band OK.\n"); + return _SUCCESS; +} + + +u8 +phy_GetSecondaryChnl_8814A( + PADAPTER Adapter +) +{ + u8 SCSettingOf40 = 0, SCSettingOf20 = 0; + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + + /* RTW_INFO("SCMapping: Case: pHalData->current_channel_bw %d, pHalData->nCur80MhzPrimeSC %d, pHalData->nCur40MhzPrimeSC %d\n",pHalData->current_channel_bw,pHalData->nCur80MhzPrimeSC,pHalData->nCur40MhzPrimeSC); */ + if (pHalData->current_channel_bw == CHANNEL_WIDTH_80) { + if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) + SCSettingOf40 = VHT_DATA_SC_40_LOWER_OF_80MHZ; + else if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) + SCSettingOf40 = VHT_DATA_SC_40_UPPER_OF_80MHZ; + else + RTW_INFO("SCMapping: DONOT CARE Mode Setting\n"); + + if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) + SCSettingOf20 = VHT_DATA_SC_20_LOWEST_OF_80MHZ; + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) + SCSettingOf20 = VHT_DATA_SC_20_LOWER_OF_80MHZ; + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) + SCSettingOf20 = VHT_DATA_SC_20_UPPER_OF_80MHZ; + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) + SCSettingOf20 = VHT_DATA_SC_20_UPPERST_OF_80MHZ; + else { + if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) + SCSettingOf20 = VHT_DATA_SC_40_LOWER_OF_80MHZ; + else if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) + SCSettingOf20 = VHT_DATA_SC_40_UPPER_OF_80MHZ; + else + RTW_INFO("SCMapping: DONOT CARE Mode Setting\n"); + } + } else if (pHalData->current_channel_bw == CHANNEL_WIDTH_40) { + RTW_INFO("SCMapping: pHalData->current_channel_bw %d, pHalData->nCur40MhzPrimeSC %d\n", pHalData->current_channel_bw, pHalData->nCur40MhzPrimeSC); + + if (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) + SCSettingOf20 = VHT_DATA_SC_20_UPPER_OF_80MHZ; + else if (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) + SCSettingOf20 = VHT_DATA_SC_20_LOWER_OF_80MHZ; + else + RTW_INFO("SCMapping: DONOT CARE Mode Setting\n"); + } + + /*RTW_INFO("SCMapping: SC Value %x\n", ((SCSettingOf40 << 4) | SCSettingOf20));*/ + return (SCSettingOf40 << 4) | SCSettingOf20; +} + + +void +phy_SetBwRegMac_8814A( + PADAPTER Adapter, + enum channel_width CurrentBW +) +{ + u16 RegRfMod_BW, u2tmp = 0; + RegRfMod_BW = PlatformEFIORead2Byte(Adapter, REG_TRXPTCL_CTL_8814A); + + switch (CurrentBW) { + case CHANNEL_WIDTH_20: + PlatformEFIOWrite2Byte(Adapter, REG_TRXPTCL_CTL_8814A, (RegRfMod_BW & 0xFE7F)); /* BIT 7 = 0, BIT 8 = 0 */ + break; + + case CHANNEL_WIDTH_40: + u2tmp = RegRfMod_BW | BIT7; + PlatformEFIOWrite2Byte(Adapter, REG_TRXPTCL_CTL_8814A, (u2tmp & 0xFEFF)); /* BIT 7 = 1, BIT 8 = 0 */ + break; + + case CHANNEL_WIDTH_80: + u2tmp = RegRfMod_BW | BIT8; + PlatformEFIOWrite2Byte(Adapter, REG_TRXPTCL_CTL_8814A, (u2tmp & 0xFF7F)); /* BIT 7 = 0, BIT 8 = 1 */ + break; + + default: + RT_DISP(FPHY, PHY_BBW, ("phy_SetBwRegMac_8814A(): unknown Bandwidth: %#X\n", CurrentBW)); + break; + } +} + +void PHY_Set_SecCCATH_by_RXANT_8814A(PADAPTER pAdapter, u32 ulAntennaRx) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter); + + if ((pHalData->bSWToBW40M == TRUE) && (pHalData->current_channel_bw != CHANNEL_WIDTH_40)) { + phy_set_bb_reg(pAdapter, rPwed_TH_Jaguar, 0x007c0000, pHalData->BackUp_BB_REG_4_2nd_CCA[0]); + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x0000ff00, pHalData->BackUp_BB_REG_4_2nd_CCA[1]); + phy_set_bb_reg(pAdapter, r_L1_SBD_start_time, 0x0f000000, pHalData->BackUp_BB_REG_4_2nd_CCA[2]); + pHalData->bSWToBW40M = FALSE; + } + + if ((pHalData->bSWToBW80M == TRUE) && (pHalData->current_channel_bw != CHANNEL_WIDTH_80)) { + phy_set_bb_reg(pAdapter, r_L1_SBD_start_time, 0x0f000000, pHalData->BackUp_BB_REG_4_2nd_CCA[2]); + pHalData->bSWToBW80M = FALSE; + } + + /*1 Setting CCA TH 2nd CCA parameter by Rx Antenna*/ + if (pHalData->current_channel_bw == CHANNEL_WIDTH_80) { + if (pHalData->bSWToBW80M == FALSE) + pHalData->BackUp_BB_REG_4_2nd_CCA[2] = phy_query_bb_reg(pAdapter, r_L1_SBD_start_time, 0x0f000000); + + pHalData->bSWToBW80M = TRUE; + + switch (ulAntennaRx) { + case ANTENNA_A: + case ANTENNA_B: + case ANTENNA_C: + case ANTENNA_D: + phy_set_bb_reg(pAdapter, r_L1_SBD_start_time, 0x0f000000, 0x0b);/* 0x844[27:24] = 0xb */ + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x00000001, 0x1); /* 0x838 Enable 2ndCCA */ + phy_set_bb_reg(pAdapter, rAGC_table_Jaguar, 0x00FF0000, 0x89); /* 0x82C[23:20] = 8, PWDB_TH_QB, 0x82C[19:16] = 9, PWDB_TH_HB*/ + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x0FFF0000, 0x887); /* 838[27:24]=8, RF80_secondary40, 838[23:20]=8, RF80_secondary20, 838[19:16]=7, RF80_primary*/ + phy_set_bb_reg(pAdapter, rL1_Weight_Jaguar, 0x0000F000, 0x7); /* 840[15:12]=7, L1_square_Pk_weight_80M*/ + break; + + case ANTENNA_AB: + case ANTENNA_AC: + case ANTENNA_AD: + case ANTENNA_BC: + case ANTENNA_BD: + case ANTENNA_CD: + phy_set_bb_reg(pAdapter, r_L1_SBD_start_time, 0x0f000000, 0x0d); + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x00000001, 0x1); /* Enable 2ndCCA*/ + phy_set_bb_reg(pAdapter, rAGC_table_Jaguar, 0x00FF0000, 0x78); /* 0x82C[23:20] = 7, PWDB_TH_QB, 0x82C[19:16] = 8, PWDB_TH_HB*/ + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x0FFF0000, 0x444); /* 838[27:24]=4, RF80_secondary40, 838[23:20]=4, RF80_secondary20, 838[19:16]=4, RF80_primary*/ + phy_set_bb_reg(pAdapter, rL1_Weight_Jaguar, 0x0000F000, 0x6); /* 840[15:12]=6, L1_square_Pk_weight_80M*/ + break; + + case ANTENNA_ABC: + case ANTENNA_ABD: + case ANTENNA_ACD: + case ANTENNA_BCD: + phy_set_bb_reg(pAdapter, r_L1_SBD_start_time, 0x0f000000, 0x0d); + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x00000001, 0x1); /* Enable 2ndCCA*/ + phy_set_bb_reg(pAdapter, rAGC_table_Jaguar, 0x00FF0000, 0x98); /* 0x82C[23:20] = 9, PWDB_TH_QB, 0x82C[19:16] = 8, PWDB_TH_HB*/ + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x0FFF0000, 0x666); /* 838[27:24]=6, RF80_secondary40, 838[23:20]=6, RF80_secondary20, 838[19:16]=6, RF80_primary*/ + phy_set_bb_reg(pAdapter, rL1_Weight_Jaguar, 0x0000F000, 0x6); /* 840[15:12]=6, L1_square_Pk_weight_80M*/ + break; + + case ANTENNA_ABCD: + phy_set_bb_reg(pAdapter, r_L1_SBD_start_time, 0x0f000000, 0x0d); + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x00000001, 0x1); /*Enable 2ndCCA*/ + phy_set_bb_reg(pAdapter, rAGC_table_Jaguar, 0x00FF0000, 0x98); /* 0x82C[23:20] = 9, PWDB_TH_QB, 0x82C[19:16] = 8, PWDB_TH_HB*/ + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x0FFF0000, 0x666); /* 838[27:24]=6, RF80_secondary40, 838[23:20]=6, RF80_secondary20, 838[19:16]=6, RF80_primary*/ + phy_set_bb_reg(pAdapter, rL1_Weight_Jaguar, 0x0000F000, 0x7); /*840[15:12]=7, L1_square_Pk_weight_80M*/ + break; + + default: + RTW_INFO("Unknown Rx antenna.\n"); + break; + } + } else if (pHalData->current_channel_bw == CHANNEL_WIDTH_40) { + if (pHalData->bSWToBW40M == FALSE) { + pHalData->BackUp_BB_REG_4_2nd_CCA[0] = phy_query_bb_reg(pAdapter, rPwed_TH_Jaguar, 0x007c0000); + pHalData->BackUp_BB_REG_4_2nd_CCA[1] = phy_query_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x0000ff00); + pHalData->BackUp_BB_REG_4_2nd_CCA[2] = phy_query_bb_reg(pAdapter, r_L1_SBD_start_time, 0x0f000000); + } + + switch (ulAntennaRx) { + case ANTENNA_A: /* xT1R*/ + case ANTENNA_B: + case ANTENNA_C: + case ANTENNA_D: + phy_set_bb_reg(pAdapter, r_L1_SBD_start_time, 0x0f000000, 0x0b); + phy_set_bb_reg(pAdapter, rPwed_TH_Jaguar, 0x007c0000, 0xe); + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x0000ff00, 0x43); + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x00000001, 0x1); + break; + case ANTENNA_AB: /* xT2R*/ + case ANTENNA_AC: + case ANTENNA_AD: + case ANTENNA_BC: + case ANTENNA_BD: + case ANTENNA_CD: + phy_set_bb_reg(pAdapter, r_L1_SBD_start_time, 0x0f000000, 0x0d); + phy_set_bb_reg(pAdapter, rPwed_TH_Jaguar, 0x007c0000, 0x8); + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x0000ff00, 0x43); + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x00000001, 0x1); + break; + case ANTENNA_ABC: /* xT3R*/ + case ANTENNA_ABD: + case ANTENNA_ACD: + case ANTENNA_BCD: + case ANTENNA_ABCD: /* xT4R*/ + phy_set_bb_reg(pAdapter, r_L1_SBD_start_time, 0x0f000000, 0x0d); + phy_set_bb_reg(pAdapter, rPwed_TH_Jaguar, 0x007c0000, 0xa); + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x0000ff00, 0x43); + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x00000001, 0x1); + break; + default: + break; + } + pHalData->bSWToBW40M = TRUE; + } else { + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x00000001, 0x0); /* Enable 2ndCCA*/ + phy_set_bb_reg(pAdapter, rAGC_table_Jaguar, 0x00FF0000, 0x43); /* 0x82C[23:20] = 9, PWDB_TH_QB, 0x82C[19:16] = 8, PWDB_TH_HB*/ + phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, 0x0FFF0000, 0x7aa); /* 838[27:24]=6, RF80_secondary40, 838[23:20]=6, RF80_secondary20, 838[19:16]=6, RF80_primary*/ + phy_set_bb_reg(pAdapter, rL1_Weight_Jaguar, 0x0000F000, 0x7); /* 840[15:12]=7, L1_square_Pk_weight_80M*/ + } + +} + + +void PHY_SetRXSC_by_TXSC_8814A(PADAPTER Adapter, u8 SubChnlNum) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + + if (pHalData->current_channel_bw == CHANNEL_WIDTH_80) { + if (SubChnlNum == 0) + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x1); + else if (SubChnlNum == 1) + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x1); + else if (SubChnlNum == 2) + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x2); + else if (SubChnlNum == 4) + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x4); + else if (SubChnlNum == 3) + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x3); + else if (SubChnlNum == 9) + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x1); + else if (SubChnlNum == 10) + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x2); + } else if (pHalData->current_channel_bw == CHANNEL_WIDTH_40) { + if (SubChnlNum == 1) + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x1); + else if (SubChnlNum == 2) + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x2); + } else + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x0); +} + + +/* <20141230, James> A workaround to eliminate the 5280MHz & 5600MHz & 5760MHzspur of 8814A. (Asked by BBSD Neil.)*/ +void phy_SpurCalibration_8814A(PADAPTER Adapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + BOOLEAN Reset_NBI_CSI = TRUE; + struct dm_struct *pDM_Odm = &pHalData->odmpriv; + static u32 bak_82c = 0, bak_830 = 0; + + /*RTW_INFO("%s(),RFE Type =%d, CurrentCh = %d ,ChannelBW =%d\n", __func__, pHalData->rfe_type, pHalData->current_channel, pHalData->current_channel_bw);*/ + /*RTW_INFO("%s(),Before RrNBI_Setting_Jaguar= %x\n", __func__, phy_query_bb_reg(Adapter, rNBI_Setting_Jaguar, bMaskDWord));*/ + + if (pHalData->rfe_type == 0) { + switch (pHalData->current_channel_bw) { + case CHANNEL_WIDTH_40: + if (pHalData->current_channel == 54 || pHalData->current_channel == 118) { + phy_set_bb_reg(Adapter, rNBI_Setting_Jaguar, 0x000fe000, 0x3e >> 1); + phy_set_bb_reg(Adapter, rCSI_Mask_Setting1_Jaguar, BIT(0), 1); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask0_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask1_Jaguar, BIT(0), 1); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask6_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask7_Jaguar, bMaskDWord, 0); + Reset_NBI_CSI = FALSE; + } else if (pHalData->current_channel == 151) { + phy_set_bb_reg(Adapter, rNBI_Setting_Jaguar, 0x000fe000, 0x1e >> 1); + phy_set_bb_reg(Adapter, rCSI_Mask_Setting1_Jaguar, BIT(0), 1); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask0_Jaguar, BIT(16), 1); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask1_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask6_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask7_Jaguar, bMaskDWord, 0); + Reset_NBI_CSI = FALSE; + } + break; + + case CHANNEL_WIDTH_80: + if (pHalData->current_channel == 58 || pHalData->current_channel == 122) { + phy_set_bb_reg(Adapter, rNBI_Setting_Jaguar, 0x000fe000, 0x3a >> 1); + phy_set_bb_reg(Adapter, rCSI_Mask_Setting1_Jaguar, BIT(0), 1); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask0_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask1_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask6_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask7_Jaguar, BIT(0), 1); + Reset_NBI_CSI = FALSE; + } else if (pHalData->current_channel == 155) { + phy_set_bb_reg(Adapter, rNBI_Setting_Jaguar, 0x000fe000, 0x5a >> 1); + phy_set_bb_reg(Adapter, rCSI_Mask_Setting1_Jaguar, BIT(0), 1); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask0_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask1_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask6_Jaguar, BIT(16), 1); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask7_Jaguar, bMaskDWord, 0); + Reset_NBI_CSI = FALSE; + } + break; + case CHANNEL_WIDTH_20: + if (pHalData->current_channel == 153) { + phy_set_bb_reg(Adapter, rNBI_Setting_Jaguar, 0x000fe000, 0x1e >> 1); + phy_set_bb_reg(Adapter, rCSI_Mask_Setting1_Jaguar, BIT(0), 1); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask0_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask1_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask6_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask7_Jaguar, BIT(16), 1); + Reset_NBI_CSI = FALSE; + } + + /* Add for 8814AE module ch140 MP Rx */ + if (pHalData->current_channel == 140) { + if (bak_82c == 0) + bak_82c = phy_query_bb_reg(Adapter, 0x82c, bMaskDWord); + if (bak_830 == 0) + bak_830 = phy_query_bb_reg(Adapter, 0x830, bMaskDWord); + + phy_set_bb_reg(Adapter, 0x82c, bMaskDWord, 0x75438170); + phy_set_bb_reg(Adapter, 0x830, bMaskDWord, 0x79a18a0a); + } else { + if ((phy_query_bb_reg(Adapter, 0x82c, bMaskDWord) == 0x75438170) && (bak_82c != 0)) + phy_set_bb_reg(Adapter, 0x82c, bMaskDWord, bak_82c); + + if ((phy_query_bb_reg(Adapter, 0x830, bMaskDWord) == 0x79a18a0a) && (bak_830 != 0)) + phy_set_bb_reg(Adapter, 0x830, bMaskDWord, bak_830); + + bak_82c = phy_query_bb_reg(Adapter, 0x82c, bMaskDWord); + bak_830 = phy_query_bb_reg(Adapter, 0x830, bMaskDWord); + } + break; + + default: + break; + } + } else if (pHalData->rfe_type == 1 || pHalData->rfe_type == 2) { + switch (pHalData->current_channel_bw) { + case CHANNEL_WIDTH_20: + if (pHalData->current_channel == 153) { + phy_set_bb_reg(Adapter, rNBI_Setting_Jaguar, 0x000fe000, 0x1E >> 1); + phy_set_bb_reg(Adapter, rCSI_Mask_Setting1_Jaguar, BIT(0), 1); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask0_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask1_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask6_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask7_Jaguar, BIT(16), 1); + Reset_NBI_CSI = FALSE; + } + break; + case CHANNEL_WIDTH_40: + if (pHalData->current_channel == 151) { + phy_set_bb_reg(Adapter, rNBI_Setting_Jaguar, 0x000fe000, 0x1e >> 1); + phy_set_bb_reg(Adapter, rCSI_Mask_Setting1_Jaguar, BIT(0), 1); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask0_Jaguar, BIT(16), 1); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask1_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask6_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask7_Jaguar, bMaskDWord, 0); + Reset_NBI_CSI = FALSE; + } + break; + case CHANNEL_WIDTH_80: + if (pHalData->current_channel == 155) { + phy_set_bb_reg(Adapter, rNBI_Setting_Jaguar, 0x000fe000, 0x5a >> 1); + phy_set_bb_reg(Adapter, rCSI_Mask_Setting1_Jaguar, BIT(0), 1); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask0_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask1_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask6_Jaguar, BIT(16), 1); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask7_Jaguar, bMaskDWord, 0); + Reset_NBI_CSI = FALSE; + } + break; + + default: + break; + } + } + + if (Reset_NBI_CSI) { + phy_set_bb_reg(Adapter, rNBI_Setting_Jaguar, 0x000fe000, 0xfc >> 1); + phy_set_bb_reg(Adapter, rCSI_Mask_Setting1_Jaguar, BIT(0), 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask0_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask1_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask6_Jaguar, bMaskDWord, 0); + phy_set_bb_reg(Adapter, rCSI_Fix_Mask7_Jaguar, bMaskDWord, 0); + } + + phydm_spur_nbi_setting_8814a(pDM_Odm); + /*RTW_INFO("%s(),After RrNBI_Setting_Jaguar= %x\n", __func__, phy_query_bb_reg(Adapter, rNBI_Setting_Jaguar, bMaskDWord));*/ +} + + +void phy_ModifyInitialGain_8814A( + PADAPTER Adapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 channel = pHalData->current_channel; + s8 offset[4]; /*{A,B,C,D}*/ + u8 i = 0; + u8 chnl_section = 0xff; + + if (channel <= 14 && channel > 0) + chnl_section = 0; /*2G*/ + else if (channel <= 64 && channel >= 36) + chnl_section = 1; /*5GL*/ + else if (channel <= 144 && channel >= 100) + chnl_section = 2; /*5GM*/ + else if (channel <= 177 && channel >= 149) + chnl_section = 3; /*5GH*/ + + if (chnl_section > 3) { + RTW_INFO("%s: worng channel section\n", __func__); + return; + } + + for (i = 0; i < 4; i++) { + u8 hex_offset; + + hex_offset = (u8)(pHalData->RxGainOffset[chnl_section] >> (12 - 4 * i)) & 0x0f; + RTW_INFO("%s: pHalData->RxGainOffset[%d] = %x\n", __func__, chnl_section, pHalData->RxGainOffset[chnl_section]); + RTW_INFO("%s: hex_offset = %x\n", __func__, hex_offset); + + if (hex_offset == 0xf) + offset[i] = 0; + else if (hex_offset >= 0x8) + offset[i] = 0x11 - hex_offset; + else + offset[i] = 0x0 - hex_offset; + offset[i] = (offset[i] / 2) * 2; + RTW_INFO("%s: offset[%d] = %x\n", __func__, i, offset[i]); + RTW_INFO("%s: BackUp_IG_REG_4_Chnl_Section[%d] = %x\n", __func__, i, pHalData->BackUp_IG_REG_4_Chnl_Section[i]); + } + + if (pHalData->BackUp_IG_REG_4_Chnl_Section[0] != 0 && + pHalData->BackUp_IG_REG_4_Chnl_Section[1] != 0 && + pHalData->BackUp_IG_REG_4_Chnl_Section[2] != 0 && + pHalData->BackUp_IG_REG_4_Chnl_Section[3] != 0 + ) { + phy_set_bb_reg(Adapter, rA_IGI_Jaguar, 0x000000ff, pHalData->BackUp_IG_REG_4_Chnl_Section[0] + offset[0]); + phy_set_bb_reg(Adapter, rB_IGI_Jaguar, 0x000000ff, pHalData->BackUp_IG_REG_4_Chnl_Section[1] + offset[1]); + phy_set_bb_reg(Adapter, rC_IGI_Jaguar2, 0x000000ff, pHalData->BackUp_IG_REG_4_Chnl_Section[2] + offset[2]); + phy_set_bb_reg(Adapter, rD_IGI_Jaguar2, 0x000000ff, pHalData->BackUp_IG_REG_4_Chnl_Section[3] + offset[3]); + } +} + + +void phy_SetBwMode8814A(PADAPTER Adapter) +{ + u8 SubChnlNum = 0; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + /* 3 Set Reg668 BW */ + phy_SetBwRegMac_8814A(Adapter, pHalData->current_channel_bw); + + /* 3 Set Reg483 */ + SubChnlNum = phy_GetSecondaryChnl_8814A(Adapter); + rtw_write8(Adapter, REG_DATA_SC_8814A, SubChnlNum); + + if (pHalData->rf_chip == RF_PSEUDO_11N) { + RTW_INFO("phy_SetBwMode8814A: return for PSEUDO\n"); + return; + } + + /* 3 Set Reg8AC Reg8C4 Reg8C8 */ + phy_SetBwRegAdc_8814A(Adapter, pHalData->current_band_type, pHalData->current_channel_bw); + /* 3 Set Reg82C */ + phy_SetBwRegAgc_8814A(Adapter, pHalData->current_band_type, pHalData->current_channel_bw); + + /* 3 Set Reg848 RegA00 */ + switch (pHalData->current_channel_bw) { + case CHANNEL_WIDTH_20: + break; + + case CHANNEL_WIDTH_40: + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, 0x3C, SubChnlNum); /* 0x8ac[5:2]=1/2 */ + + if (SubChnlNum == VHT_DATA_SC_20_UPPER_OF_80MHZ) /* 0xa00[4]=1/0 */ + phy_set_bb_reg(Adapter, rCCK_System_Jaguar, bCCK_System_Jaguar, 1); + else + phy_set_bb_reg(Adapter, rCCK_System_Jaguar, bCCK_System_Jaguar, 0); + break; + + case CHANNEL_WIDTH_80: + phy_set_bb_reg(Adapter, rRFMOD_Jaguar, 0x3C, SubChnlNum); /* 0x8ac[5:2]=1/2/3/4/9/10 */ + break; + + default: + RTW_INFO("%s():unknown Bandwidth:%#X\n", __func__, pHalData->current_channel_bw); + break; + } + +#if (MP_DRIVER == 1) + if (Adapter->registrypriv.mp_mode == 1) { + /* 2 Set Reg 0x8AC */ + PHY_SetRXSC_by_TXSC_8814A(Adapter, (SubChnlNum & 0xf)); + PHY_Set_SecCCATH_by_RXANT_8814A(Adapter, pHalData->AntennaRxPath); + } +#endif + /* 3 Set RF related register */ + PHY_RF6052SetBandwidth8814A(Adapter, pHalData->current_channel_bw); + + phy_ADC_CLK_8814A(Adapter); + phy_SpurCalibration_8814A(Adapter); +} + + + +/* 1 6. Channel setting API */ + +/* Add for KFree Feature Requested by RF David. + * We need support ABCD four path Kfree */ + +void +phy_SetKfreeToRF_8814A( + PADAPTER Adapter, + enum rf_path eRFPath, + u8 Data +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(GetDefaultAdapter(Adapter)); + struct dm_struct *pDM_Odm = &pHalData->odmpriv; + BOOLEAN bOdd; + struct dm_rf_calibration_struct *pRFCalibrateInfo = &(pDM_Odm->rf_calibrate_info); + if ((Data % 2) != 0) { /* odd->positive */ + Data = Data - 1; + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT19, 1); + bOdd = TRUE; + } else { /* even->negative */ + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT19, 0); + bOdd = FALSE; + } + switch (Data) { + case 2: + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT14, 1); + pRFCalibrateInfo->kfree_offset[eRFPath] = 0; + break; + case 4: + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT17 | BIT16 | BIT15, 1); + pRFCalibrateInfo->kfree_offset[eRFPath] = 1; + break; + case 6: + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT14, 1); + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT17 | BIT16 | BIT15, 1); + pRFCalibrateInfo->kfree_offset[eRFPath] = 1; + break; + case 8: + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT17 | BIT16 | BIT15, 2); + pRFCalibrateInfo->kfree_offset[eRFPath] = 2; + break; + case 10: + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT14, 1); + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT17 | BIT16 | BIT15, 2); + pRFCalibrateInfo->kfree_offset[eRFPath] = 2; + break; + case 12: + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT17 | BIT16 | BIT15, 3); + pRFCalibrateInfo->kfree_offset[eRFPath] = 3; + break; + case 14: + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT14, 1); + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT17 | BIT16 | BIT15, 3); + pRFCalibrateInfo->kfree_offset[eRFPath] = 3; + break; + case 16: + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT17 | BIT16 | BIT15, 4); + pRFCalibrateInfo->kfree_offset[eRFPath] = 4; + break; + case 18: + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT14, 1); + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT17 | BIT16 | BIT15, 4); + pRFCalibrateInfo->kfree_offset[eRFPath] = 4; + break; + case 20: + phy_set_rf_reg(Adapter, eRFPath, REG_RF_TX_GAIN_OFFSET, BIT17 | BIT16 | BIT15, 5); + pRFCalibrateInfo->kfree_offset[eRFPath] = 5; + break; + + default: + break; + } + + if (bOdd == FALSE) { /* that means Kfree offset is negative, we need to record it. */ + pRFCalibrateInfo->kfree_offset[eRFPath] = (-1) * pRFCalibrateInfo->kfree_offset[eRFPath]; + } + +} + + +void +phy_ConfigKFree8814A( + PADAPTER Adapter, + u8 channelToSW, + BAND_TYPE bandType +) +{ + u8 targetval_A = 0xFF; + u8 targetval_B = 0xFF; + u8 targetval_C = 0xFF; + u8 targetval_D = 0xFF; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + /* RTW_INFO("===>phy_ConfigKFree8814A()\n"); */ + + if (Adapter->registrypriv.RegPwrTrimEnable == 2) { + /*RTW_INFO("phy_ConfigKFree8814A(): RegRfKFreeEnable == 2, Disable\n");*/ + return; + } else if (Adapter->registrypriv.RegPwrTrimEnable == 1 || Adapter->registrypriv.RegPwrTrimEnable == 0) { + RTW_INFO("phy_ConfigKFree8814A(): RegPwrTrimEnable == TRUE\n"); + if (bandType == BAND_ON_2_4G) { + RTW_INFO("phy_ConfigKFree8814A(): bandType == BAND_ON_2_4G, channelToSW= %d\n", channelToSW); + if (channelToSW <= 14 && channelToSW >= 1) { + efuse_OneByteRead(Adapter, 0x3F4, &targetval_A, FALSE); /* for Path A and B */ + efuse_OneByteRead(Adapter, 0x3F5, &targetval_B, FALSE); /* for Path C and D */ + } + + } else if (bandType == BAND_ON_5G) { + RTW_INFO("phy_ConfigKFree8814A(): bandType == BAND_ON_5G, channelToSW= %d\n", channelToSW); + if (channelToSW >= 36 && channelToSW < 50) { /* 5GLB_1 */ + efuse_OneByteRead(Adapter, 0x3E0, &targetval_A, FALSE); + efuse_OneByteRead(Adapter, 0x3E1, &targetval_B, FALSE); + efuse_OneByteRead(Adapter, 0x3E2, &targetval_C, FALSE); + efuse_OneByteRead(Adapter, 0x3E3, &targetval_D, FALSE); + } else if (channelToSW >= 50 && channelToSW <= 64) { /* 5GLB_2 */ + efuse_OneByteRead(Adapter, 0x3E4, &targetval_A, FALSE); + efuse_OneByteRead(Adapter, 0x3E5, &targetval_B, FALSE); + efuse_OneByteRead(Adapter, 0x3E6, &targetval_C, FALSE); + efuse_OneByteRead(Adapter, 0x3E7, &targetval_D, FALSE); + } else if (channelToSW >= 100 && channelToSW <= 118) { /* 5GMB_1 */ + efuse_OneByteRead(Adapter, 0x3E8, &targetval_A, FALSE); + efuse_OneByteRead(Adapter, 0x3E9, &targetval_B, FALSE); + efuse_OneByteRead(Adapter, 0x3EA, &targetval_C, FALSE); + efuse_OneByteRead(Adapter, 0x3EB, &targetval_D, FALSE); + } else if (channelToSW >= 120 && channelToSW <= 140) { /* 5GMB_2 */ + efuse_OneByteRead(Adapter, 0x3EC, &targetval_A, FALSE); + efuse_OneByteRead(Adapter, 0x3ED, &targetval_B, FALSE); + efuse_OneByteRead(Adapter, 0x3EE, &targetval_C, FALSE); + efuse_OneByteRead(Adapter, 0x3EF, &targetval_D, FALSE); + } else if (channelToSW >= 149 && channelToSW <= 165) { /* 5GHB */ + efuse_OneByteRead(Adapter, 0x3F0, &targetval_A, FALSE); + efuse_OneByteRead(Adapter, 0x3F1, &targetval_B, FALSE); + efuse_OneByteRead(Adapter, 0x3F2, &targetval_C, FALSE); + efuse_OneByteRead(Adapter, 0x3F3, &targetval_D, FALSE); + } + } + RTW_INFO("phy_ConfigKFree8814A(): targetval_A= %#x\n", targetval_A); + RTW_INFO("phy_ConfigKFree8814A(): targetval_B= %#x\n", targetval_B); + RTW_INFO("phy_ConfigKFree8814A(): targetval_C= %#x\n", targetval_C); + RTW_INFO("phy_ConfigKFree8814A(): targetval_D= %#x\n", targetval_D); + + /* Make sure the targetval is defined */ + if ((Adapter->registrypriv.RegPwrTrimEnable == 1) && ((targetval_A != 0xFF) || (pHalData->RfKFreeEnable == TRUE))) { + if (bandType == BAND_ON_2_4G) { /* 2G */ + phy_SetKfreeToRF_8814A(Adapter, RF_PATH_A, targetval_A & 0x0F); + phy_SetKfreeToRF_8814A(Adapter, RF_PATH_B, (targetval_A & 0xF0) >> 4); + phy_SetKfreeToRF_8814A(Adapter, RF_PATH_C, targetval_B & 0x0F); + phy_SetKfreeToRF_8814A(Adapter, RF_PATH_D, (targetval_B & 0xF0) >> 4); + } else if (bandType == BAND_ON_5G) { + phy_SetKfreeToRF_8814A(Adapter, RF_PATH_A, targetval_A & 0x1F); + phy_SetKfreeToRF_8814A(Adapter, RF_PATH_B, targetval_B & 0x1F); + phy_SetKfreeToRF_8814A(Adapter, RF_PATH_C, targetval_C & 0x1F); + phy_SetKfreeToRF_8814A(Adapter, RF_PATH_D, targetval_D & 0x1F); + } + } else { + return; + } + } +} + +void +phy_SwChnl8814A( + PADAPTER pAdapter +) +{ + enum rf_path eRFPath = RF_PATH_A, channelIdx = 0; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); +#ifdef CONFIG_RF_POWER_TRIM + struct kfree_data_t *kfree_data = &pHalData->kfree_data; +#endif + u8 channelToSW = pHalData->current_channel; + u32 RFValToWR , RFTmpVal, BitShift, BitMask; + + /* RTW_INFO("[BW:CHNL], phy_SwChnl8814A(), switch to channel %d !!\n", channelToSW); */ + + if (phy_SwBand8814A(pAdapter, channelToSW) == FALSE) + RTW_INFO("error Chnl %d", channelToSW); + + if (pHalData->rf_chip == RF_PSEUDO_11N) { + return; + } + +#ifdef CONFIG_RF_POWER_TRIM + /* Add for KFree Feature Requested by RF David. */ + if (kfree_data->flag & KFREE_FLAG_ON) { + + channelIdx = rtw_ch_to_bb_gain_sel(channelToSW); +#if 0 + if (pHalData->RfKFree_ch_group != channelIdx) { + /* Todo: wait for new phydm ready */ + phy_ConfigKFree8814A(pAdapter, channelToSW, pHalData->current_band_type); + phydm_ConfigKFree(pDM_Odm, channelToSW, kfree_data->bb_gain); + RTW_INFO("RfKFree_ch_group =%d\n", channelIdx); + } +#endif + + pHalData->RfKFree_ch_group = channelIdx; + + } +#endif /*CONFIG_RF_POWER_TRIM*/ + if (pHalData->RegFWOffload == 2) + FillH2CCmd_8814(pAdapter, H2C_CHNL_SWITCH_OFFLOAD, 1, &channelToSW); + else { + /* fc_area */ + if (36 <= channelToSW && channelToSW <= 48) + phy_set_bb_reg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x494); + else if (50 <= channelToSW && channelToSW <= 64) + phy_set_bb_reg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x453); + else if (100 <= channelToSW && channelToSW <= 116) + phy_set_bb_reg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x452); + else if (118 <= channelToSW) + phy_set_bb_reg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x412); + else + phy_set_bb_reg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x96a); + + for (eRFPath = 0; eRFPath < pHalData->NumTotalRFPath; eRFPath++) { + /* RF_MOD_AG */ + if (36 <= channelToSW && channelToSW <= 64) + RFValToWR = 0x101; /* 5'b00101 */ + else if (100 <= channelToSW && channelToSW <= 140) + RFValToWR = 0x301; /* 5'b01101 */ + else if (140 < channelToSW) + RFValToWR = 0x501; /* 5'b10101 */ + else + RFValToWR = 0x000; /* 5'b00000 */ + + /* Channel to switch */ + BitMask = BIT18 | BIT17 | BIT16 | BIT9 | BIT8; + BitShift = PHY_CalculateBitShift(BitMask); + RFTmpVal = channelToSW | (RFValToWR << BitShift); + + BitMask = BIT18 | BIT17 | BIT16 | BIT9 | BIT8 | bMaskByte0; + + phy_set_rf_reg(pAdapter, eRFPath, RF_CHNLBW_Jaguar, BitMask, RFTmpVal); + } + + if (36 <= channelToSW && channelToSW <= 64) /* Band 1 & Band 2 */ + phy_set_bb_reg(pAdapter, rAGC_table_Jaguar2, 0x1F, 1); /* 0x958[4:0] = 0x1 */ + else if (100 <= channelToSW && channelToSW <= 144) /* Band 3 */ + phy_set_bb_reg(pAdapter, rAGC_table_Jaguar2, 0x1F, 2); /* 0x958[4:0] = 0x2 */ + else if (channelToSW >= 149) /* Band 4 */ + phy_set_bb_reg(pAdapter, rAGC_table_Jaguar2, 0x1F, 3); /* 0x958[4:0] = 0x3 */ + } + + if (pAdapter->registrypriv.mp_mode == 1) { + if (!pHalData->bSetChnlBW) + phy_ADC_CLK_8814A(pAdapter); + phy_SpurCalibration_8814A(pAdapter); + phy_ModifyInitialGain_8814A(pAdapter); + } + + /* 2.4G CCK TX DFIR */ + if (channelToSW >= 1 && channelToSW <= 11) { + phy_set_bb_reg(pAdapter, rCCK0_TxFilter1, bMaskDWord, 0x1a1b0030); + phy_set_bb_reg(pAdapter, rCCK0_TxFilter2, bMaskDWord, 0x090e1317); + phy_set_bb_reg(pAdapter, rCCK0_DebugPort, bMaskDWord, 0x00000204); + } else if (channelToSW >= 12 && channelToSW <= 13) { + phy_set_bb_reg(pAdapter, rCCK0_TxFilter1, bMaskDWord, 0x1a1b0030); + phy_set_bb_reg(pAdapter, rCCK0_TxFilter2, bMaskDWord, 0x090e1217); + phy_set_bb_reg(pAdapter, rCCK0_DebugPort, bMaskDWord, 0x00000305); + } else if (channelToSW == 14) { + phy_set_bb_reg(pAdapter, rCCK0_TxFilter1, bMaskDWord, 0x1a1b0030); + phy_set_bb_reg(pAdapter, rCCK0_TxFilter2, bMaskDWord, 0x00000E17); + phy_set_bb_reg(pAdapter, rCCK0_DebugPort, bMaskDWord, 0x00000000); + } + +} + +#if 0 +/* void + * PHY_SwChnlTimerCallback8814A( */ +/* PRT_TIMER pTimer */ +/* ) */ +{ + /* PADAPTER pAdapter = (PADAPTER)pTimer->Adapter; */ + /* HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); */ + + + if (rtw_is_drv_stopped(padapter)) + return; + + if (pHalData->rf_chip == RF_PSEUDO_11N) { + pHalData->SwChnlInProgress = FALSE; + return; /* return immediately if it is peudo-phy */ + } + + + PlatformAcquireSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); + pHalData->SwChnlInProgress = TRUE; + PlatformReleaseSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); + + phy_SwChnl8814A(pAdapter); + + PlatformAcquireSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); + pHalData->SwChnlInProgress = FALSE; + PlatformReleaseSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); + +} + + +void +PHY_SwChnlWorkItemCallback8814A( + void *pContext +) +{ + PADAPTER pAdapter = (PADAPTER)pContext; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + if (pAdapter->bInSetPower && RT_USB_CANNOT_IO(pAdapter)) { + + pHalData->SwChnlInProgress = FALSE; + return; + } + + if (rtw_is_drv_stopped(padapter)) + return; + + if (pHalData->rf_chip == RF_PSEUDO_11N) { + pHalData->SwChnlInProgress = FALSE; + return; /* return immediately if it is peudo-phy */ + } + + PlatformAcquireSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); + pHalData->SwChnlInProgress = TRUE; + PlatformReleaseSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); + + phy_SwChnl8814A(pAdapter); + + PlatformAcquireSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); + pHalData->SwChnlInProgress = FALSE; + PlatformReleaseSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); + +} + + +void +HAL_HandleSwChnl8814A(/* Call after initialization */ + PADAPTER pAdapter, + u8 channel +) +{ + PADAPTER Adapter = GetDefaultAdapter(pAdapter); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + pHalData->current_channel = channel; + phy_SwChnl8814A(Adapter); + + +#if (MP_DRIVER == 1) + /* <20120712, Kordan> IQK on each channel, asked by James. */ + phy_iq_calibrate_8814a(pAdapter, FALSE); +#endif + +} +#endif + +void +phy_SwChnlAndSetBwMode8814A( + PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_struct *pDM_Odm = &pHalData->odmpriv; + + /* RTW_INFO("phy_SwChnlAndSetBwMode8814A(): bSwChnl %d, bSetChnlBW %d\n", pHalData->bSwChnl, pHalData->bSetChnlBW); */ + if (Adapter->bNotifyChannelChange) { + RTW_INFO("[%s] bSwChnl=%d, ch=%d, bSetChnlBW=%d, bw=%d\n", + __FUNCTION__, + pHalData->bSwChnl, + pHalData->current_channel, + pHalData->bSetChnlBW, + pHalData->current_channel_bw); + } + + if (RTW_CANNOT_RUN(Adapter)) { + pHalData->bSwChnlAndSetBWInProgress = FALSE; + return; + } + + if (pHalData->bSwChnl) { + phy_SwChnl8814A(Adapter); + pHalData->bSwChnl = FALSE; + } + + if (pHalData->bSetChnlBW) { + phy_SetBwMode8814A(Adapter); + pHalData->bSetChnlBW = FALSE; + } + + if (Adapter->registrypriv.mp_mode == 0) { + odm_clear_txpowertracking_state(pDM_Odm); + rtw_hal_set_tx_power_level(Adapter, pHalData->current_channel); + if (pHalData->bNeedIQK == _TRUE) { + /*phy_iq_calibrate_8814a(pDM_Odm, _FALSE);*/ + halrf_iqk_trigger(&pHalData->odmpriv, _FALSE); + pHalData->bNeedIQK = _FALSE; + } + } else + halrf_iqk_trigger(&pHalData->odmpriv, _FALSE); + /*phy_iq_calibrate_8814a(pDM_Odm, _FALSE);*/ +#if 0 /* todo */ +#if (AUTO_CHNL_SEL_NHM == 1) + if (IS_AUTO_CHNL_SUPPORT(Adapter) && + P2PIsSocialChannel(pHalData->current_channel)) { + + /* Reset NHM counter */ + odm_auto_channel_select_reset(GET_PDM_ODM(Adapter)); + + SET_AUTO_CHNL_STATE(Adapter, ACS_BEFORE_NHM);/* Before NHM measurement */ + } +#endif +#endif /* 0 */ + pHalData->bSwChnlAndSetBWInProgress = FALSE; +} + + +void +PHY_SwChnlAndSetBWModeCallback8814A( + void *pContext +) +{ + PADAPTER Adapter = (PADAPTER)pContext; + phy_SwChnlAndSetBwMode8814A(Adapter); +} + +#if 0 +/* */ +/* Description: */ +/* Switch channel synchronously. Called by SwChnlByDelayHandler. */ +/* */ +/* Implemented by Bruce, 2008-02-14. */ +/* The following procedure is operted according to SwChanlCallback8190Pci(). */ +/* However, this procedure is performed synchronously which should be running under */ +/* passive level. */ +/* */ +void +PHY_SwChnlSynchronously8814A(/* Only called during initialize */ + PADAPTER Adapter, + u8 channel +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + + /* Cannot IO. */ + if (RT_CANNOT_IO(Adapter)) + return; + + /* Channel Switching is in progress. */ + if (pHalData->bSwChnlAndSetBWInProgress) + return; + + /* return immediately if it is peudo-phy */ + if (pHalData->rf_chip == RF_PSEUDO_11N) { + pHalData->bSwChnlAndSetBWInProgress = FALSE; + return; + } + + switch (pHalData->CurrentWirelessMode) { + case WIRELESS_MODE_A: + case WIRELESS_MODE_N_5G: + case WIRELESS_MODE_AC_5G: + /* Get first channel error when change between 5G and 2.4G band. */ + /* FIX ME!!! */ + if (channel <= 14) + return; + RT_ASSERT((channel > 14), ("WIRELESS_MODE_A but channel<=14")); + break; + + case WIRELESS_MODE_B: + case WIRELESS_MODE_G: + case WIRELESS_MODE_N_24G: + case WIRELESS_MODE_AC_24G: + /* Get first channel error when change between 5G and 2.4G band. */ + /* FIX ME!!! */ + if (channel > 14) + return; + RT_ASSERT((channel <= 14), ("WIRELESS_MODE_G but channel>14")); + break; + + default: + RT_ASSERT(FALSE, ("Invalid WirelessMode(%#x)!!\n", pHalData->CurrentWirelessMode)); + break; + + } + + pHalData->bSwChnlAndSetBWInProgress = TRUE; + if (channel == 0) + channel = 1; + + pHalData->bSwChnl = TRUE; + pHalData->bSetChnlBW = FALSE; + pHalData->current_channel = channel; + + phy_SwChnlAndSetBwMode8814A(Adapter); + + +} +#endif + +void +PHY_HandleSwChnlAndSetBW8814A( + PADAPTER Adapter, + BOOLEAN bSwitchChannel, + BOOLEAN bSetBandWidth, + u8 ChannelNum, + enum channel_width ChnlWidth, + u8 ChnlOffsetOf40MHz, + u8 ChnlOffsetOf80MHz, + u8 CenterFrequencyIndex1 +) +{ + PADAPTER pDefAdapter = GetDefaultAdapter(Adapter); + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pDefAdapter); + u8 tmpChannel = pHalData->current_channel; + enum channel_width tmpBW = pHalData->current_channel_bw; + u8 tmpnCur40MhzPrimeSC = pHalData->nCur40MhzPrimeSC; + u8 tmpnCur80MhzPrimeSC = pHalData->nCur80MhzPrimeSC; + u8 tmpCenterFrequencyIndex1 = pHalData->CurrentCenterFrequencyIndex1; + struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; + + /* check is swchnl or setbw */ + if (!bSwitchChannel && !bSetBandWidth) { + RTW_INFO("PHY_HandleSwChnlAndSetBW8812: not switch channel and not set bandwidth\n"); + return; + } + + /* skip change for channel or bandwidth is the same */ + if (bSwitchChannel) { + if (pHalData->current_channel != ChannelNum) { + if (HAL_IsLegalChannel(Adapter, ChannelNum)) + pHalData->bSwChnl = _TRUE; + else + return; + } + } + + if (bSetBandWidth) { + if (pHalData->bChnlBWInitialized == _FALSE) { + pHalData->bChnlBWInitialized = _TRUE; + pHalData->bSetChnlBW = _TRUE; + } else if ((pHalData->current_channel_bw != ChnlWidth) || + (pHalData->nCur40MhzPrimeSC != ChnlOffsetOf40MHz) || + (pHalData->nCur80MhzPrimeSC != ChnlOffsetOf80MHz) || + (pHalData->CurrentCenterFrequencyIndex1 != CenterFrequencyIndex1)) + pHalData->bSetChnlBW = _TRUE; + } + + if (!pHalData->bSetChnlBW && !pHalData->bSwChnl && pHalData->bNeedIQK != _TRUE) { + /* RTW_INFO("<= PHY_HandleSwChnlAndSetBW8812: bSwChnl %d, bSetChnlBW %d\n",pHalData->bSwChnl,pHalData->bSetChnlBW); */ + return; + } + + + if (pHalData->bSwChnl) { + pHalData->current_channel = ChannelNum; + pHalData->CurrentCenterFrequencyIndex1 = ChannelNum; + } + + + if (pHalData->bSetChnlBW) { + pHalData->current_channel_bw = ChnlWidth; +#if 0 + if (ExtChnlOffsetOf40MHz == EXTCHNL_OFFSET_LOWER) + pHalData->nCur40MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_UPPER; + else if (ExtChnlOffsetOf40MHz == EXTCHNL_OFFSET_UPPER) + pHalData->nCur40MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_LOWER; + else + pHalData->nCur40MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + + if (ExtChnlOffsetOf80MHz == EXTCHNL_OFFSET_LOWER) + pHalData->nCur80MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_UPPER; + else if (ExtChnlOffsetOf80MHz == EXTCHNL_OFFSET_UPPER) + pHalData->nCur80MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_LOWER; + else + pHalData->nCur80MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_DONT_CARE; +#else + pHalData->nCur40MhzPrimeSC = ChnlOffsetOf40MHz; + pHalData->nCur80MhzPrimeSC = ChnlOffsetOf80MHz; +#endif + + pHalData->CurrentCenterFrequencyIndex1 = CenterFrequencyIndex1; + } + + /* Switch workitem or set timer to do switch channel or setbandwidth operation */ + if (!RTW_CANNOT_RUN(Adapter)) + phy_SwChnlAndSetBwMode8814A(Adapter); + else { + if (pHalData->bSwChnl) { + pHalData->current_channel = tmpChannel; + pHalData->CurrentCenterFrequencyIndex1 = tmpChannel; + } + if (pHalData->bSetChnlBW) { + pHalData->current_channel_bw = tmpBW; + pHalData->nCur40MhzPrimeSC = tmpnCur40MhzPrimeSC; + pHalData->nCur80MhzPrimeSC = tmpnCur80MhzPrimeSC; + pHalData->CurrentCenterFrequencyIndex1 = tmpCenterFrequencyIndex1; + } + } + + /* RTW_INFO("Channel %d ChannelBW %d ",pHalData->current_channel, pHalData->current_channel_bw); */ + /* RTW_INFO("40MhzPrimeSC %d 80MhzPrimeSC %d ",pHalData->nCur40MhzPrimeSC, pHalData->nCur80MhzPrimeSC); */ + /* RTW_INFO("CenterFrequencyIndex1 %d\n",pHalData->CurrentCenterFrequencyIndex1); */ + + /* RTW_INFO("<= PHY_HandleSwChnlAndSetBW8812: bSwChnl %d, bSetChnlBW %d\n",pHalData->bSwChnl,pHalData->bSetChnlBW); */ + +} + + +BOOLEAN +SetAntennaConfig8814A( + PADAPTER pAdapter, + u8 DefaultAnt /* 0: Main, 1: Aux. */ +) +{ + return TRUE; +} + +void +PHY_SetSwChnlBWMode8814( + PADAPTER Adapter, + u8 channel, + enum channel_width Bandwidth, + u8 Offset40, + u8 Offset80 +) +{ + /* RTW_INFO("%s()===>\n",__FUNCTION__); */ + + PHY_HandleSwChnlAndSetBW8814A(Adapter, _TRUE, _TRUE, channel, Bandwidth, Offset40, Offset80, channel); + + /* RTW_INFO("<==%s()\n",__FUNCTION__); */ +} diff --git a/hal/rtl8814a/rtl8814a_rf6052.c b/hal/rtl8814a/rtl8814a_rf6052.c new file mode 100644 index 0000000..b363f1a --- /dev/null +++ b/hal/rtl8814a/rtl8814a_rf6052.c @@ -0,0 +1,182 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#define _RTL8814A_RF6052_C_ + +/* #include */ +#include + + +/*----------------------------------------------------------------------------- + * Function: PHY_RF6052SetBandwidth() + * + * Overview: This function is called by SetBWModeCallback8190Pci() only + * + * Input: PADAPTER Adapter + * WIRELESS_BANDWIDTH_E Bandwidth //20M or 40M + * + * Output: NONE + * + * Return: NONE + * + * Note: For RF type 0222D + *---------------------------------------------------------------------------*/ +void +PHY_RF6052SetBandwidth8814A( + PADAPTER Adapter, + enum channel_width Bandwidth) /* 20M or 40M */ +{ + switch (Bandwidth) { + case CHANNEL_WIDTH_20: + /*RTW_INFO("PHY_RF6052SetBandwidth8814A(), set 20MHz\n");*/ + phy_set_rf_reg(Adapter, RF_PATH_A, RF_CHNLBW_Jaguar, BIT11 | BIT10, 3); + phy_set_rf_reg(Adapter, RF_PATH_B, RF_CHNLBW_Jaguar, BIT11 | BIT10, 3); + phy_set_rf_reg(Adapter, RF_PATH_C, RF_CHNLBW_Jaguar, BIT11 | BIT10, 3); + phy_set_rf_reg(Adapter, RF_PATH_D, RF_CHNLBW_Jaguar, BIT11 | BIT10, 3); + break; + + case CHANNEL_WIDTH_40: + /*RTW_INFO("PHY_RF6052SetBandwidth8814A(), set 40MHz\n");*/ + phy_set_rf_reg(Adapter, RF_PATH_A, RF_CHNLBW_Jaguar, BIT11 | BIT10, 1); + phy_set_rf_reg(Adapter, RF_PATH_B, RF_CHNLBW_Jaguar, BIT11 | BIT10, 1); + phy_set_rf_reg(Adapter, RF_PATH_C, RF_CHNLBW_Jaguar, BIT11 | BIT10, 1); + phy_set_rf_reg(Adapter, RF_PATH_D, RF_CHNLBW_Jaguar, BIT11 | BIT10, 1); + break; + + case CHANNEL_WIDTH_80: + /*RTW_INFO("PHY_RF6052SetBandwidth8814A(), set 80MHz\n");*/ + phy_set_rf_reg(Adapter, RF_PATH_A, RF_CHNLBW_Jaguar, BIT11 | BIT10, 0); + phy_set_rf_reg(Adapter, RF_PATH_B, RF_CHNLBW_Jaguar, BIT11 | BIT10, 0); + phy_set_rf_reg(Adapter, RF_PATH_C, RF_CHNLBW_Jaguar, BIT11 | BIT10, 0); + phy_set_rf_reg(Adapter, RF_PATH_D, RF_CHNLBW_Jaguar, BIT11 | BIT10, 0); + break; + + default: + RTW_INFO("PHY_RF6052SetBandwidth8814A(): unknown Bandwidth: %#X\n", Bandwidth); + break; + } +} + +static int +phy_RF6052_Config_ParaFile_8814A( + PADAPTER Adapter +) +{ + u32 u4RegValue = 0; + enum rf_path eRFPath; + int rtStatus = _SUCCESS; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + /* 3 */ /* ----------------------------------------------------------------- */ + /* 3 */ /* <2> Initialize RF */ + /* 3 */ /* ----------------------------------------------------------------- */ + /* for(eRFPath = RF_PATH_A; eRFPath NumTotalRFPath; eRFPath++) */ + for (eRFPath = 0; eRFPath < pHalData->NumTotalRFPath; eRFPath++) { + /*----Initialize RF fom connfiguration file----*/ + switch (eRFPath) { + case RF_PATH_A: +#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE + if (PHY_ConfigRFWithParaFile(Adapter, PHY_FILE_RADIO_A, eRFPath) == _FAIL) +#endif /* CONFIG_LOAD_PHY_PARA_FROM_FILE */ + { +#ifdef CONFIG_EMBEDDED_FWIMG + if (odm_config_rf_with_header_file(&pHalData->odmpriv, CONFIG_RF_RADIO, eRFPath) == HAL_STATUS_FAILURE) + rtStatus = _FAIL; +#endif /* CONFIG_EMBEDDED_FWIMG */ + } + break; + case RF_PATH_B: +#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE + if (PHY_ConfigRFWithParaFile(Adapter, PHY_FILE_RADIO_B, eRFPath) == _FAIL) +#endif /* CONFIG_LOAD_PHY_PARA_FROM_FILE */ + { +#ifdef CONFIG_EMBEDDED_FWIMG + if (odm_config_rf_with_header_file(&pHalData->odmpriv, CONFIG_RF_RADIO, eRFPath) == HAL_STATUS_FAILURE) + rtStatus = _FAIL; +#endif /* CONFIG_EMBEDDED_FWIMG */ + } + break; + case RF_PATH_C: +#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE + if (PHY_ConfigRFWithParaFile(Adapter, PHY_FILE_RADIO_C, eRFPath) == _FAIL) +#endif /* CONFIG_LOAD_PHY_PARA_FROM_FILE */ + { +#ifdef CONFIG_EMBEDDED_FWIMG + if (odm_config_rf_with_header_file(&pHalData->odmpriv, CONFIG_RF_RADIO, eRFPath) == HAL_STATUS_FAILURE) + rtStatus = _FAIL; +#endif /* CONFIG_EMBEDDED_FWIMG */ + } + break; + case RF_PATH_D: +#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE + if (PHY_ConfigRFWithParaFile(Adapter, PHY_FILE_RADIO_D, eRFPath) == _FAIL) +#endif /* CONFIG_LOAD_PHY_PARA_FROM_FILE */ + { +#ifdef CONFIG_EMBEDDED_FWIMG + if (odm_config_rf_with_header_file(&pHalData->odmpriv, CONFIG_RF_RADIO, eRFPath) == HAL_STATUS_FAILURE) + rtStatus = _FAIL; +#endif /* CONFIG_EMBEDDED_FWIMG */ + } + break; + default: + break; + } + + if (rtStatus != _SUCCESS) { + RTW_INFO("%s():Radio[%d] Fail!!", __FUNCTION__, eRFPath); + goto phy_RF6052_Config_ParaFile_Fail; + } + + } + + u4RegValue = phy_query_rf_reg(Adapter, RF_PATH_A, RF_RCK1_Jaguar, bRFRegOffsetMask); + phy_set_rf_reg(Adapter, RF_PATH_B, RF_RCK1_Jaguar, bRFRegOffsetMask, u4RegValue); + phy_set_rf_reg(Adapter, RF_PATH_C, RF_RCK1_Jaguar, bRFRegOffsetMask, u4RegValue); + phy_set_rf_reg(Adapter, RF_PATH_D, RF_RCK1_Jaguar, bRFRegOffsetMask, u4RegValue); + + /* 3 ----------------------------------------------------------------- */ + /* 3 Configuration of Tx Power Tracking */ + /* 3 ----------------------------------------------------------------- */ + +#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE + if (PHY_ConfigRFWithTxPwrTrackParaFile(Adapter, PHY_FILE_TXPWR_TRACK) == _FAIL) +#endif /* CONFIG_LOAD_PHY_PARA_FROM_FILE */ + { +#ifdef CONFIG_EMBEDDED_FWIMG + odm_config_rf_with_tx_pwr_track_header_file(&pHalData->odmpriv); +#endif + } + + +phy_RF6052_Config_ParaFile_Fail: + return rtStatus; +} + + +int +PHY_RF6052_Config_8814A( + PADAPTER Adapter) +{ + int rtStatus = _SUCCESS; + + /* */ + /* Config BB and RF */ + /* */ + rtStatus = phy_RF6052_Config_ParaFile_8814A(Adapter); + + return rtStatus; +} + + +/* End of HalRf6052.c */ diff --git a/hal/rtl8814a/rtl8814a_rxdesc.c b/hal/rtl8814a/rtl8814a_rxdesc.c new file mode 100644 index 0000000..b2e98fd --- /dev/null +++ b/hal/rtl8814a/rtl8814a_rxdesc.c @@ -0,0 +1,60 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#define _RTL8814A_RXDESC_C_ + +/* #include */ +#include + +void rtl8814_query_rx_desc_status(union recv_frame *precvframe, u8 *pdesc) +{ + struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib; + + _rtw_memset(pattrib, 0, sizeof(struct rx_pkt_attrib)); + pattrib->bw = CHANNEL_WIDTH_MAX; + + /* Offset 0 */ + pattrib->pkt_len = (u16)GET_RX_STATUS_DESC_PKT_LEN_8814A(pdesc);/* (le32_to_cpu(pdesc->rxdw0)&0x00003fff) */ + pattrib->crc_err = (u8)GET_RX_STATUS_DESC_CRC32_8814A(pdesc);/* ((le32_to_cpu(pdesc->rxdw0) >> 14) & 0x1); */ + pattrib->icv_err = (u8)GET_RX_STATUS_DESC_ICV_8814A(pdesc);/* ((le32_to_cpu(pdesc->rxdw0) >> 15) & 0x1); */ + pattrib->drvinfo_sz = (u8)GET_RX_STATUS_DESC_DRVINFO_SIZE_8814A(pdesc) * 8;/* ((le32_to_cpu(pdesc->rxdw0) >> 16) & 0xf) * 8; */ /* uint 2^3 = 8 bytes */ + pattrib->encrypt = (u8)GET_RX_STATUS_DESC_SECURITY_8814A(pdesc);/* ((le32_to_cpu(pdesc->rxdw0) >> 20) & 0x7); */ + pattrib->qos = (u8)GET_RX_STATUS_DESC_QOS_8814A(pdesc);/* (( le32_to_cpu( pdesc->rxdw0 ) >> 23) & 0x1); */ /* Qos data, wireless lan header length is 26 */ + pattrib->shift_sz = (u8)GET_RX_STATUS_DESC_SHIFT_8814A(pdesc);/* ((le32_to_cpu(pdesc->rxdw0) >> 24) & 0x3); */ + pattrib->physt = (u8)GET_RX_STATUS_DESC_PHY_STATUS_8814A(pdesc);/* ((le32_to_cpu(pdesc->rxdw0) >> 26) & 0x1); */ + pattrib->bdecrypted = !GET_RX_STATUS_DESC_SWDEC_8814A(pdesc);/* (le32_to_cpu(pdesc->rxdw0) & BIT(27))? 0:1; */ + + /* Offset 4 */ + pattrib->priority = (u8)GET_RX_STATUS_DESC_TID_8814A(pdesc);/* ((le32_to_cpu(pdesc->rxdw1) >> 8) & 0xf); */ + pattrib->mdata = (u8)GET_RX_STATUS_DESC_MORE_DATA_8814A(pdesc);/* ((le32_to_cpu(pdesc->rxdw1) >> 26) & 0x1); */ + pattrib->mfrag = (u8)GET_RX_STATUS_DESC_MORE_FRAG_8814A(pdesc);/* ((le32_to_cpu(pdesc->rxdw1) >> 27) & 0x1); */ /* more fragment bit */ + + /* Offset 8 */ + pattrib->seq_num = (u16)GET_RX_STATUS_DESC_SEQ_8814A(pdesc);/* (le32_to_cpu(pdesc->rxdw2) & 0x00000fff); */ + pattrib->frag_num = (u8)GET_RX_STATUS_DESC_FRAG_8814A(pdesc);/* ((le32_to_cpu(pdesc->rxdw2) >> 12) & 0xf); */ /* fragmentation number */ + + + if (GET_RX_STATUS_DESC_RPT_SEL_8814A(pdesc)) + pattrib->pkt_rpt_type = C2H_PACKET; + else + + pattrib->pkt_rpt_type = NORMAL_RX; + + /* Offset 12 */ + pattrib->data_rate = (u8)GET_RX_STATUS_DESC_RX_RATE_8814A(pdesc); /* ((le32_to_cpu(pdesc->rxdw3))&0x7f); */ + + /* Offset 16 */ + /* Offset 20 */ + +} diff --git a/hal/rtl8814a/rtl8814a_sreset.c b/hal/rtl8814a/rtl8814a_sreset.c new file mode 100644 index 0000000..5ef4a48 --- /dev/null +++ b/hal/rtl8814a/rtl8814a_sreset.c @@ -0,0 +1,106 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#define _RTL8814A_SRESET_C_ + +/* #include */ +#include + +#ifdef DBG_CONFIG_ERROR_DETECT +void rtl8814_sreset_xmit_status_check(_adapter *padapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct sreset_priv *psrtpriv = &pHalData->srestpriv; + + systime current_time; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + unsigned int diff_time; + u32 txdma_status; + + txdma_status = rtw_read32(padapter, REG_TXDMA_STATUS); + if (txdma_status != 0x00) { + RTW_INFO("%s REG_TXDMA_STATUS:0x%08x\n", __FUNCTION__, txdma_status); + rtw_hal_sreset_reset(padapter); + } +#ifdef CONFIG_USB_HCI + /* total xmit irp = 4 */ + /* RTW_INFO("==>%s free_xmitbuf_cnt(%d),txirp_cnt(%d)\n",__FUNCTION__,pxmitpriv->free_xmitbuf_cnt,pxmitpriv->txirp_cnt); */ + /* if(pxmitpriv->txirp_cnt == NR_XMITBUFF+1) */ + current_time = rtw_get_current_time(); + + if (0 == pxmitpriv->free_xmitbuf_cnt || 0 == pxmitpriv->free_xmit_extbuf_cnt) { + + diff_time = rtw_get_passing_time_ms(psrtpriv->last_tx_time); + + if (diff_time > 2000) { + if (psrtpriv->last_tx_complete_time == 0) + psrtpriv->last_tx_complete_time = current_time; + else { + diff_time = rtw_get_passing_time_ms(psrtpriv->last_tx_complete_time); + if (diff_time > 4000) { + u32 ability = 0; + + /* padapter->Wifi_Error_Status = WIFI_TX_HANG; */ + ability = rtw_phydm_ability_get(padapter); + + RTW_INFO("%s tx hang %s\n", __FUNCTION__, + (ability & ODM_BB_ADAPTIVITY) ? "ODM_BB_ADAPTIVITY" : ""); + + if (!(ability & ODM_BB_ADAPTIVITY)) + rtw_hal_sreset_reset(padapter); + } + } + } + } +#endif /* CONFIG_USB_HCI */ + + if (psrtpriv->dbg_trigger_point == SRESET_TGP_XMIT_STATUS) { + psrtpriv->dbg_trigger_point = SRESET_TGP_NULL; + rtw_hal_sreset_reset(padapter); + return; + } +} + +void rtl8814_sreset_linked_status_check(_adapter *padapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct sreset_priv *psrtpriv = &pHalData->srestpriv; + + u32 rx_dma_status = 0; + rx_dma_status = rtw_read32(padapter, REG_RXDMA_STATUS); + if (rx_dma_status != 0x00) + RTW_INFO("%s REG_RXDMA_STATUS:0x%08x\n", __FUNCTION__, rx_dma_status); +#if 0 + u32 regc50, regc58, reg824, reg800; + regc50 = rtw_read32(padapter, 0xc50); + regc58 = rtw_read32(padapter, 0xc58); + reg824 = rtw_read32(padapter, 0x824); + reg800 = rtw_read32(padapter, 0x800); + if (((regc50 & 0xFFFFFF00) != 0x69543400) || + ((regc58 & 0xFFFFFF00) != 0x69543400) || + (((reg824 & 0xFFFFFF00) != 0x00390000) && (((reg824 & 0xFFFFFF00) != 0x80390000))) || + (((reg800 & 0xFFFFFF00) != 0x03040000) && ((reg800 & 0xFFFFFF00) != 0x83040000))) { + RTW_INFO("%s regc50:0x%08x, regc58:0x%08x, reg824:0x%08x, reg800:0x%08x,\n", __FUNCTION__, + regc50, regc58, reg824, reg800); + rtw_hal_sreset_reset(padapter); + } +#endif + + if (psrtpriv->dbg_trigger_point == SRESET_TGP_LINK_STATUS) { + psrtpriv->dbg_trigger_point = SRESET_TGP_NULL; + rtw_hal_sreset_reset(padapter); + return; + } +} +#endif diff --git a/hal/rtl8814a/rtl8814a_xmit.c b/hal/rtl8814a/rtl8814a_xmit.c new file mode 100644 index 0000000..3977bcb --- /dev/null +++ b/hal/rtl8814a/rtl8814a_xmit.c @@ -0,0 +1,524 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#define _RTL8814A_XMIT_C_ + +/* #include */ +#include + +void _dbg_dump_tx_info(_adapter *padapter, int frame_tag, u8 *ptxdesc) +{ + u8 bDumpTxPkt; + u8 bDumpTxDesc = _FALSE; + rtw_hal_get_def_var(padapter, HAL_DEF_DBG_DUMP_TXPKT, &(bDumpTxPkt)); + + if (bDumpTxPkt == 1) { /* dump txdesc for data frame */ + RTW_INFO("dump tx_desc for data frame\n"); + if ((frame_tag & 0x0f) == DATA_FRAMETAG) + bDumpTxDesc = _TRUE; + } else if (bDumpTxPkt == 2) { /* dump txdesc for mgnt frame */ + RTW_INFO("dump tx_desc for mgnt frame\n"); + if ((frame_tag & 0x0f) == MGNT_FRAMETAG) + bDumpTxDesc = _TRUE; + } else if (bDumpTxPkt == 3) { /* dump early info */ + } + + if (bDumpTxDesc) { + /* ptxdesc->txdw4 = cpu_to_le32(0x00001006); */ /* RTS Rate=24M */ + /* ptxdesc->txdw6 = 0x6666f800; */ + RTW_INFO("=====================================\n"); + RTW_INFO("Offset00(0x%08x)\n", *((u32 *)(ptxdesc))); + RTW_INFO("Offset04(0x%08x)\n", *((u32 *)(ptxdesc + 4))); + RTW_INFO("Offset08(0x%08x)\n", *((u32 *)(ptxdesc + 8))); + RTW_INFO("Offset12(0x%08x)\n", *((u32 *)(ptxdesc + 12))); + RTW_INFO("Offset16(0x%08x)\n", *((u32 *)(ptxdesc + 16))); + RTW_INFO("Offset20(0x%08x)\n", *((u32 *)(ptxdesc + 20))); + RTW_INFO("Offset24(0x%08x)\n", *((u32 *)(ptxdesc + 24))); + RTW_INFO("Offset28(0x%08x)\n", *((u32 *)(ptxdesc + 28))); + RTW_INFO("Offset32(0x%08x)\n", *((u32 *)(ptxdesc + 32))); + RTW_INFO("Offset36(0x%08x)\n", *((u32 *)(ptxdesc + 36))); + RTW_INFO("=====================================\n"); + } + +} + +/* + * Description: + * Aggregation packets and send to hardware + * + * Return: + * 0 Success + * -1 Hardware resource(TX FIFO) not ready + * -2 Software resource(xmitbuf) not ready + */ +#ifdef CONFIG_TX_EARLY_MODE + +/* #define DBG_EMINFO */ + +#if RTL8188E_EARLY_MODE_PKT_NUM_10 == 1 + #define EARLY_MODE_MAX_PKT_NUM 10 +#else + #define EARLY_MODE_MAX_PKT_NUM 5 +#endif + + +struct EMInfo { + u8 EMPktNum; + u16 EMPktLen[EARLY_MODE_MAX_PKT_NUM]; +}; + + +void +InsertEMContent_8814( + struct EMInfo *pEMInfo, + u8 *VirtualAddress) +{ + +#if RTL8188E_EARLY_MODE_PKT_NUM_10 == 1 + u8 index = 0; + u32 dwtmp = 0; +#endif + + _rtw_memset(VirtualAddress, 0, EARLY_MODE_INFO_SIZE); + if (pEMInfo->EMPktNum == 0) + return; + +#ifdef DBG_EMINFO + { + int i; + RTW_INFO("\n%s ==> pEMInfo->EMPktNum =%d\n", __FUNCTION__, pEMInfo->EMPktNum); + for (i = 0; i < EARLY_MODE_MAX_PKT_NUM; i++) + RTW_INFO("%s ==> pEMInfo->EMPktLen[%d] =%d\n", __FUNCTION__, i, pEMInfo->EMPktLen[i]); + + } +#endif + +#if RTL8188E_EARLY_MODE_PKT_NUM_10 == 1 + SET_EARLYMODE_PKTNUM(VirtualAddress, pEMInfo->EMPktNum); + + if (pEMInfo->EMPktNum == 1) + dwtmp = pEMInfo->EMPktLen[0]; + else { + dwtmp = pEMInfo->EMPktLen[0]; + dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; + dwtmp += pEMInfo->EMPktLen[1]; + } + SET_EARLYMODE_LEN0(VirtualAddress, dwtmp); + if (pEMInfo->EMPktNum <= 3) + dwtmp = pEMInfo->EMPktLen[2]; + else { + dwtmp = pEMInfo->EMPktLen[2]; + dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; + dwtmp += pEMInfo->EMPktLen[3]; + } + SET_EARLYMODE_LEN1(VirtualAddress, dwtmp); + if (pEMInfo->EMPktNum <= 5) + dwtmp = pEMInfo->EMPktLen[4]; + else { + dwtmp = pEMInfo->EMPktLen[4]; + dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; + dwtmp += pEMInfo->EMPktLen[5]; + } + SET_EARLYMODE_LEN2_1(VirtualAddress, dwtmp & 0xF); + SET_EARLYMODE_LEN2_2(VirtualAddress, dwtmp >> 4); + if (pEMInfo->EMPktNum <= 7) + dwtmp = pEMInfo->EMPktLen[6]; + else { + dwtmp = pEMInfo->EMPktLen[6]; + dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; + dwtmp += pEMInfo->EMPktLen[7]; + } + SET_EARLYMODE_LEN3(VirtualAddress, dwtmp); + if (pEMInfo->EMPktNum <= 9) + dwtmp = pEMInfo->EMPktLen[8]; + else { + dwtmp = pEMInfo->EMPktLen[8]; + dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; + dwtmp += pEMInfo->EMPktLen[9]; + } + SET_EARLYMODE_LEN4(VirtualAddress, dwtmp); +#else + SET_EARLYMODE_PKTNUM(VirtualAddress, pEMInfo->EMPktNum); + SET_EARLYMODE_LEN0(VirtualAddress, pEMInfo->EMPktLen[0]); + SET_EARLYMODE_LEN1(VirtualAddress, pEMInfo->EMPktLen[1]); + SET_EARLYMODE_LEN2_1(VirtualAddress, pEMInfo->EMPktLen[2] & 0xF); + SET_EARLYMODE_LEN2_2(VirtualAddress, pEMInfo->EMPktLen[2] >> 4); + SET_EARLYMODE_LEN3(VirtualAddress, pEMInfo->EMPktLen[3]); + SET_EARLYMODE_LEN4(VirtualAddress, pEMInfo->EMPktLen[4]); +#endif + +} + + + +void UpdateEarlyModeInfo8814(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf) +{ + /* _adapter *padapter, struct xmit_frame *pxmitframe,struct tx_servq *ptxservq */ + int index, j; + u16 offset, pktlen; + PTXDESC_8814 ptxdesc; + + u8 *pmem, *pEMInfo_mem; + s8 node_num_0 = 0, node_num_1 = 0; + struct EMInfo eminfo; + struct agg_pkt_info *paggpkt; + struct xmit_frame *pframe = (struct xmit_frame *)pxmitbuf->priv_data; + pmem = pframe->buf_addr; + +#ifdef DBG_EMINFO + RTW_INFO("\n%s ==> agg_num:%d\n", __FUNCTION__, pframe->agg_num); + for (index = 0; index < pframe->agg_num; index++) { + offset = pxmitpriv->agg_pkt[index].offset; + pktlen = pxmitpriv->agg_pkt[index].pkt_len; + RTW_INFO("%s ==> agg_pkt[%d].offset=%d\n", __FUNCTION__, index, offset); + RTW_INFO("%s ==> agg_pkt[%d].pkt_len=%d\n", __FUNCTION__, index, pktlen); + } +#endif + + if (pframe->agg_num > EARLY_MODE_MAX_PKT_NUM) { + node_num_0 = pframe->agg_num; + node_num_1 = EARLY_MODE_MAX_PKT_NUM - 1; + } + + for (index = 0; index < pframe->agg_num; index++) { + + offset = pxmitpriv->agg_pkt[index].offset; + pktlen = pxmitpriv->agg_pkt[index].pkt_len; + + _rtw_memset(&eminfo, 0, sizeof(struct EMInfo)); + if (pframe->agg_num > EARLY_MODE_MAX_PKT_NUM) { + if (node_num_0 > EARLY_MODE_MAX_PKT_NUM) { + eminfo.EMPktNum = EARLY_MODE_MAX_PKT_NUM; + node_num_0--; + } else { + eminfo.EMPktNum = node_num_1; + node_num_1--; + } + } else + eminfo.EMPktNum = pframe->agg_num - (index + 1); + for (j = 0; j < eminfo.EMPktNum ; j++) { + eminfo.EMPktLen[j] = pxmitpriv->agg_pkt[index + 1 + j].pkt_len + 4; /* 4 bytes CRC */ + } + + if (pmem) { + if (index == 0) { + ptxdesc = (PTXDESC_8814)(pmem); + pEMInfo_mem = ((u8 *)ptxdesc) + TXDESC_SIZE; + } else { + pmem = pmem + pxmitpriv->agg_pkt[index - 1].offset; + ptxdesc = (PTXDESC_8814)(pmem); + pEMInfo_mem = ((u8 *)ptxdesc) + TXDESC_SIZE; + } + +#ifdef DBG_EMINFO + RTW_INFO("%s ==> desc.pkt_len=%d\n", __FUNCTION__, ptxdesc->pktlen); +#endif + InsertEMContent_8814(&eminfo, pEMInfo_mem); + } + + + } + _rtw_memset(pxmitpriv->agg_pkt, 0, sizeof(struct agg_pkt_info) * MAX_AGG_PKT_NUM); + +} +#endif + +#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) +void rtl8814a_cal_txdesc_chksum(u8 *ptxdesc) +{ + u16 *usPtr; + u32 count; + u32 index; + u16 checksum = 0; + + + usPtr = (u16 *)ptxdesc; + /* checksume is always calculated by first 32 bytes, */ + /* and it doesn't depend on TX DESC length. */ + /* Thomas,Lucas@SD4,20130515 */ + count = 16; + + /* Clear first */ + SET_TX_DESC_TX_DESC_CHECKSUM_8814A(ptxdesc, 0); + + for (index = 0 ; index < count ; index++) + checksum = checksum ^ le16_to_cpu(*(usPtr + index)); + + SET_TX_DESC_TX_DESC_CHECKSUM_8814A(ptxdesc, checksum); +} +#endif + +/* + * Description: In normal chip, we should send some packet to Hw which will be used by Fw + * in FW LPS mode. The function is to fill the Tx descriptor of this packets, then + * Fw can tell Hw to send these packet derectly. + * */ +void rtl8814a_fill_fake_txdesc( + PADAPTER padapter, + u8 *pDesc, + u32 BufferLen, + u8 IsPsPoll, + u8 IsBTQosNull, + u8 bDataFrame) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + + /* Clear all status */ + _rtw_memset(pDesc, 0, TXDESC_SIZE); + + SET_TX_DESC_LAST_SEG_8814A(pDesc, 1); + + SET_TX_DESC_OFFSET_8814A(pDesc, TXDESC_SIZE); + + SET_TX_DESC_PKT_SIZE_8814A(pDesc, BufferLen); + + SET_TX_DESC_QUEUE_SEL_8814A(pDesc, QSLT_MGNT); + + if (pmlmeext->cur_wireless_mode & WIRELESS_11B) + SET_TX_DESC_RATE_ID_8814A(pDesc, RATEID_IDX_B); + else + SET_TX_DESC_RATE_ID_8814A(pDesc, RATEID_IDX_G); + + /* Set NAVUSEHDR to prevent Ps-poll AId filed to be changed to error vlaue by Hw. */ + if (IsPsPoll) + SET_TX_DESC_NAV_USE_HDR_8814A(pDesc, 1); + else { + SET_TX_DESC_HWSEQ_EN_8814A(pDesc, 1); /* Hw set sequence number */ + } +#if 0 /* todo */ + if (IsBTQosNull) + SET_TX_DESC_BT_INT_8812(pDesc, 1); +#endif /* 0 */ + + SET_TX_DESC_USE_RATE_8814A(pDesc, 1); + + /* 8814 no OWN bit? */ + /* SET_TX_DESC_OWN_8812(pDesc, 1); */ + + /* */ + /* Encrypt the data frame if under security mode excepct null data. Suggested by CCW. */ + /* */ + if (_TRUE == bDataFrame) { + u32 EncAlg; + + EncAlg = padapter->securitypriv.dot11PrivacyAlgrthm; + switch (EncAlg) { + case _NO_PRIVACY_: + SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x0); + break; + case _WEP40_: + case _WEP104_: + case _TKIP_: + SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x1); + break; + case _SMS4_: + SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x2); + break; + case _AES_: + SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x3); + break; + default: + SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x0); + break; + } + } + SET_TX_DESC_TX_RATE_8814A(pDesc, MRateToHwRate(pmlmeext->tx_rate)); + +#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) + /* USB interface drop packet if the checksum of descriptor isn't correct. */ + /* Using this checksum can let hardware recovery from packet bulk out error (e.g. Cancel URC, Bulk out error.). */ + rtl8814a_cal_txdesc_chksum(pDesc); +#endif +} + +#if defined(CONFIG_CONCURRENT_MODE) +void fill_txdesc_force_bmc_camid(struct pkt_attrib *pattrib, u8 *ptxdesc) +{ + if ((pattrib->encrypt > 0) && (!pattrib->bswenc) + && (pattrib->bmc_camid != INVALID_SEC_MAC_CAM_ID)) { + + SET_TX_DESC_EN_DESC_ID_8814A(ptxdesc, 1); + SET_TX_DESC_MACID_8814A(ptxdesc, pattrib->bmc_camid); + } +} +#endif +void fill_txdesc_bmc_tx_rate(struct pkt_attrib *pattrib, u8 *ptxdesc) +{ + SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); + SET_TX_DESC_TX_RATE_8814A(ptxdesc, MRateToHwRate(pattrib->rate)); + SET_TX_DESC_DISABLE_FB_8814A(ptxdesc, 1); +} + +void rtl8814a_fill_txdesc_sectype(struct pkt_attrib *pattrib, u8 *ptxdesc) +{ + if ((pattrib->encrypt > 0) && !pattrib->bswenc) { + switch (pattrib->encrypt) { + /* SEC_TYPE : 0:NO_ENC,1:WEP40/TKIP,2:WAPI,3:AES */ + case _WEP40_: + case _WEP104_: + case _TKIP_: + case _TKIP_WTMIC_: + SET_TX_DESC_SEC_TYPE_8814A(ptxdesc, 0x1); + break; +#ifdef CONFIG_WAPI_SUPPORT + case _SMS4_: + SET_TX_DESC_SEC_TYPE_8814A(ptxdesc, 0x2); + break; +#endif + case _AES_: + SET_TX_DESC_SEC_TYPE_8814A(ptxdesc, 0x3); + break; + case _NO_PRIVACY_: + default: + SET_TX_DESC_SEC_TYPE_8814A(ptxdesc, 0x0); + break; + + } + + } + +} + +void rtl8814a_fill_txdesc_vcs(PADAPTER padapter, struct pkt_attrib *pattrib, u8 *ptxdesc) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + /* RTW_INFO("vcs_mode=%d\n", pattrib->vcs_mode); */ + + if (pattrib->vcs_mode) { + + switch (pattrib->vcs_mode) { + case RTS_CTS: + SET_TX_DESC_RTS_ENABLE_8814A(ptxdesc, 1); + break; + case CTS_TO_SELF: + SET_TX_DESC_CTS2SELF_8814A(ptxdesc, 1); + break; + case NONE_VCS: + default: + break; + } + + if (pmlmeinfo->preamble_mode == PREAMBLE_SHORT) + SET_TX_DESC_RTS_SHORT_8814A(ptxdesc, 1); + + /* RTS Rate=24M */ + SET_TX_DESC_RTS_RATE_8814A(ptxdesc, 0x8); + + /* compatibility for MCC consideration, use pmlmeext->cur_channel */ + if (pmlmeext->cur_channel > 14) + /* RTS retry to rate OFDM 6M for 5G */ + SET_TX_DESC_RTS_RATE_FB_LIMIT_8814A(ptxdesc, 4); + else + /* RTS retry to rate CCK 1M for 2.4G */ + SET_TX_DESC_RTS_RATE_FB_LIMIT_8814A(ptxdesc, 0); + } +} + + +u8 +BWMapping_8814( + PADAPTER Adapter, + struct pkt_attrib *pattrib +) +{ + u8 BWSettingOfDesc = 0; + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + + /* RTW_INFO("BWMapping pHalData->current_channel_bw %d, pattrib->bwmode %d\n",pHalData->current_channel_bw,pattrib->bwmode); */ + + if (pHalData->current_channel_bw == CHANNEL_WIDTH_80) { + if (pattrib->bwmode == CHANNEL_WIDTH_80) + BWSettingOfDesc = 2; + else if (pattrib->bwmode == CHANNEL_WIDTH_40) + BWSettingOfDesc = 1; + else + BWSettingOfDesc = 0; + } else if (pHalData->current_channel_bw == CHANNEL_WIDTH_40) { + if ((pattrib->bwmode == CHANNEL_WIDTH_40) || (pattrib->bwmode == CHANNEL_WIDTH_80)) + BWSettingOfDesc = 1; + else + BWSettingOfDesc = 0; + } else + BWSettingOfDesc = 0; + + return BWSettingOfDesc; +} + +u8 +SCMapping_8814( + PADAPTER Adapter, + struct pkt_attrib *pattrib +) +{ + u8 SCSettingOfDesc = 0; + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + /* RTW_INFO("SCMapping: pHalData->current_channel_bw %d, pHalData->nCur80MhzPrimeSC %d, pHalData->nCur40MhzPrimeSC %d\n",pHalData->current_channel_bw,pHalData->nCur80MhzPrimeSC,pHalData->nCur40MhzPrimeSC); */ + + if (pHalData->current_channel_bw == CHANNEL_WIDTH_80) { + if (pattrib->bwmode == CHANNEL_WIDTH_80) + SCSettingOfDesc = VHT_DATA_SC_DONOT_CARE; + else if (pattrib->bwmode == CHANNEL_WIDTH_40) { + if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) + SCSettingOfDesc = VHT_DATA_SC_40_LOWER_OF_80MHZ; + else if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) + SCSettingOfDesc = VHT_DATA_SC_40_UPPER_OF_80MHZ; + else + RTW_INFO("SCMapping: DONOT CARE Mode Setting\n"); + } else { + if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) + SCSettingOfDesc = VHT_DATA_SC_20_LOWEST_OF_80MHZ; + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) + SCSettingOfDesc = VHT_DATA_SC_20_LOWER_OF_80MHZ; + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) + SCSettingOfDesc = VHT_DATA_SC_20_UPPER_OF_80MHZ; + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) + SCSettingOfDesc = VHT_DATA_SC_20_UPPERST_OF_80MHZ; + else + RTW_INFO("SCMapping: DONOT CARE Mode Setting\n"); + } + } else if (pHalData->current_channel_bw == CHANNEL_WIDTH_40) { + /* RTW_INFO("SCMapping: HT Case: pHalData->current_channel_bw %d, pHalData->nCur40MhzPrimeSC %d\n",pHalData->current_channel_bw,pHalData->nCur40MhzPrimeSC); */ + + if (pattrib->bwmode == CHANNEL_WIDTH_40) + SCSettingOfDesc = VHT_DATA_SC_DONOT_CARE; + else if (pattrib->bwmode == CHANNEL_WIDTH_20) { + if (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) + SCSettingOfDesc = VHT_DATA_SC_20_UPPER_OF_80MHZ; + else if (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) + SCSettingOfDesc = VHT_DATA_SC_20_LOWER_OF_80MHZ; + else + SCSettingOfDesc = VHT_DATA_SC_DONOT_CARE; + + } + } else + SCSettingOfDesc = VHT_DATA_SC_DONOT_CARE; + + return SCSettingOfDesc; +} + + +void rtl8814a_fill_txdesc_phy(PADAPTER padapter, struct pkt_attrib *pattrib, u8 *ptxdesc) +{ + /* RTW_INFO("bwmode=%d, ch_off=%d\n", pattrib->bwmode, pattrib->ch_offset); */ + + if (pattrib->ht_en) { + /* Set Bandwidth and sub-channel settings. */ + SET_TX_DESC_DATA_BW_8814A(ptxdesc, BWMapping_8814(padapter, pattrib)); + + SET_TX_DESC_DATA_SC_8814A(ptxdesc, SCMapping_8814(padapter, pattrib)); + } +} diff --git a/hal/rtl8814a/usb/rtl8814au_led.c b/hal/rtl8814a/usb/rtl8814au_led.c new file mode 100644 index 0000000..b516ca7 --- /dev/null +++ b/hal/rtl8814a/usb/rtl8814au_led.c @@ -0,0 +1,143 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#define _RTL8814AU_LED_C_ + +/* #include */ +#include +#ifdef CONFIG_RTW_SW_LED + +/* ******************************************************************************** + * LED object. + * ******************************************************************************** */ + + +/* ******************************************************************************** + * Prototype of protected function. + * ******************************************************************************** */ + + +/* ******************************************************************************** + * LED_819xUsb routines. + * ******************************************************************************** */ + +/* + * Description: + * Turn on LED according to LedPin specified. + * */ +static void +SwLedOn_8814AU( + PADAPTER padapter, + PLED_USB pLed +) +{ + u32 LedGpioCfg; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + + if (RTW_CANNOT_RUN(padapter)) + return; + + LedGpioCfg = rtw_read32(padapter , REG_GPIO_PIN_CTRL_2); /* 0x60. In 8814AU, the name should be REG_GPIO_EXT_CTRL */ + switch (pLed->LedPin) { + case LED_PIN_LED0: + LedGpioCfg |= (BIT16 | BIT17 | BIT21 | BIT22); /* config as gpo */ + LedGpioCfg &= ~(BIT8 | BIT9 | BIT13 | BIT14); /* set gpo value */ + LedGpioCfg &= ~(BIT0 | BIT1 | BIT5 | BIT6); /* set gpi value. TBD: may not need this */ + rtw_write32(padapter , REG_GPIO_PIN_CTRL_2 , LedGpioCfg); + break; + default: + break; + } + pLed->bLedOn = _TRUE; +} + + +/* + * Description: + * Turn off LED according to LedPin specified. + * */ +static void +SwLedOff_8814AU( + PADAPTER padapter, + PLED_USB pLed +) +{ + u32 LedGpioCfg; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + + if (RTW_CANNOT_RUN(padapter)) + return; + LedGpioCfg = rtw_read32(padapter , REG_GPIO_PIN_CTRL_2); /* 0x60. In 8814AU, the name should be REG_GPIO_EXT_CTRL */ + switch (pLed->LedPin) { + case LED_PIN_LED0: + LedGpioCfg |= (BIT16 | BIT17 | BIT21 | BIT22); /* config as gpo */ + LedGpioCfg |= (BIT8 | BIT9 | BIT13 | BIT14); /* set gpo output value */ + rtw_write32(padapter , REG_GPIO_PIN_CTRL_2 , LedGpioCfg); + break; + default: + break; + } + + pLed->bLedOn = _FALSE; +} + +/* ******************************************************************************** + * Interface to manipulate LED objects. + * ******************************************************************************** */ + + +/* ******************************************************************************** + * Default LED behavior. + * ******************************************************************************** */ + +/* + * Description: + * Initialize all LED_871x objects. + * */ +void +rtl8814au_InitSwLeds( + _adapter *padapter +) +{ + struct led_priv *pledpriv = adapter_to_led(padapter); + + pledpriv->LedControlHandler = LedControlUSB; + + pledpriv->SwLedOn = SwLedOn_8814AU; + pledpriv->SwLedOff = SwLedOff_8814AU; + + InitLed(padapter, &(pledpriv->SwLed0), LED_PIN_LED0); + + InitLed(padapter, &(pledpriv->SwLed1), LED_PIN_LED1); + + InitLed(padapter, &(pledpriv->SwLed2), LED_PIN_LED2); +} + + +/* + * Description: + * DeInitialize all LED_819xUsb objects. + * */ +void +rtl8814au_DeInitSwLeds( + _adapter *padapter +) +{ + struct led_priv *ledpriv = adapter_to_led(padapter); + + DeInitLed(&(ledpriv->SwLed0)); + DeInitLed(&(ledpriv->SwLed1)); + DeInitLed(&(ledpriv->SwLed2)); +} +#endif diff --git a/hal/rtl8814a/usb/rtl8814au_recv.c b/hal/rtl8814a/usb/rtl8814au_recv.c new file mode 100644 index 0000000..a8d8194 --- /dev/null +++ b/hal/rtl8814a/usb/rtl8814au_recv.c @@ -0,0 +1,28 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#define _RTL8814AU_RECV_C_ + +/* #include */ +#include + +int rtl8814au_init_recv_priv(_adapter *padapter) +{ + return usb_init_recv_priv(padapter, INTERRUPT_MSG_FORMAT_LEN); +} + +void rtl8814au_free_recv_priv(_adapter *padapter) +{ + usb_free_recv_priv(padapter, INTERRUPT_MSG_FORMAT_LEN); +} diff --git a/hal/rtl8814a/usb/rtl8814au_xmit.c b/hal/rtl8814a/usb/rtl8814au_xmit.c new file mode 100644 index 0000000..de43070 --- /dev/null +++ b/hal/rtl8814a/usb/rtl8814au_xmit.c @@ -0,0 +1,1066 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#define _RTL8814AU_XMIT_C_ + +/* #include */ +#include + + +s32 rtl8814au_init_xmit_priv(_adapter *padapter) +{ + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + +#ifdef PLATFORM_LINUX + tasklet_init(&pxmitpriv->xmit_tasklet, + (void(*)(unsigned long))rtl8814au_xmit_tasklet, + (unsigned long)padapter); +#endif +#ifdef CONFIG_TX_EARLY_MODE + pHalData->bEarlyModeEnable = padapter->registrypriv.early_mode; +#endif + + return _SUCCESS; +} + +void rtl8814au_free_xmit_priv(_adapter *padapter) +{ +} + +static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz , u8 bagg_pkt) +{ + int pull = 0; + uint qsel; + u8 data_rate, pwr_status, offset; + _adapter *padapter = pxmitframe->padapter; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + u8 *ptxdesc = pmem; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + sint bmcst = IS_MCAST(pattrib->ra); + u16 SWDefineContent = 0x0; + u8 DriverFixedRate = 0x0; + struct registry_priv *pregpriv = &(padapter->registrypriv); + +#ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX + if (padapter->registrypriv.mp_mode == 0) { + if ((PACKET_OFFSET_SZ != 0) && (!bagg_pkt) && (rtw_usb_bulk_size_boundary(padapter, TXDESC_SIZE + sz) == _FALSE)) { + ptxdesc = (pmem + PACKET_OFFSET_SZ); + /* RTW_INFO("==> non-agg-pkt,shift pointer...\n"); */ + pull = 1; + } + } +#endif /* CONFIG_USE_USB_BUFFER_ALLOC_TX */ + + _rtw_memset(ptxdesc, 0, TXDESC_SIZE); + + /* 4 offset 0 */ + /* SET_TX_DESC_FIRST_SEG_8812(ptxdesc, 1); */ + SET_TX_DESC_LAST_SEG_8814A(ptxdesc, 1); + /* SET_TX_DESC_OWN_8812(ptxdesc, 1); */ + + /* RTW_INFO("%s==> pkt_len=%d,bagg_pkt=%02x\n",__FUNCTION__,sz,bagg_pkt); */ + SET_TX_DESC_PKT_SIZE_8814A(ptxdesc, sz); + + offset = TXDESC_SIZE + OFFSET_SZ; + +#ifdef CONFIG_TX_EARLY_MODE + if (bagg_pkt) { + offset += EARLY_MODE_INFO_SIZE ;/* 0x28 */ + } +#endif + /* RTW_INFO("%s==>offset(0x%02x)\n",__FUNCTION__,offset); */ + SET_TX_DESC_OFFSET_8814A(ptxdesc, offset); + + if (bmcst) + SET_TX_DESC_BMC_8814A(ptxdesc, 1); + +#ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX + if (padapter->registrypriv.mp_mode == 0) { + if ((PACKET_OFFSET_SZ != 0) && (!bagg_pkt)) { + if ((pull) && (pxmitframe->pkt_offset > 0)) + pxmitframe->pkt_offset = pxmitframe->pkt_offset - 1; + } + } +#endif + + /* RTW_INFO("%s, pkt_offset=0x%02x\n",__FUNCTION__,pxmitframe->pkt_offset); */ + /* pkt_offset, unit:8 bytes padding */ + if (pxmitframe->pkt_offset > 0) + SET_TX_DESC_PKT_OFFSET_8814A(ptxdesc, pxmitframe->pkt_offset); + + SET_TX_DESC_MACID_8814A(ptxdesc, pattrib->mac_id); + SET_TX_DESC_RATE_ID_8814A(ptxdesc, pattrib->raid); + + SET_TX_DESC_QUEUE_SEL_8814A(ptxdesc, pattrib->qsel); + + /* offset 12 */ + + if (pattrib->injected == _TRUE && !pregpriv->monitor_overwrite_seqnum) { + /* Prevent sequence number from being overwritten */ + SET_TX_DESC_HWSEQ_EN_8814A(ptxdesc, 0); /* Hw do not set sequence number */ + SET_TX_DESC_SEQ_8814A(ptxdesc, pattrib->seqnum); /* Copy inject sequence number to TxDesc */ + } + else if (!pattrib->qos_en) { + /* HW sequence, to fix to use 0 queue. todo: 4AC packets to use auto queue select */ + SET_TX_DESC_HWSEQ_EN_8814A(ptxdesc, 1); /* Hw set sequence number */ + SET_TX_DESC_EN_HWEXSEQ_8814A(ptxdesc, 0); + SET_TX_DESC_DISQSELSEQ_8814A(ptxdesc, 1); + SET_TX_DESC_HW_SSN_SEL_8814A(ptxdesc, 0); + } else { + SET_TX_DESC_SEQ_8814A(ptxdesc, pattrib->seqnum); + } + if ((pxmitframe->frame_tag & 0x0f) == DATA_FRAMETAG) { + /* RTW_INFO("pxmitframe->frame_tag == DATA_FRAMETAG\n"); */ + + rtl8814a_fill_txdesc_sectype(pattrib, ptxdesc); +#if defined(CONFIG_CONCURRENT_MODE) + if (bmcst) + fill_txdesc_force_bmc_camid(pattrib, ptxdesc); +#endif + + /* offset 20 */ +#ifdef CONFIG_USB_TX_AGGREGATION + if (pxmitframe->agg_num > 1) { + /* RTW_INFO("%s agg_num:%d\n",__FUNCTION__,pxmitframe->agg_num ); */ + SET_TX_DESC_USB_TXAGG_NUM_8814A(ptxdesc, pxmitframe->agg_num); + } +#endif /* CONFIG_USB_TX_AGGREGATION */ + + rtl8814a_fill_txdesc_vcs(padapter, pattrib, ptxdesc); + + if ((pattrib->ether_type != 0x888e) && + (pattrib->ether_type != 0x0806) && + (pattrib->ether_type != 0x88b4) && + (pattrib->dhcp_pkt != 1) +#ifdef CONFIG_AUTO_AP_MODE + && (pattrib->pctrl != _TRUE) +#endif + ) { + /* Non EAP & ARP & DHCP type data packet */ + + if (pattrib->ampdu_en == _TRUE) { + SET_TX_DESC_AGG_ENABLE_8814A(ptxdesc, 1); + SET_TX_DESC_MAX_AGG_NUM_8814A(ptxdesc, 0x1f); + /* Set A-MPDU aggregation. */ + SET_TX_DESC_AMPDU_DENSITY_8814A(ptxdesc, pattrib->ampdu_spacing); + } else + SET_TX_DESC_BK_8814A(ptxdesc, 1); + + rtl8814a_fill_txdesc_phy(padapter, pattrib, ptxdesc); + + /* compatibility for MCC consideration, use pmlmeext->cur_channel */ + if (pmlmeext->cur_channel > 14) + /* for 5G. OFMD 6M */ + SET_TX_DESC_DATA_RATE_FB_LIMIT_8814A(ptxdesc, 4); + else + /* for 2.4G CCK 1M */ + SET_TX_DESC_DATA_RATE_FB_LIMIT_8814A(ptxdesc, 0); + + if (pHalData->fw_ractrl == _FALSE) { + SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); + DriverFixedRate = 0x01; + + if (pHalData->INIDATA_RATE[pattrib->mac_id] & BIT(7)) + SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 1); + + SET_TX_DESC_TX_RATE_8814A(ptxdesc, (pHalData->INIDATA_RATE[pattrib->mac_id] & 0x7F)); + } + if (bmcst) { + DriverFixedRate = 0x01; + fill_txdesc_bmc_tx_rate(pattrib, ptxdesc); + } + + if (padapter->fix_rate != 0xFF) { /* modify data rate by iwpriv */ + SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); + DriverFixedRate = 0x01; + if (padapter->fix_rate & BIT(7)) + SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 1); + + SET_TX_DESC_TX_RATE_8814A(ptxdesc, (padapter->fix_rate & 0x7F)); + if (!padapter->data_fb) + SET_TX_DESC_DISABLE_FB_8814A(ptxdesc, 1); + } + + if (pattrib->ldpc) + SET_TX_DESC_DATA_LDPC_8814A(ptxdesc, 1); + if (pattrib->stbc) + SET_TX_DESC_DATA_STBC_8814A(ptxdesc, 1); + + /* work arond before fixing RA */ + /* SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); */ + /* SET_TX_DESC_TX_RATE_8814A(ptxdesc, 0x10); */ + } else { + /* EAP data packet and ARP packet and DHCP. */ + /* Use the 1M data rate to send the EAP/ARP packet. */ + /* This will maybe make the handshake smooth. */ + + SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); + DriverFixedRate = 0x01; + SET_TX_DESC_BK_8814A(ptxdesc, 1); + + /* HW will ignore this setting if the transmission rate is legacy OFDM. */ + if (pmlmeinfo->preamble_mode == PREAMBLE_SHORT) + SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 1); +#ifdef CONFIG_IP_R_MONITOR + if((pattrib->ether_type == ETH_P_ARP) && + (IsSupportedTxOFDM(padapter->registrypriv.wireless_mode))) { + SET_TX_DESC_TX_RATE_8814A(ptxdesc, MRateToHwRate(IEEE80211_OFDM_RATE_6MB)); + #ifdef DBG_IP_R_MONITOR + RTW_INFO(FUNC_ADPT_FMT ": SP Packet(0x%04X) rate=0x%x SeqNum = %d\n", + FUNC_ADPT_ARG(padapter), pattrib->ether_type, MRateToHwRate(pmlmeext->tx_rate), pattrib->seqnum); + #endif/*DBG_IP_R_MONITOR*/ + } else +#endif/*CONFIG_IP_R_MONITOR*/ + SET_TX_DESC_TX_RATE_8814A(ptxdesc, MRateToHwRate(pmlmeext->tx_rate)); + } + + } else if ((pxmitframe->frame_tag & 0x0f) == MGNT_FRAMETAG) { + /* RTW_INFO("pxmitframe->frame_tag == MGNT_FRAMETAG\n"); */ + + SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); + DriverFixedRate = 0x01; + + SET_TX_DESC_TX_RATE_8814A(ptxdesc, MRateToHwRate(pattrib->rate)); + + /* VHT NDPA or HT NDPA Packet for Beamformer. */ + +#ifdef CONFIG_BEAMFORMING + if ((pattrib->subtype == WIFI_NDPA) || + ((pattrib->subtype == WIFI_ACTION_NOACK) && (pattrib->order == 1))) { + SET_TX_DESC_NAV_USE_HDR_8814A(ptxdesc, 1); + + SET_TX_DESC_DATA_BW_8814A(ptxdesc, BWMapping_8814(padapter, pattrib)); + SET_TX_DESC_RTS_SC_8814A(ptxdesc, SCMapping_8814(padapter, pattrib)); + + SET_TX_DESC_RETRY_LIMIT_ENABLE_8814A(ptxdesc, 1); + SET_TX_DESC_DATA_RETRY_LIMIT_8814A(ptxdesc, 5); + SET_TX_DESC_DISABLE_FB_8814A(ptxdesc, 1); + + /* if(pattrib->rts_cca) */ + /* { */ + /* SET_TX_DESC_NDPA_8812(ptxdesc, 2); */ + /* } */ + /* else */ + { + SET_TX_DESC_NDPA_8814A(ptxdesc, 1); + } + } else +#endif + { + SET_TX_DESC_RETRY_LIMIT_ENABLE_8814A(ptxdesc, 1); + if (pattrib->retry_ctrl == _TRUE) + SET_TX_DESC_DATA_RETRY_LIMIT_8814A(ptxdesc, 6); + else + SET_TX_DESC_DATA_RETRY_LIMIT_8814A(ptxdesc, 12); + } + +#ifdef CONFIG_XMIT_ACK + /* CCX-TXRPT ack for xmit mgmt frames. */ + if (pxmitframe->ack_report) { + SET_TX_DESC_SPE_RPT_8814A(ptxdesc, 1); +#ifdef DBG_CCX + RTW_INFO("%s set tx report\n", __func__); +#endif + } +#endif /* CONFIG_XMIT_ACK */ + } else if ((pxmitframe->frame_tag & 0x0f) == TXAGG_FRAMETAG) + RTW_INFO("pxmitframe->frame_tag == TXAGG_FRAMETAG\n"); +#ifdef CONFIG_MP_INCLUDED + else if (((pxmitframe->frame_tag & 0x0f) == MP_FRAMETAG) && + (padapter->registrypriv.mp_mode == 1)) + fill_txdesc_for_mp(padapter, ptxdesc); +#endif + else { + RTW_INFO("pxmitframe->frame_tag = %d\n", pxmitframe->frame_tag); + + SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); + DriverFixedRate = 0x01; + SET_TX_DESC_TX_RATE_8814A(ptxdesc, MRateToHwRate(pmlmeext->tx_rate)); + } + if (DriverFixedRate) + SWDefineContent |= 0x01; + SET_TX_DESC_SW_DEFINE_8814A(ptxdesc, SWDefineContent); + +#ifdef CONFIG_ANTENNA_DIVERSITY + if (!bmcst && pattrib->psta) + odm_set_tx_ant_by_tx_info(adapter_to_phydm(padapter), ptxdesc, pattrib->psta->cmn.mac_id); +#endif + +#ifdef CONFIG_BEAMFORMING + SET_TX_DESC_GID_8814A(ptxdesc, pattrib->txbf_g_id); + SET_TX_DESC_PAID_8814A(ptxdesc, pattrib->txbf_p_aid); +#endif + rtl8814a_cal_txdesc_chksum(ptxdesc); + _dbg_dump_tx_info(padapter, pxmitframe->frame_tag, ptxdesc); + return pull; +} + + +#ifdef CONFIG_XMIT_THREAD_MODE +/* + * Description + * Transmit xmitbuf to hardware tx fifo + * + * Return + * _SUCCESS ok + * _FAIL something error + */ +s32 rtl8814au_xmit_buf_handler(PADAPTER padapter) +{ + PHAL_DATA_TYPE phal; + struct xmit_priv *pxmitpriv; + struct xmit_buf *pxmitbuf; + struct xmit_frame *pxmitframe; + s32 ret; + + + phal = GET_HAL_DATA(padapter); + pxmitpriv = &padapter->xmitpriv; + + ret = _rtw_down_sema(&pxmitpriv->xmit_sema); + if (_FAIL == ret) { + return _FAIL; + } + + if (RTW_CANNOT_RUN(padapter)) { + return _FAIL; + } + + if (rtw_mi_check_pending_xmitbuf(padapter) == 0) + return _SUCCESS; + +#ifdef CONFIG_LPS_LCLK + ret = rtw_register_tx_alive(padapter); + if (ret != _SUCCESS) { + return _SUCCESS; + } +#endif /* CONFIG_LPS_LCLK */ + + do { + pxmitbuf = dequeue_pending_xmitbuf(pxmitpriv); + if (pxmitbuf == NULL) + break; + + pxmitframe = (struct xmit_frame *) pxmitbuf->priv_data; + rtw_write_port(padapter, pxmitbuf->ff_hwaddr, pxmitbuf->len, (unsigned char *)pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pxmitframe); + + } while (1); + +#ifdef CONFIG_LPS_LCLK + rtw_unregister_tx_alive(padapter); +#endif /* CONFIG_LPS_LCLK */ + + return _SUCCESS; +} +#endif /* CONFIG_XMIT_THREAD_MODE */ + + +/* for non-agg data frame or management frame */ +static s32 rtw_dump_xframe(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + s32 ret = _SUCCESS; + s32 inner_ret = _SUCCESS; + int t, sz, w_sz, pull = 0; + u8 *mem_addr; + u32 ff_hwaddr; + struct xmit_buf *pxmitbuf = pxmitframe->pxmitbuf; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; +#ifdef CONFIG_80211N_HT + if ((pxmitframe->frame_tag == DATA_FRAMETAG) && + (pxmitframe->attrib.ether_type != 0x0806) && + (pxmitframe->attrib.ether_type != 0x888e) && + (pxmitframe->attrib.ether_type != 0x88b4) && + (pxmitframe->attrib.dhcp_pkt != 1)) + rtw_issue_addbareq_cmd(padapter, pxmitframe); +#endif /* CONFIG_80211N_HT */ + mem_addr = pxmitframe->buf_addr; + + /* RTW_INFO("rtw_dump_xframe()\n"); */ + + for (t = 0; t < pattrib->nr_frags; t++) { + if (inner_ret != _SUCCESS && ret == _SUCCESS) + ret = _FAIL; + + if (t != (pattrib->nr_frags - 1)) { + + sz = pxmitpriv->frag_len; + sz = sz - 4 - (psecuritypriv->sw_encrypt ? 0 : pattrib->icv_len); + } else /* no frag */ + sz = pattrib->last_txcmdsz; + + pull = update_txdesc(pxmitframe, mem_addr, sz, _FALSE); + + if (pull) { + mem_addr += PACKET_OFFSET_SZ; /* pull txdesc head */ + + /* pxmitbuf->pbuf = mem_addr; */ + pxmitframe->buf_addr = mem_addr; + + w_sz = sz + TXDESC_SIZE; + } else + w_sz = sz + TXDESC_SIZE + PACKET_OFFSET_SZ; + + ff_hwaddr = rtw_get_ff_hwaddr(pxmitframe); + +#ifdef CONFIG_XMIT_THREAD_MODE + pxmitbuf->len = w_sz; + pxmitbuf->ff_hwaddr = ff_hwaddr; + + if (pxmitframe->attrib.qsel == QSLT_BEACON) + /* download rsvd page*/ + rtw_write_port(padapter, ff_hwaddr, w_sz, (u8 *)pxmitbuf); + else + enqueue_pending_xmitbuf(pxmitpriv, pxmitbuf); +#else + inner_ret = rtw_write_port(padapter, ff_hwaddr, w_sz, (unsigned char *)pxmitbuf); +#endif + rtw_count_tx_stats(padapter, pxmitframe, sz); + + /* RTW_INFO("rtw_write_port, w_sz=%d\n", w_sz); */ + /* RTW_INFO("rtw_write_port, w_sz=%d, sz=%d, txdesc_sz=%d, tid=%d\n", w_sz, sz, w_sz-sz, pattrib->priority); */ + + mem_addr += w_sz; + + mem_addr = (u8 *)RND4(((SIZE_PTR)(mem_addr))); + + } + +#ifdef CONFIG_XMIT_THREAD_MODE + if (pxmitframe->attrib.qsel == QSLT_BEACON) +#endif + rtw_free_xmitframe(pxmitpriv, pxmitframe); + + if (ret != _SUCCESS) + rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_UNKNOWN); + + return ret; +} + +#ifdef CONFIG_USB_TX_AGGREGATION +#define IDEA_CONDITION 1 /* check all packets before enqueue */ +s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct xmit_frame *pxmitframe = NULL; + struct xmit_frame *pfirstframe = NULL; + + /* aggregate variable */ + struct hw_xmit *phwxmit; + struct sta_info *psta = NULL; + struct tx_servq *ptxservq = NULL; + + _irqL irqL; + _list *xmitframe_plist = NULL, *xmitframe_phead = NULL; + + u32 pbuf; /* next pkt address */ + u32 pbuf_tail; /* last pkt tail */ + u32 len; /* packet length, except TXDESC_SIZE and PKT_OFFSET */ + + u32 bulkSize = pHalData->UsbBulkOutSize; + u8 descCount; + u32 bulkPtr; + + /* dump frame variable */ + u32 ff_hwaddr; + + _list *sta_plist, *sta_phead; + u8 single_sta_in_queue = _FALSE; + +#ifndef IDEA_CONDITION + int res = _SUCCESS; +#endif + + + + /* check xmitbuffer is ok */ + if (pxmitbuf == NULL) { + pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv); + if (pxmitbuf == NULL) { + /* RTW_INFO("%s #1, connot alloc xmitbuf!!!!\n",__FUNCTION__); */ + return _FALSE; + } + } + + /* RTW_INFO("%s =====================================\n",__FUNCTION__); */ + /* 3 1. pick up first frame */ + do { + rtw_free_xmitframe(pxmitpriv, pxmitframe); + + pxmitframe = rtw_dequeue_xframe(pxmitpriv, pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry); + if (pxmitframe == NULL) { + /* no more xmit frame, release xmit buffer */ + /* RTW_INFO("no more xmit frame ,return\n"); */ + rtw_free_xmitbuf(pxmitpriv, pxmitbuf); + return _FALSE; + } + +#ifndef IDEA_CONDITION + if (pxmitframe->frame_tag != DATA_FRAMETAG) { + /* rtw_free_xmitframe(pxmitpriv, pxmitframe); */ + continue; + } + + /* TID 0~15 */ + if ((pxmitframe->attrib.priority < 0) || + (pxmitframe->attrib.priority > 15)) { + /* rtw_free_xmitframe(pxmitpriv, pxmitframe); */ + continue; + } +#endif + /* RTW_INFO("==> pxmitframe->attrib.priority:%d\n",pxmitframe->attrib.priority); */ + pxmitframe->pxmitbuf = pxmitbuf; + pxmitframe->buf_addr = pxmitbuf->pbuf; + pxmitbuf->priv_data = pxmitframe; + + pxmitframe->agg_num = 1; /* alloc xmitframe should assign to 1. */ +#ifdef CONFIG_TX_EARLY_MODE + pxmitframe->pkt_offset = (PACKET_OFFSET_SZ / 8) + 1; /* 2; */ /* first frame of aggregation, reserve one offset for EM info ,another for usb bulk-out block check */ +#else + pxmitframe->pkt_offset = (PACKET_OFFSET_SZ / 8); /* 1; */ /* first frame of aggregation, reserve offset */ +#endif + + if (rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe) == _FALSE) { + RTW_INFO("%s coalesce 1st xmitframe failed\n", __FUNCTION__); + continue; + } + + + /* always return ndis_packet after rtw_xmitframe_coalesce */ + rtw_os_xmit_complete(padapter, pxmitframe); + + break; + } while (1); + + /* 3 2. aggregate same priority and same DA(AP or STA) frames */ + pfirstframe = pxmitframe; + len = rtw_wlan_pkt_size(pfirstframe) + TXDESC_SIZE + (pfirstframe->pkt_offset * PACKET_OFFSET_SZ); + pbuf_tail = len; + pbuf = _RND8(pbuf_tail); + + /* check pkt amount in one bulk */ + descCount = 0; + bulkPtr = bulkSize; + if (pbuf < bulkPtr) + descCount++; + if (descCount == pHalData->UsbTxAggDescNum) + goto agg_end; + else { + descCount = 0; + bulkPtr = ((pbuf / bulkSize) + 1) * bulkSize; /* round to next bulkSize */ + } + + /* dequeue same priority packet from station tx queue */ + psta = pfirstframe->attrib.psta; + switch (pfirstframe->attrib.priority) { + case 1: + case 2: + ptxservq = &(psta->sta_xmitpriv.bk_q); + phwxmit = pxmitpriv->hwxmits + 3; + break; + + case 4: + case 5: + ptxservq = &(psta->sta_xmitpriv.vi_q); + phwxmit = pxmitpriv->hwxmits + 1; + break; + + case 6: + case 7: + ptxservq = &(psta->sta_xmitpriv.vo_q); + phwxmit = pxmitpriv->hwxmits; + break; + + case 0: + case 3: + default: + ptxservq = &(psta->sta_xmitpriv.be_q); + phwxmit = pxmitpriv->hwxmits + 2; + break; + } + /* RTW_INFO("==> pkt_no=%d,pkt_len=%d,len=%d,RND8_LEN=%d,pkt_offset=0x%02x\n", */ + /* pxmitframe->agg_num,pxmitframe->attrib.last_txcmdsz,len,pbuf,pxmitframe->pkt_offset ); */ + + + _enter_critical_bh(&pxmitpriv->lock, &irqL); + + sta_phead = get_list_head(phwxmit->sta_queue); + sta_plist = get_next(sta_phead); + single_sta_in_queue = rtw_end_of_queue_search(sta_phead, get_next(sta_plist)); + + xmitframe_phead = get_list_head(&ptxservq->sta_pending); + xmitframe_plist = get_next(xmitframe_phead); + + while (rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist) == _FALSE) { + pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list); + xmitframe_plist = get_next(xmitframe_plist); + + if (_FAIL == rtw_hal_busagg_qsel_check(padapter, pfirstframe->attrib.qsel, pxmitframe->attrib.qsel)) + break; + + pxmitframe->agg_num = 0; /* not first frame of aggregation */ +#ifdef CONFIG_TX_EARLY_MODE + pxmitframe->pkt_offset = 1;/* not first frame of aggregation,reserve offset for EM Info */ +#else + pxmitframe->pkt_offset = 0; /* not first frame of aggregation, no need to reserve offset */ +#endif + + len = rtw_wlan_pkt_size(pxmitframe) + TXDESC_SIZE + (pxmitframe->pkt_offset * PACKET_OFFSET_SZ); + + if (_RND8(pbuf + len) > MAX_XMITBUF_SZ) { + /* RTW_INFO("%s....len> MAX_XMITBUF_SZ\n",__FUNCTION__); */ + pxmitframe->agg_num = 1; + pxmitframe->pkt_offset = 1; + break; + } + rtw_list_delete(&pxmitframe->list); + ptxservq->qcnt--; + phwxmit->accnt--; + +#ifndef IDEA_CONDITION + /* suppose only data frames would be in queue */ + if (pxmitframe->frame_tag != DATA_FRAMETAG) { + rtw_free_xmitframe(pxmitpriv, pxmitframe); + continue; + } + + /* TID 0~15 */ + if ((pxmitframe->attrib.priority < 0) || + (pxmitframe->attrib.priority > 15)) { + rtw_free_xmitframe(pxmitpriv, pxmitframe); + continue; + } +#endif + + /* pxmitframe->pxmitbuf = pxmitbuf; */ + pxmitframe->buf_addr = pxmitbuf->pbuf + pbuf; + + if (rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe) == _FALSE) { + RTW_INFO("%s coalesce failed\n", __FUNCTION__); + rtw_free_xmitframe(pxmitpriv, pxmitframe); + continue; + } + + /* RTW_INFO("==> pxmitframe->attrib.priority:%d\n",pxmitframe->attrib.priority); */ + /* always return ndis_packet after rtw_xmitframe_coalesce */ + rtw_os_xmit_complete(padapter, pxmitframe); + + /* (len - TXDESC_SIZE) == pxmitframe->attrib.last_txcmdsz */ + update_txdesc(pxmitframe, pxmitframe->buf_addr, pxmitframe->attrib.last_txcmdsz, _TRUE); + + /* don't need xmitframe any more */ + rtw_free_xmitframe(pxmitpriv, pxmitframe); + + /* handle pointer and stop condition */ + pbuf_tail = pbuf + len; + pbuf = _RND8(pbuf_tail); + + + pfirstframe->agg_num++; +#ifdef CONFIG_TX_EARLY_MODE + pxmitpriv->agg_pkt[pfirstframe->agg_num - 1].offset = _RND8(len); + pxmitpriv->agg_pkt[pfirstframe->agg_num - 1].pkt_len = pxmitframe->attrib.last_txcmdsz; +#endif + if (MAX_TX_AGG_PACKET_NUMBER == pfirstframe->agg_num) + break; + + if (pbuf < bulkPtr) { + descCount++; + if (descCount == pHalData->UsbTxAggDescNum) + break; + } else { + descCount = 0; + bulkPtr = ((pbuf / bulkSize) + 1) * bulkSize; + } + } /* end while( aggregate same priority and same DA(AP or STA) frames) */ + if (_rtw_queue_empty(&ptxservq->sta_pending) == _TRUE) + rtw_list_delete(&ptxservq->tx_pending); + else if (single_sta_in_queue == _FALSE) { + /* Re-arrange the order of stations in this ac queue to balance the service for these stations */ + rtw_list_delete(&ptxservq->tx_pending); + rtw_list_insert_tail(&ptxservq->tx_pending, get_list_head(phwxmit->sta_queue)); + } + + _exit_critical_bh(&pxmitpriv->lock, &irqL); +agg_end: +#ifdef CONFIG_80211N_HT + if ((pfirstframe->attrib.ether_type != 0x0806) && + (pfirstframe->attrib.ether_type != 0x888e) && + (pfirstframe->attrib.ether_type != 0x88b4) && + (pfirstframe->attrib.dhcp_pkt != 1)) + rtw_issue_addbareq_cmd(padapter, pfirstframe); +#endif /* CONFIG_80211N_HT */ +#ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX + /* 3 3. update first frame txdesc */ + if ((PACKET_OFFSET_SZ != 0) && ((pbuf_tail % bulkSize) == 0)) { + /* remove pkt_offset */ + pbuf_tail -= PACKET_OFFSET_SZ; + pfirstframe->buf_addr += PACKET_OFFSET_SZ; + pfirstframe->pkt_offset--; + /* RTW_INFO("$$$$$ buf size equal to USB block size $$$$$$\n"); */ + } +#endif /* CONFIG_USE_USB_BUFFER_ALLOC_TX */ + + update_txdesc(pfirstframe, pfirstframe->buf_addr, pfirstframe->attrib.last_txcmdsz, _TRUE); + +#ifdef CONFIG_TX_EARLY_MODE + /* prepare EM info for first frame, agg_num value start from 1 */ + pxmitpriv->agg_pkt[0].offset = _RND8(pfirstframe->attrib.last_txcmdsz + TXDESC_SIZE + (pfirstframe->pkt_offset * PACKET_OFFSET_SZ)); + pxmitpriv->agg_pkt[0].pkt_len = pfirstframe->attrib.last_txcmdsz;/* get from rtw_xmitframe_coalesce */ + + UpdateEarlyModeInfo8812(pxmitpriv, pxmitbuf); +#endif + + /* 3 4. write xmit buffer to USB FIFO */ + ff_hwaddr = rtw_get_ff_hwaddr(pfirstframe); + /* RTW_INFO("%s ===================================== write port,buf_size(%d)\n",__FUNCTION__,pbuf_tail); */ + /* xmit address == ((xmit_frame*)pxmitbuf->priv_data)->buf_addr */ + +#ifdef CONFIG_XMIT_THREAD_MODE + pxmitbuf->len = pbuf_tail; + pxmitbuf->ff_hwaddr = ff_hwaddr; + + if (pfirstframe->attrib.qsel == QSLT_BEACON) + /* download rsvd page*/ + rtw_write_port(padapter, ff_hwaddr, pbuf_tail, (u8 *)pxmitbuf); + else + enqueue_pending_xmitbuf(pxmitpriv, pxmitbuf); +#else + rtw_write_port(padapter, ff_hwaddr, pbuf_tail, (u8 *)pxmitbuf); +#endif + + + /* 3 5. update statisitc */ + pbuf_tail -= (pfirstframe->agg_num * TXDESC_SIZE); + pbuf_tail -= (pfirstframe->pkt_offset * PACKET_OFFSET_SZ); + + + rtw_count_tx_stats(padapter, pfirstframe, pbuf_tail); + +#ifdef CONFIG_XMIT_THREAD_MODE + if (pfirstframe->attrib.qsel == QSLT_BEACON) +#endif + rtw_free_xmitframe(pxmitpriv, pfirstframe); + + return _TRUE; +} + +#else /* CONFIG_USB_TX_AGGREGATION */ + +s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf) +{ + + struct hw_xmit *phwxmits; + sint hwentry; + struct xmit_frame *pxmitframe = NULL; + int res = _SUCCESS, xcnt = 0; + + phwxmits = pxmitpriv->hwxmits; + hwentry = pxmitpriv->hwxmit_entry; + + + if (pxmitbuf == NULL) { + pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv); + if (!pxmitbuf) + return _FALSE; + } + + + do { + pxmitframe = rtw_dequeue_xframe(pxmitpriv, phwxmits, hwentry); + + if (pxmitframe) { + pxmitframe->pxmitbuf = pxmitbuf; + + pxmitframe->buf_addr = pxmitbuf->pbuf; + + pxmitbuf->priv_data = pxmitframe; + + if ((pxmitframe->frame_tag & 0x0f) == DATA_FRAMETAG) { + if (pxmitframe->attrib.priority <= 15) /* TID0~15 */ + res = rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe); + /* RTW_INFO("==> pxmitframe->attrib.priority:%d\n",pxmitframe->attrib.priority); */ + rtw_os_xmit_complete(padapter, pxmitframe);/* always return ndis_packet after rtw_xmitframe_coalesce */ + } + + + + + if (res == _SUCCESS) + rtw_dump_xframe(padapter, pxmitframe); + else { + rtw_free_xmitbuf(pxmitpriv, pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pxmitframe); + } + + xcnt++; + + } else { + rtw_free_xmitbuf(pxmitpriv, pxmitbuf); + return _FALSE; + } + + break; + + } while (0/*xcnt < (NR_XMITFRAME >> 3)*/); + + return _TRUE; + +} +#endif + + + +static s32 xmitframe_direct(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + s32 res = _SUCCESS; + /* RTW_INFO("==> %s\n",__FUNCTION__); */ + + res = rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe); + if (res == _SUCCESS) + rtw_dump_xframe(padapter, pxmitframe); + else + RTW_INFO("==> %s xmitframe_coalsece failed\n", __FUNCTION__); + + return res; +} + +/* + * Return + * _TRUE dump packet directly + * _FALSE enqueue packet + */ +static s32 pre_xmitframe(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + _irqL irqL; + s32 res; + struct xmit_buf *pxmitbuf = NULL; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + + _enter_critical_bh(&pxmitpriv->lock, &irqL); + + if (rtw_txframes_sta_ac_pending(padapter, pattrib) > 0) { + /* RTW_INFO("enqueue AC(%d)\n",pattrib->priority); */ + goto enqueue; + } + + if (rtw_xmit_ac_blocked(padapter) == _TRUE) + goto enqueue; + + if (DEV_STA_LG_NUM(padapter->dvobj)) + goto enqueue; + + pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv); + if (pxmitbuf == NULL) + goto enqueue; + + _exit_critical_bh(&pxmitpriv->lock, &irqL); + + pxmitframe->pxmitbuf = pxmitbuf; + pxmitframe->buf_addr = pxmitbuf->pbuf; + pxmitbuf->priv_data = pxmitframe; + + if (xmitframe_direct(padapter, pxmitframe) != _SUCCESS) { + rtw_free_xmitbuf(pxmitpriv, pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pxmitframe); + } + + return _TRUE; + +enqueue: + res = rtw_xmitframe_enqueue(padapter, pxmitframe); + _exit_critical_bh(&pxmitpriv->lock, &irqL); + + if (res != _SUCCESS) { + rtw_free_xmitframe(pxmitpriv, pxmitframe); + + pxmitpriv->tx_drop++; + return _TRUE; + } + + return _FALSE; +} + +s32 rtl8814au_mgnt_xmit(_adapter *padapter, struct xmit_frame *pmgntframe) +{ + return rtw_dump_xframe(padapter, pmgntframe); +} + +/* + * Return + * _TRUE dump packet directly ok + * _FALSE temporary can't transmit packets to hardware + */ +s32 rtl8814au_hal_xmit(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + return pre_xmitframe(padapter, pxmitframe); +} + +s32 rtl8814au_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + s32 err; + + err = rtw_xmitframe_enqueue(padapter, pxmitframe); + if (err != _SUCCESS) { + rtw_free_xmitframe(pxmitpriv, pxmitframe); + + pxmitpriv->tx_drop++; + } else { +#ifdef PLATFORM_LINUX + tasklet_hi_schedule(&pxmitpriv->xmit_tasklet); +#endif + } + + return err; + +} + + +#ifdef CONFIG_HOSTAPD_MLME + +static void rtl8814au_hostap_mgnt_xmit_cb(struct urb *urb) +{ +#ifdef PLATFORM_LINUX + struct sk_buff *skb = (struct sk_buff *)urb->context; + + /* RTW_INFO("%s\n", __FUNCTION__); */ + + rtw_skb_free(skb); +#endif +} + +s32 rtl8814au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) +{ +#ifdef PLATFORM_LINUX + u16 fc; + int rc, len, pipe; + unsigned int bmcst, tid, qsel; + struct sk_buff *skb, *pxmit_skb; + struct urb *urb; + unsigned char *pxmitbuf; + struct tx_desc *ptxdesc; + struct rtw_ieee80211_hdr *tx_hdr; + struct hostapd_priv *phostapdpriv = padapter->phostapdpriv; + struct net_device *pnetdev = padapter->pnetdev; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter); + + + /* RTW_INFO("%s\n", __FUNCTION__); */ + + skb = pkt; + + len = skb->len; + tx_hdr = (struct rtw_ieee80211_hdr *)(skb->data); + fc = le16_to_cpu(tx_hdr->frame_ctl); + bmcst = IS_MCAST(tx_hdr->addr1); + + if ((fc & RTW_IEEE80211_FCTL_FTYPE) != RTW_IEEE80211_FTYPE_MGMT) + goto _exit; + + pxmit_skb = rtw_skb_alloc(len + TXDESC_SIZE); + + if (!pxmit_skb) + goto _exit; + + pxmitbuf = pxmit_skb->data; + + urb = usb_alloc_urb(0, GFP_ATOMIC); + if (!urb) + goto _exit; + + /* ----- fill tx desc ----- */ + ptxdesc = (struct tx_desc *)pxmitbuf; + _rtw_memset(ptxdesc, 0, sizeof(*ptxdesc)); + + /* offset 0 */ + ptxdesc->txdw0 |= cpu_to_le32(len & 0x0000ffff); + ptxdesc->txdw0 |= cpu_to_le32(((TXDESC_SIZE + OFFSET_SZ) << OFFSET_SHT) & 0x00ff0000); /* default = 32 bytes for TX Desc */ + ptxdesc->txdw0 |= cpu_to_le32(OWN | FSG | LSG); + + if (bmcst) + ptxdesc->txdw0 |= cpu_to_le32(BIT(24)); + + /* offset 4 */ + ptxdesc->txdw1 |= cpu_to_le32(0x00);/* MAC_ID */ + + ptxdesc->txdw1 |= cpu_to_le32((0x12 << QSEL_SHT) & 0x00001f00); + + ptxdesc->txdw1 |= cpu_to_le32((0x06 << 16) & 0x000f0000); /* b mode */ + + /* offset 8 */ + + /* offset 12 */ + ptxdesc->txdw3 |= cpu_to_le32((le16_to_cpu(tx_hdr->seq_ctl) << 16) & 0xffff0000); + + /* offset 16 */ + ptxdesc->txdw4 |= cpu_to_le32(BIT(8));/* driver uses rate */ + + /* offset 20 */ + + + /* HW append seq */ + ptxdesc->txdw4 |= cpu_to_le32(BIT(7)); /* Hw set sequence number */ + ptxdesc->txdw3 |= cpu_to_le32((8 << 28)); /* set bit3 to 1. Suugested by TimChen. 2009.12.29. */ + + + rtl8188eu_cal_txdesc_chksum(ptxdesc); + /* ----- end of fill tx desc ----- */ + + /* */ + skb_put(pxmit_skb, len + TXDESC_SIZE); + pxmitbuf = pxmitbuf + TXDESC_SIZE; + _rtw_memcpy(pxmitbuf, skb->data, len); + + /* RTW_INFO("mgnt_xmit, len=%x\n", pxmit_skb->len); */ + + + /* ----- prepare urb for submit ----- */ + + /* translate DMA FIFO addr to pipehandle */ + /* pipe = ffaddr2pipehdl(pdvobj, MGT_QUEUE_INX); */ + pipe = usb_sndbulkpipe(pdvobj->pusbdev, pHalData->Queue2EPNum[(u8)MGT_QUEUE_INX] & 0x0f); + + usb_fill_bulk_urb(urb, pdvobj->pusbdev, pipe, + pxmit_skb->data, pxmit_skb->len, rtl8192cu_hostap_mgnt_xmit_cb, pxmit_skb); + + urb->transfer_flags |= URB_ZERO_PACKET; + usb_anchor_urb(urb, &phostapdpriv->anchored); + rc = usb_submit_urb(urb, GFP_ATOMIC); + if (rc < 0) { + usb_unanchor_urb(urb); + kfree_skb(skb); + } + usb_free_urb(urb); + + +_exit: + + rtw_skb_free(skb); + +#endif + + return 0; + +} +#endif diff --git a/hal/rtl8814a/usb/usb_halinit.c b/hal/rtl8814a/usb/usb_halinit.c new file mode 100644 index 0000000..b446b96 --- /dev/null +++ b/hal/rtl8814a/usb/usb_halinit.c @@ -0,0 +1,2047 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#define _HCI_HAL_INIT_C_ + +/* #include */ +#include + +#ifndef CONFIG_USB_HCI + + #error "CONFIG_USB_HCI shall be on!\n" + +#endif + +static void +_ConfigChipOutEP_8814( + PADAPTER pAdapter, + u8 NumOutPipe +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + + pHalData->OutEpQueueSel = 0; + pHalData->OutEpNumber = 0; + + switch (NumOutPipe) { + case 4: + pHalData->OutEpQueueSel = TX_SELE_HQ | TX_SELE_LQ | TX_SELE_NQ; + pHalData->OutEpNumber = 4; + break; + case 3: + pHalData->OutEpQueueSel = TX_SELE_HQ | TX_SELE_LQ | TX_SELE_NQ; + pHalData->OutEpNumber = 3; + break; + case 2: + pHalData->OutEpQueueSel = TX_SELE_HQ | TX_SELE_NQ; + pHalData->OutEpNumber = 2; + break; + case 1: + pHalData->OutEpQueueSel = TX_SELE_HQ; + pHalData->OutEpNumber = 1; + break; + default: + break; + + } + RTW_INFO("%s OutEpQueueSel(0x%02x), OutEpNumber(%d)\n", __FUNCTION__, pHalData->OutEpQueueSel, pHalData->OutEpNumber); + +} + +static BOOLEAN HalUsbSetQueuePipeMapping8814AUsb( + PADAPTER pAdapter, + u8 NumInPipe, + u8 NumOutPipe +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + BOOLEAN result = _FALSE; + + _ConfigChipOutEP_8814(pAdapter, NumOutPipe); + + /* Normal chip with one IN and one OUT doesn't have interrupt IN EP. */ + if (1 == pHalData->OutEpNumber) { + if (1 != NumInPipe) + return result; + } + + /* All config other than above support one Bulk IN and one Interrupt IN. */ + /* if(2 != NumInPipe){ */ + /* return result; */ + /* } */ + + result = Hal_MappingOutPipe(pAdapter, NumOutPipe); + + return result; + +} + +void rtl8814au_interface_configure(_adapter *padapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + + if (IS_SUPER_SPEED_USB(padapter)) { + pHalData->UsbBulkOutSize = USB_SUPER_SPEED_BULK_SIZE;/* 1024 bytes */ + } else if (IS_HIGH_SPEED_USB(padapter)) { + pHalData->UsbBulkOutSize = USB_HIGH_SPEED_BULK_SIZE;/* 512 bytes */ + } else { + pHalData->UsbBulkOutSize = USB_FULL_SPEED_BULK_SIZE;/* 64 bytes */ + } + +#ifdef CONFIG_USB_TX_AGGREGATION + pHalData->UsbTxAggMode = 1; + pHalData->UsbTxAggDescNum = 3; /* only 4 bits */ +#endif /* CONFIG_USB_TX_AGGREGATION */ + +#ifdef CONFIG_USB_RX_AGGREGATION + pHalData->rxagg_mode = RX_AGG_DMA; + pHalData->rxagg_usb_size = 8; /* unit: 512b */ + pHalData->rxagg_usb_timeout = 0x6; + pHalData->rxagg_dma_size = 16; /* uint: 128b, 0x0A = 10 = MAX_RX_DMA_BUFFER_SIZE/2/pHalData->UsbBulkOutSize */ + pHalData->rxagg_dma_timeout = 0x6; /* 6, absolute time = 34ms/(2^6) */ +#endif /* CONFIG_USB_RX_AGGREGATION */ + + HalUsbSetQueuePipeMapping8814AUsb(padapter, + pdvobjpriv->RtNumInPipes, pdvobjpriv->RtNumOutPipes); + +} + +static void +_InitBurstPktLen(PADAPTER Adapter) +{ + u8 u1bTmp; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + /* yx_qi 131128 move to 0x1448, 144c */ + rtw_write32(Adapter, REG_FAST_EDCA_VOVI_SETTING_8814A, 0x08070807); /* yx_qi 131128 */ + rtw_write32(Adapter, REG_FAST_EDCA_BEBK_SETTING_8814A, 0x08070807); /* yx_qi 131128 */ + + u1bTmp = rtw_read8(Adapter, 0xff); /* check device operation speed: SS 0xff bit7 */ + + if (u1bTmp & BIT7) /* USB2/1.1 Mode */ + pHalData->bSupportUSB3 = FALSE; + else /* USB3 Mode */ + pHalData->bSupportUSB3 = TRUE; + + if (pHalData->bSupportUSB3 == _FALSE) { /* USB2/1.1 Mode */ + if (pHalData->UsbBulkOutSize == 512) { + /* set burst pkt len=512B */ + rtw_write8(Adapter, REG_RXDMA_MODE_8814A, 0x1e); + } else { + /* set burst pkt len=64B */ + rtw_write8(Adapter, REG_RXDMA_MODE_8814A, 0x2e); + } + + rtw_write16(Adapter, REG_RXDMA_AGG_PG_TH_8814A, 0x2005); /* dmc agg th 20K */ + } else { /* USB3 Mode */ + /* set burst pkt len=1k */ + rtw_write8(Adapter, REG_RXDMA_MODE_8814A, 0x0e); + rtw_write16(Adapter, REG_RXDMA_AGG_PG_TH_8814A, 0x0a05); /* dmc agg th 20K */ + + /* set Reg 0xf008[3:4] to 2'00 to disable U1/U2 Mode to avoid 2.5G spur in USB3.0. added by page, 20120712 */ + rtw_write8(Adapter, 0xf008, rtw_read8(Adapter, 0xf008) & 0xE7); + /* to avoid usb 3.0 H2C fail */ + rtw_write16(Adapter, 0xf002, 0); + + rtw_write8(Adapter, REG_SW_AMPDU_BURST_MODE_CTRL_8814A, rtw_read8(Adapter, REG_SW_AMPDU_BURST_MODE_CTRL_8814A) & ~BIT(6)); + RTW_INFO("turn off the LDPC pre-TX\n"); + + } + + if (pHalData->AMPDUBurstMode) + rtw_write8(Adapter, REG_SW_AMPDU_BURST_MODE_CTRL_8814A, 0x5F); +} + + +void +_InitQueueReservedPage_8814AUsb( + PADAPTER Adapter +) +{ + struct registry_priv *pregistrypriv = &Adapter->registrypriv; + u16 txpktbuf_bndy; + + RTW_INFO("===>_InitQueueReservedPage_8814AUsb()\n"); + + /* ---- Set Fifo page for each Queue under Mac Direct LPBK nonsec mode ------------ */ + rtw_write32(Adapter, REG_FIFOPAGE_INFO_1_8814A, HPQ_PGNUM_8814A); + rtw_write32(Adapter, REG_FIFOPAGE_INFO_2_8814A, LPQ_PGNUM_8814A); + rtw_write32(Adapter, REG_FIFOPAGE_INFO_3_8814A, NPQ_PGNUM_8814A); + rtw_write32(Adapter, REG_FIFOPAGE_INFO_4_8814A, EPQ_PGNUM_8814A); + + rtw_write32(Adapter, REG_FIFOPAGE_INFO_5_8814A, PUB_PGNUM_8814A); + + rtw_write32(Adapter, REG_RQPN_CTRL_2_8814A, 0x80000000); + + if (!pregistrypriv->wifi_spec) + txpktbuf_bndy = TX_PAGE_BOUNDARY_8814A; + else /* for WMM */ + txpktbuf_bndy = WMM_NORMAL_TX_PAGE_BOUNDARY_8814A; + + /* Set page boundary and header */ + rtw_write16(Adapter, REG_TXPKTBUF_BCNQ_BDNY_8814A, txpktbuf_bndy); + rtw_write16(Adapter, REG_TXPKTBUF_BCNQ1_BDNY_8814A, txpktbuf_bndy); + rtw_write16(Adapter, REG_MGQ_PGBNDY_8814A, txpktbuf_bndy); + + /* Set The head page of packet of Bcnq */ + rtw_write16(Adapter, REG_FIFOPAGE_CTRL_2_8814A, txpktbuf_bndy); + /* The head page of packet of Bcnq1 */ + rtw_write16(Adapter, REG_FIFOPAGE_CTRL_2_8814A + 2, txpktbuf_bndy); + + RTW_INFO("<===_InitQueueReservedPage_8814AUsb()\n"); +} + + +static u32 _InitPowerOn_8814AU(_adapter *padapter) +{ + int status = _SUCCESS; + u16 u2btmp = 0; + + /* YX sugguested 2014.06.03 */ + u8 u1btmp = rtw_read8(padapter, 0x10C2); + rtw_write8(padapter, 0x10C2, (u1btmp | BIT1)); + + if (!HalPwrSeqCmdParsing(padapter, (u8)(~PWR_CUT_TESTCHIP_MSK), PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, Rtl8814A_NIC_ENABLE_FLOW)) + return _FAIL; + + + /* Enable MAC DMA/WMAC/SCHEDULE/SEC block */ + /* Set CR bit10 to enable 32k calibration. Suggested by SD1 Gimmy. Added by tynli. 2011.08.31. */ + rtw_write16(padapter, REG_CR_8814A, 0x00); /* suggseted by zhouzhou, by page, 20111230 */ + u2btmp = PlatformEFIORead2Byte(padapter, REG_CR_8814A); + u2btmp |= (HCI_TXDMA_EN | HCI_RXDMA_EN | TXDMA_EN | RXDMA_EN + | PROTOCOL_EN | SCHEDULE_EN | ENSEC | CALTMR_EN); + rtw_write16(padapter, REG_CR_8814A, u2btmp); + + _InitQueueReservedPage_8814AUsb(padapter); + return status; +} + + + + + +/* --------------------------------------------------------------- + * + * MAC init functions + * + * --------------------------------------------------------------- */ + +/* Shall USB interface init this? */ +static void +_InitInterrupt_8814AU( + PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + /* HIMR */ + rtw_write32(Adapter, REG_HIMR0_8814A, pHalData->IntrMask[0] & 0xFFFFFFFF); + rtw_write32(Adapter, REG_HIMR1_8814A, pHalData->IntrMask[1] & 0xFFFFFFFF); +} + +static void +_InitPageBoundary_8814AUsb( + PADAPTER Adapter +) +{ + /* 20130416 KaiYuan modified for 8814 */ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + rtw_write16(Adapter, REG_RXFF_PTR_8814A, RX_DMA_BOUNDARY_8814A); /*yx_qi 20140331*/ + +} + + +static void +_InitNormalChipRegPriority_8814AUsb( + PADAPTER Adapter, + u16 beQ, + u16 bkQ, + u16 viQ, + u16 voQ, + u16 mgtQ, + u16 hiQ +) +{ + u16 value16 = (PlatformEFIORead2Byte(Adapter, REG_TRXDMA_CTRL_8814A) & 0x7); + + value16 |= _TXDMA_BEQ_MAP(beQ) | _TXDMA_BKQ_MAP(bkQ) | + _TXDMA_VIQ_MAP(viQ) | _TXDMA_VOQ_MAP(voQ) | + _TXDMA_MGQ_MAP(mgtQ) | _TXDMA_HIQ_MAP(hiQ) | BIT2; + + rtw_write16(Adapter, REG_TRXDMA_CTRL_8814A, value16); +} + +static void +_InitNormalChipTwoOutEpPriority_8814AUsb( + PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct registry_priv *pregistrypriv = &Adapter->registrypriv; + u16 beQ, bkQ, viQ, voQ, mgtQ, hiQ; + + + u16 valueHi = 0; + u16 valueLow = 0; + + switch (pHalData->OutEpQueueSel) { + case (TX_SELE_HQ | TX_SELE_LQ): + valueHi = QUEUE_HIGH; + valueLow = QUEUE_LOW; + break; + case (TX_SELE_NQ | TX_SELE_LQ): + valueHi = QUEUE_NORMAL; + valueLow = QUEUE_LOW; + break; + case (TX_SELE_HQ | TX_SELE_NQ): + valueHi = QUEUE_HIGH; + valueLow = QUEUE_NORMAL; + break; + default: + valueHi = QUEUE_HIGH; + valueLow = QUEUE_NORMAL; + break; + } + + if (!pregistrypriv->wifi_spec) { + beQ = valueLow; + bkQ = valueLow; + viQ = valueHi; + voQ = valueHi; + mgtQ = valueHi; + hiQ = valueHi; + } else { /* for WMM ,CONFIG_OUT_EP_WIFI_MODE */ + beQ = valueLow; + bkQ = valueHi; + viQ = valueHi; + voQ = valueLow; + mgtQ = valueHi; + hiQ = valueHi; + } + + _InitNormalChipRegPriority_8814AUsb(Adapter, beQ, bkQ, viQ, voQ, mgtQ, hiQ); +} + +static void +_InitNormalChipThreeOutEpPriority_8814AUsb( + PADAPTER Adapter +) +{ + struct registry_priv *pregistrypriv = &Adapter->registrypriv; + u16 beQ, bkQ, viQ, voQ, mgtQ, hiQ; + + if (!pregistrypriv->wifi_spec) { /* typical setting */ + beQ = QUEUE_LOW; + bkQ = QUEUE_LOW; + viQ = QUEUE_NORMAL; + voQ = QUEUE_HIGH; + mgtQ = QUEUE_HIGH; + hiQ = QUEUE_HIGH; + } else { /* for WMM */ + beQ = QUEUE_LOW; + bkQ = QUEUE_NORMAL; + viQ = QUEUE_NORMAL; + voQ = QUEUE_HIGH; + mgtQ = QUEUE_HIGH; + hiQ = QUEUE_HIGH; + } + _InitNormalChipRegPriority_8814AUsb(Adapter, beQ, bkQ, viQ, voQ, mgtQ, hiQ); +} + +static void +_InitQueuePriority_8814AUsb( + PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + switch (pHalData->OutEpNumber) { + case 2: + _InitNormalChipTwoOutEpPriority_8814AUsb(Adapter); + break; + case 3: + case 4: + _InitNormalChipThreeOutEpPriority_8814AUsb(Adapter); + break; + default: + RTW_INFO("_InitQueuePriority_8812AUsb(): Shall not reach here!\n"); + break; + } +} + + + +static void +_InitHardwareDropIncorrectBulkOut_8814A( + PADAPTER Adapter +) +{ +#ifdef ENABLE_USB_DROP_INCORRECT_OUT + u32 value32 = rtw_read32(Adapter, REG_TXDMA_OFFSET_CHK); + value32 |= DROP_DATA_EN; + rtw_write32(Adapter, REG_TXDMA_OFFSET_CHK, value32); +#endif /* ENABLE_USB_DROP_INCORRECT_OUT */ +} + +static void +_InitNetworkType_8814A( + PADAPTER Adapter +) +{ + u32 value32; + + value32 = rtw_read32(Adapter, REG_CR); + /* TODO: use the other function to set network type */ + value32 = (value32 & ~MASK_NETTYPE) | _NETTYPE(NT_LINK_AP); + + rtw_write32(Adapter, REG_CR, value32); +} + +static void +_InitTransferPageSize_8814AUsb( + PADAPTER Adapter +) +{ + /* 8814 doesn't need this by Alex */ +} + +static void +_InitDriverInfoSize_8814A( + PADAPTER Adapter, + u8 drvInfoSize +) +{ + rtw_write8(Adapter, REG_RX_DRVINFO_SZ, drvInfoSize); +} +#if 0 +/* static void + * _InitWMACSetting_8814A( */ +/* PADAPTER Adapter */ +/* ) */ +{ + /* u32 value32; */ + u16 value16; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u32 rcr; + + /* rcr = AAP | APM | AM | AB | APP_ICV | ADF | AMF | APP_FCS | HTC_LOC_CTRL | APP_MIC | APP_PHYSTS; */ + rcr = + RCR_APM | RCR_AM | RCR_AB | RCR_CBSSID_DATA | RCR_CBSSID_BCN | RCR_APP_ICV | RCR_AMF | RCR_HTC_LOC_CTRL | RCR_APP_MIC | RCR_APP_PHYST_RXFF; + +#if (1 == RTL8812A_RX_PACKET_INCLUDE_CRC) + rcr |= ACRC32; +#endif /* (1 == RTL8812A_RX_PACKET_INCLUDE_CRC) */ + +#ifdef CONFIG_RX_PACKET_APPEND_FCS + rcr |= RCR_APPFCS; +#endif /* CONFIG_RX_PACKET_APPEND_FCS */ + + rcr |= FORCEACK; + + rtw_hal_set_hwreg(Adapter, HW_VAR_RCR, (u8 *)&rcr); + + /* Accept all multicast address */ + rtw_write32(Adapter, REG_MAR, 0xFFFFFFFF); + rtw_write32(Adapter, REG_MAR + 4, 0xFFFFFFFF); + + + /* Accept all data frames */ + /* value16 = 0xFFFF; */ + /* rtw_write16(Adapter, REG_RXFLTMAP2, value16); */ + + /* 2010.09.08 hpfan */ + /* Since ADF is removed from RCR, ps-poll will not be indicate to driver, */ + /* RxFilterMap should mask ps-poll to gurantee AP mode can rx ps-poll. */ + value16 = BIT10; +#ifdef CONFIG_BEAMFORMING + /* NDPA packet subtype is 0x0101 */ + value16 |= BIT5; +#endif + rtw_write16(Adapter, REG_RXFLTMAP1, value16); + + /* Accept all management frames */ + /* value16 = 0xFFFF; */ + /* rtw_write16(Adapter, REG_RXFLTMAP0, value16); */ + + /* enable RX_SHIFT bits */ + /* rtw_write8(Adapter, REG_TRXDMA_CTRL, rtw_read8(Adapter, REG_TRXDMA_CTRL)|BIT(1)); */ + +} +#endif + +/* old _InitWMACSetting_8812A + _InitAdaptiveCtrl_8812AUsb = new _InitMacConfigure_8814A */ +static void +_InitMacConfigure_8814A( + PADAPTER Adapter +) +{ + u16 value16; + u32 regRRSR; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u32 rcr; + + switch (Adapter->registrypriv.wireless_mode) { + case WIRELESS_11B: + regRRSR = RATE_ALL_CCK; + break; + + case WIRELESS_11G: + case WIRELESS_11A: + case WIRELESS_11_5N: + case WIRELESS_11A_5N: /* Todo: no basic rate for ofdm ? */ + case WIRELESS_11_5AC: + regRRSR = RATE_ALL_OFDM_AG; + break; + + case WIRELESS_11BG: + case WIRELESS_11G_24N: + case WIRELESS_11_24N: + case WIRELESS_11BG_24N: + default: + regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; + break; + + } + + /* Init value for RRSR. */ + rtw_phydm_set_rrsr(Adapter, regRRSR, TRUE); + + + /* Retry Limit */ + value16 = BIT_LRL(RL_VAL_STA) | BIT_SRL(RL_VAL_STA); + rtw_write16(Adapter, REG_RETRY_LIMIT, value16); + + rcr = RCR_APM | RCR_AM | RCR_AB | RCR_CBSSID_DATA | RCR_CBSSID_BCN | RCR_APP_ICV | RCR_AMF | RCR_HTC_LOC_CTRL | RCR_APP_MIC | RCR_APP_PHYST_RXFF; + rcr |= FORCEACK; +#if (1 == RTL8812A_RX_PACKET_INCLUDE_CRC) + rcr |= ACRC32; +#endif /* (1 == RTL8812A_RX_PACKET_INCLUDE_CRC) */ + +#ifdef CONFIG_RX_PACKET_APPEND_FCS + rcr |= RCR_APPFCS; +#endif /* CONFIG_RX_PACKET_APPEND_FCS */ + rtw_hal_set_hwreg(Adapter, HW_VAR_RCR, (u8 *)&rcr); + + /* 2010.09.08 hpfan */ + /* Since ADF is removed from RCR, ps-poll will not be indicate to driver, */ + /* RxFilterMap should mask ps-poll to gurantee AP mode can rx ps-poll. */ + value16 = BIT10; +#ifdef CONFIG_BEAMFORMING + /* NDPA packet subtype is 0x0101 */ + value16 |= BIT5; +#endif /*CONFIG_BEAMFORMING*/ + rtw_write16(Adapter, REG_RXFLTMAP1, value16); + + /* 201409/25 MH When RA is enabled, we need to reduce the value. */ + rtw_write8(Adapter, REG_MAX_AGGR_NUM_8814A, 0x36); + rtw_write8(Adapter, REG_RTS_MAX_AGGR_NUM_8814A, 0x36); + +} + +static void +_InitEDCA_8814AUsb( + PADAPTER Adapter +) +{ + /* Set Spec SIFS (used in NAV) */ + rtw_write16(Adapter, REG_SPEC_SIFS, 0x100a); + rtw_write16(Adapter, REG_MAC_SPEC_SIFS, 0x100a); + + /* Set SIFS for CCK */ + rtw_write16(Adapter, REG_SIFS_CTX, 0x100a); + + /* Set SIFS for OFDM */ + rtw_write16(Adapter, REG_SIFS_TRX, 0x100a); + + /* TXOP */ + rtw_write32(Adapter, REG_EDCA_BE_PARAM, 0x005EA42B); + rtw_write32(Adapter, REG_EDCA_BK_PARAM, 0x0000A44F); + rtw_write32(Adapter, REG_EDCA_VI_PARAM, 0x005EA324); + rtw_write32(Adapter, REG_EDCA_VO_PARAM, 0x002FA226); + + /* 0x50 for 80MHz clock */ + /* rtw_write8(Adapter, REG_USTIME_TSF, 0x50); */ + /* rtw_write8(Adapter, REG_USTIME_EDCA, 0x50); */ +} + + +static void +_InitBeaconMaxError_8814A( + PADAPTER Adapter, + BOOLEAN InfraMode +) +{ +#ifdef CONFIG_ADHOC_WORKAROUND_SETTING + rtw_write8(Adapter, REG_BCN_MAX_ERR, 0xFF); +#else + /* rtw_write8(Adapter, REG_BCN_MAX_ERR, (InfraMode ? 0xFF : 0x10)); */ +#endif +} + + +#ifdef CONFIG_RTW_LED +static void _InitHWLed(PADAPTER Adapter) +{ + struct led_priv *pledpriv = adapter_to_led(Adapter); + + if (pledpriv->LedStrategy != HW_LED) + return; + + /* HW led control + * to do .... + * must consider cases of antenna diversity/ commbo card/solo card/mini card */ + +} +#endif /* CONFIG_RTW_LED */ + +/* +static void +_InitRDGSetting_8812A( + PADAPTER Adapter + ) +{ + rtw_write8(Adapter,REG_RD_CTRL,0xFF); + rtw_write16(Adapter, REG_RD_NAV_NXT, 0x200); + rtw_write8(Adapter,REG_RD_RESP_PKT_TH,0x05); +}*/ + +static void +_InitRetryFunction_8814A( + PADAPTER Adapter +) +{ + u8 value8; + + value8 = rtw_read8(Adapter, REG_FWHW_TXQ_CTRL); + value8 |= EN_AMPDU_RTY_NEW; + rtw_write8(Adapter, REG_FWHW_TXQ_CTRL, value8); + + /* Set ACK timeout */ + /* rtw_write8(Adapter, REG_ACKTO, 0x40); */ /* masked by page for BCM IOT issue temporally */ + rtw_write8(Adapter, REG_ACKTO, 0x80); +} + +/*----------------------------------------------------------------------------- + * Function: usb_AggSettingTxUpdate() + * + * Overview: Seperate TX/RX parameters update independent for TP detection and + * dynamic TX/RX aggreagtion parameters update. + * + * Input: PADAPTER + * + * Output/Return: NONE + * + * Revised History: + * When Who Remark + * 12/10/2010 MHC Seperate to smaller function. + * + *---------------------------------------------------------------------------*/ +static void +usb_AggSettingTxUpdate_8814A( + PADAPTER Adapter +) +{ +#ifdef CONFIG_USB_TX_AGGREGATION + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u32 value32; + + if (Adapter->registrypriv.wifi_spec) + pHalData->UsbTxAggDescNum = 1; + + if (pHalData->UsbTxAggMode) { + value32 = rtw_read32(Adapter, REG_TDECTRL); + value32 = value32 & ~(BLK_DESC_NUM_MASK << BLK_DESC_NUM_SHIFT); + value32 |= ((pHalData->UsbTxAggDescNum & BLK_DESC_NUM_MASK) << BLK_DESC_NUM_SHIFT); + + rtw_write32(Adapter, REG_TDECTRL, value32); + rtw_write8(Adapter, REG_TDECTRL + 3, pHalData->UsbTxAggDescNum << 1); + } + +#endif /* CONFIG_USB_TX_AGGREGATION */ +} /* usb_AggSettingTxUpdate */ + + +/*----------------------------------------------------------------------------- + * Function: usb_AggSettingRxUpdate() + * + * Overview: Seperate TX/RX parameters update independent for TP detection and + * dynamic TX/RX aggreagtion parameters update. + * + * Input: PADAPTER + * + * Output/Return: NONE + * + * Revised History: + * When Who Remark + * 12/10/2010 MHC Seperate to smaller function. + * + *---------------------------------------------------------------------------*/ +static void +usb_AggSettingRxUpdate_8814A( + PADAPTER Adapter +) +{ +#ifdef CONFIG_USB_RX_AGGREGATION + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 valueDMA; + u8 valueUSB; + + valueDMA = rtw_read8(Adapter, REG_TRXDMA_CTRL_8814A); + valueUSB = rtw_read8(Adapter, REG_RXDMA_AGG_PG_TH_8814A + 3); + switch (pHalData->rxagg_mode) { + case RX_AGG_DMA: + valueDMA |= RXDMA_AGG_EN; + valueUSB &= ~USB_AGG_EN_8814A; + break; + case RX_AGG_USB: + valueDMA &= ~RXDMA_AGG_EN; + valueUSB |= USB_AGG_EN_8814A; + break; + case RX_AGG_MIX: + valueDMA |= RXDMA_AGG_EN; + valueUSB |= USB_AGG_EN_8814A; + break; + case RX_AGG_DISABLE: + default: + valueDMA &= ~RXDMA_AGG_EN; + valueUSB &= ~USB_AGG_EN_8814A; + break; + } + + rtw_write8(Adapter, REG_TRXDMA_CTRL_8814A, valueDMA); + rtw_write8(Adapter, REG_RXDMA_AGG_PG_TH_8814A + 3, valueUSB); /* yx_qi 131128 */ +#endif /* CONFIG_USB_RX_AGGREGATION */ +} /* usb_AggSettingRxUpdate */ + +static void +init_UsbAggregationSetting_8814A( + PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + /* Tx aggregation setting */ + usb_AggSettingTxUpdate_8814A(Adapter); + + /* Rx aggregation setting */ + usb_AggSettingRxUpdate_8814A(Adapter); + + /* 201/12/10 MH Add for USB agg mode dynamic switch. */ + pHalData->UsbRxHighSpeedMode = _FALSE; + pHalData->UsbTxVeryHighSpeedMode = _FALSE; +} + +/*----------------------------------------------------------------------------- + * Function: USB_AggModeSwitch() + * + * Overview: When RX traffic is more than 40M, we need to adjust some parameters to increase + * RX speed by increasing batch indication size. This will decrease TCP ACK speed, we + * need to monitor the influence of FTP/network share. + * For TX mode, we are still ubder investigation. + * + * Input: PADAPTER + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 12/10/2010 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +void +USB_AggModeSwitch( + PADAPTER Adapter +) +{ +#if 0 + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); + + /* pHalData->UsbRxHighSpeedMode = _FALSE; */ + /* How to measure the RX speed? We assume that when traffic is more than */ + if (pMgntInfo->bRegAggDMEnable == _FALSE) { + return; /* Inf not support. */ + } + + + if (pMgntInfo->LinkDetectInfo.bHigherBusyRxTraffic == _TRUE && + pHalData->UsbRxHighSpeedMode == _FALSE) { + pHalData->UsbRxHighSpeedMode = _TRUE; + } else if (pMgntInfo->LinkDetectInfo.bHigherBusyRxTraffic == _FALSE && + pHalData->UsbRxHighSpeedMode == _TRUE) { + pHalData->UsbRxHighSpeedMode = _FALSE; + } else + return; + + +#if USB_RX_AGGREGATION_92C + if (pHalData->UsbRxHighSpeedMode == _TRUE) { + /* 2010/12/10 MH The parameter is tested by SD1 engineer and SD3 channel emulator. */ + /* USB mode */ +#if (RT_PLATFORM == PLATFORM_LINUX) + if (pMgntInfo->LinkDetectInfo.bTxBusyTraffic) { + pHalData->RxAggBlockCount = 16; + pHalData->RxAggBlockTimeout = 7; + } else +#endif + { + pHalData->RxAggBlockCount = 40; + pHalData->RxAggBlockTimeout = 5; + } + /* Mix mode */ + pHalData->RxAggPageCount = 72; + pHalData->RxAggPageTimeout = 6; + } else { + /* USB mode */ + pHalData->RxAggBlockCount = pMgntInfo->RegRxAggBlockCount; + pHalData->RxAggBlockTimeout = pMgntInfo->RegRxAggBlockTimeout; + /* Mix mode */ + pHalData->RxAggPageCount = pMgntInfo->RegRxAggPageCount; + pHalData->RxAggPageTimeout = pMgntInfo->RegRxAggPageTimeout; + } + + if (pHalData->RxAggBlockCount > MAX_RX_AGG_BLKCNT) + pHalData->RxAggBlockCount = MAX_RX_AGG_BLKCNT; +#if (OS_WIN_FROM_VISTA(OS_VERSION)) || (RT_PLATFORM == PLATFORM_LINUX) /* do not support WINXP to prevent usbehci.sys BSOD */ + if (IS_WIRELESS_MODE_N_24G(Adapter) || IS_WIRELESS_MODE_N_5G(Adapter)) { + /* */ + /* 2010/12/24 MH According to V1012 QC IOT test, XP BSOD happen when running chariot test */ + /* with the aggregation dynamic change!! We need to disable the function to prevent it is broken */ + /* in usbehci.sys. */ + /* */ + usb_AggSettingRxUpdate_8188E(Adapter); + + /* 2010/12/27 MH According to designer's suggstion, we can only modify Timeout value. Otheriwse */ + /* there might many HW incorrect behavior, the XP BSOD at usbehci.sys may be relative to the */ + /* issue. Base on the newest test, we can not enable block cnt > 30, otherwise XP usbehci.sys may */ + /* BSOD. */ + } +#endif + +#endif +#endif +} /* USB_AggModeSwitch */ + + +#if 0 +/* static void _BBTurnOnBlock( */ +/* PADAPTER Adapter */ +/* ) */ +{ +#if (DISABLE_BB_RF) + return; +#endif + + phy_set_bb_reg(Adapter, rFPGA0_RFMOD, bCCKEn, 0x1); + phy_set_bb_reg(Adapter, rFPGA0_RFMOD, bOFDMEn, 0x1); +} +#endif + + +/* + * 2010/08/26 MH Add for selective suspend mode check. + * If Efuse 0x0e bit1 is not enabled, we can not support selective suspend for Minicard and + * slim card. + * */ +#if 0 +static void +HalDetectSelectiveSuspendMode( + PADAPTER Adapter +) +{ + u8 tmpvalue; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(Adapter); + + /* If support HW radio detect, we need to enable WOL ability, otherwise, we */ + /* can not use FW to notify host the power state switch. */ + + EFUSE_ShadowRead(Adapter, 1, EEPROM_USB_OPTIONAL1, (u32 *)&tmpvalue); + + RTW_INFO("HalDetectSelectiveSuspendMode(): SS "); + if (tmpvalue & BIT1) + RTW_INFO("Enable\n"); + else { + RTW_INFO("Disable\n"); + pdvobjpriv->RegUsbSS = _FALSE; + } + + /* 2010/09/01 MH According to Dongle Selective Suspend INF. We can switch SS mode. */ + if (pdvobjpriv->RegUsbSS && !SUPPORT_HW_RADIO_DETECT(pHalData)) { + /* PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); */ + + /* if (!pMgntInfo->bRegDongleSS) */ + /* { */ + pdvobjpriv->RegUsbSS = _FALSE; + /* } */ + } +} /* HalDetectSelectiveSuspendMode */ +#endif + +rt_rf_power_state RfOnOffDetect(PADAPTER pAdapter) +{ + rt_rf_power_state rfpowerstate = rf_on; + + return rfpowerstate; +} /* HalDetectPwrDownMode */ + +void _ps_open_RF(_adapter *padapter) +{ + /* here call with bRegSSPwrLvl 1, bRegSSPwrLvl 2 needs to be verified */ + /* phy_SsPwrSwitch92CU(padapter, rf_on, 1); */ +} + +void _ps_close_RF(_adapter *padapter) +{ + /* here call with bRegSSPwrLvl 1, bRegSSPwrLvl 2 needs to be verified */ + /* phy_SsPwrSwitch92CU(padapter, rf_off, 1); */ +} + + +/* A lightweight deinit function */ +static void rtl8814au_hw_reset(_adapter *Adapter) +{ +#if 0 + u8 reg_val = 0; + if (rtw_read8(Adapter, REG_MCUFWDL) & BIT7) { + _8051Reset8812(Adapter); + rtw_write8(Adapter, REG_MCUFWDL, 0x00); + /* before BB reset should do clock gated */ + rtw_write32(Adapter, rFPGA0_XCD_RFPara, + rtw_read32(Adapter, rFPGA0_XCD_RFPara) | (BIT6)); + /* reset BB */ + reg_val = rtw_read8(Adapter, REG_SYS_FUNC_EN); + reg_val &= ~(BIT(0) | BIT(1)); + rtw_write8(Adapter, REG_SYS_FUNC_EN, reg_val); + /* reset RF */ + rtw_write8(Adapter, REG_RF_CTRL, 0); + /* reset TRX path */ + rtw_write16(Adapter, REG_CR, 0); + /* reset MAC */ + reg_val = rtw_read8(Adapter, REG_APS_FSMCO + 1); + reg_val |= BIT(1); + reg_val = rtw_write8(Adapter, REG_APS_FSMCO + 1, reg_val); /* reg0x5[1] ,auto FSM off */ + + reg_val = rtw_read8(Adapter, REG_APS_FSMCO + 1); + + /* check if reg0x5[1] auto cleared */ + while (reg_val & BIT(1)) { + rtw_udelay_os(1); + reg_val = rtw_read8(Adapter, REG_APS_FSMCO + 1); + } + reg_val |= BIT(0); + reg_val = rtw_write8(Adapter, REG_APS_FSMCO + 1, reg_val); /* reg0x5[0] ,auto FSM on */ + + reg_val = rtw_read8(Adapter, REG_SYS_FUNC_EN + 1); + reg_val &= ~(BIT(4) | BIT(7)); + rtw_write8(Adapter, REG_SYS_FUNC_EN + 1, reg_val); + reg_val = rtw_read8(Adapter, REG_SYS_FUNC_EN + 1); + reg_val |= BIT(4) | BIT(7); + rtw_write8(Adapter, REG_SYS_FUNC_EN + 1, reg_val); + } +#endif /* 0 */ +} + +u32 rtl8814au_hal_init(PADAPTER Adapter) +{ + u8 value8 = 0, u1bRegCR; + u16 value16; + u8 txpktbuf_bndy; + u32 status = _SUCCESS; + u32 NavUpper = WiFiNavUpperUs; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(Adapter); + struct registry_priv *pregistrypriv = &Adapter->registrypriv; + + rt_rf_power_state eRfPowerStateToSet; + + systime init_start_time = rtw_get_current_time(); + + +#ifdef DBG_HAL_INIT_PROFILING + + enum HAL_INIT_STAGES { + HAL_INIT_STAGES_BEGIN = 0, + HAL_INIT_STAGES_INIT_PW_ON, + HAL_INIT_STAGES_INIT_LLTT, + HAL_INIT_STAGES_DOWNLOAD_FW, + HAL_INIT_STAGES_MAC, + HAL_INIT_STAGES_MISC01, + HAL_INIT_STAGES_MISC02, + HAL_INIT_STAGES_BB, + HAL_INIT_STAGES_RF, + HAL_INIT_STAGES_TURN_ON_BLOCK, + HAL_INIT_STAGES_INIT_SECURITY, + HAL_INIT_STAGES_MISC11, + HAL_INIT_STAGES_INIT_HAL_DM, + /* HAL_INIT_STAGES_RF_PS, */ + HAL_INIT_STAGES_IQK, + HAL_INIT_STAGES_PW_TRACK, + HAL_INIT_STAGES_LCK, + HAL_INIT_STAGES_MISC21, + /* HAL_INIT_STAGES_INIT_PABIAS, */ +#ifdef CONFIG_BT_COEXIST + HAL_INIT_STAGES_BT_COEXIST, +#endif + /* HAL_INIT_STAGES_ANTENNA_SEL, */ + HAL_INIT_STAGES_MISC31, + HAL_INIT_STAGES_END, + HAL_INIT_STAGES_NUM + }; + + char *hal_init_stages_str[] = { + "HAL_INIT_STAGES_BEGIN", + "HAL_INIT_STAGES_INIT_PW_ON", + "HAL_INIT_STAGES_INIT_LLTT", + "HAL_INIT_STAGES_DOWNLOAD_FW", + "HAL_INIT_STAGES_MAC", + "HAL_INIT_STAGES_MISC01", + "HAL_INIT_STAGES_MISC02", + "HAL_INIT_STAGES_BB", + "HAL_INIT_STAGES_RF", + "HAL_INIT_STAGES_TURN_ON_BLOCK", + "HAL_INIT_STAGES_INIT_SECURITY", + "HAL_INIT_STAGES_MISC11", + "HAL_INIT_STAGES_INIT_HAL_DM", + /* "HAL_INIT_STAGES_RF_PS", */ + "HAL_INIT_STAGES_IQK", + "HAL_INIT_STAGES_PW_TRACK", + "HAL_INIT_STAGES_LCK", + "HAL_INIT_STAGES_MISC21", +#ifdef CONFIG_BT_COEXIST + "HAL_INIT_STAGES_BT_COEXIST", +#endif + /* "HAL_INIT_STAGES_ANTENNA_SEL", */ + "HAL_INIT_STAGES_MISC31", + "HAL_INIT_STAGES_END", + }; + + int hal_init_profiling_i; + systime hal_init_stages_timestamp[HAL_INIT_STAGES_NUM]; /* used to record the time of each stage's starting point */ + + for (hal_init_profiling_i = 0; hal_init_profiling_i < HAL_INIT_STAGES_NUM; hal_init_profiling_i++) + hal_init_stages_timestamp[hal_init_profiling_i] = 0; + +#define HAL_INIT_PROFILE_TAG(stage) do { hal_init_stages_timestamp[(stage)] = rtw_get_current_time(); } while (0) +#else /* DBG_HAL_INIT_PROFILING */ +#define HAL_INIT_PROFILE_TAG(stage) do {} while (0) +#endif /* DBG_HAL_INIT_PROFILING */ + + + + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BEGIN); + if (pwrctrlpriv->bkeepfwalive) { + _ps_open_RF(Adapter); + + if (pHalData->bIQKInitialized) { + /* phy_iq_calibrate_8812a(Adapter,_TRUE); */ + } else { + /* phy_iq_calibrate_8812a(Adapter,_FALSE); */ + /* pHalData->bIQKInitialized = _TRUE; */ + } + + /* odm_txpowertracking_check(&pHalData->odmpriv ); */ + /* phy_lc_calibrate_8812a(Adapter); */ + + goto exit; + } + + /* Check if MAC has already power on. by tynli. 2011.05.27. */ + value8 = rtw_read8(Adapter, REG_SYS_CLKR + 1); + u1bRegCR = rtw_read8(Adapter, REG_CR); + RTW_INFO(" power-on :REG_SYS_CLKR 0x09=0x%02x. REG_CR 0x100=0x%02x.\n", value8, u1bRegCR); + if ((value8 & BIT3) && (u1bRegCR != 0 && u1bRegCR != 0xEA)) { + /* pHalData->bMACFuncEnable = _TRUE; */ + RTW_INFO(" MAC has already power on.\n"); + } else { + /* pHalData->bMACFuncEnable = _FALSE; */ + /* Set FwPSState to ALL_ON mode to prevent from the I/O be return because of 32k */ + /* state which is set before sleep under wowlan mode. 2012.01.04. by tynli. */ + /* pHalData->FwPSState = FW_PS_STATE_ALL_ON_88E; */ + RTW_INFO(" MAC has not been powered on yet.\n"); + } + + /* */ + /* 2012/11/13 MH Revise for U2/U3 switch we can not update RF-A/B reset. */ + /* After discuss with BB team YN, reset after MAC power on to prevent RF */ + /* R/W error. Is it a right method? */ + /* */ + /*if(!IS_HARDWARE_TYPE_8821(Adapter)) + { + rtw_write8(Adapter, REG_RF_CTRL, 5); + rtw_write8(Adapter, REG_RF_CTRL, 7); + rtw_write8(Adapter, REG_RF_B_CTRL_8812, 5); + rtw_write8(Adapter, REG_RF_B_CTRL_8812, 7); + }*/ + + /* + If HW didn't go through a complete de-initial procedure, + it probably occurs some problem for double initial procedure. + Like "CONFIG_DEINIT_BEFORE_INIT" in 92du chip + */ + rtl8814au_hw_reset(Adapter); /* todo */ + + + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_PW_ON); + status = rtw_hal_power_on(Adapter); + if (status == _FAIL) { + RTW_INFO("Failed to init power on!\n"); + goto exit; + } + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_LLTT); + + status = InitLLTTable8814A(Adapter); + if (status == _FAIL) { + RTW_INFO("Failed to init LLT table\n"); + goto exit; + } + + _InitHardwareDropIncorrectBulkOut_8814A(Adapter); + + /*if(pHalData->bRDGEnable){ + _InitRDGSetting_8812A(Adapter); + }*/ + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_DOWNLOAD_FW); + if (Adapter->registrypriv.mp_mode == 0) { + status = FirmwareDownload8814A(Adapter, _FALSE); + if (status != _SUCCESS) { + RTW_INFO("%s: Download Firmware failed!!\n", __FUNCTION__); + pHalData->bFWReady = _FALSE; + pHalData->fw_ractrl = _FALSE; + /* return status; */ + } else { + RTW_INFO("%s: Download Firmware Success!!\n", __FUNCTION__); + pHalData->bFWReady = _TRUE; + pHalData->fw_ractrl = _TRUE; + } + } + + if (pwrctrlpriv->reg_rfoff == _TRUE) + pwrctrlpriv->rf_pwrstate = rf_off; + + /* 2010/08/09 MH We need to check if we need to turnon or off RF after detecting */ + /* HW GPIO pin. Before PHY_RFConfig8192C. */ + /* HalDetectPwrDownMode(Adapter); */ + /* 2010/08/26 MH If Efuse does not support sective suspend then disable the function. */ + /* HalDetectSelectiveSuspendMode(Adapter); */ + + /* Save target channel */ + /* Current Channel will be updated again later. */ + pHalData->current_channel = 0;/* set 0 to trigger switch correct channel */ + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MAC); +#if (HAL_MAC_ENABLE == 1) + status = PHY_MACConfig8814(Adapter); + if (status == _FAIL) + goto exit; +#endif /* HAL_MAC_ENABLE */ + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC01); + + _InitQueuePriority_8814AUsb(Adapter); + _InitPageBoundary_8814AUsb(Adapter); + + _InitTransferPageSize_8814AUsb(Adapter); + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC02); + /* Get Rx PHY status in order to report RSSI and others. */ + _InitDriverInfoSize_8814A(Adapter, DRVINFO_SZ); + + _InitInterrupt_8814AU(Adapter); + _InitNetworkType_8814A(Adapter);/* set msr */ + _InitMacConfigure_8814A(Adapter); + /* _InitWMACSetting_8814A(Adapter); */ + /* _InitAdaptiveCtrl_8814AUsb(Adapter); */ + _InitEDCA_8814AUsb(Adapter); + + _InitRetryFunction_8814A(Adapter); + init_UsbAggregationSetting_8814A(Adapter); + + _InitBeaconParameters_8814A(Adapter); + _InitBeaconMaxError_8814A(Adapter, _TRUE); + + _InitBurstPktLen(Adapter); /* added by page. 20110919 */ + + /* */ + /* Init CR MACTXEN, MACRXEN after setting RxFF boundary REG_TRXFF_BNDY to patch */ + /* Hw bug which Hw initials RxFF boundry size to a value which is larger than the real Rx buffer size in 88E. */ + /* 2011.08.05. by tynli. */ + /* */ + value8 = rtw_read8(Adapter, REG_CR); + rtw_write8(Adapter, REG_CR, (value8 | MACTXEN | MACRXEN)); + +#ifdef CONFIG_RTW_LED + _InitHWLed(Adapter); +#endif /* CONFIG_RTW_LED */ + + /* */ + /* d. Initialize BB related configurations. */ + /* */ + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BB); +#if (HAL_BB_ENABLE == 1) + status = PHY_BBConfig8814(Adapter); + if (status == _FAIL) + goto exit; +#endif /* HAL_BB_ENABLE */ + + /* 92CU use 3-wire to r/w RF */ + /* pHalData->Rf_Mode = RF_OP_By_SW_3wire; */ + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_RF); +#if (HAL_RF_ENABLE == 1) + status = PHY_RFConfig8814A(Adapter); + if (status == _FAIL) + goto exit; + + /* todo: */ + /* if(pHalData->rf_type == RF_1T1R && IS_HARDWARE_TYPE_8812AU(Adapter)) */ + /* PHY_BB8812_Config_1T(Adapter); */ +#endif + + PHY_ConfigBB_8814A(Adapter); + + if (Adapter->registrypriv.channel <= 14) + PHY_SwitchWirelessBand8814A(Adapter, BAND_ON_2_4G); + else + PHY_SwitchWirelessBand8814A(Adapter, BAND_ON_5G); + + rtw_hal_set_chnl_bw(Adapter, Adapter->registrypriv.channel, + CHANNEL_WIDTH_20, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HAL_PRIME_CHNL_OFFSET_DONT_CARE); + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_TURN_ON_BLOCK); + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_SECURITY); + invalidate_cam_all(Adapter); + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC11); + + /* HW SEQ CTRL */ + /* set 0x0 to 0xFF by tynli. Default enable HW SEQ NUM. */ + rtw_write8(Adapter, REG_HWSEQ_CTRL, 0xFF); + + /* */ + /* Disable BAR, suggested by Scott */ + /* 2010.04.09 add by hpfan */ + /* */ + rtw_write32(Adapter, REG_BAR_MODE_CTRL, 0x0201ffff); + + rtw_write8(Adapter, REG_SECONDARY_CCA_CTRL_8814A, 0x03); + + if (pregistrypriv->wifi_spec) + rtw_write16(Adapter, REG_FAST_EDCA_CTRL , 0); + /* adjust EDCCA to avoid collision */ + /*if(pregistrypriv->wifi_spec) + { + rtw_write16(Adapter, rEDCCA_Jaguar, 0xfe01); + }*/ + /* Nav limit , suggest by scott */ + rtw_write8(Adapter, 0x652, 0x0); + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_HAL_DM); + rtl8814_InitHalDm(Adapter); + + /* */ + /* 2010/08/11 MH Merge from 8192SE for Minicard init. We need to confirm current radio status */ + /* and then decide to enable RF or not.!!!??? For Selective suspend mode. We may not */ + /* call init_adapter. May cause some problem?? */ + /* */ + /* Fix the bug that Hw/Sw radio off before S3/S4, the RF off action will not be executed */ + /* in MgntActSet_RF_State() after wake up, because the value of pHalData->eRFPowerState */ + /* is the same as eRfOff, we should change it to eRfOn after we config RF parameters. */ + /* Added by tynli. 2010.03.30. */ + pwrctrlpriv->rf_pwrstate = rf_on; + + /*phy_iq_calibrate_8814a_init(&pHalData->odmpriv);*/ + +#if (HAL_BB_ENABLE == 1) + PHY_SetRFEReg8814A(Adapter, _TRUE, pHalData->current_band_type); +#endif /* HAL_BB_ENABLE */ + + /* 0x4c6[3] 1: RTS BW = Data BW */ + /* 0: RTS BW depends on CCA / secondary CCA result. */ + rtw_write8(Adapter, REG_QUEUE_CTRL, rtw_read8(Adapter, REG_QUEUE_CTRL) & 0xF7); + + rtw_hal_set_hwreg(Adapter, HW_VAR_NAV_UPPER, ((u8 *)&NavUpper)); + + /* enable Tx report. */ + rtw_write8(Adapter, REG_FWHW_TXQ_CTRL + 1, 0x0F); + + /* Suggested by SD1 pisa. Added by tynli. 2011.10.21. */ + /* rtw_write8(Adapter, REG_EARLY_MODE_CONTROL_8812+3, 0x01); */ /* Pretx_en, for WEP/TKIP SEC */ + + /* tynli_test_tx_report. */ + /* rtw_write16(Adapter, REG_TX_RPT_TIME, 0x3DF0); */ + + /* Reset USB mode switch setting */ + rtw_write8(Adapter, REG_SDIO_CTRL_8814A, 0x0); + rtw_write8(Adapter, REG_ACLK_MON, 0x0); + + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_IQK); + /* 2010/08/26 MH Merge from 8192CE. */ + if (pwrctrlpriv->rf_pwrstate == rf_on) { + /* if(IS_HARDWARE_TYPE_8812AU(Adapter)) + { + #if (RTL8812A_SUPPORT == 1) + pHalData->bNeedIQK = _TRUE; + if(pHalData->bIQKInitialized) + phy_iq_calibrate_8812a(Adapter, _TRUE); + else + { + phy_iq_calibrate_8812a(Adapter, _FALSE); + pHalData->bIQKInitialized = _TRUE; + } + #endif + }*/ + /* this should be done by rf team using phydm code */ + /* phy_iq_calibrate_8814a(&pHalData->odmpriv, _FALSE); */ + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_PW_TRACK); + + /* odm_txpowertracking_check(&pHalData->odmpriv ); */ + + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_LCK); + /* phy_lc_calibrate_8812a(Adapter); */ + } + + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC21); + +#if (MP_DRIVER == 1) + if (Adapter->registrypriv.mp_mode == 1) { + Adapter->mppriv.channel = pHalData->current_channel; + MPT_InitializeAdapter(Adapter, Adapter->mppriv.channel); + } +#endif /* #if (MP_DRIVER == 1) */ + +#ifdef CONFIG_BT_COEXIST + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BT_COEXIST); + /* _InitBTCoexist(Adapter); */ + + if (_TRUE == pHalData->EEPROMBluetoothCoexist) { + /* Init BT hw config. */ + rtw_btcoex_HAL_Initialize(Adapter, _FALSE); + } else { + /* In combo card run wifi only , must setting some hardware reg. */ + rtl8812a_combo_card_WifiOnlyHwInit(Adapter); + } +#endif /* CONFIG_BT_COEXIST */ + + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC31); + + /* rtw_write8(Adapter, REG_USB_HRPWM, 0); */ + +#ifdef CONFIG_XMIT_ACK + /* ack for xmit mgmt frames. */ + rtw_write32(Adapter, REG_FWHW_TXQ_CTRL, rtw_read32(Adapter, REG_FWHW_TXQ_CTRL) | BIT(12)); +#endif /* CONFIG_XMIT_ACK */ + + +exit: + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_END); + + RTW_INFO("%s in %dms\n", __FUNCTION__, rtw_get_passing_time_ms(init_start_time)); + +#ifdef DBG_HAL_INIT_PROFILING + hal_init_stages_timestamp[HAL_INIT_STAGES_END] = rtw_get_current_time(); + + for (hal_init_profiling_i = 0; hal_init_profiling_i < HAL_INIT_STAGES_NUM - 1; hal_init_profiling_i++) { + RTW_INFO("DBG_HAL_INIT_PROFILING: %35s, %u, %5u, %5u\n" + , hal_init_stages_str[hal_init_profiling_i] + , hal_init_stages_timestamp[hal_init_profiling_i] + , (hal_init_stages_timestamp[hal_init_profiling_i + 1] - hal_init_stages_timestamp[hal_init_profiling_i]) + , rtw_get_time_interval_ms(hal_init_stages_timestamp[hal_init_profiling_i], hal_init_stages_timestamp[hal_init_profiling_i + 1]) + ); + } +#endif + + + + return status; +} + +void +hal_carddisable_8814( + PADAPTER Adapter +) +{ + u8 u1bTmp; + + RTW_INFO("CardDisableRTL8814AU\n"); + + /* stop rx */ + rtw_write8(Adapter, REG_CR_8814A, 0x0); + + /* Card disable power action flow */ + HalPwrSeqCmdParsing(Adapter, (u8)(~PWR_CUT_TESTCHIP_MSK), PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, Rtl8814A_NIC_DISABLE_FLOW); + + GET_HAL_DATA(Adapter)->bFWReady = _FALSE; + +} + +static void rtl8814au_hw_power_down(_adapter *padapter) +{ + /* 2010/-8/09 MH For power down module, we need to enable register block contrl reg at 0x1c. */ + /* Then enable power down control bit of register 0x04 BIT4 and BIT15 as 1. */ + + /* Enable register area 0x0-0xc. */ + rtw_write8(padapter, REG_RSV_CTRL, 0x0); + rtw_write16(padapter, REG_APS_FSMCO, 0x8812); +} + +u32 rtl8814au_hal_deinit(PADAPTER Adapter) +{ + struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(Adapter); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + RTW_INFO("==> %s\n", __FUNCTION__); + +#ifdef CONFIG_BT_COEXIST + if (hal_btcoex_IsBtExist(Adapter)) { + RTW_INFO("BT module enable SIC\n"); + /* Only under WIN7 we can support selective suspend and enter D3 state when system call halt adapter. */ + + /* rtw_write16(Adapter, REG_GPIO_MUXCFG, rtw_read16(Adapter, REG_GPIO_MUXCFG)|BIT12); */ + /* 2010/10/13 MH If we enable SIC in the position and then call _ResetDigitalProcedure1. in XP, */ + /* the system will hang due to 8051 reset fail. */ + } else +#endif /* CONFIG_BT_COEXIST */ + { + rtw_write16(Adapter, REG_GPIO_MUXCFG, rtw_read16(Adapter, REG_GPIO_MUXCFG) & (~BIT12)); + } + + if (pHalData->bSupportUSB3 == _TRUE) { + /* set Reg 0xf008[3:4] to 2'11 to eable U1/U2 Mode in USB3.0. added by page, 20120712 */ + rtw_write8(Adapter, 0xf008, rtw_read8(Adapter, 0xf008) | 0x18); + } + + rtw_write32(Adapter, REG_HISR, 0xFFFFFFFF); + rtw_write32(Adapter, REG_HISRE, 0xFFFFFFFF); + rtw_write32(Adapter, REG_HIMR, 0); + rtw_write32(Adapter, REG_HIMRE, 0); + +#ifdef SUPPORT_HW_RFOFF_DETECTED + RTW_INFO("bkeepfwalive(%x)\n", pwrctl->bkeepfwalive); + if (pwrctl->bkeepfwalive) { + _ps_close_RF(Adapter); + if ((pwrctl->bHWPwrPindetect) && (pwrctl->bHWPowerdown)) + rtl8814au_hw_power_down(Adapter); + } else +#endif + { + if (rtw_is_hw_init_completed(Adapter)) { + rtw_hal_power_off(Adapter); + + if ((pwrctl->bHWPwrPindetect) && (pwrctl->bHWPowerdown)) + rtl8814au_hw_power_down(Adapter); + } + } + return _SUCCESS; +} + + +unsigned int rtl8814au_inirp_init(PADAPTER Adapter) +{ + u8 i; + struct recv_buf *precvbuf; + uint status; + struct dvobj_priv *pdev = adapter_to_dvobj(Adapter); + struct intf_hdl *pintfhdl = &Adapter->iopriv.intf; + struct recv_priv *precvpriv = &(Adapter->recvpriv); + u32(*_read_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); +#ifdef CONFIG_USB_INTERRUPT_IN_PIPE + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u32(*_read_interrupt)(struct intf_hdl *pintfhdl, u32 addr); +#endif + + + _read_port = pintfhdl->io_ops._read_port; + + status = _SUCCESS; + + + precvpriv->ff_hwaddr = RECV_BULK_IN_ADDR; + + /* issue Rx irp to receive data */ + precvbuf = (struct recv_buf *)precvpriv->precv_buf; + for (i = 0; i < NR_RECVBUFF; i++) { + if (_read_port(pintfhdl, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf) == _FALSE) { + status = _FAIL; + goto exit; + } + + precvbuf++; + precvpriv->free_recv_buf_queue_cnt--; + } + +#ifdef CONFIG_USB_INTERRUPT_IN_PIPE + if (pdev->RtInPipe[REALTEK_USB_IN_INT_EP_IDX] != 0x05) { + status = _FAIL; + RTW_INFO("%s =>Warning !! Have not USB Int-IN pipe, RtIntInPipe(%d)!!!\n", __func__, pdev->RtInPipe[REALTEK_USB_IN_INT_EP_IDX]); + goto exit; + } + _read_interrupt = pintfhdl->io_ops._read_interrupt; + if (_read_interrupt(pintfhdl, RECV_INT_IN_ADDR) == _FALSE) { + status = _FAIL; + } +#endif + +exit: + + + + return status; + +} + +unsigned int rtl8814au_inirp_deinit(PADAPTER Adapter) +{ + + rtw_read_port_cancel(Adapter); + + + return _SUCCESS; +} + +/* ------------------------------------------------------------------- + * + * EEPROM/EFUSE Content Parsing + * + * ------------------------------------------------------------------- */ +void +hal_ReadIDs_8814AU( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoloadFail +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if (!AutoloadFail) { + pHalData->EEPROMVID = ReadLE2Byte(&PROMContent[EEPROM_VID_8814AU]); + pHalData->EEPROMPID = ReadLE2Byte(&PROMContent[EEPROM_PID_8814AU]); + + /* Customer ID, 0x00 and 0xff are reserved for Realtek. */ + pHalData->EEPROMCustomerID = *(u8 *)&PROMContent[EEPROM_CustomID_8814]; + pHalData->EEPROMSubCustomerID = EEPROM_Default_SubCustomerID; + } else { + pHalData->EEPROMVID = EEPROM_Default_VID; + pHalData->EEPROMPID = EEPROM_Default_PID; + + /* Customer ID, 0x00 and 0xff are reserved for Realtek. */ + pHalData->EEPROMCustomerID = EEPROM_Default_CustomerID; + pHalData->EEPROMSubCustomerID = EEPROM_Default_SubCustomerID; + } + + RTW_INFO("VID = 0x%04X, PID = 0x%04X\n", pHalData->EEPROMVID, pHalData->EEPROMPID); + RTW_INFO("Customer ID: 0x%02X, SubCustomer ID: 0x%02X\n", pHalData->EEPROMCustomerID, pHalData->EEPROMSubCustomerID); +} + + +void +hal_CustomizedBehavior_8814AU( + PADAPTER Adapter +) +{ +#ifdef CONFIG_RTW_SW_LED + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct led_priv *pledpriv = adapter_to_led(Adapter); + + + /* Led mode */ + switch (pHalData->CustomerID) { + case RT_CID_DEFAULT: + pledpriv->LedStrategy = SW_LED_MODE9; + pledpriv->bRegUseLed = _TRUE; + break; + + default: + pledpriv->LedStrategy = SW_LED_MODE9; + break; + } +#endif +} + +static void +hal_CustomizeByCustomerID_8814AU( + PADAPTER pAdapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + RTW_INFO("PID= 0x%x, VID= %x\n", pHalData->EEPROMPID, pHalData->EEPROMVID); + + /* Decide CustomerID according to VID/DID or EEPROM */ + switch (pHalData->EEPROMCustomerID) { + case EEPROM_CID_DEFAULT: + if ((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x3308)) + pHalData->CustomerID = RT_CID_DLINK; + else if ((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x3309)) + pHalData->CustomerID = RT_CID_DLINK; + else if ((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x330a)) + pHalData->CustomerID = RT_CID_DLINK; + else if ((pHalData->EEPROMVID == 0x0BFF) && (pHalData->EEPROMPID == 0x8160)) + pHalData->CustomerID = RT_CID_CHINA_MOBILE; + else if ((pHalData->EEPROMVID == 0x0BDA) && (pHalData->EEPROMPID == 0x5088)) + pHalData->CustomerID = RT_CID_CC_C; + + break; + case EEPROM_CID_WHQL: + /* padapter->bInHctTest = _TRUE; */ + + /* pMgntInfo->bSupportTurboMode = _FALSE; */ + /* pMgntInfo->bAutoTurboBy8186 = _FALSE; */ + + /* pMgntInfo->PowerSaveControl.bInactivePs = _FALSE; */ + /* pMgntInfo->PowerSaveControl.bIPSModeBackup = _FALSE; */ + /* pMgntInfo->PowerSaveControl.bLeisurePs = _FALSE; */ + /* pMgntInfo->PowerSaveControl.bLeisurePsModeBackup = _FALSE; */ + /* pMgntInfo->keepAliveLevel = 0; */ + + /* padapter->bUnloadDriverwhenS3S4 = _FALSE; */ + break; + default: + pHalData->CustomerID = RT_CID_DEFAULT; + break; + + } + RTW_INFO("Customer ID: 0x%2x\n", pHalData->CustomerID); + + hal_CustomizedBehavior_8814AU(pAdapter); +} + +void +hal_ReadUsbModeSwitch_8814AU( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoloadFail +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if (AutoloadFail) + pHalData->EEPROMUsbSwitch = _FALSE; + else + /* check efuse 0x0e bit4 */ + pHalData->EEPROMUsbSwitch = (PROMContent[EEPROM_USB_MODE_8814A] & BIT4) >> 4; + + RTW_INFO("Usb Switch: %d\n", pHalData->EEPROMUsbSwitch); +} + +static void +ReadLEDSetting_8814AU( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoloadFail +) +{ +#ifdef CONFIG_RTW_LED + struct led_priv *pledpriv = adapter_to_led(Adapter); + +#ifdef CONFIG_RTW_SW_LED + pledpriv->bRegUseLed = _TRUE; +#else /* HW LED */ + pledpriv->LedStrategy = HW_LED; +#endif /* CONFIG_RTW_SW_LED */ +#endif +} + +void +InitAdapterVariablesByPROM_8814AU( + PADAPTER Adapter +) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + + hal_InitPGData_8814A(Adapter, pHalData->efuse_eeprom_data); + + /* Hal_EfuseParseIDCode8812A(Adapter, pHalData->efuse_eeprom_data); */ + hal_ReadPROMVersion8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + hal_ReadIDs_8814AU(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + hal_config_macaddr(Adapter, pHalData->bautoload_fail_flag); + hal_ReadTxPowerInfo8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + hal_ReadBoardType8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + hal_Read_TRX_antenna_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + + /* */ + /* Read Bluetooth co-exist and initialize */ + /* */ + hal_EfuseParseBTCoexistInfo8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + + hal_ReadChannelPlan8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + hal_EfuseParseXtal_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + hal_ReadThermalMeter_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + hal_ReadRemoteWakeup_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + hal_ReadAntennaDiversity8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + hal_ReadRFEType_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + hal_ReadPowerTrackingType_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + ReadLEDSetting_8814AU(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + + hal_ReadUsbModeSwitch_8814AU(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + hal_CustomizeByCustomerID_8814AU(Adapter); + + hal_GetRxGainOffset_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + + Hal_EfuseParseKFreeData_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); + + /* set coex. ant info once efuse parsing is done */ + rtw_btcoex_set_ant_info(Adapter); +} + +static void hal_ReadPROMContent_8814A( + PADAPTER Adapter +) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + u8 eeValue; + + /* check system boot selection */ + eeValue = rtw_read8(Adapter, REG_9346CR); + pHalData->EepromOrEfuse = (eeValue & BOOT_FROM_EEPROM) ? _TRUE : _FALSE; + pHalData->bautoload_fail_flag = (eeValue & EEPROM_EN) ? _FALSE : _TRUE; + + RTW_INFO("Boot from %s, Autoload %s !\n", (pHalData->EepromOrEfuse ? "EEPROM" : "EFUSE"), + (pHalData->bautoload_fail_flag ? "Fail" : "OK")); + + /* pHalData->EEType = IS_BOOT_FROM_EEPROM(Adapter) ? EEPROM_93C46 : EEPROM_BOOT_EFUSE; */ + + InitAdapterVariablesByPROM_8814AU(Adapter); +} + +u8 +ReadAdapterInfo8814AU( + PADAPTER Adapter +) +{ + Hal_InitEfuseVars_8814A(Adapter); + + /* Read all content in Efuse/EEPROM. */ + hal_ReadPROMContent_8814A(Adapter); + + /* We need to define the RF type after all PROM value is recognized. */ + ReadRFType8814A(Adapter); + + return _SUCCESS; +} + +void UpdateInterruptMask8814AU(PADAPTER padapter, u8 bHIMR0 , u32 AddMSR, u32 RemoveMSR) +{ + HAL_DATA_TYPE *pHalData; + + u32 *himr; + pHalData = GET_HAL_DATA(padapter); + + if (bHIMR0) + himr = &(pHalData->IntrMask[0]); + else + himr = &(pHalData->IntrMask[1]); + + if (AddMSR) + *himr |= AddMSR; + + if (RemoveMSR) + *himr &= (~RemoveMSR); + + if (bHIMR0) + rtw_write32(padapter, REG_HIMR0_8814A, *himr); + else + rtw_write32(padapter, REG_HIMR1_8814A, *himr); + +} + +u8 SetHwReg8814AU(PADAPTER Adapter, u8 variable, u8 *val) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(Adapter); + struct registry_priv *registry_par = &Adapter->registrypriv; + u8 ret = _SUCCESS; + + switch (variable) { + case HW_VAR_RXDMA_AGG_PG_TH: +#ifdef CONFIG_USB_RX_AGGREGATION + { + /*u8 threshold = *((u8 *)val); + if( threshold == 0) + { + threshold = pHalData->UsbRxAggPageCount; + } + rtw_write8(Adapter, REG_RXDMA_AGG_PG_TH, threshold);*/ + } +#endif + break; + case HW_VAR_SET_RPWM: +#ifdef CONFIG_LPS_LCLK + { + u8 ps_state = *((u8 *)val); + /* rpwm value only use BIT0(clock bit) ,BIT6(Ack bit), and BIT7(Toggle bit) for 88e. */ + /* BIT0 value - 1: 32k, 0:40MHz. */ + /* BIT6 value - 1: report cpwm value after success set, 0:do not report. */ + /* BIT7 value - Toggle bit change. */ + /* modify by Thomas. 2012/4/2. */ + ps_state = ps_state & 0xC1; + /* RTW_INFO("##### Change RPWM value to = %x for switch clk #####\n",ps_state); */ + rtw_write8(Adapter, REG_USB_HRPWM, ps_state); + } +#endif +#ifdef CONFIG_AP_WOWLAN + if (pwrctl->wowlan_ap_mode == _TRUE) { + u8 ps_state = *((u8 *)val); + + RTW_INFO("%s, RPWM\n", __func__); + ps_state = ps_state & 0xC1; + rtw_write8(Adapter, REG_USB_HRPWM, ps_state); + } +#endif + break; + case HW_VAR_USB_MODE: + /* U2 to U3 */ + if (registry_par->switch_usb_mode == 1) { + if (IS_HIGH_SPEED_USB(Adapter)) { + if ((rtw_read8(Adapter, 0x74) & (BIT(2) | BIT(3))) != BIT(3)) { + rtw_write8(Adapter, 0x74, 0x8); + rtw_write8(Adapter, 0x70, 0x2); + rtw_write8(Adapter, 0x3e, 0x1); + rtw_write8(Adapter, 0x3d, 0x3); + /* usb disconnect */ + rtw_write8(Adapter, 0x5, 0x80); + *val = _TRUE; + } + } else if (IS_SUPER_SPEED_USB(Adapter)) { + rtw_write8(Adapter, 0x70, rtw_read8(Adapter, 0x70) & (~BIT(1))); + rtw_write8(Adapter, 0x3e, rtw_read8(Adapter, 0x3e) & (~BIT(0))); + } + } else if (registry_par->switch_usb_mode == 2) { + /* U3 to U2 */ + if (IS_SUPER_SPEED_USB(Adapter)) { + if ((rtw_read8(Adapter, 0x74) & (BIT(2) | BIT(3))) != BIT(2)) { + rtw_write8(Adapter, 0x74, 0x4); + rtw_write8(Adapter, 0x70, 0x2); + rtw_write8(Adapter, 0x3e, 0x1); + rtw_write8(Adapter, 0x3d, 0x3); + /* usb disconnect */ + rtw_write8(Adapter, 0x5, 0x80); + *val = _TRUE; + } + } else if (IS_HIGH_SPEED_USB(Adapter)) { + rtw_write8(Adapter, 0x70, rtw_read8(Adapter, 0x70) & (~BIT(1))); + rtw_write8(Adapter, 0x3e, rtw_read8(Adapter, 0x3e) & (~BIT(0))); + } + } + break; + default: + ret = SetHwReg8814A(Adapter, variable, val); + break; + } + + return ret; +} + +void GetHwReg8814AU(PADAPTER Adapter, u8 variable, u8 *val) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + switch (variable) { + default: + GetHwReg8814A(Adapter, variable, val); + break; + } + +} + +/* + * Description: + * Change default setting of specified variable. + * */ +u8 +SetHalDefVar8814AUsb( + PADAPTER Adapter, + HAL_DEF_VARIABLE eVariable, + void *pValue +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 bResult = _SUCCESS; + + switch (eVariable) { + default: + SetHalDefVar8814A(Adapter, eVariable, pValue); + break; + } + + return bResult; +} + +/* + * Description: + * Query setting of specified variable. + * */ +u8 +GetHalDefVar8814AUsb( + PADAPTER Adapter, + HAL_DEF_VARIABLE eVariable, + void *pValue +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 bResult = _SUCCESS; + + switch (eVariable) { + default: + GetHalDefVar8814A(Adapter, eVariable, pValue); + break; + } + + return bResult; +} + +static void rtl8814au_init_default_value(_adapter *padapter) +{ + PHAL_DATA_TYPE pHalData; + + pHalData = GET_HAL_DATA(padapter); + + InitDefaultValue8814A(padapter); + + pHalData->IntrMask[0] = (u32)(\ + /* IMR_ROK | */ + /* IMR_RDU | */ + /* IMR_VODOK | */ + /* IMR_VIDOK | */ + /* IMR_BEDOK | */ + /* IMR_BKDOK | */ + /* IMR_MGNTDOK | */ + /* IMR_HIGHDOK | */ + /* IMR_CPWM | */ + /* IMR_CPWM2 | */ + /* IMR_C2HCMD | */ + /* IMR_HISR1_IND_INT | */ + /* IMR_ATIMEND | */ + /* IMR_BCNDMAINT_E | */ + /* IMR_HSISR_IND_ON_INT | */ + /* IMR_BCNDOK0 | */ + /* IMR_BCNDMAINT0 | */ + /* IMR_TSF_BIT32_TOGGLE | */ + /* IMR_TXBCN0OK | */ + /* IMR_TXBCN0ERR | */ + /* IMR_GTINT3 | */ + /* IMR_GTINT4 | */ + /* IMR_TXCCK | */ + 0); + + pHalData->IntrMask[1] = (u32)(\ + /* IMR_RXFOVW | */ + /* IMR_TXFOVW | */ + /* IMR_RXERR | */ + /* IMR_TXERR | */ + /* IMR_ATIMEND_E | */ + /* IMR_BCNDOK1 | */ + /* IMR_BCNDOK2 | */ + /* IMR_BCNDOK3 | */ + /* IMR_BCNDOK4 | */ + /* IMR_BCNDOK5 | */ + /* IMR_BCNDOK6 | */ + /* IMR_BCNDOK7 | */ + /* IMR_BCNDMAINT1 | */ + /* IMR_BCNDMAINT2 | */ + /* IMR_BCNDMAINT3 | */ + /* IMR_BCNDMAINT4 | */ + /* IMR_BCNDMAINT5 | */ + /* IMR_BCNDMAINT6 | */ + /* IMR_BCNDMAINT7 | */ + 0); +} + +static u8 rtl8814au_ps_func(PADAPTER Adapter, HAL_INTF_PS_FUNC efunc_id, u8 *val) +{ + u8 bResult = _TRUE; + switch (efunc_id) { + +#if defined(CONFIG_AUTOSUSPEND) && defined(SUPPORT_HW_RFOFF_DETECTED) + case HAL_USB_SELECT_SUSPEND: { + u8 bfwpoll = *((u8 *)val); + /* rtl8188e_set_FwSelectSuspend_cmd(Adapter,bfwpoll ,500); */ /* note fw to support hw power down ping detect */ + } + break; +#endif /* CONFIG_AUTOSUSPEND && SUPPORT_HW_RFOFF_DETECTED */ + + default: + break; + } + return bResult; +} + +void rtl8814au_set_hal_ops(_adapter *padapter) +{ + struct hal_ops *pHalFunc = &padapter->hal_func; + + + pHalFunc->hal_power_on = _InitPowerOn_8814AU; + pHalFunc->hal_power_off = hal_carddisable_8814; + + pHalFunc->hal_init = &rtl8814au_hal_init; + pHalFunc->hal_deinit = &rtl8814au_hal_deinit; + + pHalFunc->inirp_init = &rtl8814au_inirp_init; + pHalFunc->inirp_deinit = &rtl8814au_inirp_deinit; + + pHalFunc->init_xmit_priv = &rtl8814au_init_xmit_priv; + pHalFunc->free_xmit_priv = &rtl8814au_free_xmit_priv; + + pHalFunc->init_recv_priv = &rtl8814au_init_recv_priv; + pHalFunc->free_recv_priv = &rtl8814au_free_recv_priv; +#ifdef CONFIG_RTW_SW_LED + pHalFunc->InitSwLeds = &rtl8814au_InitSwLeds; + pHalFunc->DeInitSwLeds = &rtl8814au_DeInitSwLeds; +#endif/* CONFIG_RTW_SW_LED */ + + pHalFunc->init_default_value = &rtl8814au_init_default_value; + pHalFunc->intf_chip_configure = &rtl8814au_interface_configure; + pHalFunc->read_adapter_info = &ReadAdapterInfo8814AU; + + pHalFunc->set_hw_reg_handler = &SetHwReg8814AU; + pHalFunc->GetHwRegHandler = &GetHwReg8814AU; + pHalFunc->get_hal_def_var_handler = &GetHalDefVar8814AUsb; + pHalFunc->SetHalDefVarHandler = &SetHalDefVar8814AUsb; + + + pHalFunc->hal_xmit = &rtl8814au_hal_xmit; + pHalFunc->mgnt_xmit = &rtl8814au_mgnt_xmit; + pHalFunc->hal_xmitframe_enqueue = &rtl8814au_hal_xmitframe_enqueue; + +#ifdef CONFIG_HOSTAPD_MLME + pHalFunc->hostap_mgnt_xmit_entry = &rtl8812au_hostap_mgnt_xmit_entry; +#endif + pHalFunc->interface_ps_func = &rtl8814au_ps_func; +#ifdef CONFIG_XMIT_THREAD_MODE + pHalFunc->xmit_thread_handler = &rtl8814au_xmit_buf_handler; +#endif +#ifdef CONFIG_SUPPORT_USB_INT + pHalFunc->interrupt_handler = interrupt_handler_8814au; +#endif +#ifdef CONFIG_FW_CORRECT_BCN + pHalFunc->fw_correct_bcn = &rtl8814_fw_update_beacon_cmd; +#endif + rtl8814_set_hal_ops(pHalFunc); + +} diff --git a/hal/rtl8814a/usb/usb_ops_linux.c b/hal/rtl8814a/usb/usb_ops_linux.c new file mode 100644 index 0000000..02db861 --- /dev/null +++ b/hal/rtl8814a/usb/usb_ops_linux.c @@ -0,0 +1,233 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#define _HCI_OPS_OS_C_ + +/* #include */ +#include + +#ifdef CONFIG_SUPPORT_USB_INT +void interrupt_handler_8814au(_adapter *padapter, u16 pkt_len, u8 *pbuf) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct reportpwrstate_parm pwr_rpt; + + if (pkt_len != INTERRUPT_MSG_FORMAT_LEN) { + RTW_INFO("%s Invalid interrupt content length (%d)!\n", __FUNCTION__, pkt_len); + return ; + } + + /* HISR */ + _rtw_memcpy(&(pHalData->IntArray[0]), &(pbuf[USB_INTR_CONTENT_HISR_OFFSET]), 4); + _rtw_memcpy(&(pHalData->IntArray[1]), &(pbuf[USB_INTR_CONTENT_HISRE_OFFSET]), 4); + +#if 0 /* DBG */ + { + u32 hisr = 0 , hisr_ex = 0; + _rtw_memcpy(&hisr, &(pHalData->IntArray[0]), 4); + hisr = le32_to_cpu(hisr); + + _rtw_memcpy(&hisr_ex, &(pHalData->IntArray[1]), 4); + hisr_ex = le32_to_cpu(hisr_ex); + + if ((hisr != 0) || (hisr_ex != 0)) + RTW_INFO("===> %s hisr:0x%08x ,hisr_ex:0x%08x\n", __FUNCTION__, hisr, hisr_ex); + } +#endif + + +#ifdef CONFIG_LPS_LCLK + if (pHalData->IntArray[0] & IMR_CPWM_88E) { + _rtw_memcpy(&pwr_rpt.state, &(pbuf[USB_INTR_CONTENT_CPWM1_OFFSET]), 1); + /* _rtw_memcpy(&pwr_rpt.state2, &(pbuf[USB_INTR_CONTENT_CPWM2_OFFSET]), 1); */ + + /* 88e's cpwm value only change BIT0, so driver need to add PS_STATE_S2 for LPS flow. */ + pwr_rpt.state |= PS_STATE_S2; + _set_workitem(&(adapter_to_pwrctl(padapter)->cpwm_event)); + } +#endif/* CONFIG_LPS_LCLK */ + +#ifdef CONFIG_INTERRUPT_BASED_TXBCN + +#ifdef CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT + if (pHalData->IntArray[0] & IMR_BCNDMAINT0_8814A)/*only for BCN_0*/ +#endif +#ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR + if (pHalData->IntArray[0] & (IMR_TBDER_88E | IMR_TBDOK_88E)) +#endif + { +#if 0 + if (pHalData->IntArray[0] & IMR_BCNDMAINT0_88E) + RTW_INFO("%s: HISR_BCNERLY_INT\n", __func__); + if (pHalData->IntArray[0] & IMR_TBDOK_88E) + RTW_INFO("%s: HISR_TXBCNOK\n", __func__); + if (pHalData->IntArray[0] & IMR_TBDER_88E) + RTW_INFO("%s: HISR_TXBCNERR\n", __func__); +#endif + rtw_mi_set_tx_beacon_cmd(padapter); + } +#endif /* CONFIG_INTERRUPT_BASED_TXBCN */ + + + + +#ifdef DBG_CONFIG_ERROR_DETECT_INT + if (pHalData->IntArray[1] & IMR_TXERR_88E) + RTW_INFO("===> %s Tx Error Flag Interrupt Status\n", __FUNCTION__); + if (pHalData->IntArray[1] & IMR_RXERR_88E) + RTW_INFO("===> %s Rx Error Flag INT Status\n", __FUNCTION__); + if (pHalData->IntArray[1] & IMR_TXFOVW_88E) + RTW_INFO("===> %s Transmit FIFO Overflow\n", __FUNCTION__); + if (pHalData->IntArray[1] & IMR_RXFOVW_88E) + RTW_INFO("===> %s Receive FIFO Overflow\n", __FUNCTION__); +#endif/* DBG_CONFIG_ERROR_DETECT_INT */ + +#ifdef CONFIG_FW_C2H_REG + /* C2H Event */ + if (pbuf[0] != 0) + usb_c2h_hisr_hdl(padapter, pbuf); +#endif +} +#endif /* CONFIG_SUPPORT_USB_INT */ + + +int recvbuf2recvframe(PADAPTER padapter, void *ptr) +{ + u8 *pbuf; + u8 pkt_cnt = 0; + u32 pkt_offset; + s32 transfer_len; + union recv_frame *precvframe = NULL; + struct rx_pkt_attrib *pattrib = NULL; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct recv_priv *precvpriv = &padapter->recvpriv; + _queue *pfree_recv_queue = &precvpriv->free_recv_queue; + _pkt *pskb; + +#ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX + pskb = NULL; + transfer_len = (s32)((struct recv_buf *)ptr)->transfer_len; + pbuf = ((struct recv_buf *)ptr)->pbuf; +#else + pskb = (_pkt *)ptr; + transfer_len = (s32)pskb->len; + pbuf = pskb->data; +#endif/* CONFIG_USE_USB_BUFFER_ALLOC_RX */ + + +#ifdef CONFIG_USB_RX_AGGREGATION + pkt_cnt = GET_RX_STATUS_DESC_DMA_AGG_NUM_8814A(pbuf); +#endif + + do { + precvframe = rtw_alloc_recvframe(pfree_recv_queue); + if (precvframe == NULL) { + RTW_INFO("%s()-%d: rtw_alloc_recvframe() failed! RX Drop!\n", __FUNCTION__, __LINE__); + goto _exit_recvbuf2recvframe; + } + + _rtw_init_listhead(&precvframe->u.hdr.list); + precvframe->u.hdr.precvbuf = NULL; /* can't access the precvbuf for new arch. */ + precvframe->u.hdr.len = 0; + + rtl8814_query_rx_desc_status(precvframe, pbuf); + + pattrib = &precvframe->u.hdr.attrib; + + if ((padapter->registrypriv.mp_mode == 0) && ((pattrib->crc_err) || (pattrib->icv_err))) { + RTW_INFO("%s: RX Warning! crc_err=%d icv_err=%d, skip!\n", __FUNCTION__, pattrib->crc_err, pattrib->icv_err); + + rtw_free_recvframe(precvframe, pfree_recv_queue); + goto _exit_recvbuf2recvframe; + } + + pkt_offset = RXDESC_SIZE + pattrib->drvinfo_sz + pattrib->shift_sz + pattrib->pkt_len; + + if ((pattrib->pkt_len <= 0) || (pkt_offset > transfer_len)) { + RTW_INFO("%s()-%d: RX Warning!,pkt_len<=0 or pkt_offset> transfer_len\n", __FUNCTION__, __LINE__); + rtw_free_recvframe(precvframe, pfree_recv_queue); + goto _exit_recvbuf2recvframe; + } + +#ifdef CONFIG_RX_PACKET_APPEND_FCS + if (check_fwstate(&padapter->mlmepriv, WIFI_MONITOR_STATE) == _FALSE) + if ((pattrib->pkt_rpt_type == NORMAL_RX) && rtw_hal_rcr_check(padapter, RCR_APPFCS)) + pattrib->pkt_len -= IEEE80211_FCS_LEN; +#endif + if (rtw_os_alloc_recvframe(padapter, precvframe, + (pbuf + pattrib->shift_sz + pattrib->drvinfo_sz + RXDESC_SIZE), pskb) == _FAIL) { + rtw_free_recvframe(precvframe, pfree_recv_queue); + + goto _exit_recvbuf2recvframe; + } + + recvframe_put(precvframe, pattrib->pkt_len); + /* recvframe_pull(precvframe, drvinfo_sz + RXDESC_SIZE); */ + + if (pattrib->pkt_rpt_type == NORMAL_RX) /* Normal rx packet */ + pre_recv_entry(precvframe, pattrib->physt ? (pbuf + RXDESC_OFFSET) : NULL); + else { /* pkt_rpt_type == TX_REPORT1-CCX, TX_REPORT2-TX RTP,HIS_REPORT-USB HISR RTP */ + if (pattrib->pkt_rpt_type == C2H_PACKET) { + /* RTW_INFO("rx C2H_PACKET\n"); */ + rtw_hal_c2h_pkt_pre_hdl(padapter, precvframe->u.hdr.rx_data, pattrib->pkt_len); + } + rtw_free_recvframe(precvframe, pfree_recv_queue); + } + +#ifdef CONFIG_USB_RX_AGGREGATION + /* jaguar 8-byte alignment */ + pkt_offset = (u16)_RND8(pkt_offset); + pkt_cnt--; + pbuf += pkt_offset; +#endif + transfer_len -= pkt_offset; + precvframe = NULL; + + } while (transfer_len > 0); + +_exit_recvbuf2recvframe: + + return _SUCCESS; +} + + +void rtl8814au_xmit_tasklet(void *priv) +{ + int ret = _FALSE; + _adapter *padapter = (_adapter *)priv; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + + while (1) { + if (RTW_CANNOT_TX(padapter)) { + RTW_INFO("xmit_tasklet => bDriverStopped or bSurpriseRemoved or bWritePortCancel\n"); + break; + } + + if (rtw_xmit_ac_blocked(padapter) == _TRUE) + break; + + ret = rtl8814au_xmitframe_complete(padapter, pxmitpriv, NULL); + + if (ret == _FALSE) + break; + + } + +} + +void rtl8814au_set_hw_type(struct dvobj_priv *pdvobj) +{ + pdvobj->HardwareType = HARDWARE_TYPE_RTL8814AU; + RTW_INFO("CHIP TYPE: RTL8814\n"); +} diff --git a/hal/rtl8814a_cmd.h b/hal/rtl8814a_cmd.h new file mode 100644 index 0000000..c546a03 --- /dev/null +++ b/hal/rtl8814a_cmd.h @@ -0,0 +1,166 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#ifndef __RTL8814A_CMD_H__ +#define __RTL8814A_CMD_H__ +#include "hal_com_h2c.h" + +/* _RSVDPAGE_LOC_CMD0 */ +#define SET_8814A_H2CCMD_RSVDPAGE_LOC_PROBE_RSP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value) +#define SET_8814A_H2CCMD_RSVDPAGE_LOC_PSPOLL(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) +#define SET_8814A_H2CCMD_RSVDPAGE_LOC_NULL_DATA(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value) +#define SET_8814A_H2CCMD_RSVDPAGE_LOC_QOS_NULL_DATA(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value) +#define SET_8814A_H2CCMD_RSVDPAGE_LOC_BT_QOS_NULL_DATA(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 0, 8, __Value) + +/* _SETPWRMODE_PARM */ +#define SET_8814A_H2CCMD_PWRMODE_PARM_MODE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value) +#define SET_8814A_H2CCMD_PWRMODE_PARM_RLBM(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 4, __Value) +#define SET_8814A_H2CCMD_PWRMODE_PARM_SMART_PS(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 4, 4, __Value) +#define SET_8814A_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value) +#define SET_8814A_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value) +#define SET_8814A_H2CCMD_PWRMODE_PARM_BCN_EARLY_C2H_RPT(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 2, 1, __Value) +#define SET_8814A_H2CCMD_PWRMODE_PARM_PWR_STATE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 0, 8, __Value) + +#define GET_8814A_H2CCMD_PWRMODE_PARM_MODE(__pH2CCmd) LE_BITS_TO_1BYTE(__pH2CCmd, 0, 8) + + +/* _WoWLAN PARAM_CMD5 */ +#define SET_8814A_H2CCMD_WOWLAN_FUNC_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value) +#define SET_8814A_H2CCMD_WOWLAN_PATTERN_MATCH_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value) +#define SET_8814A_H2CCMD_WOWLAN_MAGIC_PKT_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 2, 1, __Value) +#define SET_8814A_H2CCMD_WOWLAN_UNICAST_PKT_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 3, 1, __Value) +#define SET_8814A_H2CCMD_WOWLAN_ALL_PKT_DROP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 4, 1, __Value) +#define SET_8814A_H2CCMD_WOWLAN_GPIO_ACTIVE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 5, 1, __Value) +#define SET_8814A_H2CCMD_WOWLAN_REKEY_WAKE_UP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 6, 1, __Value) +#define SET_8814A_H2CCMD_WOWLAN_DISCONNECT_WAKE_UP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 7, 1, __Value) +#define SET_8814A_H2CCMD_WOWLAN_GPIONUM(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) +#define SET_8814A_H2CCMD_WOWLAN_GPIO_DURATION(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value) + + +/* WLANINFO_PARM */ +#define SET_8814A_H2CCMD_WLANINFO_PARM_OPMODE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value) +#define SET_8814A_H2CCMD_WLANINFO_PARM_CHANNEL(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) +#define SET_8814A_H2CCMD_WLANINFO_PARM_BW40MHZ(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value) + +/* _REMOTE_WAKEUP_CMD7 */ +#define SET_8814A_H2CCMD_REMOTE_WAKECTRL_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value) +#define SET_8814A_H2CCMD_REMOTE_WAKE_CTRL_ARP_OFFLOAD_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value) +#define SET_8814A_H2CCMD_REMOTE_WAKE_CTRL_NDP_OFFLOAD_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 2, 1, __Value) +#define SET_8814A_H2CCMD_REMOTE_WAKE_CTRL_GTK_OFFLOAD_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 3, 1, __Value) + + +/* _AP_OFFLOAD_CMD8 */ +#define SET_8814A_H2CCMD_AP_OFFLOAD_ON(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value) +#define SET_8814A_H2CCMD_AP_OFFLOAD_HIDDEN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) +#define SET_8814A_H2CCMD_AP_OFFLOAD_DENYANY(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value) +#define SET_8814A_H2CCMD_AP_OFFLOAD_WAKEUP_EVT_RPT(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value) + +/* _PWR_MOD_CMD20 */ +#define SET_88E_H2CCMD_PWRMODE_PARM_MODE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value) +#define SET_88E_H2CCMD_PWRMODE_PARM_RLBM(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 4, __Value) +#define SET_88E_H2CCMD_PWRMODE_PARM_SMART_PS(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 4, 4, __Value) +#define SET_88E_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value) +#define SET_88E_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value) +#define SET_88E_H2CCMD_PWRMODE_PARM_PWR_STATE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 0, 8, __Value) + +/* AP_REQ_TXREP_CMD 0x43 */ +#define SET_8814A_H2CCMD_TXREP_PARM_STA1(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value) +#define SET_8814A_H2CCMD_TXREP_PARM_STA2(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) +#define SET_8814A_H2CCMD_TXREP_PARM_RTY(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 2, __Value) + +/* C2H_AP_REQ_TXRPT */ +#define GET_8814A_C2H_TC2H_APREQ_TXRPT_MACID1(_Header) LE_BITS_TO_1BYTE((_Header + 0), 0, 8) +#define GET_8814A_C2H_TC2H_APREQ_TXRPT_TXOK1(_Header) LE_BITS_TO_2BYTE((_Header + 1), 0, 16) +#define GET_8814A_C2H_TC2H_APREQ_TXRPT_TXFAIL1(_Header) LE_BITS_TO_2BYTE((_Header + 3), 0, 16) +#define GET_8814A_C2H_TC2H_APREQ_TXRPT_INIRATE1(_Header) LE_BITS_TO_1BYTE((_Header + 5), 0, 8) +#define GET_8814A_C2H_TC2H_APREQ_TXRPT_MACID2(_Header) LE_BITS_TO_1BYTE((_Header + 6), 0, 8) +#define GET_8814A_C2H_TC2H_APREQ_TXRPT_TXOK2(_Header) LE_BITS_TO_2BYTE((_Header + 7), 0, 16) +#define GET_8814A_C2H_TC2H_APREQ_TXRPT_TXFAIL2(_Header) LE_BITS_TO_2BYTE((_Header + 9), 0, 16) +#define GET_8814A_C2H_TC2H_APREQ_TXRPT_INIRATE2(_Header) LE_BITS_TO_1BYTE((_Header + 11), 0, 8) + +/* C2H_SPC_STAT */ +#define GET_8814A_C2H_SPC_STAT_IDX(_Header) LE_BITS_TO_1BYTE((_Header + 0), 0, 8) + /* Tip :TYPE_A data3 is msb and data0 is lsb */ +#define GET_8814A_C2H_SPC_STAT_TYPEA_RETRY(_Header) LE_BITS_TO_4BYTE((_Header + 1), 0, 32) +#define GET_8814A_C2H_SPC_STAT_TYPEB_PKT1(_Header) LE_BITS_TO_2BYTE((_Header + 1), 0, 16) +#define GET_8814A_C2H_SPC_STAT_TYPEB_RETRY1(_Header) LE_BITS_TO_2BYTE((_Header + 3), 0, 16) +#define GET_8814A_C2H_SPC_STAT_TYPEB_PKT2(_Header) LE_BITS_TO_2BYTE((_Header + 5), 0, 16) +#define GET_8814A_C2H_SPC_STAT_TYPEB_RETRY2(_Header) LE_BITS_TO_2BYTE((_Header + 7), 0, 16) + +/*BCNHWSEQ*/ +#define SET_8814A_H2CCMD_BCNHWSEQ_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd), 0, 1, __Value) +#define SET_8814A_H2CCMD_BCNHWSEQ_BCN_NUMBER(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd), 1, 3, __Value) +#define SET_8814A_H2CCMD_BCNHWSEQ_HWSEQ(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd), 6, 1, __Value) +#define SET_8814A_H2CCMD_BCNHWSEQ_EXHWSEQ(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd), 7, 1, __Value) +#define SET_8814A_H2CCMD_BCNHWSEQ_PAGE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) +void rtl8814_fw_update_beacon_cmd(_adapter *padapter); + +/* TX Beamforming */ +#define GET_8814A_C2H_TXBF_ORIGINATE(_Header) LE_BITS_TO_1BYTE(_Header, 0, 8) +#define GET_8814A_C2H_TXBF_MACID(_Header) LE_BITS_TO_1BYTE((_Header + 1), 0, 8) + + + +/* / TX Feedback Content */ +#define USEC_UNIT_FOR_8814A_C2H_TX_RPT_QUEUE_TIME 256 + +#define GET_8814A_C2H_TX_RPT_QUEUE_SELECT(_Header) LE_BITS_TO_1BYTE((_Header + 0), 0, 5) +#define GET_8814A_C2H_TX_RPT_PKT_BROCAST(_Header) LE_BITS_TO_1BYTE((_Header + 0), 5, 1) +#define GET_8814A_C2H_TX_RPT_LIFE_TIME_OVER(_Header) LE_BITS_TO_1BYTE((_Header + 0), 6, 1) +#define GET_8814A_C2H_TX_RPT_RETRY_OVER(_Header) LE_BITS_TO_1BYTE((_Header + 0), 7, 1) +#define GET_8814A_C2H_TX_RPT_MAC_ID(_Header) LE_BITS_TO_1BYTE((_Header + 1), 0, 8) +#define GET_8814A_C2H_TX_RPT_DATA_RETRY_CNT(_Header) LE_BITS_TO_1BYTE((_Header + 2), 0, 6) +#define GET_8814A_C2H_TX_RPT_QUEUE_TIME(_Header) LE_BITS_TO_2BYTE((_Header + 3), 0, 16) /* In unit of 256 microseconds. */ +#define GET_8814A_C2H_TX_RPT_FINAL_DATA_RATE(_Header) LE_BITS_TO_1BYTE((_Header + 5), 0, 8) + + +/* _P2P_PS_OFFLOAD */ +#define SET_8814A_H2CCMD_P2P_PS_OFFLOAD_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value) +#define SET_8814A_H2CCMD_P2P_PS_OFFLOAD_ROLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value) +#define SET_8814A_H2CCMD_P2P_PS_OFFLOAD_CTWINDOW_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 2, 1, __Value) +#define SET_8814A_H2CCMD_P2P_PS_OFFLOAD_NOA0_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 3, 1, __Value) +#define SET_8814A_H2CCMD_P2P_PS_OFFLOAD_NOA1_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 4, 1, __Value) +#define SET_8814A_H2CCMD_P2P_PS_OFFLOAD_ALLSTASLEEP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 5, 1, __Value) +#define SET_8814A_H2CCMD_P2P_PS_OFFLOAD_DISCOVERY(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 6, 1, __Value) + +s32 FillH2CCmd_8814(PADAPTER padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer); +void rtl8814_set_wowlan_cmd(_adapter *padapter, u8 enable); +void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus); +void rtl8814_set_FwPwrMode_cmd(PADAPTER padapter, u8 PSMode); +u8 GetTxBufferRsvdPageNum8814(_adapter *padapter, bool wowlan); +void rtl8814_req_txrpt_cmd(PADAPTER padapter, u8 macid); + +#ifdef CONFIG_TDLS + #ifdef CONFIG_TDLS_CH_SW + void rtl8814_set_BcnEarly_C2H_Rpt_cmd(PADAPTER padapter, u8 enable); + #endif +#endif +void rtl8814a_set_FwPwrModeInIPS_cmd(PADAPTER padapter, u8 cmd_param); + +void +Set_RA_LDPC_8814( + struct sta_info *psta, + BOOLEAN bLDPC +); + +s32 c2h_handler_8814a(_adapter *adapter, u8 id, u8 seq, u8 plen, u8 *payload); + +#ifdef CONFIG_BT_COEXIST +void rtl8814a_download_BTCoex_AP_mode_rsvd_page(PADAPTER padapter); +#endif /* CONFIG_BT_COEXIST */ +#ifdef CONFIG_P2P_PS + void rtl8814_set_p2p_ps_offload_cmd(PADAPTER padapter, u8 p2p_ps_state); +#endif /* CONFIG_P2P */ + +#endif/* __RTL8814A_CMD_H__ */ diff --git a/hal/rtl8814a_dm.h b/hal/rtl8814a_dm.h new file mode 100644 index 0000000..9762c1b --- /dev/null +++ b/hal/rtl8814a_dm.h @@ -0,0 +1,23 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#ifndef __RTL8814A_DM_H__ +#define __RTL8814A_DM_H__ + +void rtl8814_init_dm_priv(PADAPTER Adapter); +void rtl8814_deinit_dm_priv(PADAPTER Adapter); +void rtl8814_InitHalDm(PADAPTER Adapter); +void rtl8814_HalDmWatchDog(PADAPTER Adapter); + +#endif diff --git a/hal/rtl8814a_hal.h b/hal/rtl8814a_hal.h new file mode 100644 index 0000000..f3c6af4 --- /dev/null +++ b/hal/rtl8814a_hal.h @@ -0,0 +1,331 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#ifndef __RTL8814A_HAL_H__ +#define __RTL8814A_HAL_H__ + +/* #include "hal_com.h" */ +#include "hal_data.h" + +/* include HAL Related header after HAL Related compiling flags */ +#include "rtl8814a_spec.h" +#include "rtl8814a_rf.h" +#include "rtl8814a_dm.h" +#include "rtl8814a_recv.h" +#include "rtl8814a_xmit.h" +#include "rtl8814a_cmd.h" +#include "rtl8814a_led.h" +#include "Hal8814PwrSeq.h" +#include "Hal8814PhyReg.h" +#include "Hal8814PhyCfg.h" +#ifdef DBG_CONFIG_ERROR_DETECT + #include "rtl8814a_sreset.h" +#endif /* DBG_CONFIG_ERROR_DETECT */ + +enum { + VOLTAGE_V25 = 0x03, + LDOE25_SHIFT = 28 , +}; +/* max. iram is 64k , max dmen is 32k. Total = 96k = 0x18000*/ +#define FW_SIZE 0x18000 +#define FW_START_ADDRESS 0x1000 +typedef struct _RT_FIRMWARE_8814 { + FIRMWARE_SOURCE eFWSource; +#ifdef CONFIG_EMBEDDED_FWIMG + u8 *szFwBuffer; +#else + u8 szFwBuffer[FW_SIZE]; +#endif + u32 ulFwLength; +} RT_FIRMWARE_8814, *PRT_FIRMWARE_8814; + +#define PAGE_SIZE_TX_8814 PAGE_SIZE_128 +/* BCN rsvd_page_num = MAX_BEACON_LEN / PAGE_SIZE_TX_8814 + * PS-Poll:1, Null Data:1,Qos Null Data:1,BT Qos Null Data:1,CTS-2-SELF,LTE QoS Null*/ + +#define BCNQ_PAGE_NUM_8814 (MAX_BEACON_LEN / PAGE_SIZE_TX_8814 + 6) /*0x08*/ + +#define Rtl8814A_NIC_PWR_ON_FLOW rtl8814A_power_on_flow +#define Rtl8814A_NIC_RF_OFF_FLOW rtl8814A_radio_off_flow +#define Rtl8814A_NIC_DISABLE_FLOW rtl8814A_card_disable_flow +#define Rtl8814A_NIC_ENABLE_FLOW rtl8814A_card_enable_flow +#define Rtl8814A_NIC_SUSPEND_FLOW rtl8814A_suspend_flow +#define Rtl8814A_NIC_RESUME_FLOW rtl8814A_resume_flow +#define Rtl8814A_NIC_PDN_FLOW rtl8814A_hwpdn_flow +#define Rtl8814A_NIC_LPS_ENTER_FLOW rtl8814A_enter_lps_flow +#define Rtl8814A_NIC_LPS_LEAVE_FLOW rtl8814A_leave_lps_flow + +/* ***************************************************** + * New Firmware Header(8-byte alinment required) + * ***************************************************** + * --- LONG WORD 0 ---- */ +#define GET_FIRMWARE_HDR_SIGNATURE_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr, 0, 16) +#define GET_FIRMWARE_HDR_CATEGORY_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr, 16, 8) /* AP/NIC and USB/PCI */ +#define GET_FIRMWARE_HDR_FUNCTION_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr, 24, 8) /* Reserved for different FW function indcation, for further use when driver needs to download different FW in different conditions */ +#define GET_FIRMWARE_HDR_VERSION_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+4, 0, 16)/* FW Version */ +#define GET_FIRMWARE_HDR_SUB_VER_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+4, 16, 8) /* FW Subversion, default 0x00 */ +#define GET_FIRMWARE_HDR_SUB_IDX_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+4, 24, 8) /* FW Subversion Index */ + +/* --- LONG WORD 1 ---- */ +#define GET_FIRMWARE_HDR_SVN_IDX_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+8, 0, 32)/* The SVN entry index */ +#define GET_FIRMWARE_HDR_RSVD1_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+12, 0, 32) + +/* --- LONG WORD 2 ---- */ +#define GET_FIRMWARE_HDR_MONTH_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+16, 0, 8) /* Release time Month field */ +#define GET_FIRMWARE_HDR_DATE_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+16, 8, 8) /* Release time Date field */ +#define GET_FIRMWARE_HDR_HOUR_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+16, 16, 8)/* Release time Hour field */ +#define GET_FIRMWARE_HDR_MINUTE_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+16, 24, 8)/* Release time Minute field */ +#define GET_FIRMWARE_HDR_YEAR_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+20, 0, 16)/* Release time Year field */ +#define GET_FIRMWARE_HDR_FOUNDRY_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+20, 16, 8)/* Release time Foundry field */ +#define GET_FIRMWARE_HDR_RSVD2_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+20, 24, 8) + +/* --- LONG WORD 3 ---- */ +#define GET_FIRMWARE_HDR_MEM_UASGE_DL_FROM_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+24, 0, 1) +#define GET_FIRMWARE_HDR_MEM_UASGE_BOOT_FROM_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+24, 1, 1) +#define GET_FIRMWARE_HDR_MEM_UASGE_BOOT_LOADER_3081(__FwHdr)LE_BITS_TO_4BYTE(__FwHdr+24, 2, 1) +#define GET_FIRMWARE_HDR_MEM_UASGE_IRAM_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+24, 3, 1) +#define GET_FIRMWARE_HDR_MEM_UASGE_ERAM_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+24, 4, 1) +#define GET_FIRMWARE_HDR_MEM_UASGE_RSVD4_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+24, 5, 3) +#define GET_FIRMWARE_HDR_RSVD3_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+24, 8, 8) +#define GET_FIRMWARE_HDR_BOOT_LOADER_SZ_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+24, 16, 16) +#define GET_FIRMWARE_HDR_RSVD5_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+28, 0, 32) + +/* --- LONG WORD 4 ---- */ +#define GET_FIRMWARE_HDR_TOTAL_DMEM_SZ_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+36, 0, 32) +#define GET_FIRMWARE_HDR_FW_CFG_SZ_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+36, 0, 16) +#define GET_FIRMWARE_HDR_FW_ATTR_SZ_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+36, 16, 16) + +/* --- LONG WORD 5 ---- */ +#define GET_FIRMWARE_HDR_IROM_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+40, 0, 32) +#define GET_FIRMWARE_HDR_EROM_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+44, 0, 32) + +/* --- LONG WORD 6 ---- */ +#define GET_FIRMWARE_HDR_IRAM_SZ_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+48, 0, 32) +#define GET_FIRMWARE_HDR_ERAM_SZ_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+52, 0, 32) + +/* --- LONG WORD 7 ---- */ +#define GET_FIRMWARE_HDR_RSVD6_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+56, 0, 32) +#define GET_FIRMWARE_HDR_RSVD7_3081(__FwHdr) LE_BITS_TO_4BYTE(__FwHdr+60, 0, 32) + + + +/* + * 2013/08/16 MH MOve from SDIO.h for common use. + * */ +#if defined(CONFIG_SDIO_HCI) || defined(CONFIG_USB_HCI) + #define TRX_SHARE_MODE_8814A 0 /* TRX Buffer Share Index */ + #define BASIC_RXFF_SIZE_8814A 24576/* Basic RXFF Size is 24K = 24*1024 Unit: Byte */ + #define TRX_SHARE_BUFF_UNIT_8814A 65536/* TRX Share Buffer unit Size 64K = 64*1024 Unit: Byte */ + #define TRX_SHARE_BUFF_UNIT_PAGE_8814A (TRX_SHARE_BUFF_UNIT_8814A/PAGE_SIZE_8814A)/* 512 Pages */ + + /* Origin: */ + #define HPQ_PGNUM_8814A 0x20 /* High Queue */ + #define LPQ_PGNUM_8814A 0x20 /* Low Queue */ + #define NPQ_PGNUM_8814A 0x20 /* Normal Queue */ + #define EPQ_PGNUM_8814A 0x20 /* Extra Queue */ + +#else /* #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_USB_HCI) */ + + #define HPQ_PGNUM_8814A 20 + #define NPQ_PGNUM_8814A 20 + #define LPQ_PGNUM_8814A 20 /* 1972 */ + #define EPQ_PGNUM_8814A 20 + #define BCQ_PGNUM_8814A 32 + +#endif /* #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_USB_HCI) */ + +#ifdef CONFIG_WOWLAN + #define WOWLAN_PAGE_NUM_8814 0x06 +#else + #define WOWLAN_PAGE_NUM_8814 0x00 +#endif + +#define PAGE_SIZE_8814A 128/* TXFF Page Size, Unit: Byte */ +#define MAX_RX_DMA_BUFFER_SIZE_8814A 0x5C00 /* BASIC_RXFF_SIZE_8814A + TRX_SHARE_MODE_8814A * TRX_SHARE_BUFF_UNIT_8814A */ /* Basic RXFF Size + ShareBuffer Size */ +#define TX_PAGE_BOUNDARY_8814A TXPKT_PGNUM_8814A /* Need to enlarge boundary, by KaiYuan */ +#define TX_PAGE_BOUNDARY_WOWLAN_8814A TXPKT_PGNUM_8814A /* TODO: 20130415 KaiYuan Check this value later */ + +#ifdef CONFIG_FW_C2H_DEBUG + #define RX_DMA_RESERVED_SIZE_8814A 0x100 /* 256B, reserved for c2h debug message */ +#else + #define RX_DMA_RESERVED_SIZE_8814A 0x0 /* 0B */ +#endif +#define RX_DMA_BOUNDARY_8814A (MAX_RX_DMA_BUFFER_SIZE_8814A - RX_DMA_RESERVED_SIZE_8814A - 1) + +#define TOTAL_PGNUM_8814A 2048 +#define TXPKT_PGNUM_8814A (2048 - BCNQ_PAGE_NUM_8814-WOWLAN_PAGE_NUM_8814) +#define PUB_PGNUM_8814A (TXPKT_PGNUM_8814A-HPQ_PGNUM_8814A-NPQ_PGNUM_8814A-LPQ_PGNUM_8814A-EPQ_PGNUM_8814A) + +/* Note: For WMM Normal Chip Setting ,modify later */ +#define WMM_NORMAL_TX_TOTAL_PAGE_NUMBER_8814A TX_PAGE_BOUNDARY_8814A +#define WMM_NORMAL_TX_PAGE_BOUNDARY_8814A (WMM_NORMAL_TX_TOTAL_PAGE_NUMBER_8814A + 1) + +#define DRIVER_EARLY_INT_TIME_8814 0x05 +#define BCN_DMA_ATIME_INT_TIME_8814 0x02 + + +#define MAX_PAGE_SIZE 4096 /* @ page : 4k bytes */ + +#define EFUSE_MAX_SECTION_JAGUAR 64 + +#define HWSET_MAX_SIZE_8814A 512 + +#define EFUSE_REAL_CONTENT_LEN_8814A 1024 +#define EFUSE_MAX_BANK_8814A 2 + +#define EFUSE_MAP_LEN_8814A 512 +#define EFUSE_MAX_SECTION_8814A 64 +#define EFUSE_MAX_WORD_UNIT_8814A 4 +#define EFUSE_PROTECT_BYTES_BANK_8814A 16 + +#define EFUSE_IC_ID_OFFSET_8814A 506 /* For some inferiority IC purpose. added by Roger, 2009.09.02. */ +#define AVAILABLE_EFUSE_ADDR_8814A(addr) (addr < EFUSE_REAL_CONTENT_LEN_8814A) + +/*------------------------------------------------------------------------- +Chip specific +-------------------------------------------------------------------------*/ + +/* pic buffer descriptor */ +#if 1 /* according to the define in the rtw_xmit.h, rtw_recv.h */ + #define RTL8814AE_SEG_NUM TX_BUFFER_SEG_NUM /* 0:2 seg, 1: 4 seg, 2: 8 seg */ + #define TX_DESC_NUM_8814A TX_BD_NUM /* 128 */ + #define RX_DESC_NUM_8814A PCI_MAX_RX_COUNT /* 128 */ + #ifdef CONFIG_CONCURRENT_MODE + #define BE_QUEUE_TX_DESC_NUM_8814A (TX_BD_NUM<<1) /* 256 */ + #else + #define BE_QUEUE_TX_DESC_NUM_8814A (TX_BD_NUM+(TX_BD_NUM>>1)) /* 192 */ + #endif +#else + #define RTL8814AE_SEG_NUM TX_BUFFER_SEG_NUM /* 0:2 seg, 1: 4 seg, 2: 8 seg */ + #define TX_DESC_NUM_8814A 128 /* 1024//2048 change by ylb 20130624 */ + #define RX_DESC_NUM_8814A 128 /* 1024 //512 change by ylb 20130624 */ +#endif + +/* To prevent out of boundary programming case, leave 1byte and program full section + * 9bytes + 1byt + 5bytes and pre 1byte. + * For worst case: + * | 1byte|----8bytes----|1byte|--5bytes--| + * | | Reserved(14bytes) | + * */ +#define EFUSE_OOB_PROTECT_BYTES 15 /* PG data exclude header, dummy 6 bytes frome CP test and reserved 1byte. */ + +#ifdef CONFIG_FILE_FWIMG +extern char *rtw_fw_file_path; +#ifdef CONFIG_WOWLAN +extern char *rtw_fw_wow_file_path; +#endif +#ifdef CONFIG_MP_INCLUDED +extern char *rtw_fw_mp_bt_file_path; +#endif /* CONFIG_MP_INCLUDED */ +#endif /* CONFIG_FILE_FWIMG */ + +/* rtl8814_hal_init.c */ +s32 FirmwareDownload8814A(PADAPTER Adapter, BOOLEAN bUsedWoWLANFw); +void InitializeFirmwareVars8814(PADAPTER padapter); + +void +Hal_InitEfuseVars_8814A( + PADAPTER Adapter +); + +s32 InitLLTTable8814A( + PADAPTER Adapter +); + + +void InitRDGSetting8814A(PADAPTER padapter); + +/* void CheckAutoloadState8812A(PADAPTER padapter); */ + +/* EFuse */ +u8 GetEEPROMSize8814A(PADAPTER padapter); +void hal_InitPGData_8814A( + PADAPTER padapter, + u8 *PROMContent +); + +void hal_ReadPROMVersion8814A(PADAPTER padapter, u8 *hwinfo, BOOLEAN AutoLoadFail); +void hal_ReadTxPowerInfo8814A(PADAPTER padapter, u8 *hwinfo, BOOLEAN AutoLoadFail); +void hal_ReadBoardType8814A(PADAPTER pAdapter, u8 *hwinfo, BOOLEAN AutoLoadFail); +void hal_ReadThermalMeter_8814A(PADAPTER Adapter, u8 *PROMContent, BOOLEAN AutoloadFail); +void hal_ReadChannelPlan8814A(PADAPTER padapter, u8 *hwinfo, BOOLEAN AutoLoadFail); +void hal_EfuseParseXtal_8814A(PADAPTER pAdapter, u8 *hwinfo, BOOLEAN AutoLoadFail); +void hal_ReadAntennaDiversity8814A(PADAPTER pAdapter, u8 *PROMContent, BOOLEAN AutoLoadFail); +void hal_Read_TRX_antenna_8814A(PADAPTER Adapter, u8 *PROMContent, BOOLEAN AutoloadFail); +void hal_ReadAmplifierType_8814A( + PADAPTER Adapter +); +void hal_ReadPAType_8814A( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoloadFail, + u8 *pPAType, + u8 *pLNAType +); + +void hal_ReadPowerTrackingType_8814A(PADAPTER Adapter, u8 *PROMContent, BOOLEAN AutoloadFail); + +void hal_GetRxGainOffset_8814A( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoloadFail +); +void Hal_EfuseParseKFreeData_8814A( + PADAPTER Adapter, + u8 *PROMContent, + BOOLEAN AutoloadFail); +void hal_ReadRFEType_8814A(PADAPTER Adapter, u8 *PROMContent, BOOLEAN AutoloadFail); +void hal_EfuseParseBTCoexistInfo8814A(PADAPTER Adapter, u8 *hwinfo, BOOLEAN AutoLoadFail); + +/* void hal_ReadUsbType_8812AU(PADAPTER Adapter, u8 *PROMContent, BOOLEAN AutoloadFail); + * int FirmwareDownloadBT(PADAPTER Adapter, PRT_MP_FIRMWARE pFirmware); */ +void hal_ReadRemoteWakeup_8814A(PADAPTER padapter, u8 *hwinfo, BOOLEAN AutoLoadFail); +u8 MgntQuery_NssTxRate(u16 Rate); + +/* BOOLEAN HalDetectPwrDownMode8812(PADAPTER Adapter); */ + +#ifdef CONFIG_WOWLAN + void Hal_DetectWoWMode(PADAPTER pAdapter); +#endif /* CONFIG_WOWLAN */ + +void _InitBeaconParameters_8814A(PADAPTER padapter); +void SetBeaconRelatedRegisters8814A(PADAPTER padapter); + +void ReadRFType8814A(PADAPTER padapter); +void InitDefaultValue8814A(PADAPTER padapter); + +u8 SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval); +void GetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval); +u8 SetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval); +u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval); +void rtl8814_set_hal_ops(struct hal_ops *pHalFunc); +void init_hal_spec_8814a(_adapter *adapter); + +void rtl8814_start_thread(PADAPTER padapter); +void rtl8814_stop_thread(PADAPTER padapter); + + +#ifdef CONFIG_PCI_HCI + BOOLEAN InterruptRecognized8814AE(PADAPTER Adapter); + void UpdateInterruptMask8814AE(PADAPTER Adapter, u32 AddMSR, u32 AddMSR1, u32 RemoveMSR, u32 RemoveMSR1); + void InitMAC_TRXBD_8814AE(PADAPTER Adapter); + void rtl8814ae_reset_desc_ring(_adapter *padapter); + u16 get_txbd_rw_reg(u16 ff_hwaddr); +#endif + +#ifdef CONFIG_BT_COEXIST + void rtl8814a_combo_card_WifiOnlyHwInit(PADAPTER Adapter); +#endif + +#endif /* __RTL8188E_HAL_H__ */ diff --git a/hal/rtl8814a_led.h b/hal/rtl8814a_led.h new file mode 100644 index 0000000..cc45792 --- /dev/null +++ b/hal/rtl8814a_led.h @@ -0,0 +1,36 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#ifndef __RTL8814A_LED_H__ +#define __RTL8814A_LED_H__ + +#ifdef CONFIG_RTW_SW_LED +/* ******************************************************************************** + * Interface to manipulate LED objects. + * ******************************************************************************** */ +#ifdef CONFIG_USB_HCI + void rtl8814au_InitSwLeds(PADAPTER padapter); + void rtl8814au_DeInitSwLeds(PADAPTER padapter); +#endif /* CONFIG_USB_HCI */ +#ifdef CONFIG_PCI_HCI + void rtl8814ae_InitSwLeds(PADAPTER padapter); + void rtl8814ae_DeInitSwLeds(PADAPTER padapter); +#endif /* CONFIG_PCI_HCI */ +#ifdef CONFIG_SDIO_HCI + void rtl8814s_InitSwLeds(PADAPTER padapter); + void rtl8814s_DeInitSwLeds(PADAPTER padapter); +#endif /* CONFIG_SDIO_HCI */ + +#endif /* __RTL8814A_LED_H__ */ +#endif /*CONFIG_RTW_SW_LED*/ diff --git a/hal/rtl8814a_recv.h b/hal/rtl8814a_recv.h new file mode 100644 index 0000000..68da633 --- /dev/null +++ b/hal/rtl8814a_recv.h @@ -0,0 +1,182 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#ifndef __RTL8814A_RECV_H__ +#define __RTL8814A_RECV_H__ + +#if defined(CONFIG_USB_HCI) + + #ifndef MAX_RECVBUF_SZ + #ifndef CONFIG_MINIMAL_MEMORY_USAGE + #ifdef CONFIG_PLATFORM_MSTAR + #define MAX_RECVBUF_SZ (8192) /* 8K */ + #else + #define MAX_RECVBUF_SZ (32768) /* 32k */ + #endif + /* #define MAX_RECVBUF_SZ (24576) */ /* 24k */ + /* #define MAX_RECVBUF_SZ (20480) */ /* 20K */ + /* #define MAX_RECVBUF_SZ (10240) */ /* 10K */ + /* #define MAX_RECVBUF_SZ (15360) */ /* 15k < 16k */ + /* #define MAX_RECVBUF_SZ (8192+1024) */ /* 8K+1k */ + #else + #define MAX_RECVBUF_SZ (4000) /* about 4K */ + #endif + #endif /* !MAX_RECVBUF_SZ */ + +#elif defined(CONFIG_PCI_HCI) + /* #ifndef CONFIG_MINIMAL_MEMORY_USAGE */ + /* #define MAX_RECVBUF_SZ (9100) */ + /* #else */ + #define MAX_RECVBUF_SZ (4000) /* about 4K + * #endif */ + + +#elif defined(CONFIG_SDIO_HCI) + #if 0 + /* temp solution */ + #ifdef CONFIG_SDIO_RX_COPY + #define MAX_RECVBUF_SZ (10240) + #else /* !CONFIG_SDIO_RX_COPY */ + #define MAX_RECVBUF_SZ MAX_RX_DMA_BUFFER_SIZE_8821 + #endif /* !CONFIG_SDIO_RX_COPY */ + #endif +#endif + + +/* RX buffer descriptor */ +/* DWORD 0 */ +#define SET_RX_BUFFER_DESC_DATA_LENGTH_8814A(__pRxStatusDesc, __Value) SET_BITS_TO_LE_4BYTE(__pRxStatusDesc, 0, 14, __Value) +#define SET_RX_BUFFER_DESC_LS_8814A(__pRxStatusDesc, __Value) SET_BITS_TO_LE_4BYTE(__pRxStatusDesc, 14, 1, __Value) +#define SET_RX_BUFFER_DESC_FS_8814A(__pRxStatusDesc, __Value) SET_BITS_TO_LE_4BYTE(__pRxStatusDesc, 15, 1, __Value) +#define SET_RX_BUFFER_DESC_TOTAL_LENGTH_8814A(__pRxStatusDesc, __Value) SET_BITS_TO_LE_4BYTE(__pRxStatusDesc, 16, 16, __Value) + +#define GET_RX_BUFFER_DESC_OWN_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 31, 1) +#define GET_RX_BUFFER_DESC_LS_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 14, 1) +#define GET_RX_BUFFER_DESC_FS_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 15, 1) +#define GET_RX_BUFFER_DESC_TOTAL_LENGTH_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 16, 15) + +/* DWORD 1 */ +#define SET_RX_BUFFER_PHYSICAL_LOW_8814A(__pRxStatusDesc, __Value) SET_BITS_TO_LE_4BYTE(__pRxStatusDesc+4, 0, 32, __Value) +#define GET_RX_BUFFER_PHYSICAL_LOW_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 0, 32) + +/* DWORD 2 */ +#define SET_RX_BUFFER_PHYSICAL_HIGH_8814A(__pRxStatusDesc, __Value) SET_BITS_TO_LE_4BYTE(__pRxStatusDesc+8, 0, 32, __Value) + +/* DWORD 3*/ /* RESERVED */ + + +#if 0 + /* ============= + * RX Info + * ============== */ +#endif +/* DWORD 0 */ +#define SET_RX_STATUS_DESC_PKT_LEN_8814A(__pRxStatusDesc, __Value) SET_BITS_TO_LE_4BYTE(__pRxStatusDesc, 0, 14, __Value) +#define SET_RX_STATUS_DESC_EOR_8814A(__pRxStatusDesc, __Value) SET_BITS_TO_LE_4BYTE(__pRxStatusDesc, 30, 1, __Value) +#define SET_RX_STATUS_DESC_OWN_8814AE(__pRxStatusDesc, __Value) SET_BITS_TO_LE_4BYTE(__pRxStatusDesc, 31, 1, __Value) + +#define GET_RX_STATUS_DESC_PKT_LEN_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 0, 14) +#define GET_RX_STATUS_DESC_CRC32_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 14, 1) +#define GET_RX_STATUS_DESC_ICV_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 15, 1) +#define GET_RX_STATUS_DESC_DRVINFO_SIZE_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 16, 4) +#define GET_RX_STATUS_DESC_SECURITY_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 20, 3) +#define GET_RX_STATUS_DESC_QOS_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 23, 1) +#define GET_RX_STATUS_DESC_SHIFT_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 24, 2) +#define GET_RX_STATUS_DESC_PHY_STATUS_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 26, 1) +#define GET_RX_STATUS_DESC_SWDEC_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 27, 1) +#define GET_RX_STATUS_DESC_LAST_SEG_8814AE(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 28, 1) +#define GET_RX_STATUS_DESC_EOR_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 30, 1) + +/* DWORD 1 */ +#define GET_RX_STATUS_DESC_MACID_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 0, 7) +#define GET_RX_STATUS_DESC_EXT_SECTYPE_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 7, 1)/* 20130415 KaiYuan add for 8814 */ +#define GET_RX_STATUS_DESC_TID_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 8, 4) +#define GET_RX_STATUS_DESC_MACID_VLD_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 12, 1) +#define GET_RX_STATUS_DESC_AMSDU_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 13, 1) +#define GET_RX_STATUS_DESC_RXID_MATCH_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 14, 1) +#define GET_RX_STATUS_DESC_PAGGR_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 15, 1) +#define GET_RX_STATUS_DESC_TCPOFFLOAD_CHKERR_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 20, 1) +#define GET_RX_STATUS_DESC_TCPOFFLOAD_IPVER_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 21, 1) +#define GET_RX_STATUS_DESC_TCPOFFLOAD_IS_TCPUDP_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 22, 1) +#define GET_RX_STATUS_DESC_TCPOFFLOAD_CHK_VLD_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 23, 1) +#define GET_RX_STATUS_DESC_PAM_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 24, 1) +#define GET_RX_STATUS_DESC_PWR_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 25, 1) +#define GET_RX_STATUS_DESC_MORE_DATA_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 26, 1) +#define GET_RX_STATUS_DESC_MORE_FRAG_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 27, 1) +#define GET_RX_STATUS_DESC_TYPE_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 28, 2) +#define GET_RX_STATUS_DESC_FIRST_SEG_8814AE(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 29, 1) +#define GET_RX_STATUS_DESC_EOR_8814AE(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc, 30, 1) +#define GET_RX_STATUS_DESC_MC_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 30, 1) +#define GET_RX_STATUS_DESC_BC_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+4, 31, 1) + +/* DWORD 2 */ +#define GET_RX_STATUS_DESC_SEQ_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+8, 0, 12) +#define GET_RX_STATUS_DESC_FRAG_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+8, 12, 4) +#ifdef CONFIG_USB_RX_AGGREGATION + #define GET_RX_STATUS_DESC_USB_AGG_PKTNUM_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+8, 16, 8) +#else + #define GET_RX_STATUS_DESC_RX_IS_QOS_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+8, 16, 1) +#endif +#define GET_RX_STATUS_DESC_WLANHD_IV_LEN_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+8, 18, 6) +#define GET_RX_STATUS_DESC_HWRSVD_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+8, 24, 4) +#define GET_RX_STATUS_C2H_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+8, 28, 1) +#define GET_RX_STATUS_DESC_FCS_OK_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+8, 31, 1) + +/* DWORD 3 */ +#define GET_RX_STATUS_DESC_RX_RATE_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+12, 0, 7) +#define GET_RX_STATUS_DESC_BSSID_FIT_H_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+12, 7, 3)/* 20130415 KaiYuan add for 8814 */ +#define GET_RX_STATUS_DESC_HTC_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+12, 10, 1) +#define GET_RX_STATUS_DESC_EOSP_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+12, 11, 1) +#define GET_RX_STATUS_DESC_BSSID_FIT_L_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+12, 12, 2) +#define GET_RX_STATUS_DESC_DMA_AGG_NUM_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+12, 16, 8)/* 20130415 KaiYuan Check if it exist anymore */ +#define GET_RX_STATUS_DESC_PATTERN_MATCH_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+12, 29, 1) +#define GET_RX_STATUS_DESC_UNICAST_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+12, 30, 1) +#define GET_RX_STATUS_DESC_MAGIC_WAKE_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+12, 31, 1) + +/* DWORD 4 */ +#define GET_RX_STATUS_DESC_PATTERN_IDX_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+16, 0, 8) +#define GET_RX_STATUS_DESC_RX_EOF_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+16, 8, 1) +#define GET_RX_STATUS_DESC_RX_SCRAMBLER_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+16, 9, 7) +#define GET_RX_STATUS_DESC_RX_PRE_NDP_VLD_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+16, 16, 1) +#define GET_RX_STATUS_DESC_A1_FIT_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+16, 24, 5) + + +/* DWORD 5 */ +#define GET_RX_STATUS_DESC_TSFL_8814A(__pRxStatusDesc) LE_BITS_TO_4BYTE(__pRxStatusDesc+20, 0, 32) + + +/* Rx smooth factor */ +#define Rx_Smooth_Factor (20) + +#ifdef CONFIG_USB_HCI + s32 rtl8814au_init_recv_priv(PADAPTER padapter); + void rtl8814au_free_recv_priv(PADAPTER padapter); +#endif + +#ifdef CONFIG_PCI_HCI + s32 rtl8814ae_init_recv_priv(PADAPTER padapter); + void rtl8814ae_free_recv_priv(PADAPTER padapter); +#endif + +#if 0 + /* temp solution */ + #ifdef CONFIG_SDIO_HCI + s32 InitRecvPriv8821AS(PADAPTER padapter); + void FreeRecvPriv8821AS(PADAPTER padapter); + #endif /* CONFIG_SDIO_HCI */ +#endif + +void rtl8814_query_rx_desc_status(union recv_frame *precvframe, u8 *pdesc); + +#endif /* __RTL8814A_RECV_H__ */ diff --git a/hal/rtl8814a_rf.h b/hal/rtl8814a_rf.h new file mode 100644 index 0000000..9bb099c --- /dev/null +++ b/hal/rtl8814a_rf.h @@ -0,0 +1,28 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#ifndef __RTL8814A_RF_H__ +#define __RTL8814A_RF_H__ + +void +PHY_RF6052SetBandwidth8814A( + PADAPTER Adapter, + enum channel_width Bandwidth); + + +int +PHY_RF6052_Config_8814A( + PADAPTER Adapter); + +#endif/* __RTL8188E_RF_H__ */ diff --git a/hal/rtl8814a_spec.h b/hal/rtl8814a_spec.h new file mode 100644 index 0000000..616f5fd --- /dev/null +++ b/hal/rtl8814a_spec.h @@ -0,0 +1,648 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#ifndef __RTL8814A_SPEC_H__ +#define __RTL8814A_SPEC_H__ + +#include + + +/* ************************************************************ + * + * ************************************************************ */ + +/* ----------------------------------------------------- + * + * 0x0000h ~ 0x00FFh System Configuration + * + * ----------------------------------------------------- */ +#define REG_SYS_ISO_CTRL_8814A 0x0000 /* 2 Byte */ +#define REG_SYS_FUNC_EN_8814A 0x0002 /* 2 Byte */ +#define REG_SYS_PW_CTRL_8814A 0x0004 /* 4 Byte */ +#define REG_SYS_CLKR_8814A 0x0008 /* 2 Byte */ +#define REG_SYS_EEPROM_CTRL_8814A 0x000A /* 2 Byte */ +#define REG_EE_VPD_8814A 0x000C /* 2 Byte */ +#define REG_SYS_SWR_CTRL1_8814A 0x0010 /* 1 Byte */ +#define REG_SPS0_CTRL_8814A 0x0011 /* 7 Byte */ +#define REG_SYS_SWR_CTRL3_8814A 0x0018 /* 4 Byte */ +#define REG_RSV_CTRL_8814A 0x001C /* 3 Byte */ +#define REG_RF_CTRL0_8814A 0x001F /* 1 Byte */ +#define REG_RF_CTRL1_8814A 0x0020 /* 1 Byte */ +#define REG_RF_CTRL2_8814A 0x0021 /* 1 Byte */ +#define REG_LPLDO_CTRL_8814A 0x0023 /* 1 Byte */ +#define REG_AFE_CTRL1_8814A 0x0024 /* 4 Byte */ +#define REG_AFE_CTRL2_8814A 0x0028 /* 4 Byte */ +#define REG_AFE_CTRL3_8814A 0x002c /* 4 Byte */ +#define REG_EFUSE_CTRL_8814A 0x0030 +#define REG_LDO_EFUSE_CTRL_8814A 0x0034 +#define REG_PWR_DATA_8814A 0x0038 +#define REG_CAL_TIMER_8814A 0x003C +#define REG_ACLK_MON_8814A 0x003E +#define REG_GPIO_MUXCFG_8814A 0x0040 +#define REG_GPIO_IO_SEL_8814A 0x0042 +#define REG_MAC_PINMUX_CFG_8814A 0x0043 +#define REG_GPIO_PIN_CTRL_8814A 0x0044 +#define REG_GPIO_INTM_8814A 0x0048 +#define REG_LEDCFG0_8814A 0x004C +#define REG_LEDCFG1_8814A 0x004D +#define REG_LEDCFG2_8814A 0x004E +#define REG_LEDCFG3_8814A 0x004F +#define REG_FSIMR_8814A 0x0050 +#define REG_FSISR_8814A 0x0054 +#define REG_HSIMR_8814A 0x0058 +#define REG_HSISR_8814A 0x005c +#define REG_GPIO_EXT_CTRL_8814A 0x0060 +#define REG_GPIO_STATUS_8814A 0x006C +#define REG_SDIO_CTRL_8814A 0x0070 +#define REG_HCI_OPT_CTRL_8814A 0x0074 +#define REG_RF_CTRL3_8814A 0x0076 /* 1 Byte */ +#define REG_AFE_CTRL4_8814A 0x0078 +#define REG_8051FW_CTRL_8814A 0x0080 +#define REG_HIMR0_8814A 0x00B0 +#define REG_HISR0_8814A 0x00B4 +#define REG_HIMR1_8814A 0x00B8 +#define REG_HISR1_8814A 0x00BC +#define REG_SYS_CFG1_8814A 0x00F0 +#define REG_SYS_CFG2_8814A 0x00FC +#define REG_SYS_CFG3_8814A 0x1000 + +/* ----------------------------------------------------- + * + * 0x0100h ~ 0x01FFh MACTOP General Configuration + * + * ----------------------------------------------------- */ +#define REG_CR_8814A 0x0100 +#define REG_PBP_8814A 0x0104 +#define REG_PKT_BUFF_ACCESS_CTRL_8814A 0x0106 +#define REG_TRXDMA_CTRL_8814A 0x010C +#define REG_TRXFF_BNDY_8814A 0x0114 +#define REG_TRXFF_STATUS_8814A 0x0118 +#define REG_RXFF_PTR_8814A 0x011C +#define REG_CPWM_8814A 0x012F +#define REG_FWIMR_8814A 0x0130 +#define REG_FWISR_8814A 0x0134 +#define REG_FTIMR_8814A 0x0138 +#define REG_PKTBUF_DBG_CTRL_8814A 0x0140 +#define REG_RXPKTBUF_CTRL_8814A 0x0142 +#define REG_PKTBUF_DBG_DATA_L_8814A 0x0144 +#define REG_PKTBUF_DBG_DATA_H_8814A 0x0148 + +#define REG_WOWLAN_WAKE_REASON REG_MCUTST_WOWLAN + +#define REG_TC0_CTRL_8814A 0x0150 +#define REG_TC1_CTRL_8814A 0x0154 +#define REG_TC2_CTRL_8814A 0x0158 +#define REG_TC3_CTRL_8814A 0x015C +#define REG_TC4_CTRL_8814A 0x0160 +#define REG_TCUNIT_BASE_8814A 0x0164 +#define REG_RSVD3_8814A 0x0168 +#define REG_C2HEVT_MSG_NORMAL_8814A 0x01A0 +#define REG_C2HEVT_CLEAR_8814A 0x01AF +#define REG_MCUTST_1_8814A 0x01C0 +#define REG_MCUTST_WOWLAN_8814A 0x01C7 +#define REG_FMETHR_8814A 0x01C8 +#define REG_HMETFR_8814A 0x01CC +#define REG_HMEBOX_0_8814A 0x01D0 +#define REG_HMEBOX_1_8814A 0x01D4 +#define REG_HMEBOX_2_8814A 0x01D8 +#define REG_HMEBOX_3_8814A 0x01DC +#define REG_LLT_INIT_8814A 0x01E0 +#define REG_LLT_ADDR_8814A 0x01E4 /* 20130415 KaiYuan add for 8814 */ +#define REG_HMEBOX_EXT0_8814A 0x01F0 +#define REG_HMEBOX_EXT1_8814A 0x01F4 +#define REG_HMEBOX_EXT2_8814A 0x01F8 +#define REG_HMEBOX_EXT3_8814A 0x01FC + +/* ----------------------------------------------------- + * + * 0x0200h ~ 0x027Fh TXDMA Configuration + * + * ----------------------------------------------------- */ +#define REG_FIFOPAGE_CTRL_1_8814A 0x0200 +#define REG_FIFOPAGE_CTRL_2_8814A 0x0204 +#define REG_AUTO_LLT_8814A 0x0208 +#define REG_TXDMA_OFFSET_CHK_8814A 0x020C +#define REG_TXDMA_STATUS_8814A 0x0210 +#define REG_RQPN_NPQ_8814A 0x0214 +#define REG_TQPNT1_8814A 0x0218 +#define REG_TQPNT2_8814A 0x021C +#define REG_TQPNT3_8814A 0x0220 +#define REG_TQPNT4_8814A 0x0224 +#define REG_RQPN_CTRL_1_8814A 0x0228 +#define REG_RQPN_CTRL_2_8814A 0x022C +#define REG_FIFOPAGE_INFO_1_8814A 0x0230 +#define REG_FIFOPAGE_INFO_2_8814A 0x0234 +#define REG_FIFOPAGE_INFO_3_8814A 0x0238 +#define REG_FIFOPAGE_INFO_4_8814A 0x023C +#define REG_FIFOPAGE_INFO_5_8814A 0x0240 + + +/* ----------------------------------------------------- + * + * 0x0280h ~ 0x02FFh RXDMA Configuration + * + * ----------------------------------------------------- */ +#define REG_RXDMA_AGG_PG_TH_8814A 0x0280 +#define REG_RXPKT_NUM_8814A 0x0284 /* The number of packets in RXPKTBUF. */ +#define REG_RXDMA_CONTROL_8814A 0x0286 /* ?????? Control the RX DMA. */ +#define REG_RXDMA_STATUS_8814A 0x0288 +#define REG_RXDMA_MODE_8814A 0x0290 /* ?????? */ +#define REG_EARLY_MODE_CONTROL_8814A 0x02BC /* ?????? */ +#define REG_RSVD5_8814A 0x02F0 /* ?????? */ + + +/* ----------------------------------------------------- + * + * 0x0300h ~ 0x03FFh PCIe + * + * ----------------------------------------------------- */ +#define REG_PCIE_CTRL_REG_8814A 0x0300 +#define REG_INT_MIG_8814A 0x0304 /* Interrupt Migration */ +#define REG_BCNQ_TXBD_DESA_8814A 0x0308 /* TX Beacon Descriptor Address */ +#define REG_MGQ_TXBD_DESA_8814A 0x0310 /* TX Manage Queue Descriptor Address */ +#define REG_VOQ_TXBD_DESA_8814A 0x0318 /* TX VO Queue Descriptor Address */ +#define REG_VIQ_TXBD_DESA_8814A 0x0320 /* TX VI Queue Descriptor Address */ +#define REG_BEQ_TXBD_DESA_8814A 0x0328 /* TX BE Queue Descriptor Address */ +#define REG_BKQ_TXBD_DESA_8814A 0x0330 /* TX BK Queue Descriptor Address */ +#define REG_RXQ_RXBD_DESA_8814A 0x0338 /* RX Queue Descriptor Address */ +#define REG_HI0Q_TXBD_DESA_8814A 0x0340 +#define REG_HI1Q_TXBD_DESA_8814A 0x0348 +#define REG_HI2Q_TXBD_DESA_8814A 0x0350 +#define REG_HI3Q_TXBD_DESA_8814A 0x0358 +#define REG_HI4Q_TXBD_DESA_8814A 0x0360 +#define REG_HI5Q_TXBD_DESA_8814A 0x0368 +#define REG_HI6Q_TXBD_DESA_8814A 0x0370 +#define REG_HI7Q_TXBD_DESA_8814A 0x0378 +#define REG_MGQ_TXBD_NUM_8814A 0x0380 +#define REG_RX_RXBD_NUM_8814A 0x0382 +#define REG_VOQ_TXBD_NUM_8814A 0x0384 +#define REG_VIQ_TXBD_NUM_8814A 0x0386 +#define REG_BEQ_TXBD_NUM_8814A 0x0388 +#define REG_BKQ_TXBD_NUM_8814A 0x038A +#define REG_HI0Q_TXBD_NUM_8814A 0x038C +#define REG_HI1Q_TXBD_NUM_8814A 0x038E +#define REG_HI2Q_TXBD_NUM_8814A 0x0390 +#define REG_HI3Q_TXBD_NUM_8814A 0x0392 +#define REG_HI4Q_TXBD_NUM_8814A 0x0394 +#define REG_HI5Q_TXBD_NUM_8814A 0x0396 +#define REG_HI6Q_TXBD_NUM_8814A 0x0398 +#define REG_HI7Q_TXBD_NUM_8814A 0x039A +#define REG_TSFTIMER_HCI_8814A 0x039C + +/* Read Write Point */ +#define REG_VOQ_TXBD_IDX_8814A 0x03A0 +#define REG_VIQ_TXBD_IDX_8814A 0x03A4 +#define REG_BEQ_TXBD_IDX_8814A 0x03A8 +#define REG_BKQ_TXBD_IDX_8814A 0x03AC +#define REG_MGQ_TXBD_IDX_8814A 0x03B0 +#define REG_RXQ_TXBD_IDX_8814A 0x03B4 +#define REG_HI0Q_TXBD_IDX_8814A 0x03B8 +#define REG_HI1Q_TXBD_IDX_8814A 0x03BC +#define REG_HI2Q_TXBD_IDX_8814A 0x03C0 +#define REG_HI3Q_TXBD_IDX_8814A 0x03C4 +#define REG_HI4Q_TXBD_IDX_8814A 0x03C8 +#define REG_HI5Q_TXBD_IDX_8814A 0x03CC +#define REG_HI6Q_TXBD_IDX_8814A 0x03D0 +#define REG_HI7Q_TXBD_IDX_8814A 0x03D4 +#define REG_DBG_SEL_V1_8814A 0x03D8 +#define REG_PCIE_HRPWM1_V1_8814A 0x03D9 +#define REG_PCIE_HCPWM1_V1_8814A 0x03DA +#define REG_PCIE_CTRL2_8814A 0x03DB +#define REG_PCIE_HRPWM2_V1_8814A 0x03DC +#define REG_PCIE_HCPWM2_V1_8814A 0x03DE +#define REG_PCIE_H2C_MSG_V1_8814A 0x03E0 +#define REG_PCIE_C2H_MSG_V1_8814A 0x03E4 +#define REG_DBI_WDATA_V1_8814A 0x03E8 +#define REG_DBI_RDATA_V1_8814A 0x03EC +#define REG_DBI_FLAG_V1_8814A 0x03F0 +#define REG_MDIO_V1_8814A 0x03F4 +#define REG_PCIE_MIX_CFG_8814A 0x03F8 +#define REG_DBG_8814A 0x03FC +/* ----------------------------------------------------- + * + * 0x0400h ~ 0x047Fh Protocol Configuration + * + * ----------------------------------------------------- */ +#define REG_VOQ_INFORMATION_8814A 0x0400 +#define REG_VIQ_INFORMATION_8814A 0x0404 +#define REG_BEQ_INFORMATION_8814A 0x0408 +#define REG_BKQ_INFORMATION_8814A 0x040C +#define REG_MGQ_INFORMATION_8814A 0x0410 +#define REG_HGQ_INFORMATION_8814A 0x0414 +#define REG_BCNQ_INFORMATION_8814A 0x0418 +#define REG_TXPKT_EMPTY_8814A 0x041A +#define REG_CPU_MGQ_INFORMATION_8814A 0x041C +#define REG_FWHW_TXQ_CTRL_8814A 0x0420 +#define REG_HWSEQ_CTRL_8814A 0x0423 +#define REG_TXPKTBUF_BCNQ_BDNY_8814A 0x0424 +/* #define REG_MGQ_BDNY_8814A 0x0425 */ +#define REG_LIFETIME_EN_8814A 0x0426 +/* #define REG_FW_FREE_TAIL_8814A 0x0427 */ +#define REG_SPEC_SIFS_8814A 0x0428 +#define REG_RETRY_LIMIT_8814A 0x042A +#define REG_TXBF_CTRL_8814A 0x042C +#define REG_DARFRC_8814A 0x0430 +#define REG_RARFRC_8814A 0x0438 +#define REG_RRSR_8814A 0x0440 +#define REG_ARFR0_8814A 0x0444 +#define REG_ARFR1_8814A 0x044C +#define REG_CCK_CHECK_8814A 0x0454 +#define REG_AMPDU_MAX_TIME_8814A 0x0455 +#define REG_TXPKTBUF_BCNQ1_BDNY_8814A 0x0456 +#define REG_AMPDU_MAX_LENGTH_8814A 0x0458 +#define REG_ACQ_STOP_8814A 0x045C +#define REG_NDPA_RATE_8814A 0x045D +#define REG_TX_HANG_CTRL_8814A 0x045E +#define REG_NDPA_OPT_CTRL_8814A 0x045F +#define REG_FAST_EDCA_CTRL_8814A 0x0460 +#define REG_RD_RESP_PKT_TH_8814A 0x0463 +#define REG_CMDQ_INFO_8814A 0x0464 +#define REG_Q4_INFO_8814A 0x0468 +#define REG_Q5_INFO_8814A 0x046C +#define REG_Q6_INFO_8814A 0x0470 +#define REG_Q7_INFO_8814A 0x0474 +#define REG_WMAC_LBK_BUF_HD_8814A 0x0478 +#define REG_MGQ_PGBNDY_8814A 0x047A +#define REG_INIRTS_RATE_SEL_8814A 0x0480 +#define REG_BASIC_CFEND_RATE_8814A 0x0481 +#define REG_STBC_CFEND_RATE_8814A 0x0482 +#define REG_DATA_SC_8814A 0x0483 +#define REG_MACID_SLEEP3_8814A 0x0484 +#define REG_MACID_SLEEP1_8814A 0x0488 +#ifdef CONFIG_WOWLAN + #define REG_TXPKTBUF_IV_LOW 0x0484 + #define REG_TXPKTBUF_IV_HIGH 0x0488 +#endif /* CONFIG_WOWLAN */ +#define REG_ARFR2_8814A 0x048C +#define REG_ARFR3_8814A 0x0494 +#define REG_ARFR4_8814A 0x049C +#define REG_ARFR5_8814A 0x04A4 +#define REG_TXRPT_START_OFFSET_8814A 0x04AC +#define REG_TRYING_CNT_TH_8814A 0x04B0 +#define REG_POWER_STAGE1_8814A 0x04B4 +#define REG_POWER_STAGE2_8814A 0x04B8 +#define REG_SW_AMPDU_BURST_MODE_CTRL_8814A 0x04BC +#define REG_PKT_LIFE_TIME_8814A 0x04C0 +#define REG_PKT_BE_BK_LIFE_TIME_8814A 0x04C2 /* ?????? */ +#define REG_STBC_SETTING_8814A 0x04C4 +#define REG_STBC_8814A 0x04C5 +#define REG_QUEUE_CTRL_8814A 0x04C6 +#define REG_SINGLE_AMPDU_CTRL_8814A 0x04C7 +#define REG_PROT_MODE_CTRL_8814A 0x04C8 +#define REG_MAX_AGGR_NUM_8814A 0x04CA +#define REG_RTS_MAX_AGGR_NUM_8814A 0x04CB +#define REG_BAR_MODE_CTRL_8814A 0x04CC +#define REG_RA_TRY_RATE_AGG_LMT_8814A 0x04CF +#define REG_MACID_SLEEP2_8814A 0x04D0 +#define REG_MACID_SLEEP0_8814A 0x04D4 +#define REG_HW_SEQ0_8814A 0x04D8 +#define REG_HW_SEQ1_8814A 0x04DA +#define REG_HW_SEQ2_8814A 0x04DC +#define REG_HW_SEQ3_8814A 0x04DE +#define REG_NULL_PKT_STATUS_8814A 0x04E0 +#define REG_PTCL_ERR_STATUS_8814A 0x04E2 +#define REG_DROP_PKT_NUM_8814A 0x04EC +#define REG_PTCL_TX_RPT_8814A 0x04F0 +#define REG_Dummy_8814A 0x04FC + + +/* ----------------------------------------------------- + * + * 0x0500h ~ 0x05FFh EDCA Configuration + * + * ----------------------------------------------------- */ +#define REG_EDCA_VO_PARAM_8814A 0x0500 +#define REG_EDCA_VI_PARAM_8814A 0x0504 +#define REG_EDCA_BE_PARAM_8814A 0x0508 +#define REG_EDCA_BK_PARAM_8814A 0x050C +#define REG_BCNTCFG_8814A 0x0510 +#define REG_PIFS_8814A 0x0512 +#define REG_RDG_PIFS_8814A 0x0513 +#define REG_SIFS_CTX_8814A 0x0514 +#define REG_SIFS_TRX_8814A 0x0516 +#define REG_AGGR_BREAK_TIME_8814A 0x051A +#define REG_SLOT_8814A 0x051B +#define REG_TX_PTCL_CTRL_8814A 0x0520 +#define REG_TXPAUSE_8814A 0x0522 +#define REG_DIS_TXREQ_CLR_8814A 0x0523 +#define REG_RD_CTRL_8814A 0x0524 +/* + * Format for offset 540h-542h: + * [3:0]: TBTT prohibit setup in unit of 32us. The time for HW getting beacon content before TBTT. + * [7:4]: Reserved. + * [19:8]: TBTT prohibit hold in unit of 32us. The time for HW holding to send the beacon packet. + * [23:20]: Reserved + * Description: + * | + * |<--Setup--|--Hold------------>| + * --------------|---------------------- + * | + * TBTT + * Note: We cannot update beacon content to HW or send any AC packets during the time between Setup and Hold. + * Described by Designer Tim and Bruce, 2011-01-14. + * */ +#define REG_TBTT_PROHIBIT_8814A 0x0540 +#define REG_RD_NAV_NXT_8814A 0x0544 +#define REG_NAV_PROT_LEN_8814A 0x0546 +#define REG_BCN_CTRL_8814A 0x0550 +#define REG_BCN_CTRL_1_8814A 0x0551 +#define REG_MBID_NUM_8814A 0x0552 +#define REG_DUAL_TSF_RST_8814A 0x0553 +#define REG_MBSSID_BCN_SPACE_8814A 0x0554 +#define REG_DRVERLYINT_8814A 0x0558 +#define REG_BCNDMATIM_8814A 0x0559 +#define REG_ATIMWND_8814A 0x055A +#define REG_USTIME_TSF_8814A 0x055C +#define REG_BCN_MAX_ERR_8814A 0x055D +#define REG_RXTSF_OFFSET_CCK_8814A 0x055E +#define REG_RXTSF_OFFSET_OFDM_8814A 0x055F +#define REG_TSFTR_8814A 0x0560 +#define REG_CTWND_8814A 0x0572 +#define REG_SECONDARY_CCA_CTRL_8814A 0x0577 /* ?????? */ +#define REG_PSTIMER_8814A 0x0580 +#define REG_TIMER0_8814A 0x0584 +#define REG_TIMER1_8814A 0x0588 +#define REG_BCN_PREDL_ITV_8814A 0x058F /* Pre download beacon interval */ +#define REG_ACMHWCTRL_8814A 0x05C0 +#define REG_P2P_RST_8814A 0x05F0 + +/* ----------------------------------------------------- + * + * 0x0600h ~ 0x07FFh WMAC Configuration + * + * ----------------------------------------------------- */ +#define REG_MAC_CR_8814A 0x0600 +#define REG_TCR_8814A 0x0604 +#define REG_RCR_8814A 0x0608 +#define REG_RX_PKT_LIMIT_8814A 0x060C +#define REG_RX_DLK_TIME_8814A 0x060D +#define REG_RX_DRVINFO_SZ_8814A 0x060F + +#define REG_MACID_8814A 0x0610 +#define REG_BSSID_8814A 0x0618 +#define REG_MAR_8814A 0x0620 +#define REG_MBIDCAMCFG_8814A 0x0628 + +#define REG_USTIME_EDCA_8814A 0x0638 +#define REG_MAC_SPEC_SIFS_8814A 0x063A +#define REG_RESP_SIFP_CCK_8814A 0x063C +#define REG_RESP_SIFS_OFDM_8814A 0x063E +#define REG_ACKTO_8814A 0x0640 +#define REG_CTS2TO_8814A 0x0641 +#define REG_EIFS_8814A 0x0642 + +#define REG_NAV_UPPER_8814A 0x0652 /* unit of 128 */ +#define REG_TRXPTCL_CTL_8814A 0x0668 + +/* Security */ +#define REG_CAMCMD_8814A 0x0670 +#define REG_CAMWRITE_8814A 0x0674 +#define REG_CAMREAD_8814A 0x0678 +#define REG_CAMDBG_8814A 0x067C +#define REG_SECCFG_8814A 0x0680 + +/* Power */ +#define REG_WOW_CTRL_8814A 0x0690 +#define REG_PS_RX_INFO_8814A 0x0692 +#define REG_UAPSD_TID_8814A 0x0693 +#define REG_WKFMCAM_NUM_8814A 0x0698 +#define REG_RXFLTMAP0_8814A 0x06A0 +#define REG_RXFLTMAP1_8814A 0x06A2 +#define REG_RXFLTMAP2_8814A 0x06A4 +#define REG_BCN_PSR_RPT_8814A 0x06A8 +#define REG_BT_COEX_TABLE_8814A 0x06C0 +#define REG_TX_DATA_RSP_RATE_8814A 0x06DE +#define REG_ASSOCIATED_BFMER0_INFO_8814A 0x06E4 +#define REG_ASSOCIATED_BFMER1_INFO_8814A 0x06EC +#define REG_CSI_RPT_PARAM_BW20_8814A 0x06F4 +#define REG_CSI_RPT_PARAM_BW40_8814A 0x06F8 +#define REG_CSI_RPT_PARAM_BW80_8814A 0x06FC + +/* Hardware Port 2 */ +#define REG_MACID1_8814A 0x0700 +#define REG_BSSID1_8814A 0x0708 +/* Hardware Port 3 */ +#define REG_MACID2_8814A 0x1620 +#define REG_BSSID2_8814A 0x1628 +/* Hardware Port 4 */ +#define REG_MACID3_8814A 0x1630 +#define REG_BSSID3_8814A 0x1638 +/* Hardware Port 5 */ +#define REG_MACID4_8814A 0x1640 +#define REG_BSSID4_8814A 0x1648 + +#define REG_ASSOCIATED_BFMEE_SEL_8814A 0x0714 +#define REG_SND_PTCL_CTRL_8814A 0x0718 +#define REG_IQ_DUMP_8814A 0x07C0 + +#define REG_CPU_DMEM_CON_8814A 0x1080 + +/**** page 19 ****/ +/* TX BeamForming */ +#define REG_BB_TXBF_ANT_SET_BF1 0x19ac +#define REG_BB_TXBF_ANT_SET_BF0 0x19b4 + +/* 0x1200h ~ 0x12FFh DDMA CTRL + * + * ----------------------------------------------------- */ +#define REG_DDMA_CH0SA 0x1200 +#define REG_DDMA_CH0DA 0x1204 +#define REG_DDMA_CH0CTRL 0x1208 +#define REG_DDMA_CH1SA 0x1210 +#define REG_DDMA_CH1DA 0x1214 +#define REG_DDMA_CH1CTRL 0x1218 +#define REG_DDMA_CH2SA 0x1220 +#define REG_DDMA_CH2DA 0x1224 +#define REG_DDMA_CH2CTRL 0x1228 +#define REG_DDMA_CH3SA 0x1230 +#define REG_DDMA_CH3DA 0x1234 +#define REG_DDMA_CH3CTRL 0x1238 +#define REG_DDMA_CH4SA 0x1240 +#define REG_DDMA_CH4DA 0x1244 +#define REG_DDMA_CH4CTRL 0x1248 +#define REG_DDMA_CH5SA 0x1250 +#define REG_DDMA_CH5DA 0x1254 +#define REG_DDMA_CH5CTRL 0x1258 +#define REG_DDMA_INT_MSK 0x12E0 +#define REG_DDMA_CHSTATUS 0x12E8 +#define REG_DDMA_CHKSUM 0x12F0 +#define REG_DDMA_MONITER 0x12FC + +#define REG_Q0_Q1_INFO_8814A 0x1400 +#define REG_Q2_Q3_INFO_8814A 0x1404 +#define REG_Q4_Q5_INFO_8814A 0x1408 +#define REG_Q6_Q7_INFO_8814A 0x140C +#define REG_MGQ_HIQ_INFO_8814A 0x1410 +#define REG_CMDQ_BCNQ_INFO_8814A 0x1414 + +#define DDMA_LEN_MASK 0x0001FFFF +#define FW_CHKSUM_DUMMY_SZ 8 +#define DDMA_CH_CHKSUM_CNT BIT(24) +#define DDMA_RST_CHKSUM_STS BIT(25) +#define DDMA_MODE_BLOCK_CPU BIT(26) +#define DDMA_CHKSUM_FAIL BIT(27) +#define DDMA_DA_W_DISABLE BIT(28) +#define DDMA_CHKSUM_EN BIT(29) +#define DDMA_CH_OWN BIT(31) + + +/* 3081 FWDL */ +#define FWDL_EN BIT0 +#define IMEM_BOOT_DL_RDY BIT1 +#define IMEM_BOOT_CHKSUM_FAIL BIT2 +#define IMEM_DL_RDY BIT3 +#define IMEM_CHKSUM_OK BIT4 +#define DMEM_DL_RDY BIT5 +#define DMEM_CHKSUM_OK BIT6 +#define EMEM_DL_RDY BIT7 +#define EMEM_CHKSUM_FAIL BIT8 +#define EMEM_TXBUF_DL_RDY BIT9 +#define EMEM_TXBUF_CHKSUM_FAIL BIT10 +#define CPU_CLK_SWITCH_BUSY BIT11 +#define CPU_CLK_SEL (BIT12 | BIT13) +#define FWDL_OK BIT14 +#define FW_INIT_RDY BIT15 +#define R_EN_BOOT_FLASH BIT20 + +#define OCPBASE_IMEM_3081 0x00000000 +#define OCPBASE_DMEM_3081 0x00200000 +#define OCPBASE_RPTBUF_3081 0x18660000 +#define OCPBASE_RXBUF2_3081 0x18680000 +#define OCPBASE_RXBUF_3081 0x18700000 +#define OCPBASE_TXBUF_3081 0x18780000 + + +#define REG_FAST_EDCA_VOVI_SETTING_8814A 0x1448 +#define REG_FAST_EDCA_BEBK_SETTING_8814A 0x144C + + +/* ----------------------------------------------------- + * */ + + +/* ----------------------------------------------------- + * + * Redifine 8192C register definition for compatibility + * + * ----------------------------------------------------- */ + +/* TODO: use these definition when using REG_xxx naming rule. + * NOTE: DO NOT Remove these definition. Use later. */ +#define EFUSE_CTRL_8814A REG_EFUSE_CTRL_8814A /* E-Fuse Control. */ +#define EFUSE_TEST_8814A REG_LDO_EFUSE_CTRL_8814A /* E-Fuse Test. */ +#define MSR_8814A (REG_CR_8814A + 2) /* Media Status register */ +#define ISR_8814A REG_HISR0_8814A +#define TSFR_8814A REG_TSFTR_8814A /* Timing Sync Function Timer Register. */ + +#define PBP_8814A REG_PBP_8814A + +/* Redifine MACID register, to compatible prior ICs. */ +#define IDR0_8814A REG_MACID_8814A /* MAC ID Register, Offset 0x0050-0x0053 */ +#define IDR4_8814A (REG_MACID_8814A + 4) /* MAC ID Register, Offset 0x0054-0x0055 */ + + +/* + * 9. Security Control Registers (Offset: ) + * */ +#define RWCAM_8814A REG_CAMCMD_8814A /* 8190 Data Sheet is called CAMcmd */ +#define WCAMI_8814A REG_CAMWRITE_8814A /* Software write CAM input content */ +#define RCAMO_8814A REG_CAMREAD_8814A /* Software read/write CAM config */ +#define CAMDBG_8814A REG_CAMDBG_8814A +#define SECR_8814A REG_SECCFG_8814A /* Security Configuration Register */ + + +/* ---------------------------------------------------------------------------- + * 8195 IMR/ISR bits (offset 0xB0, 8bits) + * ---------------------------------------------------------------------------- */ +#define IMR_DISABLED_8814A 0 +/* IMR DW0(0x00B0-00B3) Bit 0-31 */ +#define IMR_TIMER2_8814A BIT31 /* Timeout interrupt 2 */ +#define IMR_TIMER1_8814A BIT30 /* Timeout interrupt 1 */ +#define IMR_PSTIMEOUT_8814A BIT29 /* Power Save Time Out Interrupt */ +#define IMR_GTINT4_8814A BIT28 /* When GTIMER4 expires, this bit is set to 1 */ +#define IMR_GTINT3_8814A BIT27 /* When GTIMER3 expires, this bit is set to 1 */ +#define IMR_TXBCN0ERR_8814A BIT26 /* Transmit Beacon0 Error */ +#define IMR_TXBCN0OK_8814A BIT25 /* Transmit Beacon0 OK */ +#define IMR_TSF_BIT32_TOGGLE_8814A BIT24 /* TSF Timer BIT32 toggle indication interrupt */ +#define IMR_BCNDMAINT0_8814A BIT20 /* Beacon DMA Interrupt 0 */ +#define IMR_BCNDERR0_8814A BIT16 /* Beacon Queue DMA OK0 */ +#define IMR_HSISR_IND_ON_INT_8814A BIT15 /* HSISR Indicator (HSIMR & HSISR is true, this bit is set to 1) */ +#define IMR_BCNDMAINT_E_8814A BIT14 /* Beacon DMA Interrupt Extension for Win7 */ +#define IMR_ATIMEND_8814A BIT12 /* CTWidnow End or ATIM Window End */ +#define IMR_C2HCMD_8814A BIT10 /* CPU to Host Command INT Status, Write 1 clear */ +#define IMR_CPWM2_8814A BIT9 /* CPU power Mode exchange INT Status, Write 1 clear */ +#define IMR_CPWM_8814A BIT8 /* CPU power Mode exchange INT Status, Write 1 clear */ +#define IMR_HIGHDOK_8814A BIT7 /* High Queue DMA OK */ +#define IMR_MGNTDOK_8814A BIT6 /* Management Queue DMA OK */ +#define IMR_BKDOK_8814A BIT5 /* AC_BK DMA OK */ +#define IMR_BEDOK_8814A BIT4 /* AC_BE DMA OK */ +#define IMR_VIDOK_8814A BIT3 /* AC_VI DMA OK */ +#define IMR_VODOK_8814A BIT2 /* AC_VO DMA OK */ +#define IMR_RDU_8814A BIT1 /* Rx Descriptor Unavailable */ +#define IMR_ROK_8814A BIT0 /* Receive DMA OK */ + +/* IMR DW1(0x00B4-00B7) Bit 0-31 */ +#define IMR_MCUERR_8814A BIT28 /* Beacon DMA Interrupt 7 */ +#define IMR_BCNDMAINT7_8814A BIT27 /* Beacon DMA Interrupt 7 */ +#define IMR_BCNDMAINT6_8814A BIT26 /* Beacon DMA Interrupt 6 */ +#define IMR_BCNDMAINT5_8814A BIT25 /* Beacon DMA Interrupt 5 */ +#define IMR_BCNDMAINT4_8814A BIT24 /* Beacon DMA Interrupt 4 */ +#define IMR_BCNDMAINT3_8814A BIT23 /* Beacon DMA Interrupt 3 */ +#define IMR_BCNDMAINT2_8814A BIT22 /* Beacon DMA Interrupt 2 */ +#define IMR_BCNDMAINT1_8814A BIT21 /* Beacon DMA Interrupt 1 */ +#define IMR_BCNDOK7_8814A BIT20 /* Beacon Queue DMA OK Interrup 7 */ +#define IMR_BCNDOK6_8814A BIT19 /* Beacon Queue DMA OK Interrup 6 */ +#define IMR_BCNDOK5_8814A BIT18 /* Beacon Queue DMA OK Interrup 5 */ +#define IMR_BCNDOK4_8814A BIT17 /* Beacon Queue DMA OK Interrup 4 */ +#define IMR_BCNDOK3_8814A BIT16 /* Beacon Queue DMA OK Interrup 3 */ +#define IMR_BCNDOK2_8814A BIT15 /* Beacon Queue DMA OK Interrup 2 */ +#define IMR_BCNDOK1_8814A BIT14 /* Beacon Queue DMA OK Interrup 1 */ +#define IMR_ATIMEND_E_8814A BIT13 /* ATIM Window End Extension for Win7 */ +#define IMR_TXERR_8814A BIT11 /* Tx Error Flag Interrupt Status, write 1 clear. */ +#define IMR_RXERR_8814A BIT10 /* Rx Error Flag INT Status, Write 1 clear */ +#define IMR_TXFOVW_8814A BIT9 /* Transmit FIFO Overflow */ +#define IMR_RXFOVW_8814A BIT8 /* Receive FIFO Overflow */ + + +#ifdef CONFIG_PCI_HCI + #define IMR_TX_MASK (IMR_VODOK_8814A | IMR_VIDOK_8814A | IMR_BEDOK_8814A | IMR_BKDOK_8814A | IMR_MGNTDOK_8814A | IMR_HIGHDOK_8814A) + + #define RT_BCN_INT_MASKS (IMR_BCNDMAINT0_8814A | IMR_TXBCN0OK_8814A | IMR_TXBCN0ERR_8814A | IMR_BCNDERR0_8814A) + + #define RT_AC_INT_MASKS (IMR_VIDOK_8814A | IMR_VODOK_8814A | IMR_BEDOK_8814A | IMR_BKDOK_8814A) +#endif + + +/*=================================================================== +===================================================================== +Here the register defines are for 92C. When the define is as same with 92C, +we will use the 92C's define for the consistency +So the following defines for 92C is not entire!!!!!! +===================================================================== +=====================================================================*/ + + +/* ----------------------------------------------------- + * + * 0xFE00h ~ 0xFE55h USB Configuration + * + * ----------------------------------------------------- */ + +/* 2 Special Option */ +#define USB_AGG_EN_8814A BIT(7) +#define REG_USB_HRPWM_U3 0xF052 + +#define LAST_ENTRY_OF_TX_PKT_BUFFER_8814A (2048-1) /* 20130415 KaiYuan add for 8814 */ + +#endif /* __RTL8814A_SPEC_H__ */ diff --git a/hal/rtl8814a_sreset.h b/hal/rtl8814a_sreset.h new file mode 100644 index 0000000..f5770c6 --- /dev/null +++ b/hal/rtl8814a_sreset.h @@ -0,0 +1,24 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#ifndef _RTL8814A_SRESET_H_ +#define _RTL8814A_SRESET_H_ + +#include + +#ifdef DBG_CONFIG_ERROR_DETECT + extern void rtl8814_sreset_xmit_status_check(_adapter *padapter); + extern void rtl8814_sreset_linked_status_check(_adapter *padapter); +#endif +#endif diff --git a/hal/rtl8814a_xmit.h b/hal/rtl8814a_xmit.h new file mode 100644 index 0000000..f1fcc65 --- /dev/null +++ b/hal/rtl8814a_xmit.h @@ -0,0 +1,311 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + *****************************************************************************/ +#ifndef __RTL8814A_XMIT_H__ +#define __RTL8814A_XMIT_H__ + +typedef struct txdescriptor_8814 { + /* Offset 0 */ + u32 pktlen:16; + u32 offset:8; + u32 bmc:1; + u32 htc:1; + u32 ls:1; +} TXDESC_8814, *PTXDESC_8814; + + +#define OFFSET_SZ 0 +#define OFFSET_SHT 16 + + + +#ifdef CONFIG_SDIO_HCI + #define SET_TX_DESC_SDIO_TXSEQ_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+28, 16, 8, __Value) +#endif /* CONFIG_SDIO_HCI */ + +/* ----------------------------------------------------------------- + * RTL8814A TX BUFFER DESC + * ----------------------------------------------------------------- + * +- Each TXBD has 4 segment. + -- For 32 bit, each segment is 8 bytes. + -- For 64 bit, each segment is 16 bytes. +*/ +#if 0 + #if 1 /* 32 bit */ + #define SET_TX_EXTBUFF_DESC_LEN_8814A(__pTxDesc, __Value, __Set) SET_BITS_TO_LE_4BYTE(__pTxDesc+(__Set*8), 0, 16, __Value) + #define SET_TX_EXTBUFF_DESC_ADDR_LOW_8814A(__pTxDesc, __Value, __Set) SET_BITS_TO_LE_4BYTE(__pTxDesc+(__Set*8)+4, 0, 32, __Value) + #else /* 64 bit */ + #define SET_TX_EXTBUFF_DESC_LEN_8814A(__pTxDesc, __Value, __Set) SET_BITS_TO_LE_4BYTE(__pTxDesc+(__Set*16), 0, 16, __Value) + #define SET_TX_EXTBUFF_DESC_ADDR_LOW_8814A(__pTxDesc, __Value, __Set) SET_BITS_TO_LE_4BYTE(__pTxDesc+(__Set*16)+4, 0, 32, __Value) + #endif + #define SET_TX_EXTBUFF_DESC_ADDR_HIGH_8814A(__pTxDesc, __Value, __Set) SET_BITS_TO_LE_4BYTE(__pTxDesc+(__Set*16)+8, 0, 32, __Value) +#endif +/*c2h-DWORD 2*/ +#define GET_RX_STATUS_DESC_RPT_SEL_8814A(__pRxDesc) LE_BITS_TO_4BYTE(__pRxDesc+8, 28, 1) + +/* ********************************************************* + * for Txfilldescroptor8814Ae, fill the desc content. */ +#if 1 /* 32 bit */ + #define SET_TXBUFFER_DESC_LEN_WITH_OFFSET(__pTxDesc, __Offset, __Valeu) SET_BITS_TO_LE_4BYTE(__pTxDesc+((__Offset)*8), 0, 16, __Valeu) + #define SET_TXBUFFER_DESC_AMSDU_WITH_OFFSET(__pTxDesc, __Offset, __Valeu) SET_BITS_TO_LE_4BYTE(__pTxDesc+((__Offset)*8), 31, 1, __Valeu) + #define SET_TXBUFFER_DESC_ADD_LOW_WITH_OFFSET(__pTxDesc, __Offset, __Valeu) SET_BITS_TO_LE_4BYTE(__pTxDesc+((__Offset)*8)+4, 0, 32, __Valeu) +#else /* 64 bit */ + #define SET_TXBUFFER_DESC_LEN_WITH_OFFSET(__pTxDesc, __Offset, __Valeu) SET_BITS_TO_LE_4BYTE(__pTxDesc+((__Offset)*16), 0, 16, __Valeu) + #define SET_TXBUFFER_DESC_AMSDU_WITH_OFFSET(__pTxDesc, __Offset, __Valeu) SET_BITS_TO_LE_4BYTE(__pTxDesc+((__Offset)*16), 31, 1, __Valeu) + #define SET_TXBUFFER_DESC_ADD_LOW_WITH_OFFSET(__pTxDesc, __Offset, __Valeu) SET_BITS_TO_LE_4BYTE(__pTxDesc+((__Offset)*16)+4, 0, 32, __Valeu) +#endif +#define SET_TXBUFFER_DESC_ADD_HIGT_WITH_OFFSET(__pTxDesc, __Offset, __Valeu) SET_BITS_TO_LE_4BYTE(__pTxDesc+((__Offset)*16)+8, 0, 32, __Valeu) + +/* ********************************************************* */ + +/* TX buffer + * ************* + * Dword 0 */ +#define SET_TX_BUFF_DESC_LEN_0_8814A(__pTxDesc, __Valeu) SET_BITS_TO_LE_4BYTE(__pTxDesc, 0, 16, __Valeu) +#define SET_TX_BUFF_DESC_PSB_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 16, 15, __Value) +#define SET_TX_BUFF_DESC_OWN_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 31, 1, __Value) +#define GET_TX_BUFF_DESC_OWN_8814A(__pTxDesc) LE_BITS_TO_4BYTE(__pTxDesc, 31, 1) + +/* Dword 1 */ +#define SET_TX_BUFF_DESC_ADDR_LOW_0_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 0, 32, __Value) +#define GET_TX_BUFF_DESC_ADDR_LOW_0_8814A(__pTxDesc) LE_BITS_TO_4BYTE(__pTxDesc+4, 0, 32) +/* Dword 2 */ +#define SET_TX_BUFF_DESC_ADDR_HIGH_0_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 0, 32, __Value) +#define GET_TX_BUFF_DESC_ADDR_HIGH_0_8814A(__pTxDesc) LE_BITS_TO_4BYTE(__pTxDesc+8, 0, 32) +/* Dword 3 */ /* RESERVED 0 */ + +#if 0 /* 64 bit */ + /* Dword 4 */ + #define SET_TX_BUFF_DESC_LEN_1_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 0, 16, __Value) + #define SET_TX_BUFF_DESC_AMSDU_1_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 31, 1, __Value) + /* Dword 5 */ + #define SET_TX_BUFF_DESC_ADDR_LOW_1_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 0, 32, __Value) + /* Dword 6 */ + #define SET_TX_BUFF_DESC_ADDR_HIGH_1_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 0, 32, __Value) + /* Dword 7 */ /* RESERVED 0 */ + /* Dword 8 */ + #define SET_TX_BUFF_DESC_LEN_2_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+32, 0, 16, __Value) + #define SET_TX_BUFF_DESC_AMSDU_2_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+32, 31, 1, __Value) + /* Dword 9 */ + #define SET_TX_BUFF_DESC_ADDR_LOW_2_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+36, 0, 32, __Value) + /* Dword 10 */ + #define SET_TX_BUFF_DESC_ADDR_HIGH_2_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+40, 0, 32, __Value) + /* Dword 11 */ /* RESERVED 0 */ + /* Dword 12 */ + #define SET_TX_BUFF_DESC_LEN_3_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+48, 0, 16, __Value) + #define SET_TX_BUFF_DESC_AMSDU_3_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+48, 31, 1, __Value) + /* Dword 13 */ + #define SET_TX_BUFF_DESC_ADDR_LOW_3_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+52, 0, 32, __Value) + /* Dword 14 */ + #define SET_TX_BUFF_DESC_ADDR_HIGH_3_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+56, 0, 32, __Value) + /* Dword 15 */ /* RESERVED 0 */ +#endif + +/* *****Desc content + * TX Info + * ************* + * Dword 0 */ +#define SET_TX_DESC_PKT_SIZE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 0, 16, __Value) +#define GET_TX_DESC_PKT_SIZE_8814A(__pTxDesc) LE_BITS_TO_4BYTE(__pTxDesc, 0, 16) +#define SET_TX_DESC_OFFSET_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 16, 8, __Value) +#define GET_TX_DESC_OFFSET_8814A(__pTxDesc) LE_BITS_TO_4BYTE(__pTxDesc, 16, 8) +#define SET_TX_DESC_BMC_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 24, 1, __Value) +#define SET_TX_DESC_HTC_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 25, 1, __Value) +#define SET_TX_DESC_LAST_SEG_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 26, 1, __Value) +#define SET_TX_DESC_LINIP_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 28, 1, __Value) +#define SET_TX_DESC_AMSDU_PAD_EN_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 27, 1, __Value) +#define SET_TX_DESC_NO_ACM_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 29, 1, __Value) +#define SET_TX_DESC_GF_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 30, 1, __Value) +#define SET_TX_DESC_DISQSELSEQ_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 31, 1, __Value) + +/* Dword 1 */ +#define SET_TX_DESC_MACID_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 0, 7, __Value) +#define SET_TX_DESC_QUEUE_SEL_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 8, 5, __Value) +#define SET_TX_DESC_RDG_NAV_EXT_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 13, 1, __Value) +#define SET_TX_DESC_LSIG_TXOP_EN_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 14, 1, __Value) +#define SET_TX_DESC_PIFS_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 15, 1, __Value) +#define SET_TX_DESC_RATE_ID_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 16, 5, __Value) +#define SET_TX_DESC_EN_DESC_ID_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 21, 1, __Value) +#define SET_TX_DESC_SEC_TYPE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 22, 2, __Value) +#define SET_TX_DESC_PKT_OFFSET_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 24, 5, __Value) +#define SET_TX_DESC_MORE_DATA_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 29, 1, __Value) +#define SET_TX_DESC_TXOP_PS_CAP_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 30, 1, __Value) +#define SET_TX_DESC_TXOP_PS_MODE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 31, 1, __Value) + + +/* Dword 2 */ +#define SET_TX_DESC_PAID_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 0, 9, __Value) +#define SET_TX_DESC_CCA_RTS_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 10, 2, __Value) +#define SET_TX_DESC_AGG_ENABLE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 12, 1, __Value) +#define SET_TX_DESC_RDG_ENABLE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 13, 1, __Value) +#define SET_TX_DESC_NULL_0_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 14, 1, __Value) +#define SET_TX_DESC_NULL_1_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 15, 1, __Value) +#define SET_TX_DESC_BK_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 16, 1, __Value) +#define SET_TX_DESC_MORE_FRAG_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 17, 1, __Value) +#define GET_TX_DESC_MORE_FRAG_8814A(__pTxDesc) LE_BITS_TO_4BYTE(__pTxDesc+8, 17, 1) +#define SET_TX_DESC_RAW_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 18, 1, __Value) +#define SET_TX_DESC_SPE_RPT_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 19, 1, __Value) +#define SET_TX_DESC_AMPDU_DENSITY_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 20, 3, __Value) +#define SET_TX_DESC_BT_NULL_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 23, 1, __Value) +#define SET_TX_DESC_GID_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 24, 6, __Value) +#define SET_TX_DESC_HW_AES_IV_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 31, 1, __Value) + + +/* Dword 3 */ +#define SET_TX_DESC_WHEADER_LEN_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 0, 5, __Value) +#define SET_TX_DESC_EARLY_RATE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 5, 1, __Value) +#define SET_TX_DESC_HW_SSN_SEL_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 6, 2, __Value) +#define SET_TX_DESC_USE_RATE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 8, 1, __Value) +#define SET_TX_DESC_DISABLE_RTS_FB_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 9, 1, __Value) +#define SET_TX_DESC_DISABLE_FB_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 10, 1, __Value) +#define SET_TX_DESC_CTS2SELF_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 11, 1, __Value) +#define SET_TX_DESC_RTS_ENABLE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 12, 1, __Value) +#define SET_TX_DESC_HW_RTS_ENABLE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 13, 1, __Value) +#define SET_TX_DESC_CHECK_EN_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 14, 1, __Value) +#define SET_TX_DESC_NAV_USE_HDR_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 15, 1, __Value) +#define SET_TX_DESC_USE_MAX_LEN_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 16, 1, __Value) +#define SET_TX_DESC_MAX_AGG_NUM_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 17, 5, __Value) +#define SET_TX_DESC_NDPA_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 22, 2, __Value) +#define SET_TX_DESC_AMPDU_MAX_TIME_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 24, 8, __Value) + +/* Dword 4 */ +#define SET_TX_DESC_TX_RATE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 0, 7, __Value) +#define SET_TX_DESC_TRY_RATE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 7, 1, __Value) +#define SET_TX_DESC_DATA_RATE_FB_LIMIT_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 8, 5, __Value) +#define SET_TX_DESC_RTS_RATE_FB_LIMIT_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 13, 4, __Value) +#define SET_TX_DESC_RETRY_LIMIT_ENABLE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 17, 1, __Value) +#define SET_TX_DESC_DATA_RETRY_LIMIT_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 18, 6, __Value) +#define SET_TX_DESC_RTS_RATE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 24, 5, __Value) +#define SET_TX_DESC_PCTS_ENABLE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 29, 1, __Value) +#define SET_TX_DESC_PCTS_MASK_IDX_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 30, 2, __Value) + + +/* Dword 5 */ +#define SET_TX_DESC_DATA_SC_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 0, 4, __Value) +#define SET_TX_DESC_DATA_SHORT_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 4, 1, __Value) +#define SET_TX_DESC_DATA_BW_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 5, 2, __Value) +#define SET_TX_DESC_DATA_LDPC_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 7, 1, __Value) +#define SET_TX_DESC_DATA_STBC_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 8, 2, __Value) +#define SET_TX_DESC_CTROL_STBC_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 10, 2, __Value) +#define SET_TX_DESC_RTS_SHORT_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 12, 1, __Value) +#define SET_TX_DESC_RTS_SC_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 13, 4, __Value) +#define SET_TX_DESC_SIGNALING_TA_PKT_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 17, 1, __Value) +#define SET_TX_DESC_PORT_ID_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 21, 3, __Value)/* 20130415 KaiYuan add for 8814 */ +#define SET_TX_DESC_TX_ANT_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 24, 4, __Value) +#define SET_TX_DESC_TX_POWER_OFFSET_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 28, 3, __Value) + +/* Dword 6 */ +#define SET_TX_DESC_SW_DEFINE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 0, 12, __Value) +#define SET_TX_DESC_MBSSID_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 12, 4, __Value) +#define SET_TX_DESC_ANTSEL_A_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 16, 3, __Value) +#define SET_TX_DESC_ANTSEL_B_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 19, 3, __Value) +#define SET_TX_DESC_ANT_MAPA_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 22, 2, __Value) +#define SET_TX_DESC_ANT_MAPB_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 24, 2, __Value) +#define SET_TX_DESC_ANT_MAPC_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 26, 2, __Value) +#define SET_TX_DESC_ANT_MAPD_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 28, 2, __Value) + + +/* Dword 7 */ +#ifdef CONFIG_PCI_HCI + #define SET_TX_DESC_TX_BUFFER_SIZE_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+28, 0, 16, __Value) +#endif +#if defined(CONFIG_SDIO_HCI)|| defined(CONFIG_USB_HCI) + #define SET_TX_DESC_TX_DESC_CHECKSUM_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+28, 0, 16, __Value) +#endif +#define SET_TX_DESC_NTX_MAP_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+28, 20, 4, __Value) +#define SET_TX_DESC_USB_TXAGG_NUM_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+28, 24, 8, __Value) + + +/* Dword 8 */ +#define SET_TX_DESC_RTS_RC_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+32, 0, 6, __Value) +#define SET_TX_DESC_BAR_RTY_TH_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+32, 6, 2, __Value) +#define SET_TX_DESC_DATA_RC_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+32, 8, 6, __Value) +#define SET_TX_DESC_EN_HWEXSEQ_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+32, 14, 1, __Value) +#define SET_TX_DESC_HWSEQ_EN_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+32, 15, 1, __Value) +#if defined(CONFIG_PCI_HCI)|| defined(CONFIG_USB_HCI) + #define SET_TX_DESC_NEXT_HEAD_PAGE_L_8814A(__pTxDesc, __Value)(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+32, 16, 8, __Value) +#endif +#ifdef CONFIG_SDIO_HCI + #define SET_TX_DESC_SDIO_SEQ_8814A(__pTxDesc, __Value)(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+32, 16, 8, __Value) /* 20130415 KaiYuan add for 8814AS */ +#endif +#define SET_TX_DESC_TAIL_PAGE_L_8814A(__pTxDesc, __Value)(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+32, 24, 8, __Value) + +/* Dword 9 */ +#define SET_TX_DESC_PADDING_LENGTH_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+36, 0, 11, __Value) +#define SET_TX_DESC_TXBF_PATH_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+36, 11, 1, __Value) +#define SET_TX_DESC_SEQ_8814A(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+36, 12, 12, __Value) +#define SET_TX_DESC_NEXT_HEAD_PAGE_H_8814A(__pTxDesc, __Value)(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+36, 24, 4, __Value) +#define SET_TX_DESC_TAIL_PAGE_H_8814A(__pTxDesc, __Value)(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+36, 28, 4, __Value) + + + +#define SET_EARLYMODE_PKTNUM_8814A(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr, 0, 4, __Value) +#define SET_EARLYMODE_LEN0_8814A(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr, 4, 15, __Value) +#define SET_EARLYMODE_LEN1_1_8814A(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr, 19, 13, __Value) +#define SET_EARLYMODE_LEN1_2_8814A(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr+4, 0, 2, __Value) +#define SET_EARLYMODE_LEN2_8814A(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr+4, 2, 15, __Value) +#define SET_EARLYMODE_LEN3_8814A(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr+4, 17, 15, __Value) + + +void rtl8814a_cal_txdesc_chksum(u8 *ptxdesc); +void rtl8814a_fill_fake_txdesc(PADAPTER padapter, u8 *pDesc, u32 BufferLen, u8 IsPsPoll, u8 IsBTQosNull, u8 bDataFrame); +void rtl8814a_fill_txdesc_sectype(struct pkt_attrib *pattrib, u8 *ptxdesc); +void rtl8814a_fill_txdesc_vcs(PADAPTER padapter, struct pkt_attrib *pattrib, u8 *ptxdesc); +void rtl8814a_fill_txdesc_phy(PADAPTER padapter, struct pkt_attrib *pattrib, u8 *ptxdesc); +#if defined(CONFIG_CONCURRENT_MODE) + void fill_txdesc_force_bmc_camid(struct pkt_attrib *pattrib, u8 *ptxdesc); +#endif +void fill_txdesc_bmc_tx_rate(struct pkt_attrib *pattrib, u8 *ptxdesc); + +#ifdef CONFIG_USB_HCI + s32 rtl8814au_init_xmit_priv(PADAPTER padapter); + void rtl8814au_free_xmit_priv(PADAPTER padapter); + s32 rtl8814au_hal_xmit(PADAPTER padapter, struct xmit_frame *pxmitframe); + s32 rtl8814au_mgnt_xmit(PADAPTER padapter, struct xmit_frame *pmgntframe); + s32 rtl8814au_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); + s32 rtl8814au_xmit_buf_handler(PADAPTER padapter); + void rtl8814au_xmit_tasklet(void *priv); + s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf); +#endif /* CONFIG_USB_HCI */ + +#ifdef CONFIG_PCI_HCI + s32 rtl8814ae_init_xmit_priv(PADAPTER padapter); + void rtl8814ae_free_xmit_priv(PADAPTER padapter); + struct xmit_buf *rtl8814ae_dequeue_xmitbuf(struct rtw_tx_ring *ring); + void rtl8814ae_xmitframe_resume(_adapter *padapter); + s32 rtl8814ae_hal_xmit(PADAPTER padapter, struct xmit_frame *pxmitframe); + s32 rtl8814ae_mgnt_xmit(PADAPTER padapter, struct xmit_frame *pmgntframe); + s32 rtl8814ae_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); + void rtl8814ae_xmit_tasklet(void *priv); +#ifdef CONFIG_XMIT_THREAD_MODE + s32 rtl8814ae_xmit_buf_handler(_adapter *padapter); +#endif +#endif + +void _dbg_dump_tx_info(_adapter *padapter, int frame_tag, u8 *ptxdesc); +u8 +SCMapping_8814( + PADAPTER Adapter, + struct pkt_attrib *pattrib +); + +u8 +BWMapping_8814( + PADAPTER Adapter, + struct pkt_attrib *pattrib +); + + +#endif /* __RTL8814_XMIT_H__ */ diff --git a/inventory/cf938ac_macos.txt b/inventory/cf938ac_macos.txt new file mode 100644 index 0000000..980f6f9 --- /dev/null +++ b/inventory/cf938ac_macos.txt @@ -0,0 +1,31 @@ + | | "CFBundleIdentifier" = "com.apple.driver.usb.AppleSynopsysUSB40XHCI" + | | "IONameMatched" = "usb-drd,t8132" + | | "UsbHostControllerUSB4LPMPolicy" = 1 + | | "UsbHostControllerTierLimit" = 6 + | | "controller-statistics" = {"kControllerStatIOCount"=3583374,"kControllerStatPowerStateTime"={"kPowerStateInitialize"="0ms (0%)","kPowerStateOff"="307699968ms (85%)","kPowerStateSleep"="0ms (0%)","kPowerStateOn"="50571504ms (14%)","kPowerStateSuspended"="18402ms (0%)"},"kControllerStatSpuriousInterruptCount"=0} + | | "UsbHostControllerProtocolRevision" = "3.1" + | | "kUSBSleepSupported" = Yes + | | } + | | + | +-o 802.11ac NIC@00100000 + | { + | "kUSBSerialNumberString" = "123456" + | "bDeviceClass" = 0 + | "UsbLinkSpeed" = 480000000 + | "bDeviceSubClass" = 0 + | "iSerialNumber" = 3 + | "IOServiceDEXTEntitlements" = (("com.apple.developer.driverkit.transport.usb")) + | "iProduct" = 2 + | "USB Serial Number" = "123456" + | "USB Vendor Name" = "Realtek" + | "USBSpeed" = 3 + | "IOPowerManagement" = {"PowerOverrideOn"=Yes,"DevicePowerState"=2,"CurrentPowerState"=2,"CapabilityFlags"=32768,"MaxPowerState"=2,"DriverPowerState"=0} + | "bNumConfigurations" = 1 + | "kUSBProductString" = "802.11ac NIC" + | "kUSBVendorString" = "Realtek" + | "USB Product Name" = "802.11ac NIC" + | "iManufacturer" = 1 + | "idVendor" = 3034 + | "Device Speed" = 2 + | "kUSBCurrentConfiguration" = 1 + | "idProduct" = 34835 diff --git a/src/EepromManager.cpp b/src/EepromManager.cpp index e3551ae..7945a53 100644 --- a/src/EepromManager.cpp +++ b/src/EepromManager.cpp @@ -11,7 +11,22 @@ EepromManager::EepromManager(RtlUsbAdapter device, Logger_t logger) : _device{device}, _logger{logger} { read_chip_version_8812a(device); - hal_InitPGData_8812A(); + /* On 8814AU, defer all EFUSE access until AFTER firmware download. rtw88's + * usbmon shows zero touches to EFUSE_CTRL (0x0031-0x0033) and EFUSE_ACCESS + * (0x00CF) before fwdl — these are post-fw-boot operations. Reading EFUSE + * pre-fwdl appears to put the chip in a state where it never sets BIT15 of + * REG_FIFOPAGE_CTRL_2 (BCN_VALID) after a beacon-queue bulk OUT, which + * blocks the IDDMA copy that loads fw into 8051 DMEM/IMEM. For the + * experiment, pretend the EFUSE autoload failed so the parsers fall through + * to safe defaults; the parsers still run against in-memory shadow data + * (no chip access). */ + if (version_id.ICType == CHIP_8814A) { + std::memset(efuse_eeprom_data, 0xFF, sizeof(efuse_eeprom_data)); + _device.AutoloadFailFlag = true; + } else { + hal_InitPGData_8812A(); + } + Hal_EfuseParseIDCode8812A(); EEPROMVersion = Hal_ReadPROMVersion8812A(_device, efuse_eeprom_data); EEPROMRegulatory = Hal_ReadTxPowerInfo8812A(_device, efuse_eeprom_data); @@ -35,7 +50,34 @@ EepromManager::EepromManager(RtlUsbAdapter device, Logger_t logger) #endif /* 2013/04/15 MH Add for different board type recognize. */ - hal_ReadUsbType_8812AU(); + if (version_id.ICType != CHIP_8814A) { + hal_ReadUsbType_8812AU(); + } +} + +void EepromManager::LateInitFor8814A() { + /* Re-read EFUSE properly now that firmware is running. The constructor's + * 8814 branch sets AutoloadFailFlag=true + 0xFF-fills the shadow map, so + * the parsers ran against defaults (rfe_type=0, all PA/LNA=0). With fw up + * the chip will accept EFUSE reads without breaking, and we can use the + * real RFE/PA/LNA values for the BB/AGC/RF tables which gate on them. */ + if (version_id.ICType != CHIP_8814A) { + return; + } + _device.AutoloadFailFlag = false; + hal_InitPGData_8812A(); + Hal_EfuseParseIDCode8812A(); + EEPROMVersion = Hal_ReadPROMVersion8812A(_device, efuse_eeprom_data); + EEPROMRegulatory = Hal_ReadTxPowerInfo8812A(_device, efuse_eeprom_data); + Hal_EfuseParseBTCoexistInfo8812A(); + Hal_EfuseParseXtal_8812A(); + Hal_ReadThermalMeter_8812A(); + Hal_ReadAmplifierType_8812A(); + Hal_ReadRFEType_8812A(); + _logger->info("8814A LateInit: rfe_type={} crystal_cap=0x{:X} " + "PA_2G/5G=0x{:X}/0x{:X} LNA_2G/5G=0x{:X}/0x{:X}", + rfe_type, crystal_cap, PAType_2G, PAType_5G, + LNAType_2G, LNAType_5G); } void EepromManager::read_chip_version_8812a(RtlUsbAdapter device) { @@ -43,24 +85,40 @@ void EepromManager::read_chip_version_8812a(RtlUsbAdapter device) { _logger->info("read_chip_version_8812a SYS_CFG(0x{:X})=0x{:08X}", REG_SYS_CFG, value32); + const uint16_t pid = device.idProduct(); + const bool is_8814a = (pid == 0x8813); + version_id = { - .ICType = CHIP_8812, + .ICType = is_8814a ? CHIP_8814A : CHIP_8812, .ChipType = (value32 & RTL_ID) ? TEST_CHIP : NORMAL_CHIP, .VendorType = (value32 & VENDOR_ID) ? CHIP_VENDOR_UMC : CHIP_VENDOR_TSMC, - /* SYS_CFG bit 27 (RF_TYPE_ID): set on 1T1R cuts (RTL8811AU), - * clear on 2T2R cuts (RTL8812AU). */ - .RFType = (value32 & RF_TYPE_ID) ? RF_TYPE_1T1R : RF_TYPE_2T2R, + /* For the Jaguar 8812-family (8812AU / 8811AU), SYS_CFG bit 27 + * (RF_TYPE_ID) is set on 1T1R cuts and clear on 2T2R cuts. RTL8814AU + * is identified by USB PID 0x8813 instead — the chip is 4T4R RF / + * 3-SS baseband cap. */ + .RFType = is_8814a ? RF_TYPE_4T4R + : ((value32 & RF_TYPE_ID) ? RF_TYPE_1T1R + : RF_TYPE_2T2R), }; /* Manual override: force 1T1R even when SYS_CFG reports 2T2R - * (useful if EFUSE/strap is mis-burnt on a 1T1R board). */ - if (registry_priv::special_rf_path == 1) { + * (useful if EFUSE/strap is mis-burnt on a 1T1R board). Only meaningful + * for the 8812-family; 8814AU keeps its 4T4R RFType. */ + if (!is_8814a && registry_priv::special_rf_path == 1) { version_id.RFType = RF_TYPE_1T1R; } - version_id.CUTVersion = (HAL_CUT_VERSION_E)(((value32 & CHIP_VER_RTL_MASK) >> - CHIP_VER_RTL_SHIFT) + - 1); /* IC version (CUT) */ + /* IC version (CUT). Upstream rtw88's rtw88xxa_read_efuse does `cut_version + * += 1` ONLY for 8812A (chip->id == RTW_CHIP_TYPE_8812A) — for 8814A the + * raw chip-reported value is used as-is. Our previous unconditional +1 + * was breaking PhyTableLoader's check_positive matching on 8814 (the + * "cut_for_para" byte at c1[27:24] never matched the table's expected + * value), which is why AGC_TBL_081C reads back as 0 (not loaded) on our + * chip while rtw88's same chip shows 0x017e0303. */ + const uint32_t raw_cut = + (value32 & CHIP_VER_RTL_MASK) >> CHIP_VER_RTL_SHIFT; + version_id.CUTVersion = + (HAL_CUT_VERSION_E)(is_8814a ? raw_cut : (raw_cut + 1)); version_id.ROMVer = 0; /* ROM code version. */ @@ -69,6 +127,39 @@ void EepromManager::read_chip_version_8812a(RtlUsbAdapter device) { dump_chip_info(version_id); } +JaguarPhyContext EepromManager::GetPhyContext() const { + /* ODM_ITRF_USB and ODM_CE are phydm enum values (we don't pull the phydm + * subsystem in, so hardcode the canonical numbers from upstream + * include/phydm.h). */ + constexpr uint8_t kOdmItrfUsb = 0x02; + constexpr uint8_t kOdmCe = 0x04; + + /* Every conditional block in array_mp_8814a_phy_reg + _agc_tab requires + * a non-zero rfe_type (122 + 52 blocks, low-byte values 1..11). If + * LateInitFor8814A hasn't run yet — or the chip's EFUSE doesn't carry + * a board RFE — fall back to rfe_type=1 so at least the BB/AGC tables + * apply. The board's RFE pinmux may then be slightly off, but the chip + * will still receive: verified on CF-938AC, even with the fallback + * value the chip lands on the same RFE_PIN_0824 = 0x00033E40 that + * rtw88's working trace shows. */ + const uint8_t rfe_for_ctx = + (version_id.ICType == CHIP_8814A && rfe_type == 0) + ? 1 + : static_cast(rfe_type); + + return JaguarPhyContext{ + .cut_version = static_cast(version_id.CUTVersion), + .support_interface = kOdmItrfUsb, + .support_platform = kOdmCe, + .package_type = 0, + .rfe_type = rfe_for_ctx, + .type_glna = TypeGLNA, + .type_gpa = TypeGPA, + .type_alna = TypeALNA, + .type_apa = TypeAPA, + }; +} + void EepromManager::rtw_hal_config_rftype() { if (IS_1T1R(version_id)) { rf_type = RF_TYPE_1T1R; @@ -90,8 +181,12 @@ void EepromManager::rtw_hal_config_rftype() { numTotalRfPath = 1; } - _logger->info("RF_Type is {} TotalTxPath is {}", (int)rf_type, - (int)numTotalRfPath); + /* RTL8814AU has 4 RF paths but the baseband caps at 3 spatial streams. + * For 8812/8811-family the cap equals the path count. */ + maxSpatialStreams = IS_8814A_SERIES(version_id) ? 3 : numTotalRfPath; + + _logger->info("RF_Type is {} TotalTxPath is {} MaxSS is {}", (int)rf_type, + (int)numTotalRfPath, (int)maxSpatialStreams); } void EepromManager::dump_chip_info(HAL_VERSION ChipVersion) { diff --git a/src/EepromManager.h b/src/EepromManager.h index 0652296..deea597 100644 --- a/src/EepromManager.h +++ b/src/EepromManager.h @@ -1,6 +1,7 @@ #ifndef EEPROMMANAGER_H #define EEPROMMANAGER_H +#include "PhyTableLoader.h" #include "RtlUsbAdapter.h" #include "logger.h" @@ -32,6 +33,17 @@ class EepromManager { uint8_t GetBoardType(); void efuse_ShadowRead1Byte(uint16_t Offset, uint8_t *Value); + /* 8814AU only: read EFUSE and populate rfe_type, PA/LNA types, crystal cap, + * etc. Must be called AFTER firmware download (pre-fwdl EFUSE access + * leaves the chip in a state where it never acks RSVD-page bulk OUTs and + * fwdl times out). Safe to call once fw is running. */ + void LateInitFor8814A(); + + /* Build the minimal phydm-context shim PhyTableLoader needs to evaluate + * card-cut conditionals on the 8814AU BB/AGC/MAC tables. The fields are + * populated from EFUSE values already read into this manager. */ + JaguarPhyContext GetPhyContext() const; + HAL_VERSION version_id; odm_cut_version_e cut_version; uint8_t crystal_cap; @@ -40,6 +52,7 @@ class EepromManager { uint16_t TypeGLNA; uint16_t TypeALNA; uint8_t numTotalRfPath; + uint8_t maxSpatialStreams = 2; bool ExternalLNA_2G; bool ExternalPA_2G; HAL_RF_TYPE_E rf_type; diff --git a/src/Firmware.h b/src/Firmware.h index e7c61d1..19d18a2 100644 --- a/src/Firmware.h +++ b/src/Firmware.h @@ -1,19 +1,36 @@ #ifndef FIRMWARE_H #define FIRMWARE_H +#include +#include + +#include "HalVerDef.h" + #define CONFIG_RTL8812A +#define CONFIG_RTL8814A #define LOAD_FW_HEADER_FROM_DRIVER #define ODM_WIN 1 #define DM_ODM_SUPPORT_TYPE ODM_WIN typedef uint8_t u8; typedef uint32_t u32; -extern "C"{ +extern "C" { #include "hal8812a_fw.h" +#include "hal8814a_fw.h" } -struct Firmware { - constexpr static u8 *pFirmwareBuf = array_mp_8812a_fw_nic; - constexpr static size_t FirmwareLen = sizeof(array_mp_8812a_fw_nic); +struct FirmwareBlob { + const u8 *buf; + std::size_t len; }; +/* Pick the right firmware NIC blob for the given chip. CHIP_8814A has its own + * compiled-in array; everything else in the Jaguar family rides on the 8812 + * blob. */ +inline FirmwareBlob PickFirmwareForChip(HAL_IC_TYPE_E ic_type) { + if (ic_type == CHIP_8814A) { + return {array_mp_8814a_fw_nic, sizeof(array_mp_8814a_fw_nic)}; + } + return {array_mp_8812a_fw_nic, sizeof(array_mp_8812a_fw_nic)}; +} + #endif /* FIRMWARE_H */ diff --git a/src/FirmwareManager.cpp b/src/FirmwareManager.cpp index 1fda42f..b75f337 100644 --- a/src/FirmwareManager.cpp +++ b/src/FirmwareManager.cpp @@ -1,9 +1,46 @@ #include "FirmwareManager.h" #include "Firmware.h" +#include "FrameParser.h" #include "rtl8812a_hal.h" #include +#include +#include +#include + +/* 8814AU-specific constants pulled from hal/rtl8814a_spec.h. Inlined here to + * avoid dragging the full 8814 spec header (which has #define overlap with the + * 8812 spec on shared Jaguar symbols) into this TU. */ +namespace { +constexpr uint16_t REG_DDMA_CH0SA_8814A = 0x1200; +constexpr uint16_t REG_DDMA_CH0DA_8814A = 0x1204; +constexpr uint16_t REG_DDMA_CH0CTRL_8814A = 0x1208; +constexpr uint16_t REG_FIFOPAGE_CTRL_2_8814A = 0x0204; +constexpr uint16_t REG_FWHW_TXQ_CTRL_8814A = 0x0420; +constexpr uint16_t REG_CR_8814A = 0x0100; +constexpr uint32_t DDMA_LEN_MASK_8814A = 0x0001FFFFu; +constexpr uint32_t DDMA_CH_CHKSUM_CNT_8814A = (1u << 24); +constexpr uint32_t DDMA_RST_CHKSUM_STS_8814A = (1u << 25); +constexpr uint32_t DDMA_CHKSUM_FAIL_8814A = (1u << 27); +constexpr uint32_t DDMA_CHKSUM_EN_8814A = (1u << 29); +constexpr uint32_t DDMA_CH_OWN_8814A = (1u << 31); +constexpr uint8_t IMEM_DL_RDY_8814A = (1u << 3); +constexpr uint8_t IMEM_CHKSUM_OK_8814A = (1u << 4); +constexpr uint8_t DMEM_DL_RDY_8814A = (1u << 5); +constexpr uint8_t DMEM_CHKSUM_OK_8814A = (1u << 6); +constexpr uint32_t OCPBASE_TXBUF_3081 = 0x18780000; +constexpr uint32_t OCPBASE_DMEM_3081 = 0x00200000; +constexpr uint32_t OCPBASE_IMEM_3081 = 0x00000000; +constexpr uint32_t FW_CHKSUM_DUMMY_SZ_8814A = 8; +constexpr uint16_t TXDESC_OFFSET_8814A = 40; +constexpr uint32_t FW_HEADER_SIZE_8814A = 64; +/* TX_PAGE_BOUNDARY for 8814 USB. devourer's TX_PAGE_BOUNDARY_8812 is 0xF8; + * 8814 uses the same value for the standard USB config. */ +constexpr uint16_t TX_PAGE_BOUNDARY_8814A_USB = 0xF8; +constexpr uint32_t TX_PAGE_SIZE = 128; +constexpr uint32_t MAX_RSVD_PAGE_CHUNK_SZ = 4096u; /* rtw88 sends 4096-byte fw chunks */ +} // namespace template const &start) { FirmwareManager::FirmwareManager(RtlUsbAdapter device, Logger_t logger) : _device{device}, _logger{logger} {} -void FirmwareManager::FirmwareDownload8812() { +/* The Jaguar firmware-header signature lives in the low 16 bits of the first + * word: 0x95xx for 8812/8811, 0x88xx for 8814. */ +static bool jaguar_fw_header_present(const uint8_t *buf, HAL_IC_TYPE_E ic_type) { + const uint16_t signature = + static_cast(GET_FIRMWARE_HDR_SIGNATURE_8812(buf)); + if (ic_type == CHIP_8814A) + return (signature & 0xFFF0u) == 0x8810u; + return (signature & 0xFFF0u) == 0x9500u; +} + +void FirmwareManager::FirmwareDownload(HAL_IC_TYPE_E ic_type) { + if (ic_type == CHIP_8814A) { + /* 8814AU uses an entirely different firmware transport (TX-FIFO reserved + * page + internal DMA controller) than 8812. Hand off to the 8814 path. + * + * NOTE on macOS: bulk OUT to this chip is blocked by the OS because + * RTL8814AU has `NeedsDeviceAccessEntitlement = Yes` in the IOUSBHostDevice + * attributes — macOS requires `com.apple.developer.driverkit.transport.usb` + * to permit bulk writes. Without that entitlement (or SIP disabled), the + * fw download below times out at the bulk-OUT stage. Verified working on + * Linux. RTL8812AU does not have this restriction. */ + FirmwareDownload_8814A(); + return; + } + bool rtStatus = true; uint8_t write_fw = 0; - auto pFirmwareBuf = Firmware::pFirmwareBuf; - auto FirmwareLen = Firmware::FirmwareLen; + auto blob = PickFirmwareForChip(ic_type); + auto pFirmwareBuf = const_cast(blob.buf); + auto FirmwareLen = blob.len; auto firmwareVersion = (uint16_t)GET_FIRMWARE_HDR_VERSION_8812(pFirmwareBuf); auto firmwareSubVersion = @@ -28,11 +90,11 @@ void FirmwareManager::FirmwareDownload8812() { auto firmwareSignature = (uint16_t)GET_FIRMWARE_HDR_SIGNATURE_8812(pFirmwareBuf); - _logger->info("FirmwareDownload8812: fw_ver={} " - "fw_subver={} sig=0x{:X}", - firmwareVersion, firmwareSubVersion, firmwareSignature); + _logger->info("FirmwareDownload(ic={}): fw_ver={} fw_subver={} sig=0x{:X}", + (int)ic_type, firmwareVersion, firmwareSubVersion, + firmwareSignature); - if (IS_FW_HEADER_EXIST_8812(pFirmwareBuf)) { + if (jaguar_fw_header_present(pFirmwareBuf, ic_type)) { /* Shift 32 bytes for FW header */ pFirmwareBuf = pFirmwareBuf + 32; FirmwareLen -= 32; @@ -71,7 +133,7 @@ void FirmwareManager::FirmwareDownload8812() { return; } - rtStatus = _FWFreeToGo8812(10, 200); + rtStatus = _FWFreeToGo8812(10, 200, ic_type); if (true != rtStatus) { return; } @@ -82,6 +144,572 @@ void FirmwareManager::FirmwareDownload8812() { // TODO: now does nothing static void yield() {} +/* 8814AU firmware download via vendor-control-transfer page writes (same + * transport as 8812), but with the 8814-specific 8051 control sequence: + * + * _FWDownloadEnable_8814A(true) -- put chip in FW-load mode + * _3081Disable8814A -- gate the 8051 MCU + * _DDMAReset8814A -- clear stale DDMA state + * page-write firmware bytes -- chip computes checksum on the fly + * (poll FWDL_ChkSum_rpt for OK) + * _3081Enable8814A -- ungate the 8051 + * _FWDownloadEnable_8814A(false) + * set BIT(6) of REG_MCUFWDL+1 -- "FW go" kick + * poll CPU_DL_READY -- 8051 reports it's running + * + * The RSVD-page + IDDMA path upstream uses is not available to us because the + * bulk-OUT TX endpoint times out during fwdl mode on this driver; the + * page-write path's bytes also reach the chip (verified by FWDL_ChkSum_rpt + * being set after upload). The 8814 firmware header is 64 bytes (vs 8812's + * 32). */ +void FirmwareManager::FirmwareDownload_8814A() { + /* If fw is already running on the chip (e.g. another driver loaded it and + * we're picking up the device mid-flight), skip fwdl entirely. + * + * Detect via byte 0 of REG_MCUFWDL == 0x78 (IMEM_DL_RDY | IMEM_CHKSUM_OK | + * DMEM_DL_RDY | DMEM_CHKSUM_OK all set, FWDL_EN cleared). BIT15 + * (FW_INIT_RDY) is transient — set briefly during fw init then cleared + * once fw is operational — so polling for BIT15 misses an already-running + * fw. The 0x78 byte-0 pattern is the stable post-fw-boot signature + * (verified May 2026 against rtw88_8814au's chip via pyusb probe). */ + const uint32_t mcufwdl_state = _device.rtw_read32(REG_MCUFWDL); + if ((mcufwdl_state & 0xFF) == 0x78) { + _logger->info("8814A fw already running (REG_MCUFWDL=0x{:08x}) — skipping fwdl", + mcufwdl_state); + return; + } + _logger->info("8814A pre-fwdl REG_MCUFWDL=0x{:08x}", mcufwdl_state); + + auto blob = PickFirmwareForChip(CHIP_8814A); + uint8_t *fw = const_cast(blob.buf); + uint32_t fw_len = static_cast(blob.len); + + const uint16_t firmwareVersion = + static_cast(GET_FIRMWARE_HDR_VERSION_8812(fw + 4)); + const uint16_t firmwareSignature = + static_cast(GET_FIRMWARE_HDR_SIGNATURE_8812(fw)); + _logger->info("FirmwareDownload_8814A: fw_ver={} sig=0x{:X} blob={} bytes", + firmwareVersion, firmwareSignature, fw_len); + + /* NOTE: leave the 64-byte 8814 firmware header in the staged bytes. The + * 8814 bootloader reads section sizes from the header to know how to split + * DMEM/IRAM. (Upstream's RSVD-page path strips the header because it + * supplies the section addresses to IDDMA directly; we're not, so we let + * the chip see the header.) */ + (void)FW_HEADER_SIZE_8814A; + + if ((_device.rtw_read8(REG_MCUFWDL) & BIT7) != 0) { + /* 8051 already running from previous session — reset it. */ + _device.rtw_write8(REG_MCUFWDL, 0x00); + _device._8051Reset8812(); + } + + /* Parse 8814 firmware-header DMEM / IRAM section sizes. The 8814 fw header + * is 64 bytes; DMEM size lives at offset +36 (LE u32), IRAM size at +48. */ + auto le32 = [](const uint8_t *p) -> uint32_t { + return static_cast(p[0]) | + (static_cast(p[1]) << 8) | + (static_cast(p[2]) << 16) | + (static_cast(p[3]) << 24); + }; + const uint32_t dmem_size = le32(blob.buf + 36) + FW_CHKSUM_DUMMY_SZ_8814A; + const uint32_t iram_size = le32(blob.buf + 48) + FW_CHKSUM_DUMMY_SZ_8814A; + _logger->info("8814A FW sections: dmem={} iram={} (total payload {})", + dmem_size, iram_size, fw_len); + if (dmem_size + iram_size + FW_HEADER_SIZE_8814A != fw_len) { + _logger->error("8814A FW header/blob size mismatch: {} + {} + {} != {}", + dmem_size, iram_size, FW_HEADER_SIZE_8814A, fw_len); + return; + } + + /* Full 242-op pre-fwdl register sequence mirrored byte-for-byte from + * rtw88_8814au's usbmon trace (163 reads + 79 writes). The reads matter: + * several Realtek registers have read-side-effects (RC1 status clears, + * latched values, state-machine triggers), and a writes-only replay was + * insufficient to unlock the chip's BCN_VALID ack after the bulk OUT. + * Generated from /tmp/rtw88_init.seq via tools/gen_rtw88_mimic.py. */ + (void)_device.rtw_read32(0x00F0); + _device.rtw_write8(0x001C, 0x00); + (void)_device.rtw_read32(0x0064); + _device.rtw_write32(0x0064, 0x30200000); + (void)_device.rtw_read32(0x004C); + _device.rtw_write32(0x004C, 0x60228282); + (void)_device.rtw_read32(0x0040); + _device.rtw_write32(0x0040, 0x00000004); + (void)_device.rtw_read8(0x0002); + _device.rtw_write8(0x0002, 0x1C); + (void)_device.rtw_read8(0x001F); + _device.rtw_write8(0x001F, 0x00); + (void)_device.rtw_read32(0x00EC); + _device.rtw_write32(0x00EC, 0x30453F15); + (void)_device.rtw_read8(0xFE58); + (void)_device.rtw_read16(0x0080); + (void)_device.rtw_read8(0x0100); + (void)_device.rtw_read8(0xFE58); + (void)_device.rtw_read16(0x0080); + (void)_device.rtw_read8(0x0100); + (void)_device.rtw_read8(0x0C00); + _device.rtw_write8(0x0C00, 0x04); + (void)_device.rtw_read8(0x0E00); + _device.rtw_write8(0x0E00, 0x04); + (void)_device.rtw_read8(0x1002); + _device.rtw_write8(0x1002, 0xAC); + (void)_device.rtw_read8(0x001F); + _device.rtw_write8(0x001F, 0x00); + (void)_device.rtw_read8(0x0007); + _device.rtw_write8(0x0007, 0x28); + (void)_device.rtw_read8(0x0008); + _device.rtw_write8(0x0008, 0x21); + (void)_device.rtw_read8(0x0066); + _device.rtw_write8(0x0066, 0x20); + (void)_device.rtw_read8(0x0041); + _device.rtw_write8(0x0041, 0x00); + (void)_device.rtw_read8(0x0042); + _device.rtw_write8(0x0042, 0x00); + (void)_device.rtw_read8(0x004E); + _device.rtw_write8(0x004E, 0x22); + (void)_device.rtw_read8(0x0041); + _device.rtw_write8(0x0041, 0x00); + (void)_device.rtw_read8(0x0005); + _device.rtw_write8(0x0005, 0x02); + (void)_device.rtw_read8(0x0005); + (void)_device.rtw_read8(0x0005); + (void)_device.rtw_read8(0x0003); + _device.rtw_write8(0x0003, 0x72); + (void)_device.rtw_read8(0x0080); + _device.rtw_write8(0x0080, 0x01); + (void)_device.rtw_read8(0x0081); + _device.rtw_write8(0x0081, 0x30); + (void)_device.rtw_read8(0x0045); + _device.rtw_write8(0x0045, 0x00); + (void)_device.rtw_read8(0x0046); + _device.rtw_write8(0x0046, 0xFF); + (void)_device.rtw_read8(0x0047); + _device.rtw_write8(0x0047, 0x00); + (void)_device.rtw_read8(0x0015); + _device.rtw_write8(0x0015, 0xCF); + (void)_device.rtw_read8(0x0015); + _device.rtw_write8(0x0015, 0xEF); + (void)_device.rtw_read8(0x0012); + _device.rtw_write8(0x0012, 0x83); + (void)_device.rtw_read8(0x0023); + _device.rtw_write8(0x0023, 0x15); + (void)_device.rtw_read8(0x0008); + _device.rtw_write8(0x0008, 0x21); + (void)_device.rtw_read8(0x0007); + _device.rtw_write8(0x0007, 0x20); + (void)_device.rtw_read8(0x001F); + _device.rtw_write8(0x001F, 0x00); + (void)_device.rtw_read8(0x0020); + _device.rtw_write8(0x0020, 0x00); + (void)_device.rtw_read8(0x0021); + _device.rtw_write8(0x0021, 0x00); + (void)_device.rtw_read8(0x0076); + _device.rtw_write8(0x0076, 0x00); + (void)_device.rtw_read8(0x0091); + _device.rtw_write8(0x0091, 0xE1); + (void)_device.rtw_read8(0x0070); + _device.rtw_write8(0x0070, 0x08); + (void)_device.rtw_read8(0x0005); + _device.rtw_write8(0x0005, 0x08); + _device.rtw_write8(0x001C, 0x00); + (void)_device.rtw_read32(0x0064); + _device.rtw_write32(0x0064, 0x31200000); + (void)_device.rtw_read32(0x004C); + _device.rtw_write32(0x004C, 0x60228282); + (void)_device.rtw_read32(0x0040); + _device.rtw_write32(0x0040, 0x00000004); + (void)_device.rtw_read8(0x0002); + _device.rtw_write8(0x0002, 0x1C); + (void)_device.rtw_read8(0x001F); + _device.rtw_write8(0x001F, 0x00); + (void)_device.rtw_read32(0x00EC); + _device.rtw_write32(0x00EC, 0x30453F15); + (void)_device.rtw_read8(0xFE58); + (void)_device.rtw_read16(0x0080); + (void)_device.rtw_read8(0x0100); + (void)_device.rtw_read8(0x10C2); + _device.rtw_write8(0x10C2, 0x22); + (void)_device.rtw_read8(0x0012); + _device.rtw_write8(0x0012, 0xC3); + (void)_device.rtw_read8(0x0015); + _device.rtw_write8(0x0015, 0xCF); + (void)_device.rtw_read8(0x0015); + _device.rtw_write8(0x0015, 0x8F); + (void)_device.rtw_read8(0x0023); + _device.rtw_write8(0x0023, 0x05); + (void)_device.rtw_read8(0x0046); + _device.rtw_write8(0x0046, 0x00); + (void)_device.rtw_read8(0x0062); + _device.rtw_write8(0x0062, 0x00); + (void)_device.rtw_read8(0x0005); + _device.rtw_write8(0x0005, 0x00); + (void)_device.rtw_read8(0x0005); + _device.rtw_write8(0x0005, 0x00); + (void)_device.rtw_read8(0x0006); + (void)_device.rtw_read8(0x0005); + _device.rtw_write8(0x0005, 0x00); + (void)_device.rtw_read8(0x00F0); + _device.rtw_write8(0x00F0, 0x35); + (void)_device.rtw_read8(0x0081); + _device.rtw_write8(0x0081, 0x20); + (void)_device.rtw_read8(0x0005); + _device.rtw_write8(0x0005, 0x01); + /* rtw88 polls 0x0005 BIT0 here for power-on-ready (75 reads in the trace). + * Replicate the poll rather than blast 75 unconditional reads. */ + for (int i = 0; i < 75; ++i) { + if (!(_device.rtw_read8(0x0005) & 0x01)) { + break; + } + } + (void)_device.rtw_read32(0x1080); + _device.rtw_write32(0x1080, 0xF7816D20); + (void)_device.rtw_read8(0x0003); + _device.rtw_write8(0x0003, 0xFE); + (void)_device.rtw_read8(0x1103); + _device.rtw_write8(0x1103, 0x0C); + (void)_device.rtw_read32(0x0080); + _device.rtw_write8(0x01A0, 0xFD); + (void)_device.rtw_read8(0x0003); + _device.rtw_write8(0x0003, 0xFA); + (void)_device.rtw_read8(0x001D); + _device.rtw_write8(0x001D, 0x08); + (void)_device.rtw_read8(0x010D); + _device.rtw_write8(0x010D, 0xC0); + (void)_device.rtw_read8(0x0100); + _device.rtw_write8(0x0100, 0x05); + _device.rtw_write32(0x1330, 0x80000000); + (void)_device.rtw_read16(0x0230); + (void)_device.rtw_read32(0x022C); + _device.rtw_write16(0x0230, 0x0200); + _device.rtw_write32(0x022C, 0x80000000); + (void)_device.rtw_read8(0x0550); + _device.rtw_write8(0x0550, 0x14); + (void)_device.rtw_read8(0x1082); + _device.rtw_write8(0x1082, 0x80); + (void)_device.rtw_read8(0x0009); + _device.rtw_write8(0x0009, 0xBC); + (void)_device.rtw_read8(0x1082); + _device.rtw_write8(0x1082, 0x81); + (void)_device.rtw_read8(0x0009); + _device.rtw_write8(0x0009, 0xFC); + (void)_device.rtw_read16(0x0080); + _device.rtw_write16(0x0080, 0x2001); + (void)_device.rtw_read32(0x1208); + _device.rtw_write32(0x1208, 0x02000000); + (void)_device.rtw_read8(0x0550); + _device.rtw_write16(0x0204, 0x8000); + (void)_device.rtw_read8(0x0101); + _device.rtw_write8(0x0101, 0x01); + _device.rtw_write8(0x0550, 0x14); + _logger->info("8814A: rtw88-mimic 242-op pre-fwdl reg sequence applied"); + + /* The 79-op mimic above already includes: + * - _FWDownloadEnable_8814A equivalent (0x0080 = 0x2001) + * - _3081Disable equivalent (0x0003 writes) + * - DDMA reset (0x1080 toggling) + * - Beacon queue gate (REG_CR+1 = 0x01, REG_BCN_CTRL = 0x14, + * REG_FWHW_TXQ_CTRL+2 clears BIT6) + * - REG_FIFOPAGE_CTRL_2 = 0x8000 (clear BIT15) + * So additional explicit setup here would only CORRUPT the carefully- + * staged chip state. The chunk loop below picks up directly. */ + /* Vestigial state-restore variables. Both REG_FWHW_TXQ_CTRL+2 (0x0422) + * pre-bulk-OUT read AND the BCN_FUNC/REG_BCN_CTRL restore were removed — + * the 0x0422 read in particular was the LAST control transfer before the + * bulk OUT in our trace, while rtw88's last op is the 0x0550=0x14 write. + * That extra read between mimic and bulk OUT is the only divergence vs + * rtw88's wire sequence; removing it lets us match byte-for-byte. */ + const uint8_t bcn_ctrl = 0x14; /* known final value after mimic */ + const bool sendBeacon = false; /* mimic cleared the BCN-active flag */ + (void)bcn_ctrl; + (void)sendBeacon; + + /* RSVD-page TX path: for each fw section (DMEM, IRAM), bulk-OUT the chunk + * via the beacon queue, wait for the chip to ack the RSVD-page write, + * then trigger IDDMA to copy from the TX FIFO to the 8051's DMEM/IMEM. + * The fw header (64 bytes) is parsed for section sizes but NOT uploaded. + * + * IDDMA source = OCPBASE_TXBUF_3081 + 40. Confirmed via usbmon from a + * working rtw88_8814au init capture: REG_DDMA_CH0SA was set to + * 0x18780028 = OCPBASE_TXBUF_3081 + TXDESC_OFFSET. The TX_PAGE_BOUNDARY + * register is about beacon-queue *routing*, not where the actual bytes + * sit — those always land at TX_BUF + (TXDESC_OFFSET) after the chip + * strips the descriptor. */ + const uint32_t MEMOffsetInTxBuf = OCPBASE_TXBUF_3081 + TXDESC_OFFSET_8814A; + + /* No CLEAR_FEATURE on EP 0x02 here. rtw88_8814au's usbmon trace shows the + * first bulk OUT (4136-byte fw chunk) happens WITHOUT any preceding + * CLEAR_FEATURE — the 117 CLEAR_FEATUREs in rtw88's full trace are all + * issued ~160s later, during normal TX-queue operation. clear_halt resets + * the EP 0x02 data-toggle bit, which corrupts the chip's fwdl state + * machine. */ + + auto stream_section = + [&](const uint8_t *section_start, uint32_t section_size, + uint32_t ocp_dest) -> bool { + uint32_t remaining = section_size; + uint32_t pkt_offset = 0; + while (remaining > 0) { + uint32_t chunk; + bool ls; + if (remaining > MAX_RSVD_PAGE_CHUNK_SZ) { + chunk = MAX_RSVD_PAGE_CHUNK_SZ; + ls = false; + const uint32_t last_block = remaining - MAX_RSVD_PAGE_CHUNK_SZ; + if (last_block < MAX_RSVD_PAGE_CHUNK_SZ && + ((last_block + 40) & 0x3F) == 0) { + chunk -= 4; + } + } else { + chunk = remaining; + ls = true; + } + const bool fs = (pkt_offset == 0); + /* Per-chunk sequence mirrors upstream rtw88_8814au usbmon capture. */ + _SetDownLoadFwRsvdPagePkt_8814A(section_start + pkt_offset, chunk); + + /* Brief settle delay: rtw88's chip latches BIT15 ~60us after bulk OUT + * completion. Without this, fast polling can race the chip and read + * stale 0x0FF80000 throughout the 10ms window. */ + std::this_thread::sleep_for(std::chrono::microseconds(100)); + + /* Poll 0x0204 (4-byte read) for BIT15 (chip ack of RSVD page). */ + bool got_ack = false; + for (int i = 0; i < 200; ++i) { + const uint32_t v = _device.rtw_read32(REG_FIFOPAGE_CTRL_2_8814A); + if (v & (1u << 15)) { got_ack = true; break; } + std::this_thread::sleep_for(std::chrono::microseconds(50)); + } + if (!got_ack) { + _logger->error("8814A RSVD ack timeout @ ocp=0x{:X} pkt_offset={}", + ocp_dest, pkt_offset); + /* Continue anyway. */ + } + + /* Clear BIT15 (W1C), set BCN_CTRL, disable BCN_DMA temporarily. */ + _device.rtw_write16(REG_FIFOPAGE_CTRL_2_8814A, 0x8000); + _device.rtw_write8(REG_BCN_CTRL, 0x14); + _device.rtw_write8(REG_CR_8814A + 1, 0x00); + + if (!_IDDMADownLoadFW_3081(MEMOffsetInTxBuf, ocp_dest + pkt_offset, + chunk, fs, ls)) { + _logger->error("8814A IDDMA copy failed (ocp=0x{:X})", ocp_dest); + return false; + } + + remaining -= chunk; + pkt_offset += chunk; + if (remaining > 0) { + /* Re-enable BCN_DMA for the next chunk. After the LAST chunk we + * leave the beacon queue gated off — rtw88's post-fwdl trace + * doesn't re-enable it; doing so before the CPU kick keeps the MAC + * in a state that blocks fw boot completion. */ + _device.rtw_write16(REG_FIFOPAGE_CTRL_2_8814A, 0x8000); + _device.rtw_write8(REG_CR_8814A + 1, 0x01); + _device.rtw_write8(REG_BCN_CTRL, 0x14); + } + } + return true; + }; + + /* DMEM is at fw + 64; IRAM follows DMEM. fw still points at start of blob. */ + bool rtStatus = stream_section(fw + FW_HEADER_SIZE_8814A, dmem_size, + OCPBASE_DMEM_3081); + if (rtStatus) { + rtStatus = stream_section(fw + FW_HEADER_SIZE_8814A + dmem_size, iram_size, + OCPBASE_IMEM_3081); + } + if (!rtStatus) { + _3081Enable8814A(); + _FWDownloadEnable_8814A(false); + return; + } + + /* Post-fwdl CPU kick sequence — mirrors rtw88_8814au's usbmon trace + * byte-for-byte after the last fwdl IDDMA program. */ + _device.rtw_write8(REG_MCUFWDL, 0x79); /* declare init ready */ + _device.rtw_write8(0x010d, 0x00); /* REG_RD_CTRL+1 */ + _device.rtw_write8(0x0100, 0x00); /* REG_CR byte 0 = 0 */ + _device.rtw_write32(0x1330, 0x80000000); /* REG_3081_DCDC_CTRL */ + _device.rtw_write16(0x0230, 0x0000); /* REG_PCIE_CTRL_REG word */ + _device.rtw_write32(0x022c, 0x80000000); /* REG_BIST_CTRL */ + _device.rtw_write8(REG_BCN_CTRL, 0x14); /* REG_BCN_CTRL */ + _device.rtw_write32(0x0210, 0x00000004); /* REG_RXFLTMAP */ + _device.rtw_write16(REG_MCUFWDL, 0x6078); /* clear FWDL_EN; kick */ + _device.rtw_write8(0x001d, 0x09); /* REG_AFE_OSC_CTRL2+1 */ + _device.rtw_write8(0x0003, 0xfe); /* REG_RSV_CTRL+1, enable 8051 */ + + /* Poll for CPU_DL_READY (BIT15 of REG_MCUFWDL). The 8051 sets this bit + * once it's running and has finished its on-chip init. */ + if (!_FWFreeToGo8812(10, 5000, CHIP_8814A)) { + return; + } + + InitializeFirmwareVars8812(); +} + +/* Polls REG_FIFOPAGE_CTRL_2_8814A+1 BIT7 for "RSVD page download complete" + * after a TX-FIFO write. Upstream's `dump_mgntframe` is synchronous; + * devourer's send_packet is async via libusb, so we need a longer window to + * cover the in-flight bulk transfer + chip processing. */ +bool FirmwareManager::_WaitDownLoadRSVDPageOK_3081() { + constexpr int max_iters = 200; /* 200 * 1ms = 200ms wall time */ + constexpr int iter_delay_us = 1000; + for (int count = 0; count < max_iters; ++count) { + const uint8_t v = + _device.rtw_read8(REG_FIFOPAGE_CTRL_2_8814A + 1); + if (v & BIT(7)) { + /* Write-1 to clear. */ + _device.rtw_write8(REG_FIFOPAGE_CTRL_2_8814A + 1, + (uint8_t)(v | BIT(7))); + return true; + } + std::this_thread::sleep_for(std::chrono::microseconds(iter_delay_us)); + } + _logger->error("_WaitDownLoadRSVDPageOK_3081: timeout (BIT7 never set)"); + return false; +} + +/* Build a TX packet whose body is `len` bytes of firmware and dump it via + * bulk-OUT through the management queue. Upstream's `dump_mgntframe` (which + * `SetDownLoadFwRsvdPagePkt_8814A` calls) goes via the management queue + * (QSLT_MGT = 0x12); the chip is in a special mode set up above where mgmt + * frames are diverted to the beacon FIFO at the reserved-page address. */ +void FirmwareManager::_SetDownLoadFwRsvdPagePkt_8814A( + const uint8_t *fw_chunk, uint32_t len) { + const uint32_t total = len + TXDESC_OFFSET_8814A; + std::vector packet(total, 0); + uint8_t *p = packet.data(); + + /* Minimal TX descriptor matching upstream rtw88_8814au usbmon capture: + * only PKT_SIZE, OFFSET, LAST_SEG, and QUEUE_SEL=0x10 (QSLT_BCN). Setting + * BMC, FIRST_SEG, OWN, MACID, RATE_ID, etc. causes the chip to reject the + * packet after the first 512 bytes. */ + SET_TX_DESC_PKT_SIZE_8812(p, len); + SET_TX_DESC_OFFSET_8812(p, TXDESC_OFFSET_8814A); + SET_TX_DESC_LAST_SEG_8812(p, 1); + SET_TX_DESC_QUEUE_SEL_8812(p, 0x10); /* QSLT_BCN */ + + std::memcpy(p + TXDESC_OFFSET_8814A, fw_chunk, len); + rtl8812a_cal_txdesc_chksum(p); + + /* Use the synchronous bulk write — we need the bytes to arrive at the chip + * before polling for the RSVD-page-OK bit. The default async send_packet + * returns before the transfer lands. */ + const int sent = _device.bulk_send_sync(p, total, 2000); + if (sent < 0 || static_cast(sent) != total) { + _logger->error("8814A RSVD chunk TX failed: sent={} of {} bytes", sent, + (int)total); + } else { + _logger->debug("8814A RSVD chunk TX OK: {} bytes", sent); + } +} + +/* Drives the chip's internal DMA controller channel 0 to copy `length` bytes + * from TX-FIFO source `source` to internal `dest` (DMEM or IMEM). Mirrors + * upstream IDDMADownLoadFW_3081. */ +bool FirmwareManager::_IDDMADownLoadFW_3081(uint32_t source, uint32_t dest, + uint32_t length, bool fs, bool ls) { + /* Wait for channel idle before programming a new transfer. */ + for (int cnt = 20; cnt > 0; --cnt) { + if (!(_device.rtw_read32(REG_DDMA_CH0CTRL_8814A) & DDMA_CH_OWN_8814A)) + break; + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + if (cnt == 1) { + _logger->error("_IDDMADownLoadFW_3081: pre-busy timeout"); + return false; + } + } + + uint32_t ch0ctrl = DDMA_CHKSUM_EN_8814A | DDMA_CH_OWN_8814A; + ch0ctrl |= (length & DDMA_LEN_MASK_8814A); + if (!fs) { + ch0ctrl |= DDMA_CH_CHKSUM_CNT_8814A; + } + _device.rtw_write32(REG_DDMA_CH0SA_8814A, source); + _device.rtw_write32(REG_DDMA_CH0DA_8814A, dest); + _device.rtw_write32(REG_DDMA_CH0CTRL_8814A, ch0ctrl); + + /* Wait for channel completion. */ + for (int cnt = 20; cnt > 0; --cnt) { + if (!(_device.rtw_read32(REG_DDMA_CH0CTRL_8814A) & DDMA_CH_OWN_8814A)) + break; + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + if (cnt == 1) { + _logger->error("_IDDMADownLoadFW_3081: post-busy timeout"); + return false; + } + } + + if (ls) { + /* Only check the IDDMA checksum status — do NOT write IMEM_DL_RDY / + * DMEM_DL_RDY / *_CHKSUM_OK back into REG_MCUFWDL. The aircrack-ng + * rtl8814au port we originally followed does these writes, but rtw88's + * iddma_download_firmware does not — and the chip is supposed to set + * BIT4 (IMEM_CHKSUM_OK) and BIT6 (DMEM_CHKSUM_OK) itself after a + * successful IDDMA. download_firmware_end_flow then reads MCUFWDL, + * verifies BIT_CHECK_SUM_OK = BIT4|BIT6, and on success writes + * FW_DW_RDY (BIT14) and clears MCUFWDL_EN (BIT0). Force-writing the + * DL_RDY bits ourselves was leaving the chip in a state where the 3081 + * CPU enable wouldn't trigger fw execution (chip stayed at 0x00606078 + * instead of transitioning to 0x0060e078 = BIT15 / FW_INIT_RDY set). */ + if (_device.rtw_read32(REG_DDMA_CH0CTRL_8814A) & DDMA_CHKSUM_FAIL_8814A) { + const uint32_t v = _device.rtw_read32(REG_DDMA_CH0CTRL_8814A); + _device.rtw_write32(REG_DDMA_CH0CTRL_8814A, + v | DDMA_RST_CHKSUM_STS_8814A); + _logger->error("_IDDMADownLoadFW_3081: checksum fail (dest=0x{:X})", + dest); + return false; + } + } + return true; +} + +/* 8051 MCU core gate. Mirrors _3081Disable8814A / _3081Enable8814A in + * upstream hal/rtl8814a/rtl8814a_hal_init.c. The MCU "3081" runs the + * downloaded firmware; it must be disabled while bytes are being written and + * re-enabled afterward to make it pick up the new image. The bit lives in + * REG_SYS_FUNC_EN+1 (the high byte of the 16-bit SYS_FUNC_EN register at + * 0x0002 — same physical register as 8812's REG_SYS_FUNC_EN). */ +void FirmwareManager::_3081Disable8814A() { + uint8_t v = _device.rtw_read8(REG_SYS_FUNC_EN + 1); + _device.rtw_write8(REG_SYS_FUNC_EN + 1, (uint8_t)(v & ~BIT(2))); +} + +void FirmwareManager::_3081Enable8814A() { + uint8_t v = _device.rtw_read8(REG_SYS_FUNC_EN + 1); + _device.rtw_write8(REG_SYS_FUNC_EN + 1, (uint8_t)(v | BIT(2))); +} + +/* Direct DMA controller reset. REG_CPU_DMEM_CON_8814A (0x1080) is 8814-only; + * toggle BIT16 (clear then set) to flush stale DMA state before the firmware + * write. Per upstream comment "DDMA reset, suggest by MAC yodar". */ +void FirmwareManager::_DDMAReset8814A() { + constexpr uint16_t REG_CPU_DMEM_CON_8814A = 0x1080; + uint32_t v = _device.rtw_read32(REG_CPU_DMEM_CON_8814A); + _device.rtw_write32(REG_CPU_DMEM_CON_8814A, v & ~BIT(16)); + _device.rtw_write32(REG_CPU_DMEM_CON_8814A, v | BIT(16)); +} + +/* Mirrors upstream _FWDownloadEnable_8814A in + * hal/rtl8814a/rtl8814a_hal_init.c. The 8814 enable path sets a specific bit + * pattern in the upper bits of REG_8051FW_CTRL (== REG_MCUFWDL @ 0x0080) + * that puts the 8051 in firmware-load mode; failing to do this is why the + * 8051 never reaches CPU_DL_READY on 8814AU even after a successful upload. */ +void FirmwareManager::_FWDownloadEnable_8814A(bool enable) { + if (enable) { + uint16_t u2Tmp = _device.rtw_read16(REG_MCUFWDL); + u2Tmp &= 0x3000; /* keep bits 12-13, clear everything else */ + u2Tmp &= ~BIT(12); /* clear bit 12 */ + u2Tmp |= BIT(13); /* set bit 13 */ + u2Tmp |= BIT(0); /* set bit 0 (download enable) */ + _device.rtw_write16(REG_MCUFWDL, u2Tmp); + } else { + uint8_t tmp = _device.rtw_read8(REG_MCUFWDL); + _device.rtw_write8(REG_MCUFWDL, (uint8_t)(tmp & 0xfe)); + } +} + void FirmwareManager::_FWDownloadEnable_8812(bool enable) { u8 tmp; @@ -239,30 +867,56 @@ bool FirmwareManager::polling_fwdl_chksum(uint32_t min_cnt, uint32_t timeout_ms) return ret; } -bool FirmwareManager::_FWFreeToGo8812(uint32_t min_cnt, uint32_t timeout_ms) { +bool FirmwareManager::_FWFreeToGo8812(uint32_t min_cnt, uint32_t timeout_ms, + HAL_IC_TYPE_E ic_type) { bool ret = false; uint32_t value32; uint32_t cnt = 0; - value32 = _device.rtw_read32(REG_MCUFWDL); - value32 |= MCUFWDL_RDY; - value32 = (uint32_t)(value32 & ~WINTINI_RDY); - _device.rtw_write32(REG_MCUFWDL, value32); + /* REG_MCUFWDL (0x0080) is the same physical register on 8812 and 8814 — + * upstream renames it REG_8051FW_CTRL_8814A. The "FW is alive" indicator + * differs by chip: + * - 8812 uses WINTINI_RDY (BIT6) as the single-bit ready flag + * - 8814 has the chip set BIT15 (FW_INIT_RDY) briefly during fw init, + * then settles to byte 0 = 0x78 (IMEM_DL_RDY|IMEM_CHKSUM_OK| + * DMEM_DL_RDY|DMEM_CHKSUM_OK, FWDL_EN cleared). Polling BIT15 in + * userspace misses the transient window; the stable post-boot state + * is byte 0 == 0x78 with FW_DW_RDY (BIT14) also set. */ + if (ic_type != CHIP_8814A) { + value32 = _device.rtw_read32(REG_MCUFWDL); + value32 |= MCUFWDL_RDY; + value32 = (uint32_t)(value32 & ~WINTINI_RDY); + _device.rtw_write32(REG_MCUFWDL, value32); + + _device._8051Reset8812(); + } - _device._8051Reset8812(); + const uint32_t ready_bit = + (ic_type == CHIP_8814A) ? 0u /* use byte-0 check below */ : WINTINI_RDY; auto start = std::chrono::steady_clock::now(); /* polling for FW ready */ do { cnt++; value32 = _device.rtw_read32(REG_MCUFWDL); - if ((value32 & WINTINI_RDY) != 0) { + if (ic_type == CHIP_8814A) { + /* Match either the transient FW_INIT_RDY (BIT15) OR the stable + * post-boot pattern (byte 0 == 0x78 = all DL_RDY + CHKSUM_OK, + * FWDL_EN cleared). */ + if ((value32 & (1u << 15)) || ((value32 & 0xFF) == 0x78)) { + break; + } + } else if ((value32 & ready_bit) != 0) { break; } yield(); } while (since(start).count() < timeout_ms || cnt < min_cnt); - if (!((value32 & WINTINI_RDY) != 0)) { + if (ic_type == CHIP_8814A) { + if (!((value32 & (1u << 15)) || ((value32 & 0xFF) == 0x78))) { + goto exit; + } + } else if (!((value32 & ready_bit) != 0)) { goto exit; } diff --git a/src/FirmwareManager.h b/src/FirmwareManager.h index 7113899..131865d 100644 --- a/src/FirmwareManager.h +++ b/src/FirmwareManager.h @@ -1,6 +1,7 @@ #ifndef FIRMWAREMANAGER_H #define FIRMWAREMANAGER_H +#include "HalVerDef.h" #include "RtlUsbAdapter.h" #include "logger.h" @@ -10,16 +11,29 @@ class FirmwareManager { public: FirmwareManager(RtlUsbAdapter device, Logger_t logger); - void FirmwareDownload8812(); + /* Downloads the NIC firmware blob matched to `ic_type`. Header parsing / + * download protocol are common across Jaguar (8812 / 8811 / 8814) — only the + * blob and the header-signature check differ. */ + void FirmwareDownload(HAL_IC_TYPE_E ic_type); private: void _FWDownloadEnable_8812(bool enable); + void _FWDownloadEnable_8814A(bool enable); + void _3081Disable8814A(); + void _3081Enable8814A(); + void _DDMAReset8814A(); + void FirmwareDownload_8814A(); + void _SetDownLoadFwRsvdPagePkt_8814A(const uint8_t *fw_chunk, uint32_t len); + bool _WaitDownLoadRSVDPageOK_3081(); + bool _IDDMADownLoadFW_3081(uint32_t source, uint32_t dest, uint32_t length, + bool fs, bool ls); bool WriteFW8812(uint8_t *buffer, uint32_t size); int _PageWrite_8812(uint32_t page, uint8_t *buffer, uint32_t size); bool BlockWrite(uint8_t *buffer, int buffSize); void InitializeFirmwareVars8812(); bool polling_fwdl_chksum(uint32_t min_cnt, uint32_t timeout_ms); - bool _FWFreeToGo8812(uint32_t min_cnt, uint32_t timeout_ms); + bool _FWFreeToGo8812(uint32_t min_cnt, uint32_t timeout_ms, + HAL_IC_TYPE_E ic_type); }; diff --git a/src/FrameParser.cpp b/src/FrameParser.cpp index 528cb16..8c2721c 100644 --- a/src/FrameParser.cpp +++ b/src/FrameParser.cpp @@ -180,8 +180,18 @@ std::vector FrameParser::recvbuf2recvframe(std::span ptr) { memcpy(static_cast(&driver_data), pbuf.data() + RXDESC_SIZE, sizeof(driver_data)); ret.back().RxAtrib.rssi[0] = driver_data.gain_trsw[0]; ret.back().RxAtrib.rssi[1] = driver_data.gain_trsw[1]; + /* 8814AU path C/D RSSI lives in gain_trsw_cd; on 8812/8811 these bytes + * are 0. */ + ret.back().RxAtrib.rssi[2] = driver_data.gain_trsw_cd[0]; + ret.back().RxAtrib.rssi[3] = driver_data.gain_trsw_cd[1]; ret.back().RxAtrib.snr[0] = driver_data.rxsnr[0]; ret.back().RxAtrib.snr[1] = driver_data.rxsnr[1]; + /* 8814AU path C/D SNR is in csi_current per upstream's struct comment + * (DWORD 5 byte 1-2); on 8812 those bytes hold stream 1/2 CSI which we + * don't surface, so the value is meaningful only when the chip is + * 8814AU. */ + ret.back().RxAtrib.snr[2] = static_cast(driver_data.csi_current[0]); + ret.back().RxAtrib.snr[3] = static_cast(driver_data.csi_current[1]); } else { /* pkt_rpt_type == TX_REPORT1-CCX, TX_REPORT2-TX RTP,HIS_REPORT-USB HISR * RTP */ diff --git a/src/FrameParser.h b/src/FrameParser.h index 7af4509..77caf8d 100644 --- a/src/FrameParser.h +++ b/src/FrameParser.h @@ -290,8 +290,11 @@ struct rx_pkt_attrib uint8_t stbc; uint8_t ldpc; uint8_t sgi; - uint8_t rssi[2]; - int8_t snr[2]; + /* RSSI / SNR per RF path: A, B (Jaguar 8812/8811) plus C, D (8814AU). On + * non-8814 chips the [2..3] slots are zero — the upstream RX phy-status + * report reserves those bytes when only 2 paths are active. */ + uint8_t rssi[4]; + int8_t snr[4]; RX_PACKET_TYPE pkt_rpt_type; }; diff --git a/src/HalModule.cpp b/src/HalModule.cpp index 5d2ccef..e19ce75 100644 --- a/src/HalModule.cpp +++ b/src/HalModule.cpp @@ -2,6 +2,8 @@ #include "FirmwareManager.h" #include "Hal8812PhyReg.h" +#include "Hal8814_PhyTables.h" +#include "PhyTableLoader.h" #include "phydm_pre_define.h" #include "registry_priv.h" #include "rtl8812a_hal.h" @@ -54,40 +56,62 @@ bool HalModule::rtl8812au_hal_init() { _logger->info("MAC has not been powered on yet"); } - _device.rtw_write8(REG_RF_CTRL, 5); - _device.rtw_write8(REG_RF_CTRL, 7); - _device.rtw_write8(REG_RF_B_CTRL_8812, 5); - _device.rtw_write8(REG_RF_B_CTRL_8812, 7); - - // If HW didn't go through a complete de-initial procedure, - // it probably occurs some problem for double initial procedure. - // Like "CONFIG_DEINIT_BEFORE_INIT" in 92du chip - _device.rtl8812au_hw_reset(); - - auto initPowerOnStatus = InitPowerOn(); - if (initPowerOnStatus == false) { - return false; + /* 8814AU divergence on PRE-fwdl init only: skip 8812-era RF_CTRL pokes, + * hw_reset (no-op on cold boot anyway), and our aircrack-ng-ported + * card_enable_flow power-seq — all of which write to registers + * rtw88_8814au never touches pre-fwdl (e.g. REG_RF_CTRL=0x05/0x07, + * REG_OPT_CTRL+2=0x05/0x07). The 8814 pre-fwdl state is set up by the + * 242-op rtw88-mimic inside FirmwareDownload_8814A instead. + * + * POST-fwdl init flow (Queue/Page/WMAC/MSR/Aggregation/BB/RF) is run for + * both chips — these write to chip-version-agnostic registers and the + * functions that do diverge dispatch internally on ICType. */ + const bool is_8814a = _eepromManager->version_id.ICType == CHIP_8814A; + if (!is_8814a) { + _device.rtw_write8(REG_RF_CTRL, 5); + _device.rtw_write8(REG_RF_CTRL, 7); + _device.rtw_write8(REG_RF_B_CTRL_8812, 5); + _device.rtw_write8(REG_RF_B_CTRL_8812, 7); + + // If HW didn't go through a complete de-initial procedure, + // it probably occurs some problem for double initial procedure. + // Like "CONFIG_DEINIT_BEFORE_INIT" in 92du chip + _device.rtl8812au_hw_reset(); + + auto initPowerOnStatus = InitPowerOn(); + if (initPowerOnStatus == false) { + return false; + } } - // ATTENTION!! BOUNDARY size depends on wifi_spec aka WMM or not WMM - auto initLltTable8812AStatus = InitLLTTable8812A(TX_PAGE_BOUNDARY_8812); - if (initLltTable8812AStatus == false) { - return false; + /* LLT table init: 8812 needs it pre-fw download; 8814AU does NOT — rtw88 + * runs LLT init AFTER fw boot, and doing it pre-fw on 8814 breaks the + * beacon-queue fwdl path (the chip silently rejects bulk OUT writes). */ + if (_eepromManager->version_id.ICType != CHIP_8814A) { + if (!InitLLTTable8812A(TX_PAGE_BOUNDARY_8812)) { + _logger->error("InitLLTTable8812A failed"); + return false; + } } _InitHardwareDropIncorrectBulkOut_8812A(); auto fwManager = std::make_unique(_device, _logger); - fwManager->FirmwareDownload8812(); + fwManager->FirmwareDownload(_eepromManager->version_id.ICType); + + /* 8814AU: now that fw is running, the chip will accept EFUSE reads + * without breaking RSVD-page fwdl (which is past). Read the board's + * actual rfe_type, PA/LNA types, crystal cap, etc., so that + * GetPhyContext() returns real values to PhyTableLoader instead of + * the fallback rfe_type=1 used pre-EFUSE-read. */ + _eepromManager->LateInitFor8814A(); PHY_MACConfig8812(); _InitQueueReservedPage_8812AUsb(); _InitTxBufferBoundary_8812AUsb(); - _InitQueuePriority_8812AUsb(); _InitPageBoundary_8812AUsb(); - _InitTransferPageSize_8812AUsb(); // Get Rx PHY status in order to report RSSI and others. @@ -116,6 +140,38 @@ bool HalModule::rtl8812au_hal_init() { _device.rtw_write16(REG_PKT_VO_VI_LIFE_TIME, 0x0400); /* unit: 256us. 256ms */ _device.rtw_write16(REG_PKT_BE_BK_LIFE_TIME, 0x0400); /* unit: 256us. 256ms */ + /* 8814AU BB/RF domain power-on. Without these writes, the chip's BB + * register space (0x800-0xFFF) silently rejects writes via vendor + * control transfer — PhyTableLoader runs 1837 writes but read-back + * shows none of them stuck. Verified by pyusb experiment: writing + * 0xCAFEBABE to MAC reg 0x0114 succeeds, but writing same to BB reg + * 0x0824 returns success at USB level yet chip leaves the reg + * unchanged. + * + * Mirrors rtw88_8814au rtw8814a.c:289-303: + * 1. enable USB→BB path: REG_SYS_FUNC_EN |= BIT_FEN_USBA (BIT2) + * 2. release BB reset: REG_SYS_CFG3_8814A+2 |= BB_RSTB|BB_GLB_RST + * 3. power on RF paths A..D: REG_RF_CTRL[0/1/2/3] = RF_EN|RF_RSTB| + * RF_SDM_RSTB (= 0x07) — 4 separate registers for the 4 RF + * chains of the 4T4R chip. */ + if (_eepromManager->version_id.ICType == CHIP_8814A) { + constexpr uint16_t REG_SYS_CFG3_8814A_HI = 0x1000 + 2; + constexpr uint16_t REG_RF_CTRL_A = 0x001F; + constexpr uint16_t REG_RF_CTRL_B = 0x0020; + constexpr uint16_t REG_RF_CTRL_C = 0x0021; + constexpr uint16_t REG_RF_CTRL_D = 0x0076; + constexpr uint8_t RF_PWR_ON = 0x07; /* RF_EN | RF_RSTB | RF_SDM_RSTB */ + const uint8_t syf = _device.rtw_read8(REG_SYS_FUNC_EN); + _device.rtw_write8(REG_SYS_FUNC_EN, (uint8_t)(syf | BIT(2))); + const uint8_t bb_cfg = _device.rtw_read8(REG_SYS_CFG3_8814A_HI); + _device.rtw_write8(REG_SYS_CFG3_8814A_HI, (uint8_t)(bb_cfg | 0x03)); + _device.rtw_write8(REG_RF_CTRL_A, RF_PWR_ON); + _device.rtw_write8(REG_RF_CTRL_B, RF_PWR_ON); + _device.rtw_write8(REG_RF_CTRL_C, RF_PWR_ON); + _device.rtw_write8(REG_RF_CTRL_D, RF_PWR_ON); + _logger->info("8814A BB/RF domain powered on (FEN_USBA, BB_RSTB, RF A..D)"); + } + auto bbConfig8812Status = PHY_BBConfig8812(); if (bbConfig8812Status == false) { return false; @@ -181,6 +237,21 @@ bool HalModule::rtl8812au_hal_init() { ///* ack for xmit mgmt frames. */ _device.rtw_write32(REG_FWHW_TXQ_CTRL, _device.rtw_read32(REG_FWHW_TXQ_CTRL) | BIT12); + + /* Final safety re-write of MAC/RX enable bits. Some of the post-fwdl + * init helpers can overwrite REG_CR back to only MACTXEN|MACRXEN + * (clearing DMA + protocol + scheduler) — verified via post-init pyusb + * probe showing REG_CR=0xc0. And REG_RXFLTMAP2 read back as 0 instead + * of the 0xFFFF we want for monitor-mode data-frame acceptance. Force + * the final state here so RX bulk IN actually moves frames. */ + uint16_t cr_final = (uint16_t)(HCI_TXDMA_EN | HCI_RXDMA_EN | TXDMA_EN | + RXDMA_EN | PROTOCOL_EN | SCHEDULE_EN | + MACTXEN | MACRXEN); + _device.rtw_write16(REG_CR, cr_final); + _device.rtw_write16(REG_RXFLTMAP2, 0xFFFF); + _logger->info("post-init final: REG_CR=0x{:04x} REG_RXFLTMAP2=0xFFFF", + cr_final); + return true; } @@ -189,25 +260,59 @@ bool HalModule::InitPowerOn() { return true; } - if (!HalPwrSeqCmdParsing(Rtl8812_NIC_ENABLE_FLOW)) { + WLAN_PWR_CFG *enable_flow = + (_eepromManager->version_id.ICType == CHIP_8814A) + ? rtl8814A_card_enable_flow + : Rtl8812_NIC_ENABLE_FLOW; + if (!HalPwrSeqCmdParsing(enable_flow)) { _logger->error("InitPowerOn: run power on flow fail"); return false; } - /* Enable MAC DMA/WMAC/SCHEDULE/SEC block */ - /* Set CR bit10 to enable 32k calibration. Suggested by SD1 Gimmy. Added by - * tynli. 2011.08.31. */ - _device.rtw_write16(REG_CR, - 0x00); /* suggseted by zhouzhou, by page, 20111230 */ - uint16_t u2btmp = _device.rtw_read16(REG_CR); - u2btmp |= (ushort)(HCI_TXDMA_EN | HCI_RXDMA_EN | TXDMA_EN | RXDMA_EN | - PROTOCOL_EN | SCHEDULE_EN | ENSEC | CALTMR_EN); - _device.rtw_write16(REG_CR, u2btmp); + /* Enable MAC DMA/WMAC/SCHEDULE/SEC block — 8812 only. + * + * On 8814AU, rtw88's usbmon trace shows that REG_CR is left untouched at + * power-on and the chip is held in a minimal state until firmware boots. + * The firmware itself programs REG_CR after it's running. If we set + * HCI_TXDMA/RXDMA/PROTOCOL_EN/SCHEDULE_EN/ENSEC before fwdl, the chip's + * MAC starts processing TX queues normally, so beacon-queue submissions + * (used as the firmware-RSVD-page transport) aren't held for IDDMA and + * BIT15 of REG_FIFOPAGE_CTRL_2 never gets set. */ + if (_eepromManager->version_id.ICType != CHIP_8814A) { + /* Set CR bit10 to enable 32k calibration. Suggested by SD1 Gimmy. + * Added by tynli. 2011.08.31. */ + _device.rtw_write16(REG_CR, + 0x00); /* suggseted by zhouzhou, by page, 20111230 */ + uint16_t u2btmp = _device.rtw_read16(REG_CR); + u2btmp |= (ushort)(HCI_TXDMA_EN | HCI_RXDMA_EN | TXDMA_EN | RXDMA_EN | + PROTOCOL_EN | SCHEDULE_EN | ENSEC | CALTMR_EN); + _device.rtw_write16(REG_CR, u2btmp); + } _macPwrCtrlOn = true; return true; } +/* 8814AU's LLT (linked-list table) for TX FIFO pages is initialized by chip + * hardware: set BIT0 of REG_AUTO_LLT (0x0208), then poll for the bit to + * clear, meaning init is done. Mirrors upstream InitLLTTable8814A in + * hal/rtl8814a/rtl8814a_hal_init.c. */ +bool HalModule::InitLLTTable8814A() { + constexpr uint16_t REG_AUTO_LLT_8814A = 0x0208; + uint8_t v = _device.rtw_read8(REG_AUTO_LLT_8814A); + _device.rtw_write8(REG_AUTO_LLT_8814A, (uint8_t)(v | BIT0)); + for (int i = 0; i < 100; ++i) { + v = _device.rtw_read8(REG_AUTO_LLT_8814A); + if (!(v & BIT0)) { + _logger->info("InitLLTTable8814A: auto-init OK after {} iters", i); + return true; + } + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } + _logger->error("InitLLTTable8814A: timeout waiting for BIT0 to clear"); + return false; +} + bool HalModule::InitLLTTable8812A(uint8_t txpktbuf_bndy) { bool status; for (uint32_t i = 0; i < (txpktbuf_bndy - 1); i++) { @@ -285,10 +390,21 @@ bool HalModule::HalPwrSeqCmdParsing(WLAN_PWR_CFG *PwrSeqCmd) { do { auto PwrCfgCmd = PwrSeqCmd[AryIdx]; - /* 2 Only Handle the command whose FAB, CUT, and Interface are matched */ - // if ((GET_PWR_CFG_FAB_MASK(PwrCfgCmd) & FabVersion) && - // (GET_PWR_CFG_CUT_MASK(PwrCfgCmd) & CutVersion) && - // (GET_PWR_CFG_INTF_MASK(PwrCfgCmd) & InterfaceType)) + /* Filter by interface type — entries marked PCI- or SDIO-only must NOT + * run on USB. Upstream rtl8814au's power-seq has several PCI-only entries + * (e.g. writes to 0x0301, 0x0071, 0x0042) that, when leaked into the USB + * path, leave the chip in a state where it never acknowledges beacon- + * queue bulk OUTs (BIT15 of REG_FIFOPAGE_CTRL_2 stays clear) — which + * blocks the IDDMA copy that loads firmware into the 8051's DMEM/IMEM. + * + * Fab/cut filtering is intentionally relaxed to ALL_MSK for now: most + * pwr-seq entries are flagged ALL_MSK on both axes, and the CUT + * extraction from SYS_CFG isn't trustworthy across the Jaguar family. */ + const uint8_t kIntfBit = PWR_INTF_USB_MSK; + if (!(GET_PWR_CFG_INTF_MASK(PwrCfgCmd) & kIntfBit)) { + AryIdx++; + continue; + } switch (PwrCfgCmd.cmd) { case PWR_CMD_READ: break; @@ -380,7 +496,48 @@ bool HalModule::HalPwrSeqCmdParsing(WLAN_PWR_CFG *PwrSeqCmd) { return true; } -void HalModule::PHY_MACConfig8812() { odm_read_and_config_mp_8812a_mac_reg(); } +void HalModule::PHY_MACConfig8812() { + if (_eepromManager->version_id.ICType == CHIP_8814A) { + odm_read_and_config_mp_8814a_mac_reg(); + } else { + odm_read_and_config_mp_8812a_mac_reg(); + } +} + +void HalModule::odm_read_and_config_mp_8814a_mac_reg() { + auto ctx = _eepromManager->GetPhyContext(); + PhyTableLoader::Load(array_mp_8814a_mac_reg, array_mp_8814a_mac_reg_len, ctx, + [this](uint32_t addr, uint32_t value) { + _device.rtw_write8(static_cast(addr), + static_cast(value)); + }); +} + +void HalModule::odm_read_and_config_mp_8814a_phy_reg() { + auto ctx = _eepromManager->GetPhyContext(); + /* odm_config_bb_phy_8812a is chip-agnostic for the phydm special addresses + * 0xfe/fd/fc/fb/fa/f9 (sleep/delay opcodes shared across Realtek chips) and + * defers to odm_set_bb_reg for normal writes. Reusing it avoids forking the + * helper. */ + PhyTableLoader::Load(array_mp_8814a_phy_reg, array_mp_8814a_phy_reg_len, ctx, + [this](uint32_t addr, uint32_t value) { + odm_config_bb_phy_8812a(addr, 0xFFFFFFFFu, value); + }); +} + +void HalModule::odm_read_and_config_mp_8814a_agc_tab() { + auto ctx = _eepromManager->GetPhyContext(); + PhyTableLoader::Load(array_mp_8814a_agc_tab, array_mp_8814a_agc_tab_len, ctx, + [this](uint32_t addr, uint32_t value) { + odm_config_bb_agc_8812a(addr, 0xFFFFFFFFu, value); + }); +} + +bool HalModule::phy_BB8814_Config_ParaFile() { + odm_read_and_config_mp_8814a_phy_reg(); + odm_read_and_config_mp_8814a_agc_tab(); + return true; +} /****************************************************************************** * mac_reg.TXT @@ -644,6 +801,26 @@ void HalModule::_InitTxBufferBoundary_8812AUsb() { } void HalModule::_InitQueuePriority_8812AUsb() { + /* 8814AU upstream collapses 3-out and 4-out into the same Three-EP priority + * init. 8812 has a distinct Four-EP variant. */ + if (_eepromManager->version_id.ICType == CHIP_8814A) { + switch (_device.OutEpNumber) { + case 2: + _InitNormalChipTwoOutEpPriority_8814AUsb(); + break; + case 3: + case 4: + _InitNormalChipThreeOutEpPriority_8814AUsb(); + break; + default: + _logger->error( + "_InitQueuePriority_8814AUsb(): unexpected OutEpNumber={}", + (int)_device.OutEpNumber); + break; + } + return; + } + switch (_device.OutEpNumber) { case 2: _InitNormalChipTwoOutEpPriority_8812AUsb(); @@ -660,6 +837,87 @@ void HalModule::_InitQueuePriority_8812AUsb() { } } +void HalModule::_InitNormalChipTwoOutEpPriority_8814AUsb() { + /* Mirrors _InitNormalChipTwoOutEpPriority_8812AUsb. Same logic — the only + * 8814 delta is the BIT2 set in _InitNormalChipRegPriority_8814AUsb. */ + uint16_t valueHi; + uint16_t valueLow; + + switch (_device.OutEpQueueSel) { + case (TxSele::TX_SELE_HQ | TxSele::TX_SELE_LQ): + valueHi = QUEUE_HIGH; + valueLow = QUEUE_LOW; + break; + case (TxSele::TX_SELE_NQ | TxSele::TX_SELE_LQ): + valueHi = QUEUE_NORMAL; + valueLow = QUEUE_LOW; + break; + case (TxSele::TX_SELE_HQ | TxSele::TX_SELE_NQ): + valueHi = QUEUE_HIGH; + valueLow = QUEUE_NORMAL; + break; + default: + valueHi = QUEUE_HIGH; + valueLow = QUEUE_NORMAL; + break; + } + + uint16_t beQ, bkQ, viQ, voQ, mgtQ, hiQ; + if (!registry_priv::wifi_spec) { + beQ = valueLow; + bkQ = valueLow; + viQ = valueHi; + voQ = valueHi; + mgtQ = valueHi; + hiQ = valueHi; + } else { /* WMM */ + beQ = valueLow; + bkQ = valueHi; + viQ = valueHi; + voQ = valueLow; + mgtQ = valueHi; + hiQ = valueHi; + } + _InitNormalChipRegPriority_8814AUsb(beQ, bkQ, viQ, voQ, mgtQ, hiQ); +} + +void HalModule::_InitNormalChipThreeOutEpPriority_8814AUsb() { + /* Mirrors upstream. 8814 picks queues by wifi_spec only — does not consult + * OutEpQueueSel like the 8812 Three-EP variant does. */ + uint16_t beQ, bkQ, viQ, voQ, mgtQ, hiQ; + if (!registry_priv::wifi_spec) { + beQ = QUEUE_LOW; + bkQ = QUEUE_LOW; + viQ = QUEUE_NORMAL; + voQ = QUEUE_HIGH; + mgtQ = QUEUE_HIGH; + hiQ = QUEUE_HIGH; + } else { /* WMM */ + beQ = QUEUE_LOW; + bkQ = QUEUE_NORMAL; + viQ = QUEUE_NORMAL; + voQ = QUEUE_HIGH; + mgtQ = QUEUE_HIGH; + hiQ = QUEUE_HIGH; + } + _InitNormalChipRegPriority_8814AUsb(beQ, bkQ, viQ, voQ, mgtQ, hiQ); +} + +void HalModule::_InitNormalChipRegPriority_8814AUsb(uint16_t beQ, uint16_t bkQ, + uint16_t viQ, uint16_t voQ, + uint16_t mgtQ, + uint16_t hiQ) { + /* REG_TRXDMA_CTRL_8814A == REG_TRXDMA_CTRL (both 0x010C). The 8814 delta vs + * 8812 is the extra BIT2 set in the value word. */ + uint16_t value16 = + static_cast(_device.rtw_read16(REG_TRXDMA_CTRL) & 0x7); + value16 = static_cast( + value16 | _TXDMA_BEQ_MAP(beQ) | _TXDMA_BKQ_MAP(bkQ) | + _TXDMA_VIQ_MAP(viQ) | _TXDMA_VOQ_MAP(voQ) | _TXDMA_MGQ_MAP(mgtQ) | + _TXDMA_HIQ_MAP(hiQ) | BIT2); + _device.rtw_write16(REG_TRXDMA_CTRL, value16); +} + void HalModule::_InitNormalChipTwoOutEpPriority_8812AUsb() { uint16_t valueHi; uint16_t valueLow; @@ -1077,7 +1335,9 @@ bool HalModule::PHY_BBConfig8812() { /* */ /* Config BB and AGC */ /* */ - auto rtStatus = phy_BB8812_Config_ParaFile(); + auto rtStatus = (_eepromManager->version_id.ICType == CHIP_8814A) + ? phy_BB8814_Config_ParaFile() + : phy_BB8812_Config_ParaFile(); hal_set_crystal_cap(_eepromManager->crystal_cap); @@ -1588,7 +1848,89 @@ void HalModule::PHY_RF6052_Config_8812() { /* */ /* Config BB and RF */ /* */ - phy_RF6052_Config_ParaFile_8812(); + if (_eepromManager->version_id.ICType == CHIP_8814A) { + phy_RF6052_Config_ParaFile_8814(); + } else { + phy_RF6052_Config_ParaFile_8812(); + } +} + +void HalModule::phy_RF6052_Config_ParaFile_8814() { + /* 8814AU has 4 RF paths (3 spatial streams max). Walk each path's radio + * init table. */ + for (uint8_t path = 0; path < _eepromManager->numTotalRfPath; ++path) { + switch (path) { + case RfPath::RF_PATH_A: + odm_read_and_config_mp_8814a_radioa(); + break; + case RfPath::RF_PATH_B: + odm_read_and_config_mp_8814a_radiob(); + break; + case RfPath::RF_PATH_C: + odm_read_and_config_mp_8814a_radioc(); + break; + case RfPath::RF_PATH_D: + odm_read_and_config_mp_8814a_radiod(); + break; + default: + break; + } + } + /* Verify path A/B RF reads return sensible values. NOTE: paths C/D do + * not support RF read-back via the standard 3-wire SI/PI mechanism on + * 8814 — rtw88's rtw88xxa_phy_read_rf only indexes paths A/B (rf_phy_num + * == 4 for 4T4R but read_addr[mode][2] is sized 2). Path C/D RF writes + * via phy_RFSerialWrite (LSSIW reg 0x1890/0x1A90) DO take effect once + * BB is powered on (verified by direct pyusb write + readback), so the + * radio init tables for C/D are applied. We just can't query them. */ + if (_eepromManager->version_id.ICType == CHIP_8814A) { + for (uint8_t p = 0; p < 2 && p < _eepromManager->numTotalRfPath; ++p) { + uint32_t rf0 = + _radioManagementModule->phy_query_rf_reg((RfPath)p, 0x00, 0xfffff); + _logger->info("8814A RF path {} reg 0x00 = 0x{:05x}", + static_cast(p), rf0); + } + } +} + +void HalModule::odm_read_and_config_mp_8814a_radioa() { + auto ctx = _eepromManager->GetPhyContext(); + PhyTableLoader::Load( + array_mp_8814a_radioa, array_mp_8814a_radioa_len, ctx, + [this](uint32_t addr, uint32_t value) { + odm_config_rf_reg_8812a(addr, value, RfPath::RF_PATH_A, + static_cast(addr)); + }); +} + +void HalModule::odm_read_and_config_mp_8814a_radiob() { + auto ctx = _eepromManager->GetPhyContext(); + PhyTableLoader::Load( + array_mp_8814a_radiob, array_mp_8814a_radiob_len, ctx, + [this](uint32_t addr, uint32_t value) { + odm_config_rf_reg_8812a(addr, value, RfPath::RF_PATH_B, + static_cast(addr)); + }); +} + +void HalModule::odm_read_and_config_mp_8814a_radioc() { + auto ctx = _eepromManager->GetPhyContext(); + PhyTableLoader::Load( + array_mp_8814a_radioc, array_mp_8814a_radioc_len, ctx, + [this](uint32_t addr, uint32_t value) { + odm_config_rf_reg_8812a(addr, value, RfPath::RF_PATH_C, + static_cast(addr)); + }); +} + +void HalModule::odm_read_and_config_mp_8814a_radiod() { + auto ctx = _eepromManager->GetPhyContext(); + PhyTableLoader::Load( + array_mp_8814a_radiod, array_mp_8814a_radiod_len, ctx, + [this](uint32_t addr, uint32_t value) { + odm_config_rf_reg_8812a(addr, value, RfPath::RF_PATH_D, + static_cast(addr)); + }); } void HalModule::phy_RF6052_Config_ParaFile_8812() { diff --git a/src/HalModule.h b/src/HalModule.h index 82c917f..348627c 100644 --- a/src/HalModule.h +++ b/src/HalModule.h @@ -4,6 +4,7 @@ #include "EepromManager.h" extern "C"{ #include "Hal8812PwrSeq.h" +#include "Hal8814PwrSeq.h" } #include "RadioManagementModule.h" #include "RtlUsbAdapter.h" @@ -60,11 +61,16 @@ class HalModule { bool rtl8812au_hal_init(); bool InitPowerOn(); bool InitLLTTable8812A(uint8_t txpktbuf_bndy); + bool InitLLTTable8814A(); bool _LLTWrite_8812A(uint32_t address, uint32_t data); void _InitHardwareDropIncorrectBulkOut_8812A(); bool HalPwrSeqCmdParsing(WLAN_PWR_CFG *PwrSeqCmd); void PHY_MACConfig8812(); void odm_read_and_config_mp_8812a_mac_reg(); + void odm_read_and_config_mp_8814a_mac_reg(); + void odm_read_and_config_mp_8814a_phy_reg(); + void odm_read_and_config_mp_8814a_agc_tab(); + bool phy_BB8814_Config_ParaFile(); void odm_write_1byte(uint16_t reg_addr, uint8_t data); bool check_positive(int32_t condition1, int32_t condition2, int32_t condition4); @@ -77,6 +83,11 @@ class HalModule { uint16_t mgtQ, uint16_t hiQ); void _InitNormalChipThreeOutEpPriority_8812AUsb(); void _InitNormalChipFourOutEpPriority_8812AUsb(); + void _InitNormalChipTwoOutEpPriority_8814AUsb(); + void _InitNormalChipThreeOutEpPriority_8814AUsb(); + void _InitNormalChipRegPriority_8814AUsb(uint16_t beQ, uint16_t bkQ, + uint16_t viQ, uint16_t voQ, + uint16_t mgtQ, uint16_t hiQ); void init_hi_queue_config_8812a_usb(); void _InitPageBoundary_8812AUsb(); void _InitTransferPageSize_8812AUsb(); @@ -109,6 +120,11 @@ class HalModule { void PHY_RF6052_Config_8812(); void phy_RF6052_Config_ParaFile_8812(); + void phy_RF6052_Config_ParaFile_8814(); + void odm_read_and_config_mp_8814a_radioa(); + void odm_read_and_config_mp_8814a_radiob(); + void odm_read_and_config_mp_8814a_radioc(); + void odm_read_and_config_mp_8814a_radiod(); void odm_config_rf_with_header_file(odm_rf_config_type config_type, RfPath e_rf_path); void odm_read_and_config_mp_8812a_radioa(); diff --git a/src/PhyTableLoader.cpp b/src/PhyTableLoader.cpp new file mode 100644 index 0000000..6ff4416 --- /dev/null +++ b/src/PhyTableLoader.cpp @@ -0,0 +1,105 @@ +#include "PhyTableLoader.h" + +namespace { + +/* Opcode encoding (high nibble of v1): + * 0x8 — IF (c_cond bits 28-29 = 0b00) + * 0x9 — ELSE_IF (c_cond bits 28-29 = 0b01) + * 0xA — ELSE (c_cond bits 28-29 = 0b10) + * 0xB — ENDIF (c_cond bits 28-29 = 0b11) + * 0x4 — negative condition (second half of IF/ELSE_IF; carries c3/c4) */ +constexpr uint32_t BIT_POSITIVE = 1u << 31; +constexpr uint32_t BIT_NEGATIVE = 1u << 30; +constexpr uint32_t C_COND_MASK = (1u << 29) | (1u << 28); +constexpr uint32_t C_COND_SHIFT = 28; + +constexpr uint8_t COND_IF = 0; +constexpr uint8_t COND_ELSE_IF = 1; +constexpr uint8_t COND_ELSE = 2; +constexpr uint8_t COND_ENDIF = 3; + +constexpr uint8_t ODM_CUT_A = 0; /* matches upstream phydm */ + +} // namespace + +/* Translated verbatim from check_positive() in upstream + * hal/phydm/rtl8814a/halhwimg8814a_bb.c. Returns true if the runtime + * configuration in `ctx` matches the (cond1..cond4) selector. */ +bool PhyTableLoader::CheckPositive(const JaguarPhyContext& ctx, uint32_t c1, + uint32_t /*c2*/, uint32_t /*c3*/, + uint32_t /*c4*/) { + const uint8_t cut_for_para = + (ctx.cut_version == ODM_CUT_A) ? 15 : ctx.cut_version; + const uint8_t pkg_for_para = (ctx.package_type == 0) ? 15 : ctx.package_type; + + const uint32_t driver1 = + (static_cast(cut_for_para) << 24) | + ((ctx.support_interface & 0xF0u) << 16) | + (static_cast(ctx.support_platform) << 16) | + (static_cast(pkg_for_para) << 12) | + ((ctx.support_interface & 0x0Fu) << 8) | + static_cast(ctx.rfe_type); + + /* cut version [27:24] */ + if ((c1 & 0x0F000000u) != 0 && (c1 & 0x0F000000u) != (driver1 & 0x0F000000u)) + return false; + /* pkg type [15:12] */ + if ((c1 & 0x0000F000u) != 0 && (c1 & 0x0000F000u) != (driver1 & 0x0000F000u)) + return false; + /* interface [11:8] */ + if ((c1 & 0x00000F00u) != 0 && (c1 & 0x00000F00u) != (driver1 & 0x00000F00u)) + return false; + + /* Low byte (rfe_type) — exact match required when both sides are nonzero. */ + return (c1 & 0xFFu) == (driver1 & 0xFFu); +} + +/* Walks the phydm table state machine. Mirrors odm_read_and_config_mp_8814a_* + * in upstream. */ +void PhyTableLoader::Load(const uint32_t* table, std::size_t len, + const JaguarPhyContext& ctx, const Writer& write) { + bool is_matched = true; + bool is_skipped = false; + uint32_t pre_v1 = 0; + uint32_t pre_v2 = 0; + + std::size_t i = 0; + while (i + 1 < len) { + const uint32_t v1 = table[i]; + const uint32_t v2 = table[i + 1]; + + if (v1 & (BIT_POSITIVE | BIT_NEGATIVE)) { + if (v1 & BIT_POSITIVE) { + const uint8_t c_cond = + static_cast((v1 & C_COND_MASK) >> C_COND_SHIFT); + if (c_cond == COND_ENDIF) { + is_matched = true; + is_skipped = false; + } else if (c_cond == COND_ELSE) { + is_matched = is_skipped ? false : true; + } else { + /* IF / ELSE_IF — save the positive half; the negative half on the + * next iteration completes the condition group. */ + pre_v1 = v1; + pre_v2 = v2; + } + } else if (v1 & BIT_NEGATIVE) { + if (!is_skipped) { + if (CheckPositive(ctx, pre_v1, pre_v2, v1, v2)) { + is_matched = true; + is_skipped = true; + } else { + is_matched = false; + is_skipped = false; + } + } else { + is_matched = false; + } + } + } else { + if (is_matched) + write(v1, v2); + } + i += 2; + } +} diff --git a/src/PhyTableLoader.h b/src/PhyTableLoader.h new file mode 100644 index 0000000..17de0e0 --- /dev/null +++ b/src/PhyTableLoader.h @@ -0,0 +1,44 @@ +#ifndef PHY_TABLE_LOADER_H +#define PHY_TABLE_LOADER_H + +#include +#include +#include + +/* Loader for the Realtek phydm-style register tables shipped with RTL8814AU + * (BB / AGC / MAC). The on-disk format encodes runtime-conditional blocks via + * opcode words in the high nibble; see hal/phydm/rtl8814a/halhwimg8814a_bb.c + * for the canonical encoding upstream. This loader replicates upstream's + * `check_positive` + state-machine walk without pulling in the phydm + * subsystem — `JaguarPhyContext` is the minimal subset of `dm_struct` that + * `check_positive` reads. */ + +struct JaguarPhyContext { + uint8_t cut_version; /* HAL_CUT_VERSION_E from EepromManager */ + uint8_t support_interface; /* ODM_ITRF_USB == 0x02 in upstream phydm */ + uint8_t support_platform; /* ODM_CE == 0x04 in upstream phydm */ + uint8_t package_type; /* 0 unless EFUSE-overridden */ + uint8_t rfe_type; /* EFUSE rfe_type */ + uint16_t type_glna; + uint16_t type_gpa; + uint16_t type_alna; + uint16_t type_apa; +}; + +class PhyTableLoader { +public: + /* Writer is invoked once per (addr, value) entry that passes the conditional + * filter. For BB/AGC tables, write is a full 32-bit register write; for the + * MAC table the value's low byte holds the byte-wide write — the caller + * decides via the writer it supplies. */ + using Writer = std::function; + + static void Load(const uint32_t* table, std::size_t len, + const JaguarPhyContext& ctx, const Writer& write); + +private: + static bool CheckPositive(const JaguarPhyContext& ctx, uint32_t c1, uint32_t c2, + uint32_t c3, uint32_t c4); +}; + +#endif /* PHY_TABLE_LOADER_H */ diff --git a/src/RadioManagementModule.cpp b/src/RadioManagementModule.cpp index 7cb71db..df2adbb 100644 --- a/src/RadioManagementModule.cpp +++ b/src/RadioManagementModule.cpp @@ -237,7 +237,20 @@ void RadioManagementModule::phy_SwChnlAndSetBwMode8812() { phy_PostSetBwMode8812(); _setChannelBw = false; } - PHY_SetTxPowerLevel8812(_currentChannel); + /* For 8814AU specifically, TX power setup iterates 4 RF paths × + * ~8 rate sections, totaling ~370 PHY_SetTxPowerIndex calls and + * roughly 20–30 seconds of control transfers. The values are only + * consumed by the TX path, so monitor-mode RX gains nothing from + * doing the work. Set DEVOURER_FORCE_TXPWR=1 to enable the full + * loop (required if you actually want to TX from an 8814 build — + * TX path is not yet end-to-end validated). */ + if (_eepromManager->version_id.ICType != CHIP_8814A || + std::getenv("DEVOURER_FORCE_TXPWR")) { + PHY_SetTxPowerLevel8812(_currentChannel); + } else { + _logger->info("8814A: skipping TX power setup (monitor-mode RX-only; " + "set DEVOURER_FORCE_TXPWR=1 to enable)"); + } _needIQK = false; } @@ -276,6 +289,16 @@ struct BbRegisterDefinition { uint16_t RfLSSIReadBackPi; }; +/* RTL8814AU path C / D BB register offsets — from hal/Hal8814PhyReg.h. + * Inlined here to avoid pulling the full 8814 PHY register header (which has + * extensive #define overlap with Hal8812PhyReg.h on shared Jaguar symbols). */ +constexpr uint32_t rC_LSSIWrite_8814A = 0x1890; +constexpr uint32_t rD_LSSIWrite_8814A = 0x1A90; +constexpr uint16_t rC_SIRead_8814A = 0xd88; +constexpr uint16_t rD_SIRead_8814A = 0xdC8; +constexpr uint16_t rC_PIRead_8814A = 0xd84; +constexpr uint16_t rD_PIRead_8814A = 0xdC4; + std::map PhyRegDef = { {RfPath::RF_PATH_A, { @@ -290,6 +313,20 @@ std::map PhyRegDef = { .RfHSSIPara2 = rHSSIRead_Jaguar, .RfLSSIReadBack = rB_SIRead_Jaguar, .RfLSSIReadBackPi = rB_PIRead_Jaguar, + }}, + {RfPath::RF_PATH_C, + { + .Rf3WireOffset = rC_LSSIWrite_8814A, + .RfHSSIPara2 = rHSSIRead_Jaguar, + .RfLSSIReadBack = rC_SIRead_8814A, + .RfLSSIReadBackPi = rC_PIRead_8814A, + }}, + {RfPath::RF_PATH_D, + { + .Rf3WireOffset = rD_LSSIWrite_8814A, + .RfHSSIPara2 = rHSSIRead_Jaguar, + .RfLSSIReadBack = rD_SIRead_8814A, + .RfLSSIReadBackPi = rD_PIRead_8814A, }}}; uint32_t RadioManagementModule::phy_query_bb_reg(uint16_t regAddr, @@ -313,6 +350,16 @@ uint32_t RadioManagementModule::PHY_QueryBBReg8812(uint16_t regAddr, return ReturnValue; } +uint32_t RadioManagementModule::phy_query_rf_reg(RfPath eRFPath, + uint32_t RegAddr, + uint32_t BitMask) { + uint32_t val = phy_RFSerialRead(eRFPath, RegAddr); + if (BitMask != 0 && BitMask != 0xFFFFFFFFu) { + val = (val & BitMask) >> PHY_CalculateBitShift(BitMask); + } + return val; +} + uint32_t RadioManagementModule::phy_RFSerialRead(RfPath eRFPath, uint32_t Offset) { uint32_t retValue; @@ -439,17 +486,13 @@ void RadioManagementModule::PHY_SwitchWirelessBand8812(BandType Band) { uint16_t count = 0; uint16_t reg41A = _device.rtw_read16(REG_TXPKT_EMPTY); - /* RTW_INFO("Reg41A value %d", reg41A); */ reg41A &= 0x30; while ((reg41A != 0x30) && (count < 50)) { using namespace std::chrono_literals; std::this_thread::sleep_for(50ms); - /* RTW_INFO("Delay 50us\n"); */ - reg41A = _device.rtw_read16(REG_TXPKT_EMPTY); reg41A &= 0x30; count++; - /* RTW_INFO("Reg41A value %d", reg41A); */ } if (count != 0) { @@ -882,9 +925,9 @@ void RadioManagementModule::phy_PostSetBwMode8812() { _device.phy_set_bb_reg(rADC_Buf_Clk_Jaguar, BIT30, 0); /* 0x8c4[30] = 1'b0 */ - if (_eepromManager->rf_type == RF_TYPE_2T2R) { + if (_eepromManager->numTotalRfPath >= 2) { _device.phy_set_bb_reg(rL1PeakTH_Jaguar, 0x03C00000, - 7); /* 2R 0x848[25:22] = 0x7 */ + 7); /* multi-path 0x848[25:22] = 0x7 */ } else { _device.phy_set_bb_reg(rL1PeakTH_Jaguar, 0x03C00000, 8); /* 1R 0x848[25:22] = 0x8 */ @@ -904,7 +947,7 @@ void RadioManagementModule::phy_PostSetBwMode8812() { if ((reg_837 & BIT2) != 0) L1pkVal = 6; else { - if (_eepromManager->rf_type == RF_TYPE_2T2R) { + if (_eepromManager->numTotalRfPath >= 2) { L1pkVal = 7; } else { L1pkVal = 8; @@ -932,7 +975,7 @@ void RadioManagementModule::phy_PostSetBwMode8812() { if ((reg_837 & BIT2) != 0) L1pkVal = 5; else { - if (_eepromManager->rf_type == RF_TYPE_2T2R) { + if (_eepromManager->numTotalRfPath >= 2) { L1pkVal = 6; } else { L1pkVal = 7; @@ -997,29 +1040,29 @@ void RadioManagementModule::phy_SetRegBW_8812(ChannelWidth_t CurrentBW) { void RadioManagementModule::PHY_RF6052SetBandwidth8812( ChannelWidth_t Bandwidth) /* 20M or 40M */ { + /* RF_CHNLBW_Jaguar[11:10] encodes the per-path channel bandwidth: + * 0b11 = 20 MHz, 0b01 = 40 MHz, 0b00 = 80 MHz. + * Apply to every populated RF path (4 paths on 8814AU, 2 on 8812AU). */ + uint32_t bw_bits; switch (Bandwidth) { case CHANNEL_WIDTH_20: - /* RTW_INFO("PHY_RF6052SetBandwidth8812(), set 20MHz\n"); */ - phy_set_rf_reg(RfPath::RF_PATH_A, RF_CHNLBW_Jaguar, BIT11 | BIT10, 3); - phy_set_rf_reg(RfPath::RF_PATH_B, RF_CHNLBW_Jaguar, BIT11 | BIT10, 3); + bw_bits = 3; break; - case CHANNEL_WIDTH_40: - /* RTW_INFO("PHY_RF6052SetBandwidth8812(), set 40MHz\n"); */ - phy_set_rf_reg(RfPath::RF_PATH_A, RF_CHNLBW_Jaguar, BIT11 | BIT10, 1); - phy_set_rf_reg(RfPath::RF_PATH_B, RF_CHNLBW_Jaguar, BIT11 | BIT10, 1); + bw_bits = 1; break; - case CHANNEL_WIDTH_80: - /* RTW_INFO("PHY_RF6052SetBandwidth8812(), set 80MHz\n"); */ - phy_set_rf_reg(RfPath::RF_PATH_A, RF_CHNLBW_Jaguar, BIT11 | BIT10, 0); - phy_set_rf_reg(RfPath::RF_PATH_B, RF_CHNLBW_Jaguar, BIT11 | BIT10, 0); + bw_bits = 0; break; - default: _logger->error("PHY_RF6052SetBandwidth8812(): unknown Bandwidth: {}", (int)Bandwidth); - break; + return; + } + + for (uint8_t p = 0; p < _eepromManager->numTotalRfPath; ++p) { + phy_set_rf_reg(static_cast(p), RF_CHNLBW_Jaguar, BIT11 | BIT10, + bw_bits); } } @@ -1186,6 +1229,14 @@ void RadioManagementModule::PHY_SetTxPowerIndex_8812A(uint32_t powerIndex, MGN_RATE rate) { _logger->debug("PHY_SetTxPowerIndex {} {} {}", powerIndex, (int)rfPath, rate); + /* The per-rate register table below only encodes paths A/B (8812-family). + * 8814AU paths C/D use a different per-path register layout (the rTxAGC_C_ + * and rTxAGC_D_ symbol family in Hal8814PhyReg.h) not yet wired here. For + * now, silently skip C/D so the bring-up trace isn't flooded with errors; + * follow-up Phase-4 work will extend the table. */ + if (static_cast(rfPath) >= RF_PATH_C) { + return; + } if (powerIndex % 2 == 1) powerIndex -= 1; if (rfPath == RF_PATH_A) { diff --git a/src/RadioManagementModule.h b/src/RadioManagementModule.h index 68a2ea4..1f6bf22 100644 --- a/src/RadioManagementModule.h +++ b/src/RadioManagementModule.h @@ -161,6 +161,8 @@ class RadioManagementModule { ChannelWidth_t bwmode); void phy_set_rf_reg(RfPath eRFPath, uint16_t RegAddr, uint32_t BitMask, uint32_t Data); + uint32_t phy_query_rf_reg(RfPath eRFPath, uint32_t RegAddr, + uint32_t BitMask); void init_hw_mlme_ext(SelectedChannel pmlmeext); void rtw_hal_set_chnl_bw(uint8_t channel, ChannelWidth_t Bandwidth, uint8_t Offset40, uint8_t Offset80); diff --git a/src/RfPath.h b/src/RfPath.h index 84cc63d..72be63f 100644 --- a/src/RfPath.h +++ b/src/RfPath.h @@ -6,6 +6,8 @@ enum RfPath : uint8_t { RF_PATH_A = 0, RF_PATH_B = 1, + RF_PATH_C = 2, + RF_PATH_D = 3, }; #endif /* RFPATH_H */ diff --git a/src/Rtl8812aDevice.cpp b/src/RtlJaguarDevice.cpp similarity index 92% rename from src/Rtl8812aDevice.cpp rename to src/RtlJaguarDevice.cpp index 88554b5..006c273 100644 --- a/src/Rtl8812aDevice.cpp +++ b/src/RtlJaguarDevice.cpp @@ -1,8 +1,8 @@ -#include "Rtl8812aDevice.h" +#include "RtlJaguarDevice.h" #include "EepromManager.h" #include "RadioManagementModule.h" -Rtl8812aDevice::Rtl8812aDevice(RtlUsbAdapter device, Logger_t logger) +RtlJaguarDevice::RtlJaguarDevice(RtlUsbAdapter device, Logger_t logger) : _device{device}, _eepromManager{std::make_shared(device, logger)}, _radioManagement{std::make_shared( @@ -10,13 +10,13 @@ Rtl8812aDevice::Rtl8812aDevice(RtlUsbAdapter device, Logger_t logger) _halModule{device, _eepromManager, _radioManagement, logger}, _logger{logger} {} -void Rtl8812aDevice::InitWrite(SelectedChannel channel) { +void RtlJaguarDevice::InitWrite(SelectedChannel channel) { StartWithMonitorMode(channel); SetMonitorChannel(channel); _logger->info("In Monitor Mode"); } -bool Rtl8812aDevice::send_packet(const uint8_t *packet, size_t length) { +bool RtlJaguarDevice::send_packet(const uint8_t *packet, size_t length) { struct tx_desc *ptxdesc; bool resp; uint8_t *usb_frame; @@ -219,7 +219,7 @@ bool Rtl8812aDevice::send_packet(const uint8_t *packet, size_t length) { return resp; } -void Rtl8812aDevice::Init(Action_ParsedRadioPacket packetProcessor, +void RtlJaguarDevice::Init(Action_ParsedRadioPacket packetProcessor, SelectedChannel channel) { _packetProcessor = packetProcessor; @@ -240,12 +240,12 @@ void Rtl8812aDevice::Init(Action_ParsedRadioPacket packetProcessor, #endif } -void Rtl8812aDevice::SetMonitorChannel(SelectedChannel channel) { +void RtlJaguarDevice::SetMonitorChannel(SelectedChannel channel) { _radioManagement->set_channel_bwmode(channel.Channel, channel.ChannelOffset, channel.ChannelWidth); } -void Rtl8812aDevice::StartWithMonitorMode(SelectedChannel selectedChannel) { +void RtlJaguarDevice::StartWithMonitorMode(SelectedChannel selectedChannel) { if (NetDevOpen(selectedChannel) == false) { throw std::ios_base::failure("StartWithMonitorMode failed NetDevOpen"); } @@ -253,11 +253,11 @@ void Rtl8812aDevice::StartWithMonitorMode(SelectedChannel selectedChannel) { _radioManagement->SetMonitorMode(); } -void Rtl8812aDevice::SetTxPower(uint8_t power) { +void RtlJaguarDevice::SetTxPower(uint8_t power) { _radioManagement->SetTxPower(power); } -bool Rtl8812aDevice::NetDevOpen(SelectedChannel selectedChannel) { +bool RtlJaguarDevice::NetDevOpen(SelectedChannel selectedChannel) { auto status = _halModule.rtw_hal_init(selectedChannel); if (status == false) { return false; diff --git a/src/Rtl8812aDevice.h b/src/RtlJaguarDevice.h similarity index 59% rename from src/Rtl8812aDevice.h rename to src/RtlJaguarDevice.h index ce5aa9b..2738c31 100644 --- a/src/Rtl8812aDevice.h +++ b/src/RtlJaguarDevice.h @@ -1,5 +1,5 @@ -#ifndef RTL8812ADEVICE_H -#define RTL8812ADEVICE_H +#ifndef RTL_JAGUAR_DEVICE_H +#define RTL_JAGUAR_DEVICE_H #include #include @@ -19,7 +19,12 @@ extern "C" using Action_ParsedRadioPacket = std::function; -class Rtl8812aDevice { +/* RtlJaguarDevice is the orchestrator for the Realtek "Jaguar" 802.11ac family + * — RTL8812AU (2T2R), RTL8811AU (1T1R cut), and RTL8814AU (4T4R RF / 3-SS + * baseband). The chip is identified at construction time via SYS_CFG bits and + * USB PID; this class drives bring-up, RX, and TX for whichever member of the + * family is present. */ +class RtlJaguarDevice { std::shared_ptr _eepromManager; std::shared_ptr _radioManagement; SelectedChannel _channel; @@ -30,7 +35,7 @@ class Rtl8812aDevice { Action_ParsedRadioPacket _packetProcessor = nullptr; public: - Rtl8812aDevice(RtlUsbAdapter device, Logger_t logger); + RtlJaguarDevice(RtlUsbAdapter device, Logger_t logger); void Init(Action_ParsedRadioPacket packetProcessor, SelectedChannel channel); void SetMonitorChannel(SelectedChannel channel); void InitWrite(SelectedChannel channel); @@ -44,4 +49,9 @@ class Rtl8812aDevice { bool NetDevOpen(SelectedChannel selectedChannel); }; -#endif /* RTL8812ADEVICE_H */ +/* Backwards-compatibility alias. External callers using the old name still + * compile but get a deprecation warning. Remove after one release cycle. */ +using Rtl8812aDevice [[deprecated("renamed to RtlJaguarDevice")]] = + RtlJaguarDevice; + +#endif /* RTL_JAGUAR_DEVICE_H */ diff --git a/src/RtlUsbAdapter.cpp b/src/RtlUsbAdapter.cpp index 42e0321..99a8122 100644 --- a/src/RtlUsbAdapter.cpp +++ b/src/RtlUsbAdapter.cpp @@ -17,6 +17,14 @@ using namespace std::chrono_literals; RtlUsbAdapter::RtlUsbAdapter(libusb_device_handle *dev_handle, Logger_t logger) : _dev_handle{dev_handle}, _logger{logger} { + libusb_device_descriptor desc{}; + if (libusb_get_device_descriptor(libusb_get_device(_dev_handle), &desc) == + LIBUSB_SUCCESS) { + _idVendor = desc.idVendor; + _idProduct = desc.idProduct; + _logger->info("USB device {:04x}:{:04x}", _idVendor, _idProduct); + } + InitDvObj(); if (usbSpeed > LIBUSB_SPEED_HIGH) // USB 3.0 @@ -360,6 +368,29 @@ bool RtlUsbAdapter::send_packet(uint8_t *packet, size_t length) { } } +int RtlUsbAdapter::bulk_send_sync(uint8_t *packet, size_t length, + int timeout_ms) { + return bulk_send_sync_ep(0x02, packet, length, timeout_ms); +} + +int RtlUsbAdapter::bulk_send_sync_ep(uint8_t ep, uint8_t *packet, size_t length, + int timeout_ms) { + /* No libusb_clear_halt here. rtw88_8814au's usbmon shows the first bulk + * OUT is preceded by 0 CLEAR_FEATUREs; later CLEAR_FEATUREs happen during + * normal TX-queue operation, not the per-send hot path. Resetting the + * data toggle bit corrupts the chip's state machine. */ + int actual = 0; + int rc = libusb_bulk_transfer(_dev_handle, ep, packet, + static_cast(length), &actual, timeout_ms); + if (rc != LIBUSB_SUCCESS) { + _logger->error("bulk_send EP {} FAIL rc={} got {}/{}", (int)ep, rc, + actual, (int)length); + return rc; + } + _logger->info("bulk_send EP {} OK {} bytes", (int)ep, actual); + return actual; +} + void RtlUsbAdapter::phy_set_bb_reg(uint16_t regAddr, uint32_t bitMask, uint32_t data) { PHY_SetBBReg8812(regAddr, bitMask, data); diff --git a/src/RtlUsbAdapter.h b/src/RtlUsbAdapter.h index a36e2d3..1a0e183 100644 --- a/src/RtlUsbAdapter.h +++ b/src/RtlUsbAdapter.h @@ -37,9 +37,15 @@ class RtlUsbAdapter { enum libusb_speed usbSpeed; uint8_t numOutPipes = 0; + uint16_t _idVendor = 0; + uint16_t _idProduct = 0; + public: RtlUsbAdapter(libusb_device_handle *dev_handle, Logger_t logger); + uint16_t idVendor() const { return _idVendor; } + uint16_t idProduct() const { return _idProduct; } + bool AutoloadFailFlag = false; bool EepromOrEfuse = false; uint8_t OutEpQueueSel; @@ -47,6 +53,12 @@ class RtlUsbAdapter { uint8_t rxagg_usb_size; uint8_t rxagg_usb_timeout; bool send_packet(uint8_t* packet, size_t length); + /* Synchronous bulk-OUT transfer that blocks until completion or timeout. + * Returns the number of bytes actually transferred, or negative on error. */ + int bulk_send_sync(uint8_t *packet, size_t length, int timeout_ms); + void bulk_clear_halt(uint8_t ep) { libusb_clear_halt(_dev_handle, ep); } + int bulk_send_sync_ep(uint8_t ep, uint8_t *packet, size_t length, + int timeout_ms); std::vector infinite_read(); uint8_t efuse_OneByteRead(uint16_t addr, uint8_t *data); void phy_set_bb_reg(uint16_t regAddr, uint32_t bitMask, uint32_t data); diff --git a/src/WiFiDriver.cpp b/src/WiFiDriver.cpp index 8561195..bad6633 100644 --- a/src/WiFiDriver.cpp +++ b/src/WiFiDriver.cpp @@ -1,14 +1,14 @@ #include "WiFiDriver.h" #include -#include "Rtl8812aDevice.h" +#include "RtlJaguarDevice.h" WiFiDriver::WiFiDriver(Logger_t logger) : _logger{std::move(logger)} {} -std::unique_ptr +std::unique_ptr WiFiDriver::CreateRtlDevice(libusb_device_handle *dev_handle) { - _logger->info("Creating Rtl8812aDevice from LibUSB"); + _logger->info("Creating RtlJaguarDevice from LibUSB"); - return std::make_unique(RtlUsbAdapter(dev_handle, _logger), _logger); + return std::make_unique(RtlUsbAdapter(dev_handle, _logger), _logger); } diff --git a/src/WiFiDriver.h b/src/WiFiDriver.h index cef375c..0529f55 100644 --- a/src/WiFiDriver.h +++ b/src/WiFiDriver.h @@ -3,7 +3,7 @@ #include -#include "Rtl8812aDevice.h" +#include "RtlJaguarDevice.h" #include "logger.h" class WiFiDriver { @@ -12,7 +12,7 @@ class WiFiDriver { public: explicit WiFiDriver(Logger_t logger); - std::unique_ptr + std::unique_ptr CreateRtlDevice(libusb_device_handle *dev_handle); }; diff --git a/tools/extract_8814a_phy_tables.py b/tools/extract_8814a_phy_tables.py new file mode 100644 index 0000000..f4c06c0 --- /dev/null +++ b/tools/extract_8814a_phy_tables.py @@ -0,0 +1,124 @@ +#!/usr/bin/env python3 +"""Extract const u32 array_mp_8814a_*[] data blocks from upstream +aircrack-ng/rtl8814au phydm tables, dropping the phydm parser/check_positive +machinery that devourer doesn't link. + +Input: hal/phydm/rtl8814a/halhwimg8814a_{bb,mac}.c (verbatim from upstream +v5.8.5.1). +Output: hal/phydm/rtl8814a/Hal8814_PhyTables.{c,h} + Hal8814_PhyTables.c — the array bodies only, with a *_len companion. + Hal8814_PhyTables.h — extern declarations consumed by src/PhyTableLoader. + +The runtime parser (matching upstream's `odm_read_and_config_mp_8814a_*` state +machine) lives in src/PhyTableLoader.{h,cpp}. +""" + +from __future__ import annotations + +import re +import sys +from pathlib import Path + +UPSTREAM_TAG = "aircrack-ng/rtl8814au v5.8.5.1" +INPUT_FILES = [ + "hal/phydm/rtl8814a/halhwimg8814a_bb.c", + "hal/phydm/rtl8814a/halhwimg8814a_mac.c", + "hal/phydm/halrf/rtl8814a/halhwimg8814a_rf.c", +] +OUTPUT_C = "hal/phydm/rtl8814a/Hal8814_PhyTables.c" +OUTPUT_H = "hal/phydm/rtl8814a/Hal8814_PhyTables.h" + +ARRAY_RE = re.compile(r"^const\s+u32\s+(array_mp_8814a_\w+)\s*\[\s*\]\s*=\s*\{\s*$") + + +def extract(repo_root: Path) -> tuple[list[tuple[str, list[str]]], list[str]]: + """Return (arrays, source_blames). Each array is (name, body_lines).""" + arrays: list[tuple[str, list[str]]] = [] + blames: list[str] = [] + for rel in INPUT_FILES: + path = repo_root / rel + if not path.exists(): + sys.exit(f"missing input: {rel}") + lines = path.read_text().splitlines() + in_array: str | None = None + body: list[str] = [] + for line in lines: + if in_array is None: + m = ARRAY_RE.match(line) + if m: + in_array = m.group(1) + body = [] + continue + if line.strip().startswith("};"): + arrays.append((in_array, body)) + blames.append(f"{rel}::{in_array} ({len(body)} lines)") + in_array = None + body = [] + continue + body.append(line) + return arrays, blames + + +def emit_c(arrays: list[tuple[str, list[str]]], blames: list[str]) -> str: + parts: list[str] = [] + parts.append("/* Auto-generated by tools/extract_8814a_phy_tables.py.") + parts.append(f" * Source: {UPSTREAM_TAG}.") + parts.append(" * Extracted arrays:") + for b in blames: + parts.append(f" * {b}") + parts.append(" * Edit the source files upstream and re-run the extractor; do not hand-edit. */") + parts.append("") + parts.append('#include "drv_types.h"') + parts.append('#include "Hal8814_PhyTables.h"') + parts.append("") + for name, body in arrays: + parts.append(f"const u32 {name}[] = {{") + parts.extend(body) + parts.append("};") + parts.append( + f"const u32 {name}_len = sizeof({name}) / sizeof(u32);" + ) + parts.append("") + return "\n".join(parts) + "\n" + + +def emit_h(arrays: list[tuple[str, list[str]]]) -> str: + parts: list[str] = [] + parts.append("/* Auto-generated by tools/extract_8814a_phy_tables.py.") + parts.append(f" * Source: {UPSTREAM_TAG}. */") + parts.append("") + parts.append("#ifndef HAL8814_PHYTABLES_H") + parts.append("#define HAL8814_PHYTABLES_H") + parts.append("") + parts.append('#include "drv_types.h"') + parts.append("") + parts.append("#ifdef __cplusplus") + parts.append('extern "C" {') + parts.append("#endif") + parts.append("") + for name, _ in arrays: + parts.append(f"extern const u32 {name}[];") + parts.append(f"extern const u32 {name}_len;") + parts.append("") + parts.append("#ifdef __cplusplus") + parts.append("}") + parts.append("#endif") + parts.append("") + parts.append("#endif /* HAL8814_PHYTABLES_H */") + return "\n".join(parts) + "\n" + + +def main() -> int: + repo_root = Path(__file__).resolve().parent.parent + arrays, blames = extract(repo_root) + if not arrays: + sys.exit("no arrays found — extraction regex probably needs an update") + (repo_root / OUTPUT_C).write_text(emit_c(arrays, blames)) + (repo_root / OUTPUT_H).write_text(emit_h(arrays)) + print(f"wrote {OUTPUT_C} ({sum(len(b) for _, b in arrays)} array body lines, {len(arrays)} arrays)") + print(f"wrote {OUTPUT_H}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) From c80d4a7519cd49f9db442316372fb59dea2cf1d0 Mon Sep 17 00:00:00 2001 From: Joseph Albert Nefario Date: Thu, 21 May 2026 18:31:53 +0300 Subject: [PATCH 4/5] =?UTF-8?q?logger.h:=20parse=20format=20spec=20inside?= =?UTF-8?q?=20{=E2=80=A6}=20placeholders?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The homegrown format_helper was ignoring any spec inside braces, so {:08x} just streamed values via default stream operator<<. That silently printed integers as decimal — found while debugging 8814 fwdl, where REG_MCUFWDL=0x00606078 showed up in logs as the literal string "REG_MCUFWDL:0x6316152" (the decimal representation of 0x606078), sending us chasing a phantom for several sessions. Add a minimal parser for the spec subset the codebase uses: • optional '0' zero-padding flag • optional width digits • optional 'x'/'X' for lowercase/uppercase hex Falls back to default streaming when no spec is given. Verified against existing 8812 logs (REG_MCUFWDL now prints "0x000607c6" rather than the decimal 395718). Co-Authored-By: Claude Opus 4.7 (1M context) --- src/logger.h | 49 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/src/logger.h b/src/logger.h index df1fcfd..fc0cb6b 100644 --- a/src/logger.h +++ b/src/logger.h @@ -4,11 +4,12 @@ #include #include -#include +#include +#include #include -#include #include #include +#include #define ushort uint16_t #define DEVOURER_LOG_TAG "devourer" @@ -54,7 +55,49 @@ void format_helper(std::ostringstream& oss, if (openBracket == std::string::npos) { return; } std::size_t closeBracket = str.find('}', openBracket + 1); if (closeBracket == std::string::npos) { return; } - oss << str.substr(0, openBracket) << value; + + oss << str.substr(0, openBracket); + + /* Parse a minimal subset of std::format spec inside {...}: optional + * ':' then optional '0' fill, optional width digits, optional 'x'/'X' + * for hex. Sufficient for our uses; falls back to default formatting + * if no spec given. */ + std::string_view spec = str.substr(openBracket + 1, closeBracket - openBracket - 1); + if (auto colon = spec.find(':'); colon != std::string_view::npos) { + spec.remove_prefix(colon + 1); + } else { + spec = {}; + } + + if (!spec.empty()) { + std::ios_base::fmtflags saved = oss.flags(); + char saved_fill = oss.fill(); + bool zero_pad = false; + if (!spec.empty() && spec.front() == '0') { + zero_pad = true; + spec.remove_prefix(1); + } + int width = 0; + while (!spec.empty() && std::isdigit(static_cast(spec.front()))) { + width = width * 10 + (spec.front() - '0'); + spec.remove_prefix(1); + } + bool hex = false, hex_upper = false; + if (!spec.empty() && (spec.front() == 'x' || spec.front() == 'X')) { + hex = true; + hex_upper = spec.front() == 'X'; + } + if (hex) oss << std::hex; + if (hex_upper) oss << std::uppercase; + if (zero_pad) oss << std::setfill('0'); + if (width > 0) oss << std::setw(width); + oss << value; + oss.flags(saved); + oss.fill(saved_fill); + } else { + oss << value; + } + str = str.substr(closeBracket + 1); } From 056e2b1ab4e6c64e29f3ad582088ecc6d76d176c Mon Sep 17 00:00:00 2001 From: Joseph Albert Nefario Date: Thu, 21 May 2026 18:49:19 +0300 Subject: [PATCH 5/5] README: document RTL8814AU RX support + 8814 demo env vars - Hardware matrix: 8814AU row moves from "Not supported" to "RX supported" (VID/PID 0bda:8813); note 4T4R RF / 3-SS baseband cap, 2-SS effective on USB-2, TX path not yet validated. - 8811AU row moves from "in progress" to "Supported". - Family blurb expanded to credit Hal8814PhyReg.h and hal8814a_fw.[ch] as reusable across the Jaguar family. - Build artifacts: WiFiDriverDemo now walks every Realtek device under VID 0bda rather than the old hardcoded 0bda:8812 open. - New "Demo env vars" section documents DEVOURER_PID, DEVOURER_CHANNEL, DEVOURER_SKIP_RESET, DEVOURER_FORCE_TXPWR (the last one explains the slow 8814 TX-power-by-rate loop and why it's skipped by default). - Project layout: add hal/Hal8814PhyReg.h, hal8814a_fw.[ch], Hal8814PwrSeq. [ch], rtl8814a/Hal8814_PhyTables.[ch]; rename Rtl8812aDevice -> RtlJaguar Device; add FirmwareManager and PhyTableLoader entries. Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 82 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 1198bdc..09c6286 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,30 @@ # devourer -The RTL8812AU driver that simply devours its competitors. +The Realtek 11ac driver that simply devours its competitors. -Devourer is a userspace re-implementation of Realtek's RTL8812AU Wi-Fi driver, -speaking to the chip directly through libusb. No kernel module, no `rtl8812au` -DKMS tree — just a C++20 static library (`WiFiDriver`) plus two demo -executables for RX and TX. It is the OpenIPC project's driver of choice for -long-range video links built on top of cheap Realtek 11ac USB radios. +Devourer is a userspace re-implementation of Realtek's RTL88xxAU Wi-Fi +driver (Jaguar family: RTL8812AU shipping, RTL8814AU RX-only, RTL8811AU +WIP), speaking to the chip directly through libusb. No kernel module, no +`rtl8812au` DKMS tree — just a C++20 static library (`WiFiDriver`) plus two +demo executables for RX and TX. It is the OpenIPC project's driver of +choice for long-range video links built on top of cheap Realtek 11ac USB +radios. ## Hardware landscape -Devourer currently targets **RTL8812AU** on `master`, with **RTL8811AU** -support in flight on `feat/rtl8811au-support`. Both are members of Realtek's -first-generation 802.11ac silicon family, internally codenamed **"Jaguar"** — -which is why the HAL, register tables (`hal/Hal8812PhyReg.h`), firmware blob -(`hal/hal8812a_fw.[ch]`) and the `SET_TX_DESC_*_8812` macros in -`src/FrameParser.h` are reusable across the whole family with mostly EEPROM -and RF-path adjustments rather than a from-scratch rewrite. - -| Part | Streams | Status in devourer | Notes | -| -------------- | ---------- | ------------------------------------------- | ---------------------------------------------- | -| **RTL8812AU** | 2T2R | Supported (`master`, VID/PID `0bda:8812`) | Reference part | -| **RTL8811AU** | 1T1R | In progress on `feat/rtl8811au-support` | Pin/feature-reduced cut of 8812AU | -| **RTL8821AU** | 1T1R + BT | Not supported | Same Jaguar PHY combined with Bluetooth | -| **RTL8814AU** | 4T4R | Not supported | Jaguar baseband scaled to four streams | +Devourer targets **RTL8812AU**, **RTL8811AU**, and **RTL8814AU** — all +members of Realtek's first-generation 802.11ac silicon family, internally +codenamed **"Jaguar"**. The HAL, register-table layout, firmware-download +plumbing, and `SET_TX_DESC_*_8812` macros in `src/FrameParser.h` are shared +across the family; chip-specific EEPROM handling, firmware blobs, and RF +tables are layered on top. + +| Part | RF / streams | Status | Notes | +| -------------- | --------------- | ------------- | ------------------------------------------- | +| **RTL8812AU** | 2T2R | Supported | VID/PID `0bda:8812`; reference part | +| **RTL8811AU** | 1T1R | WIP | Pin/feature-reduced cut of 8812AU | +| **RTL8814AU** | 4T4R, 3-SS max | RX supported | VID/PID `0bda:8813`; 2-SS effective on USB-2; TX path not yet validated | +| **RTL8821AU** | 1T1R + BT | Not supported | Same Jaguar PHY combined with Bluetooth | Successor families (`Jaguar2` / `Jaguar+` — 8812BU, 8822BU/BE, etc., and the later `Kestrel` 11ax generation) are **out of scope**: they share the Realtek @@ -74,13 +75,28 @@ root. ### Build artifacts - `WiFiDriver` — static library; link this from your application. -- `WiFiDriverDemo` — RX example built from `demo/main.cpp`. Opens - `0bda:8812`, sets monitor mode on channel 36 / 20 MHz, runs the read loop. +- `WiFiDriverDemo` — RX example built from `demo/main.cpp`. Walks every + Realtek device under VID `0bda` and tries to open it; sets monitor mode + on channel 36 / 20 MHz, runs the read loop. - `WiFiDriverTxDemo` — TX example built from `txdemo/main.cpp`. Takes a USB fd as `argv[1]` (the Termux-on-Android pattern using `libusb_wrap_sys_device`), forks RX into a child, and TX-loops a hardcoded beacon in the parent. +### Demo env vars + +- `DEVOURER_PID=0xNNNN` — restrict the device-open loop to a single PID + (e.g. `0x8813` for RTL8814AU). +- `DEVOURER_CHANNEL=N` — override the demo's monitor channel (e.g. `6` + for 2.4 GHz, `36` for 5 GHz). +- `DEVOURER_SKIP_RESET=1` — skip `libusb_reset_device` before claim. Useful + when picking up a chip whose firmware is already running (e.g. after + unbinding a kernel driver that left fw state intact). +- `DEVOURER_FORCE_TXPWR=1` — force the per-rate TX-power loop to run during + channel switch. Skipped by default in 8814 monitor mode: the loop issues + ~300 vendor control transfers and the resulting per-rate indices are + unused for RX-only operation. + ## Using the library The caller owns libusb: you must `libusb_init`, open the device, detach any @@ -109,16 +125,20 @@ rate/MCS/VHT/STBC/LDPC/SGI/bandwidth from it). ``` hal/ Vendor headers and tables ported from Realtek's tree - (Hal8812PhyReg.h, hal8812a_fw.[ch], rtl8812a_spec.h, …) + Hal8812PhyReg.h, hal8812a_fw.[ch], rtl8812a_spec.h + Hal8814PhyReg.h, hal8814a_fw.[ch], Hal8814PwrSeq.[ch] + rtl8814a/Hal8814_PhyTables.[ch] (8814 BB/AGC/RF tables) src/ Driver implementation - WiFiDriver thin factory - Rtl8812aDevice orchestrator (RX + TX entry points) - HalModule chip bring-up / power sequencing - RadioManagementModule channel, bandwidth, TX power - EepromManager EFUSE / EEPROM read + autoload state - RtlUsbAdapter libusb wrapper (vendor + bulk transfers) - FrameParser RX parsing, TX descriptor layout - Radiotap.c radiotap header iterator + WiFiDriver thin factory + RtlJaguarDevice orchestrator (RX + TX entry points) + HalModule chip bring-up / power sequencing + RadioManagementModule channel, bandwidth, TX power, up to 4 RF paths + EepromManager EFUSE / EEPROM read + autoload state + FirmwareManager chip-specific firmware download + PhyTableLoader applies chip-cut-conditional BB/AGC tables + RtlUsbAdapter libusb wrapper (vendor + bulk transfers) + FrameParser RX parsing, TX descriptor layout + Radiotap.c radiotap header iterator demo/ RX example txdemo/ TX example (Android / Termux pattern) ```