Add basic change for v1453
Change-Id: I9497a61bbc3717f66413794a4e7dee0347c0bc33
diff --git a/mbtk/test/Makefile b/mbtk/test/Makefile
new file mode 100755
index 0000000..d894df5
--- /dev/null
+++ b/mbtk/test/Makefile
@@ -0,0 +1,24 @@
+BUILD_ROOT = $(shell pwd)/..
+include $(BUILD_ROOT)/Make.defines
+
+#exclude_dirs := include bin
+#test_dirs := $(shell find . -maxdepth 1 -type d)
+#test_dirs := $(basename $(patsubst ./%,%,$(test_dirs)))
+#test_dirs := $(filter-out $(exclude_dirs),$(test_dirs))
+
+SUBDIRS := $(wildcard */)
+SUBDIRS_WITH_MAKEFILES := $(foreach dir,$(SUBDIRS),$(if $(wildcard $(dir)Makefile),$(dir),))
+
+all:
+ @echo DIR=$(SUBDIRS_WITH_MAKEFILES)
+ @for dir in $(SUBDIRS_WITH_MAKEFILES); do \
+ echo "Building $$dir"; \
+ $(MAKE) -C $$dir || exit 1; \
+ done
+
+clean:
+ @echo DIR=$(SUBDIRS_WITH_MAKEFILES)
+ @for i in $(SUBDIRS_WITH_MAKEFILES); do \
+ (cd $$i && echo "Cleaning $$i" && $(MAKE) clean) || exit 1; \
+ done
+ rm -rf $(OUT_DIR)
diff --git a/mbtk/test/liblynq_lib_t106/Makefile b/mbtk/test/liblynq_lib_t106/Makefile
new file mode 100755
index 0000000..5c7b64d
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/Makefile
@@ -0,0 +1,34 @@
+BUILD_ROOT = $(shell pwd)/../..
+include $(BUILD_ROOT)/Make.defines
+
+INC_DIR +=
+
+LIB_DIR +=
+
+LIBS += -lmbtk_lib -llynq_lib -ldl -llog -lubus -lubox -luci -lprop2uci -lrilutil -lblobmsg_json -ldl -lcutils -laudio-apu -lwpa_client
+
+CFLAGS = $(CFLAGS_TEST)
+
+DEFINE +=
+
+LOCAL_SRC_FILES = $(wildcard *.c) $(wildcard *.cpp)
+
+$(info LOCAL_SRC_FILES = $(LOCAL_SRC_FILES))
+
+OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(LOCAL_SRC_FILES)))
+BINS = $(patsubst %.o,%,$(OBJS))
+
+all: $(BINS)
+
+$(BINS):$(OBJS)
+ @echo " BIN $@"
+ $(CC) $(CFLAGS) $(LIB_DIR) $(LIBS) $@.o -o $(OUT_DIR)/bin/$@
+
+%.o:%.c
+ $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
+
+%.o:%.cpp
+ $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
+
+clean:
+ rm -f $(OBJS)
diff --git a/mbtk/test/liblynq_lib_t106/lynq-adc-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-adc-demo.cpp
new file mode 100755
index 0000000..375d7ea
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-adc-demo.cpp
@@ -0,0 +1,49 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <lynq/lynq-adc.h>
+
+void handle_adc(const char* adc_name, int adc_type)
+{
+ if (adc_name == NULL)
+ {
+ printf("Error: adc_name is a null pointer\n");
+ return;
+ }
+ int adc_value = qser_adc_show((ADC_CHANNEL_E)adc_type);
+ if (adc_value < 0)
+ {
+ printf("Error: Failed to get the value of %s\n", adc_name);
+ return;
+ }
+ printf("%s value: %d mV\n", adc_name, adc_value);
+}
+
+int main(int argc, char *argv[])
+{
+ if (argc != 2)
+ {
+ printf("Usage: %s <ADC0|ADC1|ADC2>\n", argv[0]);
+ return -1;
+ }
+
+ if (strcmp(argv[1], "ADC0") == 0)
+ {
+ handle_adc("ADC0", ADC0);
+ }
+ else if (strcmp(argv[1], "ADC1") == 0)
+ {
+ handle_adc("ADC1", ADC1);
+ }
+ else if (strcmp(argv[1], "ADC2") == 0)
+ {
+ handle_adc("ADC2", ADC2);
+ }
+ else
+ {
+ printf("Please enter valid parameters: ADC0|ADC1|ADC2\n");
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/mbtk/test/liblynq_lib_t106/lynq-audio-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-audio-demo.cpp
new file mode 100755
index 0000000..c60480d
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-audio-demo.cpp
@@ -0,0 +1,164 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include "ring_tele.h"
+#include <lynq/lynq-qser-audio.h>
+
+
+static int playback_handle = 1;
+
+void player_cmd_proc(char *cmdstr)
+{
+ if (strcmp(cmdstr, "P\n") == 0)
+ {
+ qser_AudPlayer_Pause(playback_handle);
+ }
+ else if (strcmp(cmdstr, "R\n") == 0)
+ {
+ qser_AudPlayer_Resume(playback_handle);
+ }
+ else if (strcmp(cmdstr, "T\n") == 0)
+ {
+ qser_AudPlayer_Stop(playback_handle);
+ }
+ else
+ {
+ printf("Unknown command: %s", cmdstr);
+ }
+}
+
+void capture_cmd_proc(char *cmdstr)
+{
+ if (strcmp(cmdstr, "P\n") == 0)
+ {
+ qser_AudRecorder_Pause();
+ }
+ else if (strcmp(cmdstr, "R\n") == 0)
+ {
+ qser_AudRecorder_Resume();
+ }
+ else if (strcmp(cmdstr, "T\n") == 0)
+ {
+ qser_AudRecorder_Stop();
+ }
+ else
+ {
+ printf("Unknown command: %s", cmdstr);
+ }
+}
+
+int main(int argc, char *argv[])
+{
+ if (argc < 2)
+ {
+ printf("Usage: %s <play|recd|playbuf> [file]\n", argv[0]);
+ return 1;
+ }
+
+ const char *action = argv[1];
+ const char *file = argv[2];
+
+ int g_audio_owner_id = 0;
+ char player_device[] = "device1";
+ char recorder_device[] = "device2";
+ char cmdstr[256];
+
+ _cb_onPlayer cb_fun = [](int result)
+ {
+ if (result == 0)
+ {
+ printf("Audio recorder opened successfully.\n");
+ }
+ else
+ {
+ printf("Failed to open audio recorder, error code: %d\n", result);
+ }
+ };
+
+ if (strcmp(action, "playbuf") == 0)
+ {
+ int player_open_result = qser_AudPlayer_Open(player_device, cb_fun);
+ if (player_open_result != 0)
+ {
+ printf("Failed to open audio player.\n");
+ return 1;
+ }
+ qser_AudPlayer_PlayPcmBuf(PCM_DATA, PCM_DATA_SIZE, 640, 3, 1, 8000, g_audio_owner_id);
+ while (1)
+ {
+ printf("Please input a player command (P/R/T/exit) :\n");
+ if (fgets(cmdstr, sizeof(cmdstr), stdin) != NULL)
+ {
+ if (strcmp(cmdstr, "exit\n") == 0)
+ {
+ qser_AudPlayer_Close(playback_handle);
+ break;
+ }
+ player_cmd_proc(cmdstr);
+ }
+ }
+ qser_AudPlayer_Close(playback_handle);
+ }
+ else if (strcmp(action, "play") == 0)
+ {
+ int player_open_result = qser_AudPlayer_Open(player_device, cb_fun);
+ if (player_open_result != 0)
+ {
+ printf("Failed to open audio player.\n");
+ return 1;
+ }
+
+ qser_AudPlayer_PlayFrmFile(g_audio_owner_id, file, 0);
+
+ while (1)
+ {
+ printf("Please input a player command (P/R/T/exit) :\n");
+ if (fgets(cmdstr, sizeof(cmdstr), stdin) != NULL)
+ {
+ if (strcmp(cmdstr, "exit\n") == 0)
+ {
+ qser_AudPlayer_Close(playback_handle);
+ break;
+ }
+ player_cmd_proc(cmdstr);
+ }
+ }
+
+ qser_AudPlayer_Close(playback_handle);
+ }
+ else if (strcmp(action, "recd") == 0)
+ {
+ int recorder_open_result = qser_AudRecorder_Open(recorder_device, cb_fun);
+ if (recorder_open_result != 0) {
+ printf("Failed to open audio recorder.\n");
+ return 1;
+ }
+
+ qser_AudRecorder_StartRecord(g_audio_owner_id, file, 0);
+
+ while (1)
+ {
+ printf("Please input a player command (P/R/T/exit) :\n");
+ if (fgets(cmdstr, sizeof(cmdstr), stdin) != NULL)
+ {
+ if (strcmp(cmdstr, "exit\n") == 0)
+ {
+ qser_AudRecorder_Close();
+ break;
+ }
+ capture_cmd_proc(cmdstr);
+ }
+ }
+ qser_AudRecorder_Close();
+ }
+ else
+ {
+ printf("Unknown action: %s\n", action);
+ return 1;
+ }
+
+ qser_Audio_Deinit();
+
+ return 0;
+}
diff --git a/mbtk/test/liblynq_lib_t106/lynq-gpio-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-gpio-demo.cpp
new file mode 100755
index 0000000..bb847c1
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-gpio-demo.cpp
@@ -0,0 +1,170 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <lynq/lynq-gpio.h>
+
+static void printUsage(void)
+{
+ printf("-ds [direction] --lynq_gpio_direction_set\n");
+ printf("-vs [value] --lynq_gpio_value_set\n");
+ printf("-ps [pullsel] --lynq_gpio_pullsel_set\n");
+ printf("-vg --lynq_gpio_value_get\n");
+ printf("-pg --lynq_gpio_pullsel_get\n");
+ printf("-quit\n");
+ printf("Please input an cmd:");
+}
+
+
+
+
+int main(int argc,char** argv)
+{
+ int ret;
+ int gpio;
+ int direction;
+ int value;
+ int pullsel;
+ char cmd[16];
+ char *cmd2;
+ char *cmd1;
+
+ if(argc != 2)
+ {
+ printf("wrong input format, please inout lynq-irq-demo <gpio>\n");
+ return -1;
+ }
+ gpio = atoi(argv[1]);
+ printf("gpio is %d\n", gpio);
+ ret = lynq_gpio_init(gpio, 0, 0, 0);
+ if(ret != 0)
+ {
+ printf("lynq_gpio_init fail\n");
+ return -1;
+ }
+ else
+ {
+ printf("lynq_gpio_init success\n");
+ }
+
+ while(1)
+ {
+ printUsage();
+ memset(cmd,0,sizeof(cmd));
+ if(NULL == fgets(cmd, sizeof(cmd), stdin))
+ break;
+ printf("cmd:%s\n",cmd);
+ cmd1 = strtok(cmd, " ");
+ cmd2 = strtok(NULL, " ");
+ if(strcmp(cmd1,"-ds") == 0)
+ {
+ if(cmd2 == NULL)
+ {
+ printf("direction is NULL\n");
+ continue;
+ }
+ direction = atoi(cmd2);
+ ret = lynq_gpio_direction_set(gpio, direction);
+ if(ret != 0)
+ {
+ printf("lynq_gpio_direction_set fail\n");
+ }
+ else
+ {
+ printf("lynq_gpio_direction_set success\n");
+ }
+ }
+
+ else if(strcmp(cmd1,"-vs") == 0)
+ {
+ if(cmd2 == NULL)
+ {
+ printf("wake_state is NULL\n");
+ continue;
+ }
+ value = atoi(cmd2);
+ ret = lynq_gpio_value_set(gpio, value);
+ if(ret < 0)
+ {
+ printf("lynq_gpio_value_set fail\n");
+ }
+ else
+ {
+ printf("lynq_gpio_value_set success\n");
+ }
+ }
+
+ else if (strcmp(cmd1,"-ps") == 0)
+ {
+ if(cmd2 == NULL)
+ {
+ printf("pullsel is NULL\n");
+ continue;
+ }
+ pullsel = atoi(cmd2);
+ ret = lynq_gpio_pullsel_set(gpio, pullsel);
+ if(ret != 0)
+ {
+ printf("lynq_gpio_pullsel_set fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("lynq_gpio_pullsel_set success\n");
+ }
+ }
+ else if (strcmp(cmd1,"-vg\n") == 0)
+ {
+ ret = lynq_gpio_value_get(gpio);
+ if(ret < 0)
+ {
+ printf("lynq_gpio_value_get fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("lynq_gpio_value_get success\n");
+ printf("ret=%d\n", ret);
+ }
+ }
+ else if(strcmp(cmd1,"-pg\n") == 0)
+ {
+ ret = lynq_gpio_pullsel_get(gpio);
+ if(ret < 0)
+ {
+ printf("lynq_gpio_pullsel_get fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("lynq_gpio_pullsel_get success\n");
+ printf("ret=%d\n", ret);
+ }
+ }
+ else if(strcmp(cmd1,"-quit\n") == 0)
+ {
+ break;
+ }
+ else
+ {
+ printf("wrong input format\n");
+ }
+
+
+ }
+
+
+ ret = lynq_gpio_deinit(gpio);
+ if(ret != 0)
+ {
+ printf("lynq_gpio_deinit fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("lynq_gpio_deinit success\n");
+ }
+
+ return 0;
+
+}
diff --git a/mbtk/test/liblynq_lib_t106/lynq-irq-demo.cc b/mbtk/test/liblynq_lib_t106/lynq-irq-demo.cc
new file mode 100755
index 0000000..eddb286
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-irq-demo.cc
@@ -0,0 +1,159 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <pthread.h>
+#include <lynq/lynq-irq.h>
+
+
+#define CMD_SET_WAKE "set_wake"
+#define CMD_GET_WAKE "get_wake\n"
+#define CMD_SET_TYPE "set_type"
+#define CMD_GET_TYPE "get_type\n"
+#define CMD_UNINSTALL "uninstall\n"
+#define CMD_QUIT_TEST "quit\n"
+
+int line;
+
+
+static void printUsage(void)
+{
+ printf("Usage:\n");
+ printf("-set_wake <en>\n");
+ printf("-set_type <en>\n");
+ printf("-get_type\n");
+ printf("-get_wake\n");
+ printf("-uninstall\n");
+ printf("-quit\n");
+ printf("Please input an cmd:");
+}
+
+
+static void irq_test_handler(void)
+{
+ int trig_type;
+ trig_type = lynq_irq_get_type(line);
+ printf("this is irq_test_handler\nthis irq is gpio %d,trig_type is %d\n", line_gpio[line], trig_type);
+// return NULL;
+}
+
+
+int main(int argc, char** argv)
+{
+ int ret;
+ int irq;
+ int trig_type;
+ int en;
+ char cmd[16];
+ char *cmd2;
+ char *cmd1;
+
+ if(argc != 3)
+ {
+ printf("wrong input format, please inout lynq-irq-demo <irq_line> <trig_type/wake_state> \n");
+ return -1;
+ }
+ irq = atoi(argv[1]);
+ trig_type = atoi(argv[2]);
+ ret = lynq_irq_install(irq, irq_test_handler, trig_type);
+ if(ret != 0)
+ {
+ printf("lynq_irq_install fail\n");
+ return 0;
+ }
+ else
+ {
+ printf("lynq_irq_install success\n");
+ line = irq;
+ }
+
+ while(1)
+ {
+ printUsage();
+ memset(cmd,0,sizeof(cmd));
+ fgets(cmd, sizeof(cmd), stdin);
+ printf("cmd:%s\n",cmd);
+ cmd1 = strtok(cmd, " ");
+ cmd2 = strtok(NULL, " ");
+ if(strcmp(cmd1, CMD_SET_WAKE) == 0)
+ {
+ if(cmd2 == NULL)
+ {
+ printf("wake_state is NULL\n");
+ break;
+ }
+ en = atoi(cmd2);
+ ret = lynq_irq_set_wake(irq, en);
+ if(ret < 0)
+ {
+ printf("lynq_irq_set_wake fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("lynq_irq_set_wake success\n");
+ printf("ret=%d\n", ret);
+ }
+ }
+ else if(strcmp(cmd1, CMD_GET_WAKE) == 0)
+ {
+ ret = lynq_irq_get_wake(irq);
+ printf("lynq_irq_get_wake ret %d\n", ret);
+ }
+ else if(strcmp(cmd1, CMD_SET_TYPE) == 0)
+ {
+ if(cmd2 == NULL)
+ {
+ printf("trig_type is NULL\n");
+ break;
+ }
+ trig_type = atoi(cmd2);
+ ret = lynq_irq_set_type(line, trig_type);
+ if(ret < 0)
+ {
+ printf("lynq_irq_set_type fail\n");
+ }
+ else
+ {
+ printf("lynq_irq_set_type success\n");
+ }
+ }
+ else if(strcmp(cmd1, CMD_GET_TYPE) == 0)
+ {
+ ret = lynq_irq_get_type(irq);
+ printf("lynq_irq_get_type ret %d\n", ret);
+ }
+ else if(strcmp(cmd1, CMD_UNINSTALL) == 0)
+ {
+ ret = lynq_irq_uninstall(irq);
+ if(ret != 0)
+ {
+ printf("lynq_irq_uninstall fail\n");
+ }
+ else
+ {
+ printf("lynq_irq_uninstall success\n");
+ }
+ }
+ else if(strcmp(cmd1, CMD_QUIT_TEST) == 0)
+ {
+ ret = lynq_irq_uninstall(irq);
+ if(ret != 0)
+ {
+ printf("lynq_irq_uninstall fail\n");
+ }
+ else
+ {
+ printf("lynq_irq_uninstall success\n");
+ }
+ break;
+ }
+ else
+ {
+ printf("wrong input format\n");
+ }
+ }
+
+ return 0;
+}
+
+
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-autosuspend-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-autosuspend-demo.cpp
new file mode 100755
index 0000000..e8c4ca8
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-qser-autosuspend-demo.cpp
@@ -0,0 +1,303 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <dlfcn.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <lynq/lynq-qser-autosuspend.h>
+
+#define FILE_LOCK_TABLE "/tmp/.lock_table"
+
+#define MAX_LOCK_NUM 128
+
+static void qser_lpm_handler(qser_lpm_edge_t edge_state)
+{
+ printf("this is qser_lpm_handler, edge_state=%d\n", edge_state);
+
+}
+
+static void printUsage(void)
+{
+ printf("-i --qser_lpm_init\n");
+ printf("-d --qser_lpm_deinit\n");
+ printf("-q --quit\n");
+ printf("-e --qser_autosuspend_enable\n");
+ printf("-cl [wakelock name] --qser_wakelock_create \n");
+ printf("-al [wakelock num] --qser_wakelock_lock \n");
+ printf("-rl [wakelock num] --qser_wakelock_unlock \n");
+ printf("-dl [wakelock num] --qser_wakelock_destroy\n");
+ printf("-ws [whitelist num] --qser_whitelist_set\n");
+ printf("-wg --qser_whitelist_get\n");
+ printf("-ccl --check created locks\n");
+ printf("-cll --check lockup locks\n");
+ printf("-cws --check wakeup sources\n");
+ printf("Please input an cmd:");
+}
+
+
+int check_lock(void)
+{
+// int err;
+ int file_fd;
+ int i;
+ int ret;
+ LOCK_TABLE lock_status;
+ file_fd = open(FILE_LOCK_TABLE,O_RDWR);
+ if(file_fd < 0)
+ {
+// err = errno;
+ printf("Error open lock_table file:%s\n", strerror(errno));
+ return -2;
+ }
+
+ memset(&lock_status, 0, sizeof(lock_status));
+ lseek(file_fd,0,SEEK_SET);
+ ret = read(file_fd,(unsigned char *)&lock_status,sizeof(lock_status));
+ if(ret <= 0)
+ {
+ close(file_fd);
+ return -2;
+ }
+ for(i=0;i<MAX_LOCK_NUM;i++)
+ {
+ if(strlen(lock_status.lock_name[i]) != 0)
+ {
+ printf("fd: %d lock_name:%s strlen:%d, pid=%d\n", i, lock_status.lock_name[i], strlen(lock_status.lock_name[i]), lock_status.lock_pid[i]);
+ }
+ }
+
+ close(file_fd);
+ return 0;
+
+}
+
+
+void delete_enter(char *data)
+{
+ char *find = strchr(data, '\n');
+ if(find)
+ *find = '\0';
+ return ;
+}
+
+int main(int argc,char** argv)
+{
+
+ int num;
+ int ret;
+ int len;
+ FILE *fp;
+ char buf[256];
+ char cmd[64];
+ char *cmd2;
+ char *cmd1;
+ char tmp[8];
+ qser_pm_cfg_t *qser_lpm_cfg = NULL;
+ qser_lpm_cfg = (qser_pm_cfg_t *)malloc(sizeof(qser_pm_cfg_t));
+ qser_lpm_cfg->wakeupin.wakeupin_pin = 50;
+ qser_lpm_cfg->wakeupin.wakeupin_edge = E_QL_LPM_FALLING;
+ while(1)
+ {
+ printUsage();
+ memset(cmd,0,sizeof(cmd));
+ if(NULL == fgets(cmd, sizeof(cmd), stdin))
+ break;
+ cmd1 = strtok(cmd, " ");
+ cmd2 = strtok(NULL, " ");
+ delete_enter(cmd1);
+ printf("cmd1:%s\n", cmd1);
+ if(strcmp(cmd1,"-i") == 0)
+ {
+ ret = qser_lpm_init( qser_lpm_handler, qser_lpm_cfg);
+ if(ret != 0)
+ {
+ printf("lpm init fail\n");
+ break;
+ }
+ else
+ {
+ printf("lpm init success\n");
+ }
+ }
+ else if(strcmp(cmd1,"-e") == 0)
+ {
+ char num='1';
+ ret = qser_autosuspend_enable(num);
+ if(ret != 0)
+ {
+ printf("qser_autosuspend_enable fail\n");
+ }
+ else
+ {
+ printf("qser_autosuspend_enable success\n");
+ }
+ }
+ else if(strcmp(cmd1,"-cl") == 0)
+ {
+ if(cmd2 == NULL)
+ {
+ printf("name is null\n");
+ continue;
+ }
+ len = strlen(cmd2);
+ printf("len =%d\n", len);
+ ret = qser_wakelock_create(cmd2, len);
+ if(ret < 0)
+ {
+ printf("wakelock create fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("wakelock create success\n");
+ printf("fd=%d\n", ret);
+ }
+ }
+ else if (strcmp(cmd1,"-al") == 0)
+ {
+ if(cmd2 == NULL)
+ {
+ printf("fd is null\n");
+ continue;
+ }
+ num = atoi(cmd2);
+ ret = qser_wakelock_lock(num);
+ if(ret != 0)
+ {
+ printf("wakelock lock fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("wakelock lock success\n");
+ }
+ }
+
+ else if (strcmp(cmd1,"-rl") == 0)
+ {
+ if(cmd2 == NULL)
+ {
+ printf("fd is null\n");
+ continue;
+ }
+ num = atoi(cmd2);
+ ret = qser_wakelock_unlock(num);
+ if(ret != 0)
+ {
+ printf("wakelock unlock fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("wakelock unlock success\n");
+ }
+ }
+ else if(strcmp(cmd1,"-dl") == 0)
+ {
+ if(cmd2 == NULL)
+ {
+ printf("fd is null\n");
+ continue;
+ }
+ num = atoi(cmd2);
+ ret = qser_wakelock_destroy(num);
+ if(ret != 0)
+ {
+ printf("wakelock destroy fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("wakelock destroy success\n");
+ }
+ }
+ else if(strcmp(cmd1, "-ws") == 0)
+ {
+ if(cmd2 == NULL)
+ {
+ printf("num is null\n");
+ continue;
+ }
+ delete_enter(cmd2);
+ ret = qser_whitelist_set(cmd2);
+ if(ret != 0)
+ {
+ printf("qser_whitlist_set fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("qser_whitlist_set success\n");
+ }
+ }
+ else if(strcmp(cmd1, "-wg") == 0)
+ {
+ ret = qser_whitelist_get(tmp);
+ if(ret != 0)
+ {
+ printf("qser_whitlist_set fail\n");
+ }
+ else
+ {
+ printf("qser_whitlist_set success\n");
+ printf("ret=%d, whilelist state is %s\n", ret, tmp);
+ }
+ }
+ else if(strcmp(cmd1,"-ccl") == 0)
+ {
+ int ret;
+ ret = check_lock();
+ if(ret != 0)
+ {
+ printf("check lock fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("check lock success\n");
+ }
+ }
+ else if(strcmp(cmd1,"-cll") == 0)
+ {
+ int ret;
+ ret = system("cat /sys/power/wake_lock");
+ if(ret != 0)
+ {
+ printf("check created lock fail\n");
+ }
+ }
+ else if(strcmp(cmd1,"-cws") == 0)
+ {
+ printf("start check active wakeup_sources !!!\n");
+ memset(buf,0,sizeof(buf));
+ fp = popen("cat /sys/kernel/debug/wakeup_sources|sed -e 's/\"^ \"/\"unnamed\"/g' | awk '{print $6 \"\t\" $1}'| grep -v \"^0\" |sort -n \n","r");
+ while(fgets(buf, 255, fp) != NULL)
+ {
+ printf("%s", buf);
+ }
+ pclose(fp);
+ }
+ else if(strcmp(cmd1, "-d") == 0)
+ {
+ ret = qser_lpm_deinit();
+ if(ret != 0)
+ {
+ printf("lpm deinit fail\n");
+ }
+ else
+ {
+ printf("lpm deinit success\n");
+ }
+ }
+ else if(strcmp(cmd1,"-q") == 0)
+ {
+ break;
+ }
+ }
+
+ return 0;
+
+}
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-data-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-data-demo.cpp
new file mode 100755
index 0000000..757af0c
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-qser-data-demo.cpp
@@ -0,0 +1,200 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <dlfcn.h>
+#include <errno.h>
+#include <sys/un.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <lynq/lynq_qser_data.h>
+
+#define MAX_COMMAND_LEN 10
+
+
+void evt_cb(qser_data_call_state_s *state);
+int qser_init_data();
+int qser_deinit_data();
+int data_demo_auto_test(char *apn_name1, char *apn_name2);
+
+qser_data_call_state_s state = {0};
+
+void delete_enter(char data[])
+{
+ char *find = strchr(data, '\n');
+ if(find)
+ *find = '\0';
+ return ;
+}
+void printf_help(void)
+{
+ printf("*******************************User Guide*************************************************\n");
+ printf("usage: lynq-qser-data-demo <apn_name> <apn_type>\n");
+ printf("Example: lynq-qser-data-demo cmwap lynq_apn1\n");
+ printf("*******************************************************************************************\n");
+ return;
+}
+
+/**
+ * @brief qser data call demo entry function.
+ *
+ * @detail This example will take a complete data process
+ * and show you how to call the API in liblynq-qser-data.
+ */
+int main(int argc, char *argv[])
+{
+ int ret;
+
+ printf("[%s] [%d] entry !\n", __FUNCTION__, __LINE__);
+ printf("[DATA_DEMO]lynq-qser-data-demo entry !\n");
+
+ if(argc != 3)
+ {
+ printf_help();
+ exit(EXIT_FAILURE);
+ }
+
+ //do initialization
+ ret = qser_data_call_init(evt_cb);
+ if(0 != ret)
+ {
+ printf("initial failed !\n");
+ return -1;
+ }
+
+ data_demo_auto_test(argv[1], argv[2]);
+ qser_data_call_destroy();
+
+ return 0;
+}
+
+//demo示例拨两路apn,一路使用默认apn配置拨号访问公网,另一路建议为私网配置
+int data_demo_auto_test(char *apn_name1, char *apn_type)
+{
+ int ret = 0;
+ char command[MAX_COMMAND_LEN] = {'\0'};
+ bool apn_test1_need_insert = true;
+ unsigned char profile_idx_char1;
+ qser_apn_add_s apn_test1 = {QSER_APN_PDP_TYPE_IPV4V6, QSER_APN_AUTH_PROTO_DEFAULT, {'\0'}, {'\0'}, {'\0'}, {'\0'}};
+ qser_data_call_s apn_normal_datacall;
+ qser_data_call_s apn_test1_datacall;
+ qser_data_call_error_e err = QSER_DATA_CALL_ERROR_NONE;
+
+ memcpy(apn_test1.apn_type,apn_type,QSER_APN_NAME_SIZE);
+ memcpy(apn_test1.apn_name,apn_name1,QSER_APN_NAME_SIZE);
+
+ //1、检查apn是否存在
+ qser_apn_info_list_s apn_list = {0};
+ ret = qser_apn_get_list(&apn_list);
+ if(ret != 0)
+ {
+ printf("\n get apn list error\n");
+ return -1;
+ }
+ for(int i = 0; i < apn_list.cnt; i++)
+ {
+ printf("data_demo_auto_test: pdp_type=%d, auth_proto=%d, apn_name=%s, username=%s, password=%s, apn_type=%s\n"
+ ,apn_list.apn[i].pdp_type, apn_list.apn[i].auth_proto, apn_list.apn[i].apn_name, apn_list.apn[i].username, apn_list.apn[i].password, apn_list.apn[i].apn_type);
+
+ if( apn_list.apn[i].pdp_type == apn_test1.pdp_type
+ && apn_list.apn[i].auth_proto == apn_test1.auth_proto
+ && (strcmp(apn_list.apn[i].apn_name, apn_test1.apn_name) == 0)
+ && (strcmp(apn_list.apn[i].username, apn_test1.username) == 0)
+ && (strcmp(apn_list.apn[i].password, apn_test1.password) == 0)
+ && (strcmp(apn_list.apn[i].apn_type, apn_test1.apn_type) == 0)
+ )
+ {
+ profile_idx_char1 = apn_list.apn[i].profile_idx;
+ apn_test1_need_insert = false;
+ }
+ }
+ //2、若不存在,插入apn
+ if(apn_test1_need_insert)
+ {
+ ret = qser_apn_add(&apn_test1, &profile_idx_char1);
+ if(ret != 0)
+ {
+ printf("\n add apn error\n");
+ return -1;
+ }
+ }
+ //3、拨号
+ apn_normal_datacall.profile_idx = 0;//默认apn profile_idx
+ apn_test1_datacall.profile_idx = profile_idx_char1;
+ //拨号时实际使用的ip_name,userdata,password等配置以apn信息中的为准,不使用datacall中的配置
+ ret = qser_data_call_start(&apn_normal_datacall, &err);//默认apn拨号
+ if(ret != 0)
+ {
+ printf("\nERROR: setup data call fail!!!\n");
+ return -1;
+ }
+
+ ret = qser_data_call_start(&apn_test1_datacall, &err);
+ if(ret != 0)
+ {
+ printf("\nERROR: setup data call fail!!!\n");
+ return -1;
+ }
+
+ printf("\n[DATA_DEMO]Enter --exit to exit data demo\n");
+ while(1)
+ {
+ if(NULL == fgets(command , MAX_COMMAND_LEN, stdin))
+ break;
+ delete_enter(command);
+ if(strcmp(command,"--exit") == 0)
+ {
+ break;
+ }
+ else
+ {
+ printf("\n[DATA_DEMO]Enter --exit to deactive data call and exit data demo\n");
+ }
+ }
+
+ //4、去激活
+ //去激活时有效入参仅为profile_idx
+ ret = qser_data_call_stop(apn_normal_datacall.profile_idx, apn_normal_datacall.ip_family, &err);
+ if(ret < 0)
+ {
+ printf("\nERROR: deactive data call fail!!!\n");
+ return -1;
+ }
+ ret = qser_data_call_stop(apn_test1_datacall.profile_idx, apn_test1_datacall.ip_family, &err);
+ if(ret < 0)
+ {
+ printf("\nERROR: deactive data call fail!!!\n");
+ return -1;
+ }
+ return 0;
+}
+void evt_cb(qser_data_call_state_s *state)
+{
+ char buf_ip[64] = {0};
+ char buf_gateway[64] = {0};
+ char buf_pri_dns[64] = {0};
+ char buf_sec_dns[64] = {0};
+ printf("DATA_DEMO_CALL_BACK: profile_idx=%d, name=%s, ip_family=%d, state=%d, error=%d\n"
+ , state->profile_idx, state->name, state->ip_family, state->state, state->err);
+ #if 1
+ printf("DATA_DEMO_CALL_BACK: v4.ip=%s\n"
+ , inet_ntoa(state->v4.ip));
+ printf("DATA_DEMO_CALL_BACK: v4.gateway=%s\n"
+ , inet_ntoa(state->v4.gateway));
+ printf("DATA_DEMO_CALL_BACK: v4.pri_dns=%s\n"
+ , inet_ntoa(state->v4.pri_dns));
+ printf("DATA_DEMO_CALL_BACK: v4.sec_dns=%s\n"
+ , inet_ntoa(state->v4.sec_dns));
+ inet_ntop(AF_INET6, &(state->v6.ip), buf_ip, sizeof(buf_ip));
+ inet_ntop(AF_INET6, &(state->v6.gateway), buf_gateway, sizeof(buf_gateway));
+ inet_ntop(AF_INET6, &(state->v6.pri_dns), buf_pri_dns, sizeof(buf_pri_dns));
+ inet_ntop(AF_INET6, &(state->v6.sec_dns), buf_sec_dns, sizeof(buf_sec_dns));
+ printf("DATA_DEMO_CALL_BACK: v6.ip=%s\n", buf_ip);
+ printf("DATA_DEMO_CALL_BACK: v6.gateway=%s\n", buf_gateway);
+ printf("DATA_DEMO_CALL_BACK: v6.pri_dns=%s\n", buf_pri_dns);
+ printf("DATA_DEMO_CALL_BACK: v6.sec_dns=%s\n", buf_sec_dns);
+ #endif
+ //后续对回调函数中返回值的处理建议放在其它线程中进行,避免阻塞在回调函数中影响后续消息上报
+}
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-fota-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-fota-demo.cpp
new file mode 100755
index 0000000..efdf5d5
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-qser-fota-demo.cpp
@@ -0,0 +1,137 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <dlfcn.h>
+#include <stdint.h>
+#include <pthread.h>
+
+int (*lynq_get_upgrade_status)(void);
+int (*lynq_fota_set_addr_value)(char *value,int size);
+int (*lynq_fota_nrestart)(void);
+int (*lynq_rock_main)(int first_run);
+int (*lynq_read_process)(void);
+void *dlHandle_fota = NULL;
+
+void *thread_function_noreboot(void *arg)
+{
+
+ lynq_fota_nrestart();
+ return NULL;
+}
+
+void *thread_function_reboot(void *arg)
+{
+
+ lynq_rock_main(1);
+ return NULL;
+}
+
+
+int main(int argc,char *argv[])
+{
+ int ret = 0;
+ int reboot_flag;
+ char *value = argv[1];
+ printf("Enter main function\n");
+
+ const char *lynqLibPath_fota = "/lib/liblynq-fota.so";
+ dlHandle_fota = dlopen(lynqLibPath_fota, RTLD_NOW);
+ if (dlHandle_fota == NULL)
+ {
+ printf("dlopen dlHandle_fota failed: %s\n", dlerror());
+ return -1;
+ }
+
+ lynq_fota_set_addr_value = (int (*)(char *value,int size))dlsym(dlHandle_fota, "lynq_fota_set_addr_value");
+ if(lynq_fota_set_addr_value == NULL)
+ {
+ printf("lynq fota ser addr value is null\n");
+ return -1;
+ }
+
+ lynq_get_upgrade_status = (int (*)(void))dlsym(dlHandle_fota,"lynq_get_upgrade_status");
+ if(lynq_get_upgrade_status == NULL)
+ {
+ printf("lynq_get_upgrade_status is null\n");
+ return -1;
+ }
+ lynq_fota_nrestart = (int (*)())dlsym(dlHandle_fota,"lynq_fota_nrestart");
+ if(lynq_fota_nrestart == NULL)
+ {
+ printf("lynq_fota_nrestart is null\n");
+ return -1;
+ }
+ lynq_rock_main = (int (*)(int first_run))dlsym(dlHandle_fota,"lynq_rock_main");
+ if(lynq_rock_main == NULL)
+ {
+ printf("lynq_rock_main is null\n");
+ return -1;
+ }
+
+ lynq_read_process = (int (*)(void))dlsym(dlHandle_fota,"lynq_read_process");
+ if(lynq_read_process == NULL)
+ {
+ printf("lynq_read_process is null\n");
+ return -1;
+ }
+
+ ret = lynq_fota_set_addr_value(value,(int )strlen(value));
+ if(ret != 0)
+ {
+ printf("set upgrade package addr failed\n");
+ return -1;
+ }
+ while(1)
+ {
+ printf("Please chose action 0: upgrade done ,not reboot 1: upgrade done ,reboot 2:get upgrade status 3:read fota process \n");
+ if(1 != scanf("%d",&reboot_flag))
+ break;
+
+ switch(reboot_flag)
+ {
+ case 0:
+ {
+ pthread_t thread_id_noreboot;
+ int result = pthread_create(&thread_id_noreboot, NULL, thread_function_noreboot, NULL);
+ if (result != 0)
+ {
+ printf("pthread_create failed \n");
+ return -1;;
+ }
+ }
+ break;
+
+ case 1:
+ {
+ pthread_t thread_id_reboot;
+ int result = pthread_create(&thread_id_reboot, NULL, thread_function_reboot, NULL);
+ if (result != 0)
+ {
+ printf("pthread_create failed \n");
+ return -1;;
+ }
+ }
+ break;
+ case 2:
+ printf("Get fota upgrade status \n");
+ ret = lynq_get_upgrade_status();
+ printf("lynq_get_upgrade_status ret is %d\n",ret);
+ break;
+ case 3:
+ printf("get fota upgrade process\n");
+ ret = lynq_read_process();
+ printf("Now upgrade process is %d\n",ret);
+ break;
+ default:
+ printf("please input right flag 0 or 1 or 2 or 3\n");
+ break;
+
+ }
+
+ }
+ return 0;
+
+}
+
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-gnss-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-gnss-demo.cpp
new file mode 100755
index 0000000..275ffef
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-qser-gnss-demo.cpp
@@ -0,0 +1,291 @@
+#include <stdio.h>
+#include <string.h>
+#include <strings.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <termios.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <termios.h>
+#include <time.h>
+#include <sys/ioctl.h>
+#include <dlfcn.h>
+#include <stdint.h>
+#include "lynq-qser-gnss-demo.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+int (*qser_Gnss_Init)(uint32_t *h_gnss);
+int (*qser_Gnss_Deinit)(uint32_t);
+int (*qser_AddRxIndMsgHandler)(gnss_handler_func_t handler_ptr,uint32_t);
+int (*qser_Set_Indications)(uint32_t h_gnss,e_msg_id_t);
+int (*qser_Gnss_Start)(uint32_t h_gnss);
+int (*qser_Gnss_Stop)(uint32_t h_gnss);
+int (*qser_Gnss_Delete_Aiding_Data)(uint32_t,DELETE_AIDING_DATA_TYPE_T);
+int (*qser_Gnss_InjectTime)(uint32_t,LYNQ_INJECT_TIME_INTO_T *time_info);
+int (*qser_Gnss_Server_Configuration)(char *host, char *id, char *password);
+int (*qser_Gnss_download_tle)();
+int (*qser_Gnss_injectEphemeris)(uint32_t);
+int (*qser_Gnss_Set_Frequency)(uint32_t, int);
+void *dlHandle_gnss;
+
+int main(int argc, char *argv[])
+{
+ int ret;
+ int opt = 0;
+ char *lynqLib_gnss = (char*)"/lib/liblynq-qser-gnss.so";
+// char dev_file[12] = {0};
+ uint32_t ph_gnss;
+ dlHandle_gnss = dlopen(lynqLib_gnss, RTLD_NOW);
+ while(1)
+ {
+ printf("=========gnss main=========\n");
+ user_help();
+ if(1 != scanf("%d", &opt))
+ break;
+ while(getchar()!='\n');
+ switch (opt)
+ {
+ case -1:
+ {
+ printf("main exit\n");
+ return 0;
+ }
+
+ case 1:
+ {
+ qser_Gnss_Init=(int(*)(uint32_t *h_gnss))dlsym(dlHandle_gnss, "qser_Gnss_Init");
+ ret = qser_Gnss_Init(&ph_gnss);
+ if(ret < 0)
+ {
+ printf("mopen_gnss_client_init FAIL.\n");
+ return -1;
+ }
+ printf("mopen_gnss_client_init success , with address=%d\n", ph_gnss);
+ break;
+ }
+ case 2:
+ {
+ qser_Gnss_Deinit=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Deinit");
+ ret =qser_Gnss_Deinit(ph_gnss);
+ if(ret < 0)
+ {
+ printf("mopen_gnss_client_Deinit FAIL.\n");
+ return -1;
+ }
+ printf("mopen_gnss_client_Deinit success \n");
+ break;
+ }
+ case 3:
+ {
+ qser_AddRxIndMsgHandler=(int(*)(gnss_handler_func_t,uint32_t))dlsym(dlHandle_gnss, "qser_AddRxIndMsgHandler");
+ ret = qser_AddRxIndMsgHandler((gnss_handler_func_t)&cb,ph_gnss);
+ if(ret < 0)
+ {
+ printf("lynq_AddRxIndMsgHandler fail\n");
+ qser_Gnss_Deinit(ph_gnss);
+ return -1;
+ }
+ printf("add success\n");
+ break;
+ }
+ case 4:
+ {
+ e_msg_id_t ptr2=E_MT_LOC_MSG_ID_LOCATION_INFO;
+ qser_Set_Indications=(int(*)(uint32_t h_gnss,e_msg_id_t))dlsym(dlHandle_gnss, "qser_Set_Indications");
+ ret = qser_Set_Indications(ph_gnss,ptr2);
+ if(ret < 0)
+ {
+ printf("lynq_Set_LOCATION_INFO fail\n");
+ qser_Gnss_Deinit(ph_gnss);
+ return -1;
+ }
+ printf("set location mode success\n");
+ break;
+ }
+ case 5:
+ {
+ e_msg_id_t ptr4=E_MT_LOC_MSG_ID_NMEA_INFO;
+ qser_Set_Indications=(int(*)(uint32_t h_gnss,e_msg_id_t))dlsym(dlHandle_gnss, "qser_Set_Indications");
+ ret = qser_Set_Indications(ph_gnss,ptr4);
+ if(ret < 0)
+ {
+ printf("lynq_Set_NMEA_INFO fail\n");
+ qser_Gnss_Deinit(ph_gnss);
+ return -1;
+ }
+ printf("set nmea mode success\n");
+ break;
+
+ }
+ case 6:
+ {
+ qser_Gnss_Start=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Start");
+ ret = qser_Gnss_Start(ph_gnss);
+ if(ret < 0)
+ {
+ printf("lynq_Gnss_Start fail\n");
+ return -1;
+ }
+ printf("start success\n");
+ break;
+ }
+ case 7:
+ {
+ qser_Gnss_Stop=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Stop");
+ ret = qser_Gnss_Stop(ph_gnss);
+ if(ret < 0)
+ {
+ printf("lynq_Gnss_Stop fail\n");
+ qser_Gnss_Deinit(ph_gnss);
+ return -1;
+ }
+ printf("stop success\n");
+ break;
+ }
+
+ case 8:
+ {
+ int opt_1;
+ DELETE_AIDING_DATA_TYPE_T ptr;
+ qser_Gnss_Delete_Aiding_Data=(int(*)(uint32_t,DELETE_AIDING_DATA_TYPE_T))dlsym(dlHandle_gnss, "qser_Gnss_Delete_Aiding_Data");
+ printf("=========delete aiding data type=========\n");
+ delete_type();
+ if(1 != scanf("%d", &opt_1))
+ break;
+ while(getchar()!='\n');
+ switch(opt_1)
+ {
+ case 0:
+ {
+ ptr = DELETE_NOTHING;//hot
+ break;
+ }
+ case 1:
+ {
+ ptr = DELETE_EPHEMERIS;//warm
+ break;
+ }
+ case 2:
+ {
+ ptr = DELETE_ALMANAC;
+ break;
+ }
+ case 3:
+ {
+ ptr = DELETE_POSITION_TIME;
+ break;
+ }
+ case 4:
+ {
+ ptr = DELETE_UTC;
+ break;
+ }
+ case 5:
+ {
+ ptr = DELETE_ALL;//cold
+ break;
+ }
+ default:
+ {
+ printf("input error\n");
+ return -1;
+ }
+ }
+ ret = qser_Gnss_Delete_Aiding_Data(ph_gnss,ptr);
+ if(ret < 0)
+ {
+ printf("lynq_Gnss_Delete_Aiding_Data %d fail\n",opt_1);
+ qser_Gnss_Deinit(ph_gnss);
+ return -1;
+ }
+ printf("lynq_Gnss_Delete_Aiding_Data %d success\n",opt_1);
+ break;
+ }
+ case 9:
+ {
+ LYNQ_INJECT_TIME_INTO_T time_test;
+ qser_Gnss_InjectTime=(int(*)(uint32_t,LYNQ_INJECT_TIME_INTO_T *time_info))dlsym(dlHandle_gnss, "qser_Gnss_InjectTime");
+ ret = qser_Gnss_InjectTime(ph_gnss,&time_test);
+ if(ret < 0)
+ {
+ printf("qser_Gnss_InjectTime fail\n");
+ qser_Gnss_Deinit(ph_gnss);
+ return -1;
+ }
+ printf("qser_Gnss_InjectTime success\n");
+ break;
+ }
+ case 10:
+ {
+ qser_Gnss_download_tle=(int(*)())dlsym(dlHandle_gnss, "qser_Gnss_download_tle");
+ ret = qser_Gnss_download_tle();
+ if(ret < 0)
+ {
+ printf("qser_Gnss_download_tle fail\n");
+ return -1;
+ }
+ printf("qser_Gnss_download_tle success\n");
+ break;
+ }
+ case 11:
+ {
+ int frequency;
+ qser_Gnss_Set_Frequency=(int(*)(uint32_t, int))dlsym(dlHandle_gnss, "qser_Gnss_Set_Frequency");
+ printf("=========delete aiding data type=========\n");
+ if(1 != scanf("%d", &frequency))
+ break;
+ ret = qser_Gnss_Set_Frequency(ph_gnss,frequency);
+ if(ret < 0)
+ {
+ printf("qser_Gnss_Set_Frequency fail\n");
+ return -1;
+ }
+ printf("frequency is %d\n",frequency);
+ printf("qser_Gnss_Set_Frequency success\n");
+ break;
+ }
+ case 12:
+ {
+ int (*qser_Gnss_injectEphemeris)(uint32_t);
+ qser_Gnss_injectEphemeris=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_injectEphemeris");
+ ret = qser_Gnss_injectEphemeris(ph_gnss);
+ if(ret < 0)
+ {
+ printf("qser_Gnss_injectEphemeris fail\n");
+ return -1;
+ }
+ printf("qser_Gnss_injectEphemeri ssuccess\n");
+ break;
+ }
+ case 13:
+ {
+ qser_Gnss_Server_Configuration=(int(*)(char *host, char *id, char *password))dlsym(dlHandle_gnss, "qser_Gnss_Server_Configuration");
+ ret = qser_Gnss_Server_Configuration(NULL,(char*)"lcz",(char*)"123456");
+ if(ret < 0)
+ {
+ printf("qser_Gnss_Server_Configuration fail\n");
+ return -1;
+ }
+ printf("qser_Gnss_Server_Configuration ssuccess\n");
+ break;
+ }
+ default:
+ {
+ printf("input error,please re-enter\n");
+ break;
+ }
+ }
+ }
+ return 0;
+}
+#ifdef __cplusplus
+}
+#endif
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-gnss-demo.h b/mbtk/test/liblynq_lib_t106/lynq-qser-gnss-demo.h
new file mode 100755
index 0000000..3dc7552
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-qser-gnss-demo.h
@@ -0,0 +1,132 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum
+{
+ /**< 0 reserve */
+ E_MT_LOC_MSG_ID_LOCATION_INFO = 1, /**< pv_data = &QL_LOC_LOCATION_INFO_T */
+ /**< 2 reserve */
+ E_MT_LOC_MSG_ID_NMEA_INFO = 3, /**< pv_data = &QL_LOC_NMEA_INFO_T */
+}e_msg_id_t;
+
+#define MOPEN_GNSS_NMEA_MAX_LENGTH 255 /** NMEA string maximum length. */
+typedef struct
+{
+ int64_t timestamp; /**< System Timestamp, marked for when got the nmea data */
+ int length; /**< NMEA string length. */
+ char nmea[MOPEN_GNSS_NMEA_MAX_LENGTH + 1]; /**< NMEA string.*/
+}mopen_gnss_nmea_info_t; /* Message */
+
+struct mopen_location_info_t
+{
+ uint32_t size; /**< Set to the size of mcm_gps_location_t. */
+ int flags; /**< Contains GPS location flags bits. */
+ int position_source; /**< Provider indicator for HYBRID or GPS. */
+ double latitude; /**< Latitude in degrees. */
+ double longitude; /**< Longitude in degrees. */
+ double altitude; /**< Altitude in meters above the WGS 84 reference ellipsoid. */
+ float speed; /**< Speed in meters per second. */
+ float bearing; /**< Heading in degrees. */
+ float accuracy; /**< Expected accuracy in meters. */
+ int64_t timestamp; /**< Timestamp for the location fix in UTC million-second base. */
+ int32_t is_indoor; /**< Location is indoors. */
+ float floor_number; /**< Indicates the floor number. */
+};
+
+/*Instantiate callback function*/
+void cb
+(
+ uint32_t h_loc,
+ e_msg_id_t e_msg_id,
+ void *pv_data,
+ void *context_ptr
+ )
+{
+ printf("e_msg_id=%d\n", e_msg_id);
+ switch(e_msg_id)
+ {
+ case E_MT_LOC_MSG_ID_LOCATION_INFO:
+ {
+ mopen_location_info_t *pt_location = (mopen_location_info_t *)pv_data;
+ printf("**** flag=0x%X, Latitude = %f, Longitude=%f, altitude = %f, speed = %f, timestamp = %lld ****\n",
+ pt_location->flags,
+ pt_location->latitude,
+ pt_location->longitude,
+ pt_location->altitude,
+ pt_location->speed,
+ pt_location->timestamp);
+ break;
+ }
+ case E_MT_LOC_MSG_ID_NMEA_INFO:
+ {
+ mopen_gnss_nmea_info_t *pt_nmea = (mopen_gnss_nmea_info_t *)pv_data;
+
+ printf("**** NMEA info: timestamp=%lld, length=%d, nmea=%s ****\n",
+ pt_nmea->timestamp, pt_nmea->length, pt_nmea->nmea);
+ break;
+ }
+ }
+}
+
+typedef void (*gnss_handler_func_t)
+(
+ uint32_t h_loc,
+ e_msg_id_t e_msg_id,
+ void *pv_data,
+ void *context_ptr
+ );
+
+typedef enum {
+ DELETE_NOTHING = 0, /**< Delete nothing. */
+ DELETE_EPHEMERIS = 1, /**< Delete ephemeris data. */
+ DELETE_ALMANAC = 2, /**< Delete almanac data. */
+ DELETE_POSITION_TIME = 3, /**< Delete position and time data. */
+ DELETE_UTC = 4, /**< Delete UTC data. */
+ DELETE_ALL = 5, /**< Delete all location data. */
+}DELETE_AIDING_DATA_TYPE_T;
+
+typedef struct
+{
+ uint32_t year; // >1980
+ uint32_t month; // 1-12
+ uint32_t day; // 1-31
+ uint32_t hour; // 0-23
+ uint32_t minute; // 0-59
+ uint32_t second; // 0-59
+ uint32_t millisecond; // 0-999
+}LYNQ_INJECT_TIME_INTO_T; /* Message */
+
+
+void user_help(void)
+{
+ printf("\t-1 exit\n"
+ "\t1 gnss init\n"
+ "\t2 gnss deinit \n"
+ "\t3 gnss add handle function\n"
+ "\t4 gnss set single mode\n"
+ "\t5 gnss set get_para_from_nmea mode\n"
+ "\t6 gnss start\n"
+ "\t7 gnss stop\n"
+ "\t8 gnss Delete_Aiding_Data and reset\n"
+ "\t9 gnss injecttime\n"
+ "\t10 gnss download tle\n"
+ "\t11 gnss set frequency\n"
+ "\t12 gnss inject ephemeris\n"
+ "\t13 gnss server_configuration\n"
+ "please input operator: >> ");
+}
+void delete_type(void)
+{
+ printf("\t0 DELETE_NOTHING\n"
+ "\t1 DELETE_EPHEMERIS\n"
+ "\t2 DELETE_ALMANAC\n"
+ "\t3 DELETE_POSITION_TIME \n"
+ "\t4 DELETE_UTC\n"
+ "\t5 DELETE_ALL\n"
+ "please input operator: >> ");
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-network-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-network-demo.cpp
new file mode 100755
index 0000000..019f0e3
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-qser-network-demo.cpp
@@ -0,0 +1,649 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <dlfcn.h>
+#include <sys/types.h>
+//#include <pthread.h>
+#include <unistd.h>
+#include "lynq_qser_network.h"
+
+#ifndef LOG_TAG
+#define LOG_TAG "QSER_NETWORK_DEMO"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void *handle_network;
+
+int (*qser_nw_client_init_p)(nw_client_handle_type * h_nw);
+int (*qser_nw_client_deinit_p)(nw_client_handle_type h_nw);
+int (*qser_nw_set_config_p)(nw_client_handle_type h_nw, QSER_NW_CONFIG_INFO_T *pt_info);
+int (*qser_nw_get_operator_name_p)(nw_client_handle_type h_nw, QSER_NW_OPERATOR_NAME_INFO_T *pt_info );
+int (*qser_nw_get_reg_status_p)(nw_client_handle_type h_nw, QSER_NW_REG_STATUS_INFO_T *pt_info);
+int (*qser_nw_add_rx_msg_handler_p)(nw_client_handle_type h_nw, QSER_NW_RxMsgHandlerFunc_t handlerPtr,void* contextPtr);
+int (*qser_nw_get_signal_strength_p)(nw_client_handle_type h_nw,QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info);
+int (*qser_nw_set_oos_config_p)(nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info);
+int (*qser_nw_get_oos_config_p)(nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info);
+int (*qser_nw_set_rf_mode_p) (nw_client_handle_type h_nw,E_QSER_NW_RF_MODE_TYPE_T rf_mode);
+int (*qser_nw_get_rf_mode_p) (nw_client_handle_type h_nw,E_QSER_NW_RF_MODE_TYPE_T* rf_mode);
+int (*qser_nw_set_ims_enable_p) (nw_client_handle_type h_nw,E_QSER_NW_IMS_MODE_TYPE_T ims_mode);
+int (*qser_nw_get_ims_reg_status_p) (nw_client_handle_type h_nw, QSER_NW_IMS_REG_STATUS_INFO_T *pt_info);
+
+
+
+int getFunc()
+{
+ const char *lynq_libpath_network = "/lib/liblynq-qser-network.so";
+
+ handle_network = dlopen(lynq_libpath_network,RTLD_NOW);
+ if(NULL == handle_network)
+ {
+ printf("dlopen lynq_libpath_network fail:%s",dlerror());
+ exit(EXIT_FAILURE);
+ }
+
+ qser_nw_client_init_p = (int (*)(nw_client_handle_type * h_nw))dlsym(handle_network,"qser_nw_client_init");
+ qser_nw_client_deinit_p = (int (*)(nw_client_handle_type h_nw))dlsym(handle_network,"qser_nw_client_deinit");
+ qser_nw_set_config_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_CONFIG_INFO_T *pt_info))dlsym(handle_network,"qser_nw_set_config");
+ qser_nw_get_operator_name_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_OPERATOR_NAME_INFO_T *pt_info ))dlsym(handle_network,"qser_nw_get_operator_name");
+ qser_nw_get_reg_status_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_REG_STATUS_INFO_T *pt_info))dlsym(handle_network,"qser_nw_get_reg_status");
+ qser_nw_get_signal_strength_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info))dlsym(handle_network,"qser_nw_get_signal_strength");
+ qser_nw_add_rx_msg_handler_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_RxMsgHandlerFunc_t handlerPtr,void* contextPtr))dlsym(handle_network,"qser_nw_add_rx_msg_handler");
+ qser_nw_get_oos_config_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info))dlsym(handle_network,"qser_nw_get_oos_config");
+ qser_nw_set_oos_config_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info))dlsym(handle_network,"qser_nw_set_oos_config");
+ qser_nw_set_rf_mode_p = (int (*)(nw_client_handle_type h_nw, E_QSER_NW_RF_MODE_TYPE_T rf_mode))dlsym(handle_network,"qser_nw_set_rf_mode");
+ qser_nw_get_rf_mode_p = (int (*)(nw_client_handle_type h_nw, E_QSER_NW_RF_MODE_TYPE_T* rf_mode))dlsym(handle_network,"qser_nw_get_rf_mode");
+ qser_nw_set_ims_enable_p = (int (*)(nw_client_handle_type h_nw, E_QSER_NW_IMS_MODE_TYPE_T ims_mode))dlsym(handle_network,"qser_nw_set_ims_enable");
+ qser_nw_get_ims_reg_status_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_IMS_REG_STATUS_INFO_T *pt_info))dlsym(handle_network,"qser_nw_get_ims_reg_status");
+
+ if(qser_nw_client_deinit_p==NULL || qser_nw_client_init_p==NULL || qser_nw_set_config_p ==NULL ||
+ qser_nw_get_operator_name_p == NULL || qser_nw_get_reg_status_p ==NULL || qser_nw_add_rx_msg_handler_p==NULL ||
+ qser_nw_set_rf_mode_p == NULL || qser_nw_get_rf_mode_p == NULL || qser_nw_get_oos_config_p == NULL || qser_nw_set_oos_config_p == NULL ||
+ qser_nw_set_ims_enable_p == NULL || qser_nw_get_ims_reg_status_p == NULL)
+ {
+ printf("get func pointer null");
+ exit(EXIT_FAILURE);
+ }
+ return 0;
+}
+
+static int test_nw(void);
+
+int main(int argc, char const *argv[])
+{
+ printf("--------->[%s,%d] start \n",__FUNCTION__,__LINE__);
+
+ if(getFunc()==0)
+ {
+ test_nw();
+ }
+
+ return 0;
+}
+
+typedef struct
+{
+ int cmdIdx;
+ char *funcName;
+} st_api_test_case;
+
+st_api_test_case at_nw_testlist[] =
+{
+ {0, (char*)"qser_nw_client_init"},
+ {1, (char*)"qser_nw_set_config"},
+ {2, (char*)"qser_nw_get_operator_name"},
+ {3, (char*)"qser_nw_get_reg_status"},
+ {4, (char*)"qser_nw_add_rx_msg_handler"},
+ {5, (char*)"qser_nw_get_signal_strength"},
+ {6, (char*)"qser_nw_set_oos_config"},
+ {7, (char*)"qser_nw_get_oos_config"},
+ {8, (char*)"qser_nw_set_rf_mode"},
+ {9, (char*)"qser_nw_get_rf_mode"},
+ {10, (char*)"qser_nw_set_ims_enable"},
+ {11, (char*)"qser_nw_get_ims_reg_status"},
+ {12, (char*)"qser_nw_client_deinit"},
+ {-1, (char*)"quit"}
+};
+
+typedef int (*TEST)(void);
+
+typedef struct
+{
+ char *group_name;
+ st_api_test_case *test_cases;
+ TEST pf_test;
+} func_api_test_t;
+
+func_api_test_t t_nw_test = {(char*)"nw", at_nw_testlist, test_nw};
+
+void show_group_help(func_api_test_t *pt_test)
+{
+ int i;
+
+ printf("Group Name:%s, Supported test cases:\n", pt_test->group_name);
+ for(i = 0; ; i++)
+ {
+ if(pt_test->test_cases[i].cmdIdx == -1)
+ {
+ break;
+ }
+ printf("%d:\t%s\n", pt_test->test_cases[i].cmdIdx, pt_test->test_cases[i].funcName);
+ }
+}
+
+static nw_client_handle_type h_nw = 0;
+
+char *tech_domain[] = {(char*)"NONE", (char*)"3GPP", (char*)"3GPP2"};
+char *radio_tech[] = {(char*)"unknown",
+ (char*)"TD_SCDMA", (char*)"GSM", (char*)"HSPAP", (char*)"LTE", (char*)"EHRPD", (char*)"EVDO_B",
+ (char*)"HSPA", (char*)"HSUPA", (char*)"HSDPA", (char*)"EVDO_A", (char*)"EVDO_0", (char*)"1xRTT",
+ (char*)"IS95B", (char*)"IS95A", (char*)"UMTS", (char*)"EDGE", (char*)"GPRS", (char*)"NONE"};
+
+void nw_event_ind_handler (
+ nw_client_handle_type h_nw,
+ u_int32_t ind_flag,
+ void *ind_msg_buf,
+ u_int32_t ind_msg_len,
+ void *contextPtr)
+{
+ switch(ind_flag) {
+ case NW_IND_VOICE_REG_EVENT_IND_FLAG:
+ {
+ QSER_NW_VOICE_REG_EVENT_IND_T *ind = (QSER_NW_VOICE_REG_EVENT_IND_T*)ind_msg_buf;
+ printf("Recv event indication : VOICE REG EVENT\n");
+
+ if(ind==NULL)
+ {
+ printf("ind is NULL\n");
+ break;
+ }
+
+ if(ind->registration_valid)
+ {
+ printf("voice_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
+ tech_domain[ind->registration.tech_domain],
+ radio_tech[ind->registration.radio_tech],
+ ind->registration.roaming,
+ ind->registration.registration_state);
+ }
+ if(ind->registration_details_3gpp_valid)
+ {
+ printf("voice_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
+ tech_domain[ind->registration_details_3gpp.tech_domain],
+ radio_tech[ind->registration_details_3gpp.radio_tech],
+ ind->registration_details_3gpp.mcc,
+ ind->registration_details_3gpp.mnc,
+ ind->registration_details_3gpp.roaming,
+ ind->registration_details_3gpp.forbidden,
+ ind->registration_details_3gpp.cid,
+ ind->registration_details_3gpp.lac,
+ ind->registration_details_3gpp.psc,
+ ind->registration_details_3gpp.tac);
+ }
+
+ if(ind->registration_details_3gpp2_valid)
+ {
+ printf("voice_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, sid=%d, nid=%d, bsid=%d\n",
+ tech_domain[ind->registration_details_3gpp2.tech_domain],
+ radio_tech[ind->registration_details_3gpp2.radio_tech],
+ ind->registration_details_3gpp2.mcc,
+ ind->registration_details_3gpp2.mnc,
+ ind->registration_details_3gpp2.roaming,
+ ind->registration_details_3gpp2.forbidden,
+ ind->registration_details_3gpp2.sid,
+ ind->registration_details_3gpp2.nid,
+ ind->registration_details_3gpp2.bsid);
+ }
+
+ break;
+ }
+ case NW_IND_DATA_REG_EVENT_IND_FLAG:
+ {
+ QSER_NW_DATA_REG_EVENT_IND_T *ind = (QSER_NW_DATA_REG_EVENT_IND_T*)ind_msg_buf;
+
+ printf("Recv event indication : DATA REG EVENT\n");
+
+ if(ind==NULL)
+ {
+ printf("ind is NULL\n");
+ break;
+ }
+
+
+ if(ind->registration_valid)
+ {
+ printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
+ tech_domain[ind->registration.tech_domain],
+ radio_tech[ind->registration.radio_tech],
+ ind->registration.roaming,
+ ind->registration.registration_state);
+ }
+ if(ind->registration_details_3gpp_valid)
+ {
+ printf("data_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
+ tech_domain[ind->registration_details_3gpp.tech_domain],
+ radio_tech[ind->registration_details_3gpp.radio_tech],
+ ind->registration_details_3gpp.mcc,
+ ind->registration_details_3gpp.mnc,
+ ind->registration_details_3gpp.roaming,
+ ind->registration_details_3gpp.forbidden,
+ ind->registration_details_3gpp.cid,
+ ind->registration_details_3gpp.lac,
+ ind->registration_details_3gpp.psc,
+ ind->registration_details_3gpp.tac);
+ }
+
+ if(ind->registration_details_3gpp2_valid)
+ {
+ printf("data_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, prl=%d, css=%d, sid=%d, nid=%d, bsid=%d\n",
+ tech_domain[ind->registration_details_3gpp2.tech_domain],
+ radio_tech[ind->registration_details_3gpp2.radio_tech],
+ ind->registration_details_3gpp2.mcc,
+ ind->registration_details_3gpp2.mnc,
+ ind->registration_details_3gpp2.roaming,
+ ind->registration_details_3gpp2.forbidden,
+ ind->registration_details_3gpp2.inPRL,
+ ind->registration_details_3gpp2.css,
+ ind->registration_details_3gpp2.sid,
+ ind->registration_details_3gpp2.nid,
+ ind->registration_details_3gpp2.bsid);
+ }
+
+ break;
+ }
+ case NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG:
+ {
+ QSER_NW_SINGNAL_EVENT_IND_T *ind = (QSER_NW_SINGNAL_EVENT_IND_T*)ind_msg_buf;
+
+ printf("Recv event indication : SIGNAL STRENGTH EVENT\n");
+
+ if(ind==NULL)
+ {
+ printf("ind is NULL\n");
+ break;
+ }
+
+ if(ind->gsm_sig_info_valid)
+ {
+ printf("gsm_sig_info: rssi=%d\n",
+ ind->gsm_sig_info.rssi);
+ }
+
+ if(ind->wcdma_sig_info_valid)
+ {
+ printf("wcdma_sig_info: rssi=%d, ecio=%d\n",
+ ind->wcdma_sig_info.rssi,
+ ind->wcdma_sig_info.ecio);
+ }
+ if(ind->tdscdma_sig_info_valid)
+ {
+ printf("tdscdma_sig_info: rssi=%d, rscp=%d, ecio=%d, sinr=%d\n",
+ ind->tdscdma_sig_info.rssi,
+ ind->tdscdma_sig_info.rscp,
+ ind->tdscdma_sig_info.ecio,
+ ind->tdscdma_sig_info.sinr);
+ }
+ if(ind->lte_sig_info_valid)
+ {
+ printf("lte_sig_info: rssi=%d, rsrq=%d, rsrp=%d, snr=%d\n",
+ ind->lte_sig_info.rssi,
+ ind->lte_sig_info.rsrq,
+ ind->lte_sig_info.rsrp,
+ ind->lte_sig_info.snr);
+ }
+ if(ind->cdma_sig_info_valid)
+ {
+ printf("cdma_sig_info: rssi=%d, ecio=%d\n",
+ ind->cdma_sig_info.rssi,
+ ind->cdma_sig_info.ecio);
+ }
+ if(ind->hdr_sig_info_valid)
+ {
+ printf("hdr_sig_info: rssi=%d, ecio=%d, sinr=%d, io=%d\n",
+ ind->hdr_sig_info.rssi,
+ ind->hdr_sig_info.ecio,
+ ind->hdr_sig_info.sinr,
+ ind->hdr_sig_info.io);
+ }
+ break;
+ }
+ case NW_IND_IMS_REG_EVENT_IND_FLAG:
+ {
+ printf("Recv event indication : IMS REG EVENT\n");
+
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+static int test_nw(void)
+{
+ int cmdIdx = 0;
+ int ret = 0;
+ int tmp_int;
+
+ while(1)
+ {
+ show_group_help(&t_nw_test);
+ printf("please input cmd index(-1 exit): ");
+ ret = scanf("%d", &cmdIdx);
+ if(ret != 1)
+ {
+ char c;
+ while(((c=getchar()) != '\n') && (c != EOF))
+ {
+ ;
+ }
+ continue;
+ }
+ if(cmdIdx == -1)
+ {
+ break;
+ }
+ switch(cmdIdx)
+ {
+ case 0://"qser_nw_client_init"
+ {
+
+ ret = qser_nw_client_init(&h_nw);
+ printf("qser_nw_client_init ret = %d\n", ret);
+ break;
+ }
+ case 1://"qser_nw_set_config"
+ {
+ QSER_NW_CONFIG_INFO_T t_info = {0};
+
+ int mask = 0;
+ printf("please input decimal format number, whose hex format is (TDSCDMA | LTE | EVDO | CDMA | WCDMA | GSM) : \n");
+ if(1 != scanf("%d", &mask))
+ break;
+ t_info.preferred_nw_mode = mask;
+
+ ret = qser_nw_set_config(h_nw, &t_info);
+ printf("qser_nw_set_config ret = %d\n", ret);
+ break;
+ }
+ case 2://"qser_nw_get_operator_name"
+ {
+ QSER_NW_OPERATOR_NAME_INFO_T t_info;
+ ret = qser_nw_get_operator_name(h_nw, &t_info);
+ printf("qser_nw_get_operator_name ret = %d, long_eons=%s, short_eons=%s, mcc=%s, mnc=%s\n", ret,
+ t_info.long_eons, t_info.short_eons, t_info.mcc, t_info.mnc);
+ break;
+ }
+ case 3://"qser_nw_get_reg_status"
+ {
+ QSER_NW_REG_STATUS_INFO_T t_info;
+
+ memset(&t_info, 0, sizeof(QSER_NW_REG_STATUS_INFO_T));
+ ret = qser_nw_get_reg_status(h_nw, &t_info);
+ printf("qser_nw_get_reg_status ret = %d, detail info:\n", ret);
+ if(t_info.voice_registration_valid)
+ {
+ printf("voice_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
+ tech_domain[t_info.voice_registration.tech_domain],
+ radio_tech[t_info.voice_registration.radio_tech],
+ t_info.voice_registration.roaming,
+ t_info.voice_registration.registration_state);
+ }
+ if(t_info.data_registration_valid)
+ {
+ printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
+ tech_domain[t_info.data_registration.tech_domain],
+ radio_tech[t_info.data_registration.radio_tech],
+ t_info.data_registration.roaming,
+ t_info.data_registration.registration_state);
+ }
+ if(t_info.voice_registration_details_3gpp_valid)
+ {
+ printf("voice_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
+ tech_domain[t_info.voice_registration_details_3gpp.tech_domain],
+ radio_tech[t_info.voice_registration_details_3gpp.radio_tech],
+ t_info.voice_registration_details_3gpp.mcc,
+ t_info.voice_registration_details_3gpp.mnc,
+ t_info.voice_registration_details_3gpp.roaming,
+ t_info.voice_registration_details_3gpp.forbidden,
+ t_info.voice_registration_details_3gpp.cid,
+ t_info.voice_registration_details_3gpp.lac,
+ t_info.voice_registration_details_3gpp.psc,
+ t_info.voice_registration_details_3gpp.tac);
+ }
+ if(t_info.data_registration_details_3gpp_valid)
+ {
+ printf("data_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
+ tech_domain[t_info.data_registration_details_3gpp.tech_domain],
+ radio_tech[t_info.data_registration_details_3gpp.radio_tech],
+ t_info.data_registration_details_3gpp.mcc,
+ t_info.data_registration_details_3gpp.mnc,
+ t_info.data_registration_details_3gpp.roaming,
+ t_info.data_registration_details_3gpp.forbidden,
+ t_info.data_registration_details_3gpp.cid,
+ t_info.data_registration_details_3gpp.lac,
+ t_info.data_registration_details_3gpp.psc,
+ t_info.data_registration_details_3gpp.tac);
+ }
+
+ if(t_info.voice_registration_details_3gpp2_valid)
+ {
+ printf("voice_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, sid=%d, nid=%d, bsid=%d\n",
+ tech_domain[t_info.voice_registration_details_3gpp2.tech_domain],
+ radio_tech[t_info.voice_registration_details_3gpp2.radio_tech],
+ t_info.voice_registration_details_3gpp2.mcc,
+ t_info.voice_registration_details_3gpp2.mnc,
+ t_info.voice_registration_details_3gpp2.roaming,
+ t_info.voice_registration_details_3gpp2.forbidden,
+ t_info.voice_registration_details_3gpp2.sid,
+ t_info.voice_registration_details_3gpp2.nid,
+ t_info.voice_registration_details_3gpp2.bsid);
+ }
+
+ if(t_info.data_registration_details_3gpp2_valid)
+ {
+ printf("data_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, sid=%d, nid=%d, bsid=%d\n",
+ tech_domain[t_info.data_registration_details_3gpp2.tech_domain],
+ radio_tech[t_info.data_registration_details_3gpp2.radio_tech],
+ t_info.data_registration_details_3gpp2.mcc,
+ t_info.data_registration_details_3gpp2.mnc,
+ t_info.data_registration_details_3gpp2.roaming,
+ t_info.data_registration_details_3gpp2.forbidden,
+ t_info.data_registration_details_3gpp2.sid,
+ t_info.data_registration_details_3gpp2.nid,
+ t_info.data_registration_details_3gpp2.bsid);
+ }
+
+ break;
+ }
+ case 12://"qser_nw_client_deinit"
+ {
+ ret = qser_nw_client_deinit(h_nw);
+ printf("qser_nw_client_deinit ret = %d\n", ret);
+ break;
+ }
+ case 4 :
+ {
+ ret = qser_nw_add_rx_msg_handler(h_nw, nw_event_ind_handler, NULL);
+ printf("qser_nw_add_rx_msg_handler, ret=%d\n", ret);
+ break;
+ }
+ case 5 :
+ {
+ QSER_NW_SIGNAL_STRENGTH_INFO_T t_info;
+ ret = qser_nw_get_signal_strength(h_nw, &t_info);
+ printf("qser_nw_get_signal_strength, ret=%d\n", ret);
+ if(ret==0)
+ {
+ printf("qser_solicited_signal_strength gsm_sig_info_valid = %d\n"
+ " gsm_sig_info.rssi = %d\n"
+ " wcdma _sig_info_valid = %d\n"
+ " wcdma_sig_info.rssi = %d\n"
+ " wcdma_sig_info.ecio = %d\n"
+ " tdscdma_sig_info_valid = %d\n"
+ " lte_sig_info_valid = %d\n"
+ " lte_sig_info.rssi = %d\n"
+ " lte_sig_info.rsrp = %d\n"
+ " lte_sig_info.rsrq = %d\n"
+ " lte_sig_info.snr = %d\n"
+ " cdma_sig_info_valid = %d\n"
+ " hdr_sig_info_valid = %d\n"
+ " nr_sig_info_valid = %d\n"
+ " nr_sig_info.ssRsrp = %d\n"
+ " nr_sig_info.ssRsrq = %d\n"
+ " nr_sig_info.ssSinr = %d\n"
+ " nr_sig_info.csiRsrp = %d\n"
+ " nr_sig_info.csiRsrq = %d\n"
+ " nr_sig_info.csiSinr = %d\n",
+ t_info.gsm_sig_info_valid, t_info.gsm_sig_info.rssi,
+ t_info.wcdma_sig_info_valid, t_info.wcdma_sig_info.rssi, t_info.wcdma_sig_info.ecio,
+ t_info.tdscdma_sig_info_valid,
+ t_info.lte_sig_info_valid, t_info.lte_sig_info.rssi, t_info.lte_sig_info.rsrp, t_info.lte_sig_info.rsrq, t_info.lte_sig_info.snr,
+ t_info.cdma_sig_info_valid,
+ t_info.hdr_sig_info_valid,
+ t_info.nr_sig_info_valid, t_info.nr_sig_info.ssRsrp, t_info.nr_sig_info.ssRsrq, t_info.nr_sig_info.ssSinr,
+ t_info.nr_sig_info.csiRsrp, t_info.nr_sig_info.csiRsrq, t_info.nr_sig_info.csiSinr);
+
+ }
+ break;
+ }
+ case 7 :
+ {
+ QSER_NW_OOS_CONFIG_INFO_T t_info;
+ int type = 0;
+ printf("please input you want query oos config's type (0: fast network scan config; 1: full band network scan config ) : \n");
+ if(1 != scanf("%d", &type))
+ break;
+ t_info.type = type;
+ ret = qser_nw_get_oos_config(h_nw, &t_info);
+ printf("qser_nw_get_oos_config, ret=%d\n", ret);
+ if(ret==0)
+ {
+ if(t_info.type == QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN)
+ {
+ printf("qser_nw_get_oos_config t_min = %d\n"
+ " t_step = %d\n"
+ " t_num = %d\n"
+ " t_max = %d\n",
+ t_info.u.full_band_scan_info.t_min, t_info.u.full_band_scan_info.t_step,
+ t_info.u.full_band_scan_info.t_num, t_info.u.full_band_scan_info.t_max);
+ }
+ else if(t_info.type == QSER_NW_OOS_CFG_TYPE_FAST_SCAN)
+ {
+ printf("qser_nw_get_oos_config enable = %d\n"
+ " time_interval = %d\n",
+ t_info.u.fast_can_info.enable, t_info.u.fast_can_info.time_interval);
+ }
+ else
+ {
+ printf("qser_nw_get_oos_config tyep is %d, ret is ok",t_info.type);
+ }
+
+ }
+ break;
+ }
+ case 6 :
+ {
+ QSER_NW_OOS_CONFIG_INFO_T t_info;
+ int type = 0;
+ printf("please input you want set oos config's type (0: fast network scan config; 1: full band network scan config ) : \n");
+ if(1 != scanf("%d", &type))
+ break;
+ t_info.type = type;
+ if(t_info.type == QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN)
+ {
+ printf("please input t_min: \n");
+ if(1 != scanf("%d", &(t_info.u.full_band_scan_info.t_min)))
+ break;
+ printf("please input t_step: \n");
+ if(1 != scanf("%d", &(t_info.u.full_band_scan_info.t_step)))
+ break;
+ printf("please input t_num: \n");
+ if(1 != scanf("%d", &(t_info.u.full_band_scan_info.t_num)))
+ break;
+ printf("please input t_max: \n");
+ if(1 != scanf("%d", &(t_info.u.full_band_scan_info.t_max)))
+ break;
+ ret = qser_nw_set_oos_config(h_nw, &t_info);
+ printf("qser_nw_get_oos_config, ret=%d\n", ret);
+ }
+ else if(t_info.type==QSER_NW_OOS_CFG_TYPE_FAST_SCAN)
+ {
+ printf("please input enable: \n");
+ if(1 != scanf("%d", &tmp_int))
+ break;
+ t_info.u.fast_can_info.enable = (char)tmp_int;
+ printf("please input time_interval: \n");
+ if(1 != scanf("%d", &tmp_int))
+ break;
+ t_info.u.fast_can_info.time_interval = (uint16_t)tmp_int;
+ ret = qser_nw_set_oos_config(h_nw, &t_info);
+ printf("qser_nw_get_oos_config, ret=%d\n", ret);
+ }
+ else
+ {
+ ret = qser_nw_set_oos_config(h_nw, &t_info);
+ printf("qser_nw_get_oos_config, ret=%d\n", ret);
+ }
+ break;
+ }
+ case 9://"qser_nw_get_rf_mode"
+ {
+ E_QSER_NW_RF_MODE_TYPE_T rf_mode;
+ ret = qser_nw_get_rf_mode(h_nw, &rf_mode);
+ printf("qser_nw_get_rf_mode ret = %d, rf mode=%d\n", ret, rf_mode);
+ break;
+ }
+ case 8://"qser_nw_set_rf_mode"
+ {
+ E_QSER_NW_RF_MODE_TYPE_T rf_mode;
+ printf("please input you want set rf mode (0: cfun 0; 1: cfun 1; 4: flight mode \n");
+ if(1 != scanf("%d", &tmp_int))
+ break;
+ rf_mode = (E_QSER_NW_RF_MODE_TYPE_T)tmp_int;
+ ret = qser_nw_set_rf_mode(h_nw, rf_mode);
+ printf("qser_nw_set_rf_mode %d ret = %dn",rf_mode, ret);
+ break;
+ }
+ case 10://"qser_nw_set_ims_enable"
+ {
+ E_QSER_NW_IMS_MODE_TYPE_T ims_mode;
+ printf("please input you want set ims mode (0: off; 1: volte enable \n");
+ if(1 != scanf("%d", &tmp_int))
+ break;
+ ims_mode = (E_QSER_NW_IMS_MODE_TYPE_T)tmp_int;
+ ret = qser_nw_set_ims_enable(h_nw, ims_mode);
+ printf("qser_nw_set_ims_enable %d ret = %dn",ims_mode, ret);
+ break;
+ }
+ case 11://"qser_nw_get_ims_reg_status"
+ {
+ QSER_NW_IMS_REG_STATUS_INFO_T t_info;
+ memset(&t_info, 0, sizeof(QSER_NW_IMS_REG_STATUS_INFO_T));
+ ret = qser_nw_get_ims_reg_status(h_nw, &t_info);
+ printf("qser_nw_get_ims_reg_status ret = %d, detail info:\n", ret);
+ if(ret == 0)
+ {
+ printf("ims_registration: registration_state=%d\n",
+ t_info.registration_state);
+ }
+ break;
+ }
+ default:
+ {
+ show_group_help(&t_nw_test);
+ }
+ }
+ }
+ return 0;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-sim-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-sim-demo.cpp
new file mode 100755
index 0000000..3dc4ca2
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-qser-sim-demo.cpp
@@ -0,0 +1,616 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <pthread.h>
+#include <unistd.h>
+#include <dlfcn.h>
+#include <stdint.h>
+
+#include"lynq-qser-sim-demo.h"
+#include "mbtk_log.h"
+
+#define BUF_SIZE 32
+#define BUF_PIN 8
+#define VER_SIZE 128
+
+typedef uint32_t sim_client_handle_type;
+
+//sim_client_handle_type ph_sim = 2023;
+sim_client_handle_type h_sim = 2023;
+int flag_init = 0;
+
+int (*qser_sim_client_init)(sim_client_handle_type *ph_sim);
+int (*qser_sim_client_deinit)(sim_client_handle_type h_sim);
+int (*qser_sim_getimsi)(
+ sim_client_handle_type h_sim,
+ QSER_SIM_APP_ID_INFO_T *pt_info, ///< [IN] The SIM identifier info.
+ char *imsi, ///< [OUT] IMSI buffer
+ size_t imsiLen ///< [IN] IMSI buffer length
+);
+
+int (*qser_sim_geticcid)
+(
+ sim_client_handle_type h_sim,
+ QSER_SIM_SLOT_ID_TYPE_T simId, ///< [IN] The SIM identifier.
+ char *iccid, ///< [OUT] ICCID
+ size_t iccidLen ///< [IN] ICCID buffer length
+);
+
+int (*qser_sim_getphonenumber)
+(
+ sim_client_handle_type h_sim,
+ QSER_SIM_APP_ID_INFO_T *pt_info, ///< [IN] The SIM identifier.
+ char *phone_num, ///< [OUT] phone number
+ size_t phoneLen ///< [IN] phone number buffer length
+);
+int (*qser_sim_verifypin)(sim_client_handle_type h_sim, QSER_SIM_VERIFY_PIN_INFO_T *pt_info);
+int (*qser_sim_changepin)(sim_client_handle_type h_sim, QSER_SIM_CHANGE_PIN_INFO_T *pt_info);
+int (*qser_sim_unblockpin)(sim_client_handle_type h_sim, QSER_SIM_UNBLOCK_PIN_INFO_T *pt_info);
+int (*qser_sim_enablepin)(sim_client_handle_type h_sim, QSER_SIM_ENABLE_PIN_INFO_T *pt_info);
+int (*qser_sim_disablepin)(sim_client_handle_type h_sim, QSER_SIM_DISABLE_PIN_INFO_T *pt_info);
+int (*qser_sim_getcardstatus)(sim_client_handle_type h_sim, QSER_SIM_SLOT_ID_TYPE_T simId, QSER_SIM_CARD_STATUS_INFO_T *pt_info);
+int (*qser_sim_getimei)(sim_client_handle_type h_sim, char *imei);
+int (*qser_get_imei_and_sv)(sim_client_handle_type h_sim,char *imei, char*sv);
+int (*qser_reset_modem)(sim_client_handle_type h_sim);
+int (*qser_get_version)(sim_client_handle_type h_sim, char *buf);
+int (*qser_reset_sim)(sim_client_handle_type h_sim);
+int (*qser_sim_addrxmsghandler)(QSER_SIM_RxMsgHandlerFunc_t handlerPtr);
+
+
+typedef struct
+{
+ int cmdIdx;
+ const char *funcName;
+} st_api_test_case;
+
+//for server test
+st_api_test_case at_api_testcases[] =
+{
+ {0, "qser_sim_init"},
+ {1, "qser_get_imsi"},
+ {2, "qser_get_iccid"},
+ {3, "qser_get_phonenumber"},
+ {4, "qser_verify_pin"},
+ {5, "qser_change_pin"},
+ {6, "qser_unlock_pin"},
+ {7, "qser_enable_pin"},
+ {8, "qser_disable_pin"},
+ {9, "qser_get_sim_status"},
+ {10, "qser_get_imei"},
+ {11, "qser_get_imei_and_sv"},
+ {12, "qser_reset_modem"},
+ {13, "qser_get_version"},
+ {14, "qser_reset_sim"},
+ {15, "qser_sim_addrxmsghandler"},
+ {16, "qser_deinit_sim"},
+ {-1, NULL}
+};
+
+void print_help(void)
+{
+ int i;
+ printf("Supported test cases:\n");
+ for(i = 0; ; i++)
+ {
+ if(at_api_testcases[i].cmdIdx == -1)
+ {
+ break;
+ }
+ printf("%d:\t%s\n", at_api_testcases[i].cmdIdx, at_api_testcases[i].funcName);
+ }
+}
+
+void qser_sim_handler(QSER_SIM_MsgRef msgRef) {
+ printf("[%s-%d] sim, state = 0x%x========\n", __FUNCTION__, __LINE__, msgRef->e_card_state);
+}
+
+int main(int argc, char const *argv[])
+{
+ int cmdIdx = 0;
+ int res = 0;
+
+ mbtk_log_init((char*)"radio", (char*)"MBTK");
+
+ const char *lynq_libpath_sim = (char*)"/lib/liblynq-qser-sim.so";
+ void *dlHandle_sim = dlopen(lynq_libpath_sim, RTLD_NOW);
+ if (dlHandle_sim == NULL)
+ {
+ printf("dlopen dlHandle_sim failed: %s\n", dlerror());
+ exit(EXIT_FAILURE);
+ }
+
+ print_help();
+ while(1)
+ {
+ printf("\nplease input cmd index(-1 exit): ");
+ if(1 != scanf("%d", &cmdIdx))
+ break;
+ if(cmdIdx == -1)
+ {
+ break;
+ }
+
+ switch(cmdIdx)
+ {
+ //"qser_sim_init"
+ case 0:
+ {
+ if(flag_init == 1)
+ {
+ printf("init is already\n");
+ break;
+ }
+ else{
+ //int token;
+ //printf("input token\n");
+ //scanf("%d", &token);
+ qser_sim_client_init = (int(*)(sim_client_handle_type *h_sim))dlsym(dlHandle_sim,"qser_sim_client_init");
+ if(NULL != qser_sim_client_init)
+ {
+ res = qser_sim_client_init(&h_sim);
+ if(res == 0)
+ {
+ printf("Run qser_sim_client_init\n");
+ flag_init = 1;
+ }else{
+ printf("qser_sim_client_init error\n");
+ }
+ }else{
+ printf("qser_sim_client_init dlsym error\n");
+ }
+ break;
+ }
+ }
+
+ //"qser_sim_getimsi"
+ case 1:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char imsi[BUF_SIZE] = {0};
+ QSER_SIM_APP_ID_INFO_T pt_info;
+ qser_sim_getimsi = (int(*)(sim_client_handle_type h_sim, QSER_SIM_APP_ID_INFO_T *pt_info, char *imsi, size_t imsiLen))dlsym(dlHandle_sim,"qser_sim_getimsi");
+ if(NULL != qser_sim_getimsi)
+ {
+ res = qser_sim_getimsi(h_sim, &pt_info, imsi, BUF_SIZE);
+ if(res == 0)
+ {
+ printf("imsi is %s!!!\n",imsi);
+ }else{
+ printf("get imsi error, res = %d\n", res);
+ }
+ }else{
+ printf("qser_sim_getimsi dlsym error\n");
+ }
+ }
+ break;
+ }
+
+ //"qser_get_iccid"
+ case 2:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char iccid[BUF_SIZE] = {0};
+ qser_sim_geticcid = (int(*)(sim_client_handle_type h_sim, QSER_SIM_SLOT_ID_TYPE_T simId, char *iccid, size_t iccidLen))dlsym(dlHandle_sim,"qser_sim_geticcid");
+ if(NULL != qser_sim_geticcid)
+ {
+ res = qser_sim_geticcid(h_sim, QSER_SIM_SLOT_ID_1, iccid, BUF_SIZE);
+ if(res == 0)
+ {
+ printf("get iccid success!!! iccid is %s\n",iccid);
+ }else{
+ printf("get iccid error, res = %d\n", res);
+ }
+ }else{
+ printf("qser_sim_geticcid dlsym error\n");
+ }
+ }
+ break;
+ }
+ //qser_get_phonenumber
+ case 3:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char phonenumber[BUF_SIZE] = "";
+ QSER_SIM_APP_ID_INFO_T pt_info;
+ qser_sim_getphonenumber = (int(*)(sim_client_handle_type h_sim, QSER_SIM_APP_ID_INFO_T *pt_info, char *phone_num, size_t phoneLen))dlsym(dlHandle_sim,"qser_sim_getphonenumber");
+ if(NULL != qser_sim_getphonenumber)
+ {
+ res = qser_sim_getphonenumber(h_sim, &pt_info, phonenumber, BUF_SIZE);
+ if(res == 0)
+ {
+ printf("get phonenumber success!!! phonenumber is %s\n",phonenumber);
+ }else{
+ printf("get phonenumber error, res = %d\n", res);
+ }
+ }else{
+ printf("qser_sim_getphonenumber dlsym error\n");
+ }
+ }
+ break;
+ }
+ //qser_verify_pin
+ case 4:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char pin[BUF_PIN] = {0};
+ QSER_SIM_VERIFY_PIN_INFO_T pt_info;
+ printf("input pin\n");
+ if(1 != scanf("%s", pin))
+ break;
+ strncpy(pt_info.pin_value, pin, BUF_PIN);
+ printf("pin_value = %s , pin = %s\n", pt_info.pin_value, pin);
+
+ qser_sim_verifypin = (int(*)(sim_client_handle_type h_sim, QSER_SIM_VERIFY_PIN_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_verifypin");
+ if(NULL != qser_sim_verifypin)
+ {
+ res = qser_sim_verifypin(h_sim, &pt_info);
+ if(res == 0)
+ {
+ printf("verify pin success!!!\n");
+ }else{
+ printf("verify pin error, res = %d\n", res);
+ }
+ }else{
+ printf("qser_sim_verifypin dlsym error\n");
+ }
+ }
+ break;
+ }
+ //qser_change_pin
+ case 5:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char old_pin[BUF_PIN] = {0};
+ QSER_SIM_CHANGE_PIN_INFO_T pt_info;
+ printf("input old pin\n");
+ if(1 != scanf("%s", old_pin))
+ break;
+ char new_pin[BUF_PIN] = {0};
+ printf("input new pin\n");
+ if(1 != scanf("%s", new_pin))
+ break;
+ strncpy(pt_info.old_pin_value, old_pin, BUF_PIN);
+ strncpy(pt_info.new_pin_value, new_pin, BUF_PIN);
+ printf("pt_info.old_pin_value = %s, old_pin = %s\n", pt_info.old_pin_value, old_pin);
+ printf("pt_info.new_pin_value = %s, new_pin = %s\n", pt_info.new_pin_value, new_pin);
+
+ qser_sim_changepin = (int(*)(sim_client_handle_type h_sim, QSER_SIM_CHANGE_PIN_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_changepin");
+ if(NULL != qser_sim_changepin)
+ {
+ res = qser_sim_changepin(h_sim, &pt_info);
+ if(res == 0)
+ {
+ printf("change pin success!!!\n");
+ }else{
+ printf("change pin error, res = %d\n", res);
+ }
+ }else{
+ printf("lynq_change_pin dlsym error\n");
+ }
+ }
+ break;
+ }
+ //qser_unlock_pin
+ case 6:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char puk[BUF_PIN] = {0};
+ QSER_SIM_UNBLOCK_PIN_INFO_T pt_info;
+ printf("input puk\n");
+ if(1 != scanf("%s", puk))
+ break;
+ char new_pin[BUF_PIN] = {0};
+ printf("input new pin\n");
+ if(1 != scanf("%s", new_pin))
+ break;
+ memset(pt_info.puk_value, 0, sizeof(pt_info.puk_value));
+ memset(pt_info.new_pin_value, 0, sizeof(pt_info.new_pin_value));
+ strncpy(pt_info.puk_value, puk, BUF_PIN);
+ strncpy(pt_info.new_pin_value, new_pin, BUF_PIN);
+ printf("pt_info.puk_value = %s, puk = %s\n", pt_info.puk_value, puk);
+ printf("pt_info.new_pin_value = %s, new_pin = %s\n", pt_info.new_pin_value, new_pin);
+
+ qser_sim_unblockpin = (int(*)(sim_client_handle_type h_sim, QSER_SIM_UNBLOCK_PIN_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_unblockpin");
+ if(NULL != qser_sim_unblockpin)
+ {
+ res = qser_sim_unblockpin(h_sim, &pt_info);
+ if(res == 0)
+ {
+ printf("unlock pin success!!!\n");
+ }else{
+ printf("unlock pin error, res = %d\n", res);
+ }
+ }else{
+ printf("qser_sim_unblockpin dlsym error\n");
+ }
+ }
+ break;
+ }
+ //qser_enable_pin
+ case 7:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char pin[BUF_PIN] = {0};
+ QSER_SIM_ENABLE_PIN_INFO_T pt_info;
+ printf("input pin\n");
+ if(1 != scanf("%s", pin))
+ break;
+ strncpy(pt_info.pin_value, pin, BUF_PIN);
+
+ qser_sim_enablepin = (int(*)(sim_client_handle_type h_sim, QSER_SIM_ENABLE_PIN_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_enablepin");
+ if(NULL != qser_sim_enablepin)
+ {
+ res = qser_sim_enablepin(h_sim, &pt_info);
+ if(res == 0)
+ {
+ printf("pin enabled!!!\n");
+ }else{
+ printf("pin enable error, res =%d\n", res);
+ }
+ }else{
+ printf("qser_sim_enablepin dlsym error\n");
+ }
+ }
+ break;
+ }
+ //qser_disable_pin
+ case 8:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char pin[BUF_PIN] = {0};
+ QSER_SIM_ENABLE_PIN_INFO_T pt_info;
+ printf("input pin\n");
+ if(1 != scanf("%s", pin))
+ break;
+ strncpy(pt_info.pin_value, pin, BUF_PIN);
+
+ qser_sim_disablepin = (int(*)(sim_client_handle_type h_sim, QSER_SIM_DISABLE_PIN_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_disablepin");
+ if(NULL != qser_sim_disablepin)
+ {
+ res = qser_sim_disablepin(h_sim, &pt_info);
+ if(res == 0)
+ {
+ printf("pin disnabled!!!\n");
+ }else{
+ printf("pin disable error,res = %d\n", res);
+ }
+ }else{
+ printf("qser_sim_disablepin dlsym error\n");
+ }
+ }
+ break;
+ }
+ //qser_get_sim_status
+ case 9:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ QSER_SIM_CARD_STATUS_INFO_T pt_info;
+
+ qser_sim_getcardstatus = (int(*)(sim_client_handle_type h_sim, QSER_SIM_SLOT_ID_TYPE_T simId, QSER_SIM_CARD_STATUS_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_getcardstatus");
+ if(NULL != qser_sim_getcardstatus)
+ {
+ res = qser_sim_getcardstatus(h_sim, QSER_SIM_SLOT_ID_1, &pt_info);
+ if(res == 0)
+ {
+ printf("state is 0x%x !!!\n",pt_info.e_card_state);
+ }else{
+ printf("get imsi error,res = %d\n", res);
+ }
+ }else{
+ printf("qser_sim_getcardstatus dlsym error\n");
+ }
+ }
+ break;
+ }
+ //qser_deinit_sim
+ case 10:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char imei[BUF_SIZE]="";
+ qser_sim_getimei = (int(*)(sim_client_handle_type h_sim, char *imei))dlsym(dlHandle_sim,"qser_sim_getimei");
+ if(NULL != qser_sim_getimei)
+ {
+ res = qser_sim_getimei(h_sim, imei);
+ if(res == 0)
+ {
+ printf("get imei success!!!\n");
+ }else{
+ printf("get imei error, res = %d\n", res);
+ }
+ }else{
+ printf("qser_sim_getimei dlsym error\n");
+ }
+ }
+ //flag_init = 0;
+ break;
+ }
+ //qser_get_imei_and_sv
+ case 11:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char imei[BUF_SIZE]="";
+ char sv[BUF_SIZE]="";
+ qser_get_imei_and_sv = (int(*)(sim_client_handle_type h_sim, char *imei, char *sv))dlsym(dlHandle_sim,"qser_get_imei_and_sv");
+ if(NULL != qser_get_imei_and_sv)
+ {
+ res = qser_get_imei_and_sv(h_sim, imei, sv);
+ if(res == 0)
+ {
+ printf("get imei and sv success!!!\n");
+ }else{
+ printf("get imei and sv error, res = %d\n", res);
+ }
+ }else{
+ printf("qser_get_imei_and_sv dlsym error\n");
+ }
+ }
+ //flag_init = 0;
+ break;
+ }
+ //qser_reset_modem
+ case 12:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ qser_reset_modem = (int(*)(sim_client_handle_type h_sim))dlsym(dlHandle_sim,"qser_reset_modem");
+ if(NULL != qser_reset_modem)
+ {
+ res = qser_reset_modem(h_sim);
+ if(res == 0)
+ {
+ printf("reset modem success!!!\n");
+ }else{
+ printf("reset modem error, res = %d\n", res);
+ }
+ }else{
+ printf("qser_reset_modem dlsym error\n");
+ }
+ }
+ //flag_init = 0;
+ break;
+ }
+ //qser_get_version
+ case 13:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char buf[VER_SIZE]="";
+ qser_get_version = (int(*)(sim_client_handle_type h_sim, char *buf))dlsym(dlHandle_sim,"qser_get_version");
+ if(NULL != qser_get_version)
+ {
+ res = qser_get_version(h_sim, buf);
+ if(res == 0)
+ {
+ printf("get version success!!!\n");
+ }else{
+ printf("get version error, res = %d\n", res);
+ }
+ }else{
+ printf("qser_get_version dlsym error\n");
+ }
+ }
+ //flag_init = 0;
+ break;
+ }
+ //qser_reset_sim
+ case 14:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ qser_reset_sim = (int(*)(sim_client_handle_type h_sim))dlsym(dlHandle_sim,"qser_reset_sim");
+ if(NULL != qser_reset_sim)
+ {
+ res = qser_reset_sim(h_sim);
+ if(res == 0)
+ {
+ printf("reset sim success!!!\n");
+ }else{
+ printf("reset sim error, res = %d\n", res);
+ }
+ }else{
+ printf("qser_reset_sim dlsym error\n");
+ }
+ }
+ //flag_init = 0;
+ break;
+ }
+ case 15://qser_sim_addrxmsghandler
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ qser_sim_addrxmsghandler = (int(*)(QSER_SIM_RxMsgHandlerFunc_t handlerPtr))dlsym(dlHandle_sim,"qser_sim_addrxmsghandler");
+ if(NULL != qser_sim_addrxmsghandler)
+ {
+ res = qser_sim_addrxmsghandler(qser_sim_handler);
+ if(res == 0)
+ {
+ printf("sim addrxmsghandler success is!!!\n");
+ }else{
+ printf("sim addrxmsghandler errors, res = %d\n", res);
+ }
+ }else{
+ printf("qser_sim_addrxmsghandler dlsym error\n");
+ }
+ }
+ //flag_init = 0;
+ break;
+ }
+ //qser_deinit_sim
+ case 16:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ qser_sim_client_deinit = (int(*)(sim_client_handle_type h_sim))dlsym(dlHandle_sim,"qser_sim_client_deinit");
+ if(NULL != qser_sim_client_deinit)
+ {
+ res = qser_sim_client_deinit(h_sim);
+ if(res == 0)
+ {
+ printf("sim deinit success is!!!\n");
+ }else{
+ printf("sim deint errors, res = %d\n", res);
+ }
+ }else{
+ printf("qser_sim_client_deinit dlsym error\n");
+ }
+ }
+ flag_init = 0;
+ break;
+ }
+ default:
+ print_help();
+ break;
+ }
+
+ }
+
+ return 0;
+
+
+}
+
+
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-sim-demo.h b/mbtk/test/liblynq_lib_t106/lynq-qser-sim-demo.h
new file mode 100755
index 0000000..1a4829b
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-qser-sim-demo.h
@@ -0,0 +1,171 @@
+#define QSER_SIM_IMSI_LEN_MAX 16 /** Maximum length of IMSI data. */
+#define QSER_SIM_ICCID_LEN_MAX 20 /** Maximum length of ICCID data. */
+
+
+typedef enum
+{
+ E_QSER_SUCCESS = 0, /**< Success. */
+ E_QSER_ERROR_BADPARM = 4, /**< Bad parameter. */
+}E_QSER_ERROR_CODE_T;
+
+typedef enum
+{
+ QSER_SIM_SLOT_ID_1 = 0xB01, /**< Identify card in slot 1. */
+ QSER_SIM_SLOT_ID_2 = 0xB02, /**< Identify card in slot 2. */
+}QSER_SIM_SLOT_ID_TYPE_T;
+
+typedef enum
+{
+ QSER_SIM_APP_TYPE_UNKNOWN = 0xB00, /**< Unknown application type */
+ QSER_SIM_APP_TYPE_3GPP = 0xB01, /**< Identify the SIM/USIM application on the card. */
+ QSER_SIM_APP_TYPE_3GPP2 = 0xB02, /**< Identify the RUIM/CSIM application on the card. */
+ QSER_SIM_APP_TYPE_ISIM = 0xB03, /**< Identify the ISIM application on the card. */
+}QSER_SIM_APP_TYPE_T;
+
+typedef struct
+{
+ QSER_SIM_SLOT_ID_TYPE_T e_slot_id; /**< Indicates the slot to be used. */
+ QSER_SIM_APP_TYPE_T e_app; /**< Indicates the type of the application. */
+}QSER_SIM_APP_ID_INFO_T; /* Type */
+
+#define QSER_SIM_PIN_LEN_MAX 8+1 /** Maximum length of PIN data. */
+
+typedef enum
+{
+ QSER_SIM_PIN_ID_1 = 0xB01, /**< Level 1 user verification. */
+ QSER_SIM_PIN_ID_2 = 0xB02, /**< Level 2 user verification. */
+}QSER_SIM_PIN_ID_TYPE_T;
+
+typedef struct
+{
+ QSER_SIM_APP_ID_INFO_T app_info; /**< Application identification information. */
+ QSER_SIM_PIN_ID_TYPE_T pin_id; /**< PIN ID. */
+ uint32_t pin_value_len; /**< Must be set to the number of elements in pin_value. */
+ char pin_value[QSER_SIM_PIN_LEN_MAX]; /* Value of the PIN */
+}QSER_SIM_VERIFY_PIN_INFO_T;
+
+typedef struct
+{
+ QSER_SIM_APP_ID_INFO_T app_info; /**< Application identification information. */
+ QSER_SIM_PIN_ID_TYPE_T pin_id; /**< PIN ID. */
+ uint32_t old_pin_value_len; /**< Must be set to the number of elements in old_pin_value. */
+ char old_pin_value[QSER_SIM_PIN_LEN_MAX]; /**< Value of the old PIN as a sequence of ASCII characters. */
+ uint32_t new_pin_value_len; /**< Must be set to the number of elements in new_pin_value. */
+ char new_pin_value[QSER_SIM_PIN_LEN_MAX]; /**< Value of the new PIN as a sequence of ASCII characters. */
+}QSER_SIM_CHANGE_PIN_INFO_T;
+
+typedef struct
+{
+ QSER_SIM_APP_ID_INFO_T app_info; /**< Application identification information. */
+ QSER_SIM_PIN_ID_TYPE_T pin_id; /**< PIN ID. */
+ uint32_t puk_value_len; /**< Must be set to the number of elements in puk_value. */
+ char puk_value[QSER_SIM_PIN_LEN_MAX]; /**< Value of the PUK as a sequence of ASCII characters. */
+ uint32_t new_pin_value_len; /**< Must be set to the number of elements in new_pin_value. */
+ char new_pin_value[QSER_SIM_PIN_LEN_MAX]; /**< Value of the new PIN as a sequence of ASCII characters. */
+}QSER_SIM_UNBLOCK_PIN_INFO_T;
+
+/** Enables the PIN on an application. */
+typedef QSER_SIM_VERIFY_PIN_INFO_T QSER_SIM_ENABLE_PIN_INFO_T; //Same
+
+/** Disables the PIN of an application, */
+typedef QSER_SIM_VERIFY_PIN_INFO_T QSER_SIM_DISABLE_PIN_INFO_T; //Same
+
+
+typedef enum
+{
+ QSER_SIM_PERSO_FEATURE_TYPE_UNKNOWN = 0xB00, /**< Unknown personalization feature. */
+ QSER_SIM_PERSO_FEATURE_TYPE_3GPP_NETWORK = 0xB01, /**< Featurization based on 3GPP MCC and MNC. */
+ QSER_SIM_PERSO_FEATURE_TYPE_3GPP_NETWORK_SUBSET = 0xB02, /**< Featurization based on 3GPP MCC, MNC, and IMSI digits 6 and 7. */
+ QSER_SIM_PERSO_FEATURE_TYPE_3GPP_SERVICE_PROVIDER = 0xB03, /**< Featurization based on 3GPP MCC, MNC, and GID1. */
+ QSER_SIM_PERSO_FEATURE_TYPE_3GPP_CORPORATE = 0xB04, /**< Featurization based on 3GPP MCC, MNC, GID1, and GID2. */
+ QSER_SIM_PERSO_FEATURE_TYPE_3GPP_SIM = 0xB05, /**< Featurization based on the 3GPP IMSI. */
+ QSER_SIM_PERSO_FEATURE_TYPE_3GPP2_NETWORK_TYPE_1 = 0xB06, /**< Featurization based on 3GPP2 MCC and MNC. */
+ QSER_SIM_PERSO_FEATURE_TYPE_3GPP2_NETWORK_TYPE_2 = 0xB07, /**< Featurization based on 3GPP2 IRM code. */
+ QSER_SIM_PERSO_FEATURE_TYPE_3GPP2_RUIM = 0xB08, /**< Featurization based on 3GPP2 IMSI_M. */
+}QSER_SIM_PERSO_FEATURE_TYPE_T;
+
+typedef enum
+{
+ QSER_SIM_CARD_STATE_UNKNOWN = 0xB01, /**< Card state unknown. */
+ QSER_SIM_CARD_STATE_ABSENT = 0xB02, /**< Card is absent. */
+ QSER_SIM_CARD_STATE_PRESENT = 0xB03, /**< Card is present. */
+ QSER_SIM_CARD_STATE_ERROR_UNKNOWN = 0xB04, /**< Unknown error state. */
+ QSER_SIM_CARD_STATE_ERROR_POWER_DOWN = 0xB05, /**< Power down. */
+ QSER_SIM_CARD_STATE_ERROR_POLL_ERROR = 0xB06, /**< Poll error. */
+ QSER_SIM_CARD_STATE_ERROR_NO_ATR_RECEIVED = 0xB07, /**< Failed to receive an answer to reset. */
+ QSER_SIM_CARD_STATE_ERROR_VOLT_MISMATCH = 0xB08, /**< Voltage mismatch. */
+ QSER_SIM_CARD_STATE_ERROR_PARITY_ERROR = 0xB09, /**< Parity error. */
+ QSER_SIM_CARD_STATE_ERROR_SIM_TECHNICAL_PROBLEMS= 0xB0A, /**< Card returned technical problems. */
+}QSER_SIM_CARD_STATE_TYPE_T; /**< Card state. */
+
+typedef enum
+{
+ QSER_SIM_CARD_TYPE_UNKNOWN = 0xB00, /**< Unidentified card type. */
+ QSER_SIM_CARD_TYPE_ICC = 0xB01, /**< Card of SIM or RUIM type. */
+ QSER_SIM_CARD_TYPE_UICC = 0xB02, /**< Card of USIM or CSIM type. */
+}QSER_SIM_CARD_TYPE_T;
+
+typedef enum
+{
+ QSER_SIM_PROV_STATE_NONE = 0xB00, /**< Nonprovisioning. */
+ QSER_SIM_PROV_STATE_PRI = 0xB01, /**< Primary provisioning subscription. */
+ QSER_SIM_PROV_STATE_SEC = 0xB02, /**< Secondary provisioning subscription. */
+}QSER_SIM_SUBSCRIPTION_TYPE_T;
+
+typedef enum
+{
+ QSER_SIM_APP_STATE_UNKNOWN = 0xB00, /**< Application state unknown. */
+ QSER_SIM_APP_STATE_DETECTED = 0xB01, /**< Detected state. */
+ QSER_SIM_APP_STATE_PIN1_REQ = 0xB02, /**< PIN1 required. */
+ QSER_SIM_APP_STATE_PUK1_REQ = 0xB03, /**< PUK1 required. */
+ QSER_SIM_APP_STATE_INITALIZATING = 0xB04, /**< Initializing. */
+ QSER_SIM_APP_STATE_PERSO_CK_REQ = 0xB05, /**< Personalization control key required. */
+ QSER_SIM_APP_STATE_PERSO_PUK_REQ = 0xB06, /**< Personalization unblock key required. */
+ QSER_SIM_APP_STATE_PERSO_PERMANENTLY_BLOCKED= 0xB07, /**< Personalization is permanently blocked. */
+ QSER_SIM_APP_STATE_PIN1_PERM_BLOCKED = 0xB08, /**< PIN1 is permanently blocked. */
+ QSER_SIM_APP_STATE_ILLEGAL = 0xB09, /**< Illegal application state. */
+ QSER_SIM_APP_STATE_READY = 0xB0A, /**< Application ready state. @newpage */
+}QSER_SIM_APP_STATE_TYPE_T;
+
+typedef enum
+{
+ QSER_SIM_PIN_STATE_UNKNOWN = 0xB01, /**< Unknown PIN state. */
+ QSER_SIM_PIN_STATE_ENABLED_NOT_VERIFIED = 0xB02, /**< PIN required, but has not been verified. */
+ QSER_SIM_PIN_STATE_ENABLED_VERIFIED = 0xB03, /**< PIN required and has been verified. */
+ QSER_SIM_PIN_STATE_DISABLED = 0xB04, /**< PIN not required. */
+ QSER_SIM_PIN_STATE_BLOCKED = 0xB05, /**< PIN verification has failed too many times and is blocked. Recoverable through PUK verification. */
+ QSER_SIM_PIN_STATE_PERMANENTLY_BLOCKED = 0xB06, /**< PUK verification has failed too many times and is not recoverable. */
+}QSER_SIM_PIN_STATE_TYPE_T;
+
+typedef struct
+{
+ QSER_SIM_SUBSCRIPTION_TYPE_T subscription; /**< Type of subscription (i.e., primary, secondary, etc.). */
+ QSER_SIM_APP_STATE_TYPE_T app_state; /**< Current state of the application. */
+ QSER_SIM_PERSO_FEATURE_TYPE_T perso_feature; /**< Current personalization state and feature enabled. */
+ uint8_t perso_retries; /**< Number of personalization retries. */
+ uint8_t perso_unblock_retries; /**< Number of personalization unblock retries. */
+ QSER_SIM_PIN_STATE_TYPE_T pin1_state; /**< Current PIN 1 state. */
+ uint8_t pin1_num_retries; /**< Number of PIN 1 retries. */
+ uint8_t puk1_num_retries; /**< Number of PUK 1 retries. */
+ QSER_SIM_PIN_STATE_TYPE_T pin2_state; /**< Current PIN 2 state. */
+ uint8_t pin2_num_retries; /**< Number of PIN 2 retries. */
+ uint8_t puk2_num_retries; /**< Number of PUK 2 retries. */
+}QSER_SIM_CARD_APP_INFO_T;
+
+typedef struct
+{
+ QSER_SIM_CARD_APP_INFO_T app_3gpp; /**< Stores 3GPP application information. */
+ QSER_SIM_CARD_APP_INFO_T app_3gpp2; /**< Stores 3GPP2 application information. */
+ QSER_SIM_CARD_APP_INFO_T app_isim; /**< Stores ISIM application information. */
+}QSER_SIM_CARD_ALL_APP_INFO_T;
+
+typedef struct
+{
+ QSER_SIM_CARD_STATE_TYPE_T e_card_state;/**< Current card and card error state. */
+ QSER_SIM_CARD_TYPE_T e_card_type; /**< Card type. */
+ QSER_SIM_CARD_ALL_APP_INFO_T card_app_info; /**< Stores all relevant application information. */
+}QSER_SIM_CARD_STATUS_INFO_T;
+typedef QSER_SIM_CARD_STATUS_INFO_T* QSER_SIM_MsgRef;
+/* Callback function registered to qser_sim_addrxmsghandler, msgRef contains the detail msg infor */
+typedef void (*QSER_SIM_RxMsgHandlerFunc_t)(QSER_SIM_MsgRef msgRef);
+
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-sms-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-sms-demo.cpp
new file mode 100755
index 0000000..42aa2e0
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-qser-sms-demo.cpp
@@ -0,0 +1,188 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <pthread.h>
+#include <unistd.h>
+#include <dlfcn.h>
+#include <stdint.h>
+#include <ctype.h>
+
+#include"lynq-qser-sms-demo.h"
+#include "mbtk_log.h"
+
+
+#define SMS_BUF 64
+#define MSG_BUF 100
+
+int flag_init = 0;
+
+typedef uint32_t sim_client_handle_type;
+//sms_client_handle_type ph_sms = 2022;
+sms_client_handle_type h_sms = 2022;
+
+
+int (*qser_sms_client_init)(sms_client_handle_type *h_sms);
+int (*qser_sms_client_deinit)(sms_client_handle_type h_sms);
+int (*qser_sms_send_sms)(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info);
+int (*qser_sms_addrxmsghandler)(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr);
+int (*qser_sms_deletefromstorage)(sms_client_handle_type h_sms, QSER_sms_storage_info_t *pt_sms_storage);
+int (*qser_sms_getsmscenteraddress)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *set_sca_cfg);
+//int (*qser_sms_setsmscenteraddress)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg);
+
+void qser_sms_handler(QSER_SMS_MsgRef msgRef, void* contextPtr) {
+ printf("[%s-%d] sms handler, msgRef->sms_data = %s,addr =%s\n", __FUNCTION__, __LINE__, msgRef->sms_data, msgRef->src_addr);
+}
+
+bool isNumeric(char *phnum) {
+ int length = strlen(phnum);
+
+ if (length == 0) {
+ return false;
+ }
+
+ if (phnum[0] != '+' && (phnum[0] < '0' || phnum[0] > '9')) {
+ return false;
+ }
+
+ if (phnum[0] == '+' && length < 3) {
+ return false;
+ }
+
+ for (int i = 1; i < length; i++) {
+ if (phnum[i] < '0' || phnum[i] > '9') {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+//以下示例默认为所有API 执行都æˆåŠŸçš„æƒ…å†µä¸‹ï¼Œä¾æ¬¡æ‰§è¡ŒåŽç»API
+int main(int argc, char *argv[])
+{
+ int ret = 0;
+ //char phnum[SMS_BUF]={0};
+ mbtk_log_init((char*)"radio", (char*)"MBTK");
+
+ const char *lynq_libpath_sms = (char*)"/lib/liblynq-qser-sms.so";
+ void *dlHandle_sms = dlopen(lynq_libpath_sms, RTLD_NOW);
+
+ if (dlHandle_sms == NULL)
+ {
+ printf("dlopen dlHandle_sms failed: %s\n", dlerror());
+ exit(EXIT_FAILURE);
+ }
+
+ if(argc != 2 || !isNumeric(argv[1]))
+ {
+ printf("[%s][%d] please input correct phnum\n",__FUNCTION__,__LINE__);
+ exit(1);
+ }
+
+ qser_sms_client_init = (int(*)(sms_client_handle_type *h_sms))dlsym(dlHandle_sms,"qser_sms_client_init");
+ if(NULL != qser_sms_client_init)
+ {
+ ret = qser_sms_client_init(&h_sms);
+ if(ret == 0)
+ {
+ printf("Run qser_sms_client_init\n");
+ }else{
+ printf("qser_sim_client_init error\n");
+ }
+ }else{
+ printf("qser_sim_client_init dlsym error\n");
+ }
+
+ sleep(2);
+
+ qser_sms_addrxmsghandler = (int(*)(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr))dlsym(dlHandle_sms,"qser_sms_addrxmsghandler");
+
+ if(NULL != qser_sms_addrxmsghandler)
+ {
+ ret = qser_sms_addrxmsghandler(qser_sms_handler, NULL);
+ if(ret == 0)
+ {
+ printf("qser_sms_addrxmsghandler success\n");
+ }else{
+ printf("qser_sms_addrxmsghandler error, ret = %d\n", ret);
+ }
+ }else{
+ printf("qser_sms_addrxmsghandler dlsym error\n");
+ }
+
+ QSER_sms_service_center_cfg_t get_sca_cfg;
+ qser_sms_getsmscenteraddress = (int (*)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg))dlsym(dlHandle_sms,"qser_sms_getsmscenteraddress");
+ if(NULL != qser_sms_getsmscenteraddress)
+ {
+ ret = qser_sms_getsmscenteraddress(h_sms, &get_sca_cfg);
+ if(ret == 0)
+ {
+ printf("get smsc success,service_center_addr = %s\n",get_sca_cfg.service_center_addr);
+ }else{
+ printf("get smsc error, ret = %d\n", ret);
+ }
+ }else{
+ printf("qser_sms_getsmscenteraddress dlsym error\n");
+ }
+ sleep(1);
+#if 0
+ QSER_sms_service_center_cfg_t set_sca_cfg;
+ memset(set_sca_cfg.service_center_addr, 0, sizeof(set_sca_cfg.service_center_addr));
+ strncpy(set_sca_cfg.service_center_addr, "+8613800230500", 14);//smsc need userchange
+ qser_sms_setsmscenteraddress = (int (*)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *set_sca_cfg))dlsym(dlHandle_sms,"qser_sms_setsmscenteraddress");
+ if(NULL != qser_sms_setsmscenteraddress)
+ {
+ ret = qser_sms_setsmscenteraddress(h_sms, &set_sca_cfg);
+ if(ret == 0)
+ {
+ printf("set smsc success");
+ }else{
+ printf("set smsc error, ret = %d\n", ret);
+ }
+ }else{
+ printf("qser_sms_setsmscenteraddress dlsym error\n");
+ }
+#endif
+ // char telephony_num[SMS_BUF] = {};
+ char msg[MSG_BUF] = {};
+ QSER_sms_info_t pt_sms_info;
+ // sprintf(telephony_num,"10086");//è¯·ç”¨æˆ·åŠ¡å¿…æ›¿æ¢æ¤å·ç ï¼Œéšæ„å‘è¿è¥å•†å‘çŸæ¶ˆæ¯æžæœ‰å¯èƒ½è¢«å°å·ã€‚
+ sprintf(msg,"Chello worrld-7bit-mr!.");
+ strncpy(pt_sms_info.src_addr, argv[1], SMS_BUF);
+ strncpy(pt_sms_info.sms_data, msg, MSG_BUF);
+ pt_sms_info.format = QSER_SMS_7BIT;
+ // printf("[%s,%d] src_addr=%s, telephony_num = %s\n",__FUNCTION__,__LINE__, pt_sms_info.src_addr, telephony_num);
+ printf("[%s,%d] sms_data=%s, msg = %s\n",__FUNCTION__,__LINE__, pt_sms_info.sms_data, msg);
+
+ qser_sms_send_sms = (int (*)(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info))dlsym(dlHandle_sms,"qser_sms_send_sms");
+ if(NULL != qser_sms_send_sms)
+ {
+ ret = qser_sms_send_sms(h_sms, &pt_sms_info);
+ if(ret == 0)
+ {
+ printf("send sms success\n");
+ }else{
+ printf("send sms error, ret = %d\n", ret);
+ }
+ }else{
+ printf("qser_sms_send_sms dlsym error\n");
+ }
+
+ sleep(120);//åœ¨æ¤æœŸé—´å‘模组å‘é€çŸæ¶ˆæ¯ï¼Œå³å¯è§¦å‘â€œæŽ¥å—æ–°çŸæ¶ˆæ¯äº‹ä»¶â€ã€‚
+ qser_sms_client_deinit = (int (*)(sms_client_handle_type h_sms))dlsym(dlHandle_sms,"qser_sms_client_deinit");
+ if(NULL != qser_sms_client_deinit)
+ {
+ ret = qser_sms_client_deinit(h_sms);
+ if(ret == 0)
+ {
+ printf("sms deinit success\n");
+ }else{
+ printf("sms deinit error, ret = %d\n", ret);
+ }
+ }else{
+ printf("qser_sms_client_deinit dlsym error\n");
+ }
+
+}
+
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-sms-demo.h b/mbtk/test/liblynq_lib_t106/lynq-qser-sms-demo.h
new file mode 100755
index 0000000..500d946
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-qser-sms-demo.h
@@ -0,0 +1,168 @@
+#define MIN_MSM_PARAM_NUM 4
+#define MIN_IMS_MSM_PARAM_NUM 6
+#define MIN_WRITMSM_PARAM_NUM 5
+#define MSG_MAX_LEN 1024
+#define TELEPHONNUM_LEN 64
+#define STORAGSMS_MAX_SIZE 128
+#define SMSC_MAX_LEN 22
+#define SMS_NUM_MAX 255
+
+typedef unsigned short uint16_t;
+typedef unsigned int uint32_t;
+typedef uint32_t sms_client_handle_type;
+
+/** Maximum length of an SMS. */
+#define QSER_SMS_MAX_MT_MSG_LENGTH 1440
+
+/** Maximum string length. */
+#define QSER_SMS_MAX_ADDR_LENGTH 252
+
+/** Maximum string length. */
+#define QSER_SMS_MAX_SCA_TYPLENGTH 3
+
+typedef enum
+{
+ QSER_SMS_7BIT = 0,
+ QSER_SMS_8BIT = 1,
+ QSER_SMS_UCS2 = 2,
+ //<2017/12/28-QCM9XOL00004C001-P01-Vicent.Gao, <[SMS] Segment 1==> CharSet to Alpha implementation.>
+ QSER_SMS_IRA = 3,
+ //>2017/12/28-QCM9XOL00004C001-P01-Vicent.Gao
+
+}QSER_SMS_T;
+
+typedef enum
+{
+ QSER_SMS_MO = 0, ///< SMS mobile terminated message.
+ QSER_SMS_MT = 1, ///< SMS mobile originated message.
+ QSER_SMS_BROADCAST_MT = 2 ///< SMS Cell Broadcast message.
+}QSER_SMS_TYPT;
+
+typedef enum
+{
+ QSER_SMS_STORAGTYPNONE = -1, /**< Message no need to store. */
+ QSER_SMS_STORAGTYPUIM = 0, /**< Message store to UIM. */
+ QSER_SMS_STORAGTYPNV = 1, /**< Message store to NV. */
+ QSER_SMS_STORAGTYPDB = 2, /**< Message store to NV. */
+}QSER_SMS_STORAGTYPT;
+
+typedef enum
+{
+ QSER_SMS_MESSAGMODUNKNOWN = -1, /**< Message type CDMA */
+ QSER_SMS_MESSAGMODCDMA = 0, /**< Message type CDMA */
+ QSER_SMS_MESSAGMODGW = 1, /**< Message type GW. */
+}QSER_SMS_MODTYPT;
+
+typedef struct
+ {
+ uint8_t total_segments; /**< The number of long short message*/
+ uint8_t seg_number; /**< Current number.*/
+ uint8_t referencnumber; /**< referencnumber.*/
+}QSER_sms_user_data_head_t;
+
+typedef struct
+{
+ /* If sms is stored, it won't parse, you need read it by yourself */
+ QSER_SMS_STORAGTYPT storage; ///specify where stored this msg
+
+ QSER_SMS_T format;
+ QSER_SMS_TYPT type;
+ char src_addr[QSER_SMS_MAX_ADDR_LENGTH]; ///Telephone number string.
+ int sms_data_len;
+ char sms_data[QSER_SMS_MAX_MT_MSG_LENGTH]; ///SMS content, data format depends on format
+ char timestamp[21]; ///Message time stamp (in text mode). string format: "yy/MM/dd,hh:mm:ss+/-TimeZone"
+ uint8_t user_data_head_valid; //indicate whether long sms. TRUE-long sms; FALSE-short message;
+ QSER_sms_user_data_head_t user_data_head; //long sms user data head info.
+ QSER_SMS_MODTYPT mode; ///specify where stored this msg cdma or gw area
+ uint32_t storage_index; ///storage index, -1 means not store
+} QSER_sms_info_t;
+
+typedef struct
+{
+ QSER_SMS_STORAGTYPT storage;
+ QSER_SMS_MODTYPT mode;
+ uint32_t storage_idx;
+} QSER_sms_storage_info_t;
+
+typedef enum
+{
+ QSER_SMS_UNKNOWN = -1,
+ QSER_SMS_DISCARD = 0x00, /* Incoming messages for this route are discarded by the WMS service without
+ notifying QMI_WMS clients */
+ QSER_SMS_STORAND_NOTIFY = 0x01, /* Incoming messages for this route are stored to the specified device
+ memory, and new message notifications */
+ QSER_SMS_TRANSFER_ONLY = 0x02, /* Incoming messages for this route are transferred to the client, and the
+ client is expected to send ACK to the network */
+ QSER_SMS_TRANSFER_AND_ACK = 0x03, /* Incoming messages for this route are transferred to the client, and ACK is
+ sent to the network */
+}QSER_SMS_RECEPTION_ACTION_TYPT;
+
+#define QSER_WMS_MESSAGLENGTH_MAX 255
+
+typedef enum
+ {
+ QSER_WMS_MESSAGCDMA = 0x00, //- 0x00 -- MESSAGCDMA -- CDMA \n
+ QSER_WMS_MESSAGGW_PP = 0x06, //- 0x06 -- MESSAGGW_PP -- GW_PP
+}QSER_WMS_MESSAGTYPE;
+
+
+typedef struct
+ {
+ QSER_WMS_MESSAGTYPE format;
+ uint32_t raw_messaglen; /**< Must be set to # of elements in raw_message */
+ uint8_t raw_message[QSER_WMS_MESSAGLENGTH_MAX]; /**< Raw message data*/
+}QSER_wms_send_raw_message_data_t;
+
+typedef enum
+{
+ QSER_WMS_TL_CAUSCODADDR_VACANT = 0x00,
+ QSER_WMS_TL_CAUSCODADDR_TRANSLATION_FAILURE = 0x01,
+ QSER_WMS_TL_CAUSCODNETWORK_RESOURCSHORTAGE = 0x02,
+ QSER_WMS_TL_CAUSCODNETWORK_FAILURE = 0x03,
+ QSER_WMS_TL_CAUSCODINVALID_TELESERVICID = 0x04,
+ QSER_WMS_TL_CAUSCODNETWORK_OTHER = 0x05,
+ QSER_WMS_TL_CAUSCODNO_PAGRESPONSE = 0x20,
+ QSER_WMS_TL_CAUSCODDEST_BUSY = 0x21,
+ QSER_WMS_TL_CAUSCODNO_ACK = 0x22,
+ QSER_WMS_TL_CAUSCODDEST_RESOURCSHORTAGE = 0x23,
+ QSER_WMS_TL_CAUSCODSMS_DELIVERY_POSTPONED = 0x24,
+ QSER_WMS_TL_CAUSCODDEST_OUT_OF_SERV = 0x25,
+ QSER_WMS_TL_CAUSCODDEST_NOT_AT_ADDR = 0x26,
+ QSER_WMS_TL_CAUSCODDEST_OTHER = 0x27,
+ QSER_WMS_TL_CAUSCODRADIO_IF_RESOURCSHORTAGE = 0x40,
+ QSER_WMS_TL_CAUSCODRADIO_IF_INCOMPATABILITY = 0x41,
+ QSER_WMS_TL_CAUSCODRADIO_IF_OTHER = 0x42,
+ QSER_WMS_TL_CAUSCODENCODING = 0x60,
+ QSER_WMS_TL_CAUSCODSMS_ORIG_DENIED = 0x61,
+ QSER_WMS_TL_CAUSCODSMS_TERM_DENIED = 0x62,
+ QSER_WMS_TL_CAUSCODSUPP_SERV_NOT_SUPP = 0x63,
+ QSER_WMS_TL_CAUSCODSMS_NOT_SUPP = 0x64,
+ QSER_WMS_TL_CAUSCODMISSING_EXPECTED_PARAM = 0x65,
+ QSER_WMS_TL_CAUSCODMISSING_MAND_PARAM = 0x66,
+ QSER_WMS_TL_CAUSCODUNRECOGNIZED_PARAM_VAL = 0x67,
+ QSER_WMS_TL_CAUSCODUNEXPECTED_PARAM_VAL = 0x68,
+ QSER_WMS_TL_CAUSCODUSER_DATA_SIZERR = 0x69,
+ QSER_WMS_TL_CAUSCODGENERAL_OTHER = 0x6A,
+}QSER_WMS_TL_CAUSCODTYPE;
+
+
+
+typedef struct
+ {
+ uint16_t messagid; /* Message ID */
+ uint8_t causcodvalid; /**< Must be set to true if causcode is being passed */
+ QSER_WMS_TL_CAUSCODTYPE causcode;
+}QSER_wms_raw_send_resp_t;
+
+typedef struct
+ {
+ char service_center_addr[QSER_SMS_MAX_ADDR_LENGTH + 1]; /**< Address of the service center.*/
+ uint8_t service_center_addr_typvalid;
+ char service_center_addr_type[QSER_SMS_MAX_SCA_TYPLENGTH + 1]; /**< 129 if the SMSC address does not start with a "+" characte;
+ 145 if the SMSC address starts with a "+" character*/
+}QSER_sms_service_center_cfg_t;
+
+typedef QSER_sms_info_t QSER_SMS_Msg_t;
+typedef QSER_sms_info_t* QSER_SMS_MsgRef;
+typedef void (*QSER_SMS_RxMsgHandlerFunc_t)(QSER_SMS_MsgRef msgRef, void* contextPtr);
+
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-thermal-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-thermal-demo.cpp
new file mode 100755
index 0000000..03a5926
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-qser-thermal-demo.cpp
@@ -0,0 +1,49 @@
+#include <sys/types.h>
+#include <dirent.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <string.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <dlfcn.h>
+
+#include"lynq-qser-thermal-demo.h"
+
+
+int (*get_thermal_zone)(int *numbers, int size);
+
+
+int main(int argc, char *argv[]){
+ int numbers[MAX_SIZE];
+ int ret = 0;
+ const char *lynq_libpath_thermal = "/lib/liblynq-qser-thermal.so";
+
+ void *dlHandle_thermal = dlopen(lynq_libpath_thermal, RTLD_NOW);
+ if (dlHandle_thermal == NULL)
+ {
+ printf("dlopen dlHandle_thermal failed: %s\n", dlerror());
+ exit(EXIT_FAILURE);
+ }
+ get_thermal_zone = (int(*)(int *numbers, int size))dlsym(dlHandle_thermal,"get_thermal_zone");
+ if(NULL != get_thermal_zone)
+ {
+ ret = get_thermal_zone(numbers, MAX_SIZE);
+ if (ret <= 0) {
+ printf("get_thermal_zone error\n");
+ return -1;
+ }
+ }else{
+ printf("get_thermal_zone dlsym error\n");
+ }
+
+ for (int j = 0; j < ret; ++j) {
+ printf("[%s-%d] temp[%d] = %d \n", __func__, __LINE__, j, numbers[j]);
+ }
+
+ return 0;
+}
+
+
+
+
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-thermal-demo.h b/mbtk/test/liblynq_lib_t106/lynq-qser-thermal-demo.h
new file mode 100755
index 0000000..6366538
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-qser-thermal-demo.h
@@ -0,0 +1,5 @@
+#define MAX_SIZE 100
+#define MAX_LINES 5
+#define MAX_LINE_LENGTH 10
+
+
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-voice-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-voice-demo.cpp
new file mode 100755
index 0000000..951bfb3
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-qser-voice-demo.cpp
@@ -0,0 +1,312 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <pthread.h>
+#include <unistd.h>
+#include <dlfcn.h>
+#include <stdint.h>
+
+#include"lynq-qser-voice-demo.h"
+#include "mbtk_log.h"
+
+typedef struct
+{
+ int cmdIdx;
+ char *funcName;
+} st_api_test_case;
+
+//for server test
+st_api_test_case at_api_testcases[] =
+{
+ {0, (char*)"print_help"},
+ {1, (char*)"qser_voice_call_start"},
+ {2, (char*)"qser_voice_call_end"},
+ {3, (char*)"qser_voice_call_answer"},
+ {4, (char*)"qser_voice_set_speech_volume"},
+ {5, (char*)"qser_voice_get_speech_volume"},
+ {6, (char*)"qser_voice_set_dtmf"},
+ {-1, NULL}
+};
+
+
+
+typedef uint32_t voice_client_handle_type;
+
+
+int (*qser_voice_call_client_init)(voice_client_handle_type *ph_voice);
+int (*qser_voice_call_client_deinit)(voice_client_handle_type );
+int (*qser_voice_call_addstatehandler)(voice_client_handle_type h_voice,
+ QSER_VoiceCall_StateHandlerFunc_t handlerPtr,
+ void *contextPtr);
+
+int (*qser_voice_call_removestatehandle)(voice_client_handle_type );
+int (*qser_voice_call_start)(voice_client_handle_type h_voice,
+ E_QSER_VCALL_ID_T simId,
+ char *phone_number, int *call_id);
+
+int (*qser_voice_call_end)(voice_client_handle_type ,int );
+int (*qser_voice_call_answer)(voice_client_handle_type ,int );
+int (*qser_voice_set_speech_volume)(const int volume);
+int (*qser_voice_get_speech_volume)(int *volume);
+int (*qser_voice_set_dtmf)(const char callnum);
+
+void *dlHandle_call = NULL;
+
+static void yk_voice_call_cb_func(int call_id,
+ char* phone_num,
+ qser_voice_call_state_t state,
+ void *contextPtr)
+{
+ char *call_state[] = {(char*)"INCOMING", (char*)"DIALING", (char*)"ALERTING", (char*)"ACTIVE", (char*)"HOLDING", (char*)"END", (char*)"WAITING"};
+
+ printf("######### Call id=%d, PhoneNum:%s, event=%s! ######\n", call_id, phone_num, call_state[state]);
+}
+
+void print_help(void)
+{
+ int i;
+ printf("Supported test cases:\n");
+ for(i = 0; ; i++)
+ {
+ if(at_api_testcases[i].cmdIdx == -1)
+ {
+ break;
+ }
+ printf("%d:\t%s\n", at_api_testcases[i].cmdIdx, at_api_testcases[i].funcName);
+ }
+}
+
+int main(int argc, char const *argv[])
+{
+ int cmdIdx = 0;
+ int ret = 0;
+ int voice_call_id = 0;
+ voice_client_handle_type h_voice = 0;
+
+ mbtk_log_init((char*)"radio", (char*)"MBTK");
+
+ const char *lynqLibPath_Call = (char*)"/lib/liblynq-qser-voice.so";
+ dlHandle_call = dlopen(lynqLibPath_Call, RTLD_NOW);
+ if (dlHandle_call == NULL)
+ {
+ printf("dlopen dlHandle_call failed: %s\n", dlerror());
+ exit(EXIT_FAILURE);
+ }
+
+ qser_voice_call_client_init = (int(*)(voice_client_handle_type *h_voice))dlsym(dlHandle_call, "qser_voice_call_client_init");
+ if(qser_voice_call_client_init == NULL)
+ {
+ printf("qser_voice_call_client_init not defined or exported in %s\n", lynqLibPath_Call);
+ return -1;
+ }
+
+ qser_voice_call_addstatehandler = (int(*)(voice_client_handle_type h_voice,
+ QSER_VoiceCall_StateHandlerFunc_t handlerPtr,
+ void *contextPtr))dlsym(dlHandle_call,"qser_voice_call_addstatehandler");
+ if(qser_voice_call_addstatehandler == NULL)
+ {
+ printf("qser_voice_call_addstatehandler not defined or exported in %s\n", lynqLibPath_Call);
+ return -1;
+ }
+
+ qser_voice_call_answer = (int(*)(voice_client_handle_type,int ))dlsym(dlHandle_call,"qser_voice_call_answer");
+ if(qser_voice_call_answer == NULL)
+ {
+ printf("qser_voice_call_answer not defined or exported in %s\n", lynqLibPath_Call);
+ return -1;
+ }
+
+ qser_voice_call_start = (int(*)(voice_client_handle_type h_voice,E_QSER_VCALL_ID_T simId,
+ char *phone_number, int *call_id))dlsym(dlHandle_call,"qser_voice_call_start");
+ if(qser_voice_call_start == NULL)
+ {
+ printf("qser_voice_call_start not defined or exported in %s\n", lynqLibPath_Call);
+ return -1;
+ }
+
+ qser_voice_call_end = (int(*)(voice_client_handle_type ,int))dlsym(dlHandle_call,"qser_voice_call_end");
+ if(qser_voice_call_end == NULL)
+ {
+ printf("qser_voice_call_end not defined or exported in %s\n", lynqLibPath_Call);
+ return -1;
+ }
+
+
+ qser_voice_call_client_deinit = (int (*)(voice_client_handle_type h_voice))dlsym(dlHandle_call,"qser_voice_call_client_deinit");
+ if(qser_voice_call_client_deinit == NULL)
+ {
+ printf("qser_voice_call_client_deinit not defined or exported in %s\n", lynqLibPath_Call);
+ return -1;
+ }
+
+ qser_voice_call_removestatehandle = (int (*)(voice_client_handle_type))dlsym(dlHandle_call,"qser_voice_call_removestatehandle");
+ if(qser_voice_call_removestatehandle == NULL)
+ {
+ printf("qser_voice_call_removestatehandle not defined or exported in %s\n", lynqLibPath_Call);
+ return -1;
+ }
+
+ qser_voice_set_speech_volume = (int (*)(const int ))dlsym(dlHandle_call,"qser_voice_set_speech_volume");
+ if(qser_voice_set_speech_volume == NULL)
+ {
+ printf("qser_voice_set_speech_volume not defined or exported in %s\n", lynqLibPath_Call);
+ return -1;
+ }
+
+ qser_voice_get_speech_volume = (int (*)(int* ))dlsym(dlHandle_call,"qser_voice_get_speech_volume");
+ if(qser_voice_get_speech_volume == NULL)
+ {
+ printf("qser_voice_get_speech_volume not defined or exported in %s\n", lynqLibPath_Call);
+ return -1;
+ }
+
+ qser_voice_set_dtmf = (int (*)(const char ))dlsym(dlHandle_call,"qser_voice_set_dtmf");
+ if(qser_voice_set_dtmf == NULL)
+ {
+ printf("qser_voice_set_dtmf not defined or exported in %s\n", lynqLibPath_Call);
+ return -1;
+ }
+
+ ret = qser_voice_call_client_init(&h_voice);
+ if(ret != 0 )
+ {
+ printf("qser_voice_call_client_init FAIL\n");
+ return -1;
+ }
+
+ ret = qser_voice_call_addstatehandler(h_voice, yk_voice_call_cb_func, &voice_call_id);
+ if(ret != 0)
+ {
+ printf("qser_voice_call_addstatehandler FAIL\n");
+ return -1;
+ }
+
+
+ print_help();
+ while(1)
+ {
+ printf("\nplease input cmd index(-1 exit): ");
+ if(1 != scanf("%d", &cmdIdx))
+ break;
+ if(cmdIdx == -1)
+ {
+ break;
+ }
+
+ switch(cmdIdx)
+ {
+ //"print_help
+ case 0:
+ print_help();
+ break;
+
+ //"qser_voice_call_start"
+ case 1:
+ {
+ char PhoneNum[32] = {0};
+
+ printf("please input dest phone number: \n");
+ if(1 != scanf("%s", PhoneNum))
+ break;
+
+ ret = qser_voice_call_start(h_voice, E_QSER_VCALL_EXTERNAL_SLOT_1, PhoneNum, &voice_call_id);
+ printf("qser_voice_call_start ret = %d, with voice_call_id=%d\n", ret, voice_call_id);
+ break;
+ }
+
+ //"qser_voice_call_end"
+ case 2:
+ {
+ int call_id = -1;
+ printf("please input end call id: \n");
+ if(1 != scanf("%d", &call_id))
+ break;
+ ret = qser_voice_call_end(h_voice, call_id);
+ printf(" ret = %d\n", ret);
+ break;
+ }
+
+ //"qser_voice_call_answer"
+ case 3:
+ {
+ int call_id = -1;
+ printf(" please input answer call id\n");
+ if(1 != scanf("%d", &call_id))
+ break;
+ ret = qser_voice_call_answer(h_voice, call_id);
+ printf(" ret = %d\n", ret);
+ break;
+ }
+
+ case 4:
+ {
+ int volume = 0;
+ printf("Please set speech volume:0-5 level\n");
+ if(1 != scanf("%d",&volume))
+ break;
+ ret = qser_voice_set_speech_volume(volume);
+ printf("ret is %d\n",ret);
+ break;
+
+ }
+
+ case 5:
+ {
+ int volume = -1;
+ printf("Enter get speech volume\n");
+ ret = qser_voice_get_speech_volume(&volume);
+ printf("ret is %d,get volume is %d\n",ret,volume);
+ break;
+
+ }
+ case 6:
+ {
+
+ int ret;
+ char inputChar;
+
+ printf("Enter set dtmf\n");
+ if(1 != scanf(" %c", &inputChar))
+ break;
+ printf("inputChar is %c\n", inputChar);
+ ret = qser_voice_set_dtmf(inputChar);
+
+ if (ret != 0)
+ {
+ printf("qser set voice dtmf failed\n");
+ return -1;
+ }
+ break;
+ }
+
+ default:
+ print_help();
+ break;
+ }
+
+ }
+
+ ret = qser_voice_call_removestatehandle(h_voice);
+ if(ret != 0 && ret != 1)
+ {
+ printf("qser_voice_call_removestatehandle FAIL!!!\n");
+ return -1;
+ }
+ printf("qser_voice_call_removestatehandle ret = %d\n", ret);
+
+
+ ret = qser_voice_call_client_deinit(h_voice);
+ if(ret != 0)
+ {
+ printf("qser_voice_call_client_deinit FAIL\n");
+ return -1;
+ }
+ printf("qser_voice_call_client_deinit ret = %d, with h_voice=%d\n", ret, h_voice);
+
+ return 0;
+
+
+}
+
+
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-voice-demo.h b/mbtk/test/liblynq_lib_t106/lynq-qser-voice-demo.h
new file mode 100755
index 0000000..79977b9
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-qser-voice-demo.h
@@ -0,0 +1,31 @@
+typedef enum
+{
+ E_QSER_VOICE_CALL_STATE_INCOMING = 0x0000, /**< MT incoming; CC setup. */
+ E_QSER_VOICE_CALL_STATE_DIALING = 0x0001, /**< Dialing state. */
+ E_QSER_VOICE_CALL_STATE_ALERTING = 0x0002, /**< MT call waiting; MO alterting. */
+ E_QSER_VOICE_CALL_STATE_ACTIVE = 0x0003, /**< Call is active. */
+ E_QSER_VOICE_CALL_STATE_HOLDING = 0x0004, /**< Call is on hold. */
+ E_QSER_VOICE_CALL_STATE_END = 0x0005, /**< Call is disconnected. */
+ E_QSER_VOICE_CALL_STATE_WAITING = 0x0006, /**< Call is waiting. */
+}qser_voice_call_state_t;
+
+typedef enum
+{
+ E_QSER_VCALL_EXTERNAL_SLOT_1,
+ E_QSER_VCALL_EXTERNAL_SLOT_2,
+ E_QSER_VCALL_EMBEDDED,
+ E_QSER_VCALL_REMOTE,
+ E_QSER_VCALL_ID_MAX
+}E_QSER_VCALL_ID_T;
+
+
+typedef qser_voice_call_state_t E_QSER_VOICE_CALL_STATE_T;
+
+typedef void (*QSER_VoiceCall_StateHandlerFunc_t)
+(
+ int caLOCAL_C_INCLUDESll_id,
+ char* phone_num,
+ E_QSER_VOICE_CALL_STATE_T state,
+ void *contextPtr
+);
+
diff --git a/mbtk/test/liblynq_lib_t106/lynq-usb-demo.cc b/mbtk/test/liblynq_lib_t106/lynq-usb-demo.cc
new file mode 100755
index 0000000..2ba3d35
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq-usb-demo.cc
@@ -0,0 +1,53 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <string.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <sys/socket.h>
+#include <semaphore.h>
+#include <linux/netlink.h>
+
+#include <lynq/lynq-qser-usb.h>
+
+sem_t usbplug_sem;
+void do_get_adb_state(int nargs, char **argv)
+{
+
+ int ret = 0;
+
+ ret = qser_get_usb_usermode_adb_state();
+ if (ret < 0)
+ {
+ printf("get adb state fail,ret:%d \n", ret);
+ return;
+ }
+
+ printf("adb state:%d, %s\n", ret, ((ret == 0) ? "off" : "on"));
+}
+
+void do_get_net_state(int nargs, char **argv)
+{
+
+ int ret = 0;
+
+ ret = qser_get_usb_usermode_net_state();
+ if (ret < 0)
+ {
+ printf("get net state fail,ret:%d \n", ret);
+ return;
+ }
+
+ printf("net state:%d, %s\n", ret, ((ret == 0) ? "off" : "on"));
+}
+
+int main(int argc, char *argv[])
+{
+ sem_init(&usbplug_sem, 0, 0);
+ do_get_adb_state(argc, argv);
+ do_get_net_state(argc, argv);
+ sem_post(&usbplug_sem);
+ return 0;
+}
\ No newline at end of file
diff --git a/mbtk/test/liblynq_lib_t106/lynq_led-demo.c b/mbtk/test/liblynq_lib_t106/lynq_led-demo.c
new file mode 100755
index 0000000..ee85b24
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq_led-demo.c
@@ -0,0 +1,24 @@
+#include <stdio.h>
+#include <strings.h>
+#include<stdlib.h>
+#include "lynq/lynq_uci.h"
+#include "lynq/lynq_led.h"
+
+
+
+int main(int argc, const char *argv[])
+{
+ int ret = 0;
+ ret = lynq_set_netled_on(atoi(argv[1]));
+ if(ret){
+ printf("[%s-%d] lynq_set_netled_on error\n", __FUNCTION__, __LINE__);
+ return -1;
+ }
+ ret = lynq_set_statusled_on(atoi(argv[1]));
+ if(ret){
+ printf("[%s-%d] lynq_set_statusled_on error\n", __FUNCTION__, __LINE__);
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/mbtk/test/liblynq_lib_t106/lynq_qser_network.h b/mbtk/test/liblynq_lib_t106/lynq_qser_network.h
new file mode 100755
index 0000000..75d501b
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq_qser_network.h
@@ -0,0 +1,477 @@
+/**
+ *@file QSER_nw.h
+ *@date 2018-02-22
+ *@author
+ *@brief
+ */
+#ifndef __LYNQ_QSER_NETWORK_H__
+#define __LYNQ_QSER_NETWORK_H__
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "mbtk_type.h"
+
+typedef uint32_t nw_client_handle_type;
+
+
+#define QSER_NW_MODE_NONE 0x00 /**< No network. */
+#define QSER_NW_MODE_GSM 0x01 /**< Include GSM networks. */
+#define QSER_NW_MODE_WCDMA 0x02 /**< Include WCDMA networks. */
+#define QSER_NW_MODE_CDMA 0x04 /**< Include CDMA networks. */
+#define QSER_NW_MODE_EVDO 0x08 /**< Include EVDO networks. */
+#define QSER_NW_MODE_LTE 0x10 /**< Include LTE networks. */
+#define QSER_NW_MODE_TDSCDMA 0x20 /**< Include TDSCDMA networks. */
+
+typedef enum
+{
+ E_QSER_NW_ROAM_STATE_OFF = 0, /**< None, or roaming indicator off. */
+ E_QSER_NW_ROAM_STATE_ON = 1 /**< Roaming indicator on. */
+}E_QSER_NW_ROAM_STATE_TYPE_T;
+
+/** Configures the settings that define the MCM network interface. */
+typedef struct
+{
+ /* Configuration parameters for MCM network registration Network registration details Technology dependent network registration details */
+ uint64_t preferred_nw_mode; /**< Preferred network mode for connections; a bitmask of QSER_NW_MODE_xxxx.*/
+ E_QSER_NW_ROAM_STATE_TYPE_T roaming_pref; /**< Roaming preference.*/
+}QSER_NW_CONFIG_INFO_T;
+
+typedef enum
+{
+ E_QSER_NW_IMS_MODE_OFF = 0, /**< close ims. */
+ E_QSER_NW_IMS_MODE_VOLTE_ENABLE = 1, /**< support volte. */
+}E_QSER_NW_IMS_MODE_TYPE_T;
+
+/** Configures the OOS (out of service) settings that define the MCM network interface. */
+#define QSER_NW_OOS_CFG_TYPE_FAST_SCAN 0x00 /**< fast net scan */
+#define QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN 0x01 /**< full band scan */
+
+typedef struct
+{
+ /* Configuration parameters for MCM network fast network scan when OOS (out of service)*/
+ char enable;
+ uint16_t time_interval;
+}QSER_NW_OOS_CONFIG_FAST_SCAN_INFO_T;
+
+typedef struct
+{
+ /* Configuration parameters for MCM network full band network scan when OOS (out of service)*/
+ int t_min;
+ int t_step;
+ int t_num;
+ int t_max;
+}QSER_NW_OOS_CONFIG_FULL_BAND_SCAN_INFO_T;
+
+
+typedef struct
+{
+ char type; /**< QSER_NW_OOS_CFG_TYPE_xxxx.*/
+ union {
+ QSER_NW_OOS_CONFIG_FAST_SCAN_INFO_T fast_can_info; // 00
+ QSER_NW_OOS_CONFIG_FULL_BAND_SCAN_INFO_T full_band_scan_info; // 01
+ } u;
+}QSER_NW_OOS_CONFIG_INFO_T;
+
+//defined for QSER_NW_EventRegister
+#define NW_IND_VOICE_REG_EVENT_IND_FLAG (1 << 0) /**< msg format : QSER_NW_VOICE_REG_EVENT_IND_T */
+#define NW_IND_DATA_REG_EVENT_IND_FLAG (1 << 1) /**< msg format : QSER_NW_DATA_REG_EVENT_IND_T */
+#define NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG (1 << 2) /**< msg format : QSER_NW_SINGNAL_EVENT_IND_T */
+//#define NW_IND_CELL_ACCESS_STATE_CHG_EVENT_IND_FLAG (1 << 3) /**< msg format : QL_MCM_NW_CELL_ACCESS_STATE_EVENT_IND_T */
+//#define NW_IND_NITZ_TIME_UPDATE_EVENT_IND_FLAG (1 << 4) /**< msg format : QL_MCM_NW_NITZ_TIME_EVENT_IND_T */
+#define NW_IND_IMS_REG_EVENT_IND_FLAG (1 << 5) /**< msg format : NULL */
+
+typedef struct
+{
+ char long_eons[512 + 1]; /**< Long EONS.*/
+ char short_eons[512 + 1]; /**< Short EONS.*/
+ char mcc[10]; /**< Mobile country code.*/
+ char mnc[10]; /**< Mobile network code.*/
+}QSER_NW_OPERATOR_NAME_INFO_T;
+
+typedef enum
+{
+ E_QSER_NW_RADIO_TECH_TD_SCDMA = 1,
+ E_QSER_NW_RADIO_TECH_GSM = 2, /**< GSM; only supports voice. */
+ E_QSER_NW_RADIO_TECH_HSPAP = 3, /**< HSPA+. */
+ E_QSER_NW_RADIO_TECH_LTE = 4, /**< LTE. */
+ E_QSER_NW_RADIO_TECH_EHRPD = 5, /**< EHRPD. */
+ E_QSER_NW_RADIO_TECH_EVDO_B = 6, /**< EVDO B. */
+ E_QSER_NW_RADIO_TECH_HSPA = 7, /**< HSPA. */
+ E_QSER_NW_RADIO_TECH_HSUPA = 8, /**< HSUPA. */
+ E_QSER_NW_RADIO_TECH_HSDPA = 9, /**< HSDPA. */
+ E_QSER_NW_RADIO_TECH_EVDO_A = 10, /**< EVDO A. */
+ E_QSER_NW_RADIO_TECH_EVDO_0 = 11, /**< EVDO 0. */
+ E_QSER_NW_RADIO_TECH_1xRTT = 12, /**< 1xRTT. */
+ E_QSER_NW_RADIO_TECH_IS95B = 13, /**< IS95B. */
+ E_QSER_NW_RADIO_TECH_IS95A = 14, /**< IS95A. */
+ E_QSER_NW_RADIO_TECH_UMTS = 15, /**< UMTS. */
+ E_QSER_NW_RADIO_TECH_EDGE = 16, /**< EDGE. */
+ E_QSER_NW_RADIO_TECH_GPRS = 17, /**< GPRS. */
+ E_QSER_NW_RADIO_TECH_NONE = 18 /**< No technology selected. */
+}E_QSER_NW_RADIO_TECH_TYPE_T;
+
+
+typedef enum
+{
+ E_QSER_NW_TECH_DOMAIN_NONE = 0, /**< None. */
+ E_QSER_NW_TECH_DOMAIN_3GPP = 1, /**< 3GPP. */
+ E_QSER_NW_TECH_DOMAIN_3GPP2 = 2, /**< 3GPP2. */
+}E_QSER_NW_TECH_DOMAIN_TYPE_T;
+
+typedef enum
+{
+ E_QSER_NW_IMSI_UNKNOWN_HLR_DENY_REASON = 1, /**< IMSI unknown in HLR. */
+ E_QSER_NW_ILLEGAL_MS_DENY_REASON = 2, /**< Illegal MS. */
+ E_QSER_NW_IMSI_UNKNOWN_VLR_DENY_REASON = 3, /**< IMSI unknown in VLR. */
+ E_QSER_NW_IMEI_NOT_ACCEPTED_DENY_REASON = 4, /**< IMEI not accepted. */
+ E_QSER_NW_ILLEGAL_ME_DENY_REASON = 5, /**< Illegal ME. */
+ E_QSER_NW_PLMN_NOT_ALLOWED_DENY_REASON = 6, /**< PLMN not allowed. */
+ E_QSER_NW_LA_NOT_ALLOWED_DENY_REASON = 7, /**< Location area not allowed. */
+ E_QSER_NW_ROAMING_NOT_ALLOWED_LA_DENY_REASON = 8, /**< Roaming not allowed in this location area. */
+ E_QSER_NW_NO_SUITABLE_CELLS_LA_DENY_REASON = 9, /**< No suitable cells in location area. */
+ E_QSER_NW_NETWORK_FAILURE_DENY_REASON = 10, /**< Network failure. */
+ E_QSER_NW_MAC_FAILURE_DENY_REASON = 11, /**< MAC failure. */
+ E_QSER_NW_SYNCH_FAILURE_DENY_REASON = 12, /**< Sync failure. */
+ E_QSER_NW_CONGESTION_DENY_REASON = 13, /**< Congestion. */
+ E_QSER_NW_GSM_AUTHENTICATION_UNACCEPTABLE_DENY_REASON = 14, /**< GSM authentication unacceptable. */
+ E_QSER_NW_NOT_AUTHORIZED_CSG_DENY_REASON = 15, /**< Not authorized in this CSG. */
+ E_QSER_NW_SERVICE_OPTION_NOT_SUPPORTED_DENY_REASON = 16, /**< Service option not supported. */
+ E_QSER_NW_REQ_SERVICE_OPTION_NOT_SUBSCRIBED_DENY_REASON = 17, /**< Requested service option not subscribed. */
+ E_QSER_NW_CALL_CANNOT_BE_IDENTIFIED_DENY_REASON = 18, /**< Call cannot be identified. */
+ E_QSER_NW_SEMANTICALLY_INCORRECT_MSG_DENY_REASON = 19, /**< Semantically incorrect message. */
+ E_QSER_NW_INVALID_MANDATORY_INFO_DENY_REASON = 20, /**< Invalid mandatory information. */
+ E_QSER_NW_MSG_TYPE_NON_EXISTENT_DENY_REASON = 21, /**< Message type non-existent or not implemented. */
+ E_QSER_NW_INFO_ELEMENT_NON_EXISTENT_DENY_REASON = 22, /**< Message type not compatible with the protocol state. */
+ E_QSER_NW_CONDITIONAL_IE_ERR_DENY_REASON = 23, /**< Conditional IE error. */
+ E_QSER_NW_MSG_INCOMPATIBLE_PROTOCOL_STATE_DENY_REASON = 24, /**< Message not compatible with the protocol state. */
+ E_QSER_NW_PROTOCOL_ERROR_DENY_REASON = 25, /**< Unspecified protocol error. */
+}E_QSER_NW_DENY_REASON_TYPE_T;
+
+
+typedef enum
+{
+ E_QSER_NW_SERVICE_NONE = 0x0000, /**< Not registered or no data. */
+ E_QSER_NW_SERVICE_LIMITED = 0x0001, /**< Registered; emergency service only. */
+ E_QSER_NW_SERVICE_FULL = 0x0002, /**< Registered, full service. */
+}E_QSER_NW_SERVICE_TYPE_T;
+
+typedef struct
+{
+ E_QSER_NW_TECH_DOMAIN_TYPE_T tech_domain; /**< Technology, used to determine the structure type tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
+ E_QSER_NW_RADIO_TECH_TYPE_T radio_tech; /**< Radio technology; see #nw_radio_tech_t_v01.*/
+ E_QSER_NW_ROAM_STATE_TYPE_T roaming; /**< 0 -- Off, 1 -- Roaming (3GPP2 has extended values).*/
+ E_QSER_NW_DENY_REASON_TYPE_T deny_reason; /**< Set when registration state is #nw_deny_reason_t_v01.*/
+ E_QSER_NW_SERVICE_TYPE_T registration_state; /**< Registration state.*/
+}QSER_NW_COMMON_REG_INFO_T;
+
+
+typedef struct
+{
+ E_QSER_NW_TECH_DOMAIN_TYPE_T tech_domain; /**< Technology, used to determine the structure type tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
+ E_QSER_NW_RADIO_TECH_TYPE_T radio_tech; /**< Radio technology; see #nw_radio_tech_t_v01.*/
+ char mcc[10]; /**< Mobile country code.*/
+ char mnc[10]; /**< Mobile network code.*/
+ E_QSER_NW_ROAM_STATE_TYPE_T roaming; /**< 0 -- Off, 1 -- Roaming (3GPP2 has extended values).*/
+ uint8_t forbidden; /**< Forbidden: 0 -- No, 1 -- Yes.*/
+ uint32_t cid; /**< Cell ID for the registered 3GPP system.*/
+ uint16_t lac; /**< Locatin area code for the registered 3GPP system.*/
+ uint16_t psc; /**< Primary scrambling code (WCDMA only); 0 -- None.*/
+ uint16_t tac; /**< Tracking area code information for LTE.*/
+}QSER_NW_3GPP_REG_INFO_T;
+
+
+typedef struct
+{
+ E_QSER_NW_TECH_DOMAIN_TYPE_T tech_domain; /**< Technology, used to determine structure type tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
+ E_QSER_NW_RADIO_TECH_TYPE_T radio_tech; /**< Radio technology; see #nw_radio_tech_t_v01.*/
+ char mcc[3+1]; /**< Mobile country code.*/
+ char mnc[3+1]; /**< Mobile network code.*/
+ E_QSER_NW_ROAM_STATE_TYPE_T roaming; /**< Roaming status; see #nw_roam_state_t_v01.*/
+ uint8_t forbidden; /**< Forbidden: 0 -- No, 1 -- Yes.*/
+ uint8_t inPRL; /**< 0 -- Not in PRL, 1 -- In PRL.*/
+ uint8_t css; /**< Concurrent services supported: 0 -- No, 1 -- Yes.*/
+ uint16_t sid; /**< CDMA system ID.*/
+ uint16_t nid; /**< CDMA network ID.*/
+ uint16_t bsid; /**< Base station ID. @newpagetable */
+}QSER_NW_3GPP2_REG_INFO_T;
+
+/** Gets the status associated with the connection of \<id\>. */
+typedef struct
+{
+ uint8_t voice_registration_valid; /**< Must be set to TRUE if voice_registration is being passed. */
+ QSER_NW_COMMON_REG_INFO_T voice_registration; /**< Voice registration. */
+
+ uint8_t data_registration_valid; /**< Must be set to TRUE if data_registration is being passed. */
+ QSER_NW_COMMON_REG_INFO_T data_registration; /**< Data registration. */
+
+ uint8_t voice_registration_details_3gpp_valid; /**< Must be set to TRUE if voice_registration_details_3gpp is being passed. */
+ QSER_NW_3GPP_REG_INFO_T voice_registration_details_3gpp; /**< Voice registration details for 3GPP. */
+
+ uint8_t data_registration_details_3gpp_valid; /**< Must be set to TRUE if data_registration_details_3gpp is being passed. */
+ QSER_NW_3GPP_REG_INFO_T data_registration_details_3gpp; /**< Data registration details for 3GPP. */
+
+ uint8_t voice_registration_details_3gpp2_valid; /**< Must be set to TRUE if voice_registration_details_3gpp2 is being passed. */
+ QSER_NW_3GPP2_REG_INFO_T voice_registration_details_3gpp2; /**< Voice registration details for 3GPP2. */
+
+ uint8_t data_registration_details_3gpp2_valid; /**< Must be set to TRUE if data_registration_details_3gpp2 is being passed. */
+ QSER_NW_3GPP2_REG_INFO_T data_registration_details_3gpp2; /**< Data registration details for 3GPP2. */
+}QSER_NW_REG_STATUS_INFO_T;
+
+typedef enum
+{
+ E_QSER_NW_IMS_SERVICE_NONE = 0x0000, /**< Not registered */
+ E_QSER_NW_IMS_SERVICE_REGISTERED = 0x0001, /**< Registered*/
+}E_QSER_NW_IMS_SERVICE_TYPE_T;
+
+typedef struct
+{
+ E_QSER_NW_IMS_SERVICE_TYPE_T registration_state; /**< Registration state.*/
+}QSER_NW_IMS_REG_STATUS_INFO_T;
+
+typedef struct
+{
+ int8_t rssi; /**< RSSI in dBm. Indicates received signal strength. A signed value; -125 or lower indicates no signal.*/
+}QSER_NW_GSM_SIGNAL_INFO_T;
+
+
+typedef struct
+{
+ int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Ec. A signed value; -125 or lower indicates no signal.*/
+ int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
+}QSER_NW_WCDMA_SIGNAL_INFO_T;
+
+typedef struct
+{
+ int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Ec. a signed value; -125 or lower indicates no signal.*/
+ int8_t rscp; /**< RSCP in dBm.*/
+ int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
+ int8_t sinr; /**< Measured SINR in dB. @newpagetable */
+}QSER_NW_TDSCDMA_SIGNAL_INFO_T;
+
+typedef struct
+{
+ int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Ec. A signed value; -125 or lower indicates no signal.*/
+ int8_t rsrq; /**< RSRQ value in dB (signed integer value), as measured by L1. Range: -3 to -20 (-3 equals -3 dB, -20 equals -20 dB).*/
+ int16_t rsrp; /**< Current RSRP in dBm, as measured by L1. Range: -44 to -140 (-44 equals -44 dBm, -140 equals -140 dBm).*/
+ int16_t snr; /**< SNR level as a scaled integer in units of 0.1 dB; e.g., -16 dB has a value of -160 and 24.6 dB has a value of 246.*/
+}QSER_NW_LTE_SIGNAL_INFO_T;
+
+typedef struct
+{
+ int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Power (AGC) + Ec/Io. A signed value; -125 or lower indicates no signal.*/
+ int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
+}QSER_NW_CDMA_SIGNAL_INFO_T;
+
+typedef struct
+{
+ int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Power (AGC) + Ec/Io. A signed value; -125 or lower indicates no signal.*/
+ int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
+ int8_t sinr; /**< SINR level.*/
+ int32_t io; /**< Received IO in dBm. */
+}QSER_NW_HDR_SIGNAL_INFO_T;
+
+typedef struct
+{
+ int16_t ssRsrp; /* SS(Synchronization Signal) reference signal received power, multipled by -1.
+ * Reference: 3GPP TS 38.215.
+ * Range [44, 140], INT_MAX means invalid/unreported.*/
+ int16_t ssRsrq; /* SS reference signal received quality, multipled by -1.
+ * Reference: 3GPP TS 38.215.
+ * Range [3, 20], INT_MAX means invalid/unreported.*/
+ int16_t ssSinr; /* SS signal-to-noise and interference ratio.
+ * Reference: 3GPP TS 38.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
+ * Range [-23, 40], INT_MAX means invalid/unreported.*/
+ int16_t csiRsrp; /* CSI reference signal received power, multipled by -1.
+ * Reference: 3GPP TS 38.215.
+ * Range [44, 140], INT_MAX means invalid/unreported.*/
+ int16_t csiRsrq; /* CSI reference signal received quality, multipled by -1.
+ * Reference: 3GPP TS 38.215.
+ * Range [3, 20], INT_MAX means invalid/unreported.*/
+ int16_t csiSinr; /* CSI signal-to-noise and interference ratio.
+ * Reference: 3GPP TS 138.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
+ * Range [-23, 40], INT_MAX means invalid/unreported.*/
+}QSER_NW_NR_SIGNAL_INFO_T;
+
+
+/** Gets signal strength information. */
+typedef struct
+{
+ uint8_t gsm_sig_info_valid; /**< Must be set to TRUE if gsm_sig_info is being passed. */
+ QSER_NW_GSM_SIGNAL_INFO_T gsm_sig_info; /**< GSM signal information. */
+ uint8_t wcdma_sig_info_valid; /**< Must be set to TRUE if wcdma_sig_info is being passed. */
+ QSER_NW_WCDMA_SIGNAL_INFO_T wcdma_sig_info; /**< WCDMA signal information. */
+ uint8_t tdscdma_sig_info_valid; /**< Must be set to TRUE if tdscdma_sig_info is being passed. */
+ QSER_NW_TDSCDMA_SIGNAL_INFO_T tdscdma_sig_info; /**< TDSCDMA signal information. */
+ uint8_t lte_sig_info_valid; /**< Must be set to TRUE if lte_sig_info is being passed. */
+ QSER_NW_LTE_SIGNAL_INFO_T lte_sig_info; /**< LTE signal information. */
+ uint8_t cdma_sig_info_valid; /**< Must be set to TRUE if cdma_sig_info is being passed. */
+ QSER_NW_CDMA_SIGNAL_INFO_T cdma_sig_info; /**< CDMA signal information. */
+ uint8_t hdr_sig_info_valid; /**< Must be set to TRUE if hdr_sig_info is being passed. */
+ QSER_NW_HDR_SIGNAL_INFO_T hdr_sig_info; /**< HDR signal information. */
+ uint8_t nr_sig_info_valid;
+ QSER_NW_NR_SIGNAL_INFO_T nr_sig_info;
+}QSER_NW_SIGNAL_STRENGTH_INFO_T;
+
+
+
+
+
+/* @bridef Callback function registered to QSER_NW_AddRxMsgHandler
+ * map of ind_flag and ind_msg_buf as bellow :
+ * NW_IND_VOICE_REG_EVENT_IND_FLAG : QSER_NW_VOICE_REG_EVENT_IND_T
+ * NW_IND_DATA_REG_EVENT_IND_FLAG : QSER_NW_DATA_REG_EVENT_IND_T
+ * NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG : QSER_NW_SINGNAL_EVENT_IND_T
+ * NW_IND_CELL_ACCESS_STATE_CHG_EVENT_IND_FLAG : QSER_NW_CELL_ACCESS_STATE_EVENT_IND_T
+ * NW_IND_NITZ_TIME_UPDATE_EVENT_IND_FLAG : QSER_NW_NITZ_TIME_EVENT_IND_T
+ * NW_IND_IMS_REG_EVENT_IND_FLAG : NULL
+ * */
+typedef void (*QSER_NW_RxMsgHandlerFunc_t)(
+ nw_client_handle_type h_nw,
+ uint32_t ind_flag,
+ void *ind_msg_buf,
+ uint32_t ind_msg_len,
+ void *contextPtr
+);
+
+
+/** Indication message; Indication for the corresponding registered event flag NW_IND_VOICE_REG_EVENT_IND_FLAG */
+typedef struct {
+
+ uint8_t registration_valid; /**< Must be set to TRUE if voice_registration is being passed. */
+ QSER_NW_COMMON_REG_INFO_T registration; /**< Voice registration. */
+
+ uint8_t registration_details_3gpp_valid; /**< Must be set to TRUE if voice_registration_details_3gpp is being passed. */
+ QSER_NW_3GPP_REG_INFO_T registration_details_3gpp; /**< Voice registration details for 3GPP. */
+
+ uint8_t registration_details_3gpp2_valid; /**< Must be set to TRUE if voice_registration_details_3gpp2 is being passed. */
+ QSER_NW_3GPP2_REG_INFO_T registration_details_3gpp2; /**< Voice registration details for 3GPP2. */
+}QSER_NW_VOICE_REG_EVENT_IND_T;
+
+/** Indication message; Indication for the corresponding registered event flag NW_IND_DATA_REG_EVENT_IND_FLAG */
+typedef struct {
+
+ uint8_t registration_valid; /**< Must be set to TRUE if data_registration is being passed. */
+ QSER_NW_COMMON_REG_INFO_T registration; /**< Data registration. */
+
+ uint8_t registration_details_3gpp_valid; /**< Must be set to TRUE if data_registration_details_3gpp is being passed. */
+ QSER_NW_3GPP_REG_INFO_T registration_details_3gpp; /**< Data registration details for 3GPP. */
+
+ uint8_t registration_details_3gpp2_valid; /**< Must be set to TRUE if data_registration_details_3gpp2 is being passed. */
+ QSER_NW_3GPP2_REG_INFO_T registration_details_3gpp2; /**< Data registration details for 3GPP2. */
+}QSER_NW_DATA_REG_EVENT_IND_T;
+
+
+/** Indication message; Indication for the corresponding registered event flag NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG */
+typedef struct {
+ uint8_t gsm_sig_info_valid; /**< Must be set to TRUE if gsm_sig_info is being passed. */
+ QSER_NW_GSM_SIGNAL_INFO_T gsm_sig_info; /**< GSM singal information. */
+
+ uint8_t wcdma_sig_info_valid; /**< Must be set to TRUE if wcdma_sig_info is being passed. */
+ QSER_NW_WCDMA_SIGNAL_INFO_T wcdma_sig_info; /**< WCDMA singal information. */
+
+ uint8_t tdscdma_sig_info_valid; /**< Must be set to TRUE if tdscdma_sig_info is being passed. */
+ QSER_NW_TDSCDMA_SIGNAL_INFO_T tdscdma_sig_info; /**< TDSCDMA singal information. */
+
+ uint8_t lte_sig_info_valid; /**< Must be set to TRUE if lte_sig_info is being passed. */
+ QSER_NW_LTE_SIGNAL_INFO_T lte_sig_info; /**< LTE singal information. */
+
+ uint8_t cdma_sig_info_valid; /**< Must be set to TRUE if cdma_sig_info is being passed. */
+ QSER_NW_CDMA_SIGNAL_INFO_T cdma_sig_info; /**< CDMA singal information. */
+
+ uint8_t hdr_sig_info_valid; /**< Must be set to TRUE if hdr_sig_info is being passed. */
+ QSER_NW_HDR_SIGNAL_INFO_T hdr_sig_info; /**< HDR singal information. */
+
+ uint8_t nr_sig_info_valid;
+ QSER_NW_NR_SIGNAL_INFO_T nr_sig_info;
+}QSER_NW_SINGNAL_EVENT_IND_T;
+
+typedef enum
+{
+ E_QSER_NW_RF_MODE_CFUN_0 = 0, /**< CFUN 0. */
+ E_QSER_NW_RF_MODE_CFUN_1 = 1, /**< CFUN 1. */
+ E_QSER_NW_RF_MODE_FLIGHT = 4, /**< Flight Mode, CFUN 4. */
+}E_QSER_NW_RF_MODE_TYPE_T;
+
+int qser_nw_client_init(nw_client_handle_type *ph_nw);
+
+int qser_nw_client_deinit(nw_client_handle_type h_nw);
+
+int qser_nw_set_config
+(
+ nw_client_handle_type h_nw,
+ QSER_NW_CONFIG_INFO_T *pt_info
+);
+
+int qser_nw_set_ims_enable
+(
+ nw_client_handle_type h_nw,
+ E_QSER_NW_IMS_MODE_TYPE_T ims_mode
+);
+
+int qser_nw_set_oos_config
+(
+ nw_client_handle_type h_nw,
+ QSER_NW_OOS_CONFIG_INFO_T *pt_info
+);
+
+int qser_nw_get_oos_config
+(
+ nw_client_handle_type h_nw,
+ QSER_NW_OOS_CONFIG_INFO_T *pt_info
+);
+
+int qser_nw_event_register
+(
+ nw_client_handle_type h_nw,
+ uint32_t bitmask // bit OR of NW_IND_xxxx_EVENT_ON
+);
+
+int qser_nw_get_operator_name
+(
+ nw_client_handle_type h_nw,
+ QSER_NW_OPERATOR_NAME_INFO_T *pt_info //You should malloc this or may cause stack overflow
+);
+
+int qser_nw_get_reg_status
+(
+ nw_client_handle_type h_nw,
+ QSER_NW_REG_STATUS_INFO_T *pt_info
+);
+
+int qser_nw_get_ims_reg_status
+(
+ nw_client_handle_type h_nw,
+ QSER_NW_IMS_REG_STATUS_INFO_T *pt_info
+);
+
+int qser_nw_get_signal_strength
+(
+ nw_client_handle_type h_nw,
+ QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info
+);
+
+int qser_nw_add_rx_msg_handler
+(
+ nw_client_handle_type h_nw,
+ QSER_NW_RxMsgHandlerFunc_t handlerPtr,
+ void* contextPtr
+);
+
+int qser_nw_set_rf_mode
+(
+ nw_client_handle_type h_nw,
+ E_QSER_NW_RF_MODE_TYPE_T rf_mode
+);
+
+int qser_nw_get_rf_mode
+(
+ nw_client_handle_type h_nw,
+ E_QSER_NW_RF_MODE_TYPE_T *rf_mode
+);
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif//__QSER_NW_H__
diff --git a/mbtk/test/liblynq_lib_t106/lynq_systime_demo.cpp b/mbtk/test/liblynq_lib_t106/lynq_systime_demo.cpp
new file mode 100755
index 0000000..a600884
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq_systime_demo.cpp
@@ -0,0 +1,274 @@
+/**@File lynq-systime-demo.cpp
+ *
+ * @Brief As a example for liblynq-systime.
+ *
+ * @Author sj.zhang
+ *
+ * @Date 2023-08-15
+ *
+ * @Version V1.0
+ *
+ * @copyright Copyright (c) MobileTek
+ */
+#include <stdio.h>
+#include <dlfcn.h>
+#include <string.h>
+#include <stdlib.h>
+#include <time.h>
+
+typedef struct time_source_status
+{
+ int ntp;
+ int nitz;
+ int gnss;
+} time_src_status_s;
+
+#ifdef MOBILETEK_TARGET_PLATFORM_T106
+int (*lynq_sync_time_from_rtc)(void);
+int (*lynq_set_rtc_time)(void);
+int (*lynq_get_rtc_time)(unsigned long *ulsec);
+
+#endif
+void *dlHandle_systime = NULL;
+int (*modem_time_enable)(int enable);
+int (*gnss_time_enable)(int enable);
+int (*ntp_sync_time)(int enable);
+int (*user_set_time)(char *date, char *time);
+int (*lynq_get_time_src_status)(time_src_status_s *time_src);
+int (*get_sync_time_result)();
+
+
+int lynq_ntp_sync_demo(int argc, char *argv[])
+{
+ int ret = -1;
+ if (argc != 3)
+ {
+ printf("Parameter number wrong !\n");
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ ntp_sync_time = (int (*)(int enable))dlsym(dlHandle_systime, "ntp_sync_time");
+ if (NULL == ntp_sync_time)
+ {
+ fprintf(stderr, "Failed to dlsym function ntp_sync_time : %s\n", dlerror());
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ ret = ntp_sync_time(atoi(argv[2]));
+ switch (ret)
+ {
+ case 0:
+ printf("set success!\n");
+ break;
+ case 1:
+ printf("NTP_ALREADY_ENABLE!\n");
+ break;
+ case 2:
+ printf("NTP_ALREADY_DISENABLE!\n");
+ break;
+ default:
+ break;
+ }
+ return ret;
+}
+
+int lynq_modem_sync_demo(int argc, char *argv[])
+{
+ int ret = -1;
+ if (argc != 3)
+ {
+ printf("Parameter number wrong !\n");
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ modem_time_enable = (int (*)(int enable))dlsym(dlHandle_systime, "modem_time_enable");
+ if (NULL == modem_time_enable)
+ {
+ fprintf(stderr, "Failed to dlsym function modem_time_enable: %s\n", dlerror());
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ ret = modem_time_enable(atoi(argv[2]));
+ printf("ret = %d\n", ret);
+ if (ret != 0 && ret != 4)
+ {
+ printf("modem_time_enable failed !\n");
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ return 0;
+}
+
+int lynq_gnss_sync_demo(int argc, char *argv[])
+{
+ int ret = -1;
+ if (argc != 3)
+ {
+ printf("Parameter number wrong !\n");
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ gnss_time_enable = (int (*)(int enable))dlsym(dlHandle_systime, "gnss_time_enable");
+ if (NULL == gnss_time_enable)
+ {
+ fprintf(stderr, "Failed to dlsym function gnss_time_enable: %s\n", dlerror());
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ ret = gnss_time_enable(atoi(argv[2]));
+ printf("ret = %d\n", ret);
+ if (ret != 0 && ret != 4)
+ {
+ printf("gnss_time_enable failed !\n");
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ return ret;
+}
+
+int lynq_user_set_time_demo(int argc, char *argv[])
+{
+ int ret = -1;
+ if (argc != 4)
+ {
+ printf("Parameter number wrong !\n");
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ user_set_time = (int (*)(char *date, char *time))dlsym(dlHandle_systime, "user_set_time");
+ if (NULL == user_set_time)
+ {
+ fprintf(stderr, "Failed to dlsym function user_set_time: %s\n", dlerror());
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ ret = user_set_time(argv[2], argv[3]);
+ return ret;
+}
+
+int lynq_get_time_src_status_demo(int arg_c, char *arg_v[])
+{
+ lynq_get_time_src_status = (int (*)(time_src_status_s *time_src))dlsym(dlHandle_systime, "lynq_get_time_src_status");
+ if (NULL == lynq_get_time_src_status)
+ {
+ fprintf(stderr, "Failed to dlsym function lynq_get_time_src_status : %s\n", dlerror());
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ time_src_status_s time_src = {0};
+ lynq_get_time_src_status(&time_src);
+ printf("time source status are :\nntp=%d\nnitz=%d\ngnss=%d\n", time_src.ntp, time_src.nitz, time_src.gnss);
+ return 0;
+}
+
+int lynq_get_sync_status_demo(int arg_c, char *arg_v[])
+{
+ get_sync_time_result = (int (*)(void))dlsym(dlHandle_systime, "get_sync_time_result");
+ int ret = 0;
+ if(NULL == get_sync_time_result)
+ {
+ printf("Failed to dlsym function get_sync_time_result: %s\n", dlerror());
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ ret = get_sync_time_result();
+ printf("get_sync_time_result = %d\n",ret);
+ dlclose(dlHandle_systime);
+ return 0;
+}
+
+int main(int argc, char *argv[])
+{
+ int ret = -1;
+ char *cmd = argv[1];
+ printf("enter lynq_systime_demo \n");
+ dlHandle_systime = dlopen("/lib/liblynq-systime.so", RTLD_NOW);
+ if (!dlHandle_systime)
+ {
+ fprintf(stderr, "Failed to load library: %s\n", dlerror());
+ return 1;
+ }
+
+ if (cmd == NULL)
+ {
+ printf("No command received!\n");
+ dlclose(dlHandle_systime);
+ return 1;
+ }
+ else if (strcmp(cmd, "ntp") == 0)
+ {
+ ret = lynq_ntp_sync_demo(argc, argv);
+ }
+ else if (strcmp(cmd, "nitz") == 0)
+ {
+ ret = lynq_modem_sync_demo(argc, argv);
+ }
+ else if (strcmp(cmd, "gnss") == 0)
+ {
+ ret = lynq_gnss_sync_demo(argc, argv);
+ }
+ else if (strcmp(cmd, "user") == 0)
+ {
+ ret = lynq_user_set_time_demo(argc, argv);
+ }
+#ifdef MOBILETEK_TARGET_PLATFORM_T106
+ else if (strcmp(cmd, "sync_rtc") == 0)
+ {
+ lynq_sync_time_from_rtc = (int (*)(void))dlsym(dlHandle_systime, "lynq_sync_time_from_rtc");
+ if (NULL == lynq_sync_time_from_rtc)
+ {
+ fprintf(stderr, "Failed to dlsym function lynq_sync_time_from_rtc : %s\n", dlerror());
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ ret = lynq_sync_time_from_rtc();
+ }
+ else if (strcmp(cmd, "rtc_set") == 0)
+ {
+ lynq_set_rtc_time = (int (*)(void))dlsym(dlHandle_systime, "lynq_set_rtc_time");
+ if (NULL == lynq_set_rtc_time)
+ {
+ fprintf(stderr, "Failed to dlsym function lynq_set_rtc_time : %s\n", dlerror());
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ ret = lynq_set_rtc_time();
+ }
+ else if (strcmp(cmd, "rtc_get") == 0)
+ {
+ lynq_get_rtc_time = (int (*)(unsigned long *ulsec))dlsym(dlHandle_systime, "lynq_get_rtc_time");
+ if (NULL == lynq_get_rtc_time)
+ {
+ fprintf(stderr, "Failed to dlsym function lynq_get_rtc_time : %s\n", dlerror());
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ unsigned long time_ret;
+ ret = lynq_get_rtc_time(&time_ret);
+ time_t tp = (time_t)time_ret;
+ char *rtc_time = ctime(&tp);
+ printf("rtc_time seconds = %lu\n", time_ret);
+ printf("rtc time = %s\n", rtc_time);
+ }
+#endif
+ else if (strcmp(cmd, "src_status") == 0)
+ {
+ ret = lynq_get_time_src_status_demo(argc, argv);
+ }
+ else if (strcmp(cmd,"sync_status") == 0)
+ {
+ ret = lynq_get_sync_status_demo(argc, argv);
+ }
+ else
+ {
+ printf("command wrong !\n");
+ dlclose(dlHandle_systime);
+ return -1;
+ }
+ if (0 != ret)
+ {
+ printf("ret = %d\n Command execution failure.\n", ret);
+ }
+ dlclose(dlHandle_systime);
+ return ret;
+}
diff --git a/mbtk/test/liblynq_lib_t106/lynq_wifi_test.c b/mbtk/test/liblynq_lib_t106/lynq_wifi_test.c
new file mode 100755
index 0000000..b8f5189
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/lynq_wifi_test.c
@@ -0,0 +1,505 @@
+#include "sta_cli.h"
+#include "lynq_wifi.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+
+#define MAX_LEN 15
+#define MAX_VALUE_LEN 512
+
+#define ENABLE "enable"
+#define DISABLE "disable"
+#define MODE_SET "mode_set"
+#define MODE_GET "mode_get"
+#define AP_GET_STATUS "ap_get_status"
+#define AP_ACL_SET "ap_acl_set"
+#define AP_ACL_GET "ap_acl_get"
+#define AP_SSID_SET "ap_ssid_set"
+#define AP_SSID_GET "ap_ssid_get"
+#define AP_SSID_HIDE_SET "ap_ssid_hide_set"
+#define AP_SSID_HIDE_GET "ap_ssid_hide_get"
+#define AP_MODE_SET "ap_mode_set"
+#define AP_MODE_GET "ap_mode_get"
+#define AP_BAND_SET "ap_band_set"
+#define AP_BAND_GET "ap_band_get"
+#define AP_CHANNEL_SET "ap_channel_set"
+#define AP_CHANNEL_GET "ap_channel_get"
+#define AP_AUTH_SET "ap_auth_set"
+#define AP_AUTH_GET "ap_auth_get"
+#define AP_auth_GET_S "ap_auth_get_s"
+#define AP_MAX_STA_SET "ap_max_sta_set"
+#define AP_MAX_STA_GET "ap_max_sta_get"
+#define AP_LIST_GET "list_get"
+#define AP_PKT_GET "ap_pkt_get"
+#define AP_START "ap_start"
+#define AP_STOP "ap_stop"
+#define AP_RESTART "ap_restart"
+#define AP_REG_HANDLE "reg_handle"
+#define STA_PARAM_SET "sta_param_set"
+#define STA_PARAM_GET "sta_param_get"
+#define STA_START "sta_start"
+#define STA_STOP "sta_stop"
+#define STA_STATUS_GET "sta_status_get"
+#define STA_PKT_GET "sta_pkt_get"
+#define STA_SCAN "sta_scan"
+
+void lynq_wifi_event_handle_sta_demo(lynq_wifi_sta_scan_list_t *event)
+{
+ int i = 0;
+ for (i = 0; i < event->cnt; i++)
+ {
+ printf("[lynq-wifi-demo] %s : ap[%d]:%s,%d,%d,%d,%s,%d,%d,%d\n", __func__, i,
+ event->info[i].essid, event->info[i].auth,
+ event->info[i].cipher, event->info[i].channel, event->info[i].bssid,
+ event->info[i].signal_level,event->info[i].frequency,event->info[i].signal);
+ }
+}
+
+
+static void help()
+{
+ printf("please read the define \n");
+
+}
+
+int main(int argc, char *argv[])
+{
+ int test_int = 0;
+ char value[MAX_VALUE_LEN] = {0};
+ lynq_wifi_ap_auth_t auth_mode = {0};
+ lynq_lanhost_ts lanhost = {0};
+ lynq_wifi_pkt_stats_t pkt_stat = {0};
+ lynq_wifi_sta_param_t sta_param = {0};
+ lynq_wifi_sta_status_t sta_status = {0};
+
+ printf(">>>>>>>>>>>>>>>>>>>>>>>>Enter cmd:\n");
+ char cmd[MAX_VALUE_LEN];
+ while(1)
+ {
+ memset(cmd, 0, MAX_VALUE_LEN);
+ test_int = 0;
+ memset(value, 0, MAX_VALUE_LEN);
+ memset(&auth_mode, 0, sizeof(lynq_wifi_ap_auth_t));
+ memset(&lanhost, 0, sizeof(lynq_lanhost_ts));
+ memset(&pkt_stat, 0, sizeof(lynq_wifi_pkt_stats_t));
+ memset(&sta_param, 0, sizeof(lynq_wifi_sta_param_t));
+ memset(&sta_status, 0, sizeof(lynq_wifi_sta_status_t));
+ if(fgets(cmd, MAX_VALUE_LEN, stdin))
+ {
+ char *ptr = cmd + strlen(cmd) - 1;
+ while(ptr >= cmd && (*ptr == '\r' || *ptr == '\n'))
+ {
+ *ptr-- = '\0';
+ }
+
+ if(!strncasecmp(cmd, ENABLE, strlen(ENABLE)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_enable())
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, DISABLE, strlen(DISABLE)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_disable())
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, MODE_SET, strlen(MODE_SET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_work_mode_set(LYNQ_WIFI_WORK_MODE_AP0))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, MODE_GET, strlen(MODE_GET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_work_mode_get(&test_int))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("mode:%d\n",test_int);
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_ACL_SET, strlen(AP_ACL_SET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_acl_set(LYNQ_WIFI_AP_INDEX_AP1,
+ LYNQ_WIFI_MAC_ACL_RULE_WHITE_LIST, "AA:BB:CC:DD:EE:01;AA:BB:CC:01:EE:00;AA:BB:01:DD:EE:00"))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_ACL_GET, strlen(AP_ACL_GET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_acl_get(LYNQ_WIFI_AP_INDEX_AP1, &test_int, value))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("value:%s\n",value);
+ printf("mode:%d\n",test_int);
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_SSID_SET, strlen(AP_SSID_SET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_ssid_set(LYNQ_WIFI_AP_INDEX_AP1, "testssid"))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_SSID_GET, strlen(AP_SSID_GET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_ssid_get(LYNQ_WIFI_AP_INDEX_AP1, value))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("value:%s\n",value);
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_SSID_HIDE_SET, strlen(AP_SSID_HIDE_SET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_ssid_hide_set(LYNQ_WIFI_AP_INDEX_AP1, 1))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_SSID_HIDE_GET, strlen(AP_SSID_HIDE_GET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_ssid_hide_get(LYNQ_WIFI_AP_INDEX_AP1, &test_int))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+
+ printf("value:%d\n", test_int);
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_MODE_SET, strlen(AP_MODE_SET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_mode_set(LYNQ_WIFI_AP_INDEX_AP1, 1))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_MODE_GET, strlen(AP_MODE_GET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_mode_get(LYNQ_WIFI_AP_INDEX_AP1, &test_int))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("value:%d\n", test_int);
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_BAND_SET, strlen(AP_BAND_SET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_bandwidth_set(LYNQ_WIFI_AP_INDEX_AP1, 2))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_BAND_GET, strlen(AP_BAND_GET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_bandwidth_get(LYNQ_WIFI_AP_INDEX_AP1, &test_int))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("value:%d\n", test_int);
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_CHANNEL_SET, strlen(AP_CHANNEL_SET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_channel_set(LYNQ_WIFI_AP_INDEX_AP1, "CN", 35))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_CHANNEL_GET, strlen(AP_CHANNEL_GET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_channel_get(LYNQ_WIFI_AP_INDEX_AP1, value, &test_int))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("country:%s, channel:%d\n", value, test_int);
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_AUTH_SET, strlen(AP_AUTH_SET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_auth_set(LYNQ_WIFI_AP_INDEX_AP1, 1, "123456"))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_AUTH_GET, strlen(AP_AUTH_GET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_auth_get(LYNQ_WIFI_AP_INDEX_AP1, &test_int, value))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("value:%s\n", value);
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_auth_GET_S, strlen(AP_auth_GET_S)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_auth_get_s(LYNQ_WIFI_AP_INDEX_AP1, &auth_mode))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("auth_mode:%s\n", auth_mode.passwd);
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_MAX_STA_SET, strlen(AP_MAX_STA_SET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_max_sta_set(LYNQ_WIFI_AP_INDEX_AP1, 8))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_MAX_STA_GET, strlen(AP_MAX_STA_GET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_max_sta_get(LYNQ_WIFI_AP_INDEX_AP1, &test_int))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("max_sta:%d\n",test_int);
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_LIST_GET, strlen(AP_LIST_GET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_lanhost_get_list(&lanhost))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_PKT_GET, strlen(AP_PKT_GET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_get_ap_pkt_stats(LYNQ_WIFI_AP_INDEX_AP1, &pkt_stat))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_START, strlen(AP_START)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_start(LYNQ_WIFI_AP_INDEX_AP1))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_STOP, strlen(AP_STOP)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_stop(LYNQ_WIFI_AP_INDEX_AP1))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_RESTART, strlen(AP_RESTART)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_ap_restart(LYNQ_WIFI_AP_INDEX_AP1))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, AP_REG_HANDLE, strlen(AP_REG_HANDLE)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_register_handle(NULL, lynq_wifi_event_handle_sta_demo, NULL))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, STA_PARAM_SET, strlen(STA_PARAM_SET)))
+ {
+ strcpy(sta_param.ssid, "test");
+ strcpy(sta_param.passwd, "123456");
+ if(LYNQ_ERR_SUCCESS != qser_wifi_sta_param_set(&sta_param))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, STA_PARAM_GET, strlen(STA_PARAM_GET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_sta_param_get(&sta_param))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("ssid:%s, passwd:%s\n", sta_param.ssid, sta_param.passwd);
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, STA_START, strlen(STA_START)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_sta_start())
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, STA_STOP, strlen(STA_STOP)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_sta_stop())
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, STA_STATUS_GET, strlen(STA_STATUS_GET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_sta_get_status(&sta_status))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, STA_PKT_GET, strlen(STA_PKT_GET)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_get_sta_pkt_stats(&pkt_stat))
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+ else if(!strncasecmp(cmd, STA_SCAN, strlen(STA_SCAN)))
+ {
+ if(LYNQ_ERR_SUCCESS != qser_wifi_sta_start_scan())
+ {
+ printf("LYNQ_ERR_FAIL\n");
+ }
+ else
+ {
+ printf("LYNQ_ERR_SUCCESS\n");
+ }
+ }
+
+ else if(!strcasecmp(cmd, "h") || !strcasecmp(cmd, "help"))
+ {
+ help();
+ }
+ else if(!strcasecmp(cmd, "q"))
+ {
+ break;
+ }
+ else
+ {
+ printf("unknown command\n");
+ }
+ }
+ }
+
+
+ return 0;
+}
+
diff --git a/mbtk/test/liblynq_lib_t106/poweralarm-demo.cpp b/mbtk/test/liblynq_lib_t106/poweralarm-demo.cpp
new file mode 100755
index 0000000..6516165
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/poweralarm-demo.cpp
@@ -0,0 +1,308 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <dlfcn.h>
+#include <stdint.h>
+
+
+#define INIT_SUCCESS 0
+#define RTC_DEINIT -1
+typedef struct
+{
+ int cmdIdx;
+ char *funcName;
+} st_api_test_case;
+
+
+//for server test
+st_api_test_case at_api_testcases[] =
+{
+ {0, (char*)"print_help"},
+ {1, (char*)"lynq_rtc_service_init"},
+ {2, (char*)"poweralarm"},
+ {3, (char*)"wakealarm"},
+ {4, (char*)"cancel_wakealarm"},
+ {5, (char*)"lynq_set_poweralarm"},
+ {6, (char*)"lynq_set_wakealarm"},
+ {7, (char*)"lynq_rtc_service_deinit"},
+ {-1, NULL}
+};
+
+ int init_flag = -1;
+ int src_id = -1;
+ void *dlHandle_poweralarm = NULL;
+
+typedef int (*lynq_wakealarm_add_cb)(unsigned int src_id, int rtc_id);
+
+int (*lynq_rtc_service_init)(void);
+int (*lynq_rtc_service_deinit)(void);
+int (*poweralarm)(char *buffer,int src_id);
+int (*wakealarm)(char *buffer,int srcid,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify);
+int (*cancel_wakealarm)(int src_id,int rtc_id);
+int (*lynq_set_poweralarm)(unsigned long time_sec,int src_id);
+int (*lynq_set_wakealarm)(unsigned long time_sec,int srcid,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify);
+
+
+
+void print_help(void)
+{
+ int i;
+ printf("Supported test cases:\n");
+ for(i = 0; ; i++)
+ {
+ if(at_api_testcases[i].cmdIdx == -1)
+ {
+ break;
+ }
+ printf("%d:\t%s\n", at_api_testcases[i].cmdIdx, at_api_testcases[i].funcName);
+ }
+}
+
+int lynq_wakealarm_add_callback(unsigned int src_id, int rtc_id)
+{
+ printf("wake alarm callback test \n");
+ return 0;
+}
+
+
+int main(int argc,char *argv[])
+{
+
+ int cmdIdx = 0;
+ printf("Enter main function\n");
+
+ const char *dlHandle_Path_poweralarm = "/lib/libpoweralarm.so";
+ dlHandle_poweralarm = dlopen(dlHandle_Path_poweralarm, RTLD_NOW);
+ if (dlHandle_poweralarm == NULL)
+ {
+ printf("dlopen dlHandle_fota failed: %s\n", dlerror());
+ return -1;
+ }
+
+ poweralarm = (int (*)(char *buffer,int src_ids))dlsym(dlHandle_poweralarm, "poweralarm");
+ if(poweralarm == NULL)
+ {
+ printf("poweralarm is null\n");
+ return -1;
+ }
+
+ wakealarm = (int (*)(char *buffer,int srcid,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify))dlsym(dlHandle_poweralarm, "wakealarm");
+ if(wakealarm == NULL)
+ {
+ printf("wakealarm is null\n");
+ return -1;
+ }
+ lynq_set_poweralarm = (int (*)(unsigned long,int src_id))dlsym(dlHandle_poweralarm,"lynq_set_poweralarm");
+ if(lynq_set_poweralarm == NULL)
+ {
+ printf("lynq_set_poweralarm is null\n");
+ return -1;
+ }
+ lynq_set_wakealarm = (int (*)(unsigned long,int srcid,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify))dlsym(dlHandle_poweralarm,"lynq_set_wakealarm");
+ if(lynq_set_wakealarm == NULL)
+ {
+ printf("lynq_set_wakealarm is null\n");
+ return -1;
+ }
+
+ cancel_wakealarm = (int (*)(int src_id,int rtc_id))dlsym(dlHandle_poweralarm, "cancel_wakealarm");
+ if(cancel_wakealarm == NULL)
+ {
+ printf("cancel_wakealarm is null\n");
+ return -1;
+ }
+
+ lynq_rtc_service_init = (int(*)())dlsym(dlHandle_poweralarm,"lynq_rtc_service_init");
+ if(lynq_rtc_service_init == NULL)
+ {
+ printf("lynq_rtc_service_init is null\n");
+ return -1;
+ }
+
+ lynq_rtc_service_deinit = (int (*)())dlsym(dlHandle_poweralarm,"lynq_rtc_service_deinit");
+ if(lynq_rtc_service_deinit == NULL)
+ {
+ printf("lynq_rtc_service_deinit is null \n");
+ return -1;
+ }
+
+ print_help();
+ while(1)
+ {
+
+ printf("\nplease input cmd index(-1 exit): ");
+ if(1 != scanf("%d", &cmdIdx) || cmdIdx == -1)
+ {
+ break;
+ }
+ switch(cmdIdx)
+ {
+ case 0:
+ print_help();
+ break;
+ case 1:
+ {
+ src_id = lynq_rtc_service_init();
+ if(src_id <= 0)
+ {
+
+ printf("RTC service init failed ");
+ return -1;
+ }
+ else
+ {
+ init_flag = INIT_SUCCESS;
+ }
+
+ break;
+ }
+ case 2:
+ {
+
+ if(init_flag != INIT_SUCCESS)
+ {
+ printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+ }
+ else
+ {
+ int ret = 0;
+ char tmp_time[32] = {0};
+ printf("Set poweralarm time,e.g: 60 (seconds)\n");
+ if(1 != scanf("%s",tmp_time))
+ break;
+ ret = poweralarm(tmp_time,src_id);
+ if(ret != 0)
+ {
+ printf("set poweralarm failed\n");
+ return -1;
+ }
+ }
+ break;
+ }
+ case 3:
+ {
+ if(init_flag != INIT_SUCCESS)
+ {
+ printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+ }
+ else
+ {
+ int ret = 0;
+ char tmp_time[32]={0};
+ int rtc_id = 0;
+ printf("Set wakealarm time ,e.g: 60 1 (seconds)\n");
+ if(2 != scanf("%s%d",tmp_time,&rtc_id))
+ break;
+
+ ret = wakealarm(tmp_time,src_id,rtc_id,lynq_wakealarm_add_callback);
+ if(ret != 0)
+ {
+ printf("set wakealarm failed\n");
+ return -1;
+ }
+ }
+ break;
+ }
+ case 4:
+ {
+ if(init_flag != INIT_SUCCESS)
+ {
+ printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+ }
+ else
+ {
+ int ret = 0;
+ int rtc_id = 0;
+ printf("Please input you want cancel rtc timer rtc id\n");
+ if(1 != scanf("%d",&rtc_id))
+ break;
+ ret = cancel_wakealarm(src_id,rtc_id);
+ if(ret != 0)
+ {
+ printf("Cancel_wakealarm failed!!!");
+ return -1;
+ }
+ }
+ break;
+ }
+ case 5:
+ {
+ if(init_flag != INIT_SUCCESS)
+ {
+ printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+ }
+ else
+ {
+ int ret = 0;
+ unsigned long time_sec = 0;
+ printf("Input time_sec you want poweralarm,e.g: 60 (seconds)\n");
+ if(1 != scanf("%lu",&time_sec))
+ break;
+ ret =lynq_set_poweralarm(time_sec,src_id);
+ printf("ret is %d\n",ret);
+ if(ret != 0)
+ {
+ printf("lynq_set_poweralarm failed\n");
+ return -1;
+ }
+ }
+ break;
+ }
+ case 6:
+ {
+ if(init_flag != INIT_SUCCESS)
+ {
+ printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+ }
+ else
+ {
+ int ret = 0;
+ unsigned long time_sec = 0;
+ int rtc_id;
+ printf("Input time_sec you want wakealarm,e.g:60 1(seconds)\n");
+ if(2 != scanf("%lu%d",&time_sec,&rtc_id))
+ break;
+ ret =lynq_set_wakealarm(time_sec,src_id,rtc_id,lynq_wakealarm_add_callback);
+ if(ret != 0)
+ {
+ printf("lynq_set_wakealarm failed\n");
+ return -1;
+ }
+ }
+ break;
+ }
+ case 7:
+ {
+ if(init_flag != INIT_SUCCESS)
+ {
+ printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+ }
+ else
+ {
+ int ret = -1;
+ printf("rtc servce deinit !!!!!!!!!!!!");
+ ret = lynq_rtc_service_deinit();
+ if(ret != 0)
+ {
+ printf("lynq rtc service deinit failed \n");
+ return -1;
+ }
+ else
+ {
+ init_flag = RTC_DEINIT;
+ }
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+ }
+
+ return 0;
+
+}
+
diff --git a/mbtk/test/liblynq_lib_t106/qser_sim_test.c b/mbtk/test/liblynq_lib_t106/qser_sim_test.c
new file mode 100755
index 0000000..e2bc53a
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/qser_sim_test.c
@@ -0,0 +1,448 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <pthread.h>
+#include <unistd.h>
+#include <dlfcn.h>
+#include <stdint.h>
+
+#include"lynq_qser_sim.h"
+
+
+#define BUF_SIZE 32
+#define BUF_PIN QSER_SIM_PIN_LEN_MAX
+#define VER_SIZE 128
+
+typedef uint32_t sim_client_handle_type;
+
+sim_client_handle_type ph_sim = 2023;
+sim_client_handle_type h_sim = 2023;
+int flag_init = 0;
+
+typedef struct
+{
+ int cmdIdx;
+ const char *funcName;
+} st_api_test_case;
+
+//for server test
+st_api_test_case at_api_testcases[] =
+{
+ {0, "qser_sim_init"},
+ {1, "qser_get_imsi"},
+ {2, "qser_get_iccid"},
+ {3, "qser_get_phonenumber"},
+ {4, "qser_verify_pin"},
+ {5, "qser_change_pin"},
+ {6, "qser_unlock_pin"},
+ {7, "qser_enable_pin"},
+ {8, "qser_disable_pin"},
+ {9, "qser_get_sim_status"},
+ {10, "qser_get_imei"},
+ {11, "qser_get_imei_and_sv"},
+ {12, "qser_reset_modem"},
+ {13, "qser_get_version"},
+ {14, "qser_reset_sim"},
+ {15, "qser_deinit_sim"},
+ {-1, NULL}
+};
+
+void print_help(void)
+{
+ int i;
+ printf("Supported test cases:\n");
+ for(i = 0; ; i++)
+ {
+ if(at_api_testcases[i].cmdIdx == -1)
+ {
+ break;
+ }
+ printf("%d:\t%s\n", at_api_testcases[i].cmdIdx, at_api_testcases[i].funcName);
+ }
+}
+
+int main(int argc, char const *argv[])
+{
+ int cmdIdx = 0;
+ int res = 0;
+
+ print_help();
+ while(1)
+ {
+ printf("\nplease input cmd index(-1 exit): ");
+ int count = scanf("%d", &cmdIdx);
+ if(cmdIdx == -1 || count != 1)
+ {
+ break;
+ }
+
+ switch(cmdIdx)
+ {
+ //"qser_sim_init"
+ case 0:
+ {
+ if(flag_init == 1)
+ {
+ printf("init is already\n");
+ break;
+ }
+ else{
+ //int token;
+ //printf("input token\n");
+ //scanf("%d", &token);
+ res = qser_sim_client_init(&h_sim);
+ if(res == 0)
+ {
+ printf("Run qser_sim_client_init\n");
+ flag_init = 1;
+ }else{
+ printf("qser_sim_client_init error\n");
+ }
+
+ break;
+ }
+ }
+
+ //"qser_sim_getimsi"
+ case 1:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char imsi[BUF_SIZE] = {0};
+ QSER_SIM_APP_ID_INFO_T pt_info;
+ res = qser_sim_getimsi(h_sim, &pt_info, imsi, 32);
+ if(res == 0)
+ {
+ printf("imsi is %s!!!\n",imsi);
+ }else{
+ printf("get imsi error, res = %d\n", res);
+ }
+ }
+ break;
+ }
+
+ //"qser_get_iccid"
+ case 2:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char iccid[BUF_SIZE] = {0};
+ res = qser_sim_geticcid(h_sim, QSER_SIM_SLOT_ID_1, iccid, 32);
+ if(res == 0)
+ {
+ printf("get iccid success!!! iccid is %s\n",iccid);
+ }else{
+ printf("get iccid error, res = %d\n", res);
+ }
+ }
+ break;
+ }
+ //qser_get_phonenumber
+ case 3:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char phonenumber[BUF_SIZE] = "";
+ QSER_SIM_APP_ID_INFO_T pt_info;
+ res = qser_sim_getphonenumber(h_sim, &pt_info, phonenumber, 32);
+ if(res == 0)
+ {
+ printf("get phonenumber success!!! phonenumber is %s\n",phonenumber);
+ }else{
+ printf("get phonenumber error, res = %d\n", res);
+ }
+ }
+ break;
+ }
+ //qser_verify_pin
+ case 4:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char pin[BUF_PIN] = {0};
+ QSER_SIM_VERIFY_PIN_INFO_T pt_info;
+ printf("input pin\n");
+ if(scanf("%s", pin) != 1)
+ break;
+ strncpy(pt_info.pin_value, pin, BUF_PIN);
+ printf("pin_value = %s , pin = %s\n", pt_info.pin_value, pin);
+ pt_info.pin_value_len = strlen(pt_info.pin_value);
+
+ res = qser_sim_verifypin(h_sim, &pt_info);
+ if(res == 0)
+ {
+ printf("verify pin success!!!\n");
+ }else{
+ printf("verify pin error, res = %d\n", res);
+ }
+
+ }
+ break;
+ }
+ //qser_change_pin
+ case 5:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char old_pin[BUF_PIN] = {0};
+ QSER_SIM_CHANGE_PIN_INFO_T pt_info;
+ printf("input old pin\n");
+ if(scanf("%s", old_pin) != 1)
+ break;
+ char new_pin[BUF_PIN] = {0};
+ printf("input new pin\n");
+ if(scanf("%s", new_pin) != 1)
+ break;
+ strncpy(pt_info.old_pin_value, old_pin, BUF_PIN);
+ strncpy(pt_info.new_pin_value, new_pin, BUF_PIN);
+ printf("pt_info.old_pin_value = %s, old_pin = %s\n", pt_info.old_pin_value, old_pin);
+ printf("pt_info.new_pin_value = %s, new_pin = %s\n", pt_info.new_pin_value, new_pin);
+ pt_info.old_pin_value_len = strlen(pt_info.old_pin_value);
+ pt_info.new_pin_value_len = strlen(pt_info.new_pin_value);
+
+ res = qser_sim_changepin(h_sim, &pt_info);
+ if(res == 0)
+ {
+ printf("change pin success!!!\n");
+ }else{
+ printf("change pin error, res = %d\n", res);
+ }
+ }
+ break;
+ }
+ //qser_unlock_pin
+ case 6:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char puk[BUF_PIN] = {0};
+ QSER_SIM_UNBLOCK_PIN_INFO_T pt_info;
+ printf("input puk\n");
+ if(scanf("%s", puk) != 1)
+ break;
+ char new_pin[BUF_PIN] = {0};
+ printf("input new pin\n");
+ if(scanf("%s", new_pin) != 1)
+ break;
+
+ strncpy(pt_info.puk_value, puk, BUF_PIN);
+ strncpy(pt_info.new_pin_value, new_pin, BUF_PIN);
+ printf("pt_info.puk_value = %s, puk = %s\n", pt_info.puk_value, puk);
+ printf("pt_info.new_pin_value = %s, new_pin = %s\n", pt_info.new_pin_value, new_pin);
+ pt_info.new_pin_value_len = strlen(pt_info.new_pin_value);
+ pt_info.puk_value_len = strlen(pt_info.puk_value);
+
+ res = qser_sim_unblockpin(h_sim, &pt_info);
+ if(res == 0)
+ {
+ printf("unlock pin success!!!\n");
+ }else{
+ printf("unlock pin error, res = %d\n", res);
+ }
+ }
+ break;
+ }
+ //qser_enable_pin
+ case 7:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char pin[BUF_PIN] = {0};
+ QSER_SIM_ENABLE_PIN_INFO_T pt_info;
+ printf("input pin\n");
+ if(scanf("%s", pin) != 1)
+ break;
+ strncpy(pt_info.pin_value, pin, BUF_PIN);
+ pt_info.pin_value_len = strlen(pt_info.pin_value);
+
+ res = qser_sim_enablepin(h_sim, &pt_info);
+ if(res == 0)
+ {
+ printf("pin enabled!!!\n");
+ }else{
+ printf("pin enable error, res =%d\n", res);
+ }
+ }
+ break;
+ }
+ //qser_disable_pin
+ case 8:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char pin[BUF_PIN] = {0};
+ QSER_SIM_ENABLE_PIN_INFO_T pt_info;
+ printf("input pin\n");
+ if(scanf("%s", pin) != 1)
+ break;
+ strncpy(pt_info.pin_value, pin, BUF_PIN);
+ pt_info.pin_value_len = strlen(pt_info.pin_value);
+
+ res = qser_sim_disablepin(h_sim, &pt_info);
+ if(res == 0)
+ {
+ printf("pin disnabled!!!\n");
+ }else{
+ printf("pin disable error,res = %d\n", res);
+ }
+ }
+ break;
+ }
+ //qser_get_sim_status
+ case 9:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ QSER_SIM_CARD_STATUS_INFO_T pt_info;
+
+ res = qser_sim_getcardstatus(h_sim, QSER_SIM_SLOT_ID_1, &pt_info);
+ if(res == 0)
+ {
+ printf("state is %d !!!\n",pt_info.e_card_state);
+ }else{
+ printf("get imsi error,res = %d\n", res);
+ }
+ }
+ break;
+ }
+ //qser_get_imei
+ case 10:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char imei[BUF_SIZE]="";
+ res = qser_sim_getimei(h_sim, imei);
+ if(res == 0)
+ {
+ printf("get imei success!!! imei = %s\n", imei);
+ }else{
+ printf("get imei error, res = %d\n", res);
+ }
+ }
+ //flag_init = 0;
+ break;
+ }
+ //qser_get_imei_and_sv
+ case 11:
+ {
+ char imei[BUF_SIZE]="";
+ char sv[BUF_SIZE]="";
+
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ res = qser_get_imei_and_sv(h_sim, imei, sv);
+ if(res == 0)
+ {
+ printf("get imei and sv success!!!imei = %s sv = %s\n", imei, sv);
+ }else{
+ printf("get imei and sv error, res = %d\n", res);
+ }
+ }
+ //flag_init = 0;
+ break;
+ }
+ //qser_reset_modem
+ case 12:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ res = qser_reset_modem(h_sim);
+ if(res == 0)
+ {
+ printf("reset modem success!!!\n");
+ }else{
+ printf("reset modem error, res = %d\n", res);
+ }
+ }
+ //flag_init = 0;
+ break;
+ }
+ //qser_get_version
+ case 13:
+ {
+ char buf[VER_SIZE]="";
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ res = qser_get_version(h_sim, buf);
+ if(res == 0)
+ {
+ printf("get version success!!! ver = %s\n", buf);
+ }else{
+ printf("get version error, res = %d\n", res);
+ }
+ }
+ //flag_init = 0;
+ break;
+ }
+ //qser_reset_sim
+ case 14:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ res = qser_reset_sim(h_sim);
+ if(res == 0)
+ {
+ printf("reset sim success!!!\n");
+ }else{
+ printf("reset sim error, res = %d\n", res);
+ }
+ }
+ //flag_init = 0;
+ break;
+ }
+ //qser_deinit_sim
+ case 15:
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ res = qser_sim_client_deinit(h_sim);
+ if(res == 0)
+ {
+ printf("sim deinit success is!!!\n");
+ }else{
+ printf("sim deint errors, res = %d\n", res);
+ }
+ }
+ flag_init = 0;
+ break;
+ }
+ default:
+ print_help();
+ break;
+ }
+
+ }
+
+ return 0;
+}
diff --git a/mbtk/test/liblynq_lib_t106/ring_tele.h b/mbtk/test/liblynq_lib_t106/ring_tele.h
new file mode 100755
index 0000000..580bfe8
--- /dev/null
+++ b/mbtk/test/liblynq_lib_t106/ring_tele.h
@@ -0,0 +1,6364 @@
+/* Generated by reswrap version 4.0.0 */
+
+/* created by reswrap from file m.pcm */
+#ifndef RING_TELE
+#define RING_TELE
+
+#define PCM_DATA ring_tele
+#define PCM_DATA_SIZE (sizeof(ring_tele) / sizeof(ring_tele[0]))
+
+const unsigned char ring_tele[]={
+0xd8, 0xff, 0xbc, 0xff, 0xa4, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xd8, 0xff,
+0xfc, 0xff, 0x18, 0x00, 0x3a, 0x00, 0x44, 0x00, 0x64, 0x00, 0x6a, 0x00, 0x4e, 0x00, 0x38, 0x00,
+0x14, 0x00, 0xf6, 0xff, 0xc6, 0xff, 0x9a, 0xff, 0x86, 0xff, 0x70, 0xff, 0x68, 0xff, 0x86, 0xff,
+0x9c, 0xff, 0xca, 0xff, 0xf0, 0xff, 0x22, 0x00, 0x58, 0x00, 0x74, 0x00, 0x86, 0x00, 0x82, 0x00,
+0x6a, 0x00, 0x42, 0x00, 0x1a, 0x00, 0xe8, 0xff, 0xa8, 0xff, 0x74, 0xff, 0x66, 0xff, 0x4c, 0xff,
+0x56, 0xff, 0x7e, 0xff, 0xa2, 0xff, 0xd6, 0xff, 0x0c, 0x00, 0x3e, 0x00, 0x72, 0x00, 0x9a, 0x00,
+0xae, 0x00, 0xa0, 0x00, 0x80, 0x00, 0x4e, 0x00, 0x06, 0x00, 0xd2, 0xff, 0x96, 0xff, 0x62, 0xff,
+0x3e, 0xff, 0x3a, 0xff, 0x44, 0xff, 0x5c, 0xff, 0x9e, 0xff, 0xd0, 0xff, 0x06, 0x00, 0x42, 0x00,
+0x8c, 0x00, 0xa0, 0x00, 0xac, 0x00, 0x9e, 0x00, 0x6e, 0x00, 0x30, 0x00, 0xfc, 0xff, 0xc2, 0xff,
+0x7c, 0xff, 0x4c, 0xff, 0x20, 0xff, 0x20, 0xff, 0x34, 0xff, 0x64, 0xff, 0xa4, 0xff, 0xec, 0xff,
+0x24, 0x00, 0x5c, 0x00, 0x96, 0x00, 0xb6, 0x00, 0xc2, 0x00, 0x9c, 0x00, 0x6c, 0x00, 0x26, 0x00,
+0xee, 0xff, 0xb2, 0xff, 0x74, 0xff, 0x4e, 0xff, 0x36, 0xff, 0x3a, 0xff, 0x54, 0xff, 0x7a, 0xff,
+0xc8, 0xff, 0x06, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x9c, 0x00, 0xae, 0x00, 0xa2, 0x00, 0x86, 0x00,
+0x4c, 0x00, 0x12, 0x00, 0xdc, 0xff, 0xa2, 0xff, 0x66, 0xff, 0x48, 0xff, 0x44, 0xff, 0x46, 0xff,
+0x62, 0xff, 0x90, 0xff, 0xce, 0xff, 0x02, 0x00, 0x32, 0x00, 0x62, 0x00, 0x8a, 0x00, 0x98, 0x00,
+0x90, 0x00, 0x72, 0x00, 0x42, 0x00, 0x0a, 0x00, 0xd2, 0xff, 0xaa, 0xff, 0x74, 0xff, 0x5a, 0xff,
+0x5a, 0xff, 0x68, 0xff, 0x84, 0xff, 0xa8, 0xff, 0xde, 0xff, 0x1a, 0x00, 0x56, 0x00, 0x74, 0x00,
+0x88, 0x00, 0x96, 0x00, 0x86, 0x00, 0x60, 0x00, 0x3a, 0x00, 0xfe, 0xff, 0xce, 0xff, 0xa8, 0xff,
+0x90, 0xff, 0x82, 0xff, 0x70, 0xff, 0x7e, 0xff, 0x94, 0xff, 0xba, 0xff, 0xf4, 0xff, 0x16, 0x00,
+0x40, 0x00, 0x54, 0x00, 0x6a, 0x00, 0x60, 0x00, 0x52, 0x00, 0x46, 0x00, 0x0c, 0x00, 0xf6, 0xff,
+0xd2, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0x94, 0xff, 0x96, 0xff, 0xa6, 0xff, 0xd2, 0xff,
+0xee, 0xff, 0x0a, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x3a, 0x00, 0x44, 0x00, 0x42, 0x00, 0x36, 0x00,
+0x14, 0x00, 0xfe, 0xff, 0xea, 0xff, 0xd2, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xb4, 0xff, 0xbc, 0xff,
+0xc4, 0xff, 0xd6, 0xff, 0xec, 0xff, 0xf8, 0xff, 0x0e, 0x00, 0x16, 0x00, 0x14, 0x00, 0x22, 0x00,
+0x0e, 0x00, 0x14, 0x00, 0x0e, 0x00, 0xfc, 0xff, 0xfa, 0xff, 0xe8, 0xff, 0xda, 0xff, 0xd2, 0xff,
+0xce, 0xff, 0xc8, 0xff, 0xcc, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd2, 0xff, 0xec, 0xff, 0xec, 0xff,
+0xee, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff,
+0xf8, 0xff, 0xf8, 0xff, 0xee, 0xff, 0xea, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xc6, 0xff,
+0xcc, 0xff, 0xca, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xe6, 0xff, 0xf8, 0xff, 0x10, 0x00, 0x1e, 0x00,
+0x20, 0x00, 0x28, 0x00, 0x10, 0x00, 0x16, 0x00, 0x12, 0x00, 0x04, 0x00, 0xe4, 0xff, 0xc0, 0xff,
+0xb6, 0xff, 0x9c, 0xff, 0x8c, 0xff, 0x98, 0xff, 0xac, 0xff, 0xbc, 0xff, 0xdc, 0xff, 0xf8, 0xff,
+0x1a, 0x00, 0x36, 0x00, 0x42, 0x00, 0x50, 0x00, 0x40, 0x00, 0x38, 0x00, 0x18, 0x00, 0xf8, 0xff,
+0xd2, 0xff, 0xa8, 0xff, 0x86, 0xff, 0x78, 0xff, 0x76, 0xff, 0x86, 0xff, 0xa6, 0xff, 0xb6, 0xff,
+0xe4, 0xff, 0x10, 0x00, 0x48, 0x00, 0x68, 0x00, 0x78, 0x00, 0x7c, 0x00, 0x6c, 0x00, 0x46, 0x00,
+0x22, 0x00, 0xf4, 0xff, 0xd0, 0xff, 0x9c, 0xff, 0x74, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x70, 0xff,
+0x90, 0xff, 0xc2, 0xff, 0xea, 0xff, 0x22, 0x00, 0x60, 0x00, 0x7a, 0x00, 0x94, 0x00, 0x9a, 0x00,
+0x7a, 0x00, 0x54, 0x00, 0x2c, 0x00, 0xf4, 0xff, 0xc2, 0xff, 0x86, 0xff, 0x52, 0xff, 0x3e, 0xff,
+0x3c, 0xff, 0x4a, 0xff, 0x7a, 0xff, 0xb8, 0xff, 0xf4, 0xff, 0x2e, 0x00, 0x68, 0x00, 0x96, 0x00,
+0xaa, 0x00, 0xb6, 0x00, 0x90, 0x00, 0x6a, 0x00, 0x32, 0x00, 0xfa, 0xff, 0xba, 0xff, 0x76, 0xff,
+0x3e, 0xff, 0x2c, 0xff, 0x30, 0xff, 0x4c, 0xff, 0x82, 0xff, 0xc8, 0xff, 0x02, 0x00, 0x36, 0x00,
+0x7c, 0x00, 0xa2, 0x00, 0xb4, 0x00, 0xae, 0x00, 0x8e, 0x00, 0x60, 0x00, 0x0e, 0x00, 0xe4, 0xff,
+0xa0, 0xff, 0x62, 0xff, 0x36, 0xff, 0x18, 0xff, 0x2c, 0xff, 0x56, 0xff, 0x8e, 0xff, 0xcc, 0xff,
+0xfc, 0xff, 0x30, 0x00, 0x72, 0x00, 0x9c, 0x00, 0xa4, 0x00, 0xa8, 0x00, 0x88, 0x00, 0x3e, 0x00,
+0x02, 0x00, 0xce, 0xff, 0x94, 0xff, 0x5a, 0xff, 0x2e, 0xff, 0x26, 0xff, 0x3a, 0xff, 0x5e, 0xff,
+0x96, 0xff, 0xd4, 0xff, 0x0e, 0x00, 0x44, 0x00, 0x78, 0x00, 0xa4, 0x00, 0xb2, 0x00, 0x9c, 0x00,
+0x74, 0x00, 0x3c, 0x00, 0x04, 0x00, 0xbe, 0xff, 0x88, 0xff, 0x54, 0xff, 0x38, 0xff, 0x32, 0xff,
+0x40, 0xff, 0x6e, 0xff, 0xa6, 0xff, 0xe6, 0xff, 0x18, 0x00, 0x48, 0x00, 0x72, 0x00, 0x92, 0x00,
+0x96, 0x00, 0x7e, 0x00, 0x5a, 0x00, 0x28, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0x88, 0xff, 0x5e, 0xff,
+0x4e, 0xff, 0x54, 0xff, 0x68, 0xff, 0x8a, 0xff, 0xc6, 0xff, 0xec, 0xff, 0x1c, 0x00, 0x4c, 0x00,
+0x6c, 0x00, 0x7c, 0x00, 0x76, 0x00, 0x66, 0x00, 0x4c, 0x00, 0x10, 0x00, 0xe6, 0xff, 0xc2, 0xff,
+0xa0, 0xff, 0x90, 0xff, 0x74, 0xff, 0x7c, 0xff, 0x90, 0xff, 0xa2, 0xff, 0xde, 0xff, 0xfc, 0xff,
+0x20, 0x00, 0x44, 0x00, 0x4e, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x56, 0x00, 0x2c, 0x00, 0x0e, 0x00,
+0xe8, 0xff, 0xc4, 0xff, 0xb0, 0xff, 0xa0, 0xff, 0x98, 0xff, 0x94, 0xff, 0xa6, 0xff, 0xb4, 0xff,
+0xe4, 0xff, 0x02, 0x00, 0x14, 0x00, 0x2c, 0x00, 0x36, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x34, 0x00,
+0x08, 0x00, 0xfa, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xc4, 0xff, 0xba, 0xff, 0xbc, 0xff,
+0xd2, 0xff, 0xde, 0xff, 0xf4, 0xff, 0x04, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x10, 0x00,
+0x0c, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xf4, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf4, 0xff,
+0xf4, 0xff, 0xf2, 0xff, 0xe6, 0xff, 0xde, 0xff, 0xd4, 0xff, 0xe4, 0xff, 0xd4, 0xff, 0xd4, 0xff,
+0xde, 0xff, 0xd4, 0xff, 0xde, 0xff, 0xec, 0xff, 0xf8, 0xff, 0x04, 0x00, 0x0e, 0x00, 0x14, 0x00,
+0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xdc, 0xff, 0xc6, 0xff, 0xb0, 0xff,
+0xa4, 0xff, 0xb6, 0xff, 0xac, 0xff, 0xb4, 0xff, 0xd6, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0x14, 0x00,
+0x2a, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x3e, 0x00, 0x2e, 0x00, 0x10, 0x00, 0xf4, 0xff, 0xde, 0xff,
+0xb4, 0xff, 0x96, 0xff, 0x94, 0xff, 0x86, 0xff, 0x96, 0xff, 0x9e, 0xff, 0xbc, 0xff, 0xee, 0xff,
+0x04, 0x00, 0x32, 0x00, 0x50, 0x00, 0x62, 0x00, 0x60, 0x00, 0x58, 0x00, 0x4c, 0x00, 0x1c, 0x00,
+0xf4, 0xff, 0xca, 0xff, 0x94, 0xff, 0x80, 0xff, 0x6a, 0xff, 0x60, 0xff, 0x7e, 0xff, 0x98, 0xff,
+0xb6, 0xff, 0xec, 0xff, 0x1e, 0x00, 0x4e, 0x00, 0x76, 0x00, 0x94, 0x00, 0x88, 0x00, 0x64, 0x00,
+0x46, 0x00, 0x14, 0x00, 0xf0, 0xff, 0xba, 0xff, 0x80, 0xff, 0x60, 0xff, 0x4a, 0xff, 0x54, 0xff,
+0x68, 0xff, 0xa0, 0xff, 0xd6, 0xff, 0x02, 0x00, 0x3a, 0x00, 0x6e, 0x00, 0x96, 0x00, 0xa8, 0x00,
+0x9c, 0x00, 0x7a, 0x00, 0x44, 0x00, 0x0a, 0x00, 0xd0, 0xff, 0x9a, 0xff, 0x64, 0xff, 0x48, 0xff,
+0x36, 0xff, 0x46, 0xff, 0x66, 0xff, 0xa0, 0xff, 0xe4, 0xff, 0x16, 0x00, 0x48, 0x00, 0x90, 0x00,
+0xb2, 0x00, 0xb4, 0x00, 0x9e, 0x00, 0x78, 0x00, 0x40, 0x00, 0xfc, 0xff, 0xc6, 0xff, 0x86, 0xff,
+0x5c, 0xff, 0x36, 0xff, 0x24, 0xff, 0x3a, 0xff, 0x6e, 0xff, 0xb0, 0xff, 0xec, 0xff, 0x1e, 0x00,
+0x60, 0x00, 0x90, 0x00, 0xb8, 0x00, 0xb8, 0x00, 0xa6, 0x00, 0x78, 0x00, 0x26, 0x00, 0xf8, 0xff,
+0xc2, 0xff, 0x7c, 0xff, 0x4a, 0xff, 0x28, 0xff, 0x32, 0xff, 0x40, 0xff, 0x6c, 0xff, 0xb0, 0xff,
+0xf8, 0xff, 0x28, 0x00, 0x62, 0x00, 0x9a, 0x00, 0xae, 0x00, 0xa8, 0x00, 0x8c, 0x00, 0x5a, 0x00,
+0x14, 0x00, 0xe2, 0xff, 0xa4, 0xff, 0x72, 0xff, 0x4a, 0xff, 0x2e, 0xff, 0x32, 0xff, 0x4a, 0xff,
+0x82, 0xff, 0xc0, 0xff, 0xfe, 0xff, 0x32, 0x00, 0x6e, 0x00, 0x90, 0x00, 0x96, 0x00, 0x96, 0x00,
+0x76, 0x00, 0x46, 0x00, 0x06, 0x00, 0xd6, 0xff, 0xa4, 0xff, 0x70, 0xff, 0x58, 0xff, 0x54, 0xff,
+0x52, 0xff, 0x6a, 0xff, 0xa4, 0xff, 0xe2, 0xff, 0x12, 0x00, 0x40, 0x00, 0x66, 0x00, 0x84, 0x00,
+0x90, 0x00, 0x72, 0x00, 0x5a, 0x00, 0x32, 0x00, 0xfc, 0xff, 0xd8, 0xff, 0x9c, 0xff, 0x82, 0xff,
+0x72, 0xff, 0x64, 0xff, 0x72, 0xff, 0x8c, 0xff, 0xb6, 0xff, 0xe8, 0xff, 0x0a, 0x00, 0x3a, 0x00,
+0x54, 0x00, 0x56, 0x00, 0x68, 0x00, 0x56, 0x00, 0x30, 0x00, 0x12, 0x00, 0xf2, 0xff, 0xd6, 0xff,
+0xaa, 0xff, 0x94, 0xff, 0x90, 0xff, 0x8e, 0xff, 0x96, 0xff, 0xb0, 0xff, 0xdc, 0xff, 0xfc, 0xff,
+0x0e, 0x00, 0x30, 0x00, 0x42, 0x00, 0x40, 0x00, 0x4a, 0x00, 0x3e, 0x00, 0x20, 0x00, 0x04, 0x00,
+0xfa, 0xff, 0xdc, 0xff, 0xc2, 0xff, 0xc8, 0xff, 0xb6, 0xff, 0xb0, 0xff, 0xb8, 0xff, 0xce, 0xff,
+0xee, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x18, 0x00, 0x20, 0x00, 0x1e, 0x00,
+0x12, 0x00, 0xfc, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xe4, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xd4, 0xff,
+0xdc, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0x00, 0x00,
+0xf4, 0xff, 0x06, 0x00, 0x04, 0x00, 0x02, 0x00, 0x0c, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfc, 0xff,
+0xf2, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xdc, 0xff, 0xd2, 0xff, 0xcc, 0xff, 0xcc, 0xff,
+0xd0, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x16, 0x00, 0x20, 0x00,
+0x2a, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x0e, 0x00, 0xfc, 0xff, 0xea, 0xff, 0xd6, 0xff, 0xbc, 0xff,
+0xa8, 0xff, 0xa4, 0xff, 0x9a, 0xff, 0xb4, 0xff, 0xb8, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0x18, 0x00,
+0x2e, 0x00, 0x40, 0x00, 0x48, 0x00, 0x42, 0x00, 0x40, 0x00, 0x38, 0x00, 0x14, 0x00, 0xe8, 0xff,
+0xcc, 0xff, 0xa0, 0xff, 0x88, 0xff, 0x7e, 0xff, 0x7a, 0xff, 0x96, 0xff, 0xaa, 0xff, 0xda, 0xff,
+0xfe, 0xff, 0x2a, 0x00, 0x54, 0x00, 0x64, 0x00, 0x7e, 0x00, 0x6e, 0x00, 0x5e, 0x00, 0x3e, 0x00,
+0x08, 0x00, 0xe2, 0xff, 0xb2, 0xff, 0x7c, 0xff, 0x66, 0xff, 0x54, 0xff, 0x5c, 0xff, 0x7c, 0xff,
+0x9e, 0xff, 0xdc, 0xff, 0x10, 0x00, 0x40, 0x00, 0x64, 0x00, 0x8a, 0x00, 0x9a, 0x00, 0x94, 0x00,
+0x72, 0x00, 0x36, 0x00, 0x06, 0x00, 0xc2, 0xff, 0x90, 0xff, 0x5e, 0xff, 0x52, 0xff, 0x3c, 0xff,
+0x42, 0xff, 0x78, 0xff, 0xa2, 0xff, 0xe6, 0xff, 0x18, 0x00, 0x62, 0x00, 0x8a, 0x00, 0xa4, 0x00,
+0xb2, 0x00, 0x9a, 0x00, 0x7e, 0x00, 0x3a, 0x00, 0xf6, 0xff, 0xc0, 0xff, 0x84, 0xff, 0x4a, 0xff,
+0x30, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x7e, 0xff, 0xc8, 0xff, 0xf4, 0xff, 0x2a, 0x00, 0x70, 0x00,
+0xa6, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0x9e, 0x00, 0x6e, 0x00, 0x20, 0x00, 0xf2, 0xff, 0xae, 0xff,
+0x6c, 0xff, 0x4a, 0xff, 0x24, 0xff, 0x30, 0xff, 0x58, 0xff, 0x88, 0xff, 0xce, 0xff, 0x08, 0x00,
+0x32, 0x00, 0x72, 0x00, 0xa8, 0x00, 0xbc, 0x00, 0xaa, 0x00, 0x92, 0x00, 0x4c, 0x00, 0x12, 0x00,
+0xde, 0xff, 0x9e, 0xff, 0x6c, 0xff, 0x42, 0xff, 0x2c, 0xff, 0x38, 0xff, 0x60, 0xff, 0x96, 0xff,
+0xd0, 0xff, 0x0c, 0x00, 0x42, 0x00, 0x7c, 0x00, 0xaa, 0x00, 0xb0, 0x00, 0xa4, 0x00, 0x7e, 0x00,
+0x48, 0x00, 0x08, 0x00, 0xcc, 0xff, 0x98, 0xff, 0x6a, 0xff, 0x48, 0xff, 0x3a, 0xff, 0x46, 0xff,
+0x70, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x1a, 0x00, 0x48, 0x00, 0x74, 0x00, 0x90, 0x00, 0x9a, 0x00,
+0x88, 0x00, 0x5e, 0x00, 0x28, 0x00, 0xf4, 0xff, 0xbc, 0xff, 0x92, 0xff, 0x70, 0xff, 0x56, 0xff,
+0x5a, 0xff, 0x70, 0xff, 0x8c, 0xff, 0xc0, 0xff, 0xe8, 0xff, 0x1c, 0x00, 0x4a, 0x00, 0x6c, 0x00,
+0x76, 0x00, 0x6e, 0x00, 0x62, 0x00, 0x38, 0x00, 0x06, 0x00, 0xe8, 0xff, 0xb8, 0xff, 0x98, 0xff,
+0x88, 0xff, 0x76, 0xff, 0x7e, 0xff, 0x8c, 0xff, 0xa4, 0xff, 0xd2, 0xff, 0xfa, 0xff, 0x22, 0x00,
+0x4e, 0x00, 0x4c, 0x00, 0x48, 0x00, 0x48, 0x00, 0x38, 0x00, 0x14, 0x00, 0x02, 0x00, 0xde, 0xff,
+0xc4, 0xff, 0xa0, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0x9e, 0xff, 0xb4, 0xff, 0xc4, 0xff, 0xe0, 0xff,
+0xfe, 0xff, 0x10, 0x00, 0x20, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x1e, 0x00, 0x0a, 0x00, 0x08, 0x00,
+0xfc, 0xff, 0xec, 0xff, 0xe0, 0xff, 0xd4, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xe0, 0xff,
+0xe4, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00,
+0x06, 0x00, 0x04, 0x00, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xfc, 0xff,
+0x02, 0x00, 0xf0, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd6, 0xff,
+0xd4, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x18, 0x00,
+0x1e, 0x00, 0x1a, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xf2, 0xff, 0xce, 0xff, 0xc2, 0xff, 0xa4, 0xff,
+0xa8, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xcc, 0xff, 0xea, 0xff, 0x04, 0x00, 0x1e, 0x00, 0x38, 0x00,
+0x44, 0x00, 0x46, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x18, 0x00, 0x04, 0x00, 0xe0, 0xff, 0xbc, 0xff,
+0x9c, 0xff, 0x8c, 0xff, 0x86, 0xff, 0x92, 0xff, 0xa4, 0xff, 0xb2, 0xff, 0xe0, 0xff, 0x06, 0x00,
+0x2c, 0x00, 0x54, 0x00, 0x62, 0x00, 0x58, 0x00, 0x4e, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0xf2, 0xff,
+0xcc, 0xff, 0x96, 0xff, 0x80, 0xff, 0x62, 0xff, 0x54, 0xff, 0x72, 0xff, 0x94, 0xff, 0xb6, 0xff,
+0xe4, 0xff, 0x14, 0x00, 0x50, 0x00, 0x6a, 0x00, 0x8a, 0x00, 0x92, 0x00, 0x6e, 0x00, 0x46, 0x00,
+0x1a, 0x00, 0xee, 0xff, 0xbc, 0xff, 0x8a, 0xff, 0x60, 0xff, 0x48, 0xff, 0x46, 0xff, 0x5c, 0xff,
+0x96, 0xff, 0xb6, 0xff, 0xf6, 0xff, 0x30, 0x00, 0x60, 0x00, 0x94, 0x00, 0xa2, 0x00, 0xa2, 0x00,
+0x82, 0x00, 0x56, 0x00, 0x12, 0x00, 0xec, 0xff, 0xb2, 0xff, 0x6a, 0xff, 0x3e, 0xff, 0x30, 0xff,
+0x30, 0xff, 0x54, 0xff, 0x86, 0xff, 0xc2, 0xff, 0xf8, 0xff, 0x3e, 0x00, 0x82, 0x00, 0xa0, 0x00,
+0xbe, 0x00, 0xae, 0x00, 0x8e, 0x00, 0x52, 0x00, 0x0c, 0x00, 0xe6, 0xff, 0xa2, 0xff, 0x66, 0xff,
+0x3e, 0xff, 0x22, 0xff, 0x3e, 0xff, 0x5c, 0xff, 0x98, 0xff, 0xd8, 0xff, 0x0e, 0x00, 0x56, 0x00,
+0x88, 0x00, 0xb4, 0x00, 0xc2, 0x00, 0xac, 0x00, 0x8a, 0x00, 0x46, 0x00, 0xfc, 0xff, 0xd2, 0xff,
+0x8e, 0xff, 0x54, 0xff, 0x30, 0xff, 0x30, 0xff, 0x3a, 0xff, 0x64, 0xff, 0xa2, 0xff, 0xe0, 0xff,
+0x16, 0x00, 0x56, 0x00, 0x8c, 0x00, 0xb0, 0x00, 0xb6, 0x00, 0x9a, 0x00, 0x62, 0x00, 0x24, 0x00,
+0xf6, 0xff, 0xba, 0xff, 0x7e, 0xff, 0x4a, 0xff, 0x32, 0xff, 0x38, 0xff, 0x58, 0xff, 0x82, 0xff,
+0xc8, 0xff, 0xf8, 0xff, 0x30, 0x00, 0x68, 0x00, 0x8e, 0x00, 0xaa, 0x00, 0x9c, 0x00, 0x86, 0x00,
+0x50, 0x00, 0x1a, 0x00, 0xf2, 0xff, 0xb0, 0xff, 0x7a, 0xff, 0x5a, 0xff, 0x44, 0xff, 0x58, 0xff,
+0x76, 0xff, 0xa0, 0xff, 0xe0, 0xff, 0x08, 0x00, 0x32, 0x00, 0x56, 0x00, 0x78, 0x00, 0x7e, 0x00,
+0x7a, 0x00, 0x60, 0x00, 0x34, 0x00, 0x04, 0x00, 0xdc, 0xff, 0xa2, 0xff, 0x7e, 0xff, 0x66, 0xff,
+0x64, 0xff, 0x72, 0xff, 0x7a, 0xff, 0xac, 0xff, 0xe0, 0xff, 0x00, 0x00, 0x22, 0x00, 0x42, 0x00,
+0x4e, 0x00, 0x56, 0x00, 0x4a, 0x00, 0x36, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xe2, 0xff, 0xb4, 0xff,
+0xa2, 0xff, 0x8e, 0xff, 0x96, 0xff, 0x96, 0xff, 0xa8, 0xff, 0xce, 0xff, 0xf4, 0xff, 0x06, 0x00,
+0x1a, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x3a, 0x00, 0x32, 0x00, 0x26, 0x00, 0x08, 0x00, 0xfa, 0xff,
+0xea, 0xff, 0xce, 0xff, 0xbc, 0xff, 0xc0, 0xff, 0xb2, 0xff, 0xb6, 0xff, 0xca, 0xff, 0xd8, 0xff,
+0xf4, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x0a, 0x00, 0x12, 0x00, 0x10, 0x00, 0x16, 0x00, 0x0a, 0x00,
+0x04, 0x00, 0xfa, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xda, 0xff, 0xe4, 0xff, 0xdc, 0xff,
+0xde, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0xf8, 0xff,
+0xf2, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x16, 0x00, 0x12, 0x00, 0x0c, 0x00,
+0x12, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xdc, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xcc, 0xff,
+0xd0, 0xff, 0xca, 0xff, 0xda, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0x14, 0x00, 0x20, 0x00, 0x30, 0x00,
+0x2a, 0x00, 0x28, 0x00, 0x26, 0x00, 0x0a, 0x00, 0xfc, 0xff, 0xdc, 0xff, 0xc0, 0xff, 0xac, 0xff,
+0xa6, 0xff, 0xa8, 0xff, 0xb0, 0xff, 0xba, 0xff, 0xd0, 0xff, 0xee, 0xff, 0xfc, 0xff, 0x28, 0x00,
+0x40, 0x00, 0x56, 0x00, 0x54, 0x00, 0x48, 0x00, 0x3a, 0x00, 0x16, 0x00, 0xfc, 0xff, 0xc4, 0xff,
+0xa6, 0xff, 0x8e, 0xff, 0x7e, 0xff, 0x84, 0xff, 0x98, 0xff, 0xa6, 0xff, 0xc4, 0xff, 0xea, 0xff,
+0x0c, 0x00, 0x48, 0x00, 0x5e, 0x00, 0x6c, 0x00, 0x72, 0x00, 0x5c, 0x00, 0x3c, 0x00, 0x10, 0x00,
+0xe8, 0xff, 0xa8, 0xff, 0x74, 0xff, 0x5c, 0xff, 0x56, 0xff, 0x4e, 0xff, 0x60, 0xff, 0x8a, 0xff,
+0xb8, 0xff, 0xea, 0xff, 0x1c, 0x00, 0x52, 0x00, 0x78, 0x00, 0x8e, 0x00, 0x88, 0x00, 0x68, 0x00,
+0x40, 0x00, 0x0e, 0x00, 0xd6, 0xff, 0xa0, 0xff, 0x6a, 0xff, 0x48, 0xff, 0x3c, 0xff, 0x42, 0xff,
+0x60, 0xff, 0x9a, 0xff, 0xc8, 0xff, 0xfa, 0xff, 0x3c, 0x00, 0x78, 0x00, 0x98, 0x00, 0xae, 0x00,
+0x9e, 0x00, 0x80, 0x00, 0x40, 0x00, 0x12, 0x00, 0xd0, 0xff, 0x8e, 0xff, 0x62, 0xff, 0x32, 0xff,
+0x28, 0xff, 0x32, 0xff, 0x56, 0xff, 0xa2, 0xff, 0xd6, 0xff, 0x10, 0x00, 0x5c, 0x00, 0x8a, 0x00,
+0xb2, 0x00, 0xb6, 0x00, 0xa8, 0x00, 0x6c, 0x00, 0x24, 0x00, 0xf0, 0xff, 0xbc, 0xff, 0x80, 0xff,
+0x48, 0xff, 0x28, 0xff, 0x2a, 0xff, 0x46, 0xff, 0x7a, 0xff, 0xcc, 0xff, 0xfa, 0xff, 0x28, 0x00,
+0x6e, 0x00, 0xb0, 0x00, 0xca, 0x00, 0xb8, 0x00, 0x9a, 0x00, 0x60, 0x00, 0x1e, 0x00, 0xe0, 0xff,
+0xb0, 0xff, 0x74, 0xff, 0x46, 0xff, 0x36, 0xff, 0x3c, 0xff, 0x64, 0xff, 0x9e, 0xff, 0xd6, 0xff,
+0x20, 0x00, 0x4e, 0x00, 0x86, 0x00, 0xa0, 0x00, 0xbc, 0x00, 0xae, 0x00, 0x74, 0x00, 0x48, 0x00,
+0x06, 0x00, 0xce, 0xff, 0x96, 0xff, 0x6c, 0xff, 0x44, 0xff, 0x3e, 0xff, 0x4a, 0xff, 0x70, 0xff,
+0xae, 0xff, 0xe2, 0xff, 0x18, 0x00, 0x48, 0x00, 0x84, 0x00, 0x90, 0x00, 0xa6, 0x00, 0x82, 0x00,
+0x62, 0x00, 0x34, 0x00, 0xfa, 0xff, 0xd4, 0xff, 0x90, 0xff, 0x76, 0xff, 0x60, 0xff, 0x58, 0xff,
+0x68, 0xff, 0x8a, 0xff, 0xc0, 0xff, 0xf4, 0xff, 0x1e, 0x00, 0x4e, 0x00, 0x64, 0x00, 0x80, 0x00,
+0x7c, 0x00, 0x64, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xec, 0xff, 0xc2, 0xff, 0x9a, 0xff, 0x8c, 0xff,
+0x7c, 0xff, 0x74, 0xff, 0x7c, 0xff, 0xa0, 0xff, 0xce, 0xff, 0xf2, 0xff, 0x1c, 0x00, 0x3e, 0x00,
+0x3e, 0x00, 0x50, 0x00, 0x4e, 0x00, 0x44, 0x00, 0x1e, 0x00, 0x06, 0x00, 0xe6, 0xff, 0xc2, 0xff,
+0xa0, 0xff, 0x94, 0xff, 0x96, 0xff, 0x94, 0xff, 0xa0, 0xff, 0xbe, 0xff, 0xda, 0xff, 0xf6, 0xff,
+0x0c, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x32, 0x00, 0x22, 0x00, 0x10, 0x00, 0xfe, 0xff,
+0xe8, 0xff, 0xd6, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xcc, 0xff, 0xda, 0xff,
+0xec, 0xff, 0xf6, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0xf8, 0xff,
+0xfc, 0xff, 0xfa, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xe8, 0xff,
+0xee, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xda, 0xff,
+0xe0, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x02, 0x00, 0x12, 0x00, 0x14, 0x00, 0x20, 0x00, 0x12, 0x00,
+0x18, 0x00, 0x10, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xe4, 0xff, 0xd4, 0xff, 0xbc, 0xff, 0xbc, 0xff,
+0xc6, 0xff, 0xd6, 0xff, 0xce, 0xff, 0xf4, 0xff, 0x00, 0x00, 0x18, 0x00, 0x36, 0x00, 0x3c, 0x00,
+0x46, 0x00, 0x3c, 0x00, 0x28, 0x00, 0x22, 0x00, 0xfc, 0xff, 0xe4, 0xff, 0xc8, 0xff, 0x98, 0xff,
+0x9a, 0xff, 0x92, 0xff, 0x88, 0xff, 0xa0, 0xff, 0xba, 0xff, 0xee, 0xff, 0x08, 0x00, 0x2a, 0x00,
+0x58, 0x00, 0x5a, 0x00, 0x6c, 0x00, 0x60, 0x00, 0x42, 0x00, 0x34, 0x00, 0x02, 0x00, 0xda, 0xff,
+0xac, 0xff, 0x7c, 0xff, 0x6c, 0xff, 0x62, 0xff, 0x74, 0xff, 0x94, 0xff, 0xba, 0xff, 0xe6, 0xff,
+0x14, 0x00, 0x4c, 0x00, 0x78, 0x00, 0x88, 0x00, 0x84, 0x00, 0x7a, 0x00, 0x5c, 0x00, 0x28, 0x00,
+0x00, 0x00, 0xcc, 0xff, 0x96, 0xff, 0x58, 0xff, 0x42, 0xff, 0x44, 0xff, 0x52, 0xff, 0x7e, 0xff,
+0xb2, 0xff, 0xe8, 0xff, 0x20, 0x00, 0x50, 0x00, 0x78, 0x00, 0x94, 0x00, 0x94, 0x00, 0x86, 0x00,
+0x52, 0x00, 0x14, 0x00, 0xdc, 0xff, 0xa0, 0xff, 0x70, 0xff, 0x4e, 0xff, 0x62, 0xff, 0x8a, 0xff,
+0xc4, 0xff, 0xfe, 0xff, 0x38, 0x00, 0x76, 0x00, 0x9a, 0x00, 0xa6, 0x00, 0xa8, 0x00, 0x8c, 0x00,
+0x52, 0x00, 0x0c, 0x00, 0xd4, 0xff, 0x9a, 0xff, 0x60, 0xff, 0x2a, 0xff, 0x1e, 0xff, 0x36, 0xff,
+0x62, 0xff, 0x9c, 0xff, 0xda, 0xff, 0x0c, 0x00, 0x48, 0x00, 0x86, 0x00, 0xa0, 0x00, 0xb8, 0x00,
+0xa8, 0x00, 0x74, 0x00, 0x38, 0x00, 0xf6, 0xff, 0xc2, 0xff, 0x86, 0xff, 0x52, 0xff, 0x28, 0xff,
+0x26, 0xff, 0x3e, 0xff, 0x68, 0xff, 0xa0, 0xff, 0xe6, 0xff, 0x14, 0x00, 0x4e, 0x00, 0x80, 0x00,
+0xa2, 0x00, 0xb6, 0x00, 0x94, 0x00, 0x6c, 0x00, 0x2a, 0x00, 0xf2, 0xff, 0xb8, 0xff, 0x7a, 0xff,
+0x5c, 0xff, 0x48, 0xff, 0x46, 0xff, 0x62, 0xff, 0x82, 0xff, 0xb4, 0xff, 0xf4, 0xff, 0x26, 0x00,
+0x5a, 0x00, 0x84, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x8c, 0x00, 0x60, 0x00, 0x20, 0x00, 0xf4, 0xff,
+0xbe, 0xff, 0x8c, 0xff, 0x62, 0xff, 0x44, 0xff, 0x54, 0xff, 0x6e, 0xff, 0x8e, 0xff, 0xc2, 0xff,
+0xf6, 0xff, 0x26, 0x00, 0x52, 0x00, 0x78, 0x00, 0x82, 0x00, 0x7a, 0x00, 0x6e, 0x00, 0x40, 0x00,
+0x0e, 0x00, 0xe2, 0xff, 0xb2, 0xff, 0x8c, 0xff, 0x7c, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x82, 0xff,
+0x9e, 0xff, 0xda, 0xff, 0x06, 0x00, 0x2e, 0x00, 0x4c, 0x00, 0x66, 0x00, 0x60, 0x00, 0x56, 0x00,
+0x50, 0x00, 0x24, 0x00, 0x06, 0x00, 0xec, 0xff, 0xc2, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0x98, 0xff,
+0xa4, 0xff, 0xaa, 0xff, 0xc0, 0xff, 0xea, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x28, 0x00, 0x3a, 0x00,
+0x40, 0x00, 0x38, 0x00, 0x1a, 0x00, 0x08, 0x00, 0xfe, 0xff, 0xe4, 0xff, 0xcc, 0xff, 0xba, 0xff,
+0xb4, 0xff, 0xbc, 0xff, 0xac, 0xff, 0xc6, 0xff, 0xe0, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xfe, 0xff,
+0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x06, 0x00, 0x06, 0x00, 0xfc, 0xff, 0xf2, 0xff, 0xf0, 0xff,
+0xe8, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd0, 0xff, 0xea, 0xff,
+0xf2, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xf0, 0xff,
+0x06, 0x00, 0x08, 0x00, 0x06, 0x00, 0x02, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xf6, 0xff, 0xe6, 0xff,
+0xe6, 0xff, 0xd2, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xcc, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xe0, 0xff,
+0xf0, 0xff, 0x06, 0x00, 0x0c, 0x00, 0x24, 0x00, 0x3a, 0x00, 0x22, 0x00, 0x1a, 0x00, 0x16, 0x00,
+0x02, 0x00, 0xf4, 0xff, 0xd4, 0xff, 0xb0, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xa2, 0xff, 0xa0, 0xff,
+0xb4, 0xff, 0xd2, 0xff, 0xfc, 0xff, 0x14, 0x00, 0x3c, 0x00, 0x60, 0x00, 0x5c, 0x00, 0x6a, 0x00,
+0x4c, 0x00, 0x30, 0x00, 0x10, 0x00, 0xe8, 0xff, 0xca, 0xff, 0x9e, 0xff, 0x8a, 0xff, 0x82, 0xff,
+0x7a, 0xff, 0x90, 0xff, 0xac, 0xff, 0xd0, 0xff, 0x06, 0x00, 0x2a, 0x00, 0x5a, 0x00, 0x78, 0x00,
+0x82, 0x00, 0x7e, 0x00, 0x60, 0x00, 0x30, 0x00, 0x04, 0x00, 0xde, 0xff, 0xa4, 0xff, 0x6c, 0xff,
+0x5a, 0xff, 0x50, 0xff, 0x54, 0xff, 0x74, 0xff, 0x9c, 0xff, 0xd6, 0xff, 0x14, 0x00, 0x46, 0x00,
+0x6e, 0x00, 0x90, 0x00, 0x96, 0x00, 0x8a, 0x00, 0x60, 0x00, 0x30, 0x00, 0x06, 0x00, 0xca, 0xff,
+0x94, 0xff, 0x66, 0xff, 0x42, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x68, 0xff, 0xa8, 0xff, 0xec, 0xff,
+0x20, 0x00, 0x5e, 0x00, 0x92, 0x00, 0xa4, 0x00, 0xa8, 0x00, 0x90, 0x00, 0x62, 0x00, 0x2e, 0x00,
+0xee, 0xff, 0xba, 0xff, 0x7e, 0xff, 0x4a, 0xff, 0x2e, 0xff, 0x22, 0xff, 0x44, 0xff, 0x70, 0xff,
+0xa8, 0xff, 0xee, 0xff, 0x20, 0x00, 0x5c, 0x00, 0x92, 0x00, 0xac, 0x00, 0xa4, 0x00, 0x90, 0x00,
+0x62, 0x00, 0x2a, 0x00, 0xe8, 0xff, 0xb0, 0xff, 0x66, 0xff, 0x38, 0xff, 0x28, 0xff, 0x22, 0xff,
+0x44, 0xff, 0x74, 0xff, 0xc2, 0xff, 0x00, 0x00, 0x36, 0x00, 0x74, 0x00, 0x98, 0x00, 0xac, 0x00,
+0xaa, 0x00, 0x92, 0x00, 0x5a, 0x00, 0x1c, 0x00, 0xe8, 0xff, 0xa6, 0xff, 0x72, 0xff, 0x46, 0xff,
+0x2c, 0xff, 0x40, 0xff, 0x5a, 0xff, 0x8c, 0xff, 0xd4, 0xff, 0x0e, 0x00, 0x38, 0x00, 0x70, 0x00,
+0x92, 0x00, 0xa0, 0x00, 0x96, 0x00, 0x74, 0x00, 0x3c, 0x00, 0x04, 0x00, 0xc8, 0xff, 0x8a, 0xff,
+0x6a, 0xff, 0x50, 0xff, 0x42, 0xff, 0x4c, 0xff, 0x76, 0xff, 0xa8, 0xff, 0xdc, 0xff, 0x0a, 0x00,
+0x3e, 0x00, 0x74, 0x00, 0x86, 0x00, 0x8e, 0x00, 0x80, 0x00, 0x5e, 0x00, 0x32, 0x00, 0xf4, 0xff,
+0xc2, 0xff, 0x9e, 0xff, 0x76, 0xff, 0x64, 0xff, 0x66, 0xff, 0x6c, 0xff, 0x8e, 0xff, 0xbe, 0xff,
+0xf6, 0xff, 0x2a, 0x00, 0x50, 0x00, 0x5c, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x5c, 0x00, 0x46, 0x00,
+0x14, 0x00, 0xec, 0xff, 0xc6, 0xff, 0xa0, 0xff, 0x90, 0xff, 0x78, 0xff, 0x74, 0xff, 0x88, 0xff,
+0xa6, 0xff, 0xd2, 0xff, 0xf6, 0xff, 0x12, 0x00, 0x32, 0x00, 0x3e, 0x00, 0x48, 0x00, 0x3c, 0x00,
+0x3a, 0x00, 0x26, 0x00, 0xfa, 0xff, 0xe0, 0xff, 0xc2, 0xff, 0xae, 0xff, 0xaa, 0xff, 0xa0, 0xff,
+0xaa, 0xff, 0xae, 0xff, 0xbe, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0x04, 0x00, 0x0e, 0x00, 0x24, 0x00,
+0x20, 0x00, 0x24, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x08, 0x00, 0xec, 0xff, 0xe8, 0xff, 0xcc, 0xff,
+0xca, 0xff, 0xdc, 0xff, 0xc8, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xf6, 0xff,
+0xf2, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xfe, 0xff,
+0xfa, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xdc, 0xff,
+0xd0, 0xff, 0xd0, 0xff, 0xc2, 0xff, 0xca, 0xff, 0xca, 0xff, 0xca, 0xff, 0xe4, 0xff, 0xf6, 0xff,
+0x0e, 0x00, 0x12, 0x00, 0x1a, 0x00, 0x26, 0x00, 0x1a, 0x00, 0x2a, 0x00, 0x1e, 0x00, 0x04, 0x00,
+0xf0, 0xff, 0xd0, 0xff, 0xbc, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xa2, 0xff, 0xb2, 0xff, 0xc0, 0xff,
+0xe4, 0xff, 0x04, 0x00, 0x10, 0x00, 0x30, 0x00, 0x3a, 0x00, 0x3e, 0x00, 0x4c, 0x00, 0x3a, 0x00,
+0x26, 0x00, 0x08, 0x00, 0xda, 0xff, 0xb6, 0xff, 0x98, 0xff, 0x88, 0xff, 0x7c, 0xff, 0x86, 0xff,
+0x9c, 0xff, 0xb2, 0xff, 0xe0, 0xff, 0x08, 0x00, 0x2a, 0x00, 0x4c, 0x00, 0x6a, 0x00, 0x76, 0x00,
+0x72, 0x00, 0x50, 0x00, 0x2e, 0x00, 0xfc, 0xff, 0xde, 0xff, 0xa8, 0xff, 0x82, 0xff, 0x80, 0xff,
+0x68, 0xff, 0x72, 0xff, 0x8e, 0xff, 0xb6, 0xff, 0xf0, 0xff, 0x1c, 0x00, 0x4e, 0x00, 0x6a, 0x00,
+0x90, 0x00, 0x9a, 0x00, 0x8e, 0x00, 0x6a, 0x00, 0x2c, 0x00, 0x12, 0x00, 0xce, 0xff, 0x98, 0xff,
+0x66, 0xff, 0x4e, 0xff, 0x42, 0xff, 0x56, 0xff, 0x86, 0xff, 0xb8, 0xff, 0xf8, 0xff, 0x26, 0x00,
+0x56, 0x00, 0x86, 0x00, 0xa0, 0x00, 0xb0, 0x00, 0x9c, 0x00, 0x66, 0x00, 0x28, 0x00, 0xf0, 0xff,
+0xbc, 0xff, 0x7a, 0xff, 0x4e, 0xff, 0x3c, 0xff, 0x32, 0xff, 0x58, 0xff, 0x8a, 0xff, 0xc0, 0xff,
+0xfa, 0xff, 0x36, 0x00, 0x80, 0x00, 0xa0, 0x00, 0xc0, 0x00, 0xc2, 0x00, 0x90, 0x00, 0x60, 0x00,
+0x14, 0x00, 0xec, 0xff, 0xa8, 0xff, 0x6a, 0xff, 0x4e, 0xff, 0x2a, 0xff, 0x34, 0xff, 0x4a, 0xff,
+0x7a, 0xff, 0xd2, 0xff, 0xfe, 0xff, 0x38, 0x00, 0x7c, 0x00, 0xae, 0x00, 0xb6, 0x00, 0xaa, 0x00,
+0x8a, 0x00, 0x48, 0x00, 0x06, 0x00, 0xd2, 0xff, 0x8e, 0xff, 0x4a, 0xff, 0x32, 0xff, 0x1a, 0xff,
+0x2c, 0xff, 0x50, 0xff, 0x8e, 0xff, 0xda, 0xff, 0x18, 0x00, 0x4c, 0x00, 0x8c, 0x00, 0xae, 0x00,
+0xb0, 0x00, 0x98, 0x00, 0x74, 0x00, 0x3a, 0x00, 0xfa, 0xff, 0xc6, 0xff, 0x86, 0xff, 0x5c, 0xff,
+0x32, 0xff, 0x3c, 0xff, 0x4c, 0xff, 0x70, 0xff, 0xae, 0xff, 0xea, 0xff, 0x2a, 0x00, 0x60, 0x00,
+0x86, 0x00, 0x94, 0x00, 0x94, 0x00, 0x7e, 0x00, 0x58, 0x00, 0x2e, 0x00, 0xf2, 0xff, 0xbe, 0xff,
+0x8c, 0xff, 0x6e, 0xff, 0x4c, 0xff, 0x52, 0xff, 0x74, 0xff, 0x88, 0xff, 0xc6, 0xff, 0xfa, 0xff,
+0x28, 0x00, 0x4e, 0x00, 0x6e, 0x00, 0x80, 0x00, 0x76, 0x00, 0x5a, 0x00, 0x3c, 0x00, 0x1a, 0x00,
+0xf8, 0xff, 0xbc, 0xff, 0x9a, 0xff, 0x90, 0xff, 0x80, 0xff, 0x86, 0xff, 0x96, 0xff, 0xb6, 0xff,
+0xe4, 0xff, 0x08, 0x00, 0x2a, 0x00, 0x4e, 0x00, 0x5c, 0x00, 0x64, 0x00, 0x5c, 0x00, 0x48, 0x00,
+0x28, 0x00, 0x12, 0x00, 0xec, 0xff, 0xc6, 0xff, 0xb0, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0x9c, 0xff,
+0xae, 0xff, 0xce, 0xff, 0xf4, 0xff, 0x04, 0x00, 0x26, 0x00, 0x3a, 0x00, 0x2e, 0x00, 0x38, 0x00,
+0x3e, 0x00, 0x30, 0x00, 0x10, 0x00, 0xfa, 0xff, 0xe8, 0xff, 0xd0, 0xff, 0xbc, 0xff, 0xba, 0xff,
+0xc2, 0xff, 0xba, 0xff, 0xcc, 0xff, 0xdc, 0xff, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x1c, 0x00,
+0x16, 0x00, 0x20, 0x00, 0x18, 0x00, 0x16, 0x00, 0x12, 0x00, 0xfc, 0xff, 0xf4, 0xff, 0xf2, 0xff,
+0xde, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0xec, 0xff,
+0xf6, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0x04, 0x00,
+0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xee, 0xff, 0xe8, 0xff, 0xe4, 0xff,
+0xd0, 0xff, 0xba, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xc2, 0xff, 0xd6, 0xff, 0xf0, 0xff,
+0xf6, 0xff, 0x04, 0x00, 0x1e, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x20, 0x00, 0x22, 0x00, 0x06, 0x00,
+0xe8, 0xff, 0xd2, 0xff, 0xb4, 0xff, 0xa2, 0xff, 0x94, 0xff, 0x8e, 0xff, 0x9c, 0xff, 0xa6, 0xff,
+0xbe, 0xff, 0xf0, 0xff, 0x0a, 0x00, 0x32, 0x00, 0x52, 0x00, 0x52, 0x00, 0x5e, 0x00, 0x40, 0x00,
+0x36, 0x00, 0x14, 0x00, 0xf2, 0xff, 0xd0, 0xff, 0xa2, 0xff, 0x7c, 0xff, 0x6a, 0xff, 0x62, 0xff,
+0x78, 0xff, 0x92, 0xff, 0xb2, 0xff, 0xf6, 0xff, 0x14, 0x00, 0x50, 0x00, 0x66, 0x00, 0x72, 0x00,
+0x80, 0x00, 0x66, 0x00, 0x52, 0x00, 0x1e, 0x00, 0xfc, 0xff, 0xb6, 0xff, 0x7a, 0xff, 0x6a, 0xff,
+0x48, 0xff, 0x4e, 0xff, 0x6c, 0xff, 0x90, 0xff, 0xc0, 0xff, 0xfa, 0xff, 0x32, 0x00, 0x6c, 0x00,
+0x8a, 0x00, 0xac, 0x00, 0xa2, 0x00, 0x84, 0x00, 0x5a, 0x00, 0x22, 0x00, 0xec, 0xff, 0xb6, 0xff,
+0x78, 0xff, 0x4a, 0xff, 0x3a, 0xff, 0x36, 0xff, 0x56, 0xff, 0x92, 0xff, 0xcc, 0xff, 0x04, 0x00,
+0x44, 0x00, 0x7c, 0x00, 0xa2, 0x00, 0xb2, 0x00, 0xaa, 0x00, 0x86, 0x00, 0x50, 0x00, 0x16, 0x00,
+0xe2, 0xff, 0x9c, 0xff, 0x54, 0xff, 0x32, 0xff, 0x1a, 0xff, 0x38, 0xff, 0x58, 0xff, 0x96, 0xff,
+0xe2, 0xff, 0x16, 0x00, 0x52, 0x00, 0x8e, 0x00, 0xb2, 0x00, 0xb8, 0x00, 0xac, 0x00, 0x80, 0x00,
+0x42, 0x00, 0x02, 0x00, 0xce, 0xff, 0x7e, 0xff, 0x4e, 0xff, 0x1e, 0xff, 0x16, 0xff, 0x3e, 0xff,
+0x68, 0xff, 0xb0, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x64, 0x00, 0x8e, 0x00, 0xae, 0x00, 0xb4, 0x00,
+0x96, 0x00, 0x6e, 0x00, 0x2a, 0x00, 0xe6, 0xff, 0xb4, 0xff, 0x6a, 0xff, 0x36, 0xff, 0x28, 0xff,
+0x2e, 0xff, 0x4e, 0xff, 0x80, 0xff, 0xbc, 0xff, 0xf4, 0xff, 0x24, 0x00, 0x58, 0x00, 0x84, 0x00,
+0x98, 0x00, 0x9c, 0x00, 0x7e, 0x00, 0x42, 0x00, 0x18, 0x00, 0xd0, 0xff, 0x9c, 0xff, 0x72, 0xff,
+0x4c, 0xff, 0x44, 0xff, 0x48, 0xff, 0x74, 0xff, 0x90, 0xff, 0xc8, 0xff, 0xfc, 0xff, 0x2c, 0x00,
+0x66, 0x00, 0x74, 0x00, 0x88, 0x00, 0x74, 0x00, 0x56, 0x00, 0x3a, 0x00, 0x06, 0x00, 0xd6, 0xff,
+0xa4, 0xff, 0x7e, 0xff, 0x6c, 0xff, 0x66, 0xff, 0x72, 0xff, 0x8a, 0xff, 0xb8, 0xff, 0xe2, 0xff,
+0x04, 0x00, 0x38, 0x00, 0x46, 0x00, 0x5a, 0x00, 0x5e, 0x00, 0x50, 0x00, 0x48, 0x00, 0x16, 0x00,
+0xec, 0xff, 0xd2, 0xff, 0xa8, 0xff, 0x9a, 0xff, 0x96, 0xff, 0x8a, 0xff, 0x9e, 0xff, 0xb6, 0xff,
+0xd4, 0xff, 0xee, 0xff, 0x0a, 0x00, 0x22, 0x00, 0x3e, 0x00, 0x44, 0x00, 0x40, 0x00, 0x34, 0x00,
+0x22, 0x00, 0x0c, 0x00, 0xec, 0xff, 0xde, 0xff, 0xca, 0xff, 0xc2, 0xff, 0xb8, 0xff, 0xc0, 0xff,
+0xc2, 0xff, 0xd0, 0xff, 0xe6, 0xff, 0xfc, 0xff, 0x04, 0x00, 0x14, 0x00, 0x26, 0x00, 0x20, 0x00,
+0x24, 0x00, 0x1e, 0x00, 0x08, 0x00, 0x02, 0x00, 0xf6, 0xff, 0xea, 0xff, 0xda, 0xff, 0xd8, 0xff,
+0xe6, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xe0, 0xff, 0xe4, 0xff, 0xee, 0xff, 0xf2, 0xff, 0xf6, 0xff,
+0xf4, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00,
+0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0xee, 0xff, 0xf0, 0xff, 0xde, 0xff, 0xdc, 0xff,
+0xe2, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0x02, 0x00,
+0x10, 0x00, 0x1a, 0x00, 0x22, 0x00, 0x22, 0x00, 0x16, 0x00, 0x0e, 0x00, 0xfa, 0xff, 0xf0, 0xff,
+0xda, 0xff, 0xbc, 0xff, 0xb4, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xb4, 0xff, 0xbc, 0xff, 0xd4, 0xff,
+0xe2, 0xff, 0x06, 0x00, 0x26, 0x00, 0x32, 0x00, 0x34, 0x00, 0x34, 0x00, 0x22, 0x00, 0x26, 0x00,
+0x00, 0x00, 0xdc, 0xff, 0xc4, 0xff, 0x90, 0xff, 0x94, 0xff, 0x86, 0xff, 0x80, 0xff, 0x9a, 0xff,
+0x9e, 0xff, 0xd4, 0xff, 0xfc, 0xff, 0x18, 0x00, 0x4e, 0x00, 0x5c, 0x00, 0x70, 0x00, 0x5c, 0x00,
+0x48, 0x00, 0x2e, 0x00, 0x06, 0x00, 0xdc, 0xff, 0xa6, 0xff, 0x84, 0xff, 0x66, 0xff, 0x58, 0xff,
+0x64, 0xff, 0x7c, 0xff, 0xac, 0xff, 0xd8, 0xff, 0x06, 0x00, 0x46, 0x00, 0x68, 0x00, 0x88, 0x00,
+0x8c, 0x00, 0x86, 0x00, 0x50, 0x00, 0x34, 0x00, 0xfa, 0xff, 0xc0, 0xff, 0x92, 0xff, 0x5a, 0xff,
+0x44, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x78, 0xff, 0xac, 0xff, 0xea, 0xff, 0x26, 0x00, 0x56, 0x00,
+0x98, 0x00, 0xaa, 0x00, 0xae, 0x00, 0x94, 0x00, 0x68, 0x00, 0x28, 0x00, 0xf2, 0xff, 0xbe, 0xff,
+0x86, 0xff, 0x58, 0xff, 0x38, 0xff, 0x34, 0xff, 0x4c, 0xff, 0x8c, 0xff, 0xca, 0xff, 0x06, 0x00,
+0x3e, 0x00, 0x76, 0x00, 0xa6, 0x00, 0xb8, 0x00, 0xc0, 0x00, 0x98, 0x00, 0x66, 0x00, 0x18, 0x00,
+0xe0, 0xff, 0xb8, 0xff, 0x72, 0xff, 0x4c, 0xff, 0x2a, 0xff, 0x28, 0xff, 0x5c, 0xff, 0x86, 0xff,
+0xd4, 0xff, 0x02, 0x00, 0x38, 0x00, 0x88, 0x00, 0x9a, 0x00, 0xbc, 0x00, 0xaa, 0x00, 0x90, 0x00,
+0x4e, 0x00, 0x0a, 0x00, 0xe2, 0xff, 0xa0, 0xff, 0x7a, 0xff, 0x40, 0xff, 0x32, 0xff, 0x3c, 0xff,
+0x5e, 0xff, 0xac, 0xff, 0xe4, 0xff, 0x22, 0x00, 0x54, 0x00, 0x82, 0x00, 0xb2, 0x00, 0xb2, 0x00,
+0x98, 0x00, 0x78, 0x00, 0x3e, 0x00, 0x0c, 0x00, 0xd2, 0xff, 0x9c, 0xff, 0x64, 0xff, 0x40, 0xff,
+0x4c, 0xff, 0x5c, 0xff, 0x82, 0xff, 0xb2, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x56, 0x00, 0x82, 0x00,
+0x8e, 0x00, 0x8e, 0x00, 0x84, 0x00, 0x58, 0x00, 0x20, 0x00, 0xf0, 0xff, 0xb6, 0xff, 0x8c, 0xff,
+0x66, 0xff, 0x5a, 0xff, 0x4e, 0xff, 0x60, 0xff, 0x92, 0xff, 0xcc, 0xff, 0xee, 0xff, 0x20, 0x00,
+0x52, 0x00, 0x62, 0x00, 0x74, 0x00, 0x72, 0x00, 0x5a, 0x00, 0x40, 0x00, 0x12, 0x00, 0xee, 0xff,
+0xc8, 0xff, 0x92, 0xff, 0x86, 0xff, 0x78, 0xff, 0x7c, 0xff, 0x9a, 0xff, 0xae, 0xff, 0xe4, 0xff,
+0x02, 0x00, 0x1e, 0x00, 0x42, 0x00, 0x44, 0x00, 0x5e, 0x00, 0x52, 0x00, 0x40, 0x00, 0x32, 0x00,
+0xfc, 0xff, 0xe4, 0xff, 0xc6, 0xff, 0xac, 0xff, 0xa0, 0xff, 0x96, 0xff, 0xa0, 0xff, 0xaa, 0xff,
+0xc8, 0xff, 0xe6, 0xff, 0x00, 0x00, 0x10, 0x00, 0x24, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x2e, 0x00,
+0x26, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xf2, 0xff, 0xd2, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xc0, 0xff,
+0xca, 0xff, 0xd2, 0xff, 0xe4, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x08, 0x00, 0x1e, 0x00, 0x14, 0x00,
+0x12, 0x00, 0x24, 0x00, 0x16, 0x00, 0x0c, 0x00, 0xfc, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf4, 0xff,
+0xe6, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xf2, 0xff,
+0xee, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0x02, 0x00,
+0x0a, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xe0, 0xff,
+0xcc, 0xff, 0xca, 0xff, 0xbe, 0xff, 0xc8, 0xff, 0xcc, 0xff, 0xd0, 0xff, 0xf4, 0xff, 0xf8, 0xff,
+0x10, 0x00, 0x2a, 0x00, 0x24, 0x00, 0x2c, 0x00, 0x36, 0x00, 0x34, 0x00, 0x24, 0x00, 0x06, 0x00,
+0xf0, 0xff, 0xce, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0x9c, 0xff, 0xa4, 0xff, 0xbc, 0xff,
+0xda, 0xff, 0xee, 0xff, 0x20, 0x00, 0x3a, 0x00, 0x4e, 0x00, 0x58, 0x00, 0x50, 0x00, 0x42, 0x00,
+0x1c, 0x00, 0xf2, 0xff, 0xd2, 0xff, 0x9c, 0xff, 0x7c, 0xff, 0x6c, 0xff, 0x60, 0xff, 0x6c, 0xff,
+0x7e, 0xff, 0xa0, 0xff, 0xd4, 0xff, 0xfc, 0xff, 0x36, 0x00, 0x58, 0x00, 0x66, 0x00, 0x78, 0x00,
+0x6c, 0x00, 0x50, 0x00, 0x2c, 0x00, 0xf0, 0xff, 0xb6, 0xff, 0x86, 0xff, 0x5c, 0xff, 0x58, 0xff,
+0x50, 0xff, 0x56, 0xff, 0x7e, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x1a, 0x00, 0x52, 0x00, 0x7a, 0x00,
+0x86, 0x00, 0x92, 0x00, 0x88, 0x00, 0x4e, 0x00, 0x1c, 0x00, 0xea, 0xff, 0xaa, 0xff, 0x78, 0xff,
+0x52, 0xff, 0x32, 0xff, 0x34, 0xff, 0x4c, 0xff, 0x7a, 0xff, 0xb6, 0xff, 0xea, 0xff, 0x26, 0x00,
+0x62, 0x00, 0x82, 0x00, 0x94, 0x00, 0xa2, 0x00, 0x7e, 0x00, 0x42, 0x00, 0x08, 0x00, 0xce, 0xff,
+0x98, 0xff, 0x68, 0xff, 0x42, 0xff, 0x38, 0xff, 0x42, 0xff, 0x5a, 0xff, 0x90, 0xff, 0xda, 0xff,
+0x0a, 0x00, 0x48, 0x00, 0x84, 0x00, 0xa6, 0x00, 0xb8, 0x00, 0x9e, 0x00, 0x76, 0x00, 0x40, 0x00,
+0x04, 0x00, 0xd4, 0xff, 0x98, 0xff, 0x60, 0xff, 0x42, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x70, 0xff,
+0xb4, 0xff, 0xf4, 0xff, 0x20, 0x00, 0x60, 0x00, 0x92, 0x00, 0xaa, 0x00, 0xac, 0x00, 0x98, 0x00,
+0x68, 0x00, 0x2c, 0x00, 0xf2, 0xff, 0xb6, 0xff, 0x8a, 0xff, 0x54, 0xff, 0x3c, 0xff, 0x3c, 0xff,
+0x54, 0xff, 0x86, 0xff, 0xc0, 0xff, 0xf8, 0xff, 0x28, 0x00, 0x60, 0x00, 0x8a, 0x00, 0xa6, 0x00,
+0xac, 0x00, 0x92, 0x00, 0x62, 0x00, 0x22, 0x00, 0xf0, 0xff, 0xbe, 0xff, 0x84, 0xff, 0x5c, 0xff,
+0x56, 0xff, 0x50, 0xff, 0x72, 0xff, 0x92, 0xff, 0xba, 0xff, 0x00, 0x00, 0x32, 0x00, 0x64, 0x00,
+0x86, 0x00, 0x90, 0x00, 0x8e, 0x00, 0x72, 0x00, 0x40, 0x00, 0x0a, 0x00, 0xe4, 0xff, 0xb4, 0xff,
+0x8c, 0xff, 0x78, 0xff, 0x64, 0xff, 0x62, 0xff, 0x70, 0xff, 0x9a, 0xff, 0xd4, 0xff, 0xfc, 0xff,
+0x22, 0x00, 0x3e, 0x00, 0x56, 0x00, 0x60, 0x00, 0x52, 0x00, 0x46, 0x00, 0x22, 0x00, 0xfc, 0xff,
+0xe2, 0xff, 0xba, 0xff, 0xa4, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x8c, 0xff, 0x96, 0xff, 0xc0, 0xff,
+0xd6, 0xff, 0xfa, 0xff, 0x1c, 0x00, 0x2e, 0x00, 0x3a, 0x00, 0x2a, 0x00, 0x2e, 0x00, 0x30, 0x00,
+0x16, 0x00, 0x04, 0x00, 0xe8, 0xff, 0xd2, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xb4, 0xff, 0xac, 0xff,
+0xc0, 0xff, 0xd0, 0xff, 0xea, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x0a, 0x00, 0x12, 0x00,
+0x0e, 0x00, 0x04, 0x00, 0xfe, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xe0, 0xff,
+0xd6, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf8, 0xff,
+0xf6, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0x0e, 0x00, 0x04, 0x00, 0xfc, 0xff,
+0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xe6, 0xff, 0xdc, 0xff,
+0xde, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xde, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf6, 0xff, 0x0a, 0x00,
+0x18, 0x00, 0x24, 0x00, 0x18, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xea, 0xff,
+0xca, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xb0, 0xff, 0xaa, 0xff, 0xb4, 0xff, 0xcc, 0xff, 0xe6, 0xff,
+0x0a, 0x00, 0x26, 0x00, 0x4a, 0x00, 0x5a, 0x00, 0x4e, 0x00, 0x44, 0x00, 0x3a, 0x00, 0x1a, 0x00,
+0xfe, 0xff, 0xdc, 0xff, 0xac, 0xff, 0x9c, 0xff, 0x8c, 0xff, 0x8a, 0xff, 0x90, 0xff, 0x9e, 0xff,
+0xd2, 0xff, 0xfa, 0xff, 0x2a, 0x00, 0x56, 0x00, 0x68, 0x00, 0x7c, 0x00, 0x68, 0x00, 0x4e, 0x00,
+0x3e, 0x00, 0x0e, 0x00, 0xe4, 0xff, 0xb6, 0xff, 0x88, 0xff, 0x68, 0xff, 0x48, 0xff, 0x5c, 0xff,
+0x78, 0xff, 0xa0, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x3e, 0x00, 0x62, 0x00, 0x7c, 0x00, 0x8a, 0x00,
+0x80, 0x00, 0x5c, 0x00, 0x2e, 0x00, 0x06, 0x00, 0xd0, 0xff, 0x9e, 0xff, 0x6a, 0xff, 0x4a, 0xff,
+0x48, 0xff, 0x54, 0xff, 0x80, 0xff, 0xb0, 0xff, 0xde, 0xff, 0x1e, 0x00, 0x56, 0x00, 0x7a, 0x00,
+0x94, 0x00, 0x96, 0x00, 0x8e, 0x00, 0x70, 0x00, 0x26, 0x00, 0xf2, 0xff, 0xbe, 0xff, 0x80, 0xff,
+0x48, 0xff, 0x3a, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x7c, 0xff, 0xbc, 0xff, 0x02, 0x00, 0x26, 0x00,
+0x6a, 0x00, 0x96, 0x00, 0xb4, 0x00, 0xb0, 0x00, 0x88, 0x00, 0x58, 0x00, 0x0e, 0x00, 0xd0, 0xff,
+0x98, 0xff, 0x64, 0xff, 0x44, 0xff, 0x22, 0xff, 0x28, 0xff, 0x56, 0xff, 0x82, 0xff, 0xd2, 0xff,
+0x10, 0x00, 0x46, 0x00, 0x86, 0x00, 0xa0, 0x00, 0xb6, 0x00, 0xa6, 0x00, 0x84, 0x00, 0x50, 0x00,
+0x12, 0x00, 0xdc, 0xff, 0x96, 0xff, 0x68, 0xff, 0x46, 0xff, 0x2e, 0xff, 0x40, 0xff, 0x62, 0xff,
+0x9a, 0xff, 0xe0, 0xff, 0x18, 0x00, 0x4e, 0x00, 0x7a, 0x00, 0xa4, 0x00, 0xae, 0x00, 0xaa, 0x00,
+0x88, 0x00, 0x42, 0x00, 0x14, 0x00, 0xd6, 0xff, 0x98, 0xff, 0x70, 0xff, 0x48, 0xff, 0x42, 0xff,
+0x4e, 0xff, 0x6e, 0xff, 0xa8, 0xff, 0xe2, 0xff, 0x20, 0x00, 0x46, 0x00, 0x74, 0x00, 0x8e, 0x00,
+0x90, 0x00, 0x88, 0x00, 0x66, 0x00, 0x2e, 0x00, 0xfe, 0xff, 0xc6, 0xff, 0x94, 0xff, 0x6e, 0xff,
+0x4e, 0xff, 0x4c, 0xff, 0x64, 0xff, 0x82, 0xff, 0xb6, 0xff, 0xee, 0xff, 0x1c, 0x00, 0x48, 0x00,
+0x6a, 0x00, 0x7e, 0x00, 0x86, 0x00, 0x70, 0x00, 0x50, 0x00, 0x1e, 0x00, 0xf2, 0xff, 0xc2, 0xff,
+0x9c, 0xff, 0x88, 0xff, 0x70, 0xff, 0x78, 0xff, 0x8c, 0xff, 0xa0, 0xff, 0xca, 0xff, 0xf6, 0xff,
+0x10, 0x00, 0x38, 0x00, 0x48, 0x00, 0x58, 0x00, 0x5c, 0x00, 0x4c, 0x00, 0x32, 0x00, 0x06, 0x00,
+0xe2, 0xff, 0xc0, 0xff, 0xac, 0xff, 0x98, 0xff, 0x92, 0xff, 0x92, 0xff, 0xa0, 0xff, 0xb4, 0xff,
+0xd2, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0x1e, 0x00, 0x22, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x20, 0x00,
+0x16, 0x00, 0x00, 0x00, 0xea, 0xff, 0xdc, 0xff, 0xd0, 0xff, 0xc8, 0xff, 0xd0, 0xff, 0xc0, 0xff,
+0xc6, 0xff, 0xd2, 0xff, 0xdc, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x06, 0x00,
+0x08, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfe, 0xff,
+0xf4, 0xff, 0xec, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xe8, 0xff,
+0xee, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0x0a, 0x00, 0x18, 0x00,
+0x0c, 0x00, 0x12, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xf4, 0xff, 0xe2, 0xff, 0xdc, 0xff, 0xce, 0xff,
+0xbc, 0xff, 0xce, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xd4, 0xff, 0xe4, 0xff, 0xfe, 0xff, 0x0a, 0x00,
+0x24, 0x00, 0x36, 0x00, 0x42, 0x00, 0x2c, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x04, 0x00, 0xf0, 0xff,
+0xda, 0xff, 0xbe, 0xff, 0xa0, 0xff, 0x92, 0xff, 0xac, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xea, 0xff,
+0x16, 0x00, 0x2e, 0x00, 0x46, 0x00, 0x50, 0x00, 0x62, 0x00, 0x66, 0x00, 0x3e, 0x00, 0x14, 0x00,
+0xee, 0xff, 0xd6, 0xff, 0xb0, 0xff, 0x84, 0xff, 0x68, 0xff, 0x5a, 0xff, 0x7a, 0xff, 0xac, 0xff,
+0xa0, 0xff, 0xc6, 0xff, 0x20, 0x00, 0x74, 0x00, 0x6a, 0x00, 0x5c, 0x00, 0x82, 0x00, 0x64, 0x00,
+0x4a, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xbe, 0xff, 0x8a, 0xff, 0x7e, 0xff, 0x52, 0xff, 0x86, 0xff,
+0x7a, 0xff, 0x2c, 0xff, 0x98, 0xff, 0x26, 0x00, 0x6c, 0x00, 0x52, 0x00, 0x72, 0x00, 0xb8, 0x00,
+0xb6, 0x00, 0x04, 0x01, 0x34, 0x01, 0x48, 0x01, 0xbc, 0x00, 0xf0, 0xfe, 0x16, 0xfc, 0x70, 0xf8,
+0xc2, 0xf4, 0xf4, 0xf1, 0x12, 0xf1, 0x4c, 0xf3, 0xde, 0xf8, 0x9c, 0x01, 0x90, 0x0c, 0x1a, 0x18,
+0x0f, 0x22, 0x9b, 0x28, 0x0d, 0x2a, 0xb7, 0x24, 0xd4, 0x18, 0x6c, 0x07, 0x06, 0xf3, 0xcb, 0xde,
+0x0d, 0xcd, 0x37, 0xc0, 0x15, 0xba, 0xe1, 0xbc, 0xab, 0xc8, 0xf9, 0xdb, 0x28, 0xf5, 0x32, 0x11,
+0x43, 0x2c, 0x41, 0x42, 0xd1, 0x50, 0x7a, 0x55, 0x0d, 0x4f, 0x6b, 0x3e, 0x41, 0x25, 0xde, 0x06,
+0x6e, 0xe7, 0x63, 0xca, 0xf7, 0xb3, 0x14, 0xa7, 0x48, 0xa5, 0x41, 0xae, 0x5b, 0xc1, 0xad, 0xdc,
+0xf0, 0xfb, 0xf6, 0x1a, 0x4b, 0x35, 0xe7, 0x48, 0x45, 0x54, 0x88, 0x56, 0x4f, 0x4e, 0x6b, 0x3d,
+0xc1, 0x24, 0xbc, 0x06, 0x4c, 0xe7, 0x09, 0xca, 0x1b, 0xb4, 0xc2, 0xa8, 0x54, 0xa9, 0xf3, 0xb4,
+0x9b, 0xc9, 0x8a, 0xe4, 0x3a, 0x01, 0x9e, 0x1b, 0x71, 0x31, 0x03, 0x42, 0x7f, 0x4c, 0x8f, 0x4f,
+0xe3, 0x49, 0xcd, 0x3a, 0x49, 0x23, 0xa2, 0x05, 0xbe, 0xe5, 0x19, 0xc9, 0x87, 0xb4, 0x41, 0xab,
+0x37, 0xae, 0xdb, 0xbb, 0x37, 0xd1, 0x7e, 0xea, 0x40, 0x04, 0xa4, 0x1b, 0x51, 0x2f, 0x7b, 0x3e,
+0x1d, 0x48, 0xe3, 0x4a, 0x33, 0x45, 0xfb, 0x35, 0x07, 0x1e, 0x14, 0x00, 0xd3, 0xe0, 0xe3, 0xc5,
+0x79, 0xb4, 0x1f, 0xaf, 0x7d, 0xb5, 0x19, 0xc5, 0xc9, 0xda, 0x06, 0xf3, 0x10, 0x0a, 0x93, 0x1e,
+0x0b, 0x2f, 0xb7, 0x3a, 0x3f, 0x41, 0x59, 0x41, 0x91, 0x39, 0xb1, 0x29, 0x26, 0x13, 0xf4, 0xf8,
+0xbf, 0xdf, 0x33, 0xcc, 0xb9, 0xc1, 0xe1, 0xc0, 0x69, 0xc8, 0xc7, 0xd5, 0x14, 0xe6, 0x1a, 0xf7,
+0x12, 0x07, 0xf8, 0x14, 0x37, 0x20, 0x5d, 0x28, 0xd5, 0x2c, 0x27, 0x2d, 0xdf, 0x27, 0xff, 0x1c,
+0x9a, 0x0d, 0xbe, 0xfb, 0xdc, 0xea, 0x41, 0xde, 0x87, 0xd7, 0x43, 0xd7, 0x2b, 0xdc, 0x60, 0xe4,
+0x2e, 0xee, 0x14, 0xf8, 0x62, 0x01, 0x4c, 0x09, 0x98, 0x0f, 0x5e, 0x14, 0xba, 0x17, 0x2e, 0x19,
+0x36, 0x18, 0x4a, 0x14, 0x8a, 0x0d, 0x06, 0x05, 0x08, 0xfc, 0x30, 0xf4, 0xe8, 0xee, 0xbc, 0xec,
+0x4c, 0xed, 0xb2, 0xef, 0x20, 0xf3, 0x58, 0xf6, 0xde, 0xf8, 0xb0, 0xfa, 0x42, 0xfc, 0x34, 0xfe,
+0x6c, 0x01, 0x0c, 0x06, 0x62, 0x0b, 0x1c, 0x10, 0x8e, 0x12, 0x44, 0x12, 0x8c, 0x0f, 0x50, 0x0b,
+0x56, 0x06, 0xaa, 0x01, 0xc2, 0xfd, 0x54, 0xfa, 0x9c, 0xf6, 0x22, 0xf2, 0x2e, 0xed, 0xb6, 0xe8,
+0x12, 0xe6, 0xd0, 0xe6, 0x66, 0xec, 0xc8, 0xf6, 0x3c, 0x04, 0xa0, 0x11, 0x65, 0x1c, 0xad, 0x22,
+0x0f, 0x24, 0x0d, 0x21, 0x2a, 0x1b, 0xac, 0x13, 0x26, 0x0b, 0x82, 0x01, 0x5e, 0xf6, 0x22, 0xea,
+0xdf, 0xdd, 0xe3, 0xd3, 0x91, 0xce, 0x6f, 0xd0, 0x79, 0xda, 0xb0, 0xeb, 0xfe, 0x00, 0x76, 0x16,
+0x65, 0x28, 0x1f, 0x34, 0xc1, 0x38, 0xd5, 0x36, 0xb5, 0x2f, 0x63, 0x24, 0xb8, 0x15, 0xda, 0x03,
+0xde, 0xef, 0x45, 0xdb, 0x0b, 0xc9, 0x6b, 0xbc, 0x2b, 0xb8, 0x31, 0xbe, 0x59, 0xce, 0x68, 0xe6,
+0x82, 0x02, 0x13, 0x1e, 0xdb, 0x34, 0x95, 0x44, 0xa5, 0x4b, 0x33, 0x4a, 0x01, 0x41, 0x15, 0x31,
+0x44, 0x1b, 0x2c, 0x01, 0x24, 0xe5, 0x6b, 0xca, 0x2b, 0xb5, 0xc6, 0xa8, 0xb2, 0xa7, 0x8b, 0xb2,
+0x3f, 0xc8, 0x04, 0xe6, 0xae, 0x07, 0x0d, 0x28, 0xf1, 0x42, 0xe8, 0x54, 0x72, 0x5c, 0x34, 0x59,
+0xaf, 0x4b, 0x39, 0x35, 0x06, 0x18, 0x44, 0xf7, 0x67, 0xd6, 0xdf, 0xb9, 0x7a, 0xa5, 0x44, 0x9c,
+0x50, 0x9f, 0x5f, 0xae, 0x05, 0xc8, 0x94, 0xe9, 0xbc, 0x0e, 0x6f, 0x32, 0xf7, 0x4f, 0x6a, 0x63,
+0x5a, 0x6a, 0xdc, 0x63, 0x9f, 0x50, 0x11, 0x33, 0x44, 0x0f, 0xa6, 0xe9, 0x1f, 0xc7, 0xd3, 0xab,
+0xe8, 0x9a, 0xac, 0x95, 0x66, 0x9c, 0xa7, 0xae, 0x19, 0xcb, 0x4c, 0xef, 0xf4, 0x16, 0xc3, 0x3c,
+0x6c, 0x5b, 0x66, 0x6e, 0x4a, 0x72, 0x60, 0x66, 0xb3, 0x4c, 0xb5, 0x29, 0xc0, 0x02, 0xef, 0xdc,
+0xbb, 0xbc, 0x4e, 0xa5, 0x4e, 0x98, 0x4c, 0x96, 0x48, 0x9f, 0x0f, 0xb3, 0x1d, 0xd1, 0xc6, 0xf6,
+0x99, 0x1f, 0xd3, 0x45, 0x82, 0x63, 0x8a, 0x73, 0xcc, 0x72, 0xc8, 0x61, 0x27, 0x44, 0x91, 0x1f,
+0x88, 0xf9, 0x7b, 0xd6, 0xa7, 0xb9, 0x86, 0xa5, 0x26, 0x9b, 0x00, 0x9b, 0x70, 0xa5, 0xb5, 0xba,
+0xe9, 0xd9, 0x24, 0x00, 0x63, 0x28, 0x75, 0x4c, 0x4c, 0x66, 0x28, 0x71, 0x70, 0x6b, 0xec, 0x56,
+0x8d, 0x38, 0x8c, 0x15, 0x94, 0xf2, 0x37, 0xd3, 0x1f, 0xba, 0x4a, 0xa9, 0xb0, 0xa1, 0xee, 0xa3,
+0x57, 0xb0, 0xf3, 0xc6, 0x2a, 0xe6, 0x88, 0x0a, 0xcb, 0x2e, 0x3d, 0x4d, 0xa8, 0x60, 0x02, 0x66,
+0x14, 0x5d, 0x9d, 0x48, 0xdf, 0x2c, 0x28, 0x0e, 0x10, 0xf0, 0x6f, 0xd5, 0xab, 0xc0, 0x3d, 0xb3,
+0x4f, 0xae, 0x47, 0xb2, 0x7b, 0xbf, 0x4f, 0xd5, 0xa2, 0xf1, 0xca, 0x10, 0x45, 0x2e, 0x97, 0x45,
+0x17, 0x53, 0x10, 0x55, 0xb5, 0x4b, 0x7b, 0x39, 0xa9, 0x21, 0xc6, 0x07, 0xd2, 0xee, 0x6b, 0xd9,
+0x85, 0xc9, 0x83, 0xc0, 0xf3, 0xbe, 0xed, 0xc4, 0xed, 0xd1, 0x84, 0xe4, 0xca, 0xfa, 0xda, 0x11,
+0xef, 0x26, 0x1f, 0x37, 0x35, 0x40, 0xd7, 0x40, 0x3f, 0x39, 0xc1, 0x2a, 0xf4, 0x17, 0xc6, 0x03,
+0xd0, 0xf0, 0x6d, 0xe1, 0x01, 0xd7, 0x73, 0xd2, 0x79, 0xd3, 0x8f, 0xd9, 0x79, 0xe3, 0xee, 0xef,
+0xa4, 0xfd, 0x84, 0x0b, 0x62, 0x18, 0xcf, 0x22, 0x6d, 0x29, 0xc1, 0x2a, 0x67, 0x26, 0x11, 0x1d,
+0x8c, 0x10, 0x2a, 0x03, 0x4e, 0xf7, 0x7e, 0xee, 0x9e, 0xe9, 0x8e, 0xe8, 0x50, 0xea, 0x7a, 0xed,
+0x1a, 0xf1, 0xbe, 0xf4, 0xda, 0xf8, 0x22, 0xfe, 0xa2, 0x04, 0xd8, 0x0b, 0x1e, 0x12, 0xf6, 0x15,
+0xf4, 0x15, 0x76, 0x12, 0xce, 0x0c, 0xfc, 0x06, 0xb4, 0x02, 0x8e, 0x00, 0x4a, 0x00, 0xc4, 0x00,
+0x70, 0x00, 0x0e, 0xfe, 0xb6, 0xf9, 0x48, 0xf4, 0xb0, 0xef, 0xc0, 0xed, 0x48, 0xef, 0xdc, 0xf3,
+0x46, 0xfa, 0xa4, 0x00, 0xb8, 0x05, 0x50, 0x09, 0x2e, 0x0c, 0x4c, 0x0f, 0xea, 0x12, 0x82, 0x16,
+0xa0, 0x18, 0xda, 0x17, 0xd8, 0x12, 0x8c, 0x09, 0x18, 0xfd, 0x9c, 0xef, 0xd2, 0xe3, 0xf3, 0xdb,
+0x77, 0xd9, 0x87, 0xdc, 0x1a, 0xe4, 0x84, 0xee, 0x60, 0xfa, 0x98, 0x06, 0xd0, 0x12, 0x41, 0x1e,
+0xd7, 0x27, 0xed, 0x2d, 0x19, 0x2f, 0x59, 0x2a, 0x8f, 0x1f, 0x98, 0x0f, 0x3a, 0xfc, 0x30, 0xe8,
+0x4d, 0xd6, 0x8d, 0xc9, 0xb9, 0xc3, 0xed, 0xc5, 0xc5, 0xcf, 0xcf, 0xdf, 0xba, 0xf3, 0x3c, 0x09,
+0x1f, 0x1e, 0x0d, 0x30, 0xf1, 0x3c, 0xff, 0x42, 0x9b, 0x41, 0x8d, 0x38, 0x71, 0x28, 0x86, 0x12,
+0xfe, 0xf8, 0xa1, 0xde, 0x17, 0xc7, 0xcf, 0xb5, 0x0d, 0xae, 0x9f, 0xb1, 0x33, 0xc0, 0xb9, 0xd7,
+0x7e, 0xf4, 0x40, 0x12, 0x07, 0x2d, 0xf5, 0x41, 0xdf, 0x4e, 0x49, 0x53, 0x8f, 0x4e, 0x5d, 0x41,
+0xb3, 0x2c, 0xe6, 0x11, 0x12, 0xf3, 0x8b, 0xd3, 0x93, 0xb7, 0x00, 0xa4, 0xee, 0x9c, 0xfa, 0xa3,
+0xcd, 0xb8, 0xbb, 0xd7, 0x5c, 0xfb, 0xdd, 0x1d, 0x0b, 0x3b, 0x31, 0x50, 0xfa, 0x5b, 0xf6, 0x5d,
+0x30, 0x56, 0x83, 0x45, 0xdd, 0x2c, 0x90, 0x0d, 0xfe, 0xe9, 0x4d, 0xc6, 0x10, 0xa8, 0xac, 0x94,
+0x7a, 0x90, 0xd6, 0x9c, 0xe1, 0xb7, 0x9d, 0xdc, 0x44, 0x04, 0xe1, 0x28, 0x8f, 0x46, 0xde, 0x5a,
+0x0c, 0x65, 0xc6, 0x64, 0x00, 0x5a, 0xbf, 0x45, 0xed, 0x28, 0x38, 0x05, 0x11, 0xde, 0x8d, 0xb8,
+0xc2, 0x9a, 0xb6, 0x8a, 0x8e, 0x8b, 0x80, 0x9d, 0x23, 0xbd, 0xc8, 0xe4, 0x60, 0x0d, 0xb1, 0x31,
+0xfd, 0x4d, 0x82, 0x60, 0x7e, 0x68, 0x84, 0x65, 0xc0, 0x57, 0xf9, 0x3f, 0xc3, 0x1f, 0x5c, 0xf9,
+0x6b, 0xd1, 0x77, 0xad, 0xd2, 0x93, 0xf4, 0x88, 0xfe, 0x8e, 0x9a, 0xa4, 0x25, 0xc6, 0xb4, 0xed,
+0xee, 0x14, 0x45, 0x37, 0x4d, 0x51, 0x7c, 0x61, 0xd8, 0x66, 0xde, 0x60, 0xe7, 0x4f, 0x63, 0x35,
+0x48, 0x13, 0x38, 0xed, 0x17, 0xc8, 0x38, 0xa9, 0x76, 0x95, 0xd2, 0x8f, 0x1a, 0x99, 0x9f, 0xaf,
+0x15, 0xd0, 0x12, 0xf5, 0x48, 0x19, 0x6f, 0x38, 0xab, 0x4f, 0xd8, 0x5c, 0x3a, 0x5f, 0x3e, 0x56,
+0xd7, 0x42, 0x53, 0x27, 0x88, 0x06, 0x86, 0xe4, 0xad, 0xc5, 0xc1, 0xad, 0x90, 0x9f, 0x68, 0x9d,
+0x44, 0xa7, 0x75, 0xbc, 0xa1, 0xd9, 0x9c, 0xfa, 0xf0, 0x1a, 0xa3, 0x36, 0x47, 0x4a, 0x0d, 0x54,
+0xdf, 0x52, 0x2d, 0x47, 0x0b, 0x33, 0x06, 0x19, 0xd8, 0xfc, 0xbb, 0xe1, 0x69, 0xca, 0xd9, 0xb8,
+0xfb, 0xae, 0x2d, 0xae, 0x39, 0xb7, 0x5d, 0xc9, 0x77, 0xe2, 0xfc, 0xfe, 0xb8, 0x1a, 0xb9, 0x31,
+0x9f, 0x40, 0xc5, 0x45, 0x6b, 0x41, 0xb3, 0x34, 0x67, 0x22, 0xa4, 0x0d, 0xda, 0xf8, 0x14, 0xe6,
+0x4f, 0xd6, 0x33, 0xca, 0x21, 0xc3, 0x69, 0xc2, 0xf7, 0xc8, 0x37, 0xd7, 0x1e, 0xeb, 0xae, 0x01,
+0x08, 0x17, 0x6d, 0x27, 0x8f, 0x30, 0xb1, 0x31, 0xb3, 0x2b, 0x07, 0x21, 0x24, 0x14, 0xfc, 0x06,
+0xe8, 0xfa, 0x42, 0xf0, 0xec, 0xe6, 0x21, 0xdf, 0x61, 0xd9, 0xa5, 0xd7, 0x0f, 0xdb, 0xe2, 0xe3,
+0x0a, 0xf1, 0xde, 0xff, 0x60, 0x0d, 0xee, 0x16, 0x26, 0x1b, 0x30, 0x1a, 0x1e, 0x16, 0x4e, 0x10,
+0xc4, 0x0a, 0x2e, 0x06, 0x94, 0x02, 0x3c, 0xff, 0x32, 0xfb, 0x34, 0xf6, 0x00, 0xf1, 0x0c, 0xed,
+0x8e, 0xeb, 0x5c, 0xed, 0xcc, 0xf1, 0x9e, 0xf7, 0xdc, 0xfc, 0x54, 0x00, 0xfa, 0x01, 0x52, 0x02,
+0x76, 0x02, 0x78, 0x03, 0xd4, 0x05, 0x74, 0x09, 0x5e, 0x0d, 0x22, 0x10, 0xa8, 0x10, 0x28, 0x0e,
+0xac, 0x08, 0x4e, 0x01, 0x64, 0xf9, 0x4c, 0xf2, 0x0c, 0xed, 0xb0, 0xe9, 0x16, 0xe8, 0x32, 0xe8,
+0xf4, 0xe9, 0x90, 0xed, 0x4c, 0xf3, 0x20, 0xfb, 0xc8, 0x04, 0xae, 0x0f, 0x3c, 0x1a, 0x9f, 0x22,
+0x0d, 0x27, 0xd7, 0x25, 0x53, 0x1e, 0x5e, 0x11, 0x20, 0x01, 0x3c, 0xf0, 0xc1, 0xe1, 0xfd, 0xd6,
+0x35, 0xd1, 0x89, 0xd0, 0x9b, 0xd4, 0xad, 0xdc, 0x4a, 0xe8, 0xe6, 0xf6, 0xaa, 0x07, 0x7e, 0x19,
+0x01, 0x2a, 0x19, 0x37, 0x7b, 0x3d, 0x0d, 0x3b, 0xcf, 0x2e, 0x92, 0x1a, 0x8a, 0x01, 0x1c, 0xe8,
+0x71, 0xd2, 0x8b, 0xc3, 0x7b, 0xbc, 0x0b, 0xbd, 0x29, 0xc4, 0xa1, 0xd0, 0xcf, 0xe1, 0x7c, 0xf6,
+0xb2, 0x0d, 0xc7, 0x25, 0xaf, 0x3b, 0x4b, 0x4b, 0x91, 0x51, 0x69, 0x4b, 0x41, 0x39, 0x7f, 0x1d,
+0xe6, 0xfc, 0x3b, 0xdd, 0x77, 0xc3, 0x31, 0xb2, 0xbe, 0xaa, 0xc5, 0xac, 0xa3, 0xb6, 0xcd, 0xc7,
+0xc9, 0xde, 0x98, 0xfa, 0x08, 0x19, 0xaf, 0x36, 0x4d, 0x4f, 0x02, 0x5f, 0xc6, 0x61, 0xf8, 0x55,
+0x09, 0x3d, 0xee, 0x1a, 0x84, 0xf5, 0x89, 0xd2, 0xcb, 0xb6, 0x68, 0xa5, 0xfa, 0x9e, 0xec, 0xa2,
+0x07, 0xb0, 0x7d, 0xc5, 0x13, 0xe2, 0x3c, 0x03, 0xa3, 0x25, 0x6b, 0x45, 0xf6, 0x5d, 0xda, 0x6a,
+0x38, 0x69, 0x5a, 0x58, 0x45, 0x3b, 0x36, 0x16, 0x60, 0xee, 0xdd, 0xc9, 0x57, 0xad, 0x90, 0x9b,
+0xc2, 0x95, 0xa0, 0x9b, 0x8f, 0xac, 0x93, 0xc7, 0xd2, 0xe9, 0x86, 0x0f, 0x85, 0x34, 0xcf, 0x53,
+0x40, 0x69, 0x68, 0x71, 0xc6, 0x6a, 0x34, 0x56, 0xa7, 0x36, 0x28, 0x10, 0xc4, 0xe7, 0xf1, 0xc2,
+0x44, 0xa6, 0x4c, 0x95, 0x76, 0x91, 0x0a, 0x9b, 0x03, 0xb1, 0xf9, 0xd0, 0xce, 0xf6, 0x7b, 0x1d,
+0x4d, 0x40, 0x28, 0x5b, 0x36, 0x6b, 0x76, 0x6e, 0x6c, 0x64, 0x73, 0x4e, 0xe3, 0x2e, 0x3e, 0x09,
+0xbd, 0xe1, 0xf1, 0xbd, 0xdc, 0xa2, 0x6e, 0x94, 0x2a, 0x94, 0x16, 0xa2, 0x0f, 0xbc, 0x57, 0xde,
+0xc6, 0x03, 0x4f, 0x27, 0x15, 0x45, 0x38, 0x5a, 0x16, 0x65, 0x1a, 0x65, 0x1c, 0x5a, 0xc9, 0x44,
+0xd9, 0x26, 0xfe, 0x02, 0x8b, 0xdd, 0x0f, 0xbc, 0xdc, 0xa3, 0xfe, 0x98, 0x00, 0x9d, 0x5d, 0xae,
+0x3f, 0xca, 0x8a, 0xeb, 0x4c, 0x0d, 0x0f, 0x2b, 0x75, 0x42, 0x11, 0x52, 0x64, 0x59, 0xca, 0x57,
+0x1b, 0x4d, 0x8d, 0x39, 0xc3, 0x1d, 0xaa, 0xfc, 0x85, 0xda, 0x5d, 0xbd, 0x50, 0xaa, 0x70, 0xa4,
+0x09, 0xac, 0x4f, 0xbf, 0xa3, 0xd9, 0x64, 0xf6, 0x94, 0x11, 0x79, 0x28, 0xef, 0x39, 0x17, 0x45,
+0xa3, 0x49, 0x89, 0x47, 0x0d, 0x3e, 0xab, 0x2c, 0x56, 0x14, 0xd4, 0xf7, 0xbf, 0xdb, 0x07, 0xc5,
+0xb5, 0xb7, 0x15, 0xb6, 0x7f, 0xbf, 0xd5, 0xd0, 0x4a, 0xe6, 0x30, 0xfc, 0x14, 0x10, 0x87, 0x20,
+0x91, 0x2c, 0x39, 0x34, 0x45, 0x37, 0x3d, 0x35, 0x71, 0x2d, 0xbf, 0x1f, 0xf6, 0x0c, 0xbc, 0xf7,
+0x73, 0xe3, 0xdf, 0xd3, 0x09, 0xcc, 0x45, 0xcc, 0xfb, 0xd3, 0x7f, 0xe0, 0x24, 0xef, 0x70, 0xfd,
+0xf2, 0x09, 0xd8, 0x13, 0x40, 0x1b, 0xcd, 0x1f, 0x71, 0x21, 0x8b, 0x20, 0x5f, 0x1c, 0xe0, 0x14,
+0x68, 0x0a, 0x58, 0xfe, 0x9e, 0xf2, 0x8c, 0xe9, 0x62, 0xe4, 0xe8, 0xe3, 0x72, 0xe7, 0x7e, 0xed,
+0x6a, 0xf4, 0x18, 0xfb, 0x90, 0x00, 0x8a, 0x04, 0x38, 0x07, 0x14, 0x09, 0xac, 0x0a, 0x74, 0x0c,
+0x44, 0x0e, 0x38, 0x0f, 0xa0, 0x0e, 0xb0, 0x0b, 0x0a, 0x07, 0x9e, 0x01, 0xce, 0xfc, 0x40, 0xf9,
+0x5c, 0xf7, 0x96, 0xf6, 0x2c, 0xf6, 0x86, 0xf5, 0x20, 0xf4, 0x4e, 0xf2, 0x04, 0xf1, 0x6a, 0xf1,
+0xae, 0xf4, 0x88, 0xfb, 0x2e, 0x05, 0x88, 0x0f, 0x34, 0x18, 0xe5, 0x1c, 0x09, 0x1d, 0x82, 0x19,
+0x90, 0x13, 0x82, 0x0c, 0x2e, 0x05, 0x90, 0xfd, 0x80, 0xf5, 0x06, 0xed, 0x34, 0xe4, 0xad, 0xdc,
+0x89, 0xd8, 0xbd, 0xd9, 0xa1, 0xe1, 0xe6, 0xef, 0x64, 0x02, 0xee, 0x15, 0x55, 0x26, 0x63, 0x30,
+0x6b, 0x33, 0x0b, 0x30, 0xdb, 0x27, 0x55, 0x1c, 0xac, 0x0e, 0x88, 0xff, 0x66, 0xef, 0xdd, 0xde,
+0xd9, 0xcf, 0x33, 0xc5, 0x9f, 0xc1, 0xc7, 0xc6, 0x0d, 0xd5, 0x30, 0xeb, 0xbc, 0x05, 0xd1, 0x1f,
+0x29, 0x35, 0xa9, 0x42, 0x15, 0x47, 0x1f, 0x43, 0x27, 0x38, 0xfd, 0x27, 0xe2, 0x13, 0xec, 0xfc,
+0xb2, 0xe4, 0xdf, 0xcd, 0x45, 0xbb, 0x77, 0xb0, 0xe1, 0xaf, 0x61, 0xba, 0x47, 0xcf, 0x94, 0xeb,
+0x68, 0x0b, 0xef, 0x29, 0xe1, 0x42, 0xb9, 0x52, 0x44, 0x58, 0x3d, 0x53, 0xdb, 0x44, 0xc5, 0x2e,
+0x14, 0x13, 0x5e, 0xf4, 0xc1, 0xd5, 0x35, 0xbb, 0x82, 0xa8, 0x80, 0xa0, 0x82, 0xa4, 0x65, 0xb4,
+0x41, 0xce, 0x44, 0xef, 0xf2, 0x12, 0x91, 0x34, 0xc3, 0x4f, 0x26, 0x61, 0x28, 0x66, 0x62, 0x5e,
+0xd7, 0x4a, 0x17, 0x2e, 0x88, 0x0b, 0x10, 0xe7, 0x87, 0xc5, 0x5f, 0xab, 0xde, 0x9b, 0x2a, 0x98,
+0xb4, 0xa0, 0x6b, 0xb4, 0x9d, 0xd1, 0x04, 0xf5, 0xb0, 0x1a, 0x3f, 0x3e, 0xd4, 0x5a, 0x3a, 0x6c,
+0x44, 0x6f, 0x48, 0x63, 0x05, 0x4a, 0x91, 0x27, 0x7e, 0x00, 0x2d, 0xda, 0x7f, 0xb9, 0x44, 0xa2,
+0x7a, 0x96, 0x66, 0x96, 0xa2, 0xa1, 0x71, 0xb7, 0x1f, 0xd6, 0xae, 0xfa, 0x8d, 0x21, 0x0d, 0x46,
+0xf6, 0x62, 0x12, 0x73, 0xd0, 0x72, 0x1a, 0x62, 0x21, 0x44, 0xf7, 0x1d, 0x7a, 0xf5, 0x35, 0xd0,
+0x99, 0xb2, 0x54, 0x9f, 0x16, 0x97, 0xa0, 0x99, 0xd4, 0xa6, 0x09, 0xbe, 0xc5, 0xdd, 0x56, 0x03,
+0x93, 0x2a, 0x4d, 0x4e, 0x8a, 0x68, 0x06, 0x74, 0x5e, 0x6e, 0xe2, 0x58, 0xe5, 0x37, 0x5e, 0x11,
+0x10, 0xeb, 0xb3, 0xc9, 0xab, 0xb0, 0x8a, 0xa1, 0xc4, 0x9c, 0x22, 0xa2, 0x23, 0xb1, 0x39, 0xc9,
+0xd2, 0xe8, 0x1a, 0x0d, 0x9b, 0x31, 0xfd, 0x50, 0x82, 0x65, 0x76, 0x6b, 0xae, 0x61, 0xb5, 0x4a,
+0x2d, 0x2b, 0x7e, 0x08, 0x72, 0xe7, 0x93, 0xcb, 0x65, 0xb7, 0xfb, 0xab, 0x9e, 0xa9, 0x07, 0xb0,
+0x4b, 0xbf, 0x4f, 0xd6, 0x84, 0xf3, 0xd2, 0x13, 0xef, 0x32, 0xe9, 0x4b, 0x70, 0x5a, 0x08, 0x5c,
+0xd3, 0x50, 0x8b, 0x3b, 0xcd, 0x1f, 0x52, 0x02, 0xac, 0xe6, 0xe5, 0xcf, 0xd5, 0xbf, 0xb5, 0xb7,
+0xc7, 0xb7, 0xf7, 0xbf, 0x5f, 0xcf, 0x9e, 0xe4, 0xbe, 0xfd, 0x70, 0x17, 0xab, 0x2e, 0x03, 0x40,
+0x15, 0x49, 0x79, 0x48, 0x8d, 0x3e, 0x0b, 0x2d, 0x46, 0x17, 0x5a, 0x00, 0x36, 0xeb, 0x1d, 0xda,
+0xc3, 0xce, 0x09, 0xca, 0xd7, 0xcb, 0xb5, 0xd3, 0x61, 0xe0, 0x64, 0xf0, 0x82, 0x01, 0x88, 0x12,
+0x77, 0x21, 0xed, 0x2c, 0x33, 0x33, 0x57, 0x33, 0xfb, 0x2c, 0x0f, 0x21, 0x54, 0x11, 0xa0, 0x00,
+0xbc, 0xf1, 0x74, 0xe6, 0x49, 0xe0, 0x1d, 0xdf, 0x71, 0xe2, 0x92, 0xe8, 0x20, 0xf0, 0xbc, 0xf7,
+0x60, 0xff, 0xc0, 0x06, 0x2e, 0x0e, 0x4c, 0x15, 0xdc, 0x1a, 0x81, 0x1d, 0xfe, 0x1b, 0x7c, 0x16,
+0x34, 0x0e, 0x2e, 0x05, 0x4c, 0xfd, 0x4c, 0xf8, 0x58, 0xf6, 0xcc, 0xf6, 0x36, 0xf8, 0xf2, 0xf8,
+0x86, 0xf8, 0x16, 0xf7, 0x82, 0xf5, 0x80, 0xf5, 0x10, 0xf8, 0x42, 0xfd, 0xce, 0x03, 0xc8, 0x09,
+0xc0, 0x0d, 0x42, 0x0f, 0xb8, 0x0e, 0x88, 0x0d, 0xfa, 0x0c, 0x3a, 0x0d, 0xe6, 0x0d, 0x98, 0x0d,
+0xe2, 0x0a, 0xf4, 0x04, 0x26, 0xfc, 0x0e, 0xf2, 0xf6, 0xe8, 0x03, 0xe3, 0xc5, 0xe1, 0xc4, 0xe5,
+0xa2, 0xed, 0x92, 0xf7, 0xb8, 0x01, 0x10, 0x0b, 0x9e, 0x13, 0x04, 0x1b, 0x0b, 0x21, 0xff, 0x24,
+0xbd, 0x25, 0xeb, 0x21, 0x0a, 0x19, 0x7c, 0x0b, 0xde, 0xfa, 0x7c, 0xe9, 0xd1, 0xd9, 0x25, 0xcf,
+0x29, 0xcb, 0xb7, 0xce, 0xfb, 0xd8, 0x22, 0xe8, 0x20, 0xfa, 0xd4, 0x0c, 0x71, 0x1e, 0x2f, 0x2d,
+0xcb, 0x37, 0x59, 0x3c, 0x65, 0x3a, 0x7d, 0x31, 0x37, 0x22, 0xf2, 0x0d, 0xae, 0xf6, 0x3b, 0xdf,
+0xa9, 0xca, 0x4b, 0xbc, 0x7f, 0xb6, 0xf3, 0xba, 0x0f, 0xc9, 0xff, 0xde, 0x64, 0xf9, 0xb4, 0x14,
+0x6f, 0x2d, 0x8d, 0x40, 0xe1, 0x4b, 0x87, 0x4e, 0x55, 0x48, 0x2b, 0x3a, 0x69, 0x25, 0xe6, 0x0b,
+0xaa, 0xef, 0xa1, 0xd3, 0x37, 0xbb, 0x4e, 0xaa, 0x88, 0xa4, 0x8d, 0xab, 0x69, 0xbf, 0xdd, 0xdc,
+0x7c, 0xff, 0x65, 0x21, 0x01, 0x3e, 0x05, 0x52, 0xfe, 0x5b, 0x5c, 0x5b, 0x03, 0x51, 0xa7, 0x3e,
+0xab, 0x25, 0xf2, 0x07, 0x4a, 0xe7, 0x3b, 0xc7, 0x01, 0xac, 0x62, 0x9a, 0x54, 0x96, 0x1e, 0xa2,
+0xa5, 0xbc, 0x65, 0xe1, 0x9e, 0x09, 0xc1, 0x2e, 0x1b, 0x4c, 0xee, 0x5e, 0x1c, 0x66, 0x56, 0x62,
+0xaf, 0x54, 0xd3, 0x3e, 0x1d, 0x22, 0x4a, 0x00, 0x19, 0xdc, 0xa3, 0xb9, 0x2a, 0x9e, 0xca, 0x8e,
+0x7e, 0x8f, 0x04, 0xa1, 0x23, 0xc1, 0xdc, 0xe9, 0xfc, 0x13, 0x0f, 0x39, 0xd4, 0x54, 0x80, 0x65,
+0x74, 0x6a, 0x38, 0x64, 0xf5, 0x53, 0x3b, 0x3b, 0x7c, 0x1b, 0xca, 0xf6, 0xbb, 0xd0, 0x47, 0xae,
+0x5c, 0x95, 0x50, 0x8a, 0x04, 0x90, 0x3c, 0xa6, 0x47, 0xc9, 0xb8, 0xf2, 0x98, 0x1b, 0x81, 0x3e,
+0xee, 0x57, 0x78, 0x66, 0x44, 0x69, 0xdc, 0x60, 0x29, 0x4e, 0xc9, 0x32, 0xca, 0x10, 0x10, 0xeb,
+0x51, 0xc6, 0x92, 0xa7, 0xc6, 0x93, 0x3c, 0x8e, 0x60, 0x98, 0xc7, 0xb0, 0x95, 0xd3, 0x0a, 0xfb,
+0xdd, 0x20, 0x9d, 0x40, 0x10, 0x57, 0xcc, 0x62, 0xfa, 0x62, 0x08, 0x58, 0x3f, 0x43, 0x89, 0x26,
+0x92, 0x04, 0x27, 0xe1, 0xf5, 0xc0, 0x4a, 0xa8, 0xa0, 0x9a, 0xba, 0x99, 0xc0, 0xa5, 0x7f, 0xbd,
+0x45, 0xdd, 0x74, 0x00, 0x05, 0x22, 0xf3, 0x3d, 0x37, 0x51, 0xe2, 0x59, 0x86, 0x57, 0x6f, 0x4a,
+0xa5, 0x34, 0x6c, 0x18, 0xc0, 0xf9, 0x0b, 0xdc, 0x43, 0xc3, 0xcb, 0xb1, 0x36, 0xa9, 0x7a, 0xaa,
+0xa3, 0xb5, 0xe7, 0xc9, 0xdc, 0xe4, 0x10, 0x03, 0xeb, 0x1f, 0xbb, 0x37, 0x13, 0x47, 0x5b, 0x4c,
+0x67, 0x47, 0x61, 0x39, 0x9f, 0x24, 0x9e, 0x0c, 0x4c, 0xf4, 0xc3, 0xde, 0xa1, 0xcd, 0x0d, 0xc2,
+0x7b, 0xbc, 0xc7, 0xbd, 0x4d, 0xc6, 0x03, 0xd6, 0x8a, 0xeb, 0xc4, 0x03, 0x3a, 0x1b, 0xb7, 0x2d,
+0xc3, 0x38, 0x9d, 0x3a, 0x13, 0x34, 0xdd, 0x26, 0x08, 0x16, 0x4e, 0x04, 0x1e, 0xf4, 0xc6, 0xe6,
+0x85, 0xdc, 0x67, 0xd5, 0x85, 0xd1, 0xb3, 0xd1, 0xd5, 0xd6, 0x59, 0xe1, 0x7c, 0xf0, 0xe2, 0x01,
+0x4c, 0x12, 0x93, 0x1e, 0x99, 0x24, 0x1b, 0x24, 0x3f, 0x1e, 0x4e, 0x15, 0x7a, 0x0b, 0xac, 0x02,
+0x6c, 0xfb, 0xaa, 0xf5, 0xe2, 0xf0, 0xa4, 0xec, 0xf6, 0xe8, 0xa6, 0xe6, 0x06, 0xe7, 0xe8, 0xea,
+0xfc, 0xf1, 0xee, 0xfa, 0x60, 0x03, 0x9e, 0x09, 0x90, 0x0c, 0x78, 0x0c, 0x7a, 0x0a, 0x52, 0x08,
+0x12, 0x07, 0xdc, 0x06, 0x8a, 0x07, 0xe4, 0x07, 0x26, 0x07, 0x40, 0x04, 0x68, 0xff, 0x42, 0xf9,
+0x62, 0xf3, 0x16, 0xef, 0x20, 0xed, 0x60, 0xed, 0x0a, 0xef, 0x86, 0xf1, 0x36, 0xf4, 0x62, 0xf7,
+0x70, 0xfb, 0xc2, 0x00, 0x60, 0x07, 0xc0, 0x0e, 0xbe, 0x15, 0x0e, 0x1b, 0x53, 0x1d, 0x62, 0x1b,
+0xa2, 0x14, 0xd2, 0x09, 0x7c, 0xfc, 0x10, 0xef, 0x85, 0xe3, 0x8d, 0xdb, 0xe7, 0xd7, 0xa1, 0xd8,
+0x63, 0xdd, 0x50, 0xe5, 0xf4, 0xef, 0x6c, 0xfc, 0x58, 0x0a, 0x64, 0x18, 0x45, 0x25, 0x01, 0x2f,
+0x7f, 0x33, 0x09, 0x31, 0x8d, 0x26, 0x08, 0x15, 0xd2, 0xfe, 0xe8, 0xe7, 0x17, 0xd4, 0x8d, 0xc6,
+0xc7, 0xc0, 0xb5, 0xc2, 0x3d, 0xcb, 0xa1, 0xd8, 0x98, 0xe9, 0xbe, 0xfc, 0x14, 0x11, 0x0b, 0x25,
+0xc3, 0x36, 0x73, 0x43, 0x37, 0x48, 0xcb, 0x42, 0x79, 0x32, 0xf4, 0x18, 0x42, 0xfa, 0xf1, 0xdb,
+0x41, 0xc3, 0xa3, 0xb3, 0x43, 0xae, 0x6d, 0xb2, 0x5f, 0xbe, 0x69, 0xd0, 0xa8, 0xe6, 0xd6, 0xff,
+0xfc, 0x19, 0x4d, 0x33, 0xa3, 0x48, 0x9a, 0x56, 0x7e, 0x59, 0x43, 0x4f, 0x1b, 0x38, 0x22, 0x17,
+0xd8, 0xf1, 0xab, 0xce, 0x8f, 0xb3, 0x7a, 0xa3, 0x62, 0x9f, 0xf0, 0xa5, 0x93, 0xb5, 0x4f, 0xcc,
+0x40, 0xe8, 0x24, 0x07, 0x67, 0x26, 0x37, 0x43, 0x70, 0x59, 0x32, 0x65, 0x30, 0x63, 0xb9, 0x52,
+0xc1, 0x35, 0x72, 0x10, 0xb8, 0xe8, 0x95, 0xc4, 0x5c, 0xa9, 0xd6, 0x99, 0xba, 0x96, 0x28, 0x9f,
+0xd1, 0xb1, 0xf5, 0xcc, 0x06, 0xee, 0xd8, 0x11, 0xb5, 0x34, 0xa3, 0x52, 0x2c, 0x67, 0xb2, 0x6e,
+0x5a, 0x67, 0xdf, 0x51, 0x57, 0x31, 0x06, 0x0a, 0x45, 0xe1, 0xab, 0xbc, 0x6e, 0xa1, 0xac, 0x92,
+0x44, 0x91, 0xbe, 0x9c, 0x5d, 0xb3, 0x3f, 0xd3, 0x82, 0xf8, 0x0d, 0x1f, 0x19, 0x42, 0x48, 0x5d,
+0xee, 0x6c, 0xb2, 0x6e, 0x8a, 0x62, 0x29, 0x4a, 0xc9, 0x28, 0xfe, 0x01, 0x95, 0xda, 0xa5, 0xb7,
+0x2a, 0x9e, 0x6c, 0x91, 0x9c, 0x92, 0x88, 0xa1, 0x47, 0xbc, 0x83, 0xdf, 0x54, 0x06, 0x87, 0x2b,
+0x83, 0x4a, 0xd4, 0x5f, 0x8a, 0x69, 0xd6, 0x66, 0xc0, 0x58, 0xc5, 0x40, 0x35, 0x21, 0xd6, 0xfc,
+0x9d, 0xd7, 0xc5, 0xb6, 0x60, 0x9f, 0x18, 0x95, 0x72, 0x99, 0xad, 0xab, 0x09, 0xc9, 0xcc, 0xec,
+0x68, 0x11, 0xaf, 0x31, 0x5d, 0x4a, 0x90, 0x59, 0xce, 0x5e, 0x50, 0x5a, 0x9b, 0x4c, 0xcd, 0x36,
+0xea, 0x19, 0x7c, 0xf8, 0x39, 0xd6, 0xa3, 0xb8, 0xb6, 0xa4, 0x4a, 0x9e, 0x3a, 0xa6, 0xf5, 0xba,
+0x65, 0xd8, 0x34, 0xf9, 0x3c, 0x18, 0xad, 0x31, 0xc1, 0x43, 0xc9, 0x4d, 0x39, 0x50, 0x13, 0x4b,
+0xc9, 0x3e, 0x5f, 0x2b, 0xdc, 0x11, 0x70, 0xf4, 0x17, 0xd7, 0xb5, 0xbe, 0x15, 0xb0, 0xdf, 0xad,
+0x2f, 0xb8, 0x57, 0xcc, 0xd6, 0xe5, 0x30, 0x00, 0x8a, 0x17, 0xd1, 0x29, 0x25, 0x36, 0xa7, 0x3c,
+0x9b, 0x3d, 0x3d, 0x39, 0x53, 0x2f, 0xd7, 0x1f, 0x82, 0x0b, 0x6c, 0xf4, 0xeb, 0xdd, 0x35, 0xcc,
+0xbb, 0xc2, 0x3b, 0xc3, 0xdd, 0xcc, 0xcb, 0xdc, 0x8e, 0xef, 0xd4, 0x01, 0x6c, 0x11, 0x25, 0x1d,
+0xcb, 0x24, 0xa5, 0x28, 0x0f, 0x29, 0xf5, 0x25, 0x6f, 0x1f, 0x4e, 0x15, 0x06, 0x08, 0x06, 0xf9,
+0x78, 0xea, 0x33, 0xdf, 0x7d, 0xd9, 0x15, 0xda, 0x29, 0xe0, 0xe0, 0xe9, 0xcc, 0xf4, 0x26, 0xff,
+0xa4, 0x07, 0xa4, 0x0d, 0x56, 0x11, 0x1c, 0x13, 0x62, 0x13, 0xae, 0x12, 0x08, 0x11, 0x42, 0x0e,
+0x1c, 0x0a, 0x76, 0x04, 0xe2, 0xfd, 0x9a, 0xf7, 0xe6, 0xf2, 0x92, 0xf0, 0xba, 0xf0, 0x94, 0xf2,
+0x68, 0xf5, 0x08, 0xf8, 0xf8, 0xf9, 0xe0, 0xfa, 0x44, 0xfb, 0xd8, 0xfb, 0xb2, 0xfd, 0x5e, 0x01,
+0x20, 0x07, 0xb6, 0x0d, 0x30, 0x13, 0xe8, 0x15, 0xda, 0x14, 0x8a, 0x10, 0x50, 0x0a, 0x82, 0x03,
+0x3e, 0xfd, 0xe8, 0xf7, 0x04, 0xf3, 0x5e, 0xee, 0xd4, 0xe9, 0xd4, 0xe5, 0x9d, 0xe3, 0xa4, 0xe4,
+0x20, 0xea, 0xd0, 0xf4, 0x92, 0x03, 0xc2, 0x13, 0xd9, 0x21, 0x8f, 0x2a, 0x79, 0x2c, 0xf9, 0x27,
+0xc5, 0x1e, 0xf6, 0x12, 0x66, 0x06, 0xb8, 0xf9, 0x5e, 0xed, 0x5d, 0xe1, 0xa1, 0xd6, 0xc1, 0xce,
+0xd5, 0xcb, 0xd3, 0xcf, 0xb7, 0xdb, 0xde, 0xee, 0x9e, 0x06, 0xd7, 0x1e, 0xab, 0x32, 0xeb, 0x3e,
+0xd9, 0x41, 0x2d, 0x3c, 0xc3, 0x2f, 0x05, 0x1f, 0xf0, 0x0b, 0xd8, 0xf7, 0x79, 0xe3, 0x7b, 0xd0,
+0x39, 0xc1, 0x37, 0xb8, 0xfb, 0xb7, 0xc1, 0xc1, 0x25, 0xd5, 0xfe, 0xef, 0x5e, 0x0e, 0x5f, 0x2b,
+0x9f, 0x42, 0x83, 0x50, 0x93, 0x53, 0x49, 0x4c, 0x67, 0x3c, 0x4d, 0x26, 0x5c, 0x0c, 0x96, 0xf0,
+0x61, 0xd5, 0xb5, 0xbd, 0xeb, 0xac, 0x24, 0xa6, 0xb2, 0xaa, 0xad, 0xba, 0x79, 0xd4, 0xca, 0xf4,
+0x22, 0x17, 0xf1, 0x36, 0xd9, 0x4f, 0xa8, 0x5e, 0x5e, 0x61, 0xd4, 0x57, 0xed, 0x43, 0x11, 0x28,
+0x4e, 0x07, 0x12, 0xe5, 0x63, 0xc5, 0x47, 0xac, 0x74, 0x9d, 0xbc, 0x9a, 0x9e, 0xa4, 0xdb, 0xb9,
+0xdb, 0xd7, 0x34, 0xfb, 0xa7, 0x1f, 0xd9, 0x40, 0xc2, 0x5a, 0xac, 0x69, 0x1c, 0x6b, 0x9a, 0x5e,
+0xb1, 0x45, 0xdf, 0x23, 0x8e, 0xfd, 0x5f, 0xd7, 0xaf, 0xb6, 0xc0, 0x9f, 0xf0, 0x94, 0xea, 0x96,
+0xea, 0xa4, 0x1d, 0xbd, 0x37, 0xdd, 0xb2, 0x01, 0xe7, 0x26, 0xbf, 0x48, 0xd4, 0x62, 0xd6, 0x70,
+0xda, 0x6f, 0x14, 0x5f, 0x41, 0x41, 0xc8, 0x1a, 0x5a, 0xf1, 0x15, 0xcb, 0xe7, 0xac, 0x20, 0x9a,
+0xec, 0x93, 0xa2, 0x99, 0xf0, 0xa9, 0x8f, 0xc3, 0xfc, 0xe3, 0x78, 0x08, 0x85, 0x2d, 0xc3, 0x4e,
+0x9a, 0x67, 0x12, 0x73, 0x2a, 0x6e, 0x1e, 0x59, 0x89, 0x37, 0xf0, 0x0e, 0x04, 0xe6, 0x7b, 0xc2,
+0xb2, 0xa8, 0xd6, 0x9a, 0x92, 0x98, 0x0e, 0xa1, 0xe9, 0xb2, 0xe1, 0xcc, 0xf4, 0xec, 0x80, 0x10,
+0xc3, 0x33, 0x9d, 0x52, 0xa4, 0x67, 0x76, 0x6e, 0x1c, 0x65, 0xf1, 0x4c, 0x8b, 0x2a, 0x1a, 0x04,
+0x55, 0xdf, 0x4b, 0xc1, 0xf5, 0xac, 0x38, 0xa3, 0xa4, 0xa3, 0x3f, 0xad, 0x1f, 0xbf, 0x19, 0xd8,
+0x5a, 0xf6, 0xfa, 0x16, 0x59, 0x36, 0xe5, 0x4f, 0x56, 0x5f, 0x64, 0x61, 0x52, 0x55, 0x83, 0x3d,
+0x41, 0x1e, 0xf8, 0xfc, 0x5b, 0xde, 0x61, 0xc6, 0xc1, 0xb6, 0x5b, 0xb0, 0x79, 0xb2, 0x97, 0xbc,
+0xc1, 0xcd, 0xca, 0xe4, 0x98, 0xff, 0x38, 0x1b, 0x5d, 0x34, 0x6d, 0x47, 0x67, 0x51, 0x3b, 0x50,
+0x4d, 0x44, 0x7b, 0x2f, 0xa8, 0x15, 0xc4, 0xfa, 0x93, 0xe2, 0x0b, 0xd0, 0xaf, 0xc4, 0xe3, 0xc0,
+0x7b, 0xc4, 0x8b, 0xce, 0xd1, 0xdd, 0xbe, 0xf0, 0xdc, 0x04, 0x58, 0x18, 0x45, 0x29, 0xb9, 0x35,
+0x09, 0x3c, 0x23, 0x3b, 0xa5, 0x32, 0x03, 0x24, 0x48, 0x11, 0x6a, 0xfd, 0x6e, 0xeb, 0x9b, 0xdd,
+0x99, 0xd5, 0xc9, 0xd3, 0xcd, 0xd7, 0x55, 0xe0, 0xce, 0xeb, 0x2a, 0xf8, 0x6a, 0x04, 0x5e, 0x0f,
+0xc6, 0x18, 0x0d, 0x20, 0x95, 0x24, 0x61, 0x25, 0xcd, 0x21, 0xca, 0x19, 0x96, 0x0e, 0x5a, 0x02,
+0x3a, 0xf7, 0x54, 0xef, 0x7e, 0xeb, 0xbe, 0xeb, 0xf0, 0xee, 0x64, 0xf3, 0x60, 0xf7, 0x6e, 0xfa,
+0x80, 0xfc, 0xa0, 0xfe, 0xd6, 0x01, 0x64, 0x06, 0xe0, 0x0b, 0xc4, 0x10, 0x50, 0x13, 0xce, 0x12,
+0xa4, 0x0f, 0x00, 0x0b, 0xee, 0x06, 0x46, 0x04, 0x72, 0x03, 0x8c, 0x03, 0xf2, 0x02, 0x74, 0x00,
+0xba, 0xfb, 0x52, 0xf5, 0x14, 0xef, 0xec, 0xea, 0x7c, 0xea, 0x9a, 0xee, 0x2c, 0xf6, 0x64, 0xff,
+0x34, 0x08, 0x10, 0x0f, 0xe0, 0x13, 0x28, 0x17, 0x6a, 0x19, 0x10, 0x1b, 0x3c, 0x1b, 0xc2, 0x18,
+0x88, 0x12, 0x52, 0x08, 0xe0, 0xfa, 0x88, 0xec, 0x8b, 0xdf, 0xbb, 0xd6, 0x21, 0xd4, 0x31, 0xd8,
+0x3f, 0xe2, 0x48, 0xf0, 0xe2, 0xff, 0x2a, 0x0f, 0xf1, 0x1c, 0x0d, 0x28, 0xfd, 0x2f, 0x99, 0x33,
+0xc3, 0x31, 0xf5, 0x29, 0x51, 0x1c, 0xca, 0x09, 0xdc, 0xf4, 0xdd, 0xdf, 0x03, 0xce, 0x37, 0xc2,
+0x6b, 0xbe, 0xb5, 0xc3, 0x77, 0xd1, 0xba, 0xe5, 0x90, 0xfd, 0x14, 0x16, 0xef, 0x2b, 0x01, 0x3d,
+0x19, 0x47, 0x13, 0x49, 0x9f, 0x42, 0x5d, 0x34, 0xc5, 0x1f, 0x0a, 0x07, 0x90, 0xec, 0x33, 0xd3,
+0x11, 0xbe, 0x47, 0xb0, 0x6f, 0xac, 0xed, 0xb3, 0x8f, 0xc6, 0xe1, 0xe1, 0x26, 0x02, 0x19, 0x22,
+0x6d, 0x3d, 0x69, 0x50, 0x50, 0x59, 0x82, 0x57, 0xd5, 0x4b, 0x37, 0x38, 0xc5, 0x1e, 0xe8, 0x01,
+0xad, 0xe3, 0x27, 0xc7, 0x91, 0xaf, 0xdc, 0xa0, 0xfe, 0x9d, 0x04, 0xa9, 0x91, 0xc1, 0x4c, 0xe4,
+0x6a, 0x0b, 0x51, 0x30, 0x8b, 0x4d, 0xc2, 0x5f, 0xd0, 0x65, 0xf6, 0x5f, 0x35, 0x50, 0xb3, 0x38,
+0xe8, 0x1b, 0x8c, 0xfb, 0x53, 0xda, 0x2d, 0xbb, 0x8c, 0xa2, 0x8e, 0x94, 0xc8, 0x94, 0x1e, 0xa5,
+0x09, 0xc4, 0xaa, 0xec, 0x86, 0x17, 0xa7, 0x3d, 0x92, 0x59, 0x1e, 0x69, 0xb0, 0x6b, 0x7e, 0x62,
+0xad, 0x4f, 0x83, 0x35, 0xe4, 0x15, 0x06, 0xf3, 0xa3, 0xcf, 0xc3, 0xaf, 0x5e, 0x98, 0xc0, 0x8d,
+0x1a, 0x93, 0x08, 0xa9, 0x97, 0xcc, 0x64, 0xf7, 0x2d, 0x22, 0xe9, 0x45, 0xf4, 0x5e, 0x76, 0x6b,
+0x6a, 0x6b, 0xfe, 0x5f, 0x27, 0x4b, 0xef, 0x2e, 0x52, 0x0d, 0x04, 0xe9, 0x5b, 0xc5, 0x98, 0xa7,
+0x0c, 0x94, 0x9c, 0x8e, 0xf4, 0x98, 0x59, 0xb2, 0xe5, 0xd6, 0x58, 0x00, 0xf3, 0x27, 0x57, 0x48,
+0x78, 0x5e, 0x90, 0x68, 0xa2, 0x66, 0x70, 0x59, 0xe5, 0x42, 0x2b, 0x25, 0xba, 0x02, 0x11, 0xdf,
+0x85, 0xbe, 0x96, 0xa5, 0xea, 0x97, 0xb2, 0x97, 0x2c, 0xa5, 0x0d, 0xbf, 0x65, 0xe1, 0xf2, 0x06,
+0x59, 0x2a, 0xf7, 0x46, 0xce, 0x59, 0x54, 0x61, 0xdc, 0x5c, 0x97, 0x4d, 0x9b, 0x35, 0x82, 0x17,
+0xda, 0xf6, 0x75, 0xd7, 0x25, 0xbd, 0x3c, 0xab, 0xbc, 0xa3, 0xd4, 0xa6, 0xe7, 0xb4, 0x0f, 0xcc,
+0xc2, 0xe9, 0xfe, 0x09, 0x2d, 0x28, 0x4b, 0x40, 0x89, 0x4f, 0xf9, 0x53, 0x33, 0x4d, 0x1b, 0x3d,
+0x91, 0x25, 0x8e, 0x0a, 0x50, 0xef, 0x35, 0xd7, 0xd7, 0xc4, 0xc5, 0xb9, 0x09, 0xb6, 0x13, 0xba,
+0x99, 0xc5, 0xff, 0xd7, 0xce, 0xef, 0xba, 0x09, 0x39, 0x22, 0x8b, 0x35, 0xe5, 0x40, 0x93, 0x42,
+0xf5, 0x3a, 0x97, 0x2b, 0xb4, 0x17, 0x6a, 0x02, 0xc0, 0xee, 0xd1, 0xde, 0x75, 0xd3, 0xf9, 0xcc,
+0xfb, 0xca, 0x85, 0xcd, 0x25, 0xd5, 0xdf, 0xe1, 0x08, 0xf3, 0x58, 0x06, 0xac, 0x18, 0xa7, 0x26,
+0xf7, 0x2d, 0x9f, 0x2d, 0x45, 0x26, 0x7e, 0x1a, 0xa8, 0x0c, 0xaa, 0xff, 0xfc, 0xf4, 0x1c, 0xed,
+0xc0, 0xe7, 0x2e, 0xe4, 0x01, 0xe2, 0x7f, 0xe1, 0x04, 0xe4, 0xe8, 0xe9, 0x70, 0xf3, 0xfe, 0xfe,
+0x0c, 0x0a, 0x94, 0x12, 0xac, 0x16, 0x24, 0x16, 0x1a, 0x12, 0x70, 0x0c, 0xe8, 0x06, 0xde, 0x02,
+0x54, 0x00, 0xbc, 0xfe, 0x3a, 0xfd, 0xda, 0xfa, 0x48, 0xf7, 0x32, 0xf3, 0xba, 0xef, 0x2e, 0xee,
+0x32, 0xef, 0x6e, 0xf2, 0xce, 0xf6, 0x1e, 0xfb, 0x94, 0xfe, 0xce, 0x00, 0xb4, 0x02, 0xe6, 0x04,
+0xe8, 0x07, 0xd4, 0x0b, 0xbc, 0x0f, 0xaa, 0x12, 0x9a, 0x13, 0x5c, 0x11, 0xa6, 0x0b, 0xe6, 0x02,
+0x74, 0xf8, 0x26, 0xee, 0x0c, 0xe6, 0x11, 0xe1, 0xd1, 0xdf, 0x09, 0xe2, 0xf8, 0xe6, 0x38, 0xee,
+0xfe, 0xf6, 0x06, 0x01, 0x84, 0x0b, 0x26, 0x16, 0x91, 0x1f, 0x9d, 0x26, 0x95, 0x29, 0xe7, 0x26,
+0x05, 0x1e, 0x46, 0x0f, 0x8c, 0xfc, 0xd4, 0xe8, 0xbb, 0xd7, 0x13, 0xcc, 0x99, 0xc7, 0x45, 0xca,
+0xdb, 0xd2, 0xf1, 0xdf, 0xde, 0xef, 0x30, 0x01, 0xd6, 0x12, 0x67, 0x23, 0xaf, 0x31, 0x97, 0x3b,
+0x21, 0x3f, 0x03, 0x3a, 0xb5, 0x2b, 0x14, 0x15, 0x3e, 0xf9, 0xf7, 0xdc, 0x41, 0xc5, 0x53, 0xb6,
+0xd3, 0xb1, 0x77, 0xb7, 0xd5, 0xc4, 0xd5, 0xd7, 0xf0, 0xed, 0x6c, 0x05, 0x99, 0x1c, 0x05, 0x32,
+0x7b, 0x43, 0x9d, 0x4e, 0x85, 0x50, 0x03, 0x47, 0x1b, 0x32, 0xb8, 0x13, 0x86, 0xf0, 0x6f, 0xce,
+0x99, 0xb3, 0xf2, 0xa3, 0x2a, 0xa1, 0xc0, 0xa9, 0x39, 0xbb, 0x19, 0xd3, 0xbe, 0xee, 0x02, 0x0c,
+0xa3, 0x28, 0x07, 0x42, 0x4c, 0x55, 0x4c, 0x5f, 0x0e, 0x5d, 0x51, 0x4d, 0x75, 0x31, 0xe4, 0x0c,
+0x4a, 0xe5, 0x43, 0xc1, 0x3e, 0xa6, 0x2c, 0x98, 0x9a, 0x97, 0x22, 0xa3, 0x43, 0xb8, 0x73, 0xd4,
+0x7e, 0xf4, 0xbe, 0x15, 0x49, 0x35, 0xdf, 0x4f, 0x62, 0x62, 0xfa, 0x68, 0xa4, 0x61, 0x79, 0x4c,
+0x19, 0x2c, 0x90, 0x04, 0xc3, 0xdb, 0x6b, 0xb7, 0x18, 0x9d, 0x40, 0x90, 0x30, 0x91, 0x14, 0x9f,
+0x7f, 0xb7, 0xb5, 0xd7, 0x06, 0xfc, 0xf1, 0x20, 0x39, 0x42, 0x4a, 0x5c, 0x74, 0x6b, 0xdc, 0x6c,
+0x34, 0x60, 0xcf, 0x46, 0x33, 0x24, 0x68, 0xfc, 0x7b, 0xd4, 0xe1, 0xb1, 0x80, 0x99, 0x6c, 0x8e,
+0x9a, 0x91, 0x2a, 0xa2, 0xe9, 0xbd, 0x91, 0xe1, 0x8a, 0x08, 0xd3, 0x2d, 0x25, 0x4d, 0x6e, 0x62,
+0x80, 0x6b, 0x5a, 0x67, 0xbc, 0x56, 0x4b, 0x3c, 0xa2, 0x1a, 0x36, 0xf5, 0x29, 0xd0, 0x5b, 0xb0,
+0x3c, 0x9a, 0x76, 0x91, 0xf4, 0x96, 0x36, 0xaa, 0xf1, 0xc8, 0x24, 0xee, 0x8a, 0x14, 0xed, 0x36,
+0xeb, 0x50, 0x4e, 0x60, 0x22, 0x64, 0x7a, 0x5c, 0x45, 0x4b, 0x75, 0x32, 0xb8, 0x13, 0xbc, 0xf1,
+0x07, 0xd0, 0xff, 0xb2, 0xb6, 0x9f, 0x66, 0x99, 0x6c, 0xa1, 0x13, 0xb7, 0x79, 0xd6, 0x48, 0xfa,
+0xc9, 0x1c, 0x0d, 0x39, 0x8d, 0x4c, 0x3e, 0x56, 0x52, 0x56, 0xb9, 0x4d, 0x11, 0x3e, 0x0f, 0x28,
+0x46, 0x0d, 0x60, 0xef, 0xb9, 0xd1, 0x09, 0xb9, 0xc4, 0xa9, 0x24, 0xa7, 0xbb, 0xb1, 0xd7, 0xc7,
+0xe8, 0xe4, 0xa4, 0x03, 0xd9, 0x1e, 0xa9, 0x33, 0xa9, 0x40, 0xff, 0x45, 0x59, 0x44, 0x9f, 0x3c,
+0x8d, 0x2f, 0xe3, 0x1d, 0xf0, 0x07, 0x90, 0xef, 0xf1, 0xd7, 0x1d, 0xc5, 0xe9, 0xba, 0x51, 0xbb,
+0x5b, 0xc6, 0x4b, 0xd9, 0x62, 0xf0, 0xc8, 0x06, 0xd2, 0x19, 0x57, 0x27, 0x4d, 0x2f, 0x0d, 0x32,
+0x2d, 0x30, 0x65, 0x2a, 0x1f, 0x21, 0x88, 0x14, 0xe8, 0x04, 0xe8, 0xf3, 0x75, 0xe3, 0xd5, 0xd6,
+0x71, 0xd0, 0x81, 0xd1, 0x7f, 0xd9, 0xa0, 0xe6, 0x9a, 0xf5, 0xde, 0x03, 0x52, 0x0f, 0x20, 0x17,
+0x6c, 0x1b, 0xb3, 0x1c, 0x82, 0x1b, 0x60, 0x18, 0xc6, 0x13, 0x9e, 0x0d, 0x1e, 0x06, 0x72, 0xfd,
+0xca, 0xf4, 0x88, 0xed, 0xec, 0xe8, 0xe2, 0xe7, 0x86, 0xea, 0xdc, 0xef, 0x6a, 0xf6, 0xa0, 0xfc,
+0x58, 0x01, 0x30, 0x04, 0x7a, 0x05, 0xb8, 0x05, 0xd2, 0x05, 0xcc, 0x06, 0xd2, 0x08, 0x64, 0x0b,
+0x78, 0x0d, 0xda, 0x0d, 0xa2, 0x0b, 0x1e, 0x07, 0x6e, 0x01, 0xcc, 0xfb, 0x64, 0xf7, 0x6a, 0xf4,
+0x94, 0xf2, 0x4e, 0xf1, 0xf2, 0xef, 0x8a, 0xee, 0xd6, 0xed, 0xca, 0xee, 0x6c, 0xf2, 0xb6, 0xf9,
+0x36, 0x04, 0x66, 0x10, 0x88, 0x1b, 0x99, 0x22, 0xe3, 0x23, 0x73, 0x1f, 0x78, 0x16, 0x20, 0x0b,
+0x92, 0xff, 0xe6, 0xf4, 0x84, 0xeb, 0x61, 0xe3, 0xaf, 0xdc, 0x13, 0xd8, 0xc3, 0xd6, 0x25, 0xda,
+0x7d, 0xe3, 0xf2, 0xf2, 0xac, 0x06, 0x80, 0x1b, 0x47, 0x2d, 0x8f, 0x38, 0x11, 0x3b, 0xeb, 0x34,
+0xfd, 0x27, 0x04, 0x17, 0x96, 0x04, 0x68, 0xf2, 0xc1, 0xe1, 0x53, 0xd3, 0x3f, 0xc8, 0xd9, 0xc1,
+0x09, 0xc2, 0x2f, 0xca, 0xe5, 0xda, 0x9e, 0xf2, 0x36, 0x0e, 0x43, 0x29, 0x37, 0x3f, 0x17, 0x4c,
+0x3b, 0x4e, 0xe7, 0x45, 0xdf, 0x34, 0x7b, 0x1e, 0x7e, 0x05, 0x50, 0xec, 0xbf, 0xd4, 0x17, 0xc1,
+0x41, 0xb3, 0xcd, 0xad, 0x2d, 0xb2, 0x07, 0xc1, 0x65, 0xd9, 0x34, 0xf8, 0x1e, 0x19, 0x7d, 0x37,
+0xf1, 0x4e, 0x0e, 0x5c, 0x26, 0x5d, 0x1f, 0x52, 0x31, 0x3d, 0x7b, 0x21, 0x40, 0x02, 0x59, 0xe2,
+0x67, 0xc5, 0xa7, 0xae, 0x8a, 0xa1, 0xb4, 0x9f, 0xcc, 0xa9, 0x07, 0xbf, 0xeb, 0xdc, 0xb0, 0xff,
+0xdf, 0x22, 0x81, 0x42, 0x5c, 0x5a, 0x6c, 0x67, 0x36, 0x67, 0xb6, 0x59, 0xc5, 0x40, 0xb9, 0x1f,
+0x72, 0xfa, 0x6b, 0xd5, 0xa1, 0xb5, 0x8a, 0x9f, 0xc4, 0x95, 0x06, 0x99, 0x88, 0xa8, 0x39, 0xc2,
+0x1d, 0xe3, 0x7e, 0x07, 0x6d, 0x2b, 0x01, 0x4b, 0xd6, 0x62, 0x1a, 0x6f, 0x2c, 0x6d, 0x52, 0x5c,
+0xa9, 0x3e, 0x4a, 0x18, 0x78, 0xee, 0x41, 0xc7, 0x44, 0xa8, 0xc8, 0x95, 0x1c, 0x91, 0x84, 0x99,
+0xe9, 0xac, 0x0f, 0xc9, 0x02, 0xeb, 0x38, 0x0f, 0x65, 0x32, 0x2d, 0x51, 0xa2, 0x67, 0xbe, 0x71,
+0x92, 0x6c, 0xbc, 0x57, 0xfd, 0x35, 0x84, 0x0c, 0xd9, 0xe1, 0x97, 0xbc, 0x06, 0xa2, 0xc8, 0x94,
+0xe8, 0x94, 0x90, 0xa0, 0xad, 0xb5, 0xf5, 0xd1, 0xc6, 0xf2, 0x8e, 0x15, 0x27, 0x37, 0xfb, 0x53,
+0xea, 0x67, 0xde, 0x6e, 0xf4, 0x65, 0xb3, 0x4d, 0xff, 0x29, 0xc4, 0x00, 0xf1, 0xd8, 0x7d, 0xb8,
+0x56, 0xa3, 0xd6, 0x9a, 0x42, 0x9e, 0x8b, 0xab, 0xb9, 0xc0, 0xeb, 0xdb, 0xea, 0xfa, 0x24, 0x1b,
+0xa1, 0x39, 0xdb, 0x52, 0x78, 0x62, 0xca, 0x64, 0x7c, 0x58, 0x39, 0x3f, 0x1d, 0x1d, 0x26, 0xf8,
+0x3d, 0xd6, 0x19, 0xbc, 0x7b, 0xac, 0xd4, 0xa7, 0xff, 0xac, 0x53, 0xba, 0x4d, 0xce, 0xf8, 0xe6,
+0x70, 0x02, 0x6d, 0x1e, 0x05, 0x38, 0x77, 0x4b, 0xb4, 0x55, 0x9b, 0x54, 0xa3, 0x47, 0xab, 0x30,
+0xa4, 0x13, 0x48, 0xf5, 0x15, 0xda, 0xc7, 0xc5, 0x13, 0xba, 0x79, 0xb7, 0x25, 0xbd, 0xb9, 0xc9,
+0x81, 0xdb, 0xf4, 0xf0, 0xba, 0x07, 0x87, 0x1d, 0x05, 0x30, 0xe3, 0x3c, 0x63, 0x42, 0x8f, 0x3f,
+0xbf, 0x34, 0x21, 0x23, 0x86, 0x0d, 0x3a, 0xf7, 0x95, 0xe3, 0xf3, 0xd4, 0x1d, 0xcd, 0x25, 0xcc,
+0x95, 0xd1, 0x21, 0xdc, 0x0e, 0xea, 0x68, 0xf9, 0x92, 0x08, 0x4e, 0x16, 0x61, 0x21, 0x05, 0x29,
+0x8f, 0x2c, 0x99, 0x2b, 0x81, 0x25, 0xaa, 0x1a, 0x56, 0x0c, 0x10, 0xfd, 0x76, 0xef, 0xce, 0xe5,
+0x2f, 0xe1, 0xb7, 0xe1, 0x80, 0xe6, 0xb2, 0xed, 0x98, 0xf5, 0xe6, 0xfc, 0xe2, 0x02, 0x82, 0x07,
+0x92, 0x0b, 0x96, 0x0f, 0x8e, 0x13, 0x78, 0x16, 0x16, 0x17, 0x86, 0x14, 0xe6, 0x0e, 0xac, 0x07,
+0xac, 0x00, 0x90, 0xfb, 0x2e, 0xf9, 0x2c, 0xf9, 0x2a, 0xfa, 0xfa, 0xfa, 0x82, 0xfa, 0x5e, 0xf8,
+0x70, 0xf5, 0x64, 0xf3, 0xc8, 0xf3, 0x5c, 0xf7, 0x00, 0xfe, 0x0a, 0x06, 0x62, 0x0d, 0x64, 0x12,
+0x9a, 0x14, 0x7c, 0x14, 0x4a, 0x13, 0xea, 0x11, 0x72, 0x10, 0x40, 0x0e, 0x28, 0x0a, 0x42, 0x03,
+0xc8, 0xf9, 0x44, 0xef, 0x78, 0xe5, 0xa7, 0xde, 0xe7, 0xdc, 0x19, 0xe1, 0x8a, 0xea, 0x78, 0xf7,
+0x78, 0x05, 0x50, 0x12, 0xb9, 0x1c, 0x1f, 0x24, 0x67, 0x28, 0x79, 0x29, 0x17, 0x27, 0x53, 0x20,
+0xd0, 0x14, 0x50, 0x05, 0x92, 0xf3, 0xeb, 0xe1, 0xff, 0xd2, 0x63, 0xc9, 0xf9, 0xc6, 0xd1, 0xcc,
+0x41, 0xda, 0x6a, 0xed, 0x3e, 0x03, 0xd2, 0x18, 0x3d, 0x2b, 0xaf, 0x38, 0xe1, 0x3f, 0x27, 0x40,
+0x2f, 0x39, 0x71, 0x2b, 0x18, 0x18, 0x0a, 0x01, 0x16, 0xe9, 0xff, 0xd2, 0x7d, 0xc1, 0x99, 0xb6,
+0xab, 0xb4, 0xc1, 0xbc, 0xb3, 0xce, 0x2c, 0xe8, 0xbe, 0x05, 0xe9, 0x22, 0x9d, 0x3b, 0x9f, 0x4c,
+0xe1, 0x53, 0xf7, 0x50, 0x9d, 0x44, 0xad, 0x30, 0x46, 0x17, 0x62, 0xfb, 0x95, 0xdf, 0x91, 0xc6,
+0xe1, 0xb2, 0x64, 0xa7, 0x4a, 0xa6, 0x3f, 0xb1, 0x2f, 0xc8, 0x82, 0xe8, 0x40, 0x0d, 0x8f, 0x30,
+0x01, 0x4d, 0x98, 0x5e, 0xa2, 0x63, 0x3c, 0x5c, 0x7f, 0x4a, 0x5b, 0x31, 0xf4, 0x13, 0x7e, 0xf4,
+0xa3, 0xd5, 0x51, 0xba, 0xa2, 0xa5, 0x86, 0x9a, 0xe0, 0x9b, 0x73, 0xab, 0x6f, 0xc8, 0x3e, 0xef,
+0x62, 0x19, 0xb1, 0x3f, 0x36, 0x5c, 0x7c, 0x6b, 0x5e, 0x6c, 0x5c, 0x60, 0xa3, 0x4a, 0x61, 0x2e,
+0x4a, 0x0e, 0xb2, 0xec, 0x31, 0xcc, 0xe1, 0xaf, 0xb0, 0x9b, 0x10, 0x93, 0x8e, 0x98, 0x49, 0xad,
+0xb1, 0xcf, 0x80, 0xfa, 0x31, 0x26, 0x77, 0x4b, 0xfc, 0x64, 0x5c, 0x70, 0xb8, 0x6d, 0xe2, 0x5e,
+0xcf, 0x46, 0xcb, 0x28, 0x46, 0x07, 0x5e, 0xe4, 0x21, 0xc3, 0xba, 0xa7, 0x08, 0x96, 0x64, 0x91,
+0xde, 0x9b, 0x57, 0xb5, 0x9d, 0xda, 0xaa, 0x05, 0x1f, 0x2f, 0x8d, 0x50, 0x36, 0x66, 0x62, 0x6e,
+0x54, 0x69, 0xdc, 0x58, 0xd3, 0x3f, 0xd1, 0x20, 0x70, 0xfe, 0xbd, 0xdb, 0x3b, 0xbc, 0x1a, 0xa4,
+0x14, 0x97, 0xaa, 0x97, 0x58, 0xa6, 0xcb, 0xc1, 0x34, 0xe6, 0xc8, 0x0d, 0x8f, 0x32, 0x89, 0x4f,
+0x7c, 0x61, 0xe2, 0x66, 0x1e, 0x60, 0x9f, 0x4e, 0xe5, 0x34, 0xde, 0x15, 0x94, 0xf4, 0x73, 0xd4,
+0x6f, 0xb9, 0x2e, 0xa7, 0xfe, 0x9f, 0xde, 0xa4, 0x65, 0xb5, 0x77, 0xcf, 0xa6, 0xef, 0x92, 0x11,
+0xa1, 0x30, 0xdd, 0x48, 0x62, 0x57, 0xa8, 0x5a, 0x85, 0x52, 0xc7, 0x40, 0xd5, 0x27, 0xc8, 0x0a,
+0x1a, 0xed, 0xa7, 0xd2, 0x73, 0xbe, 0x93, 0xb2, 0x1b, 0xb0, 0xb1, 0xb6, 0x71, 0xc5, 0xc3, 0xda,
+0x94, 0xf4, 0xda, 0x0f, 0x63, 0x29, 0x9b, 0x3d, 0x3b, 0x49, 0xb1, 0x4a, 0x31, 0x42, 0x47, 0x31,
+0x94, 0x1a, 0xd2, 0x01, 0x98, 0xea, 0x9f, 0xd7, 0xb9, 0xca, 0x61, 0xc4, 0x3f, 0xc4, 0xc5, 0xc9,
+0x75, 0xd4, 0xb9, 0xe3, 0x9a, 0xf6, 0x8c, 0x0b, 0x6b, 0x1f, 0xf9, 0x2e, 0x53, 0x37, 0x25, 0x37,
+0xbb, 0x2e, 0x2f, 0x20, 0x86, 0x0e, 0xd6, 0xfc, 0x0e, 0xee, 0x7d, 0xe3, 0x35, 0xdd, 0x71, 0xda,
+0xa1, 0xda, 0x45, 0xdd, 0x93, 0xe2, 0x12, 0xeb, 0xb0, 0xf6, 0x42, 0x04, 0xb0, 0x11, 0x1a, 0x1c,
+0x3b, 0x21, 0x3f, 0x20, 0x34, 0x1a, 0xd4, 0x10, 0xe8, 0x06, 0x98, 0xfe, 0xec, 0xf8, 0x92, 0xf5,
+0xb6, 0xf3, 0x5e, 0xf2, 0xa0, 0xf0, 0xee, 0xee, 0xf2, 0xed, 0xea, 0xee, 0x5e, 0xf2, 0x36, 0xf8,
+0xfa, 0xfe, 0xfe, 0x04, 0xf4, 0x08, 0x44, 0x0a, 0x84, 0x09, 0x26, 0x08, 0x7c, 0x07, 0xfc, 0x07,
+0x46, 0x09, 0x7a, 0x0a, 0x7a, 0x0a, 0x7c, 0x08, 0x14, 0x04, 0x6c, 0xfd, 0xc6, 0xf5, 0x9c, 0xee,
+0x78, 0xe9, 0x1a, 0xe7, 0xf2, 0xe7, 0x50, 0xeb, 0x64, 0xf0, 0x98, 0xf6, 0x78, 0xfd, 0xe6, 0x04,
+0xa8, 0x0c, 0x7e, 0x14, 0x0c, 0x1b, 0x73, 0x1f, 0xa1, 0x20, 0xbd, 0x1d, 0xfc, 0x15, 0xb8, 0x09,
+0x64, 0xfa, 0x2e, 0xea, 0x29, 0xdc, 0xb9, 0xd2, 0x8f, 0xcf, 0xaf, 0xd2, 0x69, 0xdb, 0xda, 0xe7,
+0x84, 0xf6, 0xd6, 0x05, 0xcc, 0x14, 0x2b, 0x22, 0x11, 0x2d, 0xf9, 0x33, 0x8b, 0x35, 0x79, 0x30,
+0x19, 0x24, 0xb8, 0x10, 0x80, 0xf8, 0x81, 0xdf, 0xf7, 0xc9, 0x1f, 0xbc, 0x0d, 0xb8, 0x1b, 0xbe,
+0xed, 0xcb, 0x3d, 0xdf, 0xee, 0xf4, 0xe4, 0x0a, 0x43, 0x1f, 0x09, 0x31, 0xc5, 0x3e, 0xbd, 0x46,
+0x2b, 0x47, 0x49, 0x3e, 0xc9, 0x2b, 0xc0, 0x10, 0xc8, 0xf0, 0xed, 0xd0, 0x6d, 0xb7, 0x9c, 0xa8,
+0x6e, 0xa6, 0x0b, 0xb0, 0xff, 0xc2, 0xa7, 0xdb, 0xc0, 0xf6, 0xc6, 0x11, 0xb7, 0x2a, 0xf7, 0x3f,
+0xb7, 0x4f, 0xaa, 0x57, 0x42, 0x55, 0x51, 0x47, 0xfb, 0x2d, 0xc4, 0x0b, 0x50, 0xe5, 0x57, 0xc1,
+0x1e, 0xa6, 0x1e, 0x98, 0x9c, 0x98, 0x00, 0xa6, 0x59, 0xbd, 0xd9, 0xda, 0xee, 0xfa, 0x3a, 0x1a,
+0xd3, 0x36, 0x4d, 0x4e, 0x1e, 0x5e, 0x2e, 0x63, 0xac, 0x5b, 0x3b, 0x47, 0xa9, 0x27, 0xec, 0x00,
+0x65, 0xd8, 0xad, 0xb4, 0x70, 0x9b, 0x4e, 0x90, 0x82, 0x93, 0xb6, 0xa3, 0xe1, 0xbd, 0x87, 0xde,
+0xc8, 0x01, 0x65, 0x24, 0x1d, 0x43, 0xf2, 0x5a, 0x9e, 0x68, 0x54, 0x69, 0x02, 0x5c, 0x3b, 0x42,
+0x1f, 0x1f, 0xe8, 0xf6, 0xff, 0xce, 0x0b, 0xad, 0x0a, 0x96, 0xc2, 0x8c, 0x08, 0x92, 0x56, 0xa4,
+0x2f, 0xc1, 0xdc, 0xe4, 0x18, 0x0b, 0x8b, 0x2f, 0x2f, 0x4e, 0x7a, 0x63, 0x40, 0x6c, 0x48, 0x67,
+0x32, 0x55, 0xa3, 0x38, 0x08, 0x15, 0x72, 0xee, 0x4d, 0xc9, 0x42, 0xaa, 0xdc, 0x95, 0xd6, 0x8e,
+0x30, 0x96, 0xdc, 0xaa, 0x4f, 0xca, 0x0c, 0xf0, 0x10, 0x17, 0x39, 0x3a, 0x2c, 0x55, 0xb8, 0x64,
+0x72, 0x67, 0x96, 0x5d, 0x2b, 0x49, 0xf9, 0x2c, 0xf0, 0x0b, 0xfa, 0xe8, 0xbb, 0xc7, 0x4f, 0xac,
+0xac, 0x9a, 0xf0, 0x95, 0x64, 0x9f, 0x19, 0xb6, 0xab, 0xd6, 0x18, 0xfc, 0x81, 0x20, 0xbd, 0x3e,
+0x4f, 0x53, 0x7c, 0x5c, 0x7e, 0x5a, 0xbf, 0x4e, 0x91, 0x3b, 0xcb, 0x22, 0x5e, 0x06, 0x54, 0xe8,
+0x83, 0xcb, 0xbf, 0xb3, 0x04, 0xa5, 0xae, 0xa2, 0xa3, 0xad, 0xd3, 0xc4, 0x0e, 0xe4, 0xe2, 0x05,
+0x77, 0x24, 0xd5, 0x3b, 0x93, 0x49, 0xab, 0x4d, 0x5b, 0x49, 0x63, 0x3e, 0x21, 0x2e, 0xf2, 0x19,
+0xbc, 0x02, 0xfe, 0xe9, 0x37, 0xd2, 0x05, 0xbf, 0x13, 0xb4, 0x25, 0xb4, 0xfb, 0xbf, 0x37, 0xd5,
+0xe0, 0xef, 0xbe, 0x0a, 0x9d, 0x21, 0x5b, 0x31, 0x9b, 0x39, 0xd5, 0x3a, 0x67, 0x36, 0x99, 0x2d,
+0x69, 0x21, 0x48, 0x12, 0xe4, 0x00, 0x82, 0xee, 0x01, 0xdd, 0x2f, 0xcf, 0x21, 0xc8, 0x91, 0xc9,
+0x5b, 0xd3, 0x77, 0xe3, 0x66, 0xf6, 0xa2, 0x08, 0x52, 0x17, 0x15, 0x21, 0x87, 0x25, 0xc7, 0x25,
+0xa1, 0x22, 0x0d, 0x1d, 0x90, 0x15, 0xa2, 0x0c, 0x76, 0x02, 0x9a, 0xf7, 0x24, 0xed, 0xa6, 0xe4,
+0xe1, 0xdf, 0xe1, 0xdf, 0xa0, 0xe4, 0x0e, 0xed, 0x16, 0xf7, 0xba, 0x00, 0x5c, 0x08, 0x2a, 0x0d,
+0x56, 0x0f, 0x86, 0x0f, 0x90, 0x0e, 0xfe, 0x0c, 0x9e, 0x0b, 0x4c, 0x0a, 0xc6, 0x08, 0x4c, 0x06,
+0x7e, 0x02, 0x90, 0xfd, 0x88, 0xf8, 0x60, 0xf4, 0xfc, 0xf1, 0xb2, 0xf1, 0x0a, 0xf3, 0xec, 0xf4,
+0xa4, 0xf6, 0xc0, 0xf7, 0x64, 0xf8, 0x3e, 0xf9, 0x42, 0xfb, 0x44, 0xff, 0x66, 0x05, 0x38, 0x0d,
+0xaa, 0x14, 0xa0, 0x19, 0x4a, 0x1a, 0x30, 0x16, 0x22, 0x0e, 0x2c, 0x04, 0x40, 0xfa, 0xbe, 0xf1,
+0x66, 0xeb, 0xf0, 0xe6, 0xb3, 0xe3, 0xe7, 0xe1, 0xf5, 0xe1, 0xd4, 0xe4, 0xa6, 0xeb, 0x16, 0xf7,
+0x46, 0x06, 0x16, 0x17, 0x55, 0x26, 0x33, 0x30, 0x9b, 0x32, 0xd9, 0x2c, 0x8d, 0x20, 0x38, 0x10,
+0xec, 0xfe, 0xc2, 0xee, 0x13, 0xe1, 0x49, 0xd6, 0xa5, 0xce, 0xaf, 0xca, 0xb7, 0xcb, 0xeb, 0xd2,
+0x2b, 0xe1, 0x84, 0xf5, 0xd6, 0x0d, 0x3b, 0x26, 0x47, 0x3a, 0x39, 0x46, 0xa5, 0x47, 0xfb, 0x3e,
+0xb3, 0x2d, 0x64, 0x17, 0x2c, 0xff, 0x32, 0xe8, 0xf1, 0xd3, 0x2b, 0xc4, 0xc9, 0xb9, 0x1b, 0xb6,
+0xbf, 0xba, 0x6f, 0xc8, 0x79, 0xde, 0xb8, 0xfa, 0x6a, 0x19, 0xf3, 0x35, 0x01, 0x4c, 0xee, 0x57,
+0xce, 0x57, 0xcd, 0x4b, 0x63, 0x36, 0xae, 0x1a, 0xa0, 0xfc, 0x55, 0xdf, 0xc9, 0xc5, 0x2f, 0xb2,
+0xf4, 0xa6, 0xdc, 0xa5, 0xc3, 0xaf, 0x81, 0xc4, 0x8d, 0xe1, 0x82, 0x03, 0xc1, 0x25, 0xf1, 0x43,
+0xf4, 0x59, 0xdc, 0x64, 0xa4, 0x62, 0xa5, 0x53, 0x45, 0x3a, 0xd0, 0x19, 0x22, 0xf6, 0x9b, 0xd3,
+0x4b, 0xb6, 0xa6, 0xa1, 0x96, 0x98, 0x5a, 0x9c, 0xb7, 0xac, 0x9b, 0xc7, 0x8c, 0xe9, 0xea, 0x0d,
+0xdf, 0x30, 0x8b, 0x4e, 0x86, 0x63, 0xd0, 0x6c, 0xb2, 0x68, 0xee, 0x56, 0x91, 0x39, 0x4a, 0x14,
+0xa8, 0xeb, 0x8d, 0xc5, 0x58, 0xa7, 0xfe, 0x94, 0xa4, 0x90, 0x50, 0x9a, 0xf3, 0xaf, 0x81, 0xce,
+0x0c, 0xf2, 0x92, 0x16, 0x89, 0x38, 0xf0, 0x54, 0xa8, 0x68, 0x64, 0x70, 0x02, 0x6a, 0x16, 0x55,
+0xbb, 0x33, 0x6e, 0x0a, 0x57, 0xdf, 0x1f, 0xb9, 0xd6, 0x9d, 0xa4, 0x90, 0xfc, 0x91, 0x58, 0xa0,
+0xf7, 0xb8, 0x43, 0xd8, 0xa4, 0xfa, 0x17, 0x1d, 0x97, 0x3c, 0xbe, 0x56, 0x4e, 0x68, 0xa8, 0x6d,
+0x4c, 0x64, 0x4f, 0x4c, 0x83, 0x28, 0x5a, 0xfe, 0xb9, 0xd4, 0x71, 0xb2, 0x8a, 0x9c, 0xe6, 0x94,
+0x90, 0x9a, 0x28, 0xab, 0xcb, 0xc3, 0x77, 0xe1, 0x50, 0x01, 0xd7, 0x20, 0xc1, 0x3d, 0x2a, 0x55,
+0xd0, 0x63, 0x04, 0x66, 0xe4, 0x59, 0x2b, 0x40, 0x71, 0x1c, 0xb2, 0xf4, 0x9f, 0xcf, 0x41, 0xb3,
+0xec, 0xa2, 0x8c, 0x9f, 0x76, 0xa7, 0x2d, 0xb8, 0x43, 0xcf, 0x50, 0xea, 0xf0, 0x06, 0xd3, 0x22,
+0xcb, 0x3b, 0xe5, 0x4e, 0x0c, 0x59, 0x98, 0x57, 0x97, 0x49, 0xbb, 0x30, 0xf6, 0x10, 0x6c, 0xef,
+0xb1, 0xd1, 0x17, 0xbc, 0xe3, 0xb0, 0x09, 0xb0, 0x3d, 0xb8, 0x57, 0xc7, 0x73, 0xdb, 0xa0, 0xf2,
+0xa6, 0x0a, 0x83, 0x21, 0xf9, 0x34, 0xcf, 0x42, 0x73, 0x48, 0xf5, 0x44, 0x07, 0x38, 0x8f, 0x23,
+0x7e, 0x0a, 0xec, 0xf0, 0x9d, 0xda, 0xc7, 0xca, 0x0f, 0xc3, 0x6b, 0xc3, 0xf5, 0xca, 0x07, 0xd8,
+0xa4, 0xe8, 0xb0, 0xfa, 0x38, 0x0c, 0x9a, 0x1b, 0xe3, 0x27, 0xe9, 0x2f, 0xcd, 0x32, 0xdd, 0x2f,
+0x53, 0x27, 0xa8, 0x19, 0xc2, 0x08, 0x04, 0xf7, 0x50, 0xe7, 0xfd, 0xdb, 0x8f, 0xd6, 0x45, 0xd7,
+0x2b, 0xdd, 0x08, 0xe7, 0xb6, 0xf2, 0x58, 0xfe, 0x7c, 0x08, 0x68, 0x10, 0x0a, 0x16, 0xc0, 0x19,
+0xb2, 0x1b, 0x94, 0x1b, 0xfc, 0x18, 0x5a, 0x13, 0x02, 0x0b, 0x72, 0x01, 0x64, 0xf8, 0xb2, 0xf1,
+0x6e, 0xee, 0xc6, 0xee, 0xc6, 0xf1, 0xe6, 0xf5, 0xb4, 0xf9, 0x0a, 0xfc, 0xe4, 0xfc, 0x0c, 0xfd,
+0xc0, 0xfd, 0x26, 0x00, 0xb8, 0x04, 0x9a, 0x0a, 0xee, 0x0f, 0x26, 0x13, 0x42, 0x13, 0xb6, 0x10,
+0xda, 0x0c, 0xec, 0x08, 0x18, 0x06, 0x22, 0x04, 0x2a, 0x02, 0xca, 0xfe, 0xa6, 0xf9, 0xde, 0xf2,
+0xf8, 0xeb, 0xda, 0xe6, 0x86, 0xe5, 0x28, 0xe9, 0xa6, 0xf1, 0x62, 0xfd, 0xcc, 0x09, 0x74, 0x14,
+0xfa, 0x1b, 0xff, 0x1f, 0x15, 0x21, 0x05, 0x20, 0xd7, 0x1c, 0x48, 0x17, 0x76, 0x0e, 0x82, 0x02,
+0x22, 0xf4, 0x8c, 0xe5, 0xd1, 0xd8, 0xc3, 0xd0, 0x37, 0xcf, 0x19, 0xd5, 0xf5, 0xe1, 0xa4, 0xf3,
+0x42, 0x07, 0xc2, 0x19, 0xf3, 0x28, 0x3f, 0x33, 0x23, 0x38, 0x63, 0x37, 0xe3, 0x30, 0x9d, 0x24,
+0x56, 0x13, 0x9c, 0xfe, 0xd2, 0xe8, 0xc9, 0xd4, 0x3d, 0xc5, 0x55, 0xbc, 0x03, 0xbc, 0xf7, 0xc4,
+0x65, 0xd6, 0x50, 0xee, 0x3c, 0x09, 0x6b, 0x23, 0x55, 0x39, 0x55, 0x48, 0x6b, 0x4e, 0x47, 0x4b,
+0x25, 0x3f, 0x6d, 0x2b, 0x86, 0x12, 0x42, 0xf7, 0x95, 0xdc, 0x6b, 0xc5, 0x59, 0xb4, 0x91, 0xab,
+0xc5, 0xac, 0xe7, 0xb8, 0x3d, 0xcf, 0x84, 0xed, 0xac, 0x0f, 0xad, 0x30, 0x81, 0x4b, 0x44, 0x5c,
+0xbe, 0x60, 0xa6, 0x58, 0x07, 0x46, 0xc5, 0x2b, 0x6c, 0x0d, 0x42, 0xee, 0x13, 0xd1, 0x61, 0xb8,
+0xec, 0xa6, 0x02, 0x9f, 0x6a, 0xa2, 0x55, 0xb2, 0x13, 0xce, 0x86, 0xf2, 0xa8, 0x1a, 0xe3, 0x3f,
+0x30, 0x5c, 0x4c, 0x6b, 0xae, 0x6b, 0x52, 0x5e, 0x8b, 0x46, 0x45, 0x28, 0x12, 0x07, 0xfc, 0xe5,
+0x93, 0xc7, 0x79, 0xae, 0x6c, 0x9d, 0x10, 0x97, 0x66, 0x9d, 0x81, 0xb1, 0x7b, 0xd2, 0xf6, 0xfb,
+0x6f, 0x27, 0x9d, 0x4d, 0x38, 0x68, 0x9e, 0x73, 0x78, 0x6f, 0xf6, 0x5d, 0x03, 0x43, 0xd1, 0x22,
+0x6c, 0x00, 0x5d, 0xde, 0x7d, 0xbf, 0xba, 0xa6, 0x4a, 0x97, 0xe6, 0x93, 0x94, 0x9e, 0x93, 0xb7,
+0xad, 0xdc, 0x56, 0x08, 0x35, 0x33, 0x5e, 0x56, 0xa6, 0x6c, 0xa6, 0x73, 0xec, 0x6b, 0x40, 0x58,
+0x51, 0x3c, 0x92, 0x1b, 0x0c, 0xf9, 0x39, 0xd7, 0x6b, 0xb9, 0x10, 0xa3, 0x2a, 0x97, 0x32, 0x98,
+0x52, 0xa7, 0xa1, 0xc3, 0x82, 0xe9, 0x30, 0x13, 0xd3, 0x39, 0xce, 0x57, 0x72, 0x69, 0xf4, 0x6c,
+0x4a, 0x63, 0xc1, 0x4e, 0xc3, 0x32, 0x54, 0x12, 0xa0, 0xf0, 0xb1, 0xd0, 0x33, 0xb6, 0x5a, 0xa4,
+0xc6, 0x9d, 0x9a, 0xa3, 0xbb, 0xb5, 0x29, 0xd2, 0xf4, 0xf4, 0x20, 0x19, 0xab, 0x39, 0x47, 0x52,
+0xf6, 0x5f, 0x86, 0x61, 0x08, 0x57, 0xf7, 0x42, 0xf5, 0x27, 0x50, 0x09, 0x40, 0xea, 0x83, 0xce,
+0x3d, 0xb9, 0x33, 0xad, 0x8f, 0xab, 0x11, 0xb4, 0xc3, 0xc5, 0x45, 0xde, 0xd0, 0xfa, 0xe8, 0x17,
+0x3f, 0x32, 0x5d, 0x46, 0x85, 0x51, 0xeb, 0x51, 0xbf, 0x47, 0xaf, 0x34, 0xe6, 0x1b, 0xc6, 0x00,
+0xda, 0xe6, 0x75, 0xd1, 0x1f, 0xc3, 0xcf, 0xbc, 0x7b, 0xbe, 0x2d, 0xc7, 0x61, 0xd5, 0x04, 0xe8,
+0x46, 0xfd, 0x56, 0x13, 0xcd, 0x27, 0xbd, 0x37, 0x43, 0x40, 0xb7, 0x3f, 0x07, 0x36, 0x1d, 0x25,
+0x3a, 0x10, 0xd0, 0xfa, 0x42, 0xe8, 0xc7, 0xda, 0x4b, 0xd3, 0x81, 0xd1, 0x13, 0xd4, 0x01, 0xda,
+0xb5, 0xe2, 0xdc, 0xed, 0x6c, 0xfb, 0x80, 0x0a, 0x36, 0x19, 0xf5, 0x24, 0x2b, 0x2b, 0x27, 0x2a,
+0x8d, 0x22, 0x44, 0x16, 0x4e, 0x08, 0xa6, 0xfb, 0x1e, 0xf2, 0x50, 0xec, 0xd8, 0xe9, 0x62, 0xe9,
+0xfa, 0xe9, 0x0c, 0xeb, 0xe4, 0xec, 0x4c, 0xf0, 0x16, 0xf6, 0xf4, 0xfd, 0xda, 0x06, 0x8e, 0x0e,
+0x18, 0x13, 0xa4, 0x13, 0x90, 0x10, 0xa4, 0x0b, 0xb8, 0x06, 0x40, 0x03, 0x90, 0x01, 0x36, 0x01,
+0xe6, 0x00, 0xee, 0xff, 0x4c, 0xfd, 0x16, 0xf9, 0x22, 0xf4, 0xe4, 0xef, 0xa4, 0xed, 0x4e, 0xee,
+0x76, 0xf1, 0x1a, 0xf6, 0x20, 0xfb, 0x8e, 0xff, 0x88, 0x03, 0x5c, 0x07, 0xaa, 0x0b, 0x32, 0x10,
+0x76, 0x14, 0x36, 0x17, 0xa6, 0x17, 0xb0, 0x14, 0x2e, 0x0e, 0x4a, 0x04, 0x10, 0xf8, 0x9c, 0xeb,
+0x19, 0xe1, 0x85, 0xda, 0xfd, 0xd8, 0xb7, 0xdc, 0x8a, 0xe4, 0x84, 0xef, 0xf8, 0xfb, 0xec, 0x08,
+0x3c, 0x15, 0xf3, 0x1f, 0x1f, 0x28, 0xb1, 0x2c, 0xab, 0x2c, 0x47, 0x27, 0x49, 0x1c, 0xc4, 0x0b,
+0x84, 0xf7, 0x37, 0xe2, 0xa7, 0xcf, 0x7f, 0xc3, 0x01, 0xc0, 0xa9, 0xc5, 0x0f, 0xd3, 0xb2, 0xe5,
+0x9e, 0xfa, 0x58, 0x0f, 0xc1, 0x21, 0xdb, 0x30, 0x79, 0x3b, 0x8f, 0x40, 0x13, 0x3f, 0x17, 0x36,
+0x45, 0x25, 0x52, 0x0d, 0x98, 0xf0, 0x71, 0xd3, 0x69, 0xbb, 0x0b, 0xad, 0x04, 0xab, 0x25, 0xb5,
+0xdd, 0xc8, 0x71, 0xe2, 0xc2, 0xfd, 0xc6, 0x17, 0x41, 0x2e, 0x09, 0x40, 0xcd, 0x4b, 0x93, 0x50,
+0x97, 0x4c, 0x25, 0x3f, 0xf5, 0x27, 0xb8, 0x08, 0x20, 0xe5, 0xf5, 0xc2, 0xac, 0xa8, 0x1a, 0x9b,
+0x44, 0x9c, 0xc4, 0xaa, 0xa1, 0xc3, 0x03, 0xe2, 0x0a, 0x02, 0x1b, 0x20, 0x43, 0x3a, 0x8f, 0x4e,
+0x62, 0x5b, 0x82, 0x5e, 0x9a, 0x56, 0x05, 0x43, 0xcb, 0x24, 0x3c, 0xff, 0x37, 0xd7, 0x77, 0xb3,
+0x30, 0x9a, 0x8c, 0x8f, 0x78, 0x94, 0x2c, 0xa7, 0xc9, 0xc3, 0xde, 0xe5, 0x00, 0x09, 0xa7, 0x29,
+0x9b, 0x45, 0x76, 0x5a, 0xcc, 0x65, 0x70, 0x65, 0x1e, 0x58, 0xb3, 0x3e, 0xa6, 0x1b, 0x26, 0xf3,
+0xe7, 0xca, 0x1e, 0xa9, 0xc2, 0x92, 0x0e, 0x8b, 0x56, 0x92, 0x0e, 0xa7, 0xe7, 0xc5, 0x6a, 0xea,
+0x14, 0x10, 0x1b, 0x33, 0x09, 0x50, 0xd6, 0x63, 0xb6, 0x6b, 0xfe, 0x65, 0x3d, 0x53, 0x9f, 0x35,
+0xae, 0x10, 0xe6, 0xe8, 0x41, 0xc3, 0xc0, 0xa4, 0xa2, 0x91, 0x50, 0x8c, 0x84, 0x95, 0x09, 0xac,
+0xa9, 0xcc, 0x00, 0xf3, 0xf8, 0x19, 0xef, 0x3c, 0xe2, 0x57, 0x72, 0x67, 0xa4, 0x69, 0x7a, 0x5e,
+0xd1, 0x47, 0x01, 0x29, 0xa2, 0x05, 0x51, 0xe1, 0x0d, 0xc0, 0xcc, 0xa5, 0xe8, 0x95, 0xe4, 0x92,
+0xaa, 0x9d, 0x57, 0xb5, 0xf1, 0xd6, 0x74, 0xfd, 0x5b, 0x23, 0x61, 0x43, 0x6c, 0x59, 0xf6, 0x62,
+0xb2, 0x5f, 0xf7, 0x50, 0xef, 0x39, 0x7d, 0x1d, 0x88, 0xfe, 0x89, 0xdf, 0x75, 0xc3, 0x2d, 0xad,
+0x18, 0xa0, 0xcc, 0x9e, 0x82, 0xaa, 0x8d, 0xc2, 0x45, 0xe3, 0x7c, 0x07, 0x05, 0x29, 0x2d, 0x43,
+0x81, 0x52, 0x5e, 0x56, 0x77, 0x4f, 0x7b, 0x40, 0xeb, 0x2b, 0x2c, 0x14, 0xf6, 0xfa, 0xe1, 0xe1,
+0xcd, 0xca, 0x87, 0xb8, 0x27, 0xae, 0x7d, 0xae, 0xdd, 0xba, 0xd3, 0xd1, 0x60, 0xef, 0x08, 0x0e,
+0x71, 0x28, 0x15, 0x3b, 0x2d, 0x44, 0x21, 0x44, 0xad, 0x3c, 0xef, 0x2f, 0xe3, 0x1f, 0xea, 0x0d,
+0xc8, 0xfa, 0x80, 0xe7, 0xcd, 0xd5, 0xe1, 0xc7, 0xc7, 0xc0, 0x79, 0xc2, 0xa7, 0xcd, 0x91, 0xe0,
+0x5c, 0xf7, 0x8c, 0x0d, 0x85, 0x1f, 0xf9, 0x2a, 0xab, 0x2f, 0x6b, 0x2e, 0xab, 0x28, 0x15, 0x20,
+0xa4, 0x15, 0xf0, 0x09, 0xa0, 0xfd, 0x20, 0xf1, 0x80, 0xe5, 0x91, 0xdc, 0xd9, 0xd7, 0xed, 0xd8,
+0xcd, 0xdf, 0x3a, 0xeb, 0xd2, 0xf8, 0xea, 0x05, 0x48, 0x10, 0xd6, 0x16, 0x8a, 0x19, 0xee, 0x18,
+0x38, 0x16, 0x06, 0x12, 0x6e, 0x0d, 0x9c, 0x08, 0xc4, 0x03, 0x96, 0xfe, 0x30, 0xf9, 0xce, 0xf3,
+0x5e, 0xef, 0xea, 0xec, 0x1a, 0xed, 0xf8, 0xef, 0x8e, 0xf4, 0xbc, 0xf9, 0x22, 0xfe, 0x20, 0x01,
+0x9e, 0x02, 0x4c, 0x03, 0xd8, 0x03, 0x14, 0x05, 0x84, 0x07, 0x00, 0x0b, 0x9e, 0x0e, 0xf0, 0x10,
+0x86, 0x10, 0xd2, 0x0c, 0x14, 0x06, 0xd6, 0xfd, 0xe0, 0xf5, 0xb4, 0xef, 0xe0, 0xeb, 0x34, 0xea,
+0xd0, 0xe9, 0x4a, 0xea, 0xd0, 0xeb, 0x90, 0xee, 0xc2, 0xf3, 0xa6, 0xfb, 0x5c, 0x06, 0xca, 0x12,
+0xa5, 0x1e, 0xf7, 0x26, 0x57, 0x29, 0x7d, 0x24, 0x2c, 0x19, 0x08, 0x0a, 0xde, 0xf9, 0x9e, 0xeb,
+0x91, 0xe0, 0xe7, 0xd8, 0xbd, 0xd4, 0xb7, 0xd3, 0x2f, 0xd6, 0xef, 0xdc, 0x86, 0xe8, 0xf2, 0xf8,
+0xdc, 0x0c, 0x8d, 0x21, 0x6f, 0x33, 0xb5, 0x3e, 0x57, 0x40, 0xff, 0x37, 0xe7, 0x26, 0xca, 0x10,
+0x86, 0xf9, 0x26, 0xe4, 0xe7, 0xd2, 0xc1, 0xc6, 0x19, 0xc0, 0x5d, 0xbf, 0xe5, 0xc4, 0x33, 0xd1,
+0x8c, 0xe4, 0x26, 0xfd, 0x4c, 0x18, 0x39, 0x32, 0x77, 0x46, 0x89, 0x51, 0x01, 0x51, 0xe3, 0x44,
+0x85, 0x2f, 0x56, 0x14, 0x64, 0xf7, 0x33, 0xdc, 0xa1, 0xc5, 0xb3, 0xb5, 0xb1, 0xad, 0x51, 0xae,
+0x3f, 0xb8, 0x6f, 0xcb, 0x4a, 0xe6, 0xdc, 0x05, 0xdf, 0x25, 0x63, 0x42, 0x08, 0x57, 0xcc, 0x60,
+0xdc, 0x5d, 0x65, 0x4e, 0xd5, 0x34, 0x88, 0x14, 0xd8, 0xf1, 0xfb, 0xd0, 0xfb, 0xb5, 0xd8, 0xa3,
+0xc0, 0x9c, 0x56, 0xa1, 0xc1, 0xb1, 0x5b, 0xcc, 0x96, 0xed, 0x64, 0x11, 0x1b, 0x33, 0x2f, 0x4f,
+0x4e, 0x62, 0xd8, 0x69, 0x58, 0x64, 0x13, 0x52, 0xef, 0x34, 0x8c, 0x10, 0x6e, 0xe9, 0xbb, 0xc4,
+0xea, 0xa7, 0x90, 0x96, 0xe2, 0x92, 0x14, 0x9d, 0x8b, 0xb3, 0x49, 0xd3, 0xba, 0xf7, 0x49, 0x1c,
+0x5d, 0x3d, 0xd0, 0x57, 0xfa, 0x68, 0x78, 0x6e, 0x7c, 0x66, 0x27, 0x51, 0x6f, 0x30, 0x00, 0x08,
+0x9f, 0xdd, 0x97, 0xb7, 0xf2, 0x9b, 0xb2, 0x8e, 0xa2, 0x90, 0xae, 0xa0, 0xbf, 0xbb, 0x7f, 0xdd,
+0x9a, 0x01, 0x4b, 0x24, 0xc1, 0x42, 0xb8, 0x5a, 0x8e, 0x69, 0x8e, 0x6c, 0x2e, 0x62, 0x25, 0x4a,
+0xf9, 0x26, 0x0c, 0xfd, 0xbf, 0xd2, 0x1f, 0xaf, 0xe4, 0x97, 0xda, 0x8f, 0xae, 0x96, 0x06, 0xaa,
+0x0b, 0xc6, 0xb6, 0xe6, 0x46, 0x08, 0xff, 0x27, 0x91, 0x43, 0xda, 0x58, 0x32, 0x65, 0xda, 0x65,
+0x52, 0x59, 0xb1, 0x3f, 0xea, 0x1b, 0x0a, 0xf3, 0xe3, 0xcb, 0x59, 0xad, 0xec, 0x9b, 0xda, 0x98,
+0xe4, 0xa2, 0xe1, 0xb6, 0x55, 0xd1, 0x2c, 0xef, 0x3a, 0x0d, 0x5f, 0x29, 0x81, 0x41, 0x31, 0x53,
+0x1a, 0x5c, 0xc8, 0x59, 0x11, 0x4b, 0x33, 0x31, 0x48, 0x0f, 0xc8, 0xea, 0x05, 0xca, 0x17, 0xb2,
+0x4e, 0xa6, 0x04, 0xa7, 0x39, 0xb2, 0x77, 0xc5, 0x81, 0xdd, 0x8c, 0xf7, 0x76, 0x11, 0xc7, 0x28,
+0xd5, 0x3b, 0xa9, 0x48, 0x1f, 0x4d, 0x29, 0x48, 0x61, 0x39, 0x41, 0x22, 0x4c, 0x06, 0x9c, 0xe9,
+0xc5, 0xd0, 0xb5, 0xbf, 0xef, 0xb7, 0xd5, 0xb9, 0xf3, 0xc3, 0xd9, 0xd3, 0x86, 0xe7, 0x66, 0xfc,
+0x72, 0x10, 0x13, 0x22, 0x7b, 0x2f, 0x83, 0x37, 0x5b, 0x39, 0x27, 0x34, 0x87, 0x28, 0xd2, 0x17,
+0xfe, 0x03, 0x30, 0xf0, 0x0d, 0xdf, 0xf1, 0xd2, 0x7b, 0xcd, 0xcf, 0xce, 0x45, 0xd6, 0x37, 0xe2,
+0x8a, 0xf0, 0x2e, 0xff, 0x70, 0x0c, 0xfc, 0x16, 0x67, 0x1e, 0x79, 0x22, 0x43, 0x23, 0xef, 0x20,
+0x74, 0x1b, 0xf8, 0x12, 0xf2, 0x07, 0xc0, 0xfb, 0x40, 0xf0, 0x94, 0xe7, 0x75, 0xe3, 0x22, 0xe4,
+0xf0, 0xe8, 0x20, 0xf0, 0xd0, 0xf7, 0x6c, 0xfe, 0x1a, 0x03, 0xe4, 0x05, 0xb6, 0x07, 0x86, 0x09,
+0x02, 0x0c, 0x16, 0x0f, 0x72, 0x11, 0x10, 0x12, 0xe0, 0x0f, 0xe6, 0x0a, 0xa6, 0x04, 0xc0, 0xfe,
+0xc0, 0xfa, 0x18, 0xf9, 0xe0, 0xf8, 0xf4, 0xf8, 0x28, 0xf8, 0xc4, 0xf5, 0x82, 0xf2, 0x98, 0xef,
+0xd6, 0xee, 0xee, 0xf1, 0xc2, 0xf8, 0x68, 0x02, 0xda, 0x0c, 0x7c, 0x15, 0xe2, 0x1a, 0x55, 0x1c,
+0x84, 0x1a, 0xe0, 0x16, 0x42, 0x12, 0xd4, 0x0c, 0x44, 0x06, 0xc6, 0xfd, 0x9e, 0xf3, 0xcc, 0xe8,
+0xdb, 0xde, 0x85, 0xd8, 0x97, 0xd7, 0x13, 0xdd, 0xd6, 0xe8, 0xf4, 0xf8, 0x92, 0x0a, 0xe8, 0x1a,
+0x45, 0x27, 0x7f, 0x2e, 0x95, 0x30, 0xcb, 0x2d, 0xcb, 0x26, 0xc8, 0x1b, 0x18, 0x0d, 0xbe, 0xfb,
+0x42, 0xe9, 0x07, 0xd8, 0x9d, 0xca, 0x6b, 0xc3, 0xeb, 0xc3, 0xcb, 0xcc, 0x55, 0xdd, 0x98, 0xf3,
+0x30, 0x0c, 0x83, 0x23, 0x6b, 0x36, 0x75, 0x42, 0xa9, 0x46, 0x7b, 0x42, 0x7d, 0x36, 0xf9, 0x23,
+0xec, 0x0c, 0xd8, 0xf3, 0xa1, 0xdb, 0x19, 0xc7, 0xa9, 0xb8, 0x4d, 0xb2, 0xf3, 0xb4, 0x39, 0xc1,
+0x59, 0xd6, 0x2e, 0xf2, 0x3c, 0x11, 0xe1, 0x2e, 0x13, 0x47, 0x1a, 0x56, 0xfc, 0x59, 0x0b, 0x52,
+0x9b, 0x3f, 0xc1, 0x25, 0xe8, 0x07, 0xd2, 0xe9, 0x55, 0xce, 0x6b, 0xb8, 0x00, 0xaa, 0xde, 0xa4,
+0xc4, 0xa9, 0x6f, 0xb9, 0x7d, 0xd3, 0x58, 0xf5, 0xf0, 0x1a, 0x33, 0x3e, 0x90, 0x59, 0xa0, 0x68,
+0xcc, 0x68, 0xd0, 0x5a, 0xc9, 0x41, 0x0b, 0x22, 0x06, 0x00, 0x3f, 0xdf, 0x8f, 0xc2, 0x87, 0xac,
+0x10, 0x9f, 0x76, 0x9b, 0x7a, 0xa3, 0x77, 0xb7, 0xd7, 0xd6, 0x32, 0xfe, 0xdb, 0x27, 0x4b, 0x4d,
+0x18, 0x68, 0xc8, 0x73, 0x18, 0x6f, 0x08, 0x5c, 0xad, 0x3e, 0x2e, 0x1c, 0x66, 0xf8, 0xf7, 0xd6,
+0x5d, 0xba, 0xfc, 0xa4, 0xf0, 0x98, 0xce, 0x97, 0x32, 0xa3, 0x9f, 0xbb, 0x75, 0xdf, 0x08, 0x0a,
+0x01, 0x35, 0xe8, 0x58, 0x1e, 0x70, 0x38, 0x77, 0xfa, 0x6d, 0x9e, 0x57, 0x7f, 0x38, 0x20, 0x15,
+0x54, 0xf1, 0x17, 0xd0, 0x43, 0xb4, 0x9a, 0xa0, 0x10, 0x97, 0x7c, 0x99, 0x36, 0xa9, 0x91, 0xc5,
+0xc2, 0xeb, 0x3a, 0x16, 0x2d, 0x3e, 0x72, 0x5d, 0x78, 0x6f, 0x0c, 0x72, 0x28, 0x66, 0xef, 0x4e,
+0x23, 0x30, 0xd4, 0x0d, 0x12, 0xeb, 0x0d, 0xcb, 0x2b, 0xb1, 0x32, 0xa0, 0x68, 0x9a, 0x5c, 0xa1,
+0x01, 0xb5, 0x53, 0xd3, 0x7a, 0xf8, 0xd5, 0x1e, 0xfb, 0x40, 0x8a, 0x5a, 0xc2, 0x67, 0x9e, 0x67,
+0xc6, 0x5a, 0xdb, 0x43, 0x65, 0x26, 0xbc, 0x05, 0x26, 0xe5, 0x51, 0xc8, 0xbd, 0xb2, 0xda, 0xa6,
+0x66, 0xa6, 0x1d, 0xb1, 0xdb, 0xc5, 0xa1, 0xe1, 0xfe, 0x00, 0x27, 0x20, 0x81, 0x3b, 0xab, 0x4f,
+0xba, 0x59, 0x7c, 0x58, 0x6d, 0x4c, 0x71, 0x37, 0x42, 0x1c, 0x8c, 0xfe, 0xed, 0xe1, 0x4b, 0xca,
+0xab, 0xba, 0x63, 0xb4, 0xd7, 0xb7, 0xcf, 0xc3, 0xe1, 0xd5, 0x40, 0xec, 0x60, 0x04, 0x32, 0x1c,
+0x4d, 0x31, 0x01, 0x41, 0x99, 0x48, 0xf3, 0x46, 0xdd, 0x3b, 0xeb, 0x28, 0xa4, 0x11, 0xf0, 0xf8,
+0xfd, 0xe2, 0xbb, 0xd2, 0xcf, 0xc9, 0x5f, 0xc8, 0x5d, 0xcd, 0xf5, 0xd6, 0xad, 0xe3, 0xa4, 0xf2,
+0x96, 0x02, 0x16, 0x13, 0x91, 0x22, 0x5d, 0x2e, 0x5b, 0x34, 0xc5, 0x32, 0xaf, 0x29, 0x08, 0x1b,
+0x82, 0x09, 0x6a, 0xf8, 0xd4, 0xea, 0x25, 0xe2, 0x71, 0xde, 0x05, 0xdf, 0x6d, 0xe2, 0x50, 0xe7,
+0x54, 0xed, 0x06, 0xf4, 0x5a, 0xfc, 0xfe, 0x05, 0xec, 0x0f, 0x7c, 0x18, 0x75, 0x1d, 0x9d, 0x1d,
+0xbe, 0x18, 0x78, 0x10, 0x34, 0x07, 0x52, 0xff, 0xfe, 0xf9, 0x60, 0xf7, 0xd6, 0xf6, 0x18, 0xf7,
+0x02, 0xf7, 0xd6, 0xf5, 0xe8, 0xf3, 0x98, 0xf2, 0xb4, 0xf2, 0x76, 0xf5, 0x3e, 0xfa, 0x0a, 0x00,
+0x70, 0x05, 0xda, 0x08, 0xaa, 0x0a, 0x14, 0x0b, 0x6c, 0x0b, 0x04, 0x0c, 0x4e, 0x0d, 0x2a, 0x0e,
+0x0c, 0x0e, 0xe6, 0x0b, 0xf4, 0x06, 0xbc, 0xff, 0x94, 0xf6, 0x70, 0xed, 0x4e, 0xe6, 0x79, 0xe2,
+0xef, 0xe2, 0x66, 0xe7, 0x14, 0xef, 0x76, 0xf8, 0x86, 0x02, 0x32, 0x0c, 0xee, 0x14, 0x5f, 0x1c,
+0x55, 0x21, 0xdb, 0x23, 0xcd, 0x22, 0xd1, 0x1d, 0x4c, 0x14, 0xd8, 0x06, 0x70, 0xf6, 0x4e, 0xe5,
+0x63, 0xd6, 0x63, 0xcc, 0xf1, 0xc9, 0x75, 0xcf, 0xb9, 0xdb, 0xd0, 0xec, 0xb2, 0xff, 0x00, 0x12,
+0xc9, 0x21, 0xef, 0x2d, 0xd5, 0x35, 0xc7, 0x38, 0x3d, 0x36, 0x69, 0x2d, 0xab, 0x1e, 0xf6, 0x09,
+0x6c, 0xf1, 0xf7, 0xd7, 0x4f, 0xc2, 0xd1, 0xb4, 0x6d, 0xb2, 0xe3, 0xbb, 0xe3, 0xce, 0xf0, 0xe7,
+0x9c, 0x02, 0x62, 0x1b, 0xf3, 0x2f, 0x0b, 0x3f, 0xc3, 0x47, 0xf3, 0x49, 0x99, 0x44, 0x71, 0x37,
+0x5d, 0x22, 0x98, 0x06, 0x96, 0xe6, 0x65, 0xc7, 0x35, 0xae, 0xbc, 0xa0, 0xa2, 0xa1, 0x15, 0xb0,
+0x5f, 0xc9, 0x70, 0xe8, 0x82, 0x08, 0x73, 0x25, 0xe1, 0x3c, 0x91, 0x4d, 0xec, 0x56, 0xae, 0x57,
+0xe5, 0x4e, 0x91, 0x3c, 0x11, 0x21, 0x86, 0xfe, 0xff, 0xd8, 0x43, 0xb6, 0x14, 0x9d, 0x0c, 0x92,
+0xf0, 0x96, 0x54, 0xaa, 0x5b, 0xc8, 0xc2, 0xeb, 0x40, 0x0f, 0x17, 0x2f, 0x93, 0x48, 0x6a, 0x5a,
+0xe4, 0x62, 0xa6, 0x60, 0x07, 0x53, 0x55, 0x3a, 0xb4, 0x18, 0x7c, 0xf1, 0x25, 0xca, 0x8e, 0xa8,
+0x6e, 0x92, 0x7a, 0x8b, 0x58, 0x94, 0x2c, 0xab, 0xe3, 0xcb, 0x7a, 0xf1, 0xd2, 0x16, 0x25, 0x38,
+0x63, 0x52, 0x98, 0x63, 0xd0, 0x69, 0x52, 0x63, 0x37, 0x50, 0x85, 0x32, 0x40, 0x0d, 0x36, 0xe5,
+0x55, 0xbf, 0xf6, 0xa0, 0xde, 0x8e, 0x46, 0x8b, 0x8c, 0x96, 0xfd, 0xae, 0x19, 0xd1, 0xaa, 0xf7,
+0x3d, 0x1e, 0xe7, 0x3f, 0xaa, 0x59, 0x6e, 0x68, 0x14, 0x6a, 0x44, 0x5e, 0xbd, 0x46, 0x5d, 0x26,
+0x40, 0x01, 0xbd, 0xdb, 0x01, 0xba, 0x7e, 0xa0, 0x26, 0x92, 0x22, 0x91, 0xe0, 0x9d, 0x2f, 0xb7,
+0xa3, 0xd9, 0xb0, 0x00, 0xa5, 0x26, 0xb5, 0x46, 0xde, 0x5c, 0x82, 0x66, 0xb0, 0x62, 0x6d, 0x52,
+0xaf, 0x38, 0x30, 0x19, 0x9a, 0xf7, 0x39, 0xd7, 0x13, 0xbb, 0x1e, 0xa6, 0x08, 0x9b, 0x96, 0x9b,
+0xf4, 0xa8, 0x31, 0xc2, 0x22, 0xe4, 0x7a, 0x09, 0x83, 0x2c, 0x0b, 0x48, 0xb8, 0x58, 0xea, 0x5c,
+0xcc, 0x54, 0x35, 0x43, 0x01, 0x2b, 0x78, 0x0f, 0x6e, 0xf3, 0xd7, 0xd8, 0x11, 0xc2, 0x25, 0xb1,
+0x6a, 0xa8, 0x08, 0xaa, 0x63, 0xb7, 0x37, 0xcf, 0x46, 0xee, 0x76, 0x0f, 0xc3, 0x2c, 0x09, 0x42,
+0xb1, 0x4c, 0x83, 0x4c, 0x33, 0x43, 0x17, 0x33, 0xcb, 0x1e, 0x04, 0x09, 0x48, 0xf3, 0xe9, 0xde,
+0x41, 0xcd, 0x4b, 0xc0, 0x09, 0xba, 0xdb, 0xbc, 0x15, 0xc9, 0xd9, 0xdd, 0xa0, 0xf7, 0x96, 0x11,
+0x13, 0x27, 0x0f, 0x35, 0x8b, 0x3a, 0x01, 0x38, 0x9f, 0x2f, 0x0b, 0x23, 0x9e, 0x14, 0x6e, 0x05,
+0x76, 0xf6, 0x96, 0xe8, 0x75, 0xdc, 0x89, 0xd3, 0x75, 0xcf, 0xd1, 0xd1, 0x03, 0xdb, 0xa2, 0xe9,
+0x40, 0xfb, 0x62, 0x0c, 0x0c, 0x1a, 0x27, 0x22, 0x67, 0x24, 0x2f, 0x22, 0x87, 0x1c, 0x4c, 0x15,
+0x12, 0x0d, 0x2e, 0x05, 0xc4, 0xfd, 0x82, 0xf6, 0xdc, 0xef, 0x4a, 0xea, 0xf2, 0xe6, 0x8a, 0xe6,
+0x64, 0xe9, 0x56, 0xef, 0x74, 0xf7, 0xc4, 0xff, 0x98, 0x06, 0x10, 0x0b, 0xf0, 0x0c, 0xea, 0x0c,
+0xca, 0x0b, 0x46, 0x0a, 0x46, 0x09, 0xcc, 0x08, 0xa4, 0x08, 0x24, 0x08, 0x70, 0x06, 0xda, 0x02,
+0xda, 0xfd, 0x0c, 0xf8, 0xca, 0xf2, 0x78, 0xef, 0x20, 0xee, 0x0c, 0xef, 0x1c, 0xf1, 0x46, 0xf3,
+0xda, 0xf5, 0xa4, 0xf8, 0x70, 0xfc, 0x82, 0x01, 0x22, 0x08, 0x0a, 0x10, 0x02, 0x18, 0xd3, 0x1d,
+0x2f, 0x1f, 0x66, 0x1b, 0x1c, 0x12, 0x16, 0x05, 0x12, 0xf7, 0x6c, 0xea, 0x77, 0xe1, 0x59, 0xdc,
+0xa7, 0xda, 0x17, 0xdc, 0x25, 0xe0, 0xe0, 0xe6, 0x98, 0xf0, 0x68, 0xfd, 0xda, 0x0c, 0x2d, 0x1d,
+0xa9, 0x2b, 0x1f, 0x35, 0xe9, 0x36, 0xb1, 0x2f, 0x51, 0x20, 0x92, 0x0b, 0x88, 0xf5, 0xc7, 0xe1,
+0xd5, 0xd2, 0xa3, 0xc9, 0x17, 0xc6, 0xab, 0xc7, 0x53, 0xce, 0x1b, 0xda, 0xca, 0xea, 0xe2, 0xff,
+0x4a, 0x17, 0x01, 0x2e, 0x79, 0x40, 0x67, 0x4a, 0xcf, 0x49, 0x11, 0x3e, 0xd7, 0x28, 0xf2, 0x0d,
+0xa6, 0xf1, 0x2d, 0xd8, 0x85, 0xc4, 0x01, 0xb8, 0xf5, 0xb2, 0xbb, 0xb5, 0x3d, 0xc0, 0x3b, 0xd2,
+0xd0, 0xea, 0xbc, 0x07, 0x6b, 0x25, 0x13, 0x40, 0xf5, 0x52, 0x4a, 0x5b, 0x4c, 0x57, 0x2f, 0x47,
+0x63, 0x2d, 0x96, 0x0d, 0x4e, 0xec, 0x11, 0xce, 0x59, 0xb6, 0x62, 0xa7, 0x80, 0xa2, 0x0c, 0xa8,
+0x0d, 0xb8, 0x53, 0xd1, 0x54, 0xf1, 0xd2, 0x13, 0xad, 0x34, 0x8f, 0x4f, 0xf8, 0x60, 0x7c, 0x66,
+0x00, 0x5f, 0x5f, 0x4b, 0xe7, 0x2d, 0x20, 0x0a, 0x9c, 0xe4, 0x7f, 0xc2, 0x36, 0xa8, 0xec, 0x98,
+0x4e, 0x96, 0xf2, 0xa0, 0x75, 0xb7, 0x67, 0xd7, 0x18, 0xfc, 0xc9, 0x20, 0x61, 0x41, 0x2c, 0x5a,
+0xe6, 0x68, 0x84, 0x6b, 0x4a, 0x61, 0xdb, 0x4a, 0x4d, 0x2a, 0x1e, 0x03, 0x67, 0xda, 0x1b, 0xb6,
+0xa8, 0x9b, 0xfe, 0x8e, 0x80, 0x91, 0x5a, 0xa2, 0xc5, 0xbe, 0x69, 0xe2, 0x16, 0x08, 0x6f, 0x2b,
+0xe7, 0x48, 0x94, 0x5e, 0x74, 0x6a, 0xb8, 0x6a, 0x80, 0x5e, 0x11, 0x46, 0x81, 0x23, 0x5e, 0xfa,
+0x5f, 0xd0, 0x87, 0xac, 0xfe, 0x94, 0xee, 0x8c, 0xe6, 0x94, 0x68, 0xaa, 0x91, 0xc9, 0x3e, 0xed,
+0xb0, 0x10, 0x77, 0x30, 0x6f, 0x4a, 0xdc, 0x5c, 0xea, 0x65, 0x1e, 0x64, 0x1e, 0x56, 0x6d, 0x3c,
+0xe6, 0x18, 0xf0, 0xef, 0x05, 0xc8, 0x32, 0xa8, 0xd8, 0x95, 0x64, 0x93, 0x7a, 0x9f, 0xf1, 0xb6,
+0x69, 0xd5, 0x3c, 0xf6, 0xf4, 0x15, 0xad, 0x31, 0xe1, 0x47, 0x32, 0x57, 0xea, 0x5d, 0xfa, 0x59,
+0xc5, 0x4a, 0x91, 0x30, 0x02, 0x0e, 0x0a, 0xe8, 0xd9, 0xc4, 0xf8, 0xaa, 0x76, 0x9e, 0xcc, 0x9f,
+0x5d, 0xad, 0x07, 0xc4, 0x6b, 0xdf, 0x46, 0xfc, 0x6c, 0x17, 0x15, 0x2f, 0xa1, 0x41, 0x65, 0x4d,
+0xe1, 0x50, 0xfb, 0x4a, 0x07, 0x3b, 0x11, 0x22, 0x8c, 0x03, 0xd8, 0xe3, 0x85, 0xc8, 0xf3, 0xb5,
+0x89, 0xae, 0x6f, 0xb2, 0xa5, 0xbf, 0xeb, 0xd2, 0xac, 0xe9, 0xc4, 0x00, 0x36, 0x16, 0x7f, 0x28,
+0xdf, 0x35, 0x81, 0x3d, 0x43, 0x3e, 0xc1, 0x37, 0x15, 0x2a, 0x90, 0x16, 0xa4, 0xff, 0xd2, 0xe8,
+0x51, 0xd5, 0x45, 0xc8, 0x6f, 0xc3, 0xdd, 0xc6, 0x23, 0xd1, 0x3b, 0xe0, 0x84, 0xf1, 0xa4, 0x02,
+0xf0, 0x11, 0xbd, 0x1d, 0xe1, 0x25, 0x87, 0x29, 0xd3, 0x28, 0x3b, 0x24, 0xde, 0x1b, 0x3c, 0x10,
+0x6e, 0x02, 0x14, 0xf4, 0x3c, 0xe7, 0xc7, 0xdd, 0x79, 0xd9, 0x13, 0xdb, 0xa1, 0xe1, 0x84, 0xeb,
+0x62, 0xf6, 0xc8, 0x00, 0x26, 0x09, 0xc8, 0x0e, 0xcc, 0x11, 0xe2, 0x12, 0xf2, 0x12, 0x44, 0x12,
+0xec, 0x10, 0x3c, 0x0e, 0x7a, 0x09, 0xea, 0x02, 0x80, 0xfb, 0x02, 0xf5, 0x1a, 0xf1, 0x20, 0xf0,
+0x02, 0xf2, 0x2e, 0xf5, 0x38, 0xf8, 0x14, 0xfa, 0x5e, 0xfa, 0xea, 0xf9, 0xac, 0xf9, 0x28, 0xfb,
+0x3e, 0xff, 0xa0, 0x05, 0xd6, 0x0c, 0xd0, 0x12, 0xe2, 0x15, 0x68, 0x15, 0xcc, 0x11, 0x9c, 0x0c,
+0x52, 0x07, 0xd0, 0x02, 0xb4, 0xfe, 0x30, 0xfa, 0xc4, 0xf4, 0x44, 0xee, 0xc8, 0xe7, 0xc5, 0xe2,
+0x79, 0xe1, 0x6a, 0xe5, 0xae, 0xee, 0x20, 0xfc, 0x56, 0x0b, 0x44, 0x19, 0x73, 0x23, 0x5d, 0x28,
+0x1d, 0x28, 0xfb, 0x23, 0xb7, 0x1c, 0x02, 0x13, 0x1a, 0x07, 0x60, 0xf9, 0xd2, 0xea, 0xdb, 0xdc,
+0x8d, 0xd1, 0x5b, 0xcb, 0x0d, 0xcc, 0x53, 0xd4, 0xab, 0xe3, 0xee, 0xf7, 0x1c, 0x0e, 0xe9, 0x22,
+0xfb, 0x32, 0x7d, 0x3c, 0xa3, 0x3e, 0x75, 0x39, 0x0f, 0x2e, 0x49, 0x1d, 0x8e, 0x08, 0x36, 0xf2,
+0x6d, 0xdc, 0xef, 0xc9, 0x2b, 0xbd, 0xe1, 0xb7, 0x7b, 0xbb, 0x0f, 0xc8, 0x75, 0xdc, 0x78, 0xf6,
+0xfc, 0x12, 0xd9, 0x2d, 0x81, 0x43, 0x95, 0x50, 0x3f, 0x53, 0x75, 0x4b, 0xff, 0x39, 0x2f, 0x21,
+0x58, 0x04, 0xd2, 0xe6, 0x75, 0xcc, 0x21, 0xb8, 0xb3, 0xab, 0xc2, 0xa8, 0xa7, 0xaf, 0x57, 0xc0,
+0xcb, 0xd9, 0x74, 0xf9, 0xa2, 0x1b, 0xe1, 0x3b, 0x1a, 0x55, 0x48, 0x63, 0xa8, 0x63, 0x4e, 0x56,
+0x9d, 0x3d, 0xc7, 0x1d, 0x16, 0xfb, 0xff, 0xd9, 0x7d, 0xbe, 0xb0, 0xaa, 0x76, 0xa0, 0xda, 0x9f,
+0xa2, 0xa9, 0x05, 0xbe, 0xb3, 0xdb, 0x3a, 0x00, 0x05, 0x27, 0x8f, 0x4a, 0xc8, 0x64, 0xda, 0x70,
+0x7a, 0x6c, 0xe4, 0x58, 0x4f, 0x3a, 0xc6, 0x15, 0xb2, 0xf0, 0x45, 0xcf, 0x9d, 0xb4, 0xc4, 0xa2,
+0x72, 0x9a, 0x42, 0x9c, 0xf8, 0xa8, 0xf1, 0xc0, 0xe7, 0xe2, 0x62, 0x0b, 0xbb, 0x34, 0x70, 0x58,
+0x3c, 0x70, 0x8a, 0x77, 0x84, 0x6d, 0xb3, 0x54, 0x97, 0x32, 0xd0, 0x0c, 0xfc, 0xe7, 0xc7, 0xc7,
+0xb9, 0xae, 0xb8, 0x9e, 0x76, 0x98, 0x0e, 0x9d, 0x0d, 0xad, 0xd5, 0xc8, 0xfc, 0xed, 0xd2, 0x17,
+0x57, 0x40, 0xc0, 0x60, 0x94, 0x73, 0xb8, 0x75, 0xc2, 0x67, 0x25, 0x4d, 0x07, 0x2b, 0x22, 0x06,
+0xad, 0xe2, 0xf5, 0xc3, 0x95, 0xac, 0x64, 0x9e, 0xfe, 0x9a, 0x18, 0xa3, 0x0d, 0xb7, 0x91, 0xd5,
+0x30, 0xfb, 0xe1, 0x22, 0x87, 0x46, 0xf8, 0x60, 0x1a, 0x6e, 0x70, 0x6c, 0x00, 0x5d, 0x01, 0x43,
+0xbb, 0x22, 0x44, 0x00, 0x1b, 0xdf, 0xdb, 0xc2, 0x35, 0xae, 0x68, 0xa3, 0xd8, 0xa3, 0x81, 0xaf,
+0xb1, 0xc5, 0xaf, 0xe3, 0xd0, 0x05, 0x79, 0x27, 0x61, 0x44, 0xac, 0x58, 0xb4, 0x61, 0x52, 0x5e,
+0x71, 0x4f, 0xa5, 0x37, 0x30, 0x1a, 0xb8, 0xfa, 0x05, 0xdd, 0xd3, 0xc4, 0xd3, 0xb4, 0xd9, 0xae,
+0x2f, 0xb3, 0x39, 0xc1, 0x8f, 0xd6, 0x28, 0xf0, 0x30, 0x0b, 0xb5, 0x24, 0x41, 0x3a, 0x7d, 0x49,
+0xd9, 0x4f, 0xad, 0x4c, 0xcd, 0x3f, 0x03, 0x2b, 0x82, 0x11, 0x96, 0xf6, 0x4b, 0xde, 0xe3, 0xcb,
+0xd7, 0xc1, 0x83, 0xc0, 0xa1, 0xc7, 0xa9, 0xd4, 0x82, 0xe5, 0xde, 0xf7, 0x30, 0x0a, 0xbe, 0x1b,
+0x0f, 0x2b, 0x79, 0x36, 0xbb, 0x3b, 0x91, 0x39, 0x79, 0x2f, 0xe7, 0x1e, 0x96, 0x0a, 0xe2, 0xf5,
+0x8c, 0xe4, 0xf1, 0xd8, 0x4d, 0xd4, 0x03, 0xd6, 0x43, 0xdc, 0x4e, 0xe5, 0x1a, 0xef, 0x3c, 0xf9,
+0x6c, 0x03, 0x08, 0x0e, 0x72, 0x18, 0x2f, 0x21, 0x1d, 0x26, 0xab, 0x25, 0x69, 0x1f, 0x84, 0x14,
+0xb4, 0x07, 0x6c, 0xfb, 0x5a, 0xf2, 0x3c, 0xed, 0x18, 0xec, 0xb6, 0xed, 0x40, 0xf0, 0xba, 0xf2,
+0x92, 0xf4, 0x30, 0xf6, 0xd4, 0xf8, 0x02, 0xfd, 0xee, 0x02, 0x6c, 0x09, 0xbc, 0x0e, 0x5e, 0x11,
+0xfa, 0x10, 0x32, 0x0e, 0x84, 0x0a, 0x78, 0x07, 0x8e, 0x05, 0xf0, 0x04, 0x9e, 0x04, 0x86, 0x03,
+0xc8, 0x00, 0x48, 0xfc, 0x32, 0xf6, 0x20, 0xf0, 0x90, 0xeb, 0xe0, 0xe9, 0xe8, 0xeb, 0xfe, 0xf0,
+0x40, 0xf8, 0x4e, 0x00, 0xce, 0x07, 0x7e, 0x0e, 0x2a, 0x14, 0x98, 0x18, 0x8e, 0x1b, 0x3e, 0x1c,
+0x62, 0x1a, 0x54, 0x15, 0xf6, 0x0c, 0xc8, 0x01, 0x9a, 0xf4, 0x48, 0xe7, 0xd3, 0xdb, 0xcd, 0xd4,
+0xd9, 0xd3, 0x6b, 0xd9, 0xd0, 0xe4, 0x18, 0xf4, 0xc6, 0x04, 0xb6, 0x14, 0x2b, 0x22, 0xe5, 0x2b,
+0x45, 0x31, 0x99, 0x31, 0x43, 0x2d, 0x19, 0x24, 0x72, 0x16, 0xa6, 0x04, 0x32, 0xf0, 0x57, 0xdb,
+0x81, 0xc9, 0x55, 0xbe, 0x83, 0xbc, 0x11, 0xc5, 0x99, 0xd6, 0xf2, 0xed, 0x14, 0x07, 0x69, 0x1e,
+0x05, 0x31, 0xe9, 0x3d, 0xf7, 0x43, 0x97, 0x43, 0xb1, 0x3c, 0x65, 0x2f, 0x0e, 0x1c, 0x6e, 0x03,
+0x7e, 0xe7, 0x09, 0xcc, 0xaf, 0xb5, 0x38, 0xa9, 0xae, 0xa9, 0x41, 0xb7, 0xd9, 0xcf, 0x96, 0xee,
+0x46, 0x0e, 0x13, 0x2a, 0x8f, 0x3f, 0x3b, 0x4d, 0x29, 0x53, 0xcf, 0x50, 0x9d, 0x46, 0x7d, 0x34,
+0x16, 0x1b, 0xee, 0xfb, 0xf7, 0xd9, 0x83, 0xba, 0xd8, 0xa2, 0x3e, 0x98, 0xae, 0x9c, 0xf9, 0xaf,
+0x51, 0xce, 0x24, 0xf2, 0x84, 0x15, 0x05, 0x34, 0x59, 0x4b, 0x22, 0x5a, 0xb8, 0x5f, 0x78, 0x5b,
+0x55, 0x4d, 0xb3, 0x35, 0xe8, 0x15, 0xc0, 0xf0, 0xe5, 0xca, 0x44, 0xaa, 0x8a, 0x94, 0xda, 0x8d,
+0x4c, 0x97, 0x3b, 0xaf, 0xab, 0xd1, 0x36, 0xf8, 0x9f, 0x1d, 0x61, 0x3d, 0x2c, 0x55, 0xa4, 0x63,
+0x18, 0x67, 0x3a, 0x5f, 0x0b, 0x4c, 0xfd, 0x2e, 0xa4, 0x0a, 0x0b, 0xe3, 0x6b, 0xbd, 0xa8, 0x9f,
+0x52, 0x8e, 0xe8, 0x8b, 0xec, 0x98, 0x29, 0xb3, 0xc1, 0xd6, 0x0e, 0xfe, 0xd9, 0x23, 0xfd, 0x43,
+0xbe, 0x5b, 0x90, 0x68, 0x08, 0x69, 0xd4, 0x5c, 0xed, 0x44, 0x41, 0x24, 0x4e, 0xfe, 0xc5, 0xd7,
+0xb9, 0xb5, 0x90, 0x9c, 0xaa, 0x8f, 0xb4, 0x90, 0x5e, 0x9f, 0x51, 0xba, 0xcf, 0xdd, 0xec, 0x04,
+0x7d, 0x2a, 0xd7, 0x49, 0x96, 0x5f, 0xe6, 0x68, 0xa2, 0x64, 0x65, 0x53, 0xfd, 0x37, 0x4a, 0x16,
+0x72, 0xf2, 0x9b, 0xd0, 0x69, 0xb4, 0xda, 0xa0, 0xf4, 0x97, 0xcc, 0x9a, 0xc8, 0xa9, 0x17, 0xc4,
+0x80, 0xe6, 0x30, 0x0c, 0x9d, 0x2f, 0xf3, 0x4b, 0x66, 0x5d, 0xb2, 0x61, 0xc2, 0x58, 0xd1, 0x44,
+0x99, 0x29, 0xee, 0x0a, 0x6a, 0xec, 0xe1, 0xd0, 0x8b, 0xba, 0x3e, 0xab, 0x9e, 0xa4, 0xe2, 0xa7,
+0x57, 0xb6, 0x15, 0xcf, 0x44, 0xef, 0xf6, 0x11, 0x53, 0x31, 0xa5, 0x48, 0xa7, 0x54, 0x1d, 0x54,
+0x9d, 0x48, 0x15, 0x35, 0x11, 0x1d, 0x1a, 0x04, 0x1a, 0xec, 0x01, 0xd7, 0xdf, 0xc5, 0x15, 0xba,
+0xef, 0xb4, 0x75, 0xb8, 0x69, 0xc5, 0x87, 0xdb, 0x84, 0xf7, 0x72, 0x14, 0x51, 0x2d, 0xdf, 0x3d,
+0x57, 0x44, 0xc1, 0x40, 0x87, 0x35, 0x3b, 0x25, 0x08, 0x13, 0xbe, 0x00, 0xbc, 0xef, 0xfd, 0xe0,
+0xd5, 0xd4, 0x61, 0xcc, 0xeb, 0xc8, 0xdf, 0xcb, 0x5d, 0xd6, 0x68, 0xe7, 0x54, 0xfc, 0x32, 0x11,
+0x07, 0x22, 0x39, 0x2c, 0x01, 0x2f, 0x27, 0x2b, 0xc3, 0x22, 0xea, 0x17, 0x40, 0x0c, 0x34, 0x01,
+0x08, 0xf7, 0x78, 0xee, 0x44, 0xe7, 0xef, 0xe1, 0x4f, 0xdf, 0x3b, 0xe0, 0xb6, 0xe5, 0x00, 0xef,
+0xbe, 0xfa, 0x74, 0x06, 0xec, 0x0f, 0x9c, 0x15, 0x2e, 0x17, 0x7a, 0x15, 0x90, 0x11, 0xf6, 0x0c,
+0x6e, 0x08, 0xb8, 0x04, 0xf2, 0x01, 0xae, 0xff, 0x28, 0xfd, 0x12, 0xfa, 0x46, 0xf6, 0x96, 0xf2,
+0x30, 0xf0, 0x88, 0xef, 0x86, 0xf1, 0xfe, 0xf4, 0x18, 0xf9, 0xc8, 0xfc, 0x6a, 0xff, 0x52, 0x01,
+0x1e, 0x03, 0x48, 0x05, 0x74, 0x08, 0x9e, 0x0c, 0x02, 0x11, 0x82, 0x14, 0x52, 0x15, 0x42, 0x12,
+0xf6, 0x0a, 0x7e, 0x00, 0xf6, 0xf4, 0x02, 0xeb, 0x60, 0xe4, 0xb3, 0xe1, 0x6d, 0xe2, 0x8e, 0xe5,
+0x30, 0xea, 0x62, 0xf0, 0xe8, 0xf7, 0x62, 0x01, 0x6e, 0x0c, 0x60, 0x18, 0x7f, 0x23, 0x3f, 0x2b,
+0x19, 0x2d, 0x59, 0x27, 0x3c, 0x1a, 0xbc, 0x07, 0xb6, 0xf3, 0xd7, 0xe1, 0xeb, 0xd4, 0x0d, 0xce,
+0xeb, 0xcc, 0x65, 0xd0, 0xd1, 0xd7, 0xd1, 0xe2, 0x4c, 0xf1, 0xbe, 0x02, 0xfa, 0x15, 0xb5, 0x28,
+0x8b, 0x38, 0x83, 0x41, 0x5b, 0x41, 0xe1, 0x36, 0x33, 0x23, 0xe0, 0x09, 0x08, 0xef, 0x2d, 0xd7,
+0x93, 0xc5, 0xc7, 0xbb, 0x7d, 0xb9, 0x67, 0xbe, 0x6b, 0xc9, 0x55, 0xda, 0x5a, 0xf0, 0xb4, 0x09,
+0xf1, 0x23, 0xc1, 0x3b, 0x07, 0x4d, 0xab, 0x54, 0x61, 0x50, 0x57, 0x40, 0xd3, 0x26, 0xa6, 0x07,
+0x74, 0xe7, 0x0b, 0xcb, 0xe1, 0xb5, 0xf8, 0xa9, 0x1e, 0xa8, 0x57, 0xaf, 0xcf, 0xbf, 0xfb, 0xd7,
+0xd4, 0xf5, 0x1c, 0x16, 0xd3, 0x34, 0xe5, 0x4d, 0xce, 0x5d, 0xf6, 0x61, 0x5c, 0x59, 0x11, 0x45,
+0x6f, 0x27, 0x62, 0x04, 0x45, 0xe0, 0xf7, 0xbf, 0x0a, 0xa8, 0x38, 0x9b, 0x9c, 0x9a, 0x52, 0xa6,
+0xfb, 0xbc, 0x57, 0xdc, 0x60, 0x00, 0x65, 0x24, 0xe9, 0x43, 0x64, 0x5b, 0x00, 0x68, 0x3e, 0x68,
+0x1a, 0x5c, 0x97, 0x44, 0x23, 0x24, 0x20, 0xfe, 0x2d, 0xd7, 0xab, 0xb4, 0xcc, 0x9b, 0x4c, 0x90,
+0x6e, 0x93, 0xa6, 0xa4, 0x8b, 0xc1, 0xf8, 0xe5, 0xac, 0x0c, 0xa9, 0x30, 0x03, 0x4e, 0x0a, 0x62,
+0x3a, 0x6b, 0x84, 0x68, 0xf6, 0x59, 0x8f, 0x40, 0x45, 0x1e, 0x54, 0xf6, 0xcb, 0xcd, 0xec, 0xaa,
+0xc0, 0x93, 0xd0, 0x8b, 0x14, 0x94, 0xb2, 0xaa, 0xbf, 0xcb, 0xe8, 0xf1, 0x8e, 0x17, 0x5f, 0x38,
+0x9b, 0x51, 0xf4, 0x61, 0x04, 0x68, 0x54, 0x63, 0x7d, 0x53, 0x3f, 0x39, 0x56, 0x16, 0x26, 0xee,
+0x59, 0xc6, 0xba, 0xa5, 0x58, 0x92, 0x14, 0x8f, 0xdc, 0x9b, 0x87, 0xb5, 0x47, 0xd7, 0x98, 0xfb,
+0x8d, 0x1d, 0x13, 0x3a, 0x73, 0x4f, 0x8e, 0x5c, 0x74, 0x60, 0x32, 0x5a, 0x7d, 0x49, 0xcf, 0x2e,
+0x40, 0x0c, 0xc2, 0xe5, 0x7f, 0xc1, 0x12, 0xa6, 0x5c, 0x98, 0x24, 0x9a, 0x98, 0xa9, 0x63, 0xc3,
+0x8b, 0xe2, 0x54, 0x02, 0x4d, 0x1f, 0x45, 0x37, 0x01, 0x49, 0x69, 0x53, 0x40, 0x55, 0x8f, 0x4d,
+0x7d, 0x3c, 0xa1, 0x22, 0x88, 0x02, 0xbb, 0xe0, 0x95, 0xc2, 0xb1, 0xad, 0x4a, 0xa5, 0xe4, 0xa9,
+0xaf, 0xb9, 0xfd, 0xd0, 0xe2, 0xeb, 0xa8, 0x06, 0x61, 0x1e, 0x6d, 0x31, 0xf5, 0x3e, 0x81, 0x45,
+0x71, 0x44, 0x85, 0x3b, 0x0f, 0x2b, 0xd0, 0x14, 0x06, 0xfb, 0x59, 0xe1, 0xe7, 0xcb, 0xfb, 0xbd,
+0x75, 0xb9, 0xa3, 0xbe, 0xab, 0xcb, 0x0b, 0xde, 0xa4, 0xf2, 0xb6, 0x06, 0x42, 0x18, 0xe9, 0x25,
+0x95, 0x2e, 0xe5, 0x31, 0x7f, 0x2f, 0xe7, 0x27, 0x1a, 0x1c, 0xee, 0x0c, 0xfe, 0xfb, 0x3e, 0xeb,
+0x2d, 0xdd, 0x89, 0xd3, 0xeb, 0xcf, 0xc1, 0xd2, 0x97, 0xdb, 0x42, 0xe8, 0x9e, 0xf6, 0x4c, 0x04,
+0x88, 0x0f, 0x56, 0x17, 0x36, 0x1b, 0x88, 0x1b, 0x5e, 0x19, 0xa4, 0x15, 0xc4, 0x10, 0xda, 0x0a,
+0x8c, 0x03, 0x22, 0xfb, 0x80, 0xf2, 0x6c, 0xeb, 0x6a, 0xe7, 0x82, 0xe7, 0x46, 0xeb, 0x7c, 0xf1,
+0x2a, 0xf8, 0xdc, 0xfd, 0x78, 0x01, 0xd6, 0x02, 0xce, 0x02, 0xd4, 0x02, 0x32, 0x04, 0x60, 0x07,
+0x8a, 0x0b, 0x18, 0x0f, 0x3e, 0x10, 0x32, 0x0e, 0x5c, 0x09, 0x1a, 0x03, 0x72, 0xfd, 0x70, 0xf9,
+0x46, 0xf7, 0x04, 0xf6, 0xb6, 0xf4, 0x6a, 0xf2, 0x76, 0xef, 0x84, 0xec, 0x5a, 0xeb, 0xbc, 0xed,
+0x44, 0xf4, 0x98, 0xfe, 0xd4, 0x0a, 0x2c, 0x16, 0x57, 0x1e, 0xa9, 0x21, 0x09, 0x20, 0x9c, 0x1a,
+0xec, 0x12, 0x2e, 0x0a, 0xe0, 0x00, 0xd2, 0xf6, 0x32, 0xec, 0x03, 0xe2, 0x45, 0xd9, 0x63, 0xd4,
+0xb9, 0xd4, 0x83, 0xdb, 0xc0, 0xe8, 0xac, 0xfa, 0x88, 0x0e, 0x0b, 0x21, 0x07, 0x2f, 0x67, 0x36,
+0x9d, 0x36, 0x15, 0x30, 0x7f, 0x24, 0x3e, 0x15, 0x64, 0x03, 0x5e, 0xf0, 0x9d, 0xdd, 0x95, 0xcd,
+0xbf, 0xc2, 0xab, 0xbe, 0xcf, 0xc2, 0x21, 0xcf, 0x9d, 0xe2, 0x1a, 0xfb, 0x6e, 0x15, 0xb9, 0x2d,
+0xa9, 0x40, 0x21, 0x4b, 0xc1, 0x4b, 0xc9, 0x42, 0x6d, 0x31, 0x1e, 0x1a, 0x7e, 0xff, 0x68, 0xe4,
+0x4b, 0xcc, 0xfb, 0xb9, 0xb5, 0xaf, 0xbb, 0xae, 0xf1, 0xb6, 0x0b, 0xc8, 0x8f, 0xe0, 0x36, 0xfe,
+0x8b, 0x1d, 0xaf, 0x3a, 0x09, 0x51, 0x3c, 0x5d, 0xac, 0x5c, 0x59, 0x4f, 0x73, 0x37, 0x86, 0x18,
+0xe6, 0xf6, 0xfb, 0xd6, 0x9f, 0xbc, 0xb0, 0xaa, 0x94, 0xa2, 0x7c, 0xa4, 0x3d, 0xb0, 0x19, 0xc5,
+0xe1, 0xe1, 0xe0, 0x03, 0xa1, 0x27, 0x47, 0x48, 0xd2, 0x60, 0x4c, 0x6c, 0x54, 0x68, 0x3c, 0x55,
+0x95, 0x36, 0x8e, 0x11, 0xac, 0xeb, 0xfb, 0xc9, 0xf7, 0xaf, 0xee, 0x9f, 0x5a, 0x9a, 0x2e, 0x9f,
+0x15, 0xae, 0x87, 0xc6, 0x0c, 0xe7, 0xda, 0x0c, 0x85, 0x33, 0xa8, 0x55, 0x4e, 0x6d, 0x94, 0x75,
+0x74, 0x6c, 0xbf, 0x53, 0x67, 0x30, 0xaa, 0x08, 0x01, 0xe2, 0xe7, 0xc0, 0xae, 0xa8, 0xb4, 0x9a,
+0x7e, 0x97, 0xee, 0x9e, 0xe1, 0xb0, 0xe7, 0xcc, 0xd4, 0xf0, 0xd8, 0x18, 0xf7, 0x3f, 0x32, 0x60,
+0xbc, 0x73, 0xac, 0x76, 0x4a, 0x68, 0x09, 0x4c, 0x5d, 0x27, 0xe8, 0xff, 0xdb, 0xda, 0x0f, 0xbc,
+0x18, 0xa6, 0x80, 0x9a, 0xb0, 0x99, 0xec, 0xa3, 0x19, 0xb9, 0xbf, 0xd7, 0xf6, 0xfc, 0x45, 0x24,
+0x25, 0x48, 0x62, 0x63, 0x62, 0x71, 0x8a, 0x6f, 0xa8, 0x5e, 0xfb, 0x41, 0xbb, 0x1e, 0xe0, 0xf9,
+0x97, 0xd7, 0x7b, 0xbb, 0x50, 0xa8, 0x70, 0x9f, 0xa6, 0xa1, 0xe3, 0xae, 0x27, 0xc6, 0x66, 0xe5,
+0xa6, 0x08, 0x49, 0x2b, 0x3b, 0x49, 0xfe, 0x5d, 0xde, 0x66, 0x62, 0x62, 0x6f, 0x51, 0x13, 0x37,
+0x20, 0x17, 0xc0, 0xf5, 0xf1, 0xd6, 0x6d, 0xbe, 0x6d, 0xae, 0x20, 0xa9, 0x79, 0xae, 0xed, 0xbd,
+0x8b, 0xd5, 0xec, 0xf1, 0xce, 0x0f, 0x91, 0x2b, 0x3d, 0x42, 0x5d, 0x51, 0x1a, 0x57, 0x5f, 0x52,
+0x97, 0x43, 0xa5, 0x2c, 0xa0, 0x10, 0x9c, 0xf3, 0x57, 0xd9, 0x51, 0xc5, 0x31, 0xba, 0xc7, 0xb8,
+0xcf, 0xc0, 0x47, 0xd0, 0xba, 0xe4, 0x48, 0xfb, 0x42, 0x11, 0xe3, 0x24, 0xcb, 0x34, 0xa5, 0x3f,
+0xb9, 0x43, 0xff, 0x3f, 0x13, 0x34, 0x55, 0x21, 0x56, 0x0a, 0xe6, 0xf2, 0xdd, 0xde, 0x25, 0xd1,
+0x3b, 0xcb, 0x2b, 0xcd, 0x9d, 0xd5, 0x39, 0xe2, 0xa2, 0xf0, 0xe8, 0xfe, 0x62, 0x0c, 0x7e, 0x18,
+0xed, 0x22, 0xa3, 0x2a, 0x5b, 0x2e, 0x9f, 0x2c, 0x83, 0x24, 0x24, 0x17, 0xce, 0x06, 0xfe, 0xf6,
+0x74, 0xea, 0x29, 0xe3, 0x87, 0xe1, 0x7e, 0xe4, 0x40, 0xea, 0xba, 0xf0, 0xde, 0xf6, 0x30, 0xfc,
+0x46, 0x01, 0xd8, 0x06, 0xf2, 0x0c, 0x2c, 0x13, 0xb2, 0x17, 0x32, 0x19, 0xb2, 0x16, 0xb0, 0x10,
+0xf0, 0x08, 0x8e, 0x01, 0x74, 0xfc, 0x14, 0xfa, 0x0e, 0xfa, 0xd2, 0xfa, 0x2e, 0xfb, 0x1e, 0xfa,
+0xb6, 0xf7, 0xc8, 0xf4, 0x9e, 0xf2, 0xc2, 0xf2, 0xa8, 0xf5, 0xe2, 0xfa, 0x68, 0x01, 0xb2, 0x07,
+0xaa, 0x0c, 0xd2, 0x0f, 0x76, 0x11, 0x40, 0x12, 0x96, 0x12, 0x1e, 0x12, 0xac, 0x10, 0x56, 0x0d,
+0x96, 0x07, 0x86, 0xff, 0xb4, 0xf5, 0xa8, 0xeb, 0x3b, 0xe3, 0x4f, 0xde, 0x31, 0xde, 0x93, 0xe3,
+0x5c, 0xed, 0x2c, 0xfa, 0xe8, 0x07, 0x8e, 0x14, 0xe5, 0x1e, 0xc7, 0x25, 0x23, 0x29, 0xbf, 0x28,
+0x79, 0x24, 0x49, 0x1c, 0x60, 0x10, 0x6c, 0x01, 0x6c, 0xf0, 0x61, 0xdf, 0xcf, 0xd0, 0xcd, 0xc7,
+0x7d, 0xc6, 0xf7, 0xcd, 0x99, 0xdd, 0xc4, 0xf2, 0xe6, 0x09, 0x57, 0x1f, 0x25, 0x30, 0xf3, 0x3a,
+0x01, 0x3f, 0xa9, 0x3c, 0x5f, 0x34, 0xeb, 0x26, 0xcc, 0x14, 0x02, 0xff, 0x34, 0xe7, 0xf9, 0xcf,
+0xd3, 0xbc, 0xa5, 0xb1, 0xa1, 0xb1, 0xd5, 0xbd, 0xcb, 0xd4, 0x5e, 0xf2, 0x6e, 0x11, 0xd9, 0x2c,
+0x4b, 0x41, 0xf5, 0x4c, 0x11, 0x50, 0x05, 0x4b, 0x05, 0x3f, 0xab, 0x2c, 0x00, 0x15, 0x28, 0xf9,
+0x6b, 0xdb, 0x6f, 0xbf, 0xf0, 0xa9, 0xd6, 0x9f, 0xa6, 0xa3, 0xe9, 0xb5, 0xad, 0xd3, 0x98, 0xf7,
+0x48, 0x1b, 0x73, 0x39, 0xf3, 0x4e, 0x94, 0x5a, 0x84, 0x5c, 0x32, 0x55, 0x95, 0x45, 0xab, 0x2e,
+0x5c, 0x11, 0xa6, 0xef, 0xef, 0xcc, 0x61, 0xae, 0x80, 0x99, 0x84, 0x92, 0x7a, 0x9b, 0x6b, 0xb3,
+0x4b, 0xd6, 0xf8, 0xfd, 0x09, 0x24, 0x71, 0x43, 0x72, 0x59, 0xe0, 0x64, 0x5c, 0x65, 0x24, 0x5b,
+0x05, 0x47, 0x67, 0x2a, 0x72, 0x07, 0x7d, 0xe1, 0x3d, 0xbd, 0x62, 0xa0, 0xca, 0x8f, 0x4c, 0x8e,
+0x50, 0x9c, 0xd3, 0xb7, 0xd9, 0xdc, 0x4e, 0x05, 0x5d, 0x2b, 0x69, 0x4a, 0xfa, 0x5f, 0x56, 0x6a,
+0x86, 0x68, 0x8e, 0x5a, 0xe1, 0x41, 0x07, 0x21, 0x20, 0xfb, 0x9b, 0xd4, 0x9d, 0xb2, 0x4a, 0x9a,
+0xd6, 0x8e, 0x9a, 0x91, 0x46, 0xa2, 0xe5, 0xbe, 0xbd, 0xe3, 0x50, 0x0b, 0x71, 0x30, 0xc7, 0x4e,
+0x2a, 0x63, 0x4c, 0x6b, 0xe8, 0x65, 0xe5, 0x53, 0x69, 0x37, 0x3c, 0x14, 0x8e, 0xee, 0x25, 0xcb,
+0x55, 0xae, 0x8e, 0x9b, 0x7e, 0x94, 0xd4, 0x99, 0x2a, 0xab, 0x1d, 0xc7, 0x6c, 0xea, 0x88, 0x10,
+0x27, 0x34, 0x9b, 0x50, 0x30, 0x62, 0x80, 0x66, 0x0c, 0x5d, 0x8b, 0x47, 0x8b, 0x29, 0xa4, 0x07,
+0x12, 0xe6, 0x8f, 0xc8, 0x2f, 0xb2, 0x70, 0xa4, 0x6c, 0xa0, 0x82, 0xa6, 0x3d, 0xb7, 0x4b, 0xd1,
+0x4e, 0xf2, 0x68, 0x15, 0xa3, 0x35, 0x0d, 0x4e, 0xdc, 0x5a, 0x74, 0x5a, 0x9f, 0x4d, 0x61, 0x37,
+0x7a, 0x1b, 0x50, 0xfe, 0x1f, 0xe3, 0xbb, 0xcc, 0x4b, 0xbc, 0x73, 0xb2, 0x23, 0xb0, 0x25, 0xb6,
+0x2d, 0xc5, 0x5d, 0xdc, 0x50, 0xf9, 0xa8, 0x17, 0x71, 0x32, 0x0b, 0x45, 0x79, 0x4c, 0x8d, 0x48,
+0x05, 0x3b, 0xfd, 0x26, 0x64, 0x10, 0x2e, 0xfa, 0xa4, 0xe6, 0xe3, 0xd6, 0x71, 0xcb, 0xb3, 0xc4,
+0x65, 0xc3, 0x81, 0xc8, 0xa3, 0xd4, 0x62, 0xe7, 0x38, 0xfe, 0x8a, 0x15, 0xdd, 0x28, 0xfd, 0x34,
+0x1f, 0x38, 0x05, 0x33, 0xbb, 0x27, 0x30, 0x19, 0xd4, 0x09, 0x7a, 0xfb, 0x44, 0xef, 0x6e, 0xe5,
+0x43, 0xde, 0xa7, 0xd9, 0x9f, 0xd8, 0xa7, 0xdb, 0x4b, 0xe3, 0x04, 0xef, 0x8a, 0xfd, 0x30, 0x0c,
+0x18, 0x18, 0x4b, 0x1f, 0xe3, 0x20, 0xcf, 0x1d, 0x6e, 0x17, 0x7e, 0x0f, 0xa0, 0x07, 0xce, 0x00,
+0x28, 0xfb, 0x96, 0xf6, 0x10, 0xf3, 0x44, 0xf0, 0x5c, 0xee, 0x94, 0xed, 0x54, 0xee, 0x6c, 0xf1,
+0x5c, 0xf6, 0x4a, 0xfc, 0x20, 0x02, 0xc6, 0x06, 0x92, 0x09, 0x90, 0x0a, 0x3a, 0x0a, 0x6c, 0x09,
+0x24, 0x09, 0x7c, 0x09, 0x5a, 0x0a, 0x24, 0x0b, 0xda, 0x0a, 0x58, 0x08, 0x2a, 0x03, 0xb6, 0xfb,
+0x84, 0xf3, 0xaa, 0xec, 0x76, 0xe8, 0xc8, 0xe7, 0x10, 0xea, 0x5e, 0xee, 0x9e, 0xf3, 0x46, 0xf9,
+0x22, 0xff, 0xac, 0x05, 0x2e, 0x0d, 0x06, 0x15, 0x7f, 0x1c, 0xad, 0x21, 0xc1, 0x22, 0x33, 0x1e,
+0xb4, 0x13, 0x5a, 0x04, 0x0a, 0xf3, 0x57, 0xe3, 0xf3, 0xd7, 0x8f, 0xd2, 0x19, 0xd3, 0x77, 0xd8,
+0x2d, 0xe1, 0x10, 0xec, 0xae, 0xf8, 0xa8, 0x06, 0xc2, 0x15, 0x8b, 0x24, 0x07, 0x31, 0x8d, 0x38,
+0x91, 0x38, 0x59, 0x2f, 0xb5, 0x1d, 0x36, 0x06, 0x02, 0xed, 0x7f, 0xd6, 0x55, 0xc6, 0x61, 0xbe,
+0xbb, 0xbe, 0xe1, 0xc5, 0x2b, 0xd2, 0xc5, 0xe2, 0x54, 0xf6, 0x1a, 0x0c, 0x4f, 0x22, 0xd3, 0x36,
+0x1b, 0x46, 0x21, 0x4d, 0x39, 0x49, 0x49, 0x3a, 0x23, 0x22, 0x0c, 0x04, 0xe0, 0xe4, 0x99, 0xc9,
+0xfd, 0xb5, 0x5d, 0xac, 0xe1, 0xac, 0x4f, 0xb6, 0x5d, 0xc7, 0x77, 0xde, 0xb8, 0xf9, 0xe0, 0x16,
+0xf9, 0x32, 0x35, 0x4a, 0x28, 0x59, 0xb8, 0x5c, 0x99, 0x53, 0xeb, 0x3e, 0x53, 0x21, 0xca, 0xfe,
+0xef, 0xdb, 0x97, 0xbd, 0xea, 0xa7, 0x9c, 0x9d, 0x3a, 0x9f, 0xef, 0xab, 0xa3, 0xc2, 0xb3, 0xe0,
+0xce, 0x02, 0x31, 0x25, 0x9b, 0x43, 0x44, 0x5a, 0x06, 0x66, 0x02, 0x65, 0x42, 0x57, 0xad, 0x3e,
+0xef, 0x1d, 0x8e, 0xf8, 0x03, 0xd3, 0x87, 0xb2, 0xd6, 0x9b, 0xec, 0x91, 0x16, 0x96, 0xc0, 0xa7,
+0x9b, 0xc4, 0x04, 0xe9, 0xe4, 0x0f, 0xfd, 0x33, 0x45, 0x51, 0x76, 0x64, 0xba, 0x6b, 0x9c, 0x66,
+0xba, 0x55, 0xdb, 0x3a, 0x7a, 0x18, 0xb4, 0xf1, 0xe1, 0xca, 0xd2, 0xa9, 0x98, 0x93, 0x04, 0x8c,
+0x7c, 0x94, 0x5f, 0xab, 0x69, 0xcd, 0xea, 0xf4, 0x34, 0x1c, 0x23, 0x3e, 0x98, 0x57, 0x78, 0x66,
+0x06, 0x6a, 0x70, 0x62, 0x11, 0x50, 0xb5, 0x34, 0xc6, 0x11, 0x60, 0xea, 0xb1, 0xc3, 0xb8, 0xa3,
+0x04, 0x90, 0x72, 0x8c, 0x9c, 0x99, 0xc5, 0xb4, 0x3d, 0xd9, 0x68, 0x00, 0xbd, 0x24, 0xab, 0x42,
+0x66, 0x57, 0x54, 0x62, 0x20, 0x63, 0xd4, 0x59, 0x15, 0x47, 0xb7, 0x2b, 0xde, 0x08, 0xa3, 0xe2,
+0x4f, 0xbe, 0x06, 0xa2, 0x4e, 0x93, 0x0c, 0x95, 0xf8, 0xa5, 0xbf, 0xc2, 0xb8, 0xe5, 0xe6, 0x08,
+0x57, 0x28, 0xc5, 0x40, 0x3b, 0x51, 0xfc, 0x58, 0x08, 0x58, 0x17, 0x4e, 0x9f, 0x3b, 0xff, 0x20,
+0x66, 0x00, 0xb3, 0xdd, 0x25, 0xbe, 0x8c, 0xa7, 0x12, 0x9e, 0x2e, 0xa3, 0x2f, 0xb5, 0x27, 0xd0,
+0xf0, 0xee, 0xdc, 0x0c, 0x85, 0x26, 0x53, 0x3a, 0xff, 0x46, 0x05, 0x4c, 0x33, 0x49, 0xa1, 0x3e,
+0x53, 0x2c, 0x16, 0x14, 0x34, 0xf8, 0xf5, 0xdb, 0x3b, 0xc4, 0xe5, 0xb4, 0x5d, 0xb0, 0x67, 0xb7,
+0xcb, 0xc7, 0x0d, 0xde, 0xa2, 0xf6, 0xbe, 0x0d, 0x05, 0x21, 0x69, 0x2f, 0xcd, 0x37, 0x05, 0x3a,
+0x2d, 0x36, 0x33, 0x2c, 0x23, 0x1d, 0xdc, 0x0a, 0xb0, 0xf6, 0x41, 0xe3, 0x55, 0xd3, 0x11, 0xc9,
+0x57, 0xc6, 0xa7, 0xcb, 0x7f, 0xd7, 0xce, 0xe7, 0x8c, 0xf9, 0x2a, 0x0a, 0x8e, 0x17, 0x3f, 0x20,
+0x65, 0x24, 0x51, 0x24, 0x5f, 0x20, 0xa0, 0x19, 0x06, 0x11, 0x48, 0x07, 0xf0, 0xfc, 0x6e, 0xf2,
+0x9a, 0xe8, 0x41, 0xe1, 0xe3, 0xdd, 0x7b, 0xdf, 0x6c, 0xe5, 0x64, 0xee, 0x8e, 0xf8, 0xfa, 0x01,
+0x38, 0x09, 0x76, 0x0d, 0x7a, 0x0e, 0x6e, 0x0d, 0x96, 0x0b, 0x02, 0x0a, 0x4c, 0x09, 0xf2, 0x08,
+0xd6, 0x07, 0xa0, 0x04, 0x9c, 0xff, 0xea, 0xf9, 0xd0, 0xf5, 0x8a, 0xf3, 0x98, 0xf4, 0x5a, 0xf6,
+0xdc, 0xf6, 0x64, 0xf6, 0xca, 0xf5, 0x5a, 0xf7, 0x5c, 0xfb, 0x6a, 0x02, 0x22, 0x0b, 0xbc, 0x13,
+0x5a, 0x19, 0x96, 0x1a, 0x18, 0x17, 0xfc, 0x0f, 0xc2, 0x07, 0xb6, 0xff, 0x90, 0xf8, 0x50, 0xf2,
+0x58, 0xec, 0x60, 0xe6, 0x53, 0xe1, 0x4f, 0xde, 0x49, 0xdf, 0x5e, 0xe5, 0x9c, 0xf0, 0xbc, 0xff,
+0x90, 0x10, 0xef, 0x1f, 0xdb, 0x2a, 0x93, 0x2f, 0x33, 0x2d, 0x25, 0x25, 0xfa, 0x18, 0x6c, 0x0a,
+0x00, 0xfb, 0x98, 0xeb, 0xff, 0xdc, 0xe1, 0xd0, 0x09, 0xc9, 0x1b, 0xc7, 0x7b, 0xcc, 0x13, 0xd9,
+0xea, 0xeb, 0xa8, 0x02, 0x34, 0x1a, 0x09, 0x2f, 0xff, 0x3d, 0xb5, 0x44, 0x4d, 0x42, 0x5d, 0x37,
+0x9f, 0x25, 0x74, 0x0f, 0x24, 0xf7, 0x45, 0xdf, 0x7b, 0xca, 0x4b, 0xbb, 0x03, 0xb4, 0xb1, 0xb5,
+0x5b, 0xc0, 0x19, 0xd3, 0xf2, 0xeb, 0x0e, 0x08, 0x49, 0x24, 0x13, 0x3d, 0xdd, 0x4e, 0xfa, 0x56,
+0x6f, 0x53, 0x8b, 0x44, 0x3f, 0x2c, 0xe2, 0x0d, 0x80, 0xed, 0x7b, 0xcf, 0x87, 0xb7, 0x7a, 0xa8,
+0x10, 0xa4, 0xe0, 0xa9, 0x5b, 0xb9, 0xfb, 0xd0, 0x5a, 0xee, 0xb4, 0x0e, 0xc5, 0x2e, 0x8f, 0x4a,
+0x4e, 0x5e, 0x56, 0x66, 0xf2, 0x5f, 0xad, 0x4b, 0x75, 0x2c, 0x1c, 0x07, 0x7b, 0xe1, 0xdb, 0xc0,
+0x26, 0xa9, 0xa4, 0x9c, 0x66, 0x9b, 0x9c, 0xa4, 0x6b, 0xb7, 0x23, 0xd2, 0xc4, 0xf2, 0x7a, 0x16,
+0x9d, 0x39, 0x98, 0x57, 0x8a, 0x6b, 0xe0, 0x70, 0xa2, 0x65, 0x3b, 0x4b, 0x19, 0x26, 0xd6, 0xfc,
+0x83, 0xd5, 0x89, 0xb5, 0xe4, 0x9f, 0x22, 0x96, 0xcc, 0x97, 0x1a, 0xa4, 0xdf, 0xb9, 0xb3, 0xd7,
+0x56, 0xfb, 0x6b, 0x21, 0xdd, 0x45, 0x02, 0x63, 0xda, 0x73, 0x2a, 0x74, 0x40, 0x63, 0x0d, 0x44,
+0x30, 0x1c, 0x34, 0xf2, 0x4f, 0xcc, 0x05, 0xaf, 0xac, 0x9c, 0x16, 0x96, 0x9e, 0x9a, 0x78, 0xa9,
+0xb3, 0xc1, 0x99, 0xe1, 0x70, 0x06, 0x6d, 0x2c, 0xcb, 0x4e, 0x0a, 0x68, 0x96, 0x73, 0xc8, 0x6e,
+0x14, 0x5a, 0x4f, 0x39, 0x58, 0x12, 0xce, 0xea, 0x59, 0xc8, 0x57, 0xae, 0xe0, 0x9e, 0xc6, 0x9a,
+0xa0, 0xa1, 0x8f, 0xb2, 0xa7, 0xcc, 0x84, 0xed, 0x96, 0x11, 0xe5, 0x34, 0x31, 0x52, 0x7c, 0x65,
+0x76, 0x6b, 0x00, 0x63, 0x8f, 0x4d, 0xc9, 0x2e, 0x44, 0x0b, 0xf4, 0xe7, 0x6f, 0xc9, 0xe7, 0xb2,
+0x62, 0xa6, 0x98, 0xa4, 0x2d, 0xad, 0x9d, 0xbf, 0xd1, 0xd9, 0xf0, 0xf8, 0x10, 0x19, 0x5f, 0x36,
+0x05, 0x4d, 0x44, 0x5a, 0x9a, 0x5c, 0x81, 0x53, 0x8b, 0x40, 0x8d, 0x25, 0xa6, 0x06, 0xda, 0xe7,
+0xa1, 0xcd, 0xd7, 0xba, 0xd1, 0xb1, 0xcd, 0xb2, 0xa9, 0xbd, 0x8f, 0xd0, 0x7c, 0xe8, 0xa8, 0x02,
+0x6a, 0x1b, 0x83, 0x30, 0x15, 0x40, 0xdb, 0x48, 0xa3, 0x49, 0x4f, 0x42, 0x95, 0x32, 0x8b, 0x1c,
+0x14, 0x03, 0xec, 0xe9, 0x3d, 0xd5, 0xa9, 0xc7, 0x63, 0xc2, 0xf9, 0xc5, 0xfd, 0xd0, 0x3d, 0xe1,
+0x14, 0xf4, 0x72, 0x06, 0xe2, 0x16, 0x5f, 0x24, 0x33, 0x2e, 0x15, 0x34, 0x49, 0x35, 0x97, 0x30,
+0xe9, 0x25, 0xb0, 0x15, 0x80, 0x02, 0xf6, 0xef, 0x2b, 0xe1, 0x97, 0xd8, 0x47, 0xd7, 0x09, 0xdc,
+0x3a, 0xe5, 0x10, 0xf0, 0x92, 0xfa, 0xd4, 0x03, 0x80, 0x0b, 0x0e, 0x12, 0xd0, 0x17, 0xb5, 0x1c,
+0x69, 0x1f, 0xdf, 0x1e, 0xb2, 0x19, 0xa2, 0x10, 0x46, 0x05, 0x72, 0xfa, 0xac, 0xf2, 0x34, 0xef,
+0xd4, 0xef, 0xcc, 0xf2, 0x56, 0xf6, 0xe6, 0xf8, 0x16, 0xfa, 0x5e, 0xfa, 0xd2, 0xfa, 0x68, 0xfc,
+0xce, 0xff, 0xba, 0x04, 0x50, 0x0a, 0xea, 0x0e, 0x42, 0x11, 0xba, 0x10, 0x8c, 0x0e, 0xb6, 0x0b,
+0x9a, 0x09, 0x3c, 0x08, 0x00, 0x07, 0x16, 0x05, 0x40, 0x01, 0x96, 0xfb, 0xae, 0xf4, 0x0a, 0xee,
+0xec, 0xe8, 0xda, 0xe6, 0xa2, 0xe8, 0xa6, 0xee, 0x14, 0xf8, 0xf0, 0x02, 0xb6, 0x0d, 0x9a, 0x16,
+0x11, 0x1d, 0xab, 0x20, 0x73, 0x21, 0x91, 0x1f, 0xae, 0x1a, 0xe8, 0x12, 0x32, 0x08, 0x6c, 0xfb,
+0xb2, 0xed, 0xad, 0xe0, 0x6d, 0xd6, 0x09, 0xd1, 0x1f, 0xd2, 0x39, 0xda, 0xea, 0xe8, 0xae, 0xfb,
+0xa2, 0x0f, 0x93, 0x21, 0xfd, 0x2e, 0xfd, 0x36, 0x97, 0x38, 0x45, 0x34, 0xbf, 0x2a, 0xd3, 0x1c,
+0x96, 0x0b, 0x0e, 0xf8, 0xc6, 0xe3, 0x15, 0xd1, 0xb1, 0xc2, 0x07, 0xbb, 0x21, 0xbd, 0x8f, 0xc9,
+0x3d, 0xdf, 0xf8, 0xfa, 0x86, 0x17, 0xa1, 0x30, 0x97, 0x42, 0x91, 0x4b, 0x93, 0x4b, 0xb9, 0x43,
+0x07, 0x35, 0x77, 0x21, 0x1a, 0x0a, 0x5c, 0xf0, 0xb1, 0xd6, 0x89, 0xbf, 0xc1, 0xae, 0x0c, 0xa8,
+0xab, 0xad, 0x77, 0xc0, 0x15, 0xde, 0x80, 0x01, 0x5b, 0x24, 0x07, 0x41, 0xc5, 0x53, 0x9a, 0x5b,
+0xfe, 0x58, 0x2f, 0x4d, 0x6b, 0x3a, 0xe3, 0x21, 0x58, 0x05, 0x4e, 0xe6, 0xe7, 0xc7, 0x23, 0xae,
+0x7e, 0x9d, 0xb6, 0x99, 0xac, 0xa4, 0x0b, 0xbe, 0xab, 0xe1, 0x92, 0x09, 0xed, 0x2e, 0x7f, 0x4c,
+0x42, 0x5f, 0x4e, 0x66, 0xf8, 0x61, 0xb1, 0x53, 0x23, 0x3d, 0xd1, 0x1f, 0x1e, 0xfe, 0xaf, 0xda,
+0x95, 0xb9, 0x04, 0xa0, 0x16, 0x92, 0x16, 0x93, 0xac, 0xa3, 0xb9, 0xc1, 0xea, 0xe8, 0xb0, 0x12,
+0x61, 0x38, 0x58, 0x55, 0xe6, 0x66, 0xfc, 0x6b, 0x38, 0x65, 0x6d, 0x53, 0xc7, 0x38, 0x96, 0x17,
+0x54, 0xf2, 0x4d, 0xcd, 0x47, 0xad, 0x38, 0x97, 0x84, 0x8e, 0xae, 0x94, 0x20, 0xa9, 0x81, 0xc9,
+0xd2, 0xf0, 0x62, 0x19, 0xb5, 0x3d, 0x58, 0x59, 0xac, 0x69, 0x10, 0x6d, 0x9e, 0x63, 0xa3, 0x4e,
+0x5f, 0x30, 0xfe, 0x0b, 0xc8, 0xe5, 0x7d, 0xc2, 0xea, 0xa6, 0x7e, 0x96, 0xf2, 0x92, 0xa8, 0x9c,
+0x67, 0xb2, 0xe3, 0xd1, 0x6e, 0xf7, 0x05, 0x1e, 0x9b, 0x40, 0x9c, 0x5a, 0xae, 0x68, 0x36, 0x69,
+0x4a, 0x5c, 0xc1, 0x43, 0x43, 0x23, 0xf8, 0xfe, 0x95, 0xdb, 0xbd, 0xbd, 0x6e, 0xa8, 0xb6, 0x9d,
+0xe4, 0x9d, 0xbe, 0xa8, 0xb7, 0xbd, 0x0f, 0xdb, 0x80, 0xfd, 0xe3, 0x20, 0x1f, 0x40, 0x8c, 0x56,
+0x16, 0x61, 0xf0, 0x5d, 0x21, 0x4e, 0x8b, 0x34, 0x02, 0x15, 0x96, 0xf4, 0x4f, 0xd7, 0x53, 0xc0,
+0x51, 0xb1, 0xe6, 0xaa, 0xf1, 0xac, 0xab, 0xb7, 0x99, 0xca, 0x6e, 0xe4, 0xec, 0x02, 0xa9, 0x21,
+0x39, 0x3c, 0xff, 0x4d, 0x1d, 0x54, 0xcf, 0x4d, 0xe1, 0x3c, 0xc5, 0x24, 0xe8, 0x09, 0x68, 0xf0,
+0xe1, 0xda, 0xfb, 0xca, 0x15, 0xc1, 0x1b, 0xbd, 0x4f, 0xbf, 0xdb, 0xc7, 0xeb, 0xd6, 0xe8, 0xeb,
+0x9e, 0x04, 0x65, 0x1d, 0x0b, 0x32, 0xab, 0x3e, 0x03, 0x41, 0xab, 0x39, 0x9f, 0x2a, 0xba, 0x17,
+0x56, 0x04, 0xea, 0xf2, 0x02, 0xe5, 0xed, 0xda, 0x75, 0xd4, 0x99, 0xd1, 0xdd, 0xd2, 0x61, 0xd8,
+0xe3, 0xe2, 0x84, 0xf1, 0xea, 0x02, 0x50, 0x14, 0x35, 0x22, 0x05, 0x2a, 0xb1, 0x2a, 0xf5, 0x24,
+0xe0, 0x1a, 0x0e, 0x0f, 0x96, 0x03, 0xee, 0xf9, 0x82, 0xf2, 0x00, 0xed, 0x58, 0xe9, 0x28, 0xe7,
+0xc2, 0xe6, 0x54, 0xe8, 0x76, 0xec, 0x22, 0xf3, 0xbc, 0xfb, 0xdc, 0x04, 0xa0, 0x0c, 0xa4, 0x11,
+0x42, 0x13, 0xe6, 0x11, 0x9c, 0x0e, 0xb6, 0x0a, 0x18, 0x07, 0x84, 0x04, 0xee, 0x02, 0xce, 0x01,
+0x74, 0x00, 0x34, 0xfe, 0xc0, 0xfa, 0x98, 0xf6, 0x40, 0xf2, 0x36, 0xef, 0x5a, 0xee, 0x0a, 0xf0,
+0xb2, 0xf3, 0x74, 0xf8, 0x52, 0xfd, 0xde, 0x01, 0xf4, 0x05, 0xb4, 0x09, 0xbe, 0x0d, 0xb4, 0x11,
+0x78, 0x15, 0xcc, 0x17, 0x7e, 0x17, 0x3e, 0x13, 0xb0, 0x0a, 0x7a, 0xfe, 0xd4, 0xf0, 0x64, 0xe4,
+0xcd, 0xdb, 0xad, 0xd8, 0x17, 0xdb, 0xeb, 0xe1, 0x56, 0xeb, 0x10, 0xf6, 0x1e, 0x01, 0x54, 0x0c,
+0x60, 0x17, 0xd7, 0x21, 0x63, 0x2a, 0x21, 0x2f, 0xd7, 0x2d, 0x3f, 0x25, 0x8a, 0x15, 0x76, 0x00,
+0xce, 0xe9, 0xa5, 0xd5, 0xc5, 0xc7, 0x69, 0xc2, 0x41, 0xc5, 0xff, 0xce, 0x39, 0xdd, 0x12, 0xee,
+0x1a, 0x00, 0xb8, 0x12, 0x9f, 0x24, 0x95, 0x34, 0xfd, 0x3f, 0x23, 0x44, 0x4b, 0x3f, 0x3f, 0x30,
+0xe6, 0x18, 0x38, 0xfc, 0x09, 0xdf, 0x15, 0xc6, 0x91, 0xb5, 0x45, 0xaf, 0x8b, 0xb3, 0x4b, 0xc0,
+0x41, 0xd3, 0x66, 0xea, 0xc8, 0x03, 0x6b, 0x1d, 0x71, 0x35, 0x9d, 0x48, 0x41, 0x54, 0x4e, 0x55,
+0x8b, 0x4a, 0xdb, 0x34, 0xd0, 0x16, 0x98, 0xf4, 0xff, 0xd2, 0x77, 0xb7, 0xa4, 0xa5, 0x12, 0xa0,
+0xfc, 0xa5, 0x5b, 0xb6, 0x9b, 0xce, 0x3e, 0xec, 0x6e, 0x0c, 0xed, 0x2b, 0x51, 0x47, 0xc0, 0x5a,
+0x46, 0x63, 0x0a, 0x5f, 0x93, 0x4e, 0xb5, 0x33, 0xb0, 0x11, 0x84, 0xec, 0xfd, 0xc8, 0x19, 0xac,
+0xd8, 0x99, 0xb6, 0x94, 0x10, 0x9d, 0x85, 0xb1, 0x95, 0xcf, 0x80, 0xf3, 0xf4, 0x18, 0x61, 0x3b,
+0x68, 0x56, 0xc6, 0x66, 0x7e, 0x6a, 0x5c, 0x61, 0xb5, 0x4c, 0x1d, 0x2f, 0x5a, 0x0b, 0x30, 0xe5,
+0xeb, 0xc0, 0xac, 0xa3, 0xf0, 0x91, 0x88, 0x8e, 0x10, 0x9a, 0x47, 0xb3, 0x97, 0xd6, 0xc2, 0xfe,
+0x29, 0x26, 0xa9, 0x47, 0x8e, 0x5f, 0x66, 0x6b, 0xa0, 0x6a, 0xf2, 0x5d, 0x53, 0x47, 0xe5, 0x28,
+0xe6, 0x04, 0x97, 0xde, 0x8b, 0xba, 0x0a, 0x9e, 0xec, 0x8d, 0x84, 0x8d, 0x66, 0x9d, 0x35, 0xbb,
+0xf9, 0xe1, 0x42, 0x0b, 0xf9, 0x30, 0x8f, 0x4e, 0x5c, 0x61, 0x66, 0x68, 0x2e, 0x64, 0x0c, 0x56,
+0x4b, 0x3f, 0x69, 0x21, 0x3e, 0xfe, 0xb7, 0xd8, 0x15, 0xb6, 0x1a, 0x9c, 0xba, 0x8f, 0xd8, 0x93,
+0xf8, 0xa7, 0x37, 0xc8, 0xcc, 0xee, 0x06, 0x15, 0xb7, 0x35, 0xc3, 0x4d, 0x82, 0x5b, 0xfe, 0x5e,
+0x08, 0x59, 0x63, 0x4a, 0x43, 0x34, 0x88, 0x17, 0x0e, 0xf6, 0x9f, 0xd3, 0x4d, 0xb5, 0x96, 0xa0,
+0xc4, 0x99, 0x14, 0xa2, 0xe3, 0xb7, 0x01, 0xd7, 0x7a, 0xf9, 0xec, 0x19, 0x67, 0x34, 0xbb, 0x46,
+0x73, 0x50, 0xa1, 0x51, 0xd1, 0x4a, 0xf3, 0x3c, 0x51, 0x28, 0x44, 0x0e, 0x0a, 0xf1, 0xff, 0xd3,
+0xc9, 0xbb, 0xcf, 0xac, 0xda, 0xa9, 0x7d, 0xb3, 0xc9, 0xc7, 0x7f, 0xe2, 0xf6, 0xfe, 0xcc, 0x18,
+0x31, 0x2d, 0xb1, 0x3a, 0xdd, 0x40, 0xff, 0x3f, 0xc5, 0x38, 0xcf, 0x2b, 0x4e, 0x1a, 0x80, 0x05,
+0x48, 0xef, 0x73, 0xda, 0xd9, 0xc9, 0x3b, 0xc0, 0x5b, 0xbf, 0x75, 0xc7, 0xa1, 0xd6, 0x60, 0xea,
+0x2a, 0xff, 0x1e, 0x12, 0xdd, 0x20, 0x49, 0x2a, 0x07, 0x2e, 0x95, 0x2c, 0x7f, 0x26, 0xa3, 0x1c,
+0x36, 0x10, 0x5a, 0x02, 0x58, 0xf4, 0x78, 0xe7, 0x47, 0xdd, 0xcd, 0xd6, 0x55, 0xd5, 0x65, 0xd9,
+0x73, 0xe2, 0xc6, 0xee, 0x4e, 0xfc, 0xd2, 0x08, 0x0a, 0x12, 0x6e, 0x17, 0xb0, 0x18, 0xdc, 0x16,
+0xce, 0x12, 0x1c, 0x0e, 0x72, 0x09, 0x1c, 0x05, 0x98, 0x00, 0x30, 0xfb, 0x3e, 0xf5, 0x5c, 0xef,
+0x7a, 0xeb, 0x7c, 0xea, 0xe4, 0xec, 0xc4, 0xf1, 0xc6, 0xf7, 0x0e, 0xfd, 0x62, 0x00, 0x6e, 0x01,
+0x1a, 0x01, 0x98, 0x00, 0x7e, 0x01, 0x40, 0x04, 0x00, 0x09, 0xdc, 0x0d, 0x36, 0x11, 0x26, 0x11,
+0x60, 0x0d, 0xd8, 0x06, 0x32, 0xff, 0x84, 0xf8, 0x86, 0xf3, 0x6e, 0xf0, 0x30, 0xee, 0x2e, 0xec,
+0x0a, 0xea, 0xc2, 0xe8, 0x9a, 0xe9, 0xc0, 0xed, 0xf0, 0xf5, 0x68, 0x01, 0xb6, 0x0e, 0x46, 0x1b,
+0x1f, 0x24, 0x5d, 0x27, 0x51, 0x24, 0xde, 0x1b, 0xfc, 0x0f, 0xec, 0x02, 0xfe, 0xf5, 0x34, 0xea,
+0xb9, 0xdf, 0x29, 0xd7, 0xbd, 0xd1, 0xd5, 0xd0, 0x9f, 0xd5, 0x7b, 0xe0, 0x9a, 0xf0, 0x50, 0x04,
+0xe6, 0x18, 0x09, 0x2b, 0xe7, 0x37, 0x15, 0x3d, 0xcb, 0x39, 0xb9, 0x2e, 0xbb, 0x1d, 0x56, 0x09,
+0xec, 0xf3, 0x57, 0xdf, 0x9d, 0xcd, 0xd5, 0xc0, 0xab, 0xba, 0xc5, 0xbc, 0x2b, 0xc7, 0x33, 0xd9,
+0xd4, 0xf0, 0x3e, 0x0b, 0xd7, 0x24, 0xc3, 0x3a, 0xab, 0x49, 0x8f, 0x4f, 0xf1, 0x4a, 0x4b, 0x3c,
+0x51, 0x25, 0x42, 0x09, 0x80, 0xeb, 0xe9, 0xcf, 0x2b, 0xba, 0xbd, 0xac, 0x94, 0xa9, 0x61, 0xb0,
+0xaf, 0xc0, 0x43, 0xd8, 0xe0, 0xf4, 0x48, 0x13, 0x5d, 0x30, 0xd3, 0x48, 0x6a, 0x59, 0x50, 0x5f,
+0x46, 0x58, 0xcd, 0x44, 0x0d, 0x27, 0x56, 0x03, 0x3d, 0xdf, 0xa7, 0xbf, 0x00, 0xa9, 0xa4, 0x9d,
+0xfa, 0x9d, 0x36, 0xa9, 0xd7, 0xbd, 0x8b, 0xd9, 0xce, 0xf9, 0x8a, 0x1b, 0x69, 0x3b, 0x16, 0x56,
+0x58, 0x67, 0x76, 0x6b, 0x5c, 0x60, 0xbb, 0x46, 0x73, 0x22, 0x22, 0xf9, 0x59, 0xd1, 0xff, 0xb0,
+0x38, 0x9c, 0x6e, 0x94, 0x20, 0x99, 0x5e, 0xa8, 0x45, 0xc0, 0xaf, 0xde, 0xda, 0x00, 0x3f, 0x24,
+0x59, 0x45, 0x56, 0x60, 0x1a, 0x70, 0xc6, 0x70, 0x7c, 0x60, 0x69, 0x41, 0xb2, 0x18, 0x08, 0xed,
+0x7b, 0xc5, 0x9a, 0xa7, 0x60, 0x96, 0x22, 0x92, 0xb4, 0x99, 0x3c, 0xab, 0x45, 0xc5, 0xa4, 0xe5,
+0xc0, 0x09, 0x25, 0x2e, 0x19, 0x4f, 0xac, 0x67, 0x54, 0x73, 0xac, 0x6e, 0xb6, 0x59, 0xa9, 0x37,
+0x34, 0x0e, 0x1a, 0xe4, 0x8b, 0xbf, 0x68, 0xa5, 0xc4, 0x97, 0x78, 0x96, 0x48, 0xa0, 0x9d, 0xb3,
+0xf1, 0xce, 0xec, 0xef, 0x6e, 0x13, 0xe3, 0x35, 0xf9, 0x52, 0x8c, 0x66, 0x9c, 0x6c, 0xa4, 0x63,
+0x9f, 0x4c, 0x61, 0x2b, 0x06, 0x05, 0x63, 0xdf, 0xc7, 0xbf, 0xca, 0xa9, 0x4c, 0x9f, 0x04, 0xa0,
+0x0a, 0xab, 0x51, 0xbf, 0xcb, 0xda, 0xf6, 0xfa, 0xfa, 0x1b, 0x3b, 0x3a, 0xa7, 0x51, 0x14, 0x5f,
+0x70, 0x60, 0x1a, 0x55, 0x2b, 0x3f, 0x43, 0x21, 0xf8, 0xff, 0x9f, 0xdf, 0xd3, 0xc4, 0xa1, 0xb2,
+0xca, 0xaa, 0x43, 0xad, 0x63, 0xb9, 0xd5, 0xcd, 0xf4, 0xe7, 0xae, 0x04, 0x3b, 0x20, 0x4f, 0x37,
+0xbd, 0x47, 0x83, 0x4f, 0x3d, 0x4e, 0x2f, 0x44, 0xf9, 0x31, 0xe8, 0x19, 0x92, 0xfe, 0xd8, 0xe3,
+0x9f, 0xcd, 0x09, 0xbf, 0x7f, 0xb9, 0xc5, 0xbd, 0x93, 0xca, 0xad, 0xdd, 0x48, 0xf4, 0xa4, 0x0a,
+0x43, 0x1e, 0x57, 0x2d, 0x17, 0x37, 0x5d, 0x3b, 0x25, 0x3a, 0x17, 0x33, 0x55, 0x26, 0x86, 0x14,
+0xb8, 0xff, 0x10, 0xeb, 0x11, 0xda, 0xa3, 0xcf, 0x25, 0xcd, 0x73, 0xd2, 0xd7, 0xdd, 0x98, 0xec,
+0xca, 0xfb, 0x50, 0x09, 0x2c, 0x14, 0x1a, 0x1c, 0xa1, 0x21, 0xeb, 0x24, 0xb9, 0x25, 0x09, 0x23,
+0x2e, 0x1c, 0xf8, 0x10, 0x26, 0x03, 0x78, 0xf5, 0x8a, 0xea, 0xc8, 0xe4, 0x98, 0xe4, 0xde, 0xe8,
+0xbc, 0xef, 0xe2, 0xf6, 0xa2, 0xfc, 0xe0, 0x00, 0xbe, 0x03, 0x48, 0x06, 0x68, 0x09, 0x58, 0x0d,
+0x5e, 0x11, 0x14, 0x14, 0x38, 0x14, 0x38, 0x11, 0xe4, 0x0b, 0xc2, 0x05, 0xc2, 0x00, 0xba, 0xfd,
+0xd2, 0xfc, 0xd4, 0xfc, 0x74, 0xfc, 0x96, 0xfa, 0x36, 0xf7, 0x32, 0xf3, 0x16, 0xf0, 0x26, 0xef,
+0x6c, 0xf1, 0x1c, 0xf7, 0x54, 0xff, 0x58, 0x08, 0x44, 0x10, 0x38, 0x16, 0x2e, 0x19, 0x02, 0x1a,
+0xe6, 0x18, 0x4c, 0x16, 0x12, 0x12, 0xcc, 0x0b, 0x4e, 0x03, 0xf8, 0xf8, 0x1a, 0xee, 0x0a, 0xe4,
+0xb5, 0xdc, 0x8d, 0xd9, 0xa3, 0xdb, 0xa1, 0xe3, 0x86, 0xf0, 0xb4, 0x00, 0x64, 0x11, 0x49, 0x20,
+0x2b, 0x2b, 0xd7, 0x30, 0x23, 0x31, 0xfd, 0x2b, 0x47, 0x22, 0xec, 0x14, 0xe6, 0x04, 0xac, 0xf3,
+0x7d, 0xe2, 0x81, 0xd3, 0x81, 0xc8, 0x85, 0xc3, 0x83, 0xc6, 0xff, 0xd1, 0x8e, 0xe5, 0x4a, 0xfe,
+0x92, 0x18, 0x91, 0x2f, 0x33, 0x40, 0xb9, 0x47, 0x59, 0x46, 0x17, 0x3d, 0x75, 0x2d, 0xfc, 0x19,
+0xde, 0x03, 0x06, 0xed, 0xf7, 0xd6, 0xe3, 0xc3, 0x55, 0xb6, 0x17, 0xb1, 0x49, 0xb6, 0x37, 0xc7,
+0x15, 0xe2, 0x4e, 0x03, 0xb5, 0x24, 0xc3, 0x40, 0xfb, 0x52, 0xb2, 0x59, 0x1c, 0x55, 0x63, 0x47,
+0xef, 0x32, 0x34, 0x1a, 0x5e, 0xff, 0xa3, 0xe3, 0xaf, 0xc9, 0xaf, 0xb3, 0x92, 0xa5, 0x5e, 0xa2,
+0x63, 0xac, 0x0d, 0xc4, 0x30, 0xe6, 0x5c, 0x0d, 0xb7, 0x32, 0xfb, 0x4f, 0x76, 0x61, 0x1e, 0x66,
+0x84, 0x5e, 0x6f, 0x4d, 0x4d, 0x35, 0x7e, 0x18, 0x1e, 0xf9, 0x15, 0xd9, 0x7b, 0xbb, 0x72, 0xa4,
+0xc4, 0x97, 0xd6, 0x98, 0xe2, 0xa8, 0x93, 0xc6, 0xd2, 0xed, 0xc0, 0x17, 0xcd, 0x3d, 0x36, 0x5a,
+0x1e, 0x6a, 0xae, 0x6c, 0xe6, 0x62, 0xe1, 0x4e, 0x39, 0x33, 0x5a, 0x12, 0xc4, 0xee, 0xc1, 0xcb,
+0x8f, 0xad, 0xd8, 0x98, 0xe4, 0x90, 0xec, 0x97, 0x5d, 0xad, 0xd3, 0xce, 0x76, 0xf7, 0xb9, 0x20,
+0xe7, 0x44, 0x62, 0x5f, 0x66, 0x6d, 0x30, 0x6e, 0x58, 0x62, 0x9f, 0x4b, 0xf7, 0x2c, 0xe4, 0x08,
+0x43, 0xe3, 0x69, 0xc0, 0x0c, 0xa5, 0x28, 0x95, 0xc6, 0x92, 0x4a, 0x9e, 0x51, 0xb6, 0xff, 0xd7,
+0xcc, 0xfe, 0x8f, 0x25, 0x29, 0x47, 0xbe, 0x5f, 0x00, 0x6c, 0xe6, 0x6a, 0xaa, 0x5c, 0x57, 0x43,
+0x3b, 0x22, 0xec, 0xfc, 0x51, 0xd8, 0x1d, 0xb9, 0x60, 0xa3, 0x78, 0x99, 0xd6, 0x9b, 0xa0, 0xa9,
+0xab, 0xc1, 0xfd, 0xe0, 0x8e, 0x04, 0xfb, 0x27, 0xa7, 0x46, 0x9a, 0x5c, 0x96, 0x66, 0xaa, 0x62,
+0xf5, 0x51, 0xaf, 0x36, 0xe4, 0x14, 0x98, 0xf1, 0x35, 0xd1, 0x57, 0xb8, 0x20, 0xa9, 0x76, 0xa4,
+0x82, 0xa9, 0x91, 0xb7, 0x45, 0xcd, 0x02, 0xe9, 0x20, 0x08, 0x33, 0x27, 0x01, 0x42, 0x35, 0x54,
+0xd0, 0x5a, 0x4d, 0x54, 0x05, 0x42, 0x5b, 0x27, 0xbe, 0x08, 0xf4, 0xea, 0xff, 0xd1, 0x65, 0xc0,
+0x25, 0xb7, 0x9f, 0xb5, 0x79, 0xbb, 0x81, 0xc7, 0x65, 0xd9, 0x20, 0xf0, 0xaa, 0x09, 0x47, 0x23,
+0xf9, 0x38, 0xa7, 0x46, 0x87, 0x49, 0x7d, 0x41, 0xf7, 0x2f, 0x0a, 0x19, 0xd2, 0x00, 0x18, 0xeb,
+0x5b, 0xda, 0x5d, 0xcf, 0x2f, 0xca, 0x1b, 0xca, 0x8f, 0xce, 0x31, 0xd7, 0xfe, 0xe3, 0x96, 0xf4,
+0xa2, 0x07, 0x82, 0x1a, 0x0d, 0x2a, 0xeb, 0x32, 0x8d, 0x33, 0x11, 0x2c, 0xe1, 0x1e, 0xfe, 0x0e,
+0x6c, 0xff, 0x54, 0xf2, 0xc2, 0xe8, 0xe5, 0xe2, 0x23, 0xe0, 0xf9, 0xdf, 0x19, 0xe2, 0x72, 0xe6,
+0xe4, 0xec, 0xea, 0xf5, 0xde, 0x00, 0x2e, 0x0c, 0xa6, 0x15, 0x6a, 0x1b, 0x43, 0x1c, 0xe6, 0x18,
+0x76, 0x12, 0xca, 0x0a, 0xb4, 0x03, 0x1a, 0xfe, 0x4e, 0xfa, 0xfc, 0xf7, 0xd4, 0xf6, 0xf8, 0xf5,
+0xf0, 0xf4, 0xc4, 0xf3, 0xd2, 0xf2, 0xf6, 0xf2, 0xee, 0xf4, 0xac, 0xf8, 0x78, 0xfd, 0x3a, 0x02,
+0x3c, 0x06, 0xd6, 0x08, 0x50, 0x0a, 0x06, 0x0b, 0x96, 0x0b, 0x60, 0x0c, 0x66, 0x0d, 0x02, 0x0e,
+0x42, 0x0d, 0x7c, 0x0a, 0xda, 0x04, 0x8c, 0xfc, 0xc8, 0xf2, 0x8a, 0xe9, 0x49, 0xe3, 0x65, 0xe1,
+0x14, 0xe4, 0xa2, 0xea, 0x74, 0xf3, 0x10, 0xfd, 0x52, 0x06, 0xc4, 0x0e, 0x64, 0x16, 0x25, 0x1d,
+0x2b, 0x22, 0xa3, 0x24, 0x3f, 0x23, 0xc1, 0x1c, 0x80, 0x10, 0x72, 0xff, 0x12, 0xec, 0x39, 0xda,
+0x83, 0xcd, 0xb5, 0xc8, 0x2b, 0xcc, 0x65, 0xd6, 0xfe, 0xe4, 0x5c, 0xf5, 0xe6, 0x05, 0x92, 0x15,
+0xa3, 0x23, 0x89, 0x2f, 0xdf, 0x37, 0xe1, 0x3a, 0x8f, 0x36, 0x01, 0x2a, 0xca, 0x15, 0xd6, 0xfb,
+0x55, 0xe0, 0x83, 0xc8, 0xd9, 0xb8, 0xb7, 0xb3, 0x73, 0xb9, 0x81, 0xc7, 0x59, 0xdb, 0xf2, 0xf1,
+0xf2, 0x08, 0x1d, 0x1f, 0x01, 0x33, 0xe5, 0x42, 0x5f, 0x4c, 0xef, 0x4c, 0x75, 0x43, 0xb9, 0x2f,
+0x9c, 0x13, 0x08, 0xf3, 0x97, 0xd2, 0xe1, 0xb7, 0x56, 0xa7, 0x34, 0xa3, 0x18, 0xab, 0x17, 0xbd,
+0xd7, 0xd5, 0x9a, 0xf2, 0x4c, 0x10, 0x85, 0x2c, 0xa9, 0x44, 0xe6, 0x55, 0x96, 0x5d, 0x54, 0x59,
+0x31, 0x49, 0xd1, 0x2e, 0x54, 0x0d, 0xe6, 0xe8, 0x61, 0xc6, 0x02, 0xab, 0xea, 0x9a, 0xbe, 0x97,
+0xa6, 0xa1, 0xd7, 0xb6, 0x81, 0xd4, 0x32, 0xf7, 0xae, 0x1a, 0x35, 0x3b, 0x1e, 0x55, 0x04, 0x65,
+0x4e, 0x68, 0x60, 0x5e, 0xa9, 0x48, 0xff, 0x29, 0xb8, 0x05, 0x15, 0xe0, 0x6b, 0xbd, 0x3e, 0xa2,
+0xa4, 0x92, 0xd4, 0x90, 0x4a, 0x9d, 0xb3, 0xb6, 0xb7, 0xd9, 0x70, 0x01, 0x85, 0x28, 0xfb, 0x49,
+0xb6, 0x61, 0xd6, 0x6c, 0x90, 0x6a, 0x8c, 0x5b, 0x5d, 0x42, 0x53, 0x22, 0x06, 0xfe, 0xe3, 0xd8,
+0xe1, 0xb6, 0x96, 0x9c, 0x5a, 0x8e, 0xde, 0x8e, 0xfc, 0x9e, 0xd5, 0xbc, 0x02, 0xe4, 0x28, 0x0e,
+0x25, 0x35, 0x99, 0x53, 0x92, 0x66, 0x60, 0x6c, 0x58, 0x65, 0x9d, 0x53, 0xbb, 0x39, 0x34, 0x1a,
+0x42, 0xf7, 0xa5, 0xd3, 0x5d, 0xb3, 0x0a, 0x9b, 0x5a, 0x8f, 0x50, 0x93, 0x18, 0xa7, 0x35, 0xc8,
+0x9a, 0xf0, 0xac, 0x19, 0xf3, 0x3c, 0x58, 0x56, 0xaa, 0x63, 0xd4, 0x64, 0x50, 0x5b, 0x29, 0x49,
+0x4d, 0x30, 0x90, 0x12, 0xcc, 0xf1, 0x5f, 0xd0, 0xe9, 0xb2, 0x16, 0x9e, 0x62, 0x96, 0x2a, 0x9e,
+0xa9, 0xb4, 0x0b, 0xd6, 0x12, 0xfc, 0x0d, 0x20, 0x05, 0x3d, 0x4f, 0x50, 0x18, 0x59, 0xb4, 0x57,
+0x91, 0x4d, 0x8f, 0x3c, 0xdf, 0x25, 0xc4, 0x0a, 0x0a, 0xed, 0xcb, 0xcf, 0x37, 0xb7, 0x48, 0xa7,
+0xd6, 0xa3, 0x11, 0xae, 0x71, 0xc4, 0x79, 0xe2, 0xd2, 0x02, 0xef, 0x1f, 0xb5, 0x36, 0xf1, 0x44,
+0x7f, 0x4a, 0xd7, 0x47, 0x19, 0x3e, 0x95, 0x2e, 0x74, 0x1a, 0x4a, 0x03, 0x0c, 0xeb, 0x73, 0xd4,
+0x93, 0xc2, 0xcd, 0xb8, 0xa7, 0xb8, 0x0d, 0xc3, 0xa7, 0xd5, 0x1e, 0xed, 0x48, 0x05, 0x96, 0x1a,
+0x83, 0x2a, 0x03, 0x34, 0xdf, 0x36, 0xa3, 0x33, 0x2b, 0x2b, 0xcd, 0x1e, 0xc0, 0x0f, 0xfa, 0xfe,
+0x84, 0xee, 0xd3, 0xdf, 0x95, 0xd4, 0x59, 0xce, 0x93, 0xce, 0x69, 0xd5, 0xd3, 0xe1, 0x92, 0xf1,
+0x0c, 0x02, 0xca, 0x10, 0x98, 0x1b, 0x33, 0x21, 0xf1, 0x21, 0xc3, 0x1e, 0xa0, 0x18, 0xca, 0x10,
+0x5c, 0x08, 0x58, 0x00, 0x1a, 0xf9, 0x56, 0xf2, 0x6e, 0xec, 0xe4, 0xe7, 0xa4, 0xe5, 0xb0, 0xe6,
+0x1e, 0xeb, 0x16, 0xf2, 0x68, 0xfa, 0x34, 0x02, 0xfa, 0x07, 0xfc, 0x0a, 0x50, 0x0b, 0xe6, 0x09,
+0xfe, 0x07, 0xd2, 0x06, 0x08, 0x07, 0x26, 0x08, 0x08, 0x09, 0x5c, 0x08, 0x00, 0x05, 0x5a, 0xff,
+0xe6, 0xf8, 0x28, 0xf3, 0x92, 0xef, 0x60, 0xee, 0x0c, 0xef, 0x8e, 0xf0, 0xf2, 0xf1, 0xe6, 0xf2,
+0x0a, 0xf4, 0xb4, 0xf6, 0xd6, 0xfb, 0x62, 0x03, 0xda, 0x0c, 0x7a, 0x16, 0x7b, 0x1d, 0xc1, 0x1f,
+0x3c, 0x1c, 0xd6, 0x13, 0x6e, 0x08, 0x56, 0xfc, 0x7a, 0xf1, 0xd4, 0xe8, 0x99, 0xe2, 0x67, 0xde,
+0xf5, 0xdb, 0x2b, 0xdc, 0xfd, 0xdf, 0x30, 0xe8, 0xfa, 0xf4, 0x4a, 0x05, 0xf8, 0x16, 0xc3, 0x26,
+0xa9, 0x31, 0x75, 0x35, 0x4f, 0x31, 0x11, 0x26, 0xcc, 0x15, 0x04, 0x03, 0x36, 0xf0, 0x45, 0xdf,
+0x87, 0xd1, 0x1d, 0xc8, 0x0f, 0xc4, 0x6b, 0xc6, 0x97, 0xcf, 0x79, 0xdf, 0x9c, 0xf4, 0x6a, 0x0c,
+0xef, 0x23, 0xe1, 0x37, 0xe5, 0x44, 0xe7, 0x48, 0x37, 0x43, 0x67, 0x34, 0x75, 0x1e, 0x2c, 0x04,
+0x38, 0xe9, 0xa1, 0xd0, 0x8f, 0xbd, 0x07, 0xb2, 0xa5, 0xaf, 0xb7, 0xb6, 0xcb, 0xc6, 0xb9, 0xdd,
+0x3e, 0xf9, 0x30, 0x16, 0x1b, 0x31, 0xf1, 0x46, 0xc4, 0x54, 0x7e, 0x58, 0x8d, 0x50, 0x77, 0x3d,
+0x55, 0x21, 0xf6, 0xff, 0xbf, 0xdd, 0xdf, 0xbf, 0x46, 0xaa, 0xfc, 0x9f, 0x8c, 0xa1, 0x3d, 0xae,
+0x11, 0xc4, 0x6d, 0xe0, 0x20, 0x00, 0xd1, 0x1f, 0xad, 0x3c, 0xdd, 0x53, 0x34, 0x62, 0x8c, 0x64,
+0x8a, 0x59, 0x2d, 0x41, 0x77, 0x1e, 0x38, 0xf6, 0xf7, 0xce, 0xdb, 0xae, 0x6a, 0x9a, 0xc4, 0x93,
+0x5c, 0x9a, 0x47, 0xac, 0x8d, 0xc6, 0x08, 0xe6, 0xb2, 0x07, 0xed, 0x28, 0xb3, 0x46, 0x04, 0x5e,
+0x46, 0x6b, 0x18, 0x6b, 0xa6, 0x5b, 0xe9, 0x3d, 0x14, 0x16, 0x52, 0xea, 0xe1, 0xc1, 0x4a, 0xa3,
+0x68, 0x92, 0xf8, 0x8f, 0x98, 0x9a, 0x59, 0xaf, 0xbf, 0xcb, 0xb4, 0xec, 0x84, 0x0f, 0x3b, 0x31,
+0x01, 0x4f, 0x3a, 0x65, 0xb2, 0x6f, 0x30, 0x6b, 0xd2, 0x56, 0x19, 0x35, 0xdc, 0x0a, 0x4d, 0xdf,
+0x47, 0xb9, 0x9e, 0x9e, 0xe0, 0x91, 0xf2, 0x92, 0xe6, 0x9f, 0x3b, 0xb6, 0x8b, 0xd3, 0xe2, 0xf4,
+0xa8, 0x17, 0xe1, 0x38, 0xce, 0x54, 0x88, 0x67, 0x4e, 0x6d, 0x1c, 0x64, 0x5d, 0x4c, 0x3d, 0x29,
+0x5a, 0x00, 0x25, 0xd8, 0xb7, 0xb6, 0x70, 0xa0, 0x36, 0x97, 0x76, 0x9a, 0xd6, 0xa8, 0xdd, 0xbf,
+0x49, 0xdd, 0x5c, 0xfe, 0xab, 0x1f, 0xf7, 0x3d, 0x6e, 0x55, 0xd0, 0x62, 0x84, 0x63, 0xf2, 0x56,
+0xb5, 0x3e, 0x05, 0x1e, 0xa0, 0xf9, 0xc3, 0xd6, 0x91, 0xba, 0x64, 0xa8, 0xe8, 0xa1, 0xc0, 0xa6,
+0x95, 0xb5, 0x81, 0xcc, 0xd6, 0xe8, 0x5e, 0x07, 0x81, 0x24, 0x25, 0x3d, 0x2d, 0x4e, 0xa0, 0x55,
+0xc7, 0x52, 0xef, 0x45, 0xc9, 0x30, 0x7e, 0x15, 0xa4, 0xf7, 0x31, 0xdb, 0x43, 0xc4, 0xd3, 0xb5,
+0x7d, 0xb1, 0x4f, 0xb7, 0x2f, 0xc6, 0xb3, 0xdb, 0xa2, 0xf4, 0xde, 0x0d, 0x09, 0x24, 0xd7, 0x34,
+0xf1, 0x3e, 0x03, 0x42, 0x4b, 0x3e, 0x41, 0x34, 0x6f, 0x24, 0xfa, 0x0f, 0x0a, 0xf9, 0x0f, 0xe3,
+0x63, 0xd1, 0xd7, 0xc6, 0xcf, 0xc4, 0x5f, 0xcb, 0xbb, 0xd8, 0x6c, 0xea, 0x34, 0xfd, 0x5a, 0x0e,
+0x00, 0x1c, 0x51, 0x25, 0x65, 0x2a, 0xb5, 0x2b, 0xcf, 0x29, 0x57, 0x24, 0xe6, 0x1a, 0xac, 0x0d,
+0x26, 0xfe, 0xd0, 0xee, 0x81, 0xe2, 0x91, 0xdb, 0x13, 0xdb, 0x8f, 0xe0, 0x14, 0xea, 0x2e, 0xf5,
+0x66, 0xff, 0x70, 0x07, 0xee, 0x0c, 0x4a, 0x10, 0x96, 0x12, 0xa8, 0x14, 0x4a, 0x16, 0x8c, 0x16,
+0x5e, 0x14, 0x22, 0x0f, 0x6c, 0x07, 0xe6, 0xfe, 0xdc, 0xf7, 0xa6, 0xf3, 0xfe, 0xf2, 0xe6, 0xf4,
+0xba, 0xf7, 0xf8, 0xf9, 0xe2, 0xfa, 0x54, 0xfa, 0x3a, 0xf9, 0xec, 0xf8, 0x80, 0xfa, 0x8e, 0xfe,
+0xa8, 0x04, 0x6c, 0x0b, 0x0e, 0x11, 0x44, 0x14, 0xb4, 0x14, 0xba, 0x12, 0x94, 0x0f, 0x3e, 0x0c,
+0xb2, 0x08, 0x8c, 0x04, 0x1a, 0xff, 0x88, 0xf8, 0x14, 0xf1, 0x00, 0xea, 0x94, 0xe4, 0x55, 0xe2,
+0x88, 0xe4, 0x84, 0xeb, 0xa4, 0xf6, 0x20, 0x04, 0x1a, 0x12, 0xe1, 0x1d, 0xd9, 0x25, 0x1f, 0x29,
+0xdd, 0x27, 0x97, 0x22, 0xbc, 0x19, 0x22, 0x0e, 0x7e, 0x00, 0x2a, 0xf2, 0x5c, 0xe4, 0x51, 0xd8,
+0xfb, 0xcf, 0xdf, 0xcc, 0x73, 0xd0, 0xff, 0xda, 0x2a, 0xec, 0xa6, 0x01, 0x58, 0x18, 0x71, 0x2c,
+0x75, 0x3a, 0x9f, 0x40, 0x73, 0x3e, 0x21, 0x35, 0xf7, 0x25, 0x3a, 0x13, 0x9a, 0xfe, 0xd6, 0xe9,
+0xc5, 0xd6, 0xf1, 0xc6, 0x73, 0xbc, 0x33, 0xb9, 0xfd, 0xbe, 0x81, 0xce, 0xc0, 0xe6, 0xc8, 0x04,
+0xa3, 0x23, 0x1d, 0x3e, 0x61, 0x4f, 0x68, 0x55, 0x2d, 0x50, 0xb3, 0x41, 0xa9, 0x2c, 0xe4, 0x13,
+0xba, 0xf9, 0xff, 0xdf, 0xeb, 0xc8, 0x87, 0xb6, 0x4d, 0xab, 0x90, 0xa9, 0x35, 0xb3, 0xf5, 0xc8,
+0xc0, 0xe8, 0x18, 0x0e, 0x71, 0x32, 0x95, 0x4f, 0xd6, 0x60, 0x66, 0x64, 0x2c, 0x5b, 0xf1, 0x47,
+0x43, 0x2e, 0xf8, 0x10, 0x8a, 0xf2, 0x1b, 0xd5, 0x49, 0xbb, 0xdc, 0xa7, 0x9a, 0x9d, 0x32, 0x9f,
+0x47, 0xae, 0x65, 0xca, 0x0a, 0xf0, 0x66, 0x19, 0x6d, 0x3f, 0x2a, 0x5c, 0xd2, 0x6b, 0x0c, 0x6d,
+0x12, 0x61, 0xdd, 0x4a, 0xd9, 0x2d, 0xee, 0x0c, 0xb4, 0xea, 0x23, 0xca, 0xa9, 0xae, 0xd2, 0x9b,
+0xa4, 0x94, 0x56, 0x9b, 0x7b, 0xb0, 0xeb, 0xd1, 0xf2, 0xfa, 0x1d, 0x25, 0x29, 0x4a, 0xca, 0x64,
+0xd8, 0x71, 0x3e, 0x70, 0x7a, 0x61, 0x67, 0x48, 0x5d, 0x28, 0x76, 0x04, 0xc3, 0xdf, 0x41, 0xbe,
+0x2c, 0xa4, 0x04, 0x95, 0x4e, 0x93, 0xbc, 0x9f, 0x67, 0xb9, 0xe9, 0xdc, 0x4e, 0x05, 0xe3, 0x2c,
+0x81, 0x4e, 0x0a, 0x66, 0x86, 0x70, 0xf0, 0x6c, 0x4a, 0x5c, 0x69, 0x41, 0x87, 0x1f, 0x14, 0xfa,
+0x2f, 0xd5, 0x99, 0xb5, 0xbe, 0x9f, 0x34, 0x96, 0x18, 0x9a, 0x94, 0xaa, 0x7b, 0xc5, 0x74, 0xe7,
+0x26, 0x0c, 0x8b, 0x2f, 0x5b, 0x4d, 0x14, 0x62, 0x8e, 0x6a, 0x62, 0x65, 0x45, 0x53, 0xe7, 0x36,
+0x26, 0x14, 0x4a, 0xef, 0x69, 0xcd, 0x07, 0xb3, 0x8a, 0xa3, 0xf0, 0x9f, 0xa2, 0xa7, 0xe1, 0xb8,
+0x97, 0xd1, 0x46, 0xef, 0x08, 0x0f, 0xe5, 0x2d, 0x31, 0x48, 0x14, 0x5a, 0x4c, 0x60, 0x2c, 0x59,
+0xcd, 0x45, 0x37, 0x29, 0x06, 0x08, 0x48, 0xe7, 0x97, 0xcb, 0x6b, 0xb8, 0x3b, 0xaf, 0xd7, 0xaf,
+0x99, 0xb8, 0x13, 0xc8, 0x97, 0xdc, 0x04, 0xf5, 0x88, 0x0f, 0x93, 0x29, 0x9d, 0x3f, 0xcd, 0x4d,
+0xfd, 0x50, 0x0d, 0x48, 0xa9, 0x34, 0x74, 0x1a, 0x3c, 0xfe, 0x9a, 0xe4, 0xe1, 0xd0, 0xeb, 0xc4,
+0xad, 0xc0, 0x17, 0xc3, 0xe1, 0xca, 0xd9, 0xd6, 0x52, 0xe6, 0xe0, 0xf8, 0x50, 0x0d, 0x6b, 0x21,
+0x1b, 0x32, 0xf5, 0x3b, 0xcf, 0x3c, 0x37, 0x34, 0x07, 0x24, 0xe8, 0x0f, 0xa4, 0xfb, 0x9a, 0xea,
+0x95, 0xde, 0x2b, 0xd8, 0x65, 0xd6, 0x6d, 0xd8, 0x4f, 0xdd, 0x82, 0xe4, 0x02, 0xee, 0xac, 0xf9,
+0xfe, 0x06, 0x46, 0x14, 0x2f, 0x1f, 0x5b, 0x25, 0xa3, 0x25, 0xe5, 0x1f, 0xdc, 0x15, 0x00, 0x0a,
+0xea, 0xfe, 0x3c, 0xf6, 0xd0, 0xf0, 0x12, 0xee, 0x66, 0xed, 0xce, 0xed, 0xf4, 0xee, 0xba, 0xf0,
+0x16, 0xf3, 0xbe, 0xf6, 0xba, 0xfb, 0xc8, 0x01, 0xa8, 0x07, 0x72, 0x0c, 0x2a, 0x0f, 0x6e, 0x0f,
+0xa8, 0x0d, 0xbe, 0x0a, 0x08, 0x08, 0x12, 0x06, 0xfc, 0x04, 0x60, 0x04, 0x9c, 0x03, 0xe0, 0x01,
+0xbc, 0xfe, 0xe6, 0xf9, 0xfa, 0xf3, 0x48, 0xee, 0xc2, 0xea, 0x6e, 0xea, 0xd4, 0xed, 0x1e, 0xf4,
+0x08, 0xfc, 0xf8, 0x03, 0xb6, 0x0a, 0x48, 0x10, 0x9c, 0x14, 0x06, 0x18, 0x2c, 0x1a, 0xc0, 0x1a,
+0xd8, 0x18, 0xaa, 0x13, 0x6e, 0x0a, 0x78, 0xfd, 0x46, 0xee, 0xc1, 0xdf, 0x45, 0xd5, 0x77, 0xd1,
+0x05, 0xd5, 0xe7, 0xde, 0xf6, 0xec, 0x4a, 0xfc, 0xf0, 0x0a, 0xc6, 0x17, 0x4f, 0x22, 0x61, 0x2a,
+0x71, 0x2f, 0xa3, 0x30, 0x89, 0x2c, 0x43, 0x22, 0x66, 0x11, 0x6a, 0xfb, 0x7d, 0xe3, 0xcb, 0xcd,
+0x3b, 0xbf, 0x6f, 0xba, 0x21, 0xc0, 0x7b, 0xce, 0x7d, 0xe2, 0xa8, 0xf8, 0x1a, 0x0e, 0x69, 0x21,
+0x75, 0x31, 0x7f, 0x3d, 0x33, 0x44, 0xdf, 0x43, 0x45, 0x3b, 0xb7, 0x29, 0x9e, 0x10, 0x96, 0xf2,
+0x4b, 0xd4, 0x0b, 0xbb, 0x3e, 0xab, 0xda, 0xa7, 0x7b, 0xb0, 0x67, 0xc3, 0xe1, 0xdc, 0x3c, 0xf9,
+0x0c, 0x15, 0x25, 0x2e, 0xdb, 0x42, 0xf9, 0x50, 0xba, 0x56, 0x2f, 0x52, 0xdb, 0x42, 0xc9, 0x29,
+0x7e, 0x09, 0x22, 0xe6, 0xdf, 0xc4, 0xba, 0xaa, 0xec, 0x9b, 0x7c, 0x9a, 0x3a, 0xa6, 0x01, 0xbd,
+0x83, 0xdb, 0x64, 0xfd, 0xcd, 0x1e, 0xa3, 0x3c, 0xbf, 0x53, 0x8c, 0x61, 0x92, 0x63, 0x30, 0x59,
+0x4d, 0x43, 0x7f, 0x24, 0x62, 0x00, 0x3d, 0xdb, 0xdd, 0xb9, 0xac, 0xa0, 0x54, 0x93, 0xa0, 0x93,
+0xae, 0xa1, 0xe3, 0xbb, 0x97, 0xde, 0x08, 0x05, 0x77, 0x2a, 0x4f, 0x4a, 0x1a, 0x61, 0x84, 0x6b,
+0x48, 0x68, 0x1c, 0x58, 0xa7, 0x3d, 0x2e, 0x1c, 0x56, 0xf7, 0xf9, 0xd2, 0xcd, 0xb2, 0x1c, 0x9b,
+0x30, 0x8f, 0x2e, 0x91, 0xde, 0xa1, 0x8d, 0xbf, 0x30, 0xe6, 0x14, 0x10, 0xff, 0x36, 0x16, 0x56,
+0x68, 0x69, 0xc8, 0x6e, 0x4c, 0x66, 0x2d, 0x52, 0xc3, 0x35, 0x2c, 0x14, 0x6c, 0xf0, 0x71, 0xcd,
+0x15, 0xaf, 0xf0, 0x98, 0xd0, 0x8e, 0x6c, 0x93, 0x4a, 0xa7, 0x71, 0xc8, 0xb8, 0xf1, 0x3e, 0x1c,
+0x59, 0x41, 0x42, 0x5c, 0x02, 0x6a, 0xec, 0x69, 0xa0, 0x5d, 0xe3, 0x47, 0xeb, 0x2b, 0x36, 0x0c,
+0xe6, 0xea, 0xc1, 0xca, 0xfd, 0xae, 0x9a, 0x9b, 0x82, 0x94, 0x3a, 0x9c, 0xe1, 0xb2, 0xb3, 0xd5,
+0x40, 0xfe, 0x91, 0x25, 0x7d, 0x45, 0x28, 0x5a, 0x24, 0x62, 0x28, 0x5e, 0x3b, 0x50, 0x35, 0x3b,
+0x5b, 0x21, 0x8c, 0x04, 0xcc, 0xe6, 0x6f, 0xca, 0xd7, 0xb2, 0xda, 0xa3, 0xdc, 0xa0, 0x87, 0xab,
+0x45, 0xc3, 0x02, 0xe4, 0xfa, 0x07, 0x9b, 0x28, 0x4f, 0x41, 0xc3, 0x4f, 0xcf, 0x53, 0x3d, 0x4e,
+0x43, 0x41, 0xb7, 0x2e, 0x58, 0x18, 0xac, 0xff, 0x80, 0xe6, 0x39, 0xcf, 0xe7, 0xbc, 0x83, 0xb2,
+0x8f, 0xb2, 0xd7, 0xbd, 0xd5, 0xd2, 0x16, 0xee, 0x74, 0x0a, 0x41, 0x23, 0x3f, 0x35, 0x21, 0x3f,
+0xc7, 0x40, 0x4f, 0x3b, 0x19, 0x30, 0xa7, 0x20, 0xb2, 0x0e, 0xa6, 0xfb, 0x24, 0xe9, 0x3b, 0xd9,
+0x53, 0xcd, 0x53, 0xc7, 0x8d, 0xc8, 0x1f, 0xd1, 0xfd, 0xdf, 0xf2, 0xf2, 0xa8, 0x06, 0xea, 0x17,
+0x79, 0x24, 0x61, 0x2b, 0x57, 0x2c, 0x17, 0x28, 0x9d, 0x1f, 0xa6, 0x14, 0x70, 0x08, 0x5c, 0xfc,
+0x64, 0xf1, 0x38, 0xe8, 0xd3, 0xe1, 0xed, 0xdd, 0x61, 0xdd, 0xcd, 0xe0, 0x3e, 0xe8, 0xd6, 0xf2,
+0xc2, 0xfe, 0xd0, 0x09, 0xe8, 0x11, 0x1e, 0x16, 0x64, 0x16, 0x3e, 0x13, 0x94, 0x0e, 0xa0, 0x09,
+0x82, 0x05, 0x80, 0x02, 0x3a, 0x00, 0xf8, 0xfd, 0xb4, 0xfa, 0x88, 0xf6, 0x1e, 0xf2, 0xe6, 0xee,
+0x06, 0xee, 0xf2, 0xef, 0x28, 0xf4, 0xbc, 0xf8, 0x84, 0xfc, 0xd2, 0xfe, 0xa4, 0xff, 0x2c, 0x00,
+0x80, 0x01, 0xd4, 0x04, 0xd4, 0x09, 0x9c, 0x0f, 0x3a, 0x14, 0xe6, 0x15, 0x2e, 0x13, 0xfe, 0x0b,
+0x02, 0x02, 0x62, 0xf7, 0x54, 0xee, 0x72, 0xe8, 0x72, 0xe5, 0xa4, 0xe4, 0x36, 0xe5, 0x06, 0xe7,
+0x92, 0xea, 0xa2, 0xf0, 0xf4, 0xf9, 0x02, 0x06, 0xa0, 0x13, 0x1b, 0x20, 0x43, 0x29, 0x8d, 0x2c,
+0xbd, 0x28, 0x3f, 0x1e, 0xca, 0x0e, 0x74, 0xfd, 0xc4, 0xec, 0xdd, 0xde, 0xcf, 0xd4, 0xe5, 0xce,
+0x57, 0xcd, 0x97, 0xd0, 0xf9, 0xd8, 0xb6, 0xe6, 0x9a, 0xf8, 0x36, 0x0d, 0x57, 0x21, 0x73, 0x32,
+0x91, 0x3d, 0x99, 0x40, 0x9d, 0x3a, 0x11, 0x2c, 0x6a, 0x17, 0x54, 0xff, 0x3a, 0xe7, 0xe9, 0xd1,
+0xf7, 0xc1, 0xed, 0xb8, 0xd7, 0xb7, 0x09, 0xbf, 0x2d, 0xce, 0xd2, 0xe3, 0xa4, 0xfd, 0x34, 0x18,
+0xb9, 0x30, 0xef, 0x43, 0x75, 0x4f, 0x59, 0x51, 0x8b, 0x48, 0xdf, 0x35, 0x5e, 0x1b, 0x52, 0xfc,
+0xb1, 0xdc, 0x37, 0xc1, 0x91, 0xad, 0x86, 0xa4, 0xe8, 0xa6, 0x03, 0xb4, 0x37, 0xca, 0x94, 0xe6,
+0x78, 0x05, 0xa3, 0x23, 0xd7, 0x3d, 0xcd, 0x51, 0x20, 0x5d, 0xac, 0x5d, 0x1f, 0x52, 0x21, 0x3b,
+0xbe, 0x1a, 0x02, 0xf5, 0x7b, 0xcf, 0x2b, 0xb0, 0x2e, 0x9c, 0xfc, 0x95, 0x2c, 0x9d, 0x21, 0xb0,
+0xab, 0xcb, 0x16, 0xec, 0xa4, 0x0d, 0x25, 0x2d, 0x2f, 0x48, 0x5e, 0x5c, 0x20, 0x67, 0xa0, 0x65,
+0x90, 0x56, 0x65, 0x3a, 0x16, 0x14, 0x24, 0xe9, 0x89, 0xc0, 0x64, 0xa1, 0x7e, 0x90, 0xfe, 0x8e,
+0x7a, 0x9b, 0xaf, 0xb2, 0x33, 0xd1, 0x08, 0xf3, 0x22, 0x15, 0xb3, 0x34, 0x7b, 0x4f, 0x06, 0x63,
+0xca, 0x6b, 0x36, 0x67, 0xb3, 0x53, 0xd3, 0x32, 0xc4, 0x08, 0x27, 0xdc, 0xad, 0xb4, 0x02, 0x99,
+0xda, 0x8c, 0xf2, 0x8f, 0xfe, 0x9f, 0x83, 0xb9, 0x09, 0xd9, 0x3a, 0xfb, 0x09, 0x1d, 0xf7, 0x3b,
+0x86, 0x55, 0x78, 0x66, 0x7a, 0x6b, 0x34, 0x62, 0x63, 0x4a, 0xd3, 0x26, 0x90, 0xfc, 0x5f, 0xd2,
+0x55, 0xaf, 0xca, 0x98, 0xde, 0x90, 0xd8, 0x96, 0x52, 0xa8, 0x2d, 0xc2, 0x6b, 0xe1, 0xc4, 0x02,
+0x4f, 0x23, 0x5f, 0x40, 0xd0, 0x56, 0x78, 0x63, 0xd8, 0x63, 0xb4, 0x56, 0x57, 0x3d, 0xe6, 0x1a,
+0x4e, 0xf4, 0x7f, 0xcf, 0xf7, 0xb1, 0xe0, 0x9f, 0xca, 0x9a, 0x1a, 0xa2, 0x93, 0xb3, 0xe5, 0xcc,
+0xd0, 0xea, 0x3e, 0x0a, 0xf7, 0x27, 0xd9, 0x40, 0x09, 0x52, 0x4e, 0x59, 0x64, 0x55, 0xcf, 0x46,
+0x21, 0x2f, 0x34, 0x11, 0x10, 0xf1, 0xbb, 0xd2, 0xcd, 0xba, 0x8b, 0xac, 0x7c, 0xa9, 0x1f, 0xb1,
+0x2f, 0xc2, 0xed, 0xd9, 0x5a, 0xf5, 0xec, 0x10, 0x1d, 0x29, 0x6f, 0x3b, 0x1f, 0x46, 0x43, 0x48,
+0x8f, 0x42, 0x93, 0x35, 0xb7, 0x22, 0x8e, 0x0b, 0x98, 0xf2, 0xcf, 0xda, 0x05, 0xc8, 0xfd, 0xbc,
+0x55, 0xbb, 0x4d, 0xc3, 0xc1, 0xd2, 0x90, 0xe7, 0xfa, 0xfd, 0xd2, 0x12, 0x55, 0x23, 0x4f, 0x2e,
+0x3f, 0x33, 0xdf, 0x32, 0x35, 0x2e, 0x7d, 0x25, 0x52, 0x19, 0xe2, 0x09, 0x6e, 0xf8, 0x60, 0xe7,
+0x6b, 0xd9, 0x85, 0xd1, 0xed, 0xd0, 0x9d, 0xd7, 0x93, 0xe3, 0x76, 0xf2, 0x1c, 0x01, 0x4a, 0x0d,
+0xe4, 0x15, 0xb2, 0x1a, 0x97, 0x1c, 0x93, 0x1c, 0x48, 0x1b, 0x82, 0x18, 0xc0, 0x13, 0x26, 0x0c,
+0x30, 0x02, 0x88, 0xf7, 0x76, 0xee, 0x16, 0xe9, 0x62, 0xe8, 0xbe, 0xeb, 0x9e, 0xf1, 0x22, 0xf8,
+0x6a, 0xfd, 0xd8, 0x00, 0x96, 0x02, 0x84, 0x03, 0xd6, 0x04, 0x3a, 0x07, 0xce, 0x0a, 0xb4, 0x0e,
+0x8c, 0x11, 0xba, 0x11, 0x50, 0x0f, 0xb2, 0x0a, 0xb8, 0x05, 0x5e, 0x01, 0x4a, 0xfe, 0x04, 0xfc,
+0xf6, 0xf9, 0x4a, 0xf7, 0x94, 0xf3, 0xb4, 0xef, 0x7e, 0xec, 0x9c, 0xeb, 0xc2, 0xed, 0x8a, 0xf3,
+0x8a, 0xfc, 0x60, 0x07, 0x26, 0x12, 0xba, 0x1a, 0xc7, 0x1f, 0xe9, 0x20, 0x71, 0x1e, 0xe6, 0x18,
+0x0c, 0x11, 0x74, 0x07, 0x9a, 0xfc, 0x40, 0xf1, 0x5e, 0xe6, 0x4f, 0xdd, 0x93, 0xd7, 0x21, 0xd6,
+0xfd, 0xd9, 0x75, 0xe3, 0xee, 0xf1, 0xf4, 0x03, 0xf6, 0x16, 0xc1, 0x27, 0xad, 0x33, 0xbb, 0x38,
+0x23, 0x36, 0xf3, 0x2c, 0x67, 0x1e, 0xa0, 0x0c, 0xc0, 0xf9, 0x42, 0xe7, 0xfd, 0xd6, 0x85, 0xca,
+0x2b, 0xc3, 0x43, 0xc2, 0xb9, 0xc8, 0xd3, 0xd6, 0x0c, 0xec, 0x44, 0x06, 0x6b, 0x21, 0x3d, 0x39,
+0x73, 0x49, 0xed, 0x4e, 0xdb, 0x49, 0x0f, 0x3b, 0xd9, 0x25, 0x5a, 0x0d, 0x24, 0xf4, 0xa7, 0xdc,
+0xc1, 0xc8, 0xed, 0xb9, 0xc1, 0xb1, 0xf1, 0xb1, 0x8d, 0xbb, 0x47, 0xcf, 0xea, 0xeb, 0xcc, 0x0d,
+0xc1, 0x2f, 0xdb, 0x4b, 0xd0, 0x5c, 0x94, 0x60, 0xf6, 0x56, 0xc1, 0x42, 0xf5, 0x27, 0x1e, 0x0a,
+0x70, 0xec, 0x49, 0xd1, 0xc3, 0xba, 0xd8, 0xaa, 0x6c, 0xa3, 0x4c, 0xa6, 0xe7, 0xb4, 0x51, 0xcf,
+0xf6, 0xf2, 0x96, 0x1a, 0xd9, 0x3f, 0x56, 0x5c, 0x7a, 0x6b, 0xa4, 0x6b, 0xae, 0x5d, 0x6b, 0x45,
+0xb1, 0x26, 0x6c, 0x05, 0x78, 0xe4, 0xa1, 0xc6, 0xa7, 0xae, 0x98, 0x9e, 0x40, 0x99, 0x30, 0xa0,
+0x77, 0xb4, 0xe9, 0xd4, 0x0a, 0xfd, 0x15, 0x27, 0x4d, 0x4c, 0x0a, 0x67, 0x7c, 0x73, 0x70, 0x70,
+0x82, 0x5f, 0x31, 0x44, 0xc3, 0x22, 0x8a, 0xfe, 0x07, 0xdb, 0x91, 0xbb, 0x82, 0xa3, 0x00, 0x96,
+0x16, 0x95, 0xd0, 0xa1, 0xdd, 0xbb, 0x11, 0xe0, 0x60, 0x09, 0x0b, 0x32, 0x27, 0x54, 0x5c, 0x6b,
+0x70, 0x74, 0xc0, 0x6e, 0xb8, 0x5b, 0xb5, 0x3e, 0x5e, 0x1b, 0x92, 0xf5, 0x51, 0xd1, 0x91, 0xb2,
+0x6c, 0x9d, 0x9a, 0x94, 0x56, 0x99, 0x36, 0xab, 0x25, 0xc8, 0x56, 0xec, 0x0a, 0x13, 0x49, 0x37,
+0x00, 0x55, 0x7a, 0x68, 0x1e, 0x6f, 0xec, 0x67, 0xd7, 0x53, 0xf7, 0x35, 0x0e, 0x12, 0x4c, 0xec,
+0xb7, 0xc9, 0x87, 0xae, 0x84, 0x9e, 0x7a, 0x9b, 0xe8, 0xa4, 0x17, 0xb9, 0x39, 0xd5, 0xda, 0xf5,
+0x3a, 0x17, 0x65, 0x36, 0xa5, 0x4f, 0x02, 0x60, 0xe0, 0x64, 0x7a, 0x5c, 0x11, 0x48, 0x2d, 0x2a,
+0x34, 0x07, 0x52, 0xe4, 0x77, 0xc6, 0x7d, 0xb1, 0xe8, 0xa7, 0xa4, 0xa9, 0x31, 0xb5, 0x7b, 0xc8,
+0xb5, 0xe0, 0xc6, 0xfb, 0x8a, 0x17, 0x49, 0x31, 0x8b, 0x46, 0xeb, 0x53, 0xae, 0x56, 0x5b, 0x4d,
+0x1b, 0x39, 0xbd, 0x1c, 0x90, 0xfd, 0x73, 0xe0, 0x7b, 0xc9, 0xc9, 0xbb, 0x93, 0xb7, 0x2b, 0xbc,
+0x4d, 0xc7, 0x19, 0xd7, 0x14, 0xea, 0xea, 0xfe, 0x5a, 0x14, 0x91, 0x28, 0x45, 0x39, 0x31, 0x43,
+0x13, 0x44, 0xd9, 0x3a, 0xb3, 0x28, 0x3c, 0x11, 0xb6, 0xf8, 0xa9, 0xe3, 0xad, 0xd4, 0x15, 0xcd,
+0x23, 0xcc, 0xc7, 0xd0, 0x09, 0xd9, 0xea, 0xe3, 0x90, 0xf0, 0x9e, 0xfe, 0x60, 0x0d, 0x86, 0x1b,
+0x47, 0x27, 0x09, 0x2e, 0x0b, 0x2e, 0xf7, 0x26, 0x02, 0x1a, 0x1e, 0x0a, 0x9e, 0xfa, 0x1c, 0xee,
+0x12, 0xe6, 0xb1, 0xe2, 0x23, 0xe3, 0x0a, 0xe6, 0x74, 0xea, 0x7c, 0xef, 0x3e, 0xf5, 0x9e, 0xfb,
+0xa6, 0x02, 0x1a, 0x0a, 0xf8, 0x10, 0xc8, 0x15, 0x7e, 0x17, 0x6e, 0x15, 0x76, 0x10, 0xfa, 0x09,
+0x8a, 0x03, 0x8e, 0xfe, 0x84, 0xfb, 0x3e, 0xfa, 0xe0, 0xf9, 0xc4, 0xf9, 0x02, 0xf9, 0xb0, 0xf7,
+0xa2, 0xf5, 0x9a, 0xf3, 0xc0, 0xf2, 0xfe, 0xf3, 0x8e, 0xf7, 0x04, 0xfd, 0x2c, 0x03, 0xca, 0x08,
+0x1a, 0x0d, 0xbc, 0x0f, 0x2a, 0x11, 0xb2, 0x11, 0xb6, 0x11, 0x0c, 0x11, 0x24, 0x0f, 0x30, 0x0b,
+0xa6, 0x04, 0xa0, 0xfb, 0xde, 0xf0, 0x44, 0xe6, 0x43, 0xde, 0x49, 0xdb, 0xa1, 0xde, 0x84, 0xe7,
+0x2c, 0xf4, 0xcc, 0x01, 0x68, 0x0e, 0x9c, 0x18, 0xf3, 0x1f, 0xa7, 0x24, 0xe9, 0x26, 0x43, 0x26,
+0x21, 0x22, 0x98, 0x19, 0x32, 0x0c, 0xbc, 0xfa, 0x12, 0xe7, 0xaf, 0xd4, 0xa5, 0xc7, 0x17, 0xc3,
+0x51, 0xc8, 0x3b, 0xd6, 0xa8, 0xe9, 0xce, 0xfe, 0xc6, 0x12, 0x33, 0x23, 0xa7, 0x2f, 0xe5, 0x37,
+0x6d, 0x3b, 0xeb, 0x39, 0xef, 0x31, 0x0d, 0x23, 0x7a, 0x0d, 0x5e, 0xf3, 0x31, 0xd8, 0x03, 0xc1,
+0x3d, 0xb2, 0x0b, 0xaf, 0x19, 0xb8, 0x0d, 0xcb, 0x56, 0xe4, 0xa0, 0xff, 0x4a, 0x19, 0x2d, 0x2f,
+0xf3, 0x3f, 0x9f, 0x4a, 0x5f, 0x4e, 0xb5, 0x49, 0xe5, 0x3b, 0x2b, 0x25, 0x76, 0x07, 0x56, 0xe6,
+0xd1, 0xc6, 0xf7, 0xad, 0x5a, 0xa0, 0x00, 0xa0, 0xa9, 0xac, 0x33, 0xc4, 0x79, 0xe2, 0x36, 0x03,
+0x39, 0x22, 0xcf, 0x3c, 0xbb, 0x50, 0x50, 0x5c, 0x66, 0x5d, 0x4f, 0x53, 0x89, 0x3e, 0x9f, 0x20,
+0x3a, 0xfd, 0x99, 0xd8, 0x21, 0xb8, 0x80, 0xa0, 0x08, 0x95, 0x48, 0x97, 0x10, 0xa7, 0x3d, 0xc2,
+0xb8, 0xe4, 0x04, 0x0a, 0x61, 0x2d, 0x25, 0x4b, 0xfc, 0x5f, 0x58, 0x69, 0xbc, 0x65, 0x4e, 0x55,
+0x33, 0x3a, 0xb0, 0x17, 0x34, 0xf2, 0xbb, 0xcd, 0xef, 0xae, 0x80, 0x99, 0x42, 0x90, 0xa0, 0x94,
+0xae, 0xa6, 0xbd, 0xc4, 0xce, 0xea, 0x9a, 0x13, 0x4b, 0x39, 0x4a, 0x57, 0xdc, 0x69, 0x8a, 0x6e,
+0x28, 0x65, 0x63, 0x4f, 0x09, 0x31, 0xdc, 0x0d, 0x94, 0xe9, 0x6b, 0xc7, 0x1c, 0xab, 0xd6, 0x97,
+0x5a, 0x90, 0x92, 0x96, 0xd8, 0xaa, 0x99, 0xcb, 0x02, 0xf4, 0x45, 0x1e, 0xd3, 0x43, 0x80, 0x5f,
+0x88, 0x6d, 0xd4, 0x6c, 0x98, 0x5e, 0xff, 0x45, 0xfd, 0x26, 0x1e, 0x05, 0x51, 0xe3, 0x2d, 0xc4,
+0xb0, 0xaa, 0xd6, 0x99, 0x94, 0x94, 0xe6, 0x9c, 0x3f, 0xb3, 0x73, 0xd5, 0x82, 0xfe, 0x79, 0x27,
+0xc9, 0x49, 0x4e, 0x60, 0xd4, 0x68, 0xac, 0x63, 0x01, 0x53, 0x67, 0x3a, 0x69, 0x1d, 0xd2, 0xfe,
+0x89, 0xe0, 0x27, 0xc5, 0xef, 0xae, 0x54, 0xa1, 0xf0, 0x9e, 0x90, 0xa9, 0x5b, 0xc1, 0x1f, 0xe3,
+0x3a, 0x09, 0xf5, 0x2c, 0xb5, 0x48, 0x8c, 0x58, 0x18, 0x5c, 0xf9, 0x53, 0x47, 0x43, 0x0d, 0x2d,
+0x70, 0x13, 0x2e, 0xf9, 0xb1, 0xdf, 0x49, 0xc9, 0xf3, 0xb7, 0x5b, 0xae, 0xe7, 0xae, 0xf7, 0xba,
+0x49, 0xd1, 0x9c, 0xee, 0x0e, 0x0e, 0xfb, 0x29, 0x5f, 0x3e, 0xef, 0x48, 0xa9, 0x49, 0x03, 0x42,
+0xe5, 0x33, 0x57, 0x21, 0xba, 0x0c, 0xa0, 0xf7, 0xd8, 0xe3, 0xd7, 0xd2, 0x83, 0xc6, 0xdf, 0xc0,
+0x5d, 0xc3, 0x19, 0xce, 0xf9, 0xdf, 0x24, 0xf6, 0xbe, 0x0c, 0x59, 0x20, 0x29, 0x2e, 0xdf, 0x34,
+0x79, 0x34, 0xfd, 0x2d, 0x3d, 0x23, 0xb4, 0x15, 0xfa, 0x06, 0xa0, 0xf8, 0xe6, 0xeb, 0x7b, 0xe1,
+0x3f, 0xda, 0xf1, 0xd6, 0x51, 0xd8, 0x9b, 0xde, 0xea, 0xe8, 0x56, 0xf6, 0xdc, 0x04, 0x3c, 0x12,
+0xde, 0x1b, 0x5d, 0x20, 0xef, 0x1f, 0xc0, 0x1b, 0xc6, 0x14, 0x9c, 0x0c, 0xa8, 0x04, 0xc4, 0xfd,
+0x78, 0xf8, 0x7a, 0xf4, 0x5e, 0xf1, 0xe2, 0xee, 0x20, 0xed, 0xae, 0xec, 0x82, 0xee, 0xd6, 0xf2,
+0x0a, 0xf9, 0xd6, 0xff, 0x78, 0x05, 0xd4, 0x08, 0xb4, 0x09, 0xb8, 0x08, 0x36, 0x07, 0x5a, 0x06,
+0xd0, 0x06, 0x90, 0x08, 0xae, 0x0a, 0x9e, 0x0b, 0xce, 0x09, 0xaa, 0x04, 0x02, 0xfd, 0xa2, 0xf4,
+0x8c, 0xed, 0x8a, 0xe9, 0xea, 0xe8, 0xdc, 0xea, 0xf8, 0xed, 0x44, 0xf1, 0xd4, 0xf4, 0x36, 0xf9,
+0x46, 0xff, 0x44, 0x07, 0xc6, 0x10, 0x34, 0x1a, 0x43, 0x21, 0xb7, 0x23, 0x3d, 0x20, 0xd4, 0x16,
+0xe4, 0x08, 0x2e, 0xf9, 0xb2, 0xea, 0x9d, 0xdf, 0xd5, 0xd8, 0x1b, 0xd6, 0x0d, 0xd7, 0x31, 0xdb,
+0x95, 0xe2, 0xa0, 0xed, 0x3a, 0xfc, 0x6c, 0x0d, 0xdd, 0x1e, 0xe5, 0x2d, 0x9f, 0x37, 0xe1, 0x39,
+0x81, 0x33, 0x29, 0x25, 0x0e, 0x11, 0x44, 0xfa, 0x64, 0xe4, 0x15, 0xd2, 0x99, 0xc5, 0x87, 0xbf,
+0x5b, 0xc0, 0xf5, 0xc7, 0x11, 0xd6, 0xb4, 0xe9, 0x0c, 0x01, 0x54, 0x19, 0x97, 0x2f, 0xd9, 0x40,
+0x3d, 0x4a, 0x91, 0x4a, 0x0b, 0x41, 0xa1, 0x2e, 0x4c, 0x15, 0x4e, 0xf8, 0x7d, 0xdb, 0x0d, 0xc3,
+0xe7, 0xb1, 0x4c, 0xaa, 0x31, 0xad, 0x27, 0xba, 0xe1, 0xcf, 0x72, 0xeb, 0x98, 0x09, 0xb7, 0x26,
+0x71, 0x3f, 0x01, 0x51, 0x96, 0x59, 0xa6, 0x57, 0xfb, 0x4a, 0x4d, 0x34, 0x64, 0x15, 0x40, 0xf2,
+0x6f, 0xcf, 0x43, 0xb2, 0x88, 0x9f, 0xe6, 0x99, 0x96, 0xa1, 0x5b, 0xb5, 0xbd, 0xd1, 0xc4, 0xf2,
+0x2a, 0x14, 0x33, 0x32, 0xab, 0x4a, 0x84, 0x5b, 0xcc, 0x62, 0x12, 0x5f, 0xa9, 0x4f, 0xd9, 0x34,
+0x2c, 0x11, 0x64, 0xe8, 0x41, 0xc1, 0xae, 0xa2, 0x6a, 0x91, 0xea, 0x8f, 0x44, 0x9d, 0x85, 0xb6,
+0x31, 0xd7, 0xb0, 0xfa, 0x8d, 0x1c, 0x97, 0x3a, 0x77, 0x52, 0x4c, 0x62, 0x24, 0x68, 0xfc, 0x61,
+0x33, 0x4f, 0x3d, 0x30, 0x14, 0x08, 0x3f, 0xdc, 0x3b, 0xb4, 0x38, 0x97, 0x0e, 0x8a, 0x92, 0x8d,
+0xa2, 0x9f, 0x45, 0xbc, 0xa9, 0xde, 0x62, 0x02, 0x01, 0x24, 0x05, 0x41, 0xc2, 0x57, 0xf8, 0x65,
+0x1c, 0x69, 0x76, 0x5f, 0x67, 0x48, 0xdd, 0x25, 0x92, 0xfb, 0x33, 0xd0, 0x5b, 0xab, 0x68, 0x93,
+0x7c, 0x8b, 0x20, 0x93, 0x88, 0xa7, 0xaf, 0xc4, 0xb4, 0xe6, 0x3e, 0x09, 0x95, 0x29, 0x23, 0x45,
+0x72, 0x59, 0x56, 0x64, 0x5a, 0x63, 0x9e, 0x55, 0xa3, 0x3b, 0x52, 0x18, 0x3a, 0xf0, 0xab, 0xc9,
+0xc8, 0xaa, 0x5a, 0x98, 0x6c, 0x94, 0xe0, 0x9d, 0x67, 0xb2, 0x7d, 0xce, 0x8e, 0xee, 0x3e, 0x0f,
+0xfd, 0x2c, 0x61, 0x45, 0xe2, 0x55, 0x66, 0x5c, 0x4c, 0x57, 0xef, 0x46, 0xeb, 0x2c, 0x60, 0x0c,
+0xca, 0xe9, 0xbb, 0xc9, 0x6d, 0xb1, 0xec, 0xa3, 0xb0, 0xa2, 0xbf, 0xac, 0x47, 0xc0, 0x4f, 0xda,
+0x62, 0xf7, 0x4c, 0x14, 0xa1, 0x2d, 0xeb, 0x40, 0xb7, 0x4b, 0x3f, 0x4d, 0x6f, 0x45, 0xa7, 0x35,
+0xa1, 0x1f, 0xdc, 0x05, 0x04, 0xeb, 0x8b, 0xd2, 0xb5, 0xbf, 0x29, 0xb5, 0x81, 0xb4, 0xc1, 0xbd,
+0xf9, 0xce, 0xa8, 0xe5, 0x94, 0xfe, 0x28, 0x16, 0x61, 0x29, 0x17, 0x36, 0x47, 0x3b, 0x77, 0x39,
+0xb9, 0x31, 0x5f, 0x25, 0xb2, 0x15, 0xbc, 0x03, 0xd0, 0xf0, 0xdd, 0xde, 0x81, 0xd0, 0x6f, 0xc8,
+0x3b, 0xc8, 0xd9, 0xcf, 0x1d, 0xde, 0x16, 0xf0, 0xae, 0x02, 0xec, 0x12, 0xaf, 0x1e, 0xf9, 0x24,
+0x77, 0x26, 0xeb, 0x23, 0x03, 0x1f, 0x6c, 0x18, 0x58, 0x10, 0x5c, 0x06, 0xe0, 0xfa, 0xea, 0xee,
+0xb8, 0xe4, 0x7f, 0xde, 0xdd, 0xdd, 0x07, 0xe3, 0x24, 0xec, 0x12, 0xf7, 0xea, 0x00, 0x60, 0x08,
+0x86, 0x0c, 0x0a, 0x0e, 0xf4, 0x0d, 0xd8, 0x0d, 0x2e, 0x0e, 0xc4, 0x0e, 0xc4, 0x0e, 0xd4, 0x0c,
+0xa0, 0x08, 0x6e, 0x02, 0xf4, 0xfb, 0xf2, 0xf6, 0xae, 0xf4, 0xee, 0xf4, 0x84, 0xf6, 0x22, 0xf8,
+0xc2, 0xf8, 0x00, 0xf8, 0x74, 0xf6, 0x84, 0xf5, 0x66, 0xf6, 0xe8, 0xf9, 0x40, 0x00, 0x28, 0x08,
+0x1a, 0x10, 0x20, 0x16, 0xce, 0x18, 0x00, 0x18, 0x66, 0x14, 0x22, 0x0f, 0xbc, 0x08, 0xaa, 0x01,
+0x00, 0xfa, 0x06, 0xf2, 0x3c, 0xea, 0xa3, 0xe3, 0x63, 0xdf, 0x73, 0xde, 0x1d, 0xe2, 0x6a, 0xea,
+0xca, 0xf6, 0x1c, 0x06, 0xdc, 0x15, 0x6f, 0x23, 0x99, 0x2c, 0xf3, 0x2f, 0xd1, 0x2c, 0x35, 0x24,
+0x1e, 0x17, 0x5e, 0x07, 0xb6, 0xf6, 0xe8, 0xe6, 0x47, 0xd9, 0x53, 0xcf, 0xfd, 0xc9, 0x73, 0xca,
+0x2b, 0xd1, 0x83, 0xde, 0x6e, 0xf1, 0x00, 0x08, 0x77, 0x1f, 0x33, 0x34, 0x7b, 0x42, 0x6f, 0x47,
+0x79, 0x42, 0x3b, 0x34, 0xb7, 0x1f, 0xc2, 0x07, 0x9e, 0xef, 0xb9, 0xd9, 0x77, 0xc8, 0x8f, 0xbc,
+0x57, 0xb7, 0x89, 0xb9, 0xed, 0xc3, 0x6b, 0xd6, 0x1c, 0xf0, 0x44, 0x0e, 0xf3, 0x2c, 0x1f, 0x47,
+0x92, 0x57, 0x58, 0x5b, 0xbb, 0x51, 0x6d, 0x3d, 0xf3, 0x21, 0xe8, 0x03, 0xb2, 0xe6, 0x71, 0xcd,
+0xbb, 0xb9, 0x31, 0xad, 0xcc, 0xa8, 0x6d, 0xad, 0x29, 0xbc, 0xbd, 0xd4, 0x56, 0xf5, 0x34, 0x1a,
+0xa9, 0x3d, 0x92, 0x59, 0xe6, 0x68, 0xe4, 0x68, 0xfe, 0x59, 0xf1, 0x3f, 0x99, 0x1f, 0x66, 0xfd,
+0x3f, 0xdd, 0xc7, 0xc1, 0x37, 0xad, 0x0c, 0xa1, 0x80, 0x9e, 0xca, 0xa6, 0xbb, 0xba, 0x69, 0xd9,
+0x80, 0xff, 0xcd, 0x27, 0x1d, 0x4c, 0x92, 0x66, 0xc8, 0x72, 0xc0, 0x6e, 0x40, 0x5c, 0xfd, 0x3e,
+0x04, 0x1c, 0x86, 0xf7, 0x63, 0xd5, 0x7b, 0xb8, 0xb2, 0xa3, 0xb2, 0x98, 0x06, 0x99, 0x16, 0xa6,
+0x87, 0xbf, 0x2f, 0xe3, 0x46, 0x0c, 0x0b, 0x35, 0x62, 0x57, 0x84, 0x6e, 0x82, 0x76, 0xde, 0x6e,
+0x60, 0x59, 0x2b, 0x3a, 0x82, 0x15, 0xbe, 0xef, 0x9b, 0xcc, 0xe3, 0xaf, 0x82, 0x9c, 0xf8, 0x94,
+0x88, 0x9a, 0xf1, 0xac, 0xcf, 0xca, 0x40, 0xf0, 0x38, 0x18, 0x55, 0x3d, 0xfa, 0x5a, 0x36, 0x6d,
+0xe6, 0x71, 0x4e, 0x68, 0x0b, 0x52, 0x87, 0x32, 0xdc, 0x0d, 0x18, 0xe8, 0xd1, 0xc5, 0x43, 0xab,
+0xee, 0x9b, 0x92, 0x99, 0x16, 0xa4, 0x29, 0xba, 0xbf, 0xd8, 0xde, 0xfb, 0xfb, 0x1e, 0x69, 0x3e,
+0xba, 0x56, 0x80, 0x65, 0x3c, 0x68, 0x12, 0x5e, 0x41, 0x48, 0x53, 0x29, 0x62, 0x05, 0x55, 0xe1,
+0x17, 0xc2, 0x11, 0xac, 0x36, 0xa2, 0xd4, 0xa4, 0xa7, 0xb2, 0x4d, 0xc9, 0x2a, 0xe5, 0xfc, 0x02,
+0xe5, 0x1f, 0x7f, 0x39, 0x91, 0x4d, 0x82, 0x59, 0x36, 0x5b, 0x27, 0x51, 0x07, 0x3c, 0x71, 0x1e,
+0x22, 0xfd, 0x17, 0xdd, 0x89, 0xc3, 0xc9, 0xb3, 0x51, 0xaf, 0x61, 0xb5, 0xed, 0xc3, 0xbb, 0xd7,
+0x82, 0xee, 0x02, 0x06, 0x97, 0x1c, 0x9b, 0x30, 0x9d, 0x40, 0xf1, 0x49, 0x6d, 0x4a, 0xb5, 0x40,
+0x25, 0x2d, 0x3c, 0x13, 0x50, 0xf7, 0x4f, 0xde, 0x23, 0xcc, 0xff, 0xc2, 0xa7, 0xc2, 0xd1, 0xc9,
+0xcd, 0xd5, 0xa0, 0xe4, 0xb4, 0xf4, 0xf6, 0x04, 0xe4, 0x14, 0xad, 0x23, 0x73, 0x2f, 0x59, 0x36,
+0x0b, 0x36, 0x99, 0x2d, 0x57, 0x1e, 0xd0, 0x0a, 0x02, 0xf7, 0xbe, 0xe6, 0x35, 0xdc, 0xfd, 0xd7,
+0x65, 0xd9, 0xa1, 0xde, 0x1e, 0xe6, 0xa0, 0xee, 0x5a, 0xf7, 0x66, 0x00, 0xba, 0x09, 0xb8, 0x12,
+0x54, 0x1a, 0x09, 0x1f, 0x9d, 0x1f, 0x94, 0x1b, 0x70, 0x13, 0x1a, 0x09, 0xf2, 0xfe, 0xfa, 0xf6,
+0x1c, 0xf2, 0x44, 0xf0, 0x9c, 0xf0, 0x46, 0xf2, 0x20, 0xf4, 0xb0, 0xf5, 0xe4, 0xf6, 0x64, 0xf8,
+0x76, 0xfa, 0xa2, 0xfd, 0xe4, 0x01, 0xba, 0x06, 0x18, 0x0b, 0x06, 0x0e, 0xd4, 0x0e, 0x0a, 0x0e,
+0x62, 0x0c, 0x7c, 0x0a, 0xf0, 0x08, 0x74, 0x07, 0xac, 0x05, 0xfa, 0x02, 0xe6, 0xfe, 0x4c, 0xf9,
+0xba, 0xf2, 0xfe, 0xeb, 0x1a, 0xe7, 0x88, 0xe5, 0x88, 0xe8, 0x14, 0xf0, 0xb6, 0xfa, 0x1e, 0x06,
+0x86, 0x10, 0x2e, 0x18, 0x1f, 0x1d, 0x73, 0x1f, 0x5f, 0x1f, 0x2d, 0x1d, 0x80, 0x18, 0x10, 0x11,
+0x90, 0x06, 0x14, 0xf9, 0xc0, 0xe9, 0x31, 0xdb, 0x5b, 0xd0, 0x7f, 0xcc, 0x05, 0xd1, 0x85, 0xdd,
+0xc4, 0xef, 0x8a, 0x03, 0xb8, 0x15, 0x4b, 0x24, 0x19, 0x2e, 0x73, 0x33, 0x53, 0x34, 0xcf, 0x30,
+0xc1, 0x28, 0xa6, 0x1b, 0x3a, 0x09, 0x36, 0xf3, 0xc5, 0xdb, 0x15, 0xc7, 0x93, 0xb9, 0x37, 0xb6,
+0xd7, 0xbe, 0x5f, 0xd1, 0x66, 0xea, 0x52, 0x05, 0xf3, 0x1d, 0x7d, 0x31, 0x11, 0x3f, 0xfd, 0x45,
+0x65, 0x46, 0x83, 0x40, 0x4d, 0x33, 0x2f, 0x1f, 0xf4, 0x04, 0x34, 0xe7, 0x77, 0xca, 0x59, 0xb3,
+0x4a, 0xa6, 0x36, 0xa6, 0x27, 0xb3, 0x07, 0xcb, 0x92, 0xe9, 0xb6, 0x09, 0x1b, 0x27, 0xdb, 0x3e,
+0xed, 0x4e, 0x16, 0x57, 0x1c, 0x56, 0x95, 0x4b, 0xff, 0x37, 0x24, 0x1c, 0xf8, 0xfa, 0x71, 0xd8,
+0xab, 0xb9, 0x28, 0xa3, 0xf2, 0x98, 0x22, 0x9c, 0xcd, 0xac, 0x95, 0xc8, 0x22, 0xeb, 0x78, 0x0f,
+0xb5, 0x30, 0xa5, 0x4b, 0xa4, 0x5d, 0x00, 0x65, 0x62, 0x60, 0x17, 0x50, 0xa9, 0x35, 0xd8, 0x13,
+0xce, 0xee, 0x0d, 0xcb, 0x2f, 0xad, 0x54, 0x99, 0xa6, 0x91, 0xb6, 0x97, 0x47, 0xab, 0x05, 0xca,
+0xac, 0xef, 0x3e, 0x17, 0x5d, 0x3b, 0xf4, 0x57, 0xae, 0x69, 0xe2, 0x6d, 0x1e, 0x64, 0xb9, 0x4d,
+0xf1, 0x2d, 0x08, 0x09, 0x5b, 0xe3, 0x13, 0xc1, 0x3a, 0xa6, 0x5e, 0x95, 0x92, 0x90, 0x12, 0x99,
+0x67, 0xae, 0x4b, 0xcf, 0x56, 0xf7, 0xc7, 0x20, 0xf3, 0x45, 0x84, 0x61, 0xaa, 0x6f, 0xa4, 0x6e,
+0x06, 0x5f, 0x05, 0x44, 0x4d, 0x22, 0xe0, 0xfd, 0xbf, 0xda, 0x13, 0xbc, 0xd6, 0xa4, 0x26, 0x97,
+0xc8, 0x94, 0x10, 0x9f, 0x5d, 0xb6, 0xed, 0xd8, 0xf4, 0x01, 0x3d, 0x2b, 0x1d, 0x4e, 0x54, 0x65,
+0xd6, 0x6d, 0x10, 0x67, 0x9f, 0x53, 0xbf, 0x37, 0xa0, 0x17, 0xcc, 0xf6, 0xe7, 0xd7, 0x7f, 0xbd,
+0xac, 0xa9, 0x8c, 0x9e, 0xf2, 0x9d, 0x8e, 0xa9, 0xa3, 0xc1, 0xdc, 0xe3, 0x14, 0x0b, 0x9f, 0x30,
+0x4d, 0x4e, 0x94, 0x5f, 0x10, 0x63, 0x52, 0x59, 0xa7, 0x45, 0xe5, 0x2b, 0x6e, 0x0f, 0x1a, 0xf3,
+0xab, 0xd8, 0x6d, 0xc2, 0x33, 0xb2, 0x2e, 0xaa, 0xd5, 0xab, 0xe9, 0xb8, 0x91, 0xd0, 0x04, 0xf0,
+0x3e, 0x12, 0x0d, 0x31, 0xa3, 0x47, 0x1d, 0x53, 0xd3, 0x52, 0x5b, 0x48, 0xb1, 0x36, 0xab, 0x20,
+0x34, 0x09, 0x1e, 0xf2, 0xf5, 0xdc, 0x9b, 0xcb, 0x8b, 0xbf, 0x29, 0xba, 0x87, 0xbd, 0xf1, 0xc9,
+0x9d, 0xde, 0x82, 0xf8, 0x0a, 0x13, 0x0b, 0x2a, 0x0f, 0x3a, 0x17, 0x41, 0x3b, 0x3f, 0xeb, 0x35,
+0x39, 0x27, 0xda, 0x15, 0xde, 0x03, 0xda, 0xf2, 0x62, 0xe4, 0x1b, 0xd9, 0x29, 0xd2, 0x23, 0xd0,
+0x87, 0xd3, 0x95, 0xdc, 0x34, 0xea, 0x94, 0xfa, 0x72, 0x0b, 0x44, 0x1a, 0xd3, 0x24, 0xf1, 0x29,
+0x2f, 0x29, 0x4f, 0x23, 0xde, 0x19, 0x6c, 0x0e, 0xce, 0x02, 0x82, 0xf8, 0x3a, 0xf0, 0xa4, 0xea,
+0xe6, 0xe7, 0x26, 0xe7, 0x04, 0xe8, 0xb0, 0xea, 0x84, 0xef, 0xb4, 0xf6, 0x52, 0xff, 0x30, 0x08,
+0x4a, 0x0f, 0x32, 0x13, 0xa2, 0x13, 0xdc, 0x10, 0x86, 0x0c, 0xde, 0x07, 0x56, 0x04, 0x94, 0x02,
+0x12, 0x02, 0x1c, 0x02, 0x26, 0x01, 0x5a, 0xfe, 0xae, 0xf9, 0x44, 0xf4, 0xd6, 0xef, 0x18, 0xee,
+0x7a, 0xef, 0x20, 0xf3, 0xc6, 0xf7, 0xe8, 0xfb, 0x06, 0xff, 0x8a, 0x01, 0x3e, 0x04, 0x44, 0x08,
+0xac, 0x0d, 0xda, 0x13, 0xde, 0x18, 0xe0, 0x1a, 0x2a, 0x18, 0x38, 0x10, 0x4c, 0x04, 0x9e, 0xf6,
+0x22, 0xea, 0x2d, 0xe1, 0xe7, 0xdc, 0xaf, 0xdc, 0xff, 0xdf, 0x7e, 0xe5, 0xa2, 0xec, 0xd6, 0xf5,
+0xc0, 0x00, 0xa6, 0x0d, 0x26, 0x1b, 0xff, 0x26, 0x0b, 0x2f, 0x01, 0x31, 0x5f, 0x2b, 0xd9, 0x1e,
+0xd0, 0x0c, 0x06, 0xf8, 0x74, 0xe4, 0x3f, 0xd4, 0xf7, 0xc9, 0x37, 0xc6, 0x8b, 0xc8, 0xbf, 0xd0,
+0x1f, 0xde, 0x6c, 0xef, 0xee, 0x03, 0x42, 0x19, 0xc7, 0x2c, 0x4b, 0x3c, 0x79, 0x44, 0xe5, 0x43,
+0x5d, 0x3a, 0x31, 0x28, 0x1e, 0x10, 0x18, 0xf5, 0x8b, 0xda, 0xa1, 0xc4, 0x19, 0xb6, 0x7f, 0xb0,
+0xaf, 0xb4, 0xe5, 0xc1, 0x95, 0xd6, 0xc0, 0xf0, 0xde, 0x0c, 0xd3, 0x27, 0xb9, 0x3e, 0x73, 0x4e,
+0x52, 0x55, 0xd1, 0x51, 0x2f, 0x44, 0x7d, 0x2d, 0x3c, 0x10, 0x48, 0xef, 0x41, 0xcf, 0xc7, 0xb4,
+0xd0, 0xa3, 0x5a, 0x9f, 0x50, 0xa7, 0xf7, 0xba, 0x23, 0xd7, 0xf4, 0xf7, 0xe0, 0x18, 0x37, 0x36,
+0x13, 0x4d, 0x6a, 0x5b, 0xe8, 0x5f, 0x6a, 0x59, 0x6f, 0x48, 0xe5, 0x2d, 0xfa, 0x0b, 0x32, 0xe6,
+0xcd, 0xc1, 0xb0, 0xa4, 0x18, 0x94, 0xbe, 0x92, 0x3c, 0xa0, 0x41, 0xba, 0x4d, 0xdc, 0xe8, 0x00,
+0xe5, 0x23, 0x1d, 0x41, 0xee, 0x56, 0xb8, 0x63, 0xea, 0x65, 0x12, 0x5d, 0xfb, 0x48, 0xb3, 0x2a,
+0x92, 0x04, 0x11, 0xdb, 0x39, 0xb4, 0xa6, 0x97, 0x24, 0x8a, 0xca, 0x8d, 0x32, 0xa1, 0xe5, 0xbf,
+0xd4, 0xe4, 0x42, 0x0a, 0x09, 0x2c, 0x7b, 0x47, 0x66, 0x5b, 0x42, 0x66, 0xc0, 0x66, 0xb8, 0x5b,
+0xa3, 0x44, 0x0d, 0x23, 0xce, 0xf9, 0xb1, 0xce, 0x46, 0xa9, 0x60, 0x90, 0x4e, 0x88, 0x44, 0x91,
+0x58, 0xa8, 0xc9, 0xc8, 0x56, 0xed, 0x12, 0x11, 0xc9, 0x30, 0x63, 0x4a, 0x6c, 0x5c, 0x24, 0x65,
+0xae, 0x62, 0x27, 0x54, 0xeb, 0x39, 0x44, 0x16, 0x50, 0xed, 0x29, 0xc5, 0xd0, 0xa4, 0xa6, 0x91,
+0x6c, 0x8e, 0x6c, 0x9a, 0x87, 0xb2, 0x77, 0xd2, 0x28, 0xf5, 0x8a, 0x16, 0x8d, 0x33, 0x5d, 0x4a,
+0x3a, 0x59, 0x66, 0x5e, 0x6e, 0x58, 0x3f, 0x47, 0x0f, 0x2c, 0xde, 0x09, 0xea, 0xe4, 0xc9, 0xc2,
+0xfc, 0xa8, 0x46, 0x9b, 0x6a, 0x9b, 0x5a, 0xa8, 0x77, 0xbf, 0xe7, 0xdc, 0x46, 0xfc, 0xf2, 0x19,
+0x4f, 0x33, 0x1d, 0x46, 0xd5, 0x50, 0xf7, 0x51, 0x01, 0x49, 0x2b, 0x37, 0x25, 0x1e, 0x14, 0x01,
+0x63, 0xe3, 0xeb, 0xc8, 0x55, 0xb5, 0x5b, 0xab, 0x41, 0xac, 0xbf, 0xb7, 0xf7, 0xcb, 0x96, 0xe5,
+0xce, 0x00, 0x48, 0x1a, 0xe3, 0x2e, 0xdb, 0x3c, 0xaf, 0x42, 0x1f, 0x40, 0x2f, 0x36, 0x7f, 0x26,
+0xfc, 0x12, 0x88, 0xfd, 0x1e, 0xe8, 0xe5, 0xd4, 0x91, 0xc6, 0xf9, 0xbe, 0xf3, 0xbf, 0x79, 0xc9,
+0x1f, 0xda, 0x1c, 0xef, 0x9a, 0x04, 0xc0, 0x17, 0xc5, 0x25, 0x93, 0x2d, 0xfb, 0x2e, 0xb9, 0x2a,
+0xb7, 0x22, 0x54, 0x18, 0x74, 0x0c, 0xba, 0xff, 0x6a, 0xf2, 0xa0, 0xe5, 0x53, 0xdb, 0x1f, 0xd5,
+0xe7, 0xd4, 0x4b, 0xdb, 0xce, 0xe6, 0x54, 0xf5, 0x76, 0x03, 0x92, 0x0e, 0xbc, 0x15, 0x62, 0x18,
+0xa6, 0x17, 0xf8, 0x14, 0xa2, 0x11, 0x7a, 0x0e, 0x40, 0x0b, 0xf0, 0x06, 0x06, 0x01, 0xe6, 0xf9,
+0x86, 0xf2, 0x04, 0xed, 0xd4, 0xea, 0x76, 0xec, 0x4c, 0xf1, 0x28, 0xf7, 0x12, 0xfc, 0x26, 0xff,
+0x20, 0x00, 0x14, 0x00, 0x34, 0x00, 0x70, 0x01, 0x94, 0x04, 0x32, 0x09, 0xe4, 0x0d, 0x46, 0x11,
+0xce, 0x11, 0x4e, 0x0f, 0x96, 0x0a, 0xaa, 0x04, 0x1a, 0xff, 0x46, 0xfa, 0x20, 0xf6, 0x56, 0xf2,
+0x58, 0xee, 0xc2, 0xea, 0x24, 0xe8, 0xc2, 0xe7, 0x96, 0xea, 0x06, 0xf1, 0xfe, 0xfa, 0x2a, 0x07,
+0xa0, 0x13, 0x29, 0x1e, 0xad, 0x24, 0x2d, 0x26, 0x89, 0x22, 0x5e, 0x1a, 0xfa, 0x0e, 0xbe, 0x01,
+0x02, 0xf4, 0x56, 0xe7, 0xa9, 0xdc, 0x17, 0xd5, 0x9d, 0xd1, 0xe9, 0xd2, 0x95, 0xd9, 0x8c, 0xe5,
+0xf6, 0xf5, 0x34, 0x09, 0xed, 0x1c, 0x0f, 0x2e, 0xd3, 0x39, 0xe3, 0x3d, 0x1d, 0x39, 0x53, 0x2c,
+0x54, 0x19, 0x0a, 0x03, 0xca, 0xec, 0xfd, 0xd8, 0xe1, 0xc9, 0xa3, 0xc0, 0xb9, 0xbd, 0xc9, 0xc1,
+0xa1, 0xcc, 0xf7, 0xdd, 0xc8, 0xf4, 0xec, 0x0e, 0x6b, 0x29, 0x4f, 0x40, 0x47, 0x4f, 0x11, 0x53,
+0x9f, 0x4a, 0x31, 0x37, 0x7d, 0x1c, 0xb8, 0xfe, 0x2f, 0xe2, 0x63, 0xca, 0x59, 0xb9, 0x0b, 0xb0,
+0xbf, 0xae, 0x7f, 0xb5, 0x83, 0xc4, 0x45, 0xdb, 0x70, 0xf8, 0x1e, 0x19, 0x55, 0x39, 0x8b, 0x53,
+0xee, 0x62, 0xb4, 0x63, 0xb0, 0x55, 0xc7, 0x3b, 0x8c, 0x1a, 0x9c, 0xf7, 0x55, 0xd7, 0x4d, 0xbd,
+0x87, 0xab, 0xb8, 0xa2, 0x38, 0xa3, 0x4f, 0xad, 0x15, 0xc1, 0xcd, 0xdd, 0x32, 0x01, 0x0b, 0x27,
+0x21, 0x4a, 0x5a, 0x64, 0x98, 0x70, 0x9a, 0x6c, 0x04, 0x59, 0x39, 0x3a, 0x72, 0x15, 0xea, 0xef,
+0x55, 0xce, 0xaf, 0xb3, 0x18, 0xa2, 0x6c, 0x9a, 0x28, 0x9d, 0xdc, 0xaa, 0x91, 0xc3, 0x84, 0xe5,
+0x34, 0x0d, 0x2b, 0x35, 0x78, 0x57, 0xac, 0x6e, 0x8c, 0x76, 0xfe, 0x6d, 0xe6, 0x56, 0x8f, 0x35,
+0x34, 0x0f, 0xa0, 0xe8, 0x2d, 0xc6, 0x5f, 0xab, 0x92, 0x9a, 0x36, 0x95, 0xdc, 0x9b, 0xbb, 0xae,
+0x87, 0xcc, 0x3a, 0xf2, 0xc6, 0x1a, 0xbf, 0x40, 0xf2, 0x5e, 0x2e, 0x71, 0xb8, 0x74, 0x32, 0x69,
+0x9b, 0x50, 0xf7, 0x2e, 0x90, 0x08, 0x21, 0xe2, 0x2f, 0xc0, 0x9e, 0xa6, 0x7e, 0x98, 0xf4, 0x96,
+0x58, 0xa2, 0x83, 0xb9, 0xe1, 0xd9, 0x16, 0xff, 0x3d, 0x24, 0xcb, 0x44, 0x4a, 0x5d, 0x02, 0x6b,
+0xda, 0x6b, 0x98, 0x5f, 0x77, 0x47, 0xbf, 0x26, 0x9c, 0x01, 0xb1, 0xdc, 0x11, 0xbd, 0xca, 0xa6,
+0xc8, 0x9c, 0xe2, 0x9f, 0x47, 0xaf, 0x89, 0xc8, 0xca, 0xe7, 0xe2, 0x08, 0xd3, 0x27, 0x17, 0x42,
+0x4e, 0x55, 0x8c, 0x5f, 0x06, 0x5f, 0xdf, 0x52, 0x29, 0x3c, 0x63, 0x1d, 0xc4, 0xfa, 0x51, 0xd9,
+0x0f, 0xbe, 0xfd, 0xac, 0x18, 0xa8, 0x33, 0xaf, 0x37, 0xc0, 0xfb, 0xd7, 0x98, 0xf2, 0x18, 0x0d,
+0x2b, 0x25, 0x41, 0x39, 0x13, 0x48, 0x8b, 0x4f, 0x49, 0x4e, 0x21, 0x43, 0xaf, 0x2e, 0x6a, 0x13,
+0x5e, 0xf5, 0xb9, 0xd9, 0xf1, 0xc4, 0x03, 0xba, 0xa7, 0xb9, 0xb5, 0xc2, 0x57, 0xd2, 0x88, 0xe5,
+0x7e, 0xf9, 0x90, 0x0c, 0xd7, 0x1d, 0x73, 0x2c, 0x69, 0x37, 0xff, 0x3c, 0xa5, 0x3b, 0x43, 0x32,
+0x71, 0x21, 0x68, 0x0b, 0x34, 0xf4, 0x09, 0xe0, 0x87, 0xd2, 0x19, 0xcd, 0x67, 0xcf, 0x6f, 0xd7,
+0xdb, 0xe2, 0x86, 0xef, 0xf8, 0xfb, 0xb2, 0x07, 0x44, 0x12, 0xaa, 0x1b, 0xfd, 0x22, 0x3f, 0x27,
+0xe5, 0x26, 0x23, 0x21, 0x2c, 0x16, 0x16, 0x08, 0xa8, 0xf9, 0xfc, 0xed, 0xdc, 0xe6, 0x9e, 0xe4,
+0x86, 0xe6, 0xda, 0xea, 0x42, 0xf0, 0x96, 0xf5, 0x72, 0xfa, 0xca, 0xfe, 0x06, 0x03, 0x5e, 0x07,
+0xf8, 0x0b, 0x00, 0x10, 0x88, 0x12, 0xaa, 0x12, 0x2c, 0x10, 0xc0, 0x0b, 0x76, 0x06, 0xc6, 0x01,
+0x7e, 0xfe, 0xcc, 0xfc, 0x12, 0xfc, 0x8e, 0xfb, 0x8a, 0xfa, 0x94, 0xf8, 0xa0, 0xf5, 0x6a, 0xf2,
+0x04, 0xf0, 0xe8, 0xef, 0xb8, 0xf2, 0xac, 0xf8, 0xd0, 0x00, 0x8e, 0x09, 0x1c, 0x11, 0x3a, 0x16,
+0xa4, 0x18, 0xbe, 0x18, 0x1e, 0x17, 0xe8, 0x13, 0x66, 0x0f, 0x0c, 0x09, 0x10, 0x01, 0x36, 0xf7,
+0x5c, 0xec, 0x05, 0xe2, 0x3b, 0xda, 0x7f, 0xd7, 0x41, 0xdb, 0xaa, 0xe5, 0x18, 0xf5, 0x90, 0x06,
+0xc8, 0x16, 0x47, 0x23, 0xe3, 0x2a, 0xd1, 0x2d, 0x91, 0x2c, 0x9d, 0x27, 0x17, 0x1f, 0x24, 0x13,
+0xe4, 0x03, 0x32, 0xf2, 0x89, 0xdf, 0xd3, 0xce, 0x53, 0xc3, 0x45, 0xc0, 0x3b, 0xc7, 0xb1, 0xd7,
+0x0c, 0xef, 0x9e, 0x08, 0x39, 0x20, 0x41, 0x32, 0xab, 0x3d, 0x21, 0x42, 0x43, 0x40, 0x6b, 0x38,
+0x15, 0x2b, 0x84, 0x18, 0xa4, 0x01, 0xf6, 0xe7, 0xc7, 0xce, 0x19, 0xba, 0x07, 0xae, 0xa9, 0xad,
+0xc9, 0xb9, 0xe7, 0xd0, 0xc4, 0xee, 0x44, 0x0e, 0x5d, 0x2a, 0x15, 0x40, 0x93, 0x4d, 0xd3, 0x52,
+0x8b, 0x4f, 0x55, 0x44, 0x59, 0x31, 0xa4, 0x17, 0x46, 0xf9, 0x5d, 0xd9, 0x8b, 0xbc, 0x4e, 0xa7,
+0xa4, 0x9d, 0x72, 0xa1, 0xc3, 0xb2, 0xdf, 0xce, 0x66, 0xf1, 0xf0, 0x14, 0xa9, 0x34, 0x2b, 0x4d,
+0x6c, 0x5c, 0x38, 0x61, 0x0a, 0x5b, 0x7f, 0x4a, 0xc3, 0x30, 0x3e, 0x10, 0x48, 0xec, 0x7f, 0xc9,
+0xfd, 0xac, 0xb4, 0x9a, 0x16, 0x95, 0x10, 0x9d, 0xdb, 0xb1, 0x01, 0xd1, 0x1a, 0xf6, 0xfa, 0x1b,
+0x17, 0x3e, 0x42, 0x58, 0xb0, 0x67, 0x6a, 0x6a, 0xfe, 0x5f, 0xab, 0x49, 0x11, 0x2a, 0xe8, 0x04,
+0x07, 0xdf, 0x2d, 0xbd, 0x86, 0xa3, 0xd2, 0x94, 0x98, 0x92, 0x46, 0x9d, 0x23, 0xb4, 0x23, 0xd5,
+0x42, 0xfc, 0x39, 0x24, 0xbb, 0x47, 0x16, 0x62, 0x72, 0x6f, 0x02, 0x6e, 0xf2, 0x5d, 0x45, 0x42,
+0x03, 0x1f, 0xfa, 0xf8, 0x9d, 0xd4, 0x21, 0xb6, 0x80, 0xa0, 0x4a, 0x95, 0x7a, 0x95, 0x96, 0xa1,
+0xcf, 0xb9, 0x01, 0xdc, 0x24, 0x04, 0xa5, 0x2c, 0x79, 0x4f, 0x52, 0x67, 0x54, 0x70, 0xa4, 0x69,
+0x00, 0x55, 0xb7, 0x36, 0x38, 0x13, 0x96, 0xef, 0x53, 0xcf, 0x79, 0xb5, 0xe6, 0xa3, 0x92, 0x9b,
+0xde, 0x9d, 0x69, 0xab, 0x55, 0xc4, 0x5c, 0xe6, 0xae, 0x0d, 0xbd, 0x33, 0xc7, 0x52, 0x4c, 0x65,
+0xfa, 0x68, 0xd4, 0x5d, 0x25, 0x47, 0x7b, 0x29, 0x64, 0x09, 0x86, 0xea, 0x7d, 0xcf, 0x65, 0xba,
+0x5f, 0xac, 0xb8, 0xa6, 0x42, 0xaa, 0x61, 0xb8, 0x7f, 0xd0, 0xa2, 0xf0, 0xf0, 0x13, 0x05, 0x35,
+0xff, 0x4d, 0xd8, 0x5a, 0x48, 0x5a, 0xcd, 0x4d, 0xc5, 0x38, 0xf1, 0x1e, 0x12, 0x04, 0xbe, 0xea,
+0x01, 0xd5, 0x29, 0xc4, 0x6b, 0xb9, 0x09, 0xb6, 0xfd, 0xba, 0xb9, 0xc8, 0x93, 0xde, 0x10, 0xfa,
+0x20, 0x17, 0xc7, 0x30, 0xbd, 0x42, 0x8d, 0x4a, 0x09, 0x48, 0x63, 0x3c, 0x75, 0x2a, 0x92, 0x15,
+0x48, 0x00, 0xae, 0xec, 0x2b, 0xdc, 0x4b, 0xd0, 0xa3, 0xc9, 0xf3, 0xc8, 0x9b, 0xce, 0x3b, 0xda,
+0x1e, 0xeb, 0xde, 0xfe, 0xe0, 0x12, 0xed, 0x23, 0x9f, 0x2f, 0x23, 0x34, 0x7d, 0x31, 0xcb, 0x28,
+0x47, 0x1c, 0x04, 0x0e, 0xec, 0xff, 0x94, 0xf3, 0xa6, 0xe9, 0x03, 0xe3, 0xcb, 0xdf, 0xfd, 0xdf,
+0x0d, 0xe3, 0xd6, 0xe8, 0xf8, 0xf0, 0x5a, 0xfb, 0x94, 0x06, 0x64, 0x11, 0xc2, 0x19, 0xab, 0x1d,
+0x2d, 0x1d, 0xce, 0x18, 0xd6, 0x11, 0x02, 0x0a, 0xf0, 0x02, 0x6c, 0xfd, 0xde, 0xf9, 0xec, 0xf7,
+0x1e, 0xf7, 0x20, 0xf6, 0x7c, 0xf4, 0xb2, 0xf2, 0xac, 0xf1, 0x90, 0xf2, 0xb8, 0xf5, 0x1a, 0xfb,
+0xf8, 0x00, 0xe6, 0x05, 0xae, 0x08, 0x7a, 0x09, 0x48, 0x09, 0x0e, 0x09, 0xe4, 0x09, 0xb6, 0x0b,
+0x0e, 0x0e, 0x54, 0x0f, 0x0c, 0x0e, 0x0a, 0x09, 0x8a, 0x00, 0x14, 0xf6, 0x1e, 0xec, 0x22, 0xe5,
+0x83, 0xe2, 0x3c, 0xe4, 0x32, 0xe9, 0xc8, 0xef, 0xd0, 0xf6, 0xe8, 0xfd, 0x7a, 0x05, 0x00, 0x0e,
+0x04, 0x17, 0x69, 0x1f, 0x67, 0x25, 0xe5, 0x26, 0x5b, 0x22, 0x78, 0x17, 0x9e, 0x07, 0x7c, 0xf5,
+0x44, 0xe4, 0xdf, 0xd6, 0x71, 0xcf, 0x7f, 0xce, 0x1f, 0xd3, 0x03, 0xdc, 0x02, 0xe8, 0x80, 0xf6,
+0xce, 0x06, 0x04, 0x18, 0x09, 0x28, 0xe3, 0x34, 0xef, 0x3b, 0x4d, 0x3b, 0x31, 0x32, 0x71, 0x21,
+0x1a, 0x0b, 0x38, 0xf2, 0x77, 0xda, 0x7d, 0xc7, 0xf1, 0xbb, 0x0f, 0xb9, 0xa7, 0xbe, 0xa5, 0xcb,
+0xb7, 0xde, 0xc8, 0xf5, 0xee, 0x0e, 0x1b, 0x27, 0xaf, 0x3b, 0x93, 0x49, 0x0f, 0x4f, 0xb7, 0x4a,
+0x03, 0x3d, 0xe5, 0x26, 0x14, 0x0b, 0x64, 0xec, 0xf5, 0xce, 0x17, 0xb7, 0x6e, 0xa8, 0x6e, 0xa5,
+0xd1, 0xad, 0xe3, 0xc0, 0x9d, 0xdb, 0x26, 0xfb, 0xca, 0x1a, 0x01, 0x37, 0x6f, 0x4c, 0x1a, 0x59,
+0x96, 0x5b, 0x89, 0x53, 0xd1, 0x41, 0xdb, 0x27, 0xb8, 0x07, 0x62, 0xe4, 0x8f, 0xc2, 0x88, 0xa7,
+0x1e, 0x98, 0xd2, 0x96, 0x3c, 0xa4, 0xf9, 0xbd, 0x31, 0xe0, 0x40, 0x05, 0x51, 0x28, 0x39, 0x45,
+0x96, 0x59, 0xce, 0x63, 0x54, 0x63, 0x40, 0x58, 0x2b, 0x43, 0x67, 0x25, 0xec, 0x00, 0xa3, 0xd9,
+0xd1, 0xb4, 0x16, 0x99, 0x84, 0x8b, 0xec, 0x8e, 0x64, 0xa2, 0x5b, 0xc2, 0x10, 0xe9, 0x74, 0x10,
+0x57, 0x33, 0x77, 0x4e, 0x56, 0x60, 0xee, 0x67, 0xee, 0x64, 0x1a, 0x57, 0x35, 0x3f, 0x63, 0x1e,
+0x32, 0xf7, 0xf5, 0xcd, 0x48, 0xa9, 0xda, 0x8f, 0xac, 0x86, 0x42, 0x8f, 0xb2, 0xa7, 0xf7, 0xca,
+0xc0, 0xf2, 0x18, 0x19, 0xc7, 0x39, 0xb5, 0x52, 0x18, 0x62, 0x84, 0x67, 0xe8, 0x61, 0xa7, 0x51,
+0x0d, 0x37, 0xee, 0x13, 0x98, 0xeb, 0x63, 0xc3, 0x1e, 0xa2, 0xce, 0x8d, 0x60, 0x8a, 0xa4, 0x97,
+0x9f, 0xb2, 0xdb, 0xd5, 0xa4, 0xfb, 0x05, 0x1f, 0xab, 0x3c, 0x65, 0x52, 0x34, 0x5f, 0xda, 0x61,
+0xe4, 0x59, 0x35, 0x47, 0x0d, 0x2b, 0xec, 0x07, 0xe1, 0xe1, 0x37, 0xbe, 0xfe, 0xa2, 0xc2, 0x94,
+0x90, 0x95, 0x9e, 0xa4, 0xa9, 0xbe, 0x49, 0xdf, 0x6c, 0x01, 0x07, 0x21, 0xeb, 0x3a, 0x71, 0x4d,
+0xd6, 0x56, 0x6c, 0x56, 0xb9, 0x4b, 0xa3, 0x37, 0x4b, 0x1c, 0xb6, 0xfc, 0xbd, 0xdc, 0xc7, 0xc0,
+0xb1, 0xac, 0x92, 0xa3, 0x86, 0xa6, 0xbf, 0xb4, 0xdd, 0xcb, 0x14, 0xe8, 0x74, 0x05, 0x2f, 0x20,
+0xa3, 0x35, 0x89, 0x43, 0x1f, 0x49, 0xc1, 0x45, 0xf9, 0x39, 0x71, 0x27, 0x7e, 0x10, 0xee, 0xf7,
+0x4d, 0xe0, 0xfd, 0xcb, 0x89, 0xbd, 0xf3, 0xb6, 0x71, 0xb9, 0xdb, 0xc4, 0xcf, 0xd7, 0x24, 0xef,
+0x54, 0x07, 0xbd, 0x1c, 0xb9, 0x2c, 0xc9, 0x35, 0x4d, 0x37, 0xef, 0x31, 0xf3, 0x26, 0x90, 0x18,
+0x9c, 0x08, 0xbc, 0xf8, 0x92, 0xe9, 0x29, 0xdc, 0xbb, 0xd1, 0x35, 0xcc, 0x1f, 0xcd, 0xf9, 0xd4,
+0xcd, 0xe2, 0x06, 0xf4, 0x8a, 0x05, 0x38, 0x14, 0x17, 0x1e, 0x21, 0x22, 0x1f, 0x21, 0x42, 0x1c,
+0x7c, 0x15, 0x38, 0x0e, 0x36, 0x07, 0x42, 0x00, 0xc6, 0xf8, 0x9e, 0xf0, 0xf2, 0xe8, 0x7f, 0xe3,
+0x03, 0xe2, 0x4c, 0xe5, 0xc0, 0xec, 0x5c, 0xf6, 0xa2, 0xff, 0x74, 0x06, 0xbe, 0x09, 0x2e, 0x0a,
+0xe8, 0x08, 0xaa, 0x07, 0x90, 0x07, 0xb6, 0x08, 0x68, 0x0a, 0x5a, 0x0b, 0x1c, 0x0a, 0x4c, 0x06,
+0x82, 0x00, 0x6c, 0xfa, 0x78, 0xf5, 0xc2, 0xf2, 0x34, 0xf2, 0xbe, 0xf2, 0x4a, 0xf3, 0xe8, 0xf2,
+0x40, 0xf2, 0x02, 0xf2, 0xaa, 0xf3, 0x14, 0xf8, 0x2e, 0xff, 0x2a, 0x08, 0x5c, 0x11, 0xdc, 0x18,
+0xeb, 0x1c, 0x9b, 0x1c, 0x10, 0x18, 0x0c, 0x10, 0x18, 0x06, 0xb6, 0xfb, 0xca, 0xf1, 0x0a, 0xe9,
+0xa1, 0xe1, 0x73, 0xdc, 0x47, 0xda, 0xf9, 0xdb, 0x37, 0xe2, 0xb2, 0xec, 0xda, 0xfa, 0xce, 0x0a,
+0xda, 0x1a, 0x91, 0x28, 0x99, 0x31, 0x27, 0x34, 0x2b, 0x2f, 0x35, 0x23, 0x1c, 0x12, 0x80, 0xfe,
+0x08, 0xeb, 0xf3, 0xd9, 0x35, 0xcd, 0x09, 0xc6, 0xef, 0xc4, 0x07, 0xca, 0xe5, 0xd4, 0x54, 0xe5,
+0xd2, 0xf9, 0xae, 0x10, 0x4b, 0x27, 0x91, 0x3a, 0x3b, 0x47, 0x39, 0x4a, 0x31, 0x42, 0x01, 0x30,
+0xba, 0x16, 0x7a, 0xfa, 0x77, 0xdf, 0x3d, 0xc9, 0x21, 0xba, 0x2b, 0xb3, 0x37, 0xb4, 0x87, 0xbc,
+0x0d, 0xcc, 0xc3, 0xe1, 0x5e, 0xfc, 0x56, 0x19, 0x95, 0x35, 0xed, 0x4c, 0xf8, 0x5a, 0x20, 0x5c,
+0x1f, 0x4f, 0xfd, 0x35, 0x42, 0x15, 0x6c, 0xf2, 0x9f, 0xd2, 0xe3, 0xb9, 0x7a, 0xaa, 0xc8, 0xa4,
+0x16, 0xa8, 0x1f, 0xb4, 0x31, 0xc8, 0x99, 0xe3, 0x0c, 0x04, 0x6b, 0x26, 0x6f, 0x46, 0x0a, 0x5f,
+0x4e, 0x6b, 0xd2, 0x67, 0xad, 0x54, 0x55, 0x35, 0x68, 0x0f, 0xf2, 0xe8, 0x29, 0xc7, 0xfb, 0xad,
+0x2e, 0x9f, 0xf4, 0x9a, 0xea, 0xa0, 0x7d, 0xb0, 0x7b, 0xc9, 0xf0, 0xe9, 0xf6, 0x0e, 0x31, 0x34,
+0x9f, 0x54, 0x00, 0x6b, 0xf2, 0x72, 0x6a, 0x6a, 0xd7, 0x52, 0x6f, 0x30, 0xec, 0x08, 0xc7, 0xe1,
+0x13, 0xc0, 0x3a, 0xa7, 0x20, 0x99, 0x6a, 0x96, 0xe0, 0x9e, 0x8d, 0xb2, 0x01, 0xd0, 0xa8, 0xf4,
+0x24, 0x1c, 0x6d, 0x41, 0x54, 0x5f, 0x26, 0x71, 0xf4, 0x73, 0x2a, 0x67, 0xff, 0x4c, 0xb1, 0x29,
+0x02, 0x02, 0x51, 0xdb, 0x31, 0xba, 0x7a, 0xa2, 0x46, 0x96, 0x46, 0x96, 0xb2, 0xa2, 0x8d, 0xba,
+0xa7, 0xdb, 0xde, 0x01, 0x2f, 0x28, 0xa5, 0x49, 0xfc, 0x61, 0x50, 0x6e, 0xf8, 0x6c, 0x40, 0x5e,
+0x2d, 0x44, 0xeb, 0x21, 0xf0, 0xfb, 0xe3, 0xd6, 0xd7, 0xb7, 0xa8, 0xa2, 0x96, 0x99, 0x92, 0x9d,
+0xed, 0xad, 0xb3, 0xc8, 0x48, 0xea, 0xca, 0x0d, 0xd3, 0x2e, 0x9d, 0x49, 0xe4, 0x5b, 0xdc, 0x63,
+0xb6, 0x60, 0x6b, 0x52, 0x0b, 0x3a, 0x48, 0x1a, 0xaa, 0xf6, 0x79, 0xd4, 0xa7, 0xb8, 0x40, 0xa7,
+0x8c, 0xa2, 0x66, 0xaa, 0x5b, 0xbd, 0x0d, 0xd8, 0x42, 0xf6, 0xf2, 0x13, 0xd1, 0x2d, 0x37, 0x42,
+0xb5, 0x4f, 0x64, 0x55, 0x03, 0x52, 0x29, 0x45, 0x57, 0x2f, 0x84, 0x12, 0xac, 0xf2, 0xaf, 0xd4,
+0xd1, 0xbd, 0xa1, 0xb1, 0x69, 0xb1, 0x25, 0xbc, 0x1f, 0xcf, 0x6c, 0xe6, 0x9a, 0xfe, 0xaa, 0x14,
+0x4b, 0x27, 0xb7, 0x35, 0x63, 0x3f, 0x59, 0x43, 0x63, 0x40, 0xa1, 0x35, 0x3d, 0x23, 0x38, 0x0b,
+0x40, 0xf1, 0x15, 0xda, 0x13, 0xca, 0x6d, 0xc3, 0x75, 0xc6, 0xff, 0xd0, 0x33, 0xe0, 0xfe, 0xf0,
+0xe6, 0x00, 0x1e, 0x0f, 0xda, 0x1a, 0x67, 0x24, 0x07, 0x2b, 0x33, 0x2e, 0x93, 0x2c, 0x4b, 0x25,
+0x4c, 0x18, 0x4c, 0x07, 0x86, 0xf5, 0x7a, 0xe6, 0x2b, 0xdd, 0x89, 0xda, 0xcf, 0xdd, 0xf6, 0xe4,
+0xca, 0xed, 0x7e, 0xf6, 0x7c, 0xfe, 0x4e, 0x05, 0x32, 0x0b, 0x50, 0x10, 0x90, 0x14, 0xb4, 0x17,
+0xce, 0x18, 0xbe, 0x16, 0x74, 0x11, 0xa0, 0x09, 0x38, 0x01, 0x14, 0xfa, 0x90, 0xf5, 0xc2, 0xf3,
+0x1c, 0xf4, 0x66, 0xf5, 0x9a, 0xf6, 0x8c, 0xf7, 0xbc, 0xf7, 0xe6, 0xf7, 0x38, 0xf8, 0x94, 0xf9,
+0x9e, 0xfc, 0x58, 0x01, 0x3e, 0x07, 0xee, 0x0c, 0x42, 0x11, 0x20, 0x13, 0xdc, 0x12, 0xda, 0x10,
+0xf4, 0x0d, 0xa2, 0x0a, 0xa4, 0x06, 0x0c, 0x02, 0x88, 0xfc, 0x10, 0xf6, 0x20, 0xef, 0x8e, 0xe8,
+0x9b, 0xe3, 0x07, 0xe2, 0xfa, 0xe4, 0x56, 0xed, 0x3a, 0xfa, 0x16, 0x09, 0xf6, 0x16, 0x41, 0x21,
+0xb5, 0x26, 0x81, 0x27, 0x73, 0x24, 0x57, 0x1e, 0xe8, 0x15, 0x76, 0x0b, 0x00, 0xff, 0x4c, 0xf1,
+0x07, 0xe3, 0x29, 0xd6, 0x4f, 0xcd, 0x87, 0xca, 0x57, 0xd0, 0xc5, 0xde, 0xfe, 0xf3, 0xa8, 0x0b,
+0x6f, 0x21, 0x7d, 0x31, 0x7d, 0x3a, 0x61, 0x3c, 0xf3, 0x37, 0xe9, 0x2e, 0x91, 0x21, 0xd0, 0x10,
+0x44, 0xfd, 0xfe, 0xe7, 0x17, 0xd3, 0x9b, 0xc1, 0xd1, 0xb6, 0x31, 0xb6, 0x01, 0xc1, 0x69, 0xd6,
+0x20, 0xf3, 0xd4, 0x11, 0x11, 0x2d, 0x25, 0x41, 0x43, 0x4c, 0x7b, 0x4e, 0xb3, 0x48, 0xd1, 0x3b,
+0x07, 0x29, 0x80, 0x11, 0x44, 0xf6, 0xf3, 0xd9, 0x2b, 0xc0, 0xc9, 0xac, 0x12, 0xa4, 0xec, 0xa7,
+0xe7, 0xb8, 0xb5, 0xd4, 0x02, 0xf7, 0x0c, 0x1a, 0x97, 0x38, 0xdf, 0x4e, 0x1a, 0x5b, 0x2c, 0x5d,
+0xde, 0x54, 0x9f, 0x43, 0xaf, 0x2a, 0xfc, 0x0b, 0x58, 0xea, 0x93, 0xc9, 0x79, 0xae, 0x44, 0x9d,
+0x9e, 0x98, 0x84, 0xa1, 0x55, 0xb7, 0x1d, 0xd7, 0x5e, 0xfc, 0xc5, 0x21, 0x2f, 0x42, 0x26, 0x5a,
+0x1e, 0x67, 0xa2, 0x67, 0xe4, 0x5b, 0x51, 0x45, 0x07, 0x26, 0xa2, 0x01, 0x33, 0xdc, 0xc7, 0xba,
+0x18, 0xa2, 0xae, 0x94, 0x7c, 0x94, 0x66, 0xa1, 0xff, 0xb9, 0xd9, 0xdb, 0x7e, 0x02, 0x2b, 0x29,
+0xe9, 0x4a, 0x5c, 0x63, 0x0c, 0x6f, 0x8a, 0x6c, 0x0a, 0x5c, 0xed, 0x3f, 0x04, 0x1c, 0xcc, 0xf4,
+0xaf, 0xcf, 0x13, 0xb1, 0x8e, 0x9c, 0xa2, 0x93, 0xda, 0x96, 0xd0, 0xa5, 0x77, 0xbf, 0xaf, 0xe1,
+0xd0, 0x08, 0xf5, 0x2f, 0x8f, 0x51, 0xc4, 0x68, 0xaa, 0x71, 0xe0, 0x6a, 0x98, 0x55, 0xbd, 0x35,
+0x30, 0x10, 0x22, 0xea, 0x41, 0xc8, 0x0b, 0xae, 0xe8, 0x9d, 0x6e, 0x98, 0xb6, 0x9d, 0x95, 0xad,
+0x9b, 0xc7, 0xfa, 0xe9, 0x8e, 0x10, 0x85, 0x36, 0xde, 0x55, 0x5e, 0x69, 0x8a, 0x6d, 0xb8, 0x61,
+0xf7, 0x48, 0x0b, 0x28, 0x50, 0x04, 0x53, 0xe2, 0xbf, 0xc5, 0x09, 0xb1, 0x44, 0xa5, 0xac, 0xa2,
+0x7c, 0xa9, 0x01, 0xba, 0x8d, 0xd3, 0x1e, 0xf4, 0xe6, 0x17, 0xa3, 0x39, 0xad, 0x53, 0x66, 0x61,
+0x7a, 0x60, 0x03, 0x52, 0xa7, 0x39, 0xc0, 0x1b, 0x42, 0xfd, 0x9d, 0xe1, 0x49, 0xcb, 0x73, 0xbb,
+0xc1, 0xb2, 0xab, 0xb1, 0xb3, 0xb8, 0x0d, 0xc8, 0xed, 0xde, 0xb0, 0xfb, 0x4a, 0x1a, 0xf3, 0x35,
+0xad, 0x49, 0x3f, 0x52, 0xf3, 0x4e, 0x0f, 0x41, 0xc1, 0x2b, 0x2e, 0x13, 0xce, 0xfa, 0x50, 0xe5,
+0x39, 0xd4, 0x65, 0xc8, 0x71, 0xc2, 0x2d, 0xc3, 0x51, 0xca, 0x11, 0xd8, 0x88, 0xeb, 0x60, 0x02,
+0xa0, 0x19, 0x55, 0x2d, 0x6f, 0x3a, 0xff, 0x3e, 0xcf, 0x3a, 0xef, 0x2e, 0x7d, 0x1e, 0xf6, 0x0b,
+0x5e, 0xfa, 0x9a, 0xeb, 0x77, 0xe0, 0x9f, 0xd9, 0x0b, 0xd7, 0xa9, 0xd8, 0x4f, 0xde, 0x76, 0xe7,
+0x1c, 0xf3, 0x82, 0x00, 0x1a, 0x0e, 0x30, 0x1a, 0xe9, 0x22, 0xaf, 0x26, 0x0b, 0x25, 0xd5, 0x1e,
+0x2e, 0x15, 0x1c, 0x0a, 0x68, 0xff, 0x9c, 0xf6, 0x68, 0xf0, 0x24, 0xed, 0xa2, 0xec, 0x22, 0xee,
+0x24, 0xf0, 0x46, 0xf2, 0xea, 0xf4, 0x5e, 0xf8, 0x92, 0xfd, 0xf6, 0x03, 0x44, 0x0a, 0xfa, 0x0e,
+0x38, 0x11, 0x80, 0x10, 0xbe, 0x0d, 0x50, 0x0a, 0x60, 0x07, 0x02, 0x06, 0xac, 0x05, 0xca, 0x05,
+0x38, 0x05, 0x92, 0x02, 0x76, 0xfd, 0xae, 0xf6, 0xd0, 0xef, 0x28, 0xeb, 0x42, 0xea, 0x22, 0xed,
+0x10, 0xf3, 0x14, 0xfa, 0x7a, 0x00, 0xce, 0x05, 0x4a, 0x0a, 0xa2, 0x0e, 0x82, 0x13, 0x5a, 0x18,
+0x45, 0x1c, 0xb7, 0x1d, 0xac, 0x1a, 0x70, 0x12, 0x9c, 0x05, 0xe6, 0xf5, 0x94, 0xe6, 0x9b, 0xda,
+0x5f, 0xd4, 0xf7, 0xd4, 0x23, 0xdb, 0xfc, 0xe4, 0xd4, 0xf0, 0x78, 0xfd, 0x68, 0x0a, 0x96, 0x17,
+0xd3, 0x23, 0xf1, 0x2d, 0xbf, 0x33, 0x2d, 0x33, 0x55, 0x2b, 0x5d, 0x1c, 0xe8, 0x07, 0xf0, 0xf0,
+0x11, 0xdb, 0xef, 0xc9, 0x9f, 0xc0, 0xc5, 0xbf, 0xff, 0xc6, 0x83, 0xd4, 0x86, 0xe6, 0x6c, 0xfb,
+0x78, 0x11, 0x7f, 0x26, 0x47, 0x38, 0x53, 0x44, 0x6b, 0x48, 0xa7, 0x43, 0xe3, 0x35, 0x79, 0x20,
+0xe0, 0x05, 0x2e, 0xe9, 0x53, 0xce, 0x4f, 0xb9, 0x41, 0xad, 0xff, 0xab, 0x79, 0xb5, 0x35, 0xc8,
+0xd1, 0xe1, 0x5c, 0xff, 0x1d, 0x1d, 0xa7, 0x37, 0x99, 0x4b, 0x9a, 0x56, 0x7a, 0x57, 0x0b, 0x4e,
+0x4d, 0x3b, 0x01, 0x21, 0xdc, 0x01, 0xed, 0xe0, 0x61, 0xc2, 0x88, 0xaa, 0x6e, 0x9d, 0x66, 0x9d,
+0xbc, 0xaa, 0xc3, 0xc3, 0xcc, 0xe4, 0x18, 0x09, 0x77, 0x2b, 0xb9, 0x47, 0xf2, 0x5a, 0x66, 0x63,
+0x8e, 0x60, 0x03, 0x53, 0x63, 0x3c, 0x83, 0x1e, 0xbe, 0xfb, 0x45, 0xd7, 0xcd, 0xb5, 0x9e, 0x9c,
+0x48, 0x90, 0x74, 0x93, 0x4a, 0xa6, 0xfd, 0xc5, 0x2e, 0xed, 0x52, 0x15, 0xcd, 0x38, 0xcf, 0x53,
+0x58, 0x64, 0x80, 0x69, 0x50, 0x63, 0xd7, 0x52, 0x8f, 0x39, 0x1a, 0x19, 0xb0, 0xf3, 0x1d, 0xcd,
+0xaa, 0xaa, 0x7a, 0x92, 0x5a, 0x89, 0x90, 0x91, 0x20, 0xaa, 0x81, 0xce, 0x0a, 0xf8, 0x07, 0x20,
+0x5d, 0x41, 0x38, 0x59, 0x8a, 0x66, 0xd4, 0x68, 0x68, 0x60, 0x23, 0x4e, 0x1d, 0x33, 0xf8, 0x10,
+0x60, 0xea, 0x89, 0xc3, 0xac, 0xa2, 0xd4, 0x8d, 0x6a, 0x89, 0xa4, 0x96, 0xd9, 0xb2, 0xa1, 0xd8,
+0x3e, 0x01, 0x97, 0x26, 0x91, 0x44, 0x52, 0x59, 0xce, 0x63, 0xdc, 0x63, 0x84, 0x59, 0x57, 0x45,
+0xf5, 0x28, 0x2e, 0x06, 0x69, 0xe0, 0x7f, 0xbc, 0x58, 0xa0, 0x3a, 0x91, 0x36, 0x92, 0xbc, 0xa2,
+0x8f, 0xbf, 0x6f, 0xe3, 0x4a, 0x08, 0x49, 0x29, 0x35, 0x43, 0x37, 0x54, 0xd2, 0x5b, 0x64, 0x59,
+0x1b, 0x4d, 0x09, 0x38, 0xc4, 0x1b, 0x20, 0xfb, 0xb7, 0xd9, 0x29, 0xbc, 0xcc, 0xa6, 0x8a, 0x9d,
+0x74, 0xa1, 0x07, 0xb2, 0x39, 0xcc, 0x6c, 0xeb, 0x48, 0x0b, 0x85, 0x27, 0x69, 0x3d, 0x19, 0x4b,
+0xb5, 0x4f, 0xdd, 0x4a, 0x7b, 0x3d, 0xbb, 0x28, 0x18, 0x0f, 0xae, 0xf3, 0x99, 0xd9, 0xd9, 0xc3,
+0x4f, 0xb5, 0x85, 0xaf, 0x1f, 0xb4, 0x2f, 0xc2, 0xc9, 0xd7, 0xba, 0xf1, 0x22, 0x0c, 0x5f, 0x23,
+0x91, 0x34, 0x0b, 0x3e, 0xfb, 0x3e, 0x6f, 0x38, 0xed, 0x2a, 0x2c, 0x19, 0x6a, 0x05, 0xec, 0xf1,
+0xa1, 0xe0, 0x73, 0xd2, 0xa1, 0xc8, 0xbd, 0xc4, 0xa1, 0xc7, 0x8d, 0xd1, 0x9b, 0xe1, 0x40, 0xf5,
+0x4c, 0x09, 0xa6, 0x1a, 0x67, 0x26, 0xab, 0x2b, 0x7d, 0x2a, 0xa3, 0x23, 0x90, 0x19, 0xca, 0x0d,
+0x78, 0x02, 0x46, 0xf8, 0x3a, 0xef, 0x04, 0xe7, 0x2d, 0xe0, 0xb1, 0xdb, 0x3b, 0xdb, 0xf7, 0xdf,
+0x38, 0xe9, 0xb6, 0xf5, 0x8a, 0x02, 0x00, 0x0d, 0x7a, 0x13, 0x3e, 0x15, 0x58, 0x13, 0x62, 0x0f,
+0xfc, 0x0a, 0x70, 0x07, 0x30, 0x05, 0x7a, 0x03, 0x1c, 0x01, 0x3e, 0xfd, 0xcc, 0xf7, 0x44, 0xf2,
+0x2c, 0xee, 0xdc, 0xec, 0xc2, 0xee, 0xc4, 0xf2, 0x3a, 0xf7, 0x9a, 0xfa, 0x1e, 0xfc, 0x84, 0xfc,
+0xf2, 0xfc, 0x96, 0xfe, 0x08, 0x02, 0x54, 0x07, 0x46, 0x0d, 0x7a, 0x12, 0x0e, 0x15, 0xd2, 0x13,
+0xe8, 0x0e, 0x36, 0x07, 0x60, 0xfe, 0xf6, 0xf5, 0x04, 0xef, 0xc8, 0xe9, 0x1a, 0xe6, 0xbb, 0xe3,
+0x37, 0xe3, 0x3e, 0xe5, 0xa6, 0xea, 0x44, 0xf3, 0xac, 0xfe, 0x8a, 0x0b, 0x94, 0x18, 0x59, 0x23,
+0xfb, 0x29, 0xcf, 0x2a, 0x29, 0x25, 0xea, 0x19, 0x62, 0x0a, 0x38, 0xf9, 0xa2, 0xe8, 0xcf, 0xda,
+0xd3, 0xd0, 0xd7, 0xcb, 0x25, 0xcc, 0x0b, 0xd2, 0x15, 0xdd, 0x56, 0xec, 0xb0, 0xfe, 0x7a, 0x12,
+0x65, 0x25, 0x4b, 0x35, 0x27, 0x3f, 0xe5, 0x40, 0x2f, 0x39, 0x9b, 0x28, 0x8c, 0x11, 0x6a, 0xf7,
+0x5d, 0xde, 0xb7, 0xc9, 0x5d, 0xbc, 0xef, 0xb6, 0xdd, 0xb9, 0xdd, 0xc3, 0x2b, 0xd4, 0x58, 0xe9,
+0x82, 0x01, 0xda, 0x1a, 0xd7, 0x32, 0x6b, 0x46, 0x1b, 0x52, 0xf5, 0x52, 0x57, 0x47, 0x61, 0x30,
+0x8a, 0x11, 0xbc, 0xef, 0xbd, 0xd0, 0xe9, 0xb8, 0xe8, 0xaa, 0x66, 0xa7, 0x3b, 0xad, 0x53, 0xbb,
+0x09, 0xd0, 0x06, 0xea, 0x5a, 0x07, 0xb7, 0x25, 0xe1, 0x41, 0xe0, 0x57, 0x50, 0x63, 0x9a, 0x60,
+0x39, 0x4f, 0x1b, 0x31, 0x8c, 0x0b, 0xd8, 0xe4, 0x01, 0xc3, 0xb6, 0xaa, 0xf0, 0x9d, 0x96, 0x9c,
+0x5a, 0xa5, 0x19, 0xb7, 0x31, 0xd0, 0xf4, 0xee, 0xf6, 0x10, 0x15, 0x33, 0x5b, 0x51, 0xaa, 0x66,
+0xb6, 0x6e, 0xd4, 0x66, 0x6d, 0x4f, 0x55, 0x2c, 0x5e, 0x03, 0x07, 0xdb, 0x1b, 0xb9, 0xd8, 0xa1,
+0xa0, 0x96, 0x42, 0x97, 0x9c, 0xa2, 0x87, 0xb7, 0x83, 0xd4, 0x2e, 0xf7, 0x75, 0x1c, 0x03, 0x40,
+0x14, 0x5d, 0xfa, 0x6e, 0xe8, 0x71, 0xae, 0x64, 0x5d, 0x49, 0x4d, 0x24, 0x08, 0xfb, 0x93, 0xd3,
+0x0f, 0xb3, 0x2a, 0x9d, 0x9a, 0x93, 0x52, 0x96, 0xb0, 0xa4, 0x61, 0xbd, 0x41, 0xde, 0xd4, 0x03,
+0xaf, 0x29, 0x0b, 0x4b, 0x78, 0x63, 0x54, 0x6f, 0xca, 0x6c, 0x48, 0x5c, 0x0b, 0x40, 0x26, 0x1c,
+0x0c, 0xf5, 0xcb, 0xcf, 0x41, 0xb1, 0x5e, 0x9d, 0xf6, 0x95, 0x9e, 0x9b, 0x65, 0xad, 0x57, 0xc9,
+0x16, 0xec, 0xd8, 0x10, 0x15, 0x33, 0xbd, 0x4e, 0xb8, 0x60, 0x32, 0x67, 0xa0, 0x61, 0x81, 0x50,
+0xdd, 0x35, 0x88, 0x14, 0x44, 0xf0, 0xf9, 0xcd, 0x81, 0xb2, 0xa2, 0xa1, 0xa4, 0x9d, 0x90, 0xa6,
+0x2b, 0xbb, 0x2b, 0xd8, 0x20, 0xf9, 0x78, 0x19, 0x4d, 0x35, 0x23, 0x4a, 0x7c, 0x56, 0xca, 0x59,
+0x5d, 0x53, 0xe7, 0x43, 0xfd, 0x2b, 0x16, 0x0e, 0xa4, 0xed, 0x49, 0xcf, 0xe9, 0xb7, 0x4f, 0xab,
+0x1e, 0xab, 0xcd, 0xb6, 0x0b, 0xcc, 0xa4, 0xe6, 0x64, 0x02, 0xa6, 0x1b, 0x05, 0x30, 0x8f, 0x3e,
+0xd7, 0x46, 0x67, 0x48, 0xe1, 0x42, 0xdb, 0x35, 0xe9, 0x21, 0x9e, 0x08, 0x82, 0xed, 0xbd, 0xd4,
+0xf7, 0xc2, 0x05, 0xbb, 0xf7, 0xbd, 0x5f, 0xca, 0xd9, 0xdc, 0x04, 0xf2, 0x2c, 0x06, 0x66, 0x17,
+0xa1, 0x24, 0xe1, 0x2d, 0x35, 0x33, 0x5d, 0x34, 0xa3, 0x30, 0x65, 0x27, 0xc4, 0x18, 0xf2, 0x05,
+0xdc, 0xf1, 0x1f, 0xe0, 0x17, 0xd4, 0x3d, 0xd0, 0x1f, 0xd4, 0x05, 0xde, 0xee, 0xea, 0x2c, 0xf8,
+0x06, 0x04, 0x9c, 0x0d, 0xd6, 0x14, 0x00, 0x1a, 0x8d, 0x1d, 0x2b, 0x1f, 0x5b, 0x1e, 0x26, 0x1a,
+0x38, 0x12, 0x9a, 0x07, 0xe2, 0xfb, 0xa4, 0xf1, 0xf4, 0xea, 0xbc, 0xe8, 0xaa, 0xea, 0x14, 0xef,
+0x4e, 0xf4, 0x1a, 0xf9, 0xee, 0xfc, 0x6c, 0xff, 0x58, 0x01, 0x24, 0x03, 0xae, 0x05, 0x1a, 0x09,
+0xa8, 0x0c, 0x86, 0x0f, 0xa2, 0x10, 0x88, 0x0f, 0x96, 0x0c, 0x96, 0x08, 0x72, 0x04, 0x12, 0x01,
+0x34, 0xfe, 0x86, 0xfb, 0xc6, 0xf8, 0xb6, 0xf5, 0x3e, 0xf2, 0xf2, 0xee, 0x44, 0xec, 0xce, 0xeb,
+0x96, 0xee, 0x42, 0xf5, 0x3e, 0xff, 0xd6, 0x0a, 0xb2, 0x15, 0xc5, 0x1d, 0x6b, 0x21, 0xb7, 0x20,
+0x77, 0x1c, 0x8e, 0x15, 0x2a, 0x0d, 0xd0, 0x03, 0xfa, 0xf9, 0xd4, 0xef, 0xee, 0xe5, 0xdd, 0xdc,
+0xab, 0xd6, 0x09, 0xd5, 0xe5, 0xd9, 0xba, 0xe5, 0x4c, 0xf7, 0xc6, 0x0b, 0x51, 0x1f, 0x0d, 0x2e,
+0xe9, 0x35, 0x7b, 0x36, 0xc9, 0x30, 0x79, 0x26, 0xfc, 0x18, 0x5c, 0x09, 0x8a, 0xf8, 0x3a, 0xe7,
+0x81, 0xd6, 0xd7, 0xc8, 0x4b, 0xc0, 0x13, 0xc0, 0x45, 0xc9, 0x47, 0xdc, 0x20, 0xf6, 0xde, 0x12,
+0xeb, 0x2c, 0x15, 0x40, 0xed, 0x49, 0x19, 0x4a, 0x41, 0x42, 0xd3, 0x33, 0x11, 0x21, 0x0c, 0x0b,
+0x2e, 0xf3, 0x11, 0xdb, 0x2f, 0xc5, 0x9b, 0xb4, 0xcd, 0xac, 0x0f, 0xb0, 0x77, 0xbf, 0x93, 0xd9,
+0xa4, 0xfa, 0xcf, 0x1c, 0x9f, 0x3a, 0x83, 0x4f, 0x7c, 0x59, 0x8c, 0x58, 0xbf, 0x4d, 0x67, 0x3b,
+0xfb, 0x22, 0xb0, 0x06, 0x46, 0xe8, 0x09, 0xcb, 0x53, 0xb2, 0x76, 0xa2, 0x18, 0x9e, 0xde, 0xa6,
+0x7d, 0xbc, 0x03, 0xdc, 0x3e, 0x01, 0x3b, 0x26, 0xb9, 0x45, 0xba, 0x5b, 0x22, 0x66, 0x40, 0x64,
+0xfe, 0x56, 0x35, 0x40, 0xf7, 0x21, 0x4a, 0xff, 0x79, 0xdb, 0x2d, 0xbb, 0xfa, 0xa2, 0x34, 0x96,
+0xe6, 0x96, 0x0e, 0xa5, 0xfb, 0xbe, 0xb1, 0xe1, 0x9a, 0x08, 0x95, 0x2e, 0xb9, 0x4e, 0xfc, 0x64,
+0x72, 0x6e, 0x48, 0x6a, 0xfa, 0x58, 0xb1, 0x3c, 0x14, 0x19, 0x00, 0xf2, 0xab, 0xcc, 0xcf, 0xad,
+0x92, 0x99, 0x00, 0x92, 0xa2, 0x97, 0x50, 0xa9, 0x5b, 0xc5, 0xae, 0xe8, 0x58, 0x0f, 0x1f, 0x35,
+0xe2, 0x54, 0x6c, 0x6a, 0x14, 0x72, 0x86, 0x6a, 0xab, 0x54, 0x1d, 0x34, 0x36, 0x0d, 0xa6, 0xe5,
+0x79, 0xc2, 0xdc, 0xa7, 0xb2, 0x98, 0x6a, 0x95, 0xb4, 0x9d, 0x79, 0xb0, 0x5f, 0xcc, 0x24, 0xef,
+0x40, 0x15, 0x1d, 0x3a, 0xbc, 0x58, 0x00, 0x6c, 0x24, 0x70, 0x66, 0x64, 0xdd, 0x4a, 0xf3, 0x27,
+0x76, 0x01, 0x6f, 0xdc, 0xd5, 0xbd, 0xb4, 0xa8, 0x46, 0x9e, 0x90, 0x9e, 0x9c, 0xa8, 0xb1, 0xbb,
+0xa7, 0xd6, 0x86, 0xf7, 0xe8, 0x1a, 0xb7, 0x3c, 0x60, 0x57, 0x30, 0x66, 0x32, 0x66, 0x0e, 0x57,
+0x5f, 0x3c, 0xd6, 0x1a, 0x00, 0xf8, 0x8d, 0xd8, 0x0d, 0xc0, 0x61, 0xb0, 0xfa, 0xa9, 0x53, 0xac,
+0xab, 0xb6, 0xd9, 0xc8, 0x6f, 0xe1, 0xf6, 0xfe, 0x1b, 0x1e, 0xa9, 0x3a, 0xe7, 0x4f, 0x92, 0x59,
+0xe6, 0x55, 0xf1, 0x45, 0x3f, 0x2d, 0x92, 0x10, 0x68, 0xf4, 0x25, 0xdc, 0xfb, 0xc9, 0x27, 0xbf,
+0x35, 0xbb, 0x21, 0xbe, 0x9d, 0xc7, 0x1f, 0xd7, 0x04, 0xec, 0x3e, 0x04, 0x4f, 0x1d, 0x39, 0x33,
+0x61, 0x42, 0x9f, 0x47, 0x63, 0x42, 0x0b, 0x34, 0xe1, 0x1f, 0xba, 0x09, 0xa4, 0xf4, 0x3b, 0xe3,
+0xa9, 0xd6, 0x99, 0xcf, 0xf3, 0xcd, 0x57, 0xd1, 0x51, 0xd9, 0x5e, 0xe5, 0x60, 0xf4, 0xf2, 0x04,
+0x40, 0x15, 0x0d, 0x23, 0x49, 0x2c, 0x71, 0x2f, 0xf9, 0x2b, 0x0f, 0x23, 0x68, 0x16, 0x4a, 0x08,
+0x02, 0xfb, 0xf2, 0xef, 0x22, 0xe8, 0x50, 0xe4, 0x28, 0xe4, 0xfc, 0xe6, 0xd6, 0xeb, 0xb6, 0xf1,
+0x52, 0xf8, 0x8e, 0xff, 0x02, 0x07, 0x82, 0x0e, 0xe0, 0x14, 0x8a, 0x18, 0xd4, 0x18, 0xb4, 0x15,
+0xf6, 0x0f, 0x2e, 0x09, 0xf4, 0x02, 0x4a, 0xfe, 0xc6, 0xfb, 0xe6, 0xfa, 0x34, 0xfb, 0x46, 0xfb,
+0x3c, 0xfa, 0xf8, 0xf7, 0x52, 0xf5, 0x76, 0xf3, 0xb4, 0xf3, 0xa0, 0xf6, 0xa6, 0xfb, 0xb2, 0x01,
+0xe0, 0x06, 0x9c, 0x0a, 0xcc, 0x0c, 0x3c, 0x0e, 0x96, 0x0f, 0x22, 0x11, 0x8c, 0x12, 0x08, 0x13,
+0x30, 0x11, 0xde, 0x0b, 0xce, 0x02, 0x28, 0xf7, 0x28, 0xeb, 0x9d, 0xe1, 0xaf, 0xdc, 0xc9, 0xdd,
+0x3a, 0xe4, 0x22, 0xee, 0x68, 0xf9, 0x2e, 0x04, 0x34, 0x0e, 0x38, 0x17, 0x67, 0x1f, 0xdb, 0x25,
+0xab, 0x29, 0x1b, 0x29, 0xf7, 0x22, 0xac, 0x16, 0x22, 0x05, 0x2c, 0xf1, 0xd3, 0xdd, 0xe7, 0xce,
+0x0b, 0xc7, 0x81, 0xc7, 0xb5, 0xcf, 0x95, 0xdd, 0xb4, 0xee, 0x08, 0x01, 0x7c, 0x13, 0x75, 0x24,
+0xc9, 0x32, 0x71, 0x3c, 0xb7, 0x3f, 0x79, 0x3b, 0xfb, 0x2e, 0x48, 0x1b, 0x84, 0x02, 0x22, 0xe8,
+0xdb, 0xcf, 0x71, 0xbd, 0xb1, 0xb3, 0x1f, 0xb4, 0x6b, 0xbe, 0xbf, 0xd0, 0xaa, 0xe8, 0x58, 0x03,
+0xc7, 0x1d, 0x6d, 0x35, 0x31, 0x47, 0x21, 0x51, 0x95, 0x51, 0x21, 0x48, 0x8f, 0x35, 0xbc, 0x1b,
+0xa4, 0xfd, 0xab, 0xde, 0xe9, 0xc2, 0xd3, 0xad, 0x24, 0xa3, 0x5a, 0xa4, 0xd9, 0xb1, 0xfb, 0xc9,
+0x52, 0xe9, 0xb8, 0x0b, 0x75, 0x2c, 0x49, 0x47, 0x0e, 0x59, 0x10, 0x60, 0xc0, 0x5b, 0x0b, 0x4d,
+0xad, 0x35, 0xe0, 0x17, 0x82, 0xf6, 0xd1, 0xd4, 0x9d, 0xb6, 0x5c, 0xa0, 0xb0, 0x95, 0x5c, 0x99,
+0x8f, 0xab, 0x13, 0xca, 0x38, 0xf0, 0xf2, 0x17, 0x67, 0x3b, 0x26, 0x56, 0x8a, 0x65, 0x94, 0x68,
+0x08, 0x60, 0x5d, 0x4d, 0xcb, 0x32, 0xa0, 0x12, 0x1e, 0xef, 0x91, 0xcb, 0x1d, 0xac, 0xbe, 0x95,
+0x16, 0x8d, 0xdc, 0x94, 0xcb, 0xac, 0x5d, 0xd1, 0xf0, 0xfb, 0x37, 0x25, 0x5b, 0x47, 0xb0, 0x5e,
+0xf4, 0x69, 0x60, 0x69, 0x16, 0x5e, 0xa5, 0x49, 0xcd, 0x2d, 0xf2, 0x0b, 0xe8, 0xe6, 0x55, 0xc2,
+0x7c, 0xa3, 0xbe, 0x8f, 0x58, 0x8b, 0x2a, 0x98, 0x95, 0xb4, 0xaf, 0xdb, 0x5e, 0x06, 0xe3, 0x2d,
+0xfd, 0x4c, 0x26, 0x61, 0x68, 0x69, 0x1c, 0x66, 0x96, 0x58, 0x4b, 0x42, 0xd9, 0x24, 0x56, 0x02,
+0x87, 0xdd, 0xf5, 0xba, 0xb0, 0x9f, 0xc0, 0x90, 0x64, 0x91, 0x5a, 0xa2, 0xdb, 0xc0, 0x6a, 0xe7,
+0x4e, 0x0f, 0x45, 0x32, 0xb9, 0x4c, 0x7a, 0x5c, 0x70, 0x61, 0xe2, 0x5b, 0xf5, 0x4c, 0x19, 0x36,
+0xfa, 0x18, 0xde, 0xf7, 0x25, 0xd6, 0x5b, 0xb8, 0x14, 0xa3, 0x0e, 0x9a, 0x06, 0x9f, 0x59, 0xb1,
+0x41, 0xce, 0x98, 0xf0, 0xf8, 0x12, 0xaf, 0x30, 0xab, 0x46, 0x75, 0x53, 0x4e, 0x56, 0x93, 0x4f,
+0x17, 0x40, 0x9b, 0x29, 0x14, 0x0e, 0x78, 0xf0, 0x47, 0xd4, 0x47, 0xbd, 0xb9, 0xae, 0x44, 0xaa,
+0xb1, 0xb0, 0x21, 0xc1, 0x51, 0xd9, 0xb4, 0xf5, 0xec, 0x11, 0x47, 0x2a, 0x09, 0x3c, 0xa9, 0x45,
+0x61, 0x46, 0xb1, 0x3e, 0xb3, 0x2f, 0x6c, 0x1b, 0x7e, 0x04, 0x82, 0xed, 0x61, 0xd9, 0xeb, 0xc9,
+0x95, 0xc0, 0x17, 0xbe, 0x05, 0xc3, 0x55, 0xcf, 0xd1, 0xe1, 0xdc, 0xf7, 0x1c, 0x0e, 0x39, 0x21,
+0x97, 0x2e, 0xc5, 0x34, 0x77, 0x33, 0x73, 0x2b, 0xa9, 0x1e, 0x42, 0x0f, 0xa4, 0xff, 0xa2, 0xf1,
+0x10, 0xe6, 0x35, 0xdd, 0x31, 0xd7, 0x97, 0xd4, 0x69, 0xd6, 0x69, 0xdd, 0x1a, 0xe9, 0xf2, 0xf7,
+0x44, 0x07, 0x38, 0x14, 0xa3, 0x1c, 0x69, 0x1f, 0xfd, 0x1c, 0xea, 0x16, 0x26, 0x0f, 0x86, 0x07,
+0x06, 0x01, 0xb2, 0xfb, 0x10, 0xf7, 0xa2, 0xf2, 0xa0, 0xee, 0x0e, 0xec, 0xba, 0xeb, 0xec, 0xed,
+0xea, 0xf1, 0x6c, 0xf6, 0x58, 0xfa, 0x1c, 0xfd, 0x98, 0xfe, 0x3e, 0xff, 0x68, 0xff, 0x2e, 0xff,
+0xc4, 0xfe, 0x1e, 0xfe, 0x96, 0xfd, 0x34, 0xfd, 0x04, 0xfd, 0xda, 0xfc, 0xc4, 0xfc, 0xa6, 0xfc,
+0x8e, 0xfc, 0x76, 0xfc, 0x42, 0xfc, 0x2a, 0xfc, 0x34, 0xfc, 0x54, 0xfc, 0x88, 0xfc, 0xb8, 0xfc,
+0xda, 0xfc, 0x16, 0xfd, 0x4c, 0xfd, 0x78, 0xfd, 0x9e, 0xfd, 0xb4, 0xfd, 0xbc, 0xfd, 0xc8, 0xfd,
+0xcc, 0xfd, 0xe8, 0xfd, 0xf0, 0xfd, 0xe2, 0xfd, 0xd6, 0xfd, 0xce, 0xfd, 0xfc, 0xfd, 0x14, 0xfe,
+0x12, 0xfe, 0xf2, 0xfd, 0xda, 0xfd, 0xc2, 0xfd, 0xb4, 0xfd, 0xb2, 0xfd, 0xc4, 0xfd, 0xfa, 0xfd,
+0x2e, 0xfe, 0x56, 0xfe, 0x7c, 0xfe, 0x9a, 0xfe, 0xae, 0xfe, 0xb6, 0xfe, 0xa0, 0xfe, 0x76, 0xfe,
+0x3c, 0xfe, 0xfe, 0xfd, 0xf4, 0xfd, 0x26, 0xfe, 0x78, 0xfe, 0xdc, 0xfe, 0xfc, 0xfe, 0xfc, 0xfe,
+0xfa, 0xfe, 0x04, 0xff, 0x28, 0xff, 0x30, 0xff, 0x18, 0xff, 0xe4, 0xfe, 0xc2, 0xfe, 0xb4, 0xfe,
+0xbe, 0xfe, 0xda, 0xfe, 0xe8, 0xfe, 0xe6, 0xfe, 0xe2, 0xfe, 0xee, 0xfe, 0x1e, 0xff, 0x70, 0xff,
+0xc2, 0xff, 0x04, 0x00, 0x44, 0x00, 0x84, 0x00, 0xa2, 0x00, 0x8c, 0x00, 0x5c, 0x00, 0x14, 0x00,
+0xc8, 0xff, 0x72, 0xff, 0x1a, 0xff, 0xe0, 0xfe, 0xca, 0xfe, 0xc4, 0xfe, 0xd6, 0xfe, 0x00, 0xff,
+0x50, 0xff, 0xba, 0xff, 0x28, 0x00, 0x84, 0x00, 0xc4, 0x00, 0xdc, 0x00, 0xd0, 0x00, 0xb0, 0x00,
+0x82, 0x00, 0x58, 0x00, 0x26, 0x00, 0xde, 0xff, 0x76, 0xff, 0x1c, 0xff, 0xde, 0xfe, 0xd6, 0xfe,
+0xee, 0xfe, 0x1e, 0xff, 0x64, 0xff, 0xb0, 0xff, 0xf8, 0xff, 0x36, 0x00, 0x6e, 0x00, 0x9a, 0x00,
+0xc0, 0x00, 0xbe, 0x00, 0x96, 0x00, 0x66, 0x00, 0x40, 0x00, 0x20, 0x00, 0x0c, 0x00, 0xfc, 0xff,
+0xf0, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0x08, 0x00, 0x38, 0x00, 0x74, 0x00, 0xa8, 0x00, 0xcc, 0x00,
+0xec, 0x00, 0xfc, 0x00, 0xee, 0x00, 0xbc, 0x00, 0x6c, 0x00, 0x22, 0x00, 0xec, 0xff, 0xc8, 0xff,
+0xb6, 0xff, 0xb6, 0xff, 0xb0, 0xff, 0xb8, 0xff, 0xc6, 0xff, 0xe8, 0xff, 0x24, 0x00, 0x74, 0x00,
+0xbc, 0x00, 0xe8, 0x00, 0x10, 0x01, 0x24, 0x01, 0x24, 0x01, 0xf8, 0x00, 0xb6, 0x00, 0x68, 0x00,
+0x24, 0x00, 0xee, 0xff, 0xcc, 0xff, 0xd4, 0xff, 0xf2, 0xff, 0x24, 0x00, 0x4e, 0x00, 0x70, 0x00,
+0xae, 0x00, 0xf0, 0x00, 0x36, 0x01, 0x64, 0x01, 0x7a, 0x01, 0x70, 0x01, 0x3e, 0x01, 0xf6, 0x00,
+0x92, 0x00, 0x38, 0x00, 0xfe, 0xff, 0xd2, 0xff, 0xb2, 0xff, 0xb8, 0xff, 0xd2, 0xff, 0xf4, 0xff,
+0x0e, 0x00, 0x38, 0x00, 0x7a, 0x00, 0xb8, 0x00, 0xea, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xee, 0x00,
+0xe8, 0x00, 0xcc, 0x00, 0x90, 0x00, 0x72, 0x00, 0x56, 0x00, 0x46, 0x00, 0x36, 0x00, 0x20, 0x00,
+0x10, 0x00, 0x08, 0x00, 0x16, 0x00, 0x4c, 0x00, 0x92, 0x00, 0xda, 0x00, 0x04, 0x01, 0xfe, 0x00,
+0xf8, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xd6, 0x00, 0x94, 0x00, 0x58, 0x00, 0x44, 0x00, 0x54, 0x00,
+0x7e, 0x00, 0x88, 0x00, 0x7a, 0x00, 0x5c, 0x00, 0x42, 0x00, 0x44, 0x00, 0x5a, 0x00, 0x8a, 0x00,
+0xa8, 0x00, 0x9a, 0x00, 0x8a, 0x00, 0x94, 0x00, 0xa6, 0x00, 0xa8, 0x00, 0x98, 0x00, 0x96, 0x00,
+0x9c, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x8e, 0x00, 0x84, 0x00, 0x7e, 0x00, 0x76, 0x00, 0x70, 0x00,
+0x60, 0x00, 0x72, 0x00, 0x84, 0x00, 0xa0, 0x00, 0xc0, 0x00, 0xe6, 0x00, 0xee, 0x00, 0xd4, 0x00,
+0xa8, 0x00, 0x8e, 0x00, 0x98, 0x00, 0xa8, 0x00, 0xac, 0x00, 0xb2, 0x00, 0xae, 0x00, 0xb4, 0x00,
+0xbe, 0x00, 0xc8, 0x00, 0xd4, 0x00, 0xca, 0x00, 0xb6, 0x00, 0x90, 0x00, 0x70, 0x00, 0x68, 0x00,
+0x7e, 0x00, 0x92, 0x00, 0xa0, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xb2, 0x00, 0xb0, 0x00, 0xc6, 0x00,
+0xc8, 0x00, 0xcc, 0x00, 0xc2, 0x00, 0xa2, 0x00, 0x8e, 0x00, 0x7a, 0x00, 0x7c, 0x00, 0x72, 0x00,
+0x5a, 0x00, 0x54, 0x00, 0x52, 0x00, 0x50, 0x00, 0x52, 0x00, 0x5c, 0x00, 0x84, 0x00, 0xb4, 0x00,
+0xd4, 0x00, 0xe4, 0x00, 0xda, 0x00, 0xbe, 0x00, 0x9c, 0x00, 0x60, 0x00, 0x3e, 0x00, 0x30, 0x00,
+0x2a, 0x00, 0x3a, 0x00, 0x50, 0x00, 0x6c, 0x00, 0x9e, 0x00, 0xc2, 0x00, 0xd6, 0x00, 0xe0, 0x00,
+0xe6, 0x00, 0xee, 0x00, 0xe4, 0x00, 0xd2, 0x00, 0xba, 0x00, 0xa0, 0x00, 0x80, 0x00, 0x48, 0x00,
+0x1c, 0x00, 0xf8, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x38, 0x00, 0x78, 0x00, 0xba, 0x00,
+0xf4, 0x00, 0x04, 0x01, 0x08, 0x01, 0xe2, 0x00, 0xac, 0x00, 0x68, 0x00, 0x42, 0x00, 0x20, 0x00,
+0x06, 0x00, 0xec, 0xff, 0xd6, 0xff, 0xcc, 0xff, 0xd6, 0xff, 0xee, 0xff, 0x10, 0x00, 0x42, 0x00,
+0x8a, 0x00, 0xc4, 0x00, 0xfe, 0x00, 0x0e, 0x01, 0x16, 0x01, 0x0a, 0x01, 0xe2, 0x00, 0xb0, 0x00,
+0x74, 0x00, 0x44, 0x00, 0x02, 0x00, 0xbe, 0xff, 0x94, 0xff, 0x84, 0xff, 0xa6, 0xff, 0xe4, 0xff,
+0x24, 0x00, 0x60, 0x00, 0xa0, 0x00, 0xc8, 0x00, 0xf0, 0x00, 0x08, 0x01, 0x1e, 0x01, 0x16, 0x01,
+0xdc, 0x00, 0x98, 0x00, 0x58, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xd0, 0xff, 0xaa, 0xff, 0x8c, 0xff,
+0x88, 0xff, 0xa8, 0xff, 0xe0, 0xff, 0x32, 0x00, 0x7a, 0x00, 0xc4, 0x00, 0xfc, 0x00, 0x2c, 0x01,
+0x2e, 0x01, 0x1a, 0x01, 0xf0, 0x00, 0xa0, 0x00, 0x54, 0x00, 0x18, 0x00, 0xd0, 0xff, 0x90, 0xff,
+0x6a, 0xff, 0x6e, 0xff, 0x90, 0xff, 0xc4, 0xff, 0x0a, 0x00, 0x44, 0x00, 0x7e, 0x00, 0xc8, 0x00,
+0x06, 0x01, 0x30, 0x01, 0x22, 0x01, 0xf4, 0x00, 0xb4, 0x00, 0x62, 0x00, 0x2c, 0x00, 0x02, 0x00,
+0xda, 0xff, 0xa8, 0xff, 0x8e, 0xff, 0x94, 0xff, 0xc2, 0xff, 0xf2, 0xff, 0x28, 0x00, 0x50, 0x00,
+0x6c, 0x00, 0xa6, 0x00, 0xd8, 0x00, 0xee, 0x00, 0xf2, 0x00, 0xd0, 0x00, 0x9c, 0x00, 0x52, 0x00,
+0x1c, 0x00, 0xf2, 0xff, 0xbc, 0xff, 0xa8, 0xff, 0x92, 0xff, 0x9c, 0xff, 0xc4, 0xff, 0xec, 0xff,
+0x22, 0x00, 0x4a, 0x00, 0x80, 0x00, 0xa8, 0x00, 0xbe, 0x00, 0xc6, 0x00, 0xba, 0x00, 0xa0, 0x00,
+0x7e, 0x00, 0x4a, 0x00, 0x1a, 0x00, 0xf2, 0xff, 0xda, 0xff, 0xc4, 0xff, 0xcc, 0xff, 0xe2, 0xff,
+0xe6, 0xff, 0x06, 0x00, 0x30, 0x00, 0x4e, 0x00, 0x7e, 0x00, 0xa0, 0x00, 0xa6, 0x00, 0xa8, 0x00,
+0x96, 0x00, 0x82, 0x00, 0x64, 0x00, 0x3c, 0x00, 0x10, 0x00, 0xea, 0xff, 0xd4, 0xff, 0xc6, 0xff,
+0xca, 0xff, 0xc6, 0xff, 0xda, 0xff, 0xfa, 0xff, 0x14, 0x00, 0x40, 0x00, 0x60, 0x00, 0x74, 0x00,
+0x7e, 0x00, 0x82, 0x00, 0x82, 0x00, 0x74, 0x00, 0x58, 0x00, 0x2e, 0x00, 0x14, 0x00, 0xfc, 0xff,
+0xe4, 0xff, 0xf6, 0xff, 0xee, 0xff, 0xea, 0xff, 0xfc, 0xff, 0x04, 0x00, 0x18, 0x00, 0x30, 0x00,
+0x54, 0x00, 0x5c, 0x00, 0x58, 0x00, 0x6a, 0x00, 0x66, 0x00, 0x56, 0x00, 0x3a, 0x00, 0x30, 0x00,
+0x1c, 0x00, 0xfa, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0x02, 0x00,
+0x08, 0x00, 0x1e, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x34, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x2c, 0x00,
+0x32, 0x00, 0x36, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x26, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x22, 0x00,
+0x20, 0x00, 0x12, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x04, 0x00, 0x0a, 0x00,
+0x14, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x44, 0x00, 0x54, 0x00, 0x66, 0x00, 0x62, 0x00, 0x56, 0x00,
+0x4e, 0x00, 0x36, 0x00, 0x20, 0x00, 0x06, 0x00, 0xf2, 0xff, 0xd2, 0xff, 0xcc, 0xff, 0xd0, 0xff,
+0xd0, 0xff, 0xd4, 0xff, 0xfa, 0xff, 0x10, 0x00, 0x28, 0x00, 0x4c, 0x00, 0x66, 0x00, 0x72, 0x00,
+0x7e, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x40, 0x00, 0x1a, 0x00, 0xf6, 0xff, 0xcc, 0xff, 0xbc, 0xff,
+0xaa, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xba, 0xff, 0xe4, 0xff, 0x0a, 0x00, 0x40, 0x00, 0x6e, 0x00,
+0x88, 0x00, 0x9c, 0x00, 0x98, 0x00, 0x86, 0x00, 0x72, 0x00, 0x38, 0x00, 0x0c, 0x00, 0xd6, 0xff,
+0xa4, 0xff, 0x92, 0xff, 0x72, 0xff, 0x7c, 0xff, 0x8e, 0xff, 0xaa, 0xff, 0xdc, 0xff, 0x12, 0x00,
+0x54, 0x00, 0x80, 0x00, 0xa0, 0x00, 0xaa, 0x00, 0xa0, 0x00, 0x80, 0x00, 0x58, 0x00, 0x28, 0x00,
+0xe6, 0xff, 0xaa, 0xff, 0x82, 0xff, 0x5c, 0xff, 0x54, 0xff, 0x60, 0xff, 0x78, 0xff, 0xba, 0xff,
+0xee, 0xff, 0x22, 0x00, 0x58, 0x00, 0x8c, 0x00, 0xb4, 0x00, 0xc0, 0x00, 0xaa, 0x00, 0x82, 0x00,
+0x46, 0x00, 0x1a, 0x00, 0xda, 0xff, 0xa0, 0xff, 0x7c, 0xff, 0x50, 0xff, 0x44, 0xff, 0x58, 0xff,
+0x82, 0xff, 0xca, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x7a, 0x00, 0xa6, 0x00, 0xc2, 0x00, 0xc2, 0x00,
+0xae, 0x00, 0x7e, 0x00, 0x30, 0x00, 0x02, 0x00, 0xce, 0xff, 0x94, 0xff, 0x60, 0xff, 0x38, 0xff,
+0x3e, 0xff, 0x5c, 0xff, 0x88, 0xff, 0xd8, 0xff, 0x0c, 0x00, 0x3a, 0x00, 0x80, 0x00, 0x9e, 0x00,
+0xc4, 0x00, 0xc6, 0x00, 0xa4, 0x00, 0x78, 0x00, 0x26, 0x00, 0xf8, 0xff, 0xbe, 0xff, 0x86, 0xff,
+0x66, 0xff, 0x46, 0xff, 0x5a, 0xff, 0x6e, 0xff, 0xa6, 0xff, 0xec, 0xff, 0x24, 0x00, 0x5c, 0x00,
+0x86, 0x00, 0xb0, 0x00, 0xc8, 0x00, 0xb2, 0x00, 0x9e, 0x00, 0x62, 0x00, 0x24, 0x00, 0xf0, 0xff,
+0xc0, 0xff, 0x98, 0xff, 0x68, 0xff, 0x56, 0xff, 0x62, 0xff, 0x7c, 0xff, 0xc0, 0xff, 0xf8, 0xff,
+0x24, 0x00, 0x5a, 0x00, 0x7c, 0x00, 0x94, 0x00, 0x96, 0x00, 0x8e, 0x00, 0x74, 0x00, 0x44, 0x00,
+0x0e, 0x00, 0xd6, 0xff, 0xae, 0xff, 0x8c, 0xff, 0x7c, 0xff, 0x6e, 0xff, 0x7a, 0xff, 0xa0, 0xff,
+0xc6, 0xff, 0xf8, 0xff, 0x20, 0x00, 0x4a, 0x00, 0x72, 0x00, 0x84, 0x00, 0x7c, 0x00, 0x64, 0x00,
+0x54, 0x00, 0x22, 0x00, 0xfe, 0xff, 0xde, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0x8c, 0xff, 0x90, 0xff,
+0x9e, 0xff, 0xbe, 0xff, 0xe4, 0xff, 0x00, 0x00, 0x24, 0x00, 0x36, 0x00, 0x4a, 0x00, 0x54, 0x00,
+0x54, 0x00, 0x42, 0x00, 0x24, 0x00, 0x0c, 0x00, 0xec, 0xff, 0xda, 0xff, 0xb8, 0xff, 0xb4, 0xff,
+0xa0, 0xff, 0xa8, 0xff, 0xb4, 0xff, 0xca, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0x00, 0x00, 0x10, 0x00,
+0x20, 0x00, 0x24, 0x00, 0x28, 0x00, 0x24, 0x00, 0x12, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xe8, 0xff,
+0xd4, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xca, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xea, 0xff, 0xf2, 0xff,
+0xf8, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x04, 0x00, 0x06, 0x00, 0x10, 0x00, 0x10, 0x00, 0x04, 0x00,
+0x04, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xe6, 0xff,
+0xda, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xf6, 0xff,
+0x00, 0x00, 0xfe, 0xff, 0x14, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x18, 0x00, 0x16, 0x00, 0x0c, 0x00,
+0x02, 0x00, 0xfe, 0xff, 0xe0, 0xff, 0xcc, 0xff, 0xb8, 0xff, 0xca, 0xff, 0xd2, 0xff, 0xd2, 0xff,
+0xde, 0xff, 0xf4, 0xff, 0x0c, 0x00, 0x26, 0x00, 0x2a, 0x00, 0x3e, 0x00, 0x42, 0x00, 0x3c, 0x00,
+0x48, 0x00, 0x2c, 0x00, 0x0a, 0x00, 0xec, 0xff, 0xda, 0xff, 0xae, 0xff, 0xac, 0xff, 0xa8, 0xff,
+0xb2, 0xff, 0xb6, 0xff, 0xc0, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x32, 0x00, 0x4e, 0x00, 0x60, 0x00,
+0x58, 0x00, 0x5c, 0x00, 0x48, 0x00, 0x26, 0x00, 0x04, 0x00, 0xe6, 0xff, 0xb4, 0xff, 0x90, 0xff,
+0x80, 0xff, 0x70, 0xff, 0x8a, 0xff, 0x94, 0xff, 0xbc, 0xff, 0xf6, 0xff, 0x10, 0x00, 0x3c, 0x00,
+0x60, 0x00, 0x72, 0x00, 0x86, 0x00, 0x80, 0x00, 0x60, 0x00, 0x26, 0x00, 0xfa, 0xff, 0xd4, 0xff,
+0x9c, 0xff, 0x7e, 0xff, 0x5e, 0xff, 0x56, 0xff, 0x68, 0xff, 0x8c, 0xff, 0xba, 0xff, 0xe2, 0xff,
+0x1a, 0x00, 0x4a, 0x00, 0x76, 0x00, 0x94, 0x00, 0x98, 0x00, 0x92, 0x00, 0x54, 0x00, 0x26, 0x00,
+0xf2, 0xff, 0xae, 0xff, 0x7c, 0xff, 0x52, 0xff, 0x3c, 0xff, 0x32, 0xff, 0x46, 0xff, 0x78, 0xff,
+0xba, 0xff, 0xe2, 0xff, 0x1a, 0x00, 0x5c, 0x00, 0x8a, 0x00, 0xa2, 0x00, 0xa8, 0x00, 0x88, 0x00,
+0x58, 0x00, 0x18, 0x00, 0xea, 0xff, 0xb0, 0xff, 0x6c, 0xff, 0x46, 0xff, 0x24, 0xff, 0x38, 0xff,
+0x58, 0xff, 0x7c, 0xff, 0xbe, 0xff, 0xfa, 0xff, 0x32, 0x00, 0x76, 0x00, 0x9c, 0x00, 0xb8, 0x00,
+0xa8, 0x00, 0x82, 0x00, 0x48, 0x00, 0x0a, 0x00, 0xe0, 0xff, 0x94, 0xff, 0x62, 0xff, 0x42, 0xff,
+0x2e, 0xff, 0x40, 0xff, 0x5c, 0xff, 0x90, 0xff, 0xd6, 0xff, 0x04, 0x00, 0x46, 0x00, 0x7e, 0x00,
+0xa6, 0x00, 0xb8, 0x00, 0x9c, 0x00, 0x70, 0x00, 0x3a, 0x00, 0xfa, 0xff, 0xc0, 0xff, 0x8e, 0xff,
+0x5a, 0xff, 0x44, 0xff, 0x3a, 0xff, 0x52, 0xff, 0x76, 0xff, 0xae, 0xff, 0xee, 0xff, 0x18, 0x00,
+0x58, 0x00, 0x8e, 0x00, 0x9c, 0x00, 0xa8, 0x00, 0x92, 0x00, 0x62, 0x00, 0x30, 0x00, 0xf4, 0xff,
+0xc4, 0xff, 0x8a, 0xff, 0x62, 0xff, 0x4a, 0xff, 0x50, 0xff, 0x62, 0xff, 0x92, 0xff, 0xc2, 0xff,
+0xf4, 0xff, 0x28, 0x00, 0x56, 0x00, 0x78, 0x00, 0x84, 0x00, 0x88, 0x00, 0x72, 0x00, 0x46, 0x00,
+0x08, 0x00, 0xe4, 0xff, 0xbc, 0xff, 0x92, 0xff, 0x72, 0xff, 0x70, 0xff, 0x6c, 0xff, 0x70, 0xff,
+0x90, 0xff, 0xce, 0xff, 0xf8, 0xff, 0x24, 0x00, 0x4e, 0x00, 0x62, 0x00, 0x64, 0x00, 0x54, 0x00,
+0x4c, 0x00, 0x2e, 0x00, 0x06, 0x00, 0xe2, 0xff, 0xb8, 0xff, 0x9a, 0xff, 0x8e, 0xff, 0x92, 0xff,
+0x92, 0xff, 0x9c, 0xff, 0xc0, 0xff, 0xde, 0xff, 0xf4, 0xff, 0x24, 0x00, 0x38, 0x00, 0x3a, 0x00,
+0x40, 0x00, 0x3e, 0x00, 0x2a, 0x00, 0x0e, 0x00, 0xf4, 0xff, 0xdc, 0xff, 0xc4, 0xff, 0xb2, 0xff,
+0xb8, 0xff, 0xb0, 0xff, 0xae, 0xff, 0xc2, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xfa, 0xff, 0x04, 0x00,
+0x18, 0x00, 0x14, 0x00, 0x16, 0x00, 0x12, 0x00, 0x08, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xea, 0xff,
+0xde, 0xff, 0xc6, 0xff, 0xd2, 0xff, 0xc4, 0xff, 0xbe, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xde, 0xff,
+0xe0, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfc, 0xff,
+0x08, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xec, 0xff, 0xf8, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe8, 0xff,
+0xde, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xe8, 0xff,
+0xf2, 0xff, 0x08, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x1c, 0x00, 0x1a, 0x00,
+0xfe, 0xff, 0xf0, 0xff, 0xd2, 0xff, 0xc8, 0xff, 0xb8, 0xff, 0xa8, 0xff, 0xae, 0xff, 0xac, 0xff,
+0xb4, 0xff, 0xd0, 0xff, 0xf2, 0xff, 0x0a, 0x00, 0x2c, 0x00, 0x34, 0x00, 0x44, 0x00, 0x4c, 0x00,
+0x38, 0x00, 0x36, 0x00, 0x18, 0x00, 0xf2, 0xff, 0xce, 0xff, 0xb0, 0xff, 0x94, 0xff, 0x8c, 0xff,
+0x7c, 0xff, 0x96, 0xff, 0xa0, 0xff, 0xce, 0xff, 0xfe, 0xff, 0x24, 0x00, 0x5a, 0x00, 0x68, 0x00,
+0x72, 0x00, 0x76, 0x00, 0x6a, 0x00, 0x50, 0x00, 0x2e, 0x00, 0xf0, 0xff, 0xca, 0xff, 0x96, 0xff,
+0x6c, 0xff, 0x5e, 0xff, 0x5a, 0xff, 0x70, 0xff, 0x98, 0xff, 0xca, 0xff, 0xfe, 0xff, 0x28, 0x00,
+0x68, 0x00, 0x8c, 0x00, 0x94, 0x00, 0x9c, 0x00, 0x7a, 0x00, 0x4a, 0x00, 0x24, 0x00, 0xe2, 0xff,
+0xac, 0xff, 0x7a, 0xff, 0x52, 0xff, 0x3a, 0xff, 0x40, 0xff, 0x5e, 0xff, 0x9c, 0xff, 0xd2, 0xff,
+0x06, 0x00, 0x46, 0x00, 0x70, 0x00, 0x98, 0x00, 0xa8, 0x00, 0x9e, 0x00, 0x7a, 0x00, 0x44, 0x00,
+0x0c, 0x00, 0xdc, 0xff, 0x98, 0xff, 0x58, 0xff, 0x38, 0xff, 0x30, 0xff, 0x46, 0xff, 0x6a, 0xff,
+0xac, 0xff, 0xe2, 0xff, 0x0c, 0x00, 0x54, 0x00, 0x7e, 0x00, 0x96, 0x00, 0xa6, 0x00, 0x82, 0x00,
+0x5e, 0x00, 0x28, 0x00, 0xe6, 0xff, 0xb6, 0xff, 0x76, 0xff, 0x40, 0xff, 0x2a, 0xff, 0x20, 0xff,
+0x36, 0xff, 0x72, 0xff, 0xba, 0xff, 0xf4, 0xff, 0x16, 0x00, 0x4a, 0x00, 0x7c, 0x00, 0x92, 0x00,
+0x92, 0x00, 0x7c, 0x00, 0x40, 0x00, 0x00, 0x00, 0xce, 0xff, 0xa4, 0xff, 0x66, 0xff, 0x3e, 0xff,
+0x26, 0xff, 0x2e, 0xff, 0x58, 0xff, 0x88, 0xff, 0xc8, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x58, 0x00,
+0x88, 0x00, 0x94, 0x00, 0x7e, 0x00, 0x68, 0x00, 0x3c, 0x00, 0x06, 0x00, 0xc2, 0xff, 0x94, 0xff,
+0x5c, 0xff, 0x38, 0xff, 0x2e, 0xff, 0x40, 0xff, 0x64, 0xff, 0x94, 0xff, 0xce, 0xff, 0x00, 0x00,
+0x2a, 0x00, 0x4e, 0x00, 0x72, 0x00, 0x88, 0x00, 0x74, 0x00, 0x52, 0x00, 0x2a, 0x00, 0xf2, 0xff,
+0xbc, 0xff, 0x8a, 0xff, 0x62, 0xff, 0x46, 0xff, 0x50, 0xff, 0x58, 0xff, 0x7c, 0xff, 0xac, 0xff,
+0xda, 0xff, 0x10, 0x00, 0x40, 0x00, 0x52, 0x00, 0x68, 0x00, 0x70, 0x00, 0x64, 0x00, 0x4a, 0x00,
+0x28, 0x00, 0xfa, 0xff, 0xc4, 0xff, 0x92, 0xff, 0x82, 0xff, 0x72, 0xff, 0x72, 0xff, 0x8a, 0xff,
+0x96, 0xff, 0xc2, 0xff, 0xee, 0xff, 0x0c, 0x00, 0x30, 0x00, 0x3c, 0x00, 0x4a, 0x00, 0x4a, 0x00,
+0x4e, 0x00, 0x28, 0x00, 0x10, 0x00, 0xee, 0xff, 0xc0, 0xff, 0x9e, 0xff, 0x94, 0xff, 0x98, 0xff,
+0x8c, 0xff, 0x9c, 0xff, 0xb2, 0xff, 0xd0, 0xff, 0xf0, 0xff, 0x04, 0x00, 0x1a, 0x00, 0x20, 0x00,
+0x22, 0x00, 0x30, 0x00, 0x2a, 0x00, 0x1e, 0x00, 0xfa, 0xff, 0xde, 0xff, 0xd4, 0xff, 0xba, 0xff,
+0xb8, 0xff, 0xba, 0xff, 0xb4, 0xff, 0xc2, 0xff, 0xce, 0xff, 0xda, 0xff, 0xf4, 0xff, 0x04, 0x00,
+0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x02, 0x00, 0xe8, 0xff, 0xe4, 0xff,
+0xe0, 0xff, 0xd0, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xde, 0xff, 0xe2, 0xff,
+0xde, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xe6, 0xff,
+0xe4, 0xff, 0xf2, 0xff, 0x02, 0x00, 0x06, 0x00, 0xfe, 0xff, 0x02, 0x00, 0x02, 0x00, 0xf4, 0xff,
+0xea, 0xff, 0xda, 0xff, 0xc0, 0xff, 0xb8, 0xff, 0xae, 0xff, 0xb2, 0xff, 0xc0, 0xff, 0xc2, 0xff,
+0xde, 0xff, 0xe8, 0xff, 0x04, 0x00, 0x18, 0x00, 0x2c, 0x00, 0x32, 0x00, 0x3a, 0x00, 0x30, 0x00,
+0x1c, 0x00, 0x0e, 0x00, 0xde, 0xff, 0xc2, 0xff, 0xa0, 0xff, 0x8a, 0xff, 0x82, 0xff, 0x8a, 0xff,
+0x96, 0xff, 0xa8, 0xff, 0xd2, 0xff, 0xee, 0xff, 0x16, 0x00, 0x42, 0x00, 0x50, 0x00, 0x66, 0x00,
+0x54, 0x00, 0x3c, 0x00, 0x38, 0x00, 0x04, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0x86, 0xff, 0x6c, 0xff,
+0x6e, 0xff, 0x72, 0xff, 0x86, 0xff, 0xb4, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x36, 0x00, 0x68, 0x00,
+0x86, 0x00, 0x90, 0x00, 0x8a, 0x00, 0x6a, 0x00, 0x3c, 0x00, 0x0c, 0x00, 0xda, 0xff, 0xaa, 0xff,
+0x7a, 0xff, 0x58, 0xff, 0x4c, 0xff, 0x5a, 0xff, 0x78, 0xff, 0xa6, 0xff, 0xde, 0xff, 0x10, 0x00,
+0x50, 0x00, 0x7c, 0x00, 0x94, 0x00, 0xa6, 0x00, 0x92, 0x00, 0x66, 0x00, 0x30, 0x00, 0x02, 0x00,
+0xc6, 0xff, 0x86, 0xff, 0x5a, 0xff, 0x2c, 0xff, 0x32, 0xff, 0x40, 0xff, 0x6a, 0xff, 0xa6, 0xff,
+0xe2, 0xff, 0x16, 0x00, 0x5a, 0x00, 0x96, 0x00, 0xb0, 0x00, 0xb2, 0x00, 0x92, 0x00, 0x64, 0x00,
+0x28, 0x00, 0xfa, 0xff, 0xbe, 0xff, 0x7c, 0xff, 0x42, 0xff, 0x2e, 0xff, 0x22, 0xff, 0x44, 0xff,
+0x7a, 0xff, 0xbe, 0xff, 0xf4, 0xff, 0x36, 0x00, 0x74, 0x00, 0x96, 0x00, 0xb2, 0x00, 0xb0, 0x00,
+0x88, 0x00, 0x4e, 0x00, 0x0c, 0x00, 0xdc, 0xff, 0xa0, 0xff, 0x5a, 0xff, 0x36, 0xff, 0x1a, 0xff,
+0x2a, 0xff, 0x4c, 0xff, 0x88, 0xff, 0xd0, 0xff, 0x00, 0x00, 0x3c, 0x00, 0x7e, 0x00, 0xa0, 0x00,
+0xa0, 0x00, 0x94, 0x00, 0x62, 0x00, 0x36, 0x00, 0xfc, 0xff, 0xc0, 0xff, 0x96, 0xff, 0x4e, 0xff,
+0x2c, 0xff, 0x2c, 0xff, 0x36, 0xff, 0x6e, 0xff, 0x9e, 0xff, 0xea, 0xff, 0x1c, 0x00, 0x52, 0x00,
+0x86, 0x00, 0x98, 0x00, 0xa8, 0x00, 0x8a, 0x00, 0x6a, 0x00, 0x2a, 0x00, 0xf4, 0xff, 0xba, 0xff,
+0x88, 0xff, 0x66, 0xff, 0x4e, 0xff, 0x46, 0xff, 0x52, 0xff, 0x8a, 0xff, 0xc0, 0xff, 0xf2, 0xff,
+0x28, 0x00, 0x52, 0x00, 0x6a, 0x00, 0x7a, 0x00, 0x78, 0x00, 0x6c, 0x00, 0x48, 0x00, 0x16, 0x00,
+0xf2, 0xff, 0xb0, 0xff, 0x90, 0xff, 0x72, 0xff, 0x6c, 0xff, 0x6c, 0xff, 0x78, 0xff, 0x96, 0xff,
+0xce, 0xff, 0xf8, 0xff, 0x1a, 0x00, 0x4a, 0x00, 0x4e, 0x00, 0x66, 0x00, 0x56, 0x00, 0x54, 0x00,
+0x40, 0x00, 0x10, 0x00, 0xec, 0xff, 0xca, 0xff, 0xb2, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0x8a, 0xff,
+0xa4, 0xff, 0xba, 0xff, 0xe4, 0xff, 0x06, 0x00, 0x14, 0x00, 0x3a, 0x00, 0x3e, 0x00, 0x42, 0x00,
+0x4a, 0x00, 0x38, 0x00, 0x22, 0x00, 0x0c, 0x00, 0xe4, 0xff, 0xda, 0xff, 0xbe, 0xff, 0xb4, 0xff,
+0xb4, 0xff, 0xa4, 0xff, 0xc0, 0xff, 0xc8, 0xff, 0xe4, 0xff, 0x02, 0x00, 0x02, 0x00, 0x16, 0x00,
+0x16, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x14, 0x00, 0x02, 0x00, 0xf2, 0xff, 0xe8, 0xff, 0xe8, 0xff,
+0xde, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf4, 0xff,
+0xfa, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xfc, 0xff,
+0x08, 0x00, 0x06, 0x00, 0x02, 0x00, 0xf4, 0xff, 0x02, 0x00, 0xf4, 0xff, 0xee, 0xff, 0xf6, 0xff,
+0xe4, 0xff, 0xe0, 0xff, 0xd0, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xf2, 0xff,
+0xf8, 0xff, 0x08, 0x00, 0x10, 0x00, 0x18, 0x00, 0x1c, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x00, 0x00,
+0xee, 0xff, 0xd8, 0xff, 0xc4, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0xa4, 0xff, 0xa2, 0xff, 0xae, 0xff,
+0xc4, 0xff, 0xe6, 0xff, 0x08, 0x00, 0x22, 0x00, 0x42, 0x00, 0x3c, 0x00, 0x42, 0x00, 0x42, 0x00,
+0x38, 0x00, 0x1e, 0x00, 0xf6, 0xff, 0xd0, 0xff, 0xa8, 0xff, 0x8c, 0xff, 0x80, 0xff, 0x7c, 0xff,
+0x82, 0xff, 0x94, 0xff, 0xbc, 0xff, 0xf0, 0xff, 0x14, 0x00, 0x3e, 0x00, 0x58, 0x00, 0x6e, 0x00,
+0x6c, 0x00, 0x5c, 0x00, 0x4a, 0x00, 0x18, 0x00, 0xf0, 0xff, 0xc2, 0xff, 0x84, 0xff, 0x56, 0xff,
+0x4e, 0xff, 0x54, 0xff, 0x5c, 0xff, 0x86, 0xff, 0xb0, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x58, 0x00,
+0x74, 0x00, 0x8e, 0x00, 0x92, 0x00, 0x82, 0x00, 0x58, 0x00, 0x1a, 0x00, 0xf2, 0xff, 0xb4, 0xff,
+0x7a, 0xff, 0x4c, 0xff, 0x3a, 0xff, 0x40, 0xff, 0x58, 0xff, 0x92, 0xff, 0xcc, 0xff, 0xfe, 0xff,
+0x3a, 0x00, 0x6e, 0x00, 0x98, 0x00, 0xae, 0x00, 0xb6, 0x00, 0x90, 0x00, 0x60, 0x00, 0x1c, 0x00,
+0xe0, 0xff, 0xa4, 0xff, 0x62, 0xff, 0x42, 0xff, 0x2c, 0xff, 0x30, 0xff, 0x52, 0xff, 0x90, 0xff,
+0xd4, 0xff, 0x00, 0x00, 0x38, 0x00, 0x80, 0x00, 0x9c, 0x00, 0xb6, 0x00, 0xac, 0x00, 0x80, 0x00,
+0x44, 0x00, 0x04, 0x00, 0xca, 0xff, 0x8a, 0xff, 0x50, 0xff, 0x2e, 0xff, 0x22, 0xff, 0x3c, 0xff,
+0x68, 0xff, 0x9c, 0xff, 0xe8, 0xff, 0x0c, 0x00, 0x50, 0x00, 0x88, 0x00, 0xae, 0x00, 0xbc, 0x00,
+0x9c, 0x00, 0x78, 0x00, 0x30, 0x00, 0xf6, 0xff, 0xc0, 0xff, 0x7e, 0xff, 0x4e, 0xff, 0x3c, 0xff,
+0x34, 0xff, 0x42, 0xff, 0x7e, 0xff, 0xac, 0xff, 0xe6, 0xff, 0x12, 0x00, 0x58, 0x00, 0x86, 0x00,
+0x96, 0x00, 0xa2, 0x00, 0x84, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xe6, 0xff, 0xa6, 0xff, 0x7a, 0xff,
+0x54, 0xff, 0x3c, 0xff, 0x42, 0xff, 0x50, 0xff, 0x80, 0xff, 0xba, 0xff, 0xf0, 0xff, 0x1a, 0x00,
+0x54, 0x00, 0x8c, 0x00, 0x90, 0x00, 0x92, 0x00, 0x70, 0x00, 0x46, 0x00, 0x18, 0x00, 0xea, 0xff,
+0xb4, 0xff, 0x88, 0xff, 0x6a, 0xff, 0x66, 0xff, 0x62, 0xff, 0x7c, 0xff, 0xa6, 0xff, 0xca, 0xff,
+0x04, 0x00, 0x2c, 0x00, 0x5e, 0x00, 0x6a, 0x00, 0x78, 0x00, 0x70, 0x00, 0x56, 0x00, 0x32, 0x00,
+0x00, 0x00, 0xdc, 0xff, 0xb4, 0xff, 0xa6, 0xff, 0x90, 0xff, 0x84, 0xff, 0x88, 0xff, 0x9c, 0xff,
+0xbc, 0xff, 0xde, 0xff, 0x08, 0x00, 0x2c, 0x00, 0x40, 0x00, 0x46, 0x00, 0x4a, 0x00, 0x46, 0x00,
+0x34, 0x00, 0x14, 0x00, 0xfc, 0xff, 0xee, 0xff, 0xba, 0xff, 0xb0, 0xff, 0xc2, 0xff, 0xb0, 0xff,
+0xae, 0xff, 0xc8, 0xff, 0xda, 0xff, 0xf4, 0xff, 0x08, 0x00, 0x18, 0x00, 0x2e, 0x00, 0x20, 0x00,
+0x30, 0x00, 0x20, 0x00, 0x18, 0x00, 0x0a, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xe2, 0xff, 0xde, 0xff,
+0xd0, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xfc, 0xff,
+0xfe, 0xff, 0xfa, 0xff, 0x06, 0x00, 0xfe, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0x02, 0x00, 0x00, 0x00,
+0xf4, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xdc, 0xff,
+0xd8, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xfc, 0xff,
+0x08, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x16, 0x00, 0x1a, 0x00, 0x0c, 0x00, 0xf8, 0xff,
+0xe6, 0xff, 0xc4, 0xff, 0xb8, 0xff, 0xa8, 0xff, 0xb2, 0xff, 0xc2, 0xff, 0xb8, 0xff, 0xd4, 0xff,
+0xee, 0xff, 0x0c, 0x00, 0x20, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x44, 0x00, 0x34, 0x00, 0x1a, 0x00,
+0xf8, 0xff, 0xb0, 0xff, 0x8c, 0xff, 0x78, 0xff, 0x84, 0xff, 0x96, 0xff, 0xa4, 0xff, 0xcc, 0xff,
+0xf8, 0xff, 0x1c, 0x00, 0x40, 0x00, 0x5e, 0x00, 0x6c, 0x00, 0x62, 0x00, 0x52, 0x00, 0x34, 0x00,
+0x06, 0x00, 0xdc, 0xff, 0xac, 0xff, 0x86, 0xff, 0x6c, 0xff, 0x5e, 0xff, 0x68, 0xff, 0x7a, 0xff,
+0xa4, 0xff, 0xda, 0xff, 0x0a, 0x00, 0x36, 0x00, 0x72, 0x00, 0x88, 0x00, 0x94, 0x00, 0x8c, 0x00,
+0x62, 0x00, 0x44, 0x00, 0x06, 0x00, 0xdc, 0xff, 0x90, 0xff, 0x64, 0xff, 0x46, 0xff, 0x38, 0xff,
+0x50, 0xff, 0x70, 0xff, 0xac, 0xff, 0xe6, 0xff, 0x1c, 0x00, 0x5a, 0x00, 0x8c, 0x00, 0xac, 0x00,
+0xb2, 0x00, 0x94, 0x00, 0x72, 0x00, 0x2e, 0x00, 0xfc, 0xff, 0xc8, 0xff, 0x84, 0xff, 0x58, 0xff,
+0x3c, 0xff, 0x38, 0xff, 0x52, 0xff, 0x7a, 0xff, 0xc4, 0xff, 0xfa, 0xff, 0x2c, 0x00, 0x74, 0x00,
+0x9c, 0x00, 0xb8, 0x00, 0xb2, 0x00, 0x9a, 0x00, 0x6e, 0x00, 0x2e, 0x00, 0xf4, 0xff, 0xc2, 0xff,
+0x76, 0xff, 0x54, 0xff, 0x34, 0xff, 0x32, 0xff, 0x5a, 0xff, 0x84, 0xff, 0xd4, 0xff, 0x08, 0x00,
+0x3e, 0x00, 0x7c, 0x00, 0xa6, 0x00, 0xba, 0x00, 0xa8, 0x00, 0x88, 0x00, 0x58, 0x00, 0x12, 0x00,
+0xe6, 0xff, 0xa8, 0xff, 0x70, 0xff, 0x44, 0xff, 0x2a, 0xff, 0x44, 0xff, 0x64, 0xff, 0x92, 0xff,
+0xde, 0xff, 0x06, 0x00, 0x40, 0x00, 0x7e, 0x00, 0x9c, 0x00, 0xae, 0x00, 0x9c, 0x00, 0x7a, 0x00,
+0x46, 0x00, 0x08, 0x00, 0xd0, 0xff, 0x9e, 0xff, 0x66, 0xff, 0x3e, 0xff, 0x3a, 0xff, 0x50, 0xff,
+0x70, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x1a, 0x00, 0x56, 0x00, 0x72, 0x00, 0x8e, 0x00, 0x98, 0x00,
+0x88, 0x00, 0x66, 0x00, 0x2c, 0x00, 0xf4, 0xff, 0xc4, 0xff, 0x94, 0xff, 0x5e, 0xff, 0x46, 0xff,
+0x4c, 0xff, 0x5c, 0xff, 0x84, 0xff, 0xb0, 0xff, 0xde, 0xff, 0x16, 0x00, 0x46, 0x00, 0x66, 0x00,
+0x7e, 0x00, 0x7e, 0x00, 0x66, 0x00, 0x48, 0x00, 0x1c, 0x00, 0xf2, 0xff, 0xb8, 0xff, 0x8a, 0xff,
+0x74, 0xff, 0x6a, 0xff, 0x5c, 0xff, 0x78, 0xff, 0x98, 0xff, 0xc8, 0xff, 0xec, 0xff, 0x16, 0x00,
+0x3e, 0x00, 0x46, 0x00, 0x68, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x2e, 0x00, 0x0c, 0x00, 0xf4, 0xff,
+0xc2, 0xff, 0xaa, 0xff, 0x9e, 0xff, 0x98, 0xff, 0x9a, 0xff, 0xa6, 0xff, 0xc2, 0xff, 0xe0, 0xff,
+0xfa, 0xff, 0x16, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x12, 0x00,
+0xfc, 0xff, 0xec, 0xff, 0xd2, 0xff, 0xc6, 0xff, 0xc2, 0xff, 0xc8, 0xff, 0xc0, 0xff, 0xc4, 0xff,
+0xde, 0xff, 0xea, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x16, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x1a, 0x00,
+0x12, 0x00, 0x0c, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xe0, 0xff,
+0xde, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0x00, 0x00,
+0xfe, 0xff, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x10, 0x00,
+0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0xea, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xce, 0xff, 0xc8, 0xff,
+0xca, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xde, 0xff, 0xf2, 0xff, 0x04, 0x00, 0x12, 0x00, 0x26, 0x00,
+0x28, 0x00, 0x32, 0x00, 0x2a, 0x00, 0x20, 0x00, 0x16, 0x00, 0xfa, 0xff, 0xce, 0xff, 0xc4, 0xff,
+0xaa, 0xff, 0x9c, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0xb4, 0xff, 0xc2, 0xff, 0xee, 0xff, 0x0a, 0x00,
+0x28, 0x00, 0x50, 0x00, 0x5a, 0x00, 0x5e, 0x00, 0x52, 0x00, 0x3e, 0x00, 0x22, 0x00, 0xf6, 0xff,
+0xd6, 0xff, 0xa8, 0xff, 0x7c, 0xff, 0x72, 0xff, 0x6e, 0xff, 0x78, 0xff, 0x8e, 0xff, 0xa6, 0xff,
+0xe2, 0xff, 0x0a, 0x00, 0x3c, 0x00, 0x5c, 0x00, 0x74, 0x00, 0x82, 0x00, 0x62, 0x00, 0x48, 0x00,
+0x1c, 0x00, 0xec, 0xff, 0xba, 0xff, 0x8a, 0xff, 0x58, 0xff, 0x46, 0xff, 0x4c, 0xff, 0x4c, 0xff,
+0x80, 0xff, 0xa8, 0xff, 0xdc, 0xff, 0x18, 0x00, 0x4e, 0x00, 0x84, 0x00, 0x9a, 0x00, 0x96, 0x00,
+0x80, 0x00, 0x5a, 0x00, 0x20, 0x00, 0xf0, 0xff, 0xb4, 0xff, 0x80, 0xff, 0x52, 0xff, 0x36, 0xff,
+0x40, 0xff, 0x58, 0xff, 0x76, 0xff, 0xb4, 0xff, 0xf0, 0xff, 0x20, 0x00, 0x60, 0x00, 0x92, 0x00,
+0xb0, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x52, 0x00, 0x1c, 0x00, 0xea, 0xff, 0xae, 0xff, 0x6e, 0xff,
+0x3e, 0xff, 0x30, 0xff, 0x3c, 0xff, 0x54, 0xff, 0x8c, 0xff, 0xd2, 0xff, 0x00, 0x00, 0x38, 0x00,
+0x7c, 0x00, 0xa8, 0x00, 0xb6, 0x00, 0xa8, 0x00, 0x80, 0x00, 0x3c, 0x00, 0x08, 0x00, 0xd6, 0xff,
+0x9a, 0xff, 0x68, 0xff, 0x44, 0xff, 0x32, 0xff, 0x4a, 0xff, 0x6e, 0xff, 0xb0, 0xff, 0xf2, 0xff,
+0x1e, 0x00, 0x58, 0x00, 0x8e, 0x00, 0xb4, 0x00, 0xb6, 0x00, 0x9c, 0x00, 0x6a, 0x00, 0x2c, 0x00,
+0xf8, 0xff, 0xc2, 0xff, 0x8c, 0xff, 0x5c, 0xff, 0x36, 0xff, 0x3c, 0xff, 0x46, 0xff, 0x76, 0xff,
+0xb4, 0xff, 0xea, 0xff, 0x2a, 0x00, 0x6a, 0x00, 0x98, 0x00, 0xa6, 0x00, 0xaa, 0x00, 0x88, 0x00,
+0x60, 0x00, 0x2a, 0x00, 0xe2, 0xff, 0xa8, 0xff, 0x74, 0xff, 0x56, 0xff, 0x3c, 0xff, 0x44, 0xff,
+0x66, 0xff, 0x7e, 0xff, 0xc2, 0xff, 0xfe, 0xff, 0x38, 0x00, 0x74, 0x00, 0x92, 0x00, 0x9a, 0x00,
+0x8c, 0x00, 0x78, 0x00, 0x4a, 0x00, 0x16, 0x00, 0xe2, 0xff, 0xa6, 0xff, 0x74, 0xff, 0x5e, 0xff,
+0x52, 0xff, 0x5a, 0xff, 0x7a, 0xff, 0xa4, 0xff, 0xda, 0xff, 0x06, 0x00, 0x3a, 0x00, 0x56, 0x00,
+0x72, 0x00, 0x74, 0x00, 0x62, 0x00, 0x44, 0x00, 0x1e, 0x00, 0xf0, 0xff, 0xce, 0xff, 0xa4, 0xff,
+0x86, 0xff, 0x72, 0xff, 0x70, 0xff, 0x7c, 0xff, 0x96, 0xff, 0xc2, 0xff, 0xe8, 0xff, 0x0e, 0x00,
+0x34, 0x00, 0x3e, 0x00, 0x46, 0x00, 0x46, 0x00, 0x34, 0x00, 0x32, 0x00, 0x0c, 0x00, 0xf2, 0xff,
+0xdc, 0xff, 0xbc, 0xff, 0xaa, 0xff, 0xa6, 0xff, 0xaa, 0xff, 0xb6, 0xff, 0xc6, 0xff, 0xd2, 0xff,
+0xf6, 0xff, 0x0a, 0x00, 0x1e, 0x00, 0x2e, 0x00, 0x22, 0x00, 0x20, 0x00, 0x18, 0x00, 0x0a, 0x00,
+0xfa, 0xff, 0xf2, 0xff, 0xe8, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xce, 0xff, 0xca, 0xff, 0xd6, 0xff,
+0xdc, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf8, 0xff,
+0xfc, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xf4, 0xff,
+0xf4, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xe4, 0xff, 0xec, 0xff, 0xe0, 0xff, 0xd8, 0xff,
+0xec, 0xff, 0xe6, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0x12, 0x00, 0x1a, 0x00, 0x12, 0x00,
+0x16, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x06, 0x00, 0xf8, 0xff, 0xe8, 0xff, 0xd2, 0xff, 0xc0, 0xff,
+0xae, 0xff, 0xb2, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xde, 0xff, 0xf4, 0xff, 0x0a, 0x00, 0x2a, 0x00,
+0x36, 0x00, 0x40, 0x00, 0x3c, 0x00, 0x28, 0x00, 0x20, 0x00, 0x06, 0x00, 0xf0, 0xff, 0xd4, 0xff,
+0xac, 0xff, 0x96, 0xff, 0x90, 0xff, 0x8a, 0xff, 0x9e, 0xff, 0xac, 0xff, 0xd8, 0xff, 0xf4, 0xff,
+0x20, 0x00, 0x4e, 0x00, 0x58, 0x00, 0x6a, 0x00, 0x6e, 0x00, 0x5e, 0x00, 0x3a, 0x00, 0x1a, 0x00,
+0xe4, 0xff, 0xba, 0xff, 0x96, 0xff, 0x70, 0xff, 0x64, 0xff, 0x6a, 0xff, 0x82, 0xff, 0x98, 0xff,
+0xd2, 0xff, 0xfa, 0xff, 0x30, 0x00, 0x58, 0x00, 0x7c, 0x00, 0x8c, 0x00, 0x86, 0x00, 0x72, 0x00,
+0x44, 0x00, 0x10, 0x00, 0xce, 0xff, 0x98, 0xff, 0x6a, 0xff, 0x40, 0xff, 0x2e, 0xff, 0x44, 0xff,
+0x62, 0xff, 0x9a, 0xff, 0xd4, 0xff, 0x06, 0x00, 0x40, 0x00, 0x7c, 0x00, 0x9e, 0x00, 0xac, 0x00,
+0xa0, 0x00, 0x76, 0x00, 0x42, 0x00, 0x0c, 0x00, 0xce, 0xff, 0x82, 0xff, 0x48, 0xff, 0x26, 0xff,
+0x16, 0xff, 0x34, 0xff, 0x5e, 0xff, 0xa0, 0xff, 0xe8, 0xff, 0x0e, 0x00, 0x58, 0x00, 0x9a, 0x00,
+0xb6, 0x00, 0xc4, 0x00, 0xa6, 0x00, 0x76, 0x00, 0x36, 0x00, 0xfa, 0xff, 0xbe, 0xff, 0x78, 0xff,
+0x38, 0xff, 0x1a, 0xff, 0x18, 0xff, 0x32, 0xff, 0x58, 0xff, 0xac, 0xff, 0xea, 0xff, 0x26, 0x00,
+0x6c, 0x00, 0x9a, 0x00, 0xc2, 0x00, 0xb4, 0x00, 0xa8, 0x00, 0x6c, 0x00, 0x20, 0x00, 0xe8, 0xff,
+0xaa, 0xff, 0x6a, 0xff, 0x3a, 0xff, 0x2a, 0xff, 0x2e, 0xff, 0x52, 0xff, 0x7a, 0xff, 0xc8, 0xff,
+0xfe, 0xff, 0x44, 0x00, 0x80, 0x00, 0xa4, 0x00, 0xc6, 0x00, 0xae, 0x00, 0x96, 0x00, 0x58, 0x00,
+0x16, 0x00, 0xdc, 0xff, 0xa2, 0xff, 0x6e, 0xff, 0x44, 0xff, 0x3a, 0xff, 0x44, 0xff, 0x6e, 0xff,
+0xa6, 0xff, 0xe4, 0xff, 0x12, 0x00, 0x3e, 0x00, 0x7c, 0x00, 0x9c, 0x00, 0xa4, 0x00, 0x9a, 0x00,
+0x78, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xc6, 0xff, 0x98, 0xff, 0x6e, 0xff, 0x58, 0xff, 0x52, 0xff,
+0x58, 0xff, 0x80, 0xff, 0xb8, 0xff, 0xee, 0xff, 0x1c, 0x00, 0x50, 0x00, 0x74, 0x00, 0x86, 0x00,
+0x86, 0x00, 0x76, 0x00, 0x5e, 0x00, 0x2e, 0x00, 0xfe, 0xff, 0xc8, 0xff, 0x9c, 0xff, 0x88, 0xff,
+0x74, 0xff, 0x80, 0xff, 0x88, 0xff, 0x98, 0xff, 0xca, 0xff, 0xf8, 0xff, 0x18, 0x00, 0x46, 0x00,
+0x5e, 0x00, 0x62, 0x00, 0x5e, 0x00, 0x4e, 0x00, 0x3a, 0x00, 0x0a, 0x00, 0xf0, 0xff, 0xce, 0xff,
+0xae, 0xff, 0xa4, 0xff, 0xa0, 0xff, 0x98, 0xff, 0x9c, 0xff, 0xbc, 0xff, 0xda, 0xff, 0xf0, 0xff,
+0x02, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x26, 0x00, 0x10, 0x00, 0xf6, 0xff,
+0xec, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xce, 0xff, 0xb6, 0xff, 0xc4, 0xff, 0xd4, 0xff,
+0xdc, 0xff, 0xe6, 0xff, 0xf4, 0xff, 0x06, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x08, 0x00,
+0x04, 0x00, 0xf4, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe2, 0xff, 0xe0, 0xff,
+0xe4, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xf0, 0xff,
+0xfe, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x00, 0x00,
+0xfa, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xc8, 0xff,
+0xc6, 0xff, 0xbe, 0xff, 0xd0, 0xff, 0xee, 0xff, 0x02, 0x00, 0x0e, 0x00, 0x22, 0x00, 0x34, 0x00,
+0x36, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x16, 0x00, 0xf0, 0xff, 0xe4, 0xff, 0xc2, 0xff, 0xa4, 0xff,
+0xb0, 0xff, 0xa0, 0xff, 0xa4, 0xff, 0xb2, 0xff, 0xc4, 0xff, 0xf6, 0xff, 0x10, 0x00, 0x2a, 0x00,
+0x52, 0x00, 0x62, 0x00, 0x5a, 0x00, 0x52, 0x00, 0x36, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xd0, 0xff,
+0xae, 0xff, 0x86, 0xff, 0x7e, 0xff, 0x70, 0xff, 0x84, 0xff, 0xa2, 0xff, 0xbe, 0xff, 0xf6, 0xff,
+0x14, 0x00, 0x40, 0x00, 0x6e, 0x00, 0x76, 0x00, 0x7e, 0x00, 0x72, 0x00, 0x50, 0x00, 0x1e, 0x00,
+0xf4, 0xff, 0xce, 0xff, 0x98, 0xff, 0x6a, 0xff, 0x56, 0xff, 0x52, 0xff, 0x64, 0xff, 0x94, 0xff,
+0xc0, 0xff, 0xf6, 0xff, 0x26, 0x00, 0x54, 0x00, 0x88, 0x00, 0xa0, 0x00, 0x9a, 0x00, 0x90, 0x00,
+0x60, 0x00, 0x2c, 0x00, 0xfa, 0xff, 0xbe, 0xff, 0x8a, 0xff, 0x64, 0xff, 0x3e, 0xff, 0x32, 0xff,
+0x4a, 0xff, 0x7c, 0xff, 0xc0, 0xff, 0xf4, 0xff, 0x2a, 0x00, 0x5e, 0x00, 0x98, 0x00, 0xa4, 0x00,
+0xa8, 0x00, 0x8c, 0x00, 0x58, 0x00, 0x1c, 0x00, 0xe2, 0xff, 0xae, 0xff, 0x72, 0xff, 0x44, 0xff,
+0x20, 0xff, 0x22, 0xff, 0x4a, 0xff, 0x80, 0xff, 0xbc, 0xff, 0xf6, 0xff, 0x32, 0x00, 0x6e, 0x00,
+0x9e, 0x00, 0xae, 0x00, 0xa0, 0x00, 0x8c, 0x00, 0x48, 0x00, 0x0c, 0x00, 0xe6, 0xff, 0xa2, 0xff,
+0x64, 0xff, 0x40, 0xff, 0x28, 0xff, 0x38, 0xff, 0x5e, 0xff, 0x98, 0xff, 0xe6, 0xff, 0x04, 0x00,
+0x44, 0x00, 0x82, 0x00, 0xa2, 0x00, 0xb0, 0x00, 0xa2, 0x00, 0x7c, 0x00, 0x3c, 0x00, 0x00, 0x00,
+0xcc, 0xff, 0x94, 0xff, 0x58, 0xff, 0x38, 0xff, 0x26, 0xff, 0x3e, 0xff, 0x66, 0xff, 0xaa, 0xff,
+0xf2, 0xff, 0x16, 0x00, 0x54, 0x00, 0x80, 0x00, 0x9e, 0x00, 0xa4, 0x00, 0x92, 0x00, 0x68, 0x00,
+0x24, 0x00, 0xec, 0xff, 0xb8, 0xff, 0x7e, 0xff, 0x56, 0xff, 0x3e, 0xff, 0x38, 0xff, 0x56, 0xff,
+0x88, 0xff, 0xb8, 0xff, 0x00, 0x00, 0x36, 0x00, 0x58, 0x00, 0x86, 0x00, 0x96, 0x00, 0x94, 0x00,
+0x86, 0x00, 0x58, 0x00, 0x1c, 0x00, 0xf2, 0xff, 0xb0, 0xff, 0x86, 0xff, 0x70, 0xff, 0x5e, 0xff,
+0x68, 0xff, 0x80, 0xff, 0x9e, 0xff, 0xd4, 0xff, 0x08, 0x00, 0x32, 0x00, 0x58, 0x00, 0x66, 0x00,
+0x6c, 0x00, 0x6c, 0x00, 0x5c, 0x00, 0x36, 0x00, 0x02, 0x00, 0xda, 0xff, 0xb2, 0xff, 0x9c, 0xff,
+0x8e, 0xff, 0x8c, 0xff, 0x94, 0xff, 0xa0, 0xff, 0xc2, 0xff, 0xea, 0xff, 0x00, 0x00, 0x22, 0x00,
+0x3c, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x3a, 0x00, 0x12, 0x00, 0xfa, 0xff, 0xde, 0xff,
+0xbc, 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xae, 0xff, 0xb0, 0xff, 0xc6, 0xff, 0xd8, 0xff, 0xf6, 0xff,
+0x0e, 0x00, 0x10, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x20, 0x00, 0x22, 0x00, 0x08, 0x00, 0xfc, 0xff,
+0xde, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xca, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xd8, 0xff,
+0xe2, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0x00, 0x00,
+0xf4, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xe8, 0xff,
+0xf0, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xde, 0xff, 0xce, 0xff, 0xe0, 0xff, 0xe2, 0xff,
+0xd4, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0x12, 0x00, 0x12, 0x00, 0x10, 0x00,
+0x14, 0x00, 0x12, 0x00, 0x10, 0x00, 0xfa, 0xff, 0xe4, 0xff, 0xd2, 0xff, 0xb2, 0xff, 0xaa, 0xff,
+0xb4, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xc8, 0xff, 0xee, 0xff, 0x02, 0x00, 0x1c, 0x00, 0x3a, 0x00,
+0x44, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x2e, 0x00, 0x16, 0x00, 0xee, 0xff, 0xce, 0xff, 0xb6, 0xff,
+0x8e, 0xff, 0x80, 0xff, 0x8e, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xd0, 0xff, 0xfe, 0xff, 0x24, 0x00,
+0x42, 0x00, 0x68, 0x00, 0x72, 0x00, 0x80, 0x00, 0x5a, 0x00, 0x3e, 0x00, 0x18, 0x00, 0xe2, 0xff,
+0xba, 0xff, 0x86, 0xff, 0x70, 0xff, 0x66, 0xff, 0x66, 0xff, 0x80, 0xff, 0xa4, 0xff, 0xd6, 0xff,
+0x02, 0x00, 0x2a, 0x00, 0x66, 0x00, 0x7c, 0x00, 0x94, 0x00, 0x8e, 0x00, 0x6e, 0x00, 0x40, 0x00,
+0x16, 0x00, 0xce, 0xff, 0x9e, 0xff, 0x78, 0xff, 0x50, 0xff, 0x46, 0xff, 0x4e, 0xff, 0x72, 0xff,
+0x9e, 0xff, 0xda, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x76, 0x00, 0xa2, 0x00, 0xaa, 0x00, 0x9e, 0x00,
+0x78, 0x00, 0x3a, 0x00, 0xfe, 0xff, 0xd4, 0xff, 0xa0, 0xff, 0x62, 0xff, 0x46, 0xff, 0x3c, 0xff,
+0x4c, 0xff, 0x78, 0xff, 0xaa, 0xff, 0xec, 0xff, 0x1a, 0x00, 0x52, 0x00, 0x88, 0x00, 0xa2, 0x00,
+0xb0, 0x00, 0x8e, 0x00, 0x5a, 0x00, 0x20, 0x00, 0xee, 0xff, 0xb4, 0xff, 0x7a, 0xff, 0x50, 0xff,
+0x34, 0xff, 0x24, 0xff, 0x46, 0xff, 0x76, 0xff, 0xb4, 0xff, 0xfe, 0xff, 0x1e, 0x00, 0x60, 0x00,
+0x92, 0x00, 0xa2, 0x00, 0xa8, 0x00, 0x8c, 0x00, 0x54, 0x00, 0x0e, 0x00, 0xe0, 0xff, 0xa8, 0xff,
+0x74, 0xff, 0x3e, 0xff, 0x2a, 0xff, 0x2e, 0xff, 0x4c, 0xff, 0x90, 0xff, 0xca, 0xff, 0x06, 0x00,
+0x42, 0x00, 0x76, 0x00, 0x9e, 0x00, 0xb4, 0x00, 0xb0, 0x00, 0x8c, 0x00, 0x4c, 0x00, 0x16, 0x00,
+0xd0, 0xff, 0x9a, 0xff, 0x68, 0xff, 0x44, 0xff, 0x32, 0xff, 0x3a, 0xff, 0x5c, 0xff, 0x96, 0xff,
+0xd2, 0xff, 0x0e, 0x00, 0x40, 0x00, 0x6a, 0x00, 0x9a, 0x00, 0xa8, 0x00, 0x9e, 0x00, 0x7a, 0x00,
+0x42, 0x00, 0x04, 0x00, 0xca, 0xff, 0x9e, 0xff, 0x70, 0xff, 0x52, 0xff, 0x44, 0xff, 0x50, 0xff,
+0x72, 0xff, 0xaa, 0xff, 0xdc, 0xff, 0x12, 0x00, 0x52, 0x00, 0x70, 0x00, 0x8c, 0x00, 0x8e, 0x00,
+0x82, 0x00, 0x70, 0x00, 0x3c, 0x00, 0x04, 0x00, 0xda, 0xff, 0xa2, 0xff, 0x94, 0xff, 0x78, 0xff,
+0x6c, 0xff, 0x7e, 0xff, 0x92, 0xff, 0xbe, 0xff, 0xec, 0xff, 0x18, 0x00, 0x3e, 0x00, 0x56, 0x00,
+0x6a, 0x00, 0x64, 0x00, 0x5c, 0x00, 0x42, 0x00, 0x16, 0x00, 0x00, 0x00, 0xe4, 0xff, 0xb6, 0xff,
+0xa2, 0xff, 0x9e, 0xff, 0x86, 0xff, 0x94, 0xff, 0xae, 0xff, 0xdc, 0xff, 0xf2, 0xff, 0x10, 0x00,
+0x1e, 0x00, 0x32, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x30, 0x00, 0x10, 0x00, 0x0e, 0x00, 0xf4, 0xff,
+0xec, 0xff, 0xca, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xae, 0xff, 0xba, 0xff, 0xd0, 0xff, 0xde, 0xff,
+0xf8, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x0c, 0x00,
+0x02, 0x00, 0xfc, 0xff, 0xf4, 0xff, 0xe6, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xd4, 0xff,
+0xde, 0xff, 0xd6, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xd4, 0xff, 0xe6, 0xff,
+0xf0, 0xff, 0xfa, 0xff, 0x06, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xfc, 0xff,
+0xfc, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xc8, 0xff, 0xb8, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xba, 0xff,
+0xc2, 0xff, 0xc8, 0xff, 0xde, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x1e, 0x00, 0x2a, 0x00, 0x34, 0x00,
+0x24, 0x00, 0x24, 0x00, 0x1c, 0x00, 0xfa, 0xff, 0xe8, 0xff, 0xce, 0xff, 0xaa, 0xff, 0x98, 0xff,
+0x90, 0xff, 0x92, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xde, 0xff, 0xfc, 0xff, 0x1a, 0x00, 0x40, 0x00,
+0x44, 0x00, 0x58, 0x00, 0x4c, 0x00, 0x42, 0x00, 0x2c, 0x00, 0x08, 0x00, 0xe2, 0xff, 0xb8, 0xff,
+0x94, 0xff, 0x7c, 0xff, 0x6a, 0xff, 0x7a, 0xff, 0x8a, 0xff, 0xb0, 0xff, 0xe4, 0xff, 0x14, 0x00,
+0x40, 0x00, 0x5a, 0x00, 0x78, 0x00, 0x80, 0x00, 0x7a, 0x00, 0x60, 0x00, 0x38, 0x00, 0x08, 0x00,
+0xd8, 0xff, 0xaa, 0xff, 0x74, 0xff, 0x62, 0xff, 0x52, 0xff, 0x60, 0xff, 0x88, 0xff, 0xac, 0xff,
+0xf2, 0xff, 0x1e, 0x00, 0x58, 0x00, 0x88, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x8c, 0x00, 0x70, 0x00,
+0x42, 0x00, 0x04, 0x00, 0xc8, 0xff, 0x88, 0xff, 0x58, 0xff, 0x40, 0xff, 0x32, 0xff, 0x50, 0xff,
+0x8a, 0xff, 0xc6, 0xff, 0xfc, 0xff, 0x2e, 0x00, 0x68, 0x00, 0x9e, 0x00, 0xb6, 0x00, 0xb4, 0x00,
+0x9c, 0x00, 0x6a, 0x00, 0x28, 0x00, 0xea, 0xff, 0xac, 0xff, 0x66, 0xff, 0x34, 0xff, 0x20, 0xff,
+0x32, 0xff, 0x56, 0xff, 0x88, 0xff, 0xd8, 0xff, 0x06, 0x00, 0x3c, 0x00, 0x76, 0x00, 0xa2, 0x00,
+0xbe, 0x00, 0xba, 0x00, 0x96, 0x00, 0x5c, 0x00, 0x0c, 0x00, 0xd6, 0xff, 0xa4, 0xff, 0x54, 0xff,
+0x30, 0xff, 0x20, 0xff, 0x3a, 0xff, 0x5e, 0xff, 0x90, 0xff, 0xe6, 0xff, 0x0a, 0x00, 0x38, 0x00,
+0x78, 0x00, 0x9a, 0x00, 0xb0, 0x00, 0x9c, 0x00, 0x78, 0x00, 0x3e, 0x00, 0xfc, 0xff, 0xc8, 0xff,
+0x84, 0xff, 0x58, 0xff, 0x3a, 0xff, 0x2c, 0xff, 0x46, 0xff, 0x64, 0xff, 0xa2, 0xff, 0xd8, 0xff,
+0x0e, 0x00, 0x44, 0x00, 0x6e, 0x00, 0x96, 0x00, 0x92, 0x00, 0x7e, 0x00, 0x5e, 0x00, 0x26, 0x00,
+0xec, 0xff, 0xb8, 0xff, 0x8c, 0xff, 0x66, 0xff, 0x4a, 0xff, 0x46, 0xff, 0x5a, 0xff, 0x8a, 0xff,
+0xb8, 0xff, 0xe4, 0xff, 0x1c, 0x00, 0x4c, 0x00, 0x7c, 0x00, 0x84, 0x00, 0x88, 0x00, 0x70, 0x00,
+0x40, 0x00, 0x18, 0x00, 0xee, 0xff, 0xbe, 0xff, 0x94, 0xff, 0x74, 0xff, 0x64, 0xff, 0x62, 0xff,
+0x7c, 0xff, 0x9a, 0xff, 0xca, 0xff, 0xf8, 0xff, 0x1c, 0x00, 0x3c, 0x00, 0x64, 0x00, 0x74, 0x00,
+0x6c, 0x00, 0x5a, 0x00, 0x34, 0x00, 0x0c, 0x00, 0xec, 0xff, 0xc6, 0xff, 0xac, 0xff, 0x9a, 0xff,
+0x8e, 0xff, 0x92, 0xff, 0x96, 0xff, 0xba, 0xff, 0xda, 0xff, 0xfa, 0xff, 0x20, 0x00, 0x38, 0x00,
+0x42, 0x00, 0x4e, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x04, 0x00, 0xf0, 0xff, 0xdc, 0xff,
+0xc2, 0xff, 0xc2, 0xff, 0xb8, 0xff, 0xc0, 0xff, 0xcc, 0xff, 0xd0, 0xff, 0xea, 0xff, 0x06, 0x00,
+0x04, 0x00, 0x20, 0x00, 0x1a, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0xfc, 0xff,
+0xee, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xec, 0xff, 0xe2, 0xff,
+0xea, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xf0, 0xff,
+0xf8, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0xfe, 0xff, 0xfc, 0xff,
+0xfc, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xde, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xce, 0xff,
+0xd6, 0xff, 0xe0, 0xff, 0xea, 0xff, 0x00, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x18, 0x00,
+0x12, 0x00, 0x06, 0x00, 0xfa, 0xff, 0xe2, 0xff, 0xd2, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xa8, 0xff,
+0xb0, 0xff, 0xa6, 0xff, 0xba, 0xff, 0xd6, 0xff, 0xea, 0xff, 0x12, 0x00, 0x28, 0x00, 0x40, 0x00,
+0x3a, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x10, 0x00, 0xf8, 0xff, 0xda, 0xff, 0xba, 0xff, 0x9e, 0xff,
+0x8e, 0xff, 0x8a, 0xff, 0x96, 0xff, 0xa2, 0xff, 0xb0, 0xff, 0xe6, 0xff, 0x06, 0x00, 0x3a, 0x00,
+0x5a, 0x00, 0x5a, 0x00, 0x6a, 0x00, 0x52, 0x00, 0x46, 0x00, 0x18, 0x00, 0xf6, 0xff, 0xca, 0xff,
+0x98, 0xff, 0x82, 0xff, 0x6a, 0xff, 0x5c, 0xff, 0x6a, 0xff, 0x92, 0xff, 0xb0, 0xff, 0xec, 0xff,
+0x20, 0x00, 0x48, 0x00, 0x6e, 0x00, 0x82, 0x00, 0x7e, 0x00, 0x6e, 0x00, 0x4c, 0x00, 0x1e, 0x00,
+0xf0, 0xff, 0xb6, 0xff, 0x8e, 0xff, 0x66, 0xff, 0x3e, 0xff, 0x42, 0xff, 0x60, 0xff, 0x94, 0xff,
+0xca, 0xff, 0x00, 0x00, 0x3a, 0x00, 0x62, 0x00, 0x92, 0x00, 0x9a, 0x00, 0x92, 0x00, 0x8c, 0x00,
+0x5a, 0x00, 0x20, 0x00, 0xf0, 0xff, 0xb6, 0xff, 0x82, 0xff, 0x68, 0xff, 0x48, 0xff, 0x46, 0xff,
+0x64, 0xff, 0x9e, 0xff, 0xd6, 0xff, 0x0e, 0x00, 0x40, 0x00, 0x7c, 0x00, 0xa4, 0x00, 0xa2, 0x00,
+0x94, 0x00, 0x70, 0x00, 0x3c, 0x00, 0x0c, 0x00, 0xdc, 0xff, 0x98, 0xff, 0x66, 0xff, 0x3e, 0xff,
+0x30, 0xff, 0x4a, 0xff, 0x70, 0xff, 0xb4, 0xff, 0xf2, 0xff, 0x16, 0x00, 0x58, 0x00, 0x8a, 0x00,
+0xb2, 0x00, 0xb0, 0x00, 0x94, 0x00, 0x6c, 0x00, 0x28, 0x00, 0xfc, 0xff, 0xc2, 0xff, 0x88, 0xff,
+0x5c, 0xff, 0x34, 0xff, 0x40, 0xff, 0x50, 0xff, 0x84, 0xff, 0xc2, 0xff, 0x02, 0x00, 0x36, 0x00,
+0x64, 0x00, 0x96, 0x00, 0xb0, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x5c, 0x00, 0x10, 0x00, 0xea, 0xff,
+0xb2, 0xff, 0x7c, 0xff, 0x58, 0xff, 0x34, 0xff, 0x3e, 0xff, 0x5a, 0xff, 0x86, 0xff, 0xc6, 0xff,
+0xfc, 0xff, 0x32, 0x00, 0x64, 0x00, 0x86, 0x00, 0x9a, 0x00, 0x8c, 0x00, 0x72, 0x00, 0x46, 0x00,
+0x10, 0x00, 0xda, 0xff, 0x9a, 0xff, 0x70, 0xff, 0x54, 0xff, 0x42, 0xff, 0x44, 0xff, 0x70, 0xff,
+0xa0, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x38, 0x00, 0x4e, 0x00, 0x6e, 0x00, 0x84, 0x00, 0x76, 0x00,
+0x5a, 0x00, 0x32, 0x00, 0xf6, 0xff, 0xd0, 0xff, 0xa4, 0xff, 0x88, 0xff, 0x7c, 0xff, 0x72, 0xff,
+0x72, 0xff, 0x80, 0xff, 0xba, 0xff, 0xe4, 0xff, 0x00, 0x00, 0x22, 0x00, 0x3e, 0x00, 0x3c, 0x00,
+0x46, 0x00, 0x40, 0x00, 0x30, 0x00, 0x18, 0x00, 0xf0, 0xff, 0xd0, 0xff, 0xae, 0xff, 0x9a, 0xff,
+0x98, 0xff, 0xa4, 0xff, 0xa0, 0xff, 0xb0, 0xff, 0xce, 0xff, 0xf2, 0xff, 0x0c, 0x00, 0x12, 0x00,
+0x24, 0x00, 0x22, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x16, 0x00, 0x04, 0x00, 0xf4, 0xff, 0xd8, 0xff,
+0xc0, 0xff, 0xcc, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xd0, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xfe, 0xff,
+0x0a, 0x00, 0x0a, 0x00, 0x14, 0x00, 0x08, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x06, 0x00,
+0xf2, 0xff, 0xfa, 0xff, 0xee, 0xff, 0xec, 0xff, 0xee, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xe0, 0xff,
+0xe4, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xfe, 0xff,
+0x04, 0x00, 0x02, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x0e, 0x00,
+0xfe, 0xff, 0xfc, 0xff, 0xee, 0xff, 0xd6, 0xff, 0xcc, 0xff, 0xc2, 0xff, 0xcc, 0xff, 0xd2, 0xff,
+0xd8, 0xff, 0xe4, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x18, 0x00, 0x38, 0x00, 0x38, 0x00, 0x36, 0x00,
+0x2c, 0x00, 0x26, 0x00, 0x02, 0x00, 0xea, 0xff, 0xd8, 0xff, 0xb2, 0xff, 0x98, 0xff, 0x96, 0xff,
+0x9e, 0xff, 0xa6, 0xff, 0xb2, 0xff, 0xd0, 0xff, 0xf8, 0xff, 0x0c, 0x00, 0x40, 0x00, 0x52, 0x00,
+0x52, 0x00, 0x52, 0x00, 0x3e, 0x00, 0x2c, 0x00, 0x06, 0x00, 0xda, 0xff, 0xa8, 0xff, 0x82, 0xff,
+0x72, 0xff, 0x62, 0xff, 0x64, 0xff, 0x8a, 0xff, 0xa8, 0xff, 0xd6, 0xff, 0x02, 0x00, 0x32, 0x00,
+0x5c, 0x00, 0x7a, 0x00, 0x84, 0x00, 0x7c, 0x00, 0x64, 0x00, 0x36, 0x00, 0x00, 0x00, 0xcc, 0xff,
+0x96, 0xff, 0x6e, 0xff, 0x56, 0xff, 0x4c, 0xff, 0x5a, 0xff, 0x6e, 0xff, 0xa4, 0xff, 0xd4, 0xff,
+0x0e, 0x00, 0x40, 0x00, 0x70, 0x00, 0x90, 0x00, 0x98, 0x00, 0x90, 0x00, 0x64, 0x00, 0x32, 0x00,
+0xfa, 0xff, 0xc0, 0xff, 0x84, 0xff, 0x62, 0xff, 0x46, 0xff, 0x34, 0xff, 0x46, 0xff, 0x6a, 0xff,
+0xa8, 0xff, 0xe6, 0xff, 0x1a, 0x00, 0x52, 0x00, 0x7e, 0x00, 0xa6, 0x00, 0xac, 0x00, 0x9a, 0x00,
+0x70, 0x00, 0x2c, 0x00, 0xfa, 0xff, 0xc6, 0xff, 0x82, 0xff, 0x54, 0xff, 0x48, 0xff, 0x3a, 0xff,
+0x5a, 0xff, 0x88, 0xff, 0xb6, 0xff, 0xf2, 0xff, 0x28, 0x00, 0x6c, 0x00, 0x9c, 0x00, 0xae, 0x00,
+0xac, 0x00, 0x94, 0x00, 0x66, 0x00, 0x1a, 0x00, 0xee, 0xff, 0xbe, 0xff, 0x82, 0xff, 0x60, 0xff,
+0x3c, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x88, 0xff, 0xd8, 0xff, 0x06, 0x00, 0x28, 0x00, 0x6e, 0x00,
+0x92, 0x00, 0xa6, 0x00, 0x98, 0x00, 0x7e, 0x00, 0x4a, 0x00, 0x08, 0x00, 0xe8, 0xff, 0xaa, 0xff,
+0x7a, 0xff, 0x54, 0xff, 0x48, 0xff, 0x50, 0xff, 0x76, 0xff, 0xa2, 0xff, 0xce, 0xff, 0x18, 0x00,
+0x3e, 0x00, 0x70, 0x00, 0x96, 0x00, 0x94, 0x00, 0x8c, 0x00, 0x72, 0x00, 0x42, 0x00, 0x04, 0x00,
+0xd6, 0xff, 0xa6, 0xff, 0x82, 0xff, 0x68, 0xff, 0x54, 0xff, 0x6e, 0xff, 0x8a, 0xff, 0xb0, 0xff,
+0xe8, 0xff, 0x1e, 0x00, 0x40, 0x00, 0x64, 0x00, 0x80, 0x00, 0x82, 0x00, 0x70, 0x00, 0x46, 0x00,
+0x26, 0x00, 0xec, 0xff, 0xcc, 0xff, 0x9e, 0xff, 0x7e, 0xff, 0x78, 0xff, 0x76, 0xff, 0x7e, 0xff,
+0x90, 0xff, 0xce, 0xff, 0xf8, 0xff, 0x1a, 0x00, 0x3e, 0x00, 0x4a, 0x00, 0x50, 0x00, 0x50, 0x00,
+0x50, 0x00, 0x30, 0x00, 0x06, 0x00, 0xf0, 0xff, 0xc2, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0x98, 0xff,
+0x9e, 0xff, 0x9e, 0xff, 0xb4, 0xff, 0xde, 0xff, 0xf8, 0xff, 0x1a, 0x00, 0x32, 0x00, 0x34, 0x00,
+0x3a, 0x00, 0x34, 0x00, 0x26, 0x00, 0x14, 0x00, 0x04, 0x00, 0xe8, 0xff, 0xc8, 0xff, 0xbe, 0xff,
+0xbe, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xc2, 0xff, 0xd8, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x12, 0x00,
+0x20, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xe6, 0xff,
+0xe2, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xda, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xf0, 0xff,
+0xfe, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf8, 0xff,
+0xfe, 0xff, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xfc, 0xff, 0xf8, 0xff,
+0xf2, 0xff, 0xe6, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xce, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xd8, 0xff,
+0xee, 0xff, 0xf4, 0xff, 0x06, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x16, 0x00, 0x1e, 0x00,
+0x06, 0x00, 0xfe, 0xff, 0xf2, 0xff, 0xd8, 0xff, 0xbe, 0xff, 0xa6, 0xff, 0xa2, 0xff, 0xae, 0xff,
+0xbe, 0xff, 0xc0, 0xff, 0xe4, 0xff, 0x02, 0x00, 0x0c, 0x00, 0x34, 0x00, 0x48, 0x00, 0x48, 0x00,
+0x42, 0x00, 0x36, 0x00, 0x2a, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xbe, 0xff, 0xa0, 0xff, 0x90, 0xff,
+0x8a, 0xff, 0x8e, 0xff, 0x92, 0xff, 0xb0, 0xff, 0xe2, 0xff, 0x0a, 0x00, 0x36, 0x00, 0x52, 0x00,
+0x5c, 0x00, 0x64, 0x00, 0x5e, 0x00, 0x4a, 0x00, 0x30, 0x00, 0x00, 0x00, 0xc6, 0xff, 0x92, 0xff,
+0x6e, 0xff, 0x5e, 0xff, 0x58, 0xff, 0x6a, 0xff, 0x8a, 0xff, 0xae, 0xff, 0xdc, 0xff, 0x12, 0x00,
+0x50, 0x00, 0x6c, 0x00, 0x80, 0x00, 0x8a, 0x00, 0x78, 0x00, 0x54, 0x00, 0x20, 0x00, 0xee, 0xff,
+0xc2, 0xff, 0x88, 0xff, 0x5a, 0xff, 0x46, 0xff, 0x3e, 0xff, 0x58, 0xff, 0x88, 0xff, 0xba, 0xff,
+0x00, 0x00, 0x32, 0x00, 0x54, 0x00, 0x94, 0x00, 0xa4, 0x00, 0xa6, 0x00, 0x9a, 0x00, 0x56, 0x00,
+0x24, 0x00, 0xec, 0xff, 0xa2, 0xff, 0x74, 0xff, 0x3e, 0xff, 0x32, 0xff, 0x36, 0xff, 0x4c, 0xff,
+0x86, 0xff, 0xc6, 0xff, 0xfc, 0xff, 0x32, 0x00, 0x7e, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0xaa, 0x00,
+0x84, 0x00, 0x58, 0x00, 0x0e, 0x00, 0xde, 0xff, 0xa6, 0xff, 0x62, 0xff, 0x36, 0xff, 0x28, 0xff,
+0x42, 0xff, 0x66, 0xff, 0xa2, 0xff, 0xe2, 0xff, 0x0c, 0x00, 0x4e, 0x00, 0x86, 0x00, 0xae, 0x00,
+0xc4, 0x00, 0xb0, 0x00, 0x7e, 0x00, 0x40, 0x00, 0xfe, 0xff, 0xd6, 0xff, 0x96, 0xff, 0x62, 0xff,
+0x48, 0xff, 0x32, 0xff, 0x4e, 0xff, 0x70, 0xff, 0xb4, 0xff, 0xfc, 0xff, 0x1a, 0x00, 0x4e, 0x00,
+0x84, 0x00, 0x9e, 0x00, 0xa4, 0x00, 0x98, 0x00, 0x66, 0x00, 0x30, 0x00, 0xf2, 0xff, 0xbc, 0xff,
+0x90, 0xff, 0x60, 0xff, 0x42, 0xff, 0x40, 0xff, 0x64, 0xff, 0x8e, 0xff, 0xb2, 0xff, 0xf4, 0xff,
+0x26, 0x00, 0x4c, 0x00, 0x7e, 0x00, 0x90, 0x00, 0x92, 0x00, 0x7e, 0x00, 0x4a, 0x00, 0x1a, 0x00,
+0xe0, 0xff, 0xb2, 0xff, 0x8e, 0xff, 0x6e, 0xff, 0x6a, 0xff, 0x60, 0xff, 0x7c, 0xff, 0xa4, 0xff,
+0xd8, 0xff, 0x04, 0x00, 0x2e, 0x00, 0x5a, 0x00, 0x74, 0x00, 0x7a, 0x00, 0x70, 0x00, 0x56, 0x00,
+0x32, 0x00, 0x06, 0x00, 0xdc, 0xff, 0xa4, 0xff, 0x8c, 0xff, 0x72, 0xff, 0x6e, 0xff, 0x84, 0xff,
+0x8c, 0xff, 0xb0, 0xff, 0xdc, 0xff, 0xfe, 0xff, 0x26, 0x00, 0x46, 0x00, 0x48, 0x00, 0x4e, 0x00,
+0x42, 0x00, 0x40, 0x00, 0x1c, 0x00, 0xe8, 0xff, 0xd6, 0xff, 0xb2, 0xff, 0xa0, 0xff, 0xa2, 0xff,
+0x96, 0xff, 0xa2, 0xff, 0xb2, 0xff, 0xbe, 0xff, 0xe4, 0xff, 0x00, 0x00, 0x18, 0x00, 0x36, 0x00,
+0x38, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x22, 0x00, 0x0c, 0x00, 0xf6, 0xff, 0xec, 0xff, 0xde, 0xff,
+0xbc, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc0, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xf0, 0xff, 0xfe, 0xff,
+0xfc, 0xff, 0x08, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x04, 0x00, 0xf4, 0xff,
+0xe8, 0xff, 0xe6, 0xff, 0xf2, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xec, 0xff, 0xdc, 0xff, 0xe4, 0xff,
+0xdc, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf0, 0xff, 0xee, 0xff,
+0xfc, 0xff, 0x14, 0x00, 0x14, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x02, 0x00,
+0x02, 0x00, 0xf2, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xce, 0xff, 0xd0, 0xff,
+0xdc, 0xff, 0xf6, 0xff, 0x0a, 0x00, 0x1e, 0x00, 0x30, 0x00, 0x3e, 0x00, 0x46, 0x00, 0x2e, 0x00,
+0x26, 0x00, 0x12, 0x00, 0xf2, 0xff, 0xd8, 0xff, 0xc2, 0xff, 0x9e, 0xff, 0x90, 0xff, 0x9a, 0xff,
+0xa2, 0xff, 0xa8, 0xff, 0xcc, 0xff, 0xe4, 0xff, 0x0a, 0x00, 0x30, 0x00, 0x52, 0x00, 0x60, 0x00,
+0x5a, 0x00, 0x4c, 0x00, 0x3c, 0x00, 0x14, 0x00, 0xe8, 0xff, 0xd0, 0xff, 0x9c, 0xff, 0x7e, 0xff,
+0x78, 0xff, 0x6c, 0xff, 0x84, 0xff, 0x9e, 0xff, 0xc4, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x60, 0x00,
+0x76, 0x00, 0x8a, 0x00, 0x7c, 0x00, 0x66, 0x00, 0x42, 0x00, 0x10, 0x00, 0xe0, 0xff, 0xa2, 0xff,
+0x74, 0xff, 0x56, 0xff, 0x48, 0xff, 0x4c, 0xff, 0x68, 0xff, 0x8e, 0xff, 0xc4, 0xff, 0x00, 0x00,
+0x30, 0x00, 0x6a, 0x00, 0x82, 0x00, 0x90, 0x00, 0x82, 0x00, 0x60, 0x00, 0x2c, 0x00, 0xfa, 0xff,
+0xc4, 0xff, 0x8e, 0xff, 0x54, 0xff, 0x32, 0xff, 0x32, 0xff, 0x3c, 0xff, 0x5e, 0xff, 0xa4, 0xff,
+0xd0, 0xff, 0x12, 0x00, 0x4c, 0x00, 0x88, 0x00, 0xac, 0x00, 0xb2, 0x00, 0x9e, 0x00, 0x60, 0x00,
+0x36, 0x00, 0xee, 0xff, 0xc6, 0xff, 0x90, 0xff, 0x58, 0xff, 0x2c, 0xff, 0x18, 0xff, 0x36, 0xff,
+0x6c, 0xff, 0xac, 0xff, 0xf0, 0xff, 0x22, 0x00, 0x66, 0x00, 0x9a, 0x00, 0xbc, 0x00, 0xba, 0x00,
+0xa6, 0x00, 0x74, 0x00, 0x26, 0x00, 0xee, 0xff, 0xb6, 0xff, 0x70, 0xff, 0x32, 0xff, 0x20, 0xff,
+0x16, 0xff, 0x30, 0xff, 0x6c, 0xff, 0xb4, 0xff, 0xf2, 0xff, 0x30, 0x00, 0x72, 0x00, 0xa2, 0x00,
+0xb6, 0x00, 0xbc, 0x00, 0xa0, 0x00, 0x70, 0x00, 0x28, 0x00, 0xee, 0xff, 0xba, 0xff, 0x74, 0xff,
+0x46, 0xff, 0x32, 0xff, 0x32, 0xff, 0x56, 0xff, 0x82, 0xff, 0xc6, 0xff, 0x0c, 0x00, 0x46, 0x00,
+0x76, 0x00, 0xa2, 0x00, 0xae, 0x00, 0xa8, 0x00, 0x8a, 0x00, 0x58, 0x00, 0x20, 0x00, 0xe6, 0xff,
+0xae, 0xff, 0x80, 0xff, 0x56, 0xff, 0x3e, 0xff, 0x52, 0xff, 0x64, 0xff, 0x9c, 0xff, 0xda, 0xff,
+0x10, 0x00, 0x40, 0x00, 0x64, 0x00, 0x82, 0x00, 0x8a, 0x00, 0x7e, 0x00, 0x66, 0x00, 0x38, 0x00,
+0x0a, 0x00, 0xd0, 0xff, 0xa6, 0xff, 0x82, 0xff, 0x68, 0xff, 0x5e, 0xff, 0x6c, 0xff, 0x8c, 0xff,
+0xb2, 0xff, 0xe8, 0xff, 0x16, 0x00, 0x4a, 0x00, 0x50, 0x00, 0x68, 0x00, 0x72, 0x00, 0x5a, 0x00,
+0x4c, 0x00, 0x22, 0x00, 0x02, 0x00, 0xd2, 0xff, 0xaa, 0xff, 0x9e, 0xff, 0x88, 0xff, 0x8a, 0xff,
+0x90, 0xff, 0xac, 0xff, 0xcc, 0xff, 0xe6, 0xff, 0x16, 0x00, 0x28, 0x00, 0x36, 0x00, 0x34, 0x00,
+0x30, 0x00, 0x32, 0x00, 0x18, 0x00, 0x0a, 0x00, 0xee, 0xff, 0xcc, 0xff, 0xb6, 0xff, 0xae, 0xff,
+0xa8, 0xff, 0x9e, 0xff, 0xae, 0xff, 0xc4, 0xff, 0xd4, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0x04, 0x00,
+0x04, 0x00, 0x08, 0x00, 0x12, 0x00, 0x08, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xee, 0xff, 0xde, 0xff,
+0xdc, 0xff, 0xd8, 0xff, 0xce, 0xff, 0xc8, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xe8, 0xff,
+0xde, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf8, 0xff,
+0xf8, 0xff, 0x02, 0x00, 0xfa, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xec, 0xff,
+0xea, 0xff, 0xd2, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xca, 0xff, 0xce, 0xff, 0xd4, 0xff, 0xe2, 0xff,
+0xf4, 0xff, 0xfc, 0xff, 0x0e, 0x00, 0x1a, 0x00, 0x26, 0x00, 0x20, 0x00, 0x28, 0x00, 0x24, 0x00,
+0x18, 0x00, 0x00, 0x00, 0xde, 0xff, 0xd0, 0xff, 0xba, 0xff, 0xb0, 0xff, 0xb4, 0xff, 0xba, 0xff,
+0xc4, 0xff, 0xe4, 0xff, 0xfa, 0xff, 0x1a, 0x00, 0x36, 0x00, 0x48, 0x00, 0x5c, 0x00, 0x52, 0x00,
+0x4e, 0x00, 0x3a, 0x00, 0x0e, 0x00, 0xf6, 0xff, 0xce, 0xff, 0xa6, 0xff, 0x8e, 0xff, 0x84, 0xff,
+0x86, 0xff, 0xa2, 0xff, 0xba, 0xff, 0xe2, 0xff, 0x0c, 0x00, 0x30, 0x00, 0x54, 0x00, 0x70, 0x00,
+0x7e, 0x00, 0x72, 0x00, 0x5c, 0x00, 0x34, 0x00, 0x08, 0x00, 0xda, 0xff, 0xa0, 0xff, 0x84, 0xff,
+0x5c, 0xff, 0x5c, 0xff, 0x6e, 0xff, 0x8e, 0xff, 0xbe, 0xff, 0xe8, 0xff, 0x22, 0x00, 0x4a, 0x00,
+0x76, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x92, 0x00, 0x6e, 0x00, 0x2e, 0x00, 0xfa, 0xff, 0xba, 0xff,
+0x82, 0xff, 0x56, 0xff, 0x44, 0xff, 0x3e, 0xff, 0x4e, 0xff, 0x80, 0xff, 0xba, 0xff, 0xf6, 0xff,
+0x2c, 0x00, 0x66, 0x00, 0x96, 0x00, 0xb0, 0x00, 0xac, 0x00, 0x90, 0x00, 0x62, 0x00, 0x1a, 0x00,
+0xdc, 0xff, 0x9c, 0xff, 0x60, 0xff, 0x2e, 0xff, 0x12, 0xff, 0x18, 0xff, 0x3e, 0xff, 0x74, 0xff,
+0xbc, 0xff, 0xfc, 0xff, 0x34, 0x00, 0x76, 0x00, 0xa6, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0x94, 0x00,
+0x60, 0x00, 0x14, 0x00, 0xdc, 0xff, 0x96, 0xff, 0x52, 0xff, 0x2c, 0xff, 0x16, 0xff, 0x24, 0xff,
+0x4e, 0xff, 0x8c, 0xff, 0xce, 0xff, 0x08, 0x00, 0x4a, 0x00, 0x8e, 0x00, 0xb8, 0x00, 0xcc, 0x00,
+0xbc, 0x00, 0x8a, 0x00, 0x4a, 0x00, 0x08, 0x00, 0xce, 0xff, 0x88, 0xff, 0x52, 0xff, 0x2a, 0xff,
+0x18, 0xff, 0x38, 0xff, 0x5e, 0xff, 0x8e, 0xff, 0xda, 0xff, 0x16, 0x00, 0x54, 0x00, 0x84, 0x00,
+0xaa, 0x00, 0xb2, 0x00, 0xa4, 0x00, 0x74, 0x00, 0x38, 0x00, 0x02, 0x00, 0xc0, 0xff, 0x86, 0xff,
+0x56, 0xff, 0x40, 0xff, 0x3e, 0xff, 0x50, 0xff, 0x82, 0xff, 0xaa, 0xff, 0xf4, 0xff, 0x2e, 0x00,
+0x5a, 0x00, 0x90, 0x00, 0xa0, 0x00, 0xa8, 0x00, 0x94, 0x00, 0x66, 0x00, 0x32, 0x00, 0xf6, 0xff,
+0xc2, 0xff, 0x90, 0xff, 0x74, 0xff, 0x56, 0xff, 0x5c, 0xff, 0x72, 0xff, 0x90, 0xff, 0xc6, 0xff,
+0xfc, 0xff, 0x32, 0x00, 0x50, 0x00, 0x76, 0x00, 0x86, 0x00, 0x82, 0x00, 0x6e, 0x00, 0x40, 0x00,
+0x14, 0x00, 0xe6, 0xff, 0xbc, 0xff, 0x96, 0xff, 0x86, 0xff, 0x7a, 0xff, 0x74, 0xff, 0x88, 0xff,
+0xaa, 0xff, 0xdc, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x62, 0x00, 0x54, 0x00,
+0x44, 0x00, 0x2a, 0x00, 0x02, 0x00, 0xe6, 0xff, 0xc2, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xa6, 0xff,
+0xb2, 0xff, 0xb0, 0xff, 0xc0, 0xff, 0xe2, 0xff, 0x08, 0x00, 0x1a, 0x00, 0x2c, 0x00, 0x2c, 0x00,
+0x32, 0x00, 0x28, 0x00, 0x1a, 0x00, 0x0c, 0x00, 0xf6, 0xff, 0xe0, 0xff, 0xd4, 0xff, 0xc6, 0xff,
+0xc0, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xee, 0xff, 0x00, 0x00,
+0xfc, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xe6, 0xff,
+0xf0, 0xff, 0xee, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xd4, 0xff, 0xde, 0xff, 0xd8, 0xff,
+0xda, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xf6, 0xff,
+0x08, 0x00, 0x08, 0x00, 0x16, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0xfe, 0xff, 0xec, 0xff,
+0xdc, 0xff, 0xc8, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xb0, 0xff, 0xb4, 0xff, 0xbc, 0xff, 0xc8, 0xff,
+0xea, 0xff, 0xfc, 0xff, 0x1a, 0x00, 0x30, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x2e, 0x00, 0x26, 0x00,
+0x10, 0x00, 0xf0, 0xff, 0xd6, 0xff, 0xc0, 0xff, 0x9a, 0xff, 0x8a, 0xff, 0x86, 0xff, 0x92, 0xff,
+0xa2, 0xff, 0xbe, 0xff, 0xec, 0xff, 0x0c, 0x00, 0x32, 0x00, 0x52, 0x00, 0x64, 0x00, 0x68, 0x00,
+0x58, 0x00, 0x4c, 0x00, 0x28, 0x00, 0xfc, 0xff, 0xd8, 0xff, 0xae, 0xff, 0x86, 0xff, 0x70, 0xff,
+0x6c, 0xff, 0x80, 0xff, 0x96, 0xff, 0xb6, 0xff, 0xf0, 0xff, 0x18, 0x00, 0x4c, 0x00, 0x72, 0x00,
+0x8c, 0x00, 0x84, 0x00, 0x74, 0x00, 0x5c, 0x00, 0x30, 0x00, 0x00, 0x00, 0xc6, 0xff, 0x90, 0xff,
+0x6a, 0xff, 0x56, 0xff, 0x46, 0xff, 0x60, 0xff, 0x8e, 0xff, 0xbc, 0xff, 0xfa, 0xff, 0x34, 0x00,
+0x60, 0x00, 0x96, 0x00, 0xa4, 0x00, 0x9c, 0x00, 0x90, 0x00, 0x54, 0x00, 0x22, 0x00, 0xf0, 0xff,
+0xaa, 0xff, 0x6c, 0xff, 0x44, 0xff, 0x34, 0xff, 0x3e, 0xff, 0x56, 0xff, 0x8c, 0xff, 0xd0, 0xff,
+0x04, 0x00, 0x46, 0x00, 0x80, 0x00, 0xa4, 0x00, 0xbc, 0x00, 0xae, 0x00, 0x88, 0x00, 0x52, 0x00,
+0x14, 0x00, 0xe2, 0xff, 0x96, 0xff, 0x5e, 0xff, 0x2e, 0xff, 0x18, 0xff, 0x32, 0xff, 0x58, 0xff,
+0x9c, 0xff, 0xd8, 0xff, 0x10, 0x00, 0x52, 0x00, 0x8c, 0x00, 0xa8, 0x00, 0xb4, 0x00, 0xa8, 0x00,
+0x80, 0x00, 0x3c, 0x00, 0xf8, 0xff, 0xc6, 0xff, 0x82, 0xff, 0x48, 0xff, 0x26, 0xff, 0x1c, 0xff,
+0x3e, 0xff, 0x5c, 0xff, 0xa2, 0xff, 0xe8, 0xff, 0x12, 0x00, 0x58, 0x00, 0x98, 0x00, 0xa2, 0x00,
+0xa2, 0x00, 0x9a, 0x00, 0x66, 0x00, 0x30, 0x00, 0xf0, 0xff, 0xba, 0xff, 0x7c, 0xff, 0x44, 0xff,
+0x30, 0xff, 0x38, 0xff, 0x4e, 0xff, 0x80, 0xff, 0xb8, 0xff, 0xfe, 0xff, 0x28, 0x00, 0x58, 0x00,
+0x8a, 0x00, 0x9a, 0x00, 0xa4, 0x00, 0x88, 0x00, 0x4e, 0x00, 0x14, 0x00, 0xe0, 0xff, 0xae, 0xff,
+0x7c, 0xff, 0x4a, 0xff, 0x4c, 0xff, 0x58, 0xff, 0x62, 0xff, 0x8e, 0xff, 0xd0, 0xff, 0x06, 0x00,
+0x36, 0x00, 0x5e, 0x00, 0x6e, 0x00, 0x86, 0x00, 0x84, 0x00, 0x68, 0x00, 0x3c, 0x00, 0x0e, 0x00,
+0xd4, 0xff, 0xa0, 0xff, 0x88, 0xff, 0x70, 0xff, 0x66, 0xff, 0x7a, 0xff, 0x92, 0xff, 0xb2, 0xff,
+0xec, 0xff, 0x0a, 0x00, 0x3e, 0x00, 0x58, 0x00, 0x6a, 0x00, 0x6e, 0x00, 0x60, 0x00, 0x50, 0x00,
+0x2e, 0x00, 0xfc, 0xff, 0xdc, 0xff, 0xba, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0x94, 0xff, 0x9a, 0xff,
+0xb2, 0xff, 0xd2, 0xff, 0xf4, 0xff, 0x08, 0x00, 0x24, 0x00, 0x34, 0x00, 0x38, 0x00, 0x4a, 0x00,
+0x46, 0x00, 0x3a, 0x00, 0x10, 0x00, 0xfa, 0xff, 0xe4, 0xff, 0xc8, 0xff, 0xbc, 0xff, 0xba, 0xff,
+0xba, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x0e, 0x00, 0x18, 0x00,
+0x14, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x12, 0x00, 0x06, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xe4, 0xff,
+0xda, 0xff, 0xe6, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf0, 0xff,
+0xf8, 0xff, 0xf8, 0xff, 0xee, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xfe, 0xff, 0xf6, 0xff,
+0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x04, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xf6, 0xff, 0xee, 0xff,
+0xde, 0xff, 0xcc, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xd2, 0xff, 0xde, 0xff, 0xe8, 0xff,
+0xf2, 0xff, 0x08, 0x00, 0x1a, 0x00, 0x28, 0x00, 0x22, 0x00, 0x28, 0x00, 0x22, 0x00, 0x16, 0x00,
+0xfa, 0xff, 0xe2, 0xff, 0xc2, 0xff, 0xac, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xb4, 0xff, 0xb6, 0xff,
+0xd2, 0xff, 0xf2, 0xff, 0x10, 0x00, 0x32, 0x00, 0x4a, 0x00, 0x54, 0x00, 0x54, 0x00, 0x4c, 0x00,
+0x30, 0x00, 0x12, 0x00, 0xf0, 0xff, 0xc2, 0xff, 0x92, 0xff, 0x86, 0xff, 0x70, 0xff, 0x72, 0xff,
+0x8e, 0xff, 0x98, 0xff, 0xce, 0xff, 0x08, 0x00, 0x2a, 0x00, 0x54, 0x00, 0x70, 0x00, 0x7c, 0x00,
+0x7a, 0x00, 0x5e, 0x00, 0x3e, 0x00, 0x0a, 0x00, 0xdc, 0xff, 0xb2, 0xff, 0x7c, 0xff, 0x5e, 0xff,
+0x54, 0xff, 0x5c, 0xff, 0x82, 0xff, 0xa8, 0xff, 0xd8, 0xff, 0x18, 0x00, 0x46, 0x00, 0x6e, 0x00,
+0xa6, 0x00, 0x9a, 0x00, 0x98, 0x00, 0x78, 0x00, 0x38, 0x00, 0x12, 0x00, 0xd8, 0xff, 0xa0, 0xff,
+0x5e, 0xff, 0x42, 0xff, 0x40, 0xff, 0x40, 0xff, 0x6a, 0xff, 0xa2, 0xff, 0xdc, 0xff, 0x14, 0x00,
+0x52, 0x00, 0x8e, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0x9c, 0x00, 0x74, 0x00, 0x36, 0x00, 0xfc, 0xff,
+0xc0, 0xff, 0x90, 0xff, 0x50, 0xff, 0x2e, 0xff, 0x30, 0xff, 0x3e, 0xff, 0x6a, 0xff, 0xb2, 0xff,
+0xec, 0xff, 0x1c, 0x00, 0x6a, 0x00, 0x9a, 0x00, 0xb0, 0x00, 0xae, 0x00, 0x94, 0x00, 0x6a, 0x00,
+0x2a, 0x00, 0xfe, 0xff, 0xb0, 0xff, 0x7a, 0xff, 0x48, 0xff, 0x2c, 0xff, 0x2e, 0xff, 0x56, 0xff,
+0x88, 0xff, 0xc4, 0xff, 0x00, 0x00, 0x32, 0x00, 0x6a, 0x00, 0x92, 0x00, 0xb2, 0x00, 0xaa, 0x00,
+0x8a, 0x00, 0x5a, 0x00, 0x10, 0x00, 0xdc, 0xff, 0xa4, 0xff, 0x64, 0xff, 0x46, 0xff, 0x2e, 0xff,
+0x38, 0xff, 0x60, 0xff, 0x8c, 0xff, 0xc4, 0xff, 0x06, 0x00, 0x36, 0x00, 0x6a, 0x00, 0x8c, 0x00,
+0x9c, 0x00, 0x96, 0x00, 0x72, 0x00, 0x40, 0x00, 0x0e, 0x00, 0xca, 0xff, 0x9e, 0xff, 0x78, 0xff,
+0x42, 0xff, 0x40, 0xff, 0x4e, 0xff, 0x70, 0xff, 0xa8, 0xff, 0xda, 0xff, 0x12, 0x00, 0x38, 0x00,
+0x6e, 0x00, 0x8c, 0x00, 0x8e, 0x00, 0x7c, 0x00, 0x5e, 0x00, 0x38, 0x00, 0xfe, 0xff, 0xc6, 0xff,
+0x9c, 0xff, 0x72, 0xff, 0x58, 0xff, 0x58, 0xff, 0x66, 0xff, 0x86, 0xff, 0xb8, 0xff, 0xe0, 0xff,
+0x12, 0x00, 0x42, 0x00, 0x50, 0x00, 0x64, 0x00, 0x66, 0x00, 0x64, 0x00, 0x4a, 0x00, 0x14, 0x00,
+0xf4, 0xff, 0xc2, 0xff, 0x98, 0xff, 0x8e, 0xff, 0x7c, 0xff, 0x82, 0xff, 0x82, 0xff, 0x9a, 0xff,
+0xc2, 0xff, 0xee, 0xff, 0x16, 0x00, 0x30, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x46, 0x00, 0x46, 0x00,
+0x42, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xe6, 0xff, 0xc0, 0xff, 0xbc, 0xff, 0xaa, 0xff, 0xa4, 0xff,
+0xa8, 0xff, 0xbe, 0xff, 0xe2, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x1a, 0x00, 0x12, 0x00, 0x1c, 0x00,
+0x2e, 0x00, 0x24, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0xee, 0xff, 0xd2, 0xff, 0xd0, 0xff,
+0xd4, 0xff, 0xc2, 0xff, 0xd4, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xee, 0xff,
+0xf2, 0xff, 0xfa, 0xff, 0x04, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00,
+0xf6, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xdc, 0xff, 0xdc, 0xff,
+0xde, 0xff, 0xd6, 0xff, 0xe2, 0xff, 0xea, 0xff, 0xee, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00,
+0x14, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xf0, 0xff,
+0xd2, 0xff, 0xc2, 0xff, 0xb4, 0xff, 0xae, 0xff, 0xb8, 0xff, 0xbc, 0xff, 0xc4, 0xff, 0xe0, 0xff,
+0xf6, 0xff, 0x14, 0x00, 0x28, 0x00, 0x34, 0x00, 0x3e, 0x00, 0x34, 0x00, 0x36, 0x00, 0x22, 0x00,
+0xfe, 0xff, 0xe6, 0xff, 0xbe, 0xff, 0x98, 0xff, 0x84, 0xff, 0x7e, 0xff, 0x92, 0xff, 0xa2, 0xff,
+0xb8, 0xff, 0xe0, 0xff, 0x00, 0x00, 0x2a, 0x00, 0x54, 0x00, 0x62, 0x00, 0x70, 0x00, 0x68, 0x00,
+0x4c, 0x00, 0x2e, 0x00, 0x08, 0x00, 0xd6, 0xff, 0x9a, 0xff, 0x74, 0xff, 0x5e, 0xff, 0x5a, 0xff,
+0x6e, 0xff, 0x84, 0xff, 0xa6, 0xff, 0xdc, 0xff, 0x12, 0x00, 0x4c, 0x00, 0x72, 0x00, 0x90, 0x00,
+0x8e, 0x00, 0x74, 0x00, 0x5a, 0x00, 0x32, 0x00, 0xfe, 0xff, 0xc4, 0xff, 0x84, 0xff, 0x54, 0xff,
+0x42, 0xff, 0x32, 0xff, 0x4e, 0xff, 0x74, 0xff, 0xac, 0xff, 0xe6, 0xff, 0x26, 0x00, 0x5a, 0x00,
+0x82, 0x00, 0xac, 0x00, 0x9c, 0x00, 0x92, 0x00, 0x66, 0x00, 0x30, 0x00, 0xfa, 0xff, 0xae, 0xff,
+0x78, 0xff, 0x48, 0xff, 0x2e, 0xff, 0x32, 0xff, 0x54, 0xff, 0x8e, 0xff, 0xce, 0xff, 0xfe, 0xff,
+0x32, 0x00, 0x6a, 0x00, 0x94, 0x00, 0xb2, 0x00, 0xa6, 0x00, 0x8e, 0x00, 0x56, 0x00, 0x10, 0x00,
+0xdc, 0xff, 0x9c, 0xff, 0x5e, 0xff, 0x3e, 0xff, 0x26, 0xff, 0x38, 0xff, 0x64, 0xff, 0x98, 0xff,
+0xd8, 0xff, 0x0c, 0x00, 0x42, 0x00, 0x78, 0x00, 0x92, 0x00, 0xb0, 0x00, 0x9c, 0x00, 0x70, 0x00,
+0x34, 0x00, 0xf2, 0xff, 0xc8, 0xff, 0x84, 0xff, 0x52, 0xff, 0x36, 0xff, 0x2c, 0xff, 0x42, 0xff,
+0x7a, 0xff, 0xb2, 0xff, 0xf4, 0xff, 0x20, 0x00, 0x50, 0x00, 0x82, 0x00, 0xaa, 0x00, 0xaa, 0x00,
+0x8c, 0x00, 0x6c, 0x00, 0x22, 0x00, 0xe0, 0xff, 0xbe, 0xff, 0x84, 0xff, 0x4c, 0xff, 0x3e, 0xff,
+0x42, 0xff, 0x5c, 0xff, 0x92, 0xff, 0xc8, 0xff, 0xf6, 0xff, 0x28, 0x00, 0x5a, 0x00, 0x7e, 0x00,
+0x9e, 0x00, 0x9e, 0x00, 0x7e, 0x00, 0x50, 0x00, 0x12, 0x00, 0xde, 0xff, 0xa4, 0xff, 0x80, 0xff,
+0x5c, 0xff, 0x46, 0xff, 0x4e, 0xff, 0x6a, 0xff, 0x98, 0xff, 0xc2, 0xff, 0xfa, 0xff, 0x24, 0x00,
+0x4e, 0x00, 0x66, 0x00, 0x7a, 0x00, 0x78, 0x00, 0x5c, 0x00, 0x44, 0x00, 0x00, 0x00, 0xde, 0xff,
+0xae, 0xff, 0x92, 0xff, 0x80, 0xff, 0x6c, 0xff, 0x70, 0xff, 0x84, 0xff, 0xac, 0xff, 0xd6, 0xff,
+0xf2, 0xff, 0x20, 0x00, 0x40, 0x00, 0x44, 0x00, 0x5e, 0x00, 0x5a, 0x00, 0x4a, 0x00, 0x22, 0x00,
+0x00, 0x00, 0xf0, 0xff, 0xba, 0xff, 0xa6, 0xff, 0x9e, 0xff, 0x94, 0xff, 0x98, 0xff, 0xa4, 0xff,
+0xc6, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0x0e, 0x00, 0x18, 0x00, 0x2c, 0x00, 0x34, 0x00, 0x26, 0x00,
+0x1c, 0x00, 0x06, 0x00, 0xf2, 0xff, 0xde, 0xff, 0xc6, 0xff, 0xba, 0xff, 0xc8, 0xff, 0xc2, 0xff,
+0xc6, 0xff, 0xc8, 0xff, 0xda, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0x0a, 0x00, 0x08, 0x00, 0x04, 0x00,
+0x1a, 0x00, 0x14, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf0, 0xff,
+0xf4, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xee, 0xff,
+0xe8, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0x02, 0x00, 0x08, 0x00, 0x0e, 0x00,
+0x06, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0c, 0x00, 0xfa, 0xff, 0xf0, 0xff, 0xe2, 0xff, 0xca, 0xff,
+0xca, 0xff, 0xc8, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xf4, 0xff, 0x08, 0x00,
+0x12, 0x00, 0x26, 0x00, 0x2c, 0x00, 0x34, 0x00, 0x26, 0x00, 0x22, 0x00, 0x0c, 0x00, 0xfc, 0xff,
+0xe4, 0xff, 0xbc, 0xff, 0xa8, 0xff, 0xae, 0xff, 0xa6, 0xff, 0xb0, 0xff, 0xc0, 0xff, 0xd0, 0xff,
+0xf2, 0xff, 0x08, 0x00, 0x34, 0x00, 0x52, 0x00, 0x50, 0x00, 0x46, 0x00, 0x3a, 0x00, 0x36, 0x00,
+0x0e, 0x00, 0xe6, 0xff, 0xca, 0xff, 0x94, 0xff, 0x76, 0xff, 0x72, 0xff, 0x6c, 0xff, 0x8c, 0xff,
+0x92, 0xff, 0xc2, 0xff, 0xf4, 0xff, 0x22, 0x00, 0x58, 0x00, 0x64, 0x00, 0x7c, 0x00, 0x76, 0x00,
+0x54, 0x00, 0x44, 0x00, 0x10, 0x00, 0xe4, 0xff, 0xa8, 0xff, 0x74, 0xff, 0x64, 0xff, 0x4c, 0xff,
+0x54, 0xff, 0x6e, 0xff, 0x8e, 0xff, 0xc6, 0xff, 0x00, 0x00, 0x3e, 0x00, 0x6e, 0x00, 0x86, 0x00,
+0xa8, 0x00, 0x94, 0x00, 0x76, 0x00, 0x4a, 0x00, 0x16, 0x00, 0xd2, 0xff, 0xa2, 0xff, 0x6a, 0xff,
+0x40, 0xff, 0x36, 0xff, 0x3c, 0xff, 0x64, 0xff, 0x98, 0xff, 0xd8, 0xff, 0x0a, 0x00, 0x44, 0x00,
+0x86, 0x00, 0xa4, 0x00, 0xac, 0x00, 0xa2, 0x00, 0x76, 0x00, 0x3e, 0x00, 0x0c, 0x00, 0xd4, 0xff,
+0x92, 0xff, 0x5c, 0xff, 0x30, 0xff, 0x20, 0xff, 0x3e, 0xff, 0x68, 0xff, 0xa2, 0xff, 0xe0, 0xff,
+0x14, 0x00, 0x64, 0x00, 0x94, 0x00, 0xb8, 0x00, 0xc2, 0x00, 0xb0, 0x00, 0x8a, 0x00, 0x3c, 0x00,
+0x08, 0x00, 0xda, 0xff, 0x86, 0xff, 0x58, 0xff, 0x2e, 0xff, 0x22, 0xff, 0x3e, 0xff, 0x66, 0xff,
+0xb2, 0xff, 0xee, 0xff, 0x1e, 0x00, 0x6c, 0x00, 0x9c, 0x00, 0xba, 0x00, 0xba, 0x00, 0x9e, 0x00,
+0x72, 0x00, 0x2c, 0x00, 0xf8, 0xff, 0xb8, 0xff, 0x7a, 0xff, 0x48, 0xff, 0x28, 0xff, 0x26, 0xff,
+0x4c, 0xff, 0x80, 0xff, 0xba, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x70, 0x00, 0xa2, 0x00, 0xa8, 0x00,
+0xa4, 0x00, 0x86, 0x00, 0x58, 0x00, 0x1a, 0x00, 0xdc, 0xff, 0xa8, 0xff, 0x6e, 0xff, 0x4c, 0xff,
+0x3c, 0xff, 0x48, 0xff, 0x74, 0xff, 0xa2, 0xff, 0xdc, 0xff, 0x1a, 0x00, 0x40, 0x00, 0x76, 0x00,
+0x8e, 0x00, 0x96, 0x00, 0x88, 0x00, 0x62, 0x00, 0x3a, 0x00, 0xf8, 0xff, 0xd0, 0xff, 0x9c, 0xff,
+0x70, 0xff, 0x54, 0xff, 0x52, 0xff, 0x58, 0xff, 0x80, 0xff, 0xac, 0xff, 0xe2, 0xff, 0x0e, 0x00,
+0x32, 0x00, 0x4e, 0x00, 0x62, 0x00, 0x6e, 0x00, 0x60, 0x00, 0x42, 0x00, 0x14, 0x00, 0xf4, 0xff,
+0xc6, 0xff, 0xa2, 0xff, 0x8e, 0xff, 0x74, 0xff, 0x78, 0xff, 0x84, 0xff, 0x96, 0xff, 0xc6, 0xff,
+0xec, 0xff, 0x0c, 0x00, 0x2a, 0x00, 0x36, 0x00, 0x46, 0x00, 0x4a, 0x00, 0x42, 0x00, 0x30, 0x00,
+0x06, 0x00, 0xee, 0xff, 0xd6, 0xff, 0xb4, 0xff, 0xae, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0xb6, 0xff,
+0xc2, 0xff, 0xd0, 0xff, 0xee, 0xff, 0xfc, 0xff, 0x18, 0x00, 0x16, 0x00, 0x14, 0x00, 0x24, 0x00,
+0x14, 0x00, 0x14, 0x00, 0xf6, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xce, 0xff, 0xcc, 0xff, 0xc6, 0xff,
+0xc2, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xf6, 0xff, 0xfc, 0xff,
+0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xf8, 0xff,
+0xfc, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xe2, 0xff,
+0xe0, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x0e, 0x00,
+0x12, 0x00, 0x16, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x16, 0x00, 0xf8, 0xff, 0xf0, 0xff, 0xd6, 0xff,
+0xd4, 0xff, 0xbc, 0xff, 0xac, 0xff, 0xc2, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xe2, 0xff, 0x04, 0x00,
+0x0a, 0x00, 0x2c, 0x00, 0x48, 0x00, 0x44, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x2c, 0x00, 0xfc, 0xff,
+0xea, 0xff, 0xc8, 0xff, 0x9a, 0xff, 0x90, 0xff, 0x92, 0xff, 0x92, 0xff, 0xa6, 0xff, 0xbe, 0xff,
+0xe2, 0xff, 0x0a, 0x00, 0x2c, 0x00, 0x58, 0x00, 0x68, 0x00, 0x76, 0x00, 0x60, 0x00, 0x46, 0x00,
+0x2c, 0x00, 0xfe, 0xff, 0xce, 0xff, 0x9c, 0xff, 0x7a, 0xff, 0x60, 0xff, 0x5e, 0xff, 0x6c, 0xff,
+0x86, 0xff, 0xa8, 0xff, 0xe2, 0xff, 0x10, 0x00, 0x3c, 0x00, 0x6c, 0x00, 0x80, 0x00, 0x8a, 0x00,
+0x74, 0x00, 0x54, 0x00, 0x22, 0x00, 0xec, 0xff, 0xb8, 0xff, 0x84, 0xff, 0x5e, 0xff, 0x46, 0xff,
+0x46, 0xff, 0x58, 0xff, 0x82, 0xff, 0xb0, 0xff, 0xee, 0xff, 0x22, 0x00, 0x5a, 0x00, 0x80, 0x00,
+0x9c, 0x00, 0xa0, 0x00, 0x8e, 0x00, 0x52, 0x00, 0x1a, 0x00, 0xe6, 0xff, 0xaa, 0xff, 0x7c, 0xff,
+0x52, 0xff, 0x38, 0xff, 0x3a, 0xff, 0x58, 0xff, 0x82, 0xff, 0xc2, 0xff, 0xfa, 0xff, 0x2e, 0x00,
+0x64, 0x00, 0x98, 0x00, 0xb2, 0x00, 0xa2, 0x00, 0x80, 0x00, 0x52, 0x00, 0x0e, 0x00, 0xda, 0xff,
+0xa4, 0xff, 0x6a, 0xff, 0x46, 0xff, 0x30, 0xff, 0x36, 0xff, 0x56, 0xff, 0x88, 0xff, 0xd6, 0xff,
+0x06, 0x00, 0x34, 0x00, 0x7c, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0xaa, 0x00, 0x7c, 0x00, 0x42, 0x00,
+0x00, 0x00, 0xe0, 0xff, 0x9e, 0xff, 0x6a, 0xff, 0x42, 0xff, 0x2a, 0xff, 0x40, 0xff, 0x60, 0xff,
+0xa6, 0xff, 0xe6, 0xff, 0x1a, 0x00, 0x56, 0x00, 0x88, 0x00, 0xaa, 0x00, 0xba, 0x00, 0x9e, 0x00,
+0x7c, 0x00, 0x3c, 0x00, 0x06, 0x00, 0xca, 0xff, 0x8c, 0xff, 0x64, 0xff, 0x38, 0xff, 0x38, 0xff,
+0x54, 0xff, 0x78, 0xff, 0xb4, 0xff, 0xf0, 0xff, 0x20, 0x00, 0x56, 0x00, 0x8a, 0x00, 0xa0, 0x00,
+0xa6, 0x00, 0x8a, 0x00, 0x66, 0x00, 0x2e, 0x00, 0xf2, 0xff, 0xbc, 0xff, 0x92, 0xff, 0x6c, 0xff,
+0x4c, 0xff, 0x4a, 0xff, 0x64, 0xff, 0x88, 0xff, 0xbe, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x56, 0x00,
+0x76, 0x00, 0x84, 0x00, 0x8a, 0x00, 0x72, 0x00, 0x54, 0x00, 0x24, 0x00, 0xf6, 0xff, 0xba, 0xff,
+0x90, 0xff, 0x88, 0xff, 0x68, 0xff, 0x6c, 0xff, 0x78, 0xff, 0x98, 0xff, 0xcc, 0xff, 0xec, 0xff,
+0x1a, 0x00, 0x40, 0x00, 0x54, 0x00, 0x62, 0x00, 0x54, 0x00, 0x52, 0x00, 0x36, 0x00, 0x04, 0x00,
+0xf0, 0xff, 0xca, 0xff, 0xa6, 0xff, 0x94, 0xff, 0x8c, 0xff, 0x90, 0xff, 0x8c, 0xff, 0xae, 0xff,
+0xd6, 0xff, 0xe8, 0xff, 0x0a, 0x00, 0x24, 0x00, 0x20, 0x00, 0x26, 0x00, 0x28, 0x00, 0x22, 0x00,
+0x06, 0x00, 0xfa, 0xff, 0xe6, 0xff, 0xd0, 0xff, 0xc2, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xba, 0xff,
+0xc8, 0xff, 0xd6, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0xf8, 0xff, 0x06, 0x00,
+0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0xf2, 0xff, 0xe8, 0xff, 0xd2, 0xff, 0xdc, 0xff, 0xec, 0xff,
+0xde, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xea, 0xff,
+0xf4, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x02, 0x00, 0x04, 0x00,
+0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0xf2, 0xff, 0xf6, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xda, 0xff,
+0xc8, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xf8, 0xff, 0x0a, 0x00, 0x18, 0x00,
+0x28, 0x00, 0x30, 0x00, 0x34, 0x00, 0x26, 0x00, 0x28, 0x00, 0x16, 0x00, 0xfa, 0xff, 0xdc, 0xff,
+0xd2, 0xff, 0xb4, 0xff, 0xac, 0xff, 0xae, 0xff, 0xba, 0xff, 0xbe, 0xff, 0xd2, 0xff, 0xfc, 0xff,
+0x14, 0x00, 0x3c, 0x00, 0x50, 0x00, 0x5e, 0x00, 0x5c, 0x00, 0x48, 0x00, 0x36, 0x00, 0x10, 0x00,
+0xf6, 0xff, 0xcc, 0xff, 0xa0, 0xff, 0x88, 0xff, 0x70, 0xff, 0x76, 0xff, 0x8a, 0xff, 0xaa, 0xff,
+0xcc, 0xff, 0xfc, 0xff, 0x24, 0x00, 0x5e, 0x00, 0x6c, 0x00, 0x78, 0x00, 0x7e, 0x00, 0x68, 0x00,
+0x4e, 0x00, 0x16, 0x00, 0xe8, 0xff, 0xae, 0xff, 0x86, 0xff, 0x64, 0xff, 0x48, 0xff, 0x54, 0xff,
+0x72, 0xff, 0x9c, 0xff, 0xce, 0xff, 0x00, 0x00, 0x32, 0x00, 0x6e, 0x00, 0x92, 0x00, 0x9e, 0x00,
+0x9e, 0x00, 0x82, 0x00, 0x44, 0x00, 0x06, 0x00, 0xdc, 0xff, 0x9c, 0xff, 0x64, 0xff, 0x3e, 0xff,
+0x26, 0xff, 0x34, 0xff, 0x4c, 0xff, 0x90, 0xff, 0xd2, 0xff, 0x02, 0x00, 0x46, 0x00, 0x7a, 0x00,
+0x9c, 0x00, 0xa8, 0x00, 0xa4, 0x00, 0x80, 0x00, 0x44, 0x00, 0xf8, 0xff, 0xc8, 0xff, 0x96, 0xff,
+0x58, 0xff, 0x32, 0xff, 0x14, 0xff, 0x3a, 0xff, 0x54, 0xff, 0x98, 0xff, 0xe6, 0xff, 0x02, 0x00,
+0x54, 0x00, 0x8c, 0x00, 0xa8, 0x00, 0xb8, 0x00, 0x9c, 0x00, 0x7a, 0x00, 0x32, 0x00, 0x02, 0x00,
+0xcc, 0xff, 0x7a, 0xff, 0x56, 0xff, 0x28, 0xff, 0x22, 0xff, 0x3a, 0xff, 0x6a, 0xff, 0xb6, 0xff,
+0xf4, 0xff, 0x12, 0x00, 0x5c, 0x00, 0x88, 0x00, 0xa6, 0x00, 0xb4, 0x00, 0x90, 0x00, 0x64, 0x00,
+0x12, 0x00, 0xea, 0xff, 0xb2, 0xff, 0x70, 0xff, 0x52, 0xff, 0x26, 0xff, 0x38, 0xff, 0x52, 0xff,
+0x7c, 0xff, 0xc8, 0xff, 0x04, 0x00, 0x30, 0x00, 0x6c, 0x00, 0x96, 0x00, 0x9e, 0x00, 0x9c, 0x00,
+0x84, 0x00, 0x58, 0x00, 0x1e, 0x00, 0xe2, 0xff, 0xa8, 0xff, 0x68, 0xff, 0x56, 0xff, 0x42, 0xff,
+0x4e, 0xff, 0x7c, 0xff, 0x9c, 0xff, 0xd0, 0xff, 0x08, 0x00, 0x3a, 0x00, 0x68, 0x00, 0x94, 0x00,
+0x98, 0x00, 0x8c, 0x00, 0x68, 0x00, 0x42, 0x00, 0x08, 0x00, 0xd0, 0xff, 0xa6, 0xff, 0x7e, 0xff,
+0x6e, 0xff, 0x52, 0xff, 0x66, 0xff, 0x80, 0xff, 0xa4, 0xff, 0xda, 0xff, 0x02, 0x00, 0x38, 0x00,
+0x4c, 0x00, 0x64, 0x00, 0x78, 0x00, 0x60, 0x00, 0x52, 0x00, 0x32, 0x00, 0x08, 0x00, 0xd6, 0xff,
+0xa4, 0xff, 0x9c, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x98, 0xff, 0xc2, 0xff, 0xe2, 0xff,
+0xfe, 0xff, 0x28, 0x00, 0x48, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4a, 0x00, 0x38, 0x00, 0x1e, 0x00,
+0x00, 0x00, 0xe0, 0xff, 0xc4, 0xff, 0xb0, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xb2, 0xff, 0xbc, 0xff,
+0xd4, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0x14, 0x00, 0x10, 0x00, 0x1c, 0x00, 0x2a, 0x00, 0x24, 0x00,
+0x12, 0x00, 0x04, 0x00, 0xee, 0xff, 0xec, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xcc, 0xff,
+0xd2, 0xff, 0xce, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0xf8, 0xff,
+0x00, 0x00, 0xfa, 0xff, 0xfe, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x02, 0x00,
+0x02, 0x00, 0xf8, 0xff, 0xf4, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xd6, 0xff,
+0xd4, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0x10, 0x00, 0x16, 0x00,
+0x28, 0x00, 0x1e, 0x00, 0x12, 0x00, 0x0e, 0x00, 0xf2, 0xff, 0xe8, 0xff, 0xce, 0xff, 0xca, 0xff,
+0xba, 0xff, 0xa6, 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xc4, 0xff, 0xdc, 0xff, 0xec, 0xff, 0x06, 0x00,
+0x28, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3c, 0x00, 0x3a, 0x00, 0x26, 0x00, 0x0a, 0x00, 0xee, 0xff,
+0xd0, 0xff, 0xb0, 0xff, 0xa0, 0xff, 0x94, 0xff, 0x90, 0xff, 0x9c, 0xff, 0xb2, 0xff, 0xe0, 0xff,
+0xfe, 0xff, 0x16, 0x00, 0x4e, 0x00, 0x5e, 0x00, 0x6c, 0x00, 0x66, 0x00, 0x46, 0x00, 0x38, 0x00,
+0x02, 0x00, 0xea, 0xff, 0xb4, 0xff, 0x88, 0xff, 0x7a, 0xff, 0x6e, 0xff, 0x6a, 0xff, 0x80, 0xff,
+0xa2, 0xff, 0xd6, 0xff, 0x06, 0x00, 0x32, 0x00, 0x60, 0x00, 0x80, 0x00, 0x88, 0x00, 0x78, 0x00,
+0x68, 0x00, 0x3a, 0x00, 0x0a, 0x00, 0xd2, 0xff, 0xa0, 0xff, 0x78, 0xff, 0x56, 0xff, 0x4e, 0xff,
+0x52, 0xff, 0x74, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x24, 0x00, 0x52, 0x00, 0x7c, 0x00, 0x9e, 0x00,
+0xa8, 0x00, 0x98, 0x00, 0x6e, 0x00, 0x2e, 0x00, 0xfe, 0xff, 0xc6, 0xff, 0x94, 0xff, 0x5a, 0xff,
+0x34, 0xff, 0x34, 0xff, 0x46, 0xff, 0x6c, 0xff, 0xaa, 0xff, 0xe8, 0xff, 0x22, 0x00, 0x62, 0x00,
+0x92, 0x00, 0xae, 0x00, 0xac, 0x00, 0x98, 0x00, 0x60, 0x00, 0x1e, 0x00, 0xee, 0xff, 0xb8, 0xff,
+0x6e, 0xff, 0x42, 0xff, 0x28, 0xff, 0x28, 0xff, 0x40, 0xff, 0x70, 0xff, 0xc0, 0xff, 0xf8, 0xff,
+0x28, 0x00, 0x6c, 0x00, 0x9a, 0x00, 0xae, 0x00, 0xae, 0x00, 0x88, 0x00, 0x5a, 0x00, 0x10, 0x00,
+0xdc, 0xff, 0xac, 0xff, 0x76, 0xff, 0x46, 0xff, 0x2e, 0xff, 0x40, 0xff, 0x5a, 0xff, 0x92, 0xff,
+0xe2, 0xff, 0x0c, 0x00, 0x42, 0x00, 0x80, 0x00, 0x9e, 0x00, 0xa8, 0x00, 0x98, 0x00, 0x7c, 0x00,
+0x3c, 0x00, 0x04, 0x00, 0xcc, 0xff, 0x98, 0xff, 0x60, 0xff, 0x44, 0xff, 0x38, 0xff, 0x48, 0xff,
+0x70, 0xff, 0xa4, 0xff, 0xe6, 0xff, 0x1e, 0x00, 0x44, 0x00, 0x74, 0x00, 0x98, 0x00, 0x9e, 0x00,
+0x88, 0x00, 0x66, 0x00, 0x2a, 0x00, 0xfc, 0xff, 0xc2, 0xff, 0x8e, 0xff, 0x64, 0xff, 0x4e, 0xff,
+0x4c, 0xff, 0x5a, 0xff, 0x86, 0xff, 0xc4, 0xff, 0xfc, 0xff, 0x30, 0x00, 0x5c, 0x00, 0x6c, 0x00,
+0x8e, 0x00, 0x8e, 0x00, 0x74, 0x00, 0x4e, 0x00, 0x22, 0x00, 0xea, 0xff, 0xb4, 0xff, 0x8c, 0xff,
+0x7a, 0xff, 0x68, 0xff, 0x68, 0xff, 0x86, 0xff, 0xa2, 0xff, 0xd2, 0xff, 0xfc, 0xff, 0x26, 0x00,
+0x4a, 0x00, 0x52, 0x00, 0x56, 0x00, 0x52, 0x00, 0x52, 0x00, 0x34, 0x00, 0x06, 0x00, 0xe8, 0xff,
+0xbc, 0xff, 0xa4, 0xff, 0xa0, 0xff, 0x94, 0xff, 0xa0, 0xff, 0x98, 0xff, 0xbc, 0xff, 0xf6, 0xff,
+0x02, 0x00, 0x10, 0x00, 0x24, 0x00, 0x36, 0x00, 0x38, 0x00, 0x34, 0x00, 0x36, 0x00, 0x16, 0x00,
+0x00, 0x00, 0xf2, 0xff, 0xd6, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xc6, 0xff, 0xca, 0xff,
+0xd8, 0xff, 0xea, 0xff, 0x02, 0x00, 0x02, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x14, 0x00,
+0x10, 0x00, 0x04, 0x00, 0xf8, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xe0, 0xff,
+0xe2, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xda, 0xff, 0xe6, 0xff, 0xde, 0xff, 0xe4, 0xff,
+0xea, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x0e, 0x00,
+0x06, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xd4, 0xff, 0xcc, 0xff, 0xbc, 0xff,
+0xbe, 0xff, 0xc6, 0xff, 0xc2, 0xff, 0xda, 0xff, 0xf2, 0xff, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x00,
+0x2a, 0x00, 0x32, 0x00, 0x26, 0x00, 0x22, 0x00, 0x12, 0x00, 0xfa, 0xff, 0xe4, 0xff, 0xc6, 0xff,
+0xac, 0xff, 0x8e, 0xff, 0x94, 0xff, 0xa6, 0xff, 0xb4, 0xff, 0xbe, 0xff, 0xe2, 0xff, 0xfe, 0xff,
+0x1e, 0x00, 0x4c, 0x00, 0x52, 0x00, 0x5a, 0x00, 0x46, 0x00, 0x3e, 0x00, 0x2a, 0x00, 0xf6, 0xff,
+0xd8, 0xff, 0xaa, 0xff, 0x7e, 0xff, 0x70, 0xff, 0x6c, 0xff, 0x7a, 0xff, 0x9a, 0xff, 0xbc, 0xff,
+0xea, 0xff, 0x16, 0x00, 0x40, 0x00, 0x6a, 0x00, 0x82, 0x00, 0x8e, 0x00, 0x76, 0x00, 0x54, 0x00,
+0x32, 0x00, 0xfe, 0xff, 0xcc, 0xff, 0x92, 0xff, 0x70, 0xff, 0x5c, 0xff, 0x56, 0xff, 0x6c, 0xff,
+0x8c, 0xff, 0xc0, 0xff, 0xf4, 0xff, 0x24, 0x00, 0x60, 0x00, 0x82, 0x00, 0x94, 0x00, 0xa2, 0x00,
+0x92, 0x00, 0x5a, 0x00, 0x26, 0x00, 0xf4, 0xff, 0xae, 0xff, 0x86, 0xff, 0x52, 0xff, 0x3c, 0xff,
+0x40, 0xff, 0x52, 0xff, 0x88, 0xff, 0xc6, 0xff, 0xfe, 0xff, 0x28, 0x00, 0x70, 0x00, 0x98, 0x00,
+0xb0, 0x00, 0xac, 0x00, 0x8e, 0x00, 0x5c, 0x00, 0x24, 0x00, 0xee, 0xff, 0xae, 0xff, 0x74, 0xff,
+0x48, 0xff, 0x34, 0xff, 0x38, 0xff, 0x5a, 0xff, 0x8e, 0xff, 0xd2, 0xff, 0x0a, 0x00, 0x3e, 0x00,
+0x7a, 0x00, 0xa6, 0x00, 0xb8, 0x00, 0xb0, 0x00, 0x86, 0x00, 0x4a, 0x00, 0x0c, 0x00, 0xda, 0xff,
+0xa0, 0xff, 0x58, 0xff, 0x38, 0xff, 0x28, 0xff, 0x3a, 0xff, 0x58, 0xff, 0x98, 0xff, 0xe4, 0xff,
+0x10, 0x00, 0x50, 0x00, 0x84, 0x00, 0xaa, 0x00, 0xa6, 0x00, 0x9a, 0x00, 0x72, 0x00, 0x36, 0x00,
+0xf6, 0xff, 0xba, 0xff, 0x88, 0xff, 0x4c, 0xff, 0x32, 0xff, 0x30, 0xff, 0x4a, 0xff, 0x72, 0xff,
+0xa8, 0xff, 0xf4, 0xff, 0x22, 0x00, 0x5e, 0x00, 0x92, 0x00, 0xa8, 0x00, 0x9e, 0x00, 0x84, 0x00,
+0x5c, 0x00, 0x1a, 0x00, 0xf4, 0xff, 0xb0, 0xff, 0x7e, 0xff, 0x56, 0xff, 0x3c, 0xff, 0x40, 0xff,
+0x5a, 0xff, 0x90, 0xff, 0xc6, 0xff, 0x02, 0x00, 0x28, 0x00, 0x66, 0x00, 0x80, 0x00, 0x90, 0x00,
+0x92, 0x00, 0x62, 0x00, 0x46, 0x00, 0x10, 0x00, 0xe2, 0xff, 0xb4, 0xff, 0x82, 0xff, 0x68, 0xff,
+0x60, 0xff, 0x62, 0xff, 0x7e, 0xff, 0x96, 0xff, 0xc8, 0xff, 0x08, 0x00, 0x2e, 0x00, 0x54, 0x00,
+0x66, 0x00, 0x68, 0x00, 0x70, 0x00, 0x60, 0x00, 0x3c, 0x00, 0x14, 0x00, 0xee, 0xff, 0xbe, 0xff,
+0xae, 0xff, 0xa2, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0xa2, 0xff, 0xc2, 0xff, 0xe8, 0xff, 0x08, 0x00,
+0x20, 0x00, 0x3e, 0x00, 0x46, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x1a, 0x00, 0x02, 0x00,
+0xfe, 0xff, 0xda, 0xff, 0xc2, 0xff, 0xbe, 0xff, 0xb2, 0xff, 0xba, 0xff, 0xc2, 0xff, 0xdc, 0xff,
+0xf2, 0xff, 0x00, 0x00, 0x0a, 0x00, 0x24, 0x00, 0x0e, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x0c, 0x00,
+0x06, 0x00, 0xf4, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xe4, 0xff,
+0xf0, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x06, 0x00, 0xfe, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf4, 0xff,
+0xee, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfc, 0xff,
+0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xc8, 0xff,
+0xba, 0xff, 0xbc, 0xff, 0xca, 0xff, 0xda, 0xff, 0xee, 0xff, 0x0a, 0x00, 0x1a, 0x00, 0x2a, 0x00,
+0x1c, 0x00, 0x20, 0x00, 0x20, 0x00, 0x06, 0x00, 0xf2, 0xff, 0xe2, 0xff, 0xc4, 0xff, 0xa2, 0xff,
+0x98, 0xff, 0x9a, 0xff, 0x9e, 0xff, 0xa6, 0xff, 0xce, 0xff, 0xe8, 0xff, 0x08, 0x00, 0x32, 0x00,
+0x48, 0x00, 0x56, 0x00, 0x56, 0x00, 0x40, 0x00, 0x30, 0x00, 0x14, 0x00, 0xe8, 0xff, 0xc6, 0xff,
+0xa2, 0xff, 0x82, 0xff, 0x7a, 0xff, 0x74, 0xff, 0x8c, 0xff, 0xa2, 0xff, 0xd4, 0xff, 0x04, 0x00,
+0x2a, 0x00, 0x4c, 0x00, 0x62, 0x00, 0x6e, 0x00, 0x62, 0x00, 0x4c, 0x00, 0x2a, 0x00, 0x02, 0x00,
+0xd2, 0xff, 0xa8, 0xff, 0x80, 0xff, 0x64, 0xff, 0x60, 0xff, 0x62, 0xff, 0x7c, 0xff, 0xa6, 0xff,
+0xda, 0xff, 0x0e, 0x00, 0x46, 0x00, 0x74, 0x00, 0x84, 0x00, 0x92, 0x00, 0x82, 0x00, 0x6e, 0x00,
+0x40, 0x00, 0x08, 0x00, 0xd8, 0xff, 0x9e, 0xff, 0x7a, 0xff, 0x56, 0xff, 0x4a, 0xff, 0x50, 0xff,
+0x78, 0xff, 0xae, 0xff, 0xea, 0xff, 0x1c, 0x00, 0x5a, 0x00, 0x8a, 0x00, 0xa0, 0x00, 0xba, 0x00,
+0xa6, 0x00, 0x7e, 0x00, 0x42, 0x00, 0x02, 0x00, 0xd2, 0xff, 0x96, 0xff, 0x62, 0xff, 0x48, 0xff,
+0x2c, 0xff, 0x40, 0xff, 0x70, 0xff, 0xae, 0xff, 0xea, 0xff, 0x28, 0x00, 0x58, 0x00, 0x8c, 0x00,
+0xaa, 0x00, 0xb6, 0x00, 0xae, 0x00, 0x72, 0x00, 0x38, 0x00, 0xfc, 0xff, 0xc8, 0xff, 0x88, 0xff,
+0x5c, 0xff, 0x38, 0xff, 0x3a, 0xff, 0x50, 0xff, 0x7c, 0xff, 0xc6, 0xff, 0xfa, 0xff, 0x34, 0x00,
+0x74, 0x00, 0x98, 0x00, 0xb8, 0x00, 0xb2, 0x00, 0x94, 0x00, 0x66, 0x00, 0x26, 0x00, 0xea, 0xff,
+0xb4, 0xff, 0x78, 0xff, 0x48, 0xff, 0x30, 0xff, 0x3e, 0xff, 0x5c, 0xff, 0x90, 0xff, 0xc8, 0xff,
+0x00, 0x00, 0x36, 0x00, 0x6c, 0x00, 0x8e, 0x00, 0xa4, 0x00, 0x9e, 0x00, 0x78, 0x00, 0x40, 0x00,
+0xfe, 0xff, 0xce, 0xff, 0x9c, 0xff, 0x6c, 0xff, 0x40, 0xff, 0x2a, 0xff, 0x42, 0xff, 0x6a, 0xff,
+0x96, 0xff, 0xd2, 0xff, 0x02, 0x00, 0x34, 0x00, 0x58, 0x00, 0x84, 0x00, 0x94, 0x00, 0x80, 0x00,
+0x60, 0x00, 0x2a, 0x00, 0x00, 0x00, 0xc8, 0xff, 0xa0, 0xff, 0x72, 0xff, 0x5e, 0xff, 0x54, 0xff,
+0x66, 0xff, 0x8c, 0xff, 0xa6, 0xff, 0xe6, 0xff, 0x0a, 0x00, 0x42, 0x00, 0x62, 0x00, 0x78, 0x00,
+0x76, 0x00, 0x62, 0x00, 0x56, 0x00, 0x20, 0x00, 0xfc, 0xff, 0xc2, 0xff, 0xa0, 0xff, 0x7e, 0xff,
+0x72, 0xff, 0x74, 0xff, 0x7a, 0xff, 0x98, 0xff, 0xba, 0xff, 0xea, 0xff, 0x0c, 0x00, 0x3a, 0x00,
+0x46, 0x00, 0x5c, 0x00, 0x60, 0x00, 0x4e, 0x00, 0x32, 0x00, 0x04, 0x00, 0xf6, 0xff, 0xdc, 0xff,
+0xae, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0x9e, 0xff, 0xa8, 0xff, 0xc6, 0xff, 0xe6, 0xff, 0x00, 0x00,
+0x0a, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x42, 0x00, 0x36, 0x00, 0x26, 0x00, 0x06, 0x00,
+0xf8, 0xff, 0xec, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xca, 0xff, 0xca, 0xff, 0xd8, 0xff,
+0xee, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x0a, 0x00, 0x10, 0x00, 0x10, 0x00, 0x16, 0x00, 0x0c, 0x00,
+0x06, 0x00, 0x04, 0x00, 0xfa, 0xff, 0xf8, 0xff, 0xec, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xe6, 0xff,
+0xe4, 0xff, 0xda, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0xf2, 0xff,
+0xfc, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x10, 0x00, 0x14, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0a, 0x00,
+0x12, 0x00, 0x04, 0x00, 0xec, 0xff, 0xec, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xbe, 0xff, 0xc6, 0xff,
+0xce, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xec, 0xff, 0xfe, 0xff, 0x0e, 0x00, 0x1e, 0x00, 0x2e, 0x00,
+0x38, 0x00, 0x30, 0x00, 0x1a, 0x00, 0x0c, 0x00, 0xf4, 0xff, 0xd8, 0xff, 0xc2, 0xff, 0xa2, 0xff,
+0x88, 0xff, 0x90, 0xff, 0x9e, 0xff, 0xa6, 0xff, 0xb6, 0xff, 0xd6, 0xff, 0x00, 0x00, 0x12, 0x00,
+0x38, 0x00, 0x58, 0x00, 0x62, 0x00, 0x4e, 0x00, 0x2e, 0x00, 0x24, 0x00, 0x04, 0x00, 0xe0, 0xff,
+0xac, 0xff, 0x8e, 0xff, 0x7e, 0xff, 0x78, 0xff, 0x86, 0xff, 0x9c, 0xff, 0xb6, 0xff, 0xe0, 0xff,
+0x0e, 0x00, 0x3a, 0x00, 0x62, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x6e, 0x00, 0x4e, 0x00, 0x28, 0x00,
+0x00, 0x00, 0xcc, 0xff, 0x98, 0xff, 0x74, 0xff, 0x5c, 0xff, 0x5c, 0xff, 0x66, 0xff, 0x84, 0xff,
+0xb4, 0xff, 0xe4, 0xff, 0x20, 0x00, 0x4a, 0x00, 0x7a, 0x00, 0x8c, 0x00, 0x94, 0x00, 0x80, 0x00,
+0x56, 0x00, 0x20, 0x00, 0xee, 0xff, 0xc0, 0xff, 0x88, 0xff, 0x58, 0xff, 0x46, 0xff, 0x46, 0xff,
+0x5c, 0xff, 0x88, 0xff, 0xc0, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x68, 0x00, 0x92, 0x00, 0xac, 0x00,
+0xaa, 0x00, 0x92, 0x00, 0x5e, 0x00, 0x1e, 0x00, 0xea, 0xff, 0xb6, 0xff, 0x7a, 0xff, 0x4e, 0xff,
+0x3a, 0xff, 0x3a, 0xff, 0x52, 0xff, 0x8c, 0xff, 0xd6, 0xff, 0x06, 0x00, 0x3c, 0x00, 0x72, 0x00,
+0xa8, 0x00, 0xb2, 0x00, 0xaa, 0x00, 0x8a, 0x00, 0x52, 0x00, 0x08, 0x00, 0xe2, 0xff, 0xa0, 0xff,
+0x6a, 0xff, 0x44, 0xff, 0x34, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x9a, 0xff, 0xe6, 0xff, 0x18, 0x00,
+0x48, 0x00, 0x82, 0x00, 0xa2, 0x00, 0xb8, 0x00, 0xa4, 0x00, 0x82, 0x00, 0x3a, 0x00, 0x0e, 0x00,
+0xdc, 0xff, 0x9e, 0xff, 0x64, 0xff, 0x48, 0xff, 0x40, 0xff, 0x46, 0xff, 0x74, 0xff, 0xb0, 0xff,
+0xec, 0xff, 0x1a, 0x00, 0x54, 0x00, 0x8a, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0x90, 0x00, 0x74, 0x00,
+0x3c, 0x00, 0xfc, 0xff, 0xc0, 0xff, 0x8a, 0xff, 0x6a, 0xff, 0x4e, 0xff, 0x44, 0xff, 0x56, 0xff,
+0x84, 0xff, 0xb8, 0xff, 0xf4, 0xff, 0x20, 0x00, 0x54, 0x00, 0x78, 0x00, 0x82, 0x00, 0x86, 0x00,
+0x6c, 0x00, 0x50, 0x00, 0x1a, 0x00, 0xea, 0xff, 0xc0, 0xff, 0x8c, 0xff, 0x70, 0xff, 0x68, 0xff,
+0x70, 0xff, 0x88, 0xff, 0x9c, 0xff, 0xd0, 0xff, 0x02, 0x00, 0x28, 0x00, 0x4c, 0x00, 0x5a, 0x00,
+0x6c, 0x00, 0x58, 0x00, 0x48, 0x00, 0x30, 0x00, 0xfe, 0xff, 0xe2, 0xff, 0xb0, 0xff, 0x96, 0xff,
+0x92, 0xff, 0x80, 0xff, 0x8e, 0xff, 0x9e, 0xff, 0xc0, 0xff, 0xe6, 0xff, 0x02, 0x00, 0x12, 0x00,
+0x2e, 0x00, 0x38, 0x00, 0x2e, 0x00, 0x36, 0x00, 0x1c, 0x00, 0x0a, 0x00, 0xee, 0xff, 0xce, 0xff,
+0xc2, 0xff, 0xaa, 0xff, 0xae, 0xff, 0xb0, 0xff, 0xa4, 0xff, 0xc4, 0xff, 0xd4, 0xff, 0xec, 0xff,
+0x06, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x1e, 0x00, 0x12, 0x00, 0xfe, 0xff,
+0xec, 0xff, 0xf2, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xdc, 0xff,
+0xe6, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0x04, 0x00,
+0x00, 0x00, 0xfe, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xf4, 0xff,
+0xee, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xd8, 0xff, 0xe4, 0xff, 0xe0, 0xff,
+0xd8, 0xff, 0xea, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x26, 0x00, 0x28, 0x00,
+0x22, 0x00, 0x1c, 0x00, 0x0a, 0x00, 0x02, 0x00, 0xee, 0xff, 0xd6, 0xff, 0xb6, 0xff, 0xac, 0xff,
+0xac, 0xff, 0xbc, 0xff, 0xc8, 0xff, 0xdc, 0xff, 0xfe, 0xff, 0x10, 0x00, 0x28, 0x00, 0x4e, 0x00,
+0x5a, 0x00, 0x52, 0x00, 0x4c, 0x00, 0x42, 0x00, 0x1a, 0x00, 0xfa, 0xff, 0xd4, 0xff, 0xa6, 0xff,
+0x88, 0xff, 0x6c, 0xff, 0x7e, 0xff, 0x8c, 0xff, 0x94, 0xff, 0xce, 0xff, 0xee, 0xff, 0x1e, 0x00,
+0x46, 0x00, 0x5e, 0x00, 0x7a, 0x00, 0x72, 0x00, 0x5c, 0x00, 0x46, 0x00, 0x1a, 0x00, 0xee, 0xff,
+0xba, 0xff, 0x74, 0xff, 0x66, 0xff, 0x5e, 0xff, 0x60, 0xff, 0x82, 0xff, 0x94, 0xff, 0xc2, 0xff,
+0x06, 0x00, 0x34, 0x00, 0x62, 0x00, 0x7c, 0x00, 0x98, 0x00, 0x8e, 0x00, 0x74, 0x00, 0x46, 0x00,
+0x10, 0x00, 0xd8, 0xff, 0xa2, 0xff, 0x70, 0xff, 0x4a, 0xff, 0x40, 0xff, 0x4e, 0xff, 0x78, 0xff,
+0x9c, 0xff, 0xce, 0xff, 0x14, 0x00, 0x42, 0x00, 0x74, 0x00, 0xa0, 0x00, 0xa6, 0x00, 0x98, 0x00,
+0x76, 0x00, 0x3e, 0x00, 0xfe, 0xff, 0xc6, 0xff, 0x8c, 0xff, 0x5e, 0xff, 0x34, 0xff, 0x2c, 0xff,
+0x38, 0xff, 0x62, 0xff, 0x9e, 0xff, 0xe6, 0xff, 0x14, 0x00, 0x40, 0x00, 0x88, 0x00, 0xaa, 0x00,
+0xb8, 0x00, 0xa4, 0x00, 0x76, 0x00, 0x36, 0x00, 0xfc, 0xff, 0xd2, 0xff, 0x90, 0xff, 0x62, 0xff,
+0x3e, 0xff, 0x2a, 0xff, 0x46, 0xff, 0x6a, 0xff, 0xb8, 0xff, 0xf6, 0xff, 0x16, 0x00, 0x58, 0x00,
+0x92, 0x00, 0xba, 0x00, 0xb4, 0x00, 0x92, 0x00, 0x74, 0x00, 0x2e, 0x00, 0xec, 0xff, 0xc4, 0xff,
+0x84, 0xff, 0x4e, 0xff, 0x3c, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x80, 0xff, 0xba, 0xff, 0xfa, 0xff,
+0x28, 0x00, 0x66, 0x00, 0x90, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0x98, 0x00, 0x5c, 0x00, 0x18, 0x00,
+0xe4, 0xff, 0xb2, 0xff, 0x80, 0xff, 0x4c, 0xff, 0x3e, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x96, 0xff,
+0xc4, 0xff, 0x0a, 0x00, 0x30, 0x00, 0x60, 0x00, 0x88, 0x00, 0x90, 0x00, 0xa0, 0x00, 0x84, 0x00,
+0x3e, 0x00, 0x08, 0x00, 0xe6, 0xff, 0xb4, 0xff, 0x88, 0xff, 0x68, 0xff, 0x58, 0xff, 0x6a, 0xff,
+0x80, 0xff, 0xa2, 0xff, 0xdc, 0xff, 0x02, 0x00, 0x36, 0x00, 0x56, 0x00, 0x6e, 0x00, 0x6c, 0x00,
+0x62, 0x00, 0x4a, 0x00, 0x22, 0x00, 0xf0, 0xff, 0xca, 0xff, 0x9e, 0xff, 0x8a, 0xff, 0x82, 0xff,
+0x76, 0xff, 0x8e, 0xff, 0x98, 0xff, 0xbe, 0xff, 0xf6, 0xff, 0x12, 0x00, 0x38, 0x00, 0x4c, 0x00,
+0x56, 0x00, 0x4a, 0x00, 0x3c, 0x00, 0x30, 0x00, 0x04, 0x00, 0xe2, 0xff, 0xc0, 0xff, 0xae, 0xff,
+0x98, 0xff, 0x9a, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0xb4, 0xff, 0xd8, 0xff, 0xfe, 0xff, 0x0c, 0x00,
+0x28, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x34, 0x00, 0x26, 0x00, 0x18, 0x00, 0x02, 0x00, 0xf2, 0xff,
+0xe8, 0xff, 0xce, 0xff, 0xbe, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xca, 0xff, 0xd6, 0xff,
+0xf2, 0xff, 0xf4, 0xff, 0x02, 0x00, 0x06, 0x00, 0xf6, 0xff, 0x04, 0x00, 0x04, 0x00, 0xfc, 0xff,
+0x02, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xec, 0xff,
+0xe8, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xde, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe6, 0xff,
+0xf8, 0xff, 0xf4, 0xff, 0x04, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x0e, 0x00, 0x10, 0x00,
+0x1c, 0x00, 0x04, 0x00, 0xf8, 0xff, 0xe8, 0xff, 0xd6, 0xff, 0xce, 0xff, 0xb8, 0xff, 0xc6, 0xff,
+0xc2, 0xff, 0xc6, 0xff, 0xe0, 0xff, 0xec, 0xff, 0x06, 0x00, 0x14, 0x00, 0x32, 0x00, 0x40, 0x00,
+0x2e, 0x00, 0x38, 0x00, 0x2e, 0x00, 0x12, 0x00, 0xfe, 0xff, 0xe2, 0xff, 0xae, 0xff, 0x98, 0xff,
+0x94, 0xff, 0x86, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0xc6, 0xff, 0xf0, 0xff, 0x0a, 0x00, 0x44, 0x00,
+0x56, 0x00, 0x6c, 0x00, 0x6a, 0x00, 0x58, 0x00, 0x50, 0x00, 0x1e, 0x00, 0xf8, 0xff, 0xca, 0xff,
+0xa0, 0xff, 0x7e, 0xff, 0x6a, 0xff, 0x72, 0xff, 0x80, 0xff, 0x9a, 0xff, 0xc4, 0xff, 0xfe, 0xff,
+0x26, 0x00, 0x50, 0x00, 0x78, 0x00, 0x86, 0x00, 0x74, 0x00, 0x64, 0x00, 0x3a, 0x00, 0x0c, 0x00,
+0xd8, 0xff, 0xaa, 0xff, 0x7e, 0xff, 0x4e, 0xff, 0x48, 0xff, 0x5a, 0xff, 0x72, 0xff, 0xaa, 0xff,
+0xe0, 0xff, 0x0a, 0x00, 0x46, 0x00, 0x78, 0x00, 0x98, 0x00, 0x9e, 0x00, 0x86, 0x00, 0x56, 0x00,
+0x24, 0x00, 0xfe, 0xff, 0xc0, 0xff, 0x7a, 0xff, 0x52, 0xff, 0x32, 0xff, 0x2a, 0xff, 0x4a, 0xff,
+0x7a, 0xff, 0xb2, 0xff, 0xf8, 0xff, 0x30, 0x00, 0x70, 0x00, 0x98, 0x00, 0xb4, 0x00, 0xbe, 0x00,
+0x98, 0x00, 0x66, 0x00, 0x28, 0x00, 0xea, 0xff, 0xb8, 0xff, 0x66, 0xff, 0x3a, 0xff, 0x20, 0xff,
+0x1c, 0xff, 0x4e, 0xff, 0x78, 0xff, 0xc6, 0xff, 0x08, 0x00, 0x34, 0x00, 0x7c, 0x00, 0xa4, 0x00,
+0xc0, 0x00, 0xba, 0x00, 0x94, 0x00, 0x5c, 0x00, 0x10, 0x00, 0xe6, 0xff, 0x9e, 0xff, 0x58, 0xff,
+0x30, 0xff, 0x20, 0xff, 0x30, 0xff, 0x50, 0xff, 0x9e, 0xff, 0xe4, 0xff, 0x16, 0x00, 0x50, 0x00,
+0x86, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xb0, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x12, 0x00, 0xc6, 0xff,
+0x8a, 0xff, 0x52, 0xff, 0x36, 0xff, 0x2e, 0xff, 0x3a, 0xff, 0x64, 0xff, 0xa6, 0xff, 0xec, 0xff,
+0x22, 0x00, 0x58, 0x00, 0x96, 0x00, 0xb2, 0x00, 0xbc, 0x00, 0xa8, 0x00, 0x7e, 0x00, 0x4a, 0x00,
+0xfc, 0xff, 0xc2, 0xff, 0x82, 0xff, 0x58, 0xff, 0x3a, 0xff, 0x36, 0xff, 0x50, 0xff, 0x70, 0xff,
+0xae, 0xff, 0xe6, 0xff, 0x20, 0x00, 0x5c, 0x00, 0x7e, 0x00, 0x8e, 0x00, 0x94, 0x00, 0x84, 0x00,
+0x5c, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xb4, 0xff, 0x8a, 0xff, 0x7e, 0xff, 0x60, 0xff, 0x60, 0xff,
+0x7a, 0xff, 0x9a, 0xff, 0xc4, 0xff, 0xfa, 0xff, 0x26, 0x00, 0x48, 0x00, 0x5a, 0x00, 0x6e, 0x00,
+0x64, 0x00, 0x58, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0xea, 0xff, 0xba, 0xff, 0xa0, 0xff, 0x9a, 0xff,
+0x90, 0xff, 0x8a, 0xff, 0x90, 0xff, 0xb2, 0xff, 0xda, 0xff, 0xf6, 0xff, 0x12, 0x00, 0x2c, 0x00,
+0x40, 0x00, 0x3c, 0x00, 0x40, 0x00, 0x34, 0x00, 0x1e, 0x00, 0x0a, 0x00, 0xe8, 0xff, 0xcc, 0xff,
+0xb0, 0xff, 0xb8, 0xff, 0xb6, 0xff, 0xa8, 0xff, 0xba, 0xff, 0xca, 0xff, 0xda, 0xff, 0xf8, 0xff,
+0x04, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x20, 0x00, 0x12, 0x00, 0x0c, 0x00, 0xf6, 0xff,
+0xf2, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xd6, 0xff, 0xea, 0xff,
+0xec, 0xff, 0xee, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0xfa, 0xff,
+0xf6, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0x04, 0x00, 0x06, 0x00, 0xfe, 0xff, 0x0a, 0x00, 0xfc, 0xff,
+0xf8, 0xff, 0xf0, 0xff, 0xe4, 0xff, 0xd6, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xcc, 0xff, 0xc8, 0xff,
+0xd6, 0xff, 0xe6, 0xff, 0xfa, 0xff, 0x0e, 0x00, 0x18, 0x00, 0x2e, 0x00, 0x34, 0x00, 0x2a, 0x00,
+0x2e, 0x00, 0x10, 0x00, 0x02, 0x00, 0xe8, 0xff, 0xd2, 0xff, 0xc2, 0xff, 0x9e, 0xff, 0xa6, 0xff,
+0xb2, 0xff, 0xb8, 0xff, 0xce, 0xff, 0xea, 0xff, 0xfe, 0xff, 0x22, 0x00, 0x52, 0x00, 0x5e, 0x00,
+0x58, 0x00, 0x52, 0x00, 0x46, 0x00, 0x2c, 0x00, 0x08, 0x00, 0xea, 0xff, 0xc0, 0xff, 0x92, 0xff,
+0x88, 0xff, 0x7e, 0xff, 0x84, 0xff, 0x92, 0xff, 0xb4, 0xff, 0xe2, 0xff, 0x04, 0x00, 0x3a, 0x00,
+0x5c, 0x00, 0x72, 0x00, 0x7e, 0x00, 0x6c, 0x00, 0x4a, 0x00, 0x30, 0x00, 0xfe, 0xff, 0xce, 0xff,
+0x9c, 0xff, 0x7e, 0xff, 0x62, 0xff, 0x62, 0xff, 0x70, 0xff, 0x82, 0xff, 0xac, 0xff, 0xe4, 0xff,
+0x24, 0x00, 0x50, 0x00, 0x7a, 0x00, 0x8e, 0x00, 0x90, 0x00, 0x80, 0x00, 0x54, 0x00, 0x20, 0x00,
+0xec, 0xff, 0xba, 0xff, 0x86, 0xff, 0x58, 0xff, 0x38, 0xff, 0x42, 0xff, 0x52, 0xff, 0x88, 0xff,
+0xbe, 0xff, 0xf2, 0xff, 0x2e, 0x00, 0x66, 0x00, 0x98, 0x00, 0xa6, 0x00, 0xa0, 0x00, 0x82, 0x00,
+0x50, 0x00, 0x0e, 0x00, 0xda, 0xff, 0x9a, 0xff, 0x62, 0xff, 0x40, 0xff, 0x24, 0xff, 0x28, 0xff,
+0x4a, 0xff, 0x84, 0xff, 0xcc, 0xff, 0x02, 0x00, 0x40, 0x00, 0x82, 0x00, 0xac, 0x00, 0xb4, 0x00,
+0xaa, 0x00, 0x84, 0x00, 0x4e, 0x00, 0xfe, 0xff, 0xd2, 0xff, 0x8c, 0xff, 0x5a, 0xff, 0x3c, 0xff,
+0x20, 0xff, 0x38, 0xff, 0x62, 0xff, 0xa0, 0xff, 0xe0, 0xff, 0x1c, 0x00, 0x5e, 0x00, 0x96, 0x00,
+0xb2, 0x00, 0xc2, 0x00, 0x9e, 0x00, 0x7a, 0x00, 0x32, 0x00, 0xf0, 0xff, 0xc6, 0xff, 0x7c, 0xff,
+0x4a, 0xff, 0x34, 0xff, 0x2c, 0xff, 0x3a, 0xff, 0x6e, 0xff, 0xb4, 0xff, 0xf6, 0xff, 0x24, 0x00,
+0x66, 0x00, 0x8e, 0x00, 0xa4, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x58, 0x00, 0x1e, 0x00, 0xe2, 0xff,
+0xa8, 0xff, 0x7c, 0xff, 0x58, 0xff, 0x42, 0xff, 0x40, 0xff, 0x66, 0xff, 0x90, 0xff, 0xc8, 0xff,
+0x08, 0x00, 0x40, 0x00, 0x68, 0x00, 0x8c, 0x00, 0x9a, 0x00, 0x94, 0x00, 0x78, 0x00, 0x4c, 0x00,
+0x10, 0x00, 0xde, 0xff, 0xae, 0xff, 0x88, 0xff, 0x6a, 0xff, 0x54, 0xff, 0x62, 0xff, 0x78, 0xff,
+0xa8, 0xff, 0xe0, 0xff, 0x08, 0x00, 0x32, 0x00, 0x58, 0x00, 0x6e, 0x00, 0x82, 0x00, 0x72, 0x00,
+0x50, 0x00, 0x32, 0x00, 0xf8, 0xff, 0xe0, 0xff, 0xaa, 0xff, 0x90, 0xff, 0x7c, 0xff, 0x74, 0xff,
+0x80, 0xff, 0x92, 0xff, 0xba, 0xff, 0xe0, 0xff, 0x06, 0x00, 0x32, 0x00, 0x48, 0x00, 0x46, 0x00,
+0x60, 0x00, 0x58, 0x00, 0x44, 0x00, 0x24, 0x00, 0x02, 0x00, 0xdc, 0xff, 0xc6, 0xff, 0xb4, 0xff,
+0xa6, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0xb4, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xfa, 0xff, 0x14, 0x00,
+0x26, 0x00, 0x2c, 0x00, 0x34, 0x00, 0x2c, 0x00, 0x1e, 0x00, 0x12, 0x00, 0xf6, 0xff, 0xe6, 0xff,
+0xcc, 0xff, 0xc2, 0xff, 0xbe, 0xff, 0xb8, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xd2, 0xff, 0xda, 0xff,
+0xe4, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xf2, 0xff,
+0xf0, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xee, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe2, 0xff,
+0xe4, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xce, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xdc, 0xff, 0xf4, 0xff,
+0xf6, 0xff, 0xfc, 0xff, 0x0e, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x14, 0x00,
+0xfc, 0xff, 0xf8, 0xff, 0xe0, 0xff, 0xc4, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xc0, 0xff, 0xb8, 0xff,
+0xba, 0xff, 0xda, 0xff, 0xe8, 0xff, 0x06, 0x00, 0x22, 0x00, 0x34, 0x00, 0x38, 0x00, 0x32, 0x00,
+0x36, 0x00, 0x38, 0x00, 0x18, 0x00, 0xf8, 0xff, 0xdc, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0x92, 0xff,
+0x98, 0xff, 0x9e, 0xff, 0xb0, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0x1c, 0x00, 0x3e, 0x00, 0x58, 0x00,
+0x64, 0x00, 0x6e, 0x00, 0x5c, 0x00, 0x56, 0x00, 0x24, 0x00, 0xfe, 0xff, 0xcc, 0xff, 0x98, 0xff,
+0x84, 0xff, 0x6c, 0xff, 0x76, 0xff, 0x82, 0xff, 0xa2, 0xff, 0xc8, 0xff, 0xf2, 0xff, 0x26, 0x00,
+0x58, 0x00, 0x7c, 0x00, 0x86, 0x00, 0x84, 0x00, 0x78, 0x00, 0x44, 0x00, 0x20, 0x00, 0xf0, 0xff,
+0xac, 0xff, 0x76, 0xff, 0x44, 0xff, 0x3c, 0xff, 0x4c, 0xff, 0x68, 0xff, 0x94, 0xff, 0xc8, 0xff,
+0xf8, 0xff, 0x38, 0x00, 0x70, 0x00, 0x94, 0x00, 0xae, 0x00, 0xa2, 0x00, 0x88, 0x00, 0x46, 0x00,
+0x10, 0x00, 0xe2, 0xff, 0x9a, 0xff, 0x5c, 0xff, 0x36, 0xff, 0x30, 0xff, 0x3c, 0xff, 0x60, 0xff,
+0xa0, 0xff, 0xe0, 0xff, 0x12, 0x00, 0x52, 0x00, 0x8c, 0x00, 0xae, 0x00, 0xb8, 0x00, 0xae, 0x00,
+0x7e, 0x00, 0x32, 0x00, 0x00, 0x00, 0xb6, 0xff, 0x74, 0xff, 0x48, 0xff, 0x24, 0xff, 0x16, 0xff,
+0x30, 0xff, 0x60, 0xff, 0xaa, 0xff, 0xea, 0xff, 0x1a, 0x00, 0x5c, 0x00, 0x90, 0x00, 0xac, 0x00,
+0xb0, 0x00, 0xa0, 0x00, 0x64, 0x00, 0x1e, 0x00, 0xe2, 0xff, 0xa8, 0xff, 0x68, 0xff, 0x36, 0xff,
+0x1c, 0xff, 0x22, 0xff, 0x46, 0xff, 0x72, 0xff, 0xb8, 0xff, 0xf8, 0xff, 0x32, 0x00, 0x70, 0x00,
+0x9a, 0x00, 0xae, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x06, 0x00, 0xe0, 0xff, 0xa6, 0xff,
+0x6e, 0xff, 0x46, 0xff, 0x30, 0xff, 0x48, 0xff, 0x64, 0xff, 0xa0, 0xff, 0xd4, 0xff, 0x0e, 0x00,
+0x40, 0x00, 0x6a, 0x00, 0x8e, 0x00, 0x9c, 0x00, 0x8a, 0x00, 0x6a, 0x00, 0x38, 0x00, 0xf8, 0xff,
+0xce, 0xff, 0x8e, 0xff, 0x76, 0xff, 0x58, 0xff, 0x4e, 0xff, 0x64, 0xff, 0x7e, 0xff, 0xac, 0xff,
+0xe4, 0xff, 0x18, 0x00, 0x40, 0x00, 0x6a, 0x00, 0x80, 0x00, 0x7e, 0x00, 0x72, 0x00, 0x54, 0x00,
+0x20, 0x00, 0xfe, 0xff, 0xd0, 0xff, 0xa2, 0xff, 0x94, 0xff, 0x80, 0xff, 0x7a, 0xff, 0x84, 0xff,
+0x9a, 0xff, 0xca, 0xff, 0xf0, 0xff, 0x1c, 0x00, 0x3c, 0x00, 0x54, 0x00, 0x62, 0x00, 0x6a, 0x00,
+0x64, 0x00, 0x46, 0x00, 0x10, 0x00, 0xfc, 0xff, 0xe0, 0xff, 0xa8, 0xff, 0xa4, 0xff, 0x94, 0xff,
+0x90, 0xff, 0x92, 0xff, 0xa4, 0xff, 0xc6, 0xff, 0xf4, 0xff, 0x10, 0x00, 0x24, 0x00, 0x30, 0x00,
+0x40, 0x00, 0x36, 0x00, 0x32, 0x00, 0x20, 0x00, 0x04, 0x00, 0xf4, 0xff, 0xdc, 0xff, 0xc6, 0xff,
+0xbc, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xce, 0xff, 0xe8, 0xff, 0xf4, 0xff, 0xfc, 0xff,
+0x0a, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0c, 0x00, 0xfe, 0xff, 0xfa, 0xff, 0xf6, 0xff,
+0xe8, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xe4, 0xff,
+0xe6, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xe8, 0xff,
+0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x16, 0x00, 0x06, 0x00, 0x04, 0x00, 0xf6, 0xff, 0xf6, 0xff,
+0xec, 0xff, 0xda, 0xff, 0xce, 0xff, 0xba, 0xff, 0xba, 0xff, 0xc2, 0xff, 0xc0, 0xff, 0xc0, 0xff,
+0xe4, 0xff, 0xf0, 0xff, 0x04, 0x00, 0x18, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x2a, 0x00, 0x2a, 0x00,
+0x1e, 0x00, 0x12, 0x00, 0xf4, 0xff, 0xdc, 0xff, 0xb6, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xa8, 0xff,
+0xaa, 0xff, 0xb2, 0xff, 0xce, 0xff, 0xf0, 0xff, 0x0e, 0x00, 0x36, 0x00, 0x46, 0x00, 0x4c, 0x00,
+0x4a, 0x00, 0x42, 0x00, 0x28, 0x00, 0x06, 0x00, 0xf0, 0xff, 0xbc, 0xff, 0x96, 0xff, 0x82, 0xff,
+0x7e, 0xff, 0x78, 0xff, 0x94, 0xff, 0xa4, 0xff, 0xd8, 0xff, 0x02, 0x00, 0x36, 0x00, 0x56, 0x00,
+0x72, 0x00, 0x7c, 0x00, 0x70, 0x00, 0x52, 0x00, 0x30, 0x00, 0x0a, 0x00, 0xdc, 0xff, 0xa2, 0xff,
+0x78, 0xff, 0x68, 0xff, 0x52, 0xff, 0x60, 0xff, 0x80, 0xff, 0xb8, 0xff, 0xee, 0xff, 0x1e, 0x00,
+0x54, 0x00, 0x7c, 0x00, 0x9e, 0x00, 0x94, 0x00, 0x8a, 0x00, 0x60, 0x00, 0x38, 0x00, 0x00, 0x00,
+0xc4, 0xff, 0x8a, 0xff, 0x52, 0xff, 0x3a, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x7e, 0xff, 0xb6, 0xff,
+0xee, 0xff, 0x16, 0x00, 0x5e, 0x00, 0x96, 0x00, 0xa4, 0x00, 0xac, 0x00, 0x94, 0x00, 0x6c, 0x00,
+0x22, 0x00, 0xf4, 0xff, 0xbe, 0xff, 0x76, 0xff, 0x4a, 0xff, 0x36, 0xff, 0x2a, 0xff, 0x4a, 0xff,
+0x82, 0xff, 0xbe, 0xff, 0xf4, 0xff, 0x2c, 0x00, 0x7a, 0x00, 0xaa, 0x00, 0xb6, 0x00, 0xb2, 0x00,
+0x9e, 0x00, 0x60, 0x00, 0x1e, 0x00, 0xee, 0xff, 0xb0, 0xff, 0x72, 0xff, 0x40, 0xff, 0x22, 0xff,
+0x30, 0xff, 0x56, 0xff, 0x86, 0xff, 0xd8, 0xff, 0x0c, 0x00, 0x48, 0x00, 0x80, 0x00, 0xa2, 0x00,
+0xba, 0x00, 0xb8, 0x00, 0x82, 0x00, 0x40, 0x00, 0x04, 0x00, 0xc4, 0xff, 0x8c, 0xff, 0x4e, 0xff,
+0x2e, 0xff, 0x1e, 0xff, 0x32, 0xff, 0x5e, 0xff, 0x98, 0xff, 0xe2, 0xff, 0x18, 0x00, 0x4e, 0x00,
+0x78, 0x00, 0x9c, 0x00, 0xa8, 0x00, 0x9c, 0x00, 0x70, 0x00, 0x2a, 0x00, 0xf4, 0xff, 0xb4, 0xff,
+0x80, 0xff, 0x5c, 0xff, 0x3e, 0xff, 0x2c, 0xff, 0x5a, 0xff, 0x84, 0xff, 0xb0, 0xff, 0xee, 0xff,
+0x2a, 0x00, 0x5e, 0x00, 0x78, 0x00, 0x92, 0x00, 0x8e, 0x00, 0x82, 0x00, 0x48, 0x00, 0x14, 0x00,
+0xe0, 0xff, 0xb0, 0xff, 0x86, 0xff, 0x5a, 0xff, 0x4c, 0xff, 0x4e, 0xff, 0x6e, 0xff, 0x86, 0xff,
+0xca, 0xff, 0xfc, 0xff, 0x1e, 0x00, 0x52, 0x00, 0x66, 0x00, 0x76, 0x00, 0x62, 0x00, 0x56, 0x00,
+0x38, 0x00, 0x06, 0x00, 0xe2, 0xff, 0xbc, 0xff, 0x98, 0xff, 0x82, 0xff, 0x6e, 0xff, 0x7c, 0xff,
+0x90, 0xff, 0xb4, 0xff, 0xea, 0xff, 0x00, 0x00, 0x20, 0x00, 0x3a, 0x00, 0x4c, 0x00, 0x60, 0x00,
+0x52, 0x00, 0x4c, 0x00, 0x28, 0x00, 0xfe, 0xff, 0xee, 0xff, 0xce, 0xff, 0xbc, 0xff, 0xae, 0xff,
+0xae, 0xff, 0xaa, 0xff, 0xba, 0xff, 0xd0, 0xff, 0xee, 0xff, 0xfe, 0xff, 0x06, 0x00, 0x22, 0x00,
+0x1e, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x08, 0x00, 0xfe, 0xff, 0xf0, 0xff, 0xe0, 0xff,
+0xe2, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xcc, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xee, 0xff, 0xfa, 0xff,
+0xfa, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfe, 0xff,
+0x0a, 0x00, 0x04, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xee, 0xff,
+0xea, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xee, 0xff,
+0xf6, 0xff, 0xf4, 0xff, 0x0c, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x20, 0x00, 0x14, 0x00,
+0x02, 0x00, 0xde, 0xff, 0xc4, 0xff, 0xb6, 0xff, 0xaa, 0xff, 0xa4, 0xff, 0xa8, 0xff, 0xb6, 0xff,
+0xbc, 0xff, 0xdc, 0xff, 0xf0, 0xff, 0x0a, 0x00, 0x2c, 0x00, 0x3e, 0x00, 0x4c, 0x00, 0x44, 0x00,
+0x3c, 0x00, 0x1e, 0x00, 0xf6, 0xff, 0xdc, 0xff, 0xb6, 0xff, 0x94, 0xff, 0x8c, 0xff, 0x82, 0xff,
+0x8c, 0xff, 0x96, 0xff, 0xb6, 0xff, 0xea, 0xff, 0x06, 0x00, 0x34, 0x00, 0x52, 0x00, 0x68, 0x00,
+0x76, 0x00, 0x5a, 0x00, 0x52, 0x00, 0x26, 0x00, 0xf8, 0xff, 0xce, 0xff, 0x98, 0xff, 0x80, 0xff,
+0x62, 0xff, 0x5a, 0xff, 0x66, 0xff, 0x8e, 0xff, 0xba, 0xff, 0xe6, 0xff, 0x10, 0x00, 0x52, 0x00,
+0x70, 0x00, 0x8c, 0x00, 0x96, 0x00, 0x70, 0x00, 0x54, 0x00, 0x28, 0x00, 0xf0, 0xff, 0xb6, 0xff,
+0x86, 0xff, 0x64, 0xff, 0x48, 0xff, 0x4c, 0xff, 0x62, 0xff, 0x92, 0xff, 0xbc, 0xff, 0xfc, 0xff,
+0x3e, 0x00, 0x74, 0x00, 0x9c, 0x00, 0xb0, 0x00, 0xac, 0x00, 0x8c, 0x00, 0x50, 0x00, 0x1c, 0x00,
+0xec, 0xff, 0xb2, 0xff, 0x82, 0xff, 0x46, 0xff, 0x34, 0xff, 0x4c, 0xff, 0x5e, 0xff, 0xa2, 0xff,
+0xd2, 0xff, 0x12, 0x00, 0x52, 0x00, 0x88, 0x00, 0xb0, 0x00, 0xb6, 0x00, 0xac, 0x00, 0x78, 0x00,
+0x48, 0x00, 0x06, 0x00, 0xdc, 0xff, 0x9a, 0xff, 0x56, 0xff, 0x2c, 0xff, 0x26, 0xff, 0x48, 0xff,
+0x5e, 0xff, 0xae, 0xff, 0xee, 0xff, 0x16, 0x00, 0x5e, 0x00, 0x94, 0x00, 0xb8, 0x00, 0xb0, 0x00,
+0xa4, 0x00, 0x78, 0x00, 0x38, 0x00, 0x04, 0x00, 0xc0, 0xff, 0x86, 0xff, 0x54, 0xff, 0x32, 0xff,
+0x2a, 0xff, 0x4c, 0xff, 0x7c, 0xff, 0xba, 0xff, 0xfe, 0xff, 0x2a, 0x00, 0x6c, 0x00, 0x96, 0x00,
+0xb0, 0x00, 0xac, 0x00, 0x98, 0x00, 0x68, 0x00, 0x1e, 0x00, 0xe6, 0xff, 0xba, 0xff, 0x76, 0xff,
+0x44, 0xff, 0x2a, 0xff, 0x24, 0xff, 0x4e, 0xff, 0x84, 0xff, 0xc8, 0xff, 0x02, 0x00, 0x32, 0x00,
+0x62, 0x00, 0x8c, 0x00, 0x96, 0x00, 0x96, 0x00, 0x7a, 0x00, 0x44, 0x00, 0x12, 0x00, 0xde, 0xff,
+0xa2, 0xff, 0x70, 0xff, 0x4e, 0xff, 0x42, 0xff, 0x42, 0xff, 0x70, 0xff, 0xa4, 0xff, 0xe0, 0xff,
+0x16, 0x00, 0x3a, 0x00, 0x64, 0x00, 0x74, 0x00, 0x8e, 0x00, 0x7e, 0x00, 0x5c, 0x00, 0x32, 0x00,
+0x02, 0x00, 0xe2, 0xff, 0xa4, 0xff, 0x84, 0xff, 0x70, 0xff, 0x62, 0xff, 0x78, 0xff, 0x8a, 0xff,
+0xae, 0xff, 0xe4, 0xff, 0x10, 0x00, 0x34, 0x00, 0x4a, 0x00, 0x58, 0x00, 0x60, 0x00, 0x4e, 0x00,
+0x40, 0x00, 0x1a, 0x00, 0xf6, 0xff, 0xde, 0xff, 0xa8, 0xff, 0x9c, 0xff, 0x9a, 0xff, 0x8e, 0xff,
+0x9a, 0xff, 0xa4, 0xff, 0xc8, 0xff, 0xec, 0xff, 0x08, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x34, 0x00,
+0x34, 0x00, 0x3c, 0x00, 0x30, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xd2, 0xff, 0xd4, 0xff,
+0xd0, 0xff, 0xc2, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xdc, 0xff, 0xee, 0xff, 0xfc, 0xff, 0x04, 0x00,
+0x0c, 0x00, 0x12, 0x00, 0x16, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x0a, 0x00, 0xfc, 0xff, 0xfa, 0xff,
+0xf0, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xe0, 0xff, 0xd2, 0xff, 0xda, 0xff, 0xe2, 0xff,
+0xdc, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xee, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x06, 0x00,
+0x0e, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x04, 0x00, 0xfe, 0xff, 0xf8, 0xff, 0xf0, 0xff,
+0xe2, 0xff, 0xd2, 0xff, 0xc2, 0xff, 0xbe, 0xff, 0xcc, 0xff, 0xd2, 0xff, 0xde, 0xff, 0xf0, 0xff,
+0xfc, 0xff, 0x10, 0x00, 0x16, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x16, 0x00,
+0x00, 0x00, 0xf0, 0xff, 0xd0, 0xff, 0xb0, 0xff, 0x98, 0xff, 0x9a, 0xff, 0x9e, 0xff, 0xa0, 0xff,
+0xb8, 0xff, 0xd4, 0xff, 0xee, 0xff, 0x0e, 0x00, 0x2c, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x48, 0x00,
+0x3a, 0x00, 0x28, 0x00, 0x08, 0x00, 0xe0, 0xff, 0xc6, 0xff, 0x92, 0xff, 0x78, 0xff, 0x6e, 0xff,
+0x76, 0xff, 0x88, 0xff, 0xa0, 0xff, 0xd6, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x54, 0x00, 0x64, 0x00,
+0x7c, 0x00, 0x78, 0x00, 0x5c, 0x00, 0x3e, 0x00, 0x10, 0x00, 0xde, 0xff, 0xaa, 0xff, 0x7e, 0xff,
+0x56, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x82, 0xff, 0xa2, 0xff, 0xd6, 0xff, 0x06, 0x00, 0x42, 0x00,
+0x6e, 0x00, 0x90, 0x00, 0x9c, 0x00, 0x86, 0x00, 0x6a, 0x00, 0x36, 0x00, 0x02, 0x00, 0xcc, 0xff,
+0x8c, 0xff, 0x5a, 0xff, 0x40, 0xff, 0x40, 0xff, 0x50, 0xff, 0x78, 0xff, 0xb0, 0xff, 0xee, 0xff,
+0x24, 0x00, 0x56, 0x00, 0x84, 0x00, 0x9e, 0x00, 0xb2, 0x00, 0x96, 0x00, 0x72, 0x00, 0x2e, 0x00,
+0xfa, 0xff, 0xc4, 0xff, 0x80, 0xff, 0x5a, 0xff, 0x38, 0xff, 0x40, 0xff, 0x58, 0xff, 0x7e, 0xff,
+0xce, 0xff, 0xf0, 0xff, 0x26, 0x00, 0x6a, 0x00, 0x92, 0x00, 0xb2, 0x00, 0xaa, 0x00, 0x9a, 0x00,
+0x62, 0x00, 0x20, 0x00, 0xf8, 0xff, 0xb6, 0xff, 0x76, 0xff, 0x4a, 0xff, 0x2a, 0xff, 0x3a, 0xff,
+0x5c, 0xff, 0x8c, 0xff, 0xcc, 0xff, 0xfa, 0xff, 0x32, 0x00, 0x6e, 0x00, 0x96, 0x00, 0xba, 0x00,
+0x9c, 0x00, 0x86, 0x00, 0x5a, 0x00, 0x10, 0x00, 0xe0, 0xff, 0x98, 0xff, 0x60, 0xff, 0x44, 0xff,
+0x2c, 0xff, 0x3e, 0xff, 0x5c, 0xff, 0x96, 0xff, 0xda, 0xff, 0x10, 0x00, 0x4a, 0x00, 0x7e, 0x00,
+0xae, 0x00, 0xb8, 0x00, 0xaa, 0x00, 0x76, 0x00, 0x44, 0x00, 0xfc, 0xff, 0xc2, 0xff, 0x96, 0xff,
+0x56, 0xff, 0x44, 0xff, 0x34, 0xff, 0x50, 0xff, 0x72, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x1a, 0x00,
+0x56, 0x00, 0x88, 0x00, 0x9a, 0x00, 0x94, 0x00, 0x80, 0x00, 0x48, 0x00, 0x1c, 0x00, 0xf0, 0xff,
+0xac, 0xff, 0x82, 0xff, 0x68, 0xff, 0x50, 0xff, 0x58, 0xff, 0x6c, 0xff, 0x90, 0xff, 0xba, 0xff,
+0xf4, 0xff, 0x22, 0x00, 0x46, 0x00, 0x62, 0x00, 0x72, 0x00, 0x6c, 0x00, 0x50, 0x00, 0x40, 0x00,
+0x02, 0x00, 0xe8, 0xff, 0xc4, 0xff, 0x96, 0xff, 0x90, 0xff, 0x8e, 0xff, 0x86, 0xff, 0x92, 0xff,
+0xb6, 0xff, 0xdc, 0xff, 0x04, 0x00, 0x20, 0x00, 0x3e, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00,
+0x36, 0x00, 0x16, 0x00, 0xf8, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xba, 0xff, 0xae, 0xff, 0xa6, 0xff,
+0xa2, 0xff, 0xb6, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x16, 0x00, 0x0e, 0x00,
+0x1a, 0x00, 0x20, 0x00, 0x06, 0x00, 0x0a, 0x00, 0xf2, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xcc, 0xff,
+0xd6, 0xff, 0xe0, 0xff, 0xd0, 0xff, 0xde, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0x00, 0x00,
+0x04, 0x00, 0xfc, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0x04, 0x00,
+0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xe4, 0xff,
+0xe4, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xc6, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xec, 0xff,
+0x00, 0x00, 0x0a, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x0c, 0x00, 0xfe, 0xff,
+0xec, 0xff, 0xd4, 0xff, 0xb8, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xc6, 0xff,
+0xe0, 0xff, 0xf8, 0xff, 0x0e, 0x00, 0x2e, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x40, 0x00, 0x3e, 0x00,
+0x16, 0x00, 0xfe, 0xff, 0xe8, 0xff, 0xbe, 0xff, 0xa2, 0xff, 0x8c, 0xff, 0x86, 0xff, 0x8a, 0xff,
+0xa4, 0xff, 0xc0, 0xff, 0xe6, 0xff, 0x0c, 0x00, 0x34, 0x00, 0x5c, 0x00, 0x6a, 0x00, 0x72, 0x00,
+0x62, 0x00, 0x48, 0x00, 0x20, 0x00, 0xea, 0xff, 0xc4, 0xff, 0x90, 0xff, 0x68, 0xff, 0x56, 0xff,
+0x5c, 0xff, 0x62, 0xff, 0x80, 0xff, 0xae, 0xff, 0xec, 0xff, 0x1a, 0x00, 0x52, 0x00, 0x7c, 0x00,
+0x8c, 0x00, 0x96, 0x00, 0x74, 0x00, 0x56, 0x00, 0x26, 0x00, 0xf0, 0xff, 0xba, 0xff, 0x82, 0xff,
+0x54, 0xff, 0x42, 0xff, 0x3a, 0xff, 0x58, 0xff, 0x8c, 0xff, 0xc0, 0xff, 0xfe, 0xff, 0x30, 0x00,
+0x70, 0x00, 0x96, 0x00, 0xae, 0x00, 0xae, 0x00, 0x94, 0x00, 0x60, 0x00, 0x26, 0x00, 0xe2, 0xff,
+0xa8, 0xff, 0x70, 0xff, 0x44, 0xff, 0x30, 0xff, 0x30, 0xff, 0x4a, 0xff, 0x80, 0xff, 0xc2, 0xff,
+0xfc, 0xff, 0x3e, 0x00, 0x76, 0x00, 0x9a, 0x00, 0xb6, 0x00, 0xac, 0x00, 0x8e, 0x00, 0x4e, 0x00,
+0x0c, 0x00, 0xda, 0xff, 0x9c, 0xff, 0x5c, 0xff, 0x3a, 0xff, 0x20, 0xff, 0x32, 0xff, 0x5e, 0xff,
+0x94, 0xff, 0xe4, 0xff, 0x00, 0x00, 0x52, 0x00, 0x90, 0x00, 0xbe, 0x00, 0xc8, 0x00, 0xb0, 0x00,
+0x84, 0x00, 0x4c, 0x00, 0x0a, 0x00, 0xd4, 0xff, 0x9c, 0xff, 0x58, 0xff, 0x36, 0xff, 0x26, 0xff,
+0x42, 0xff, 0x68, 0xff, 0xb4, 0xff, 0xe8, 0xff, 0x22, 0x00, 0x6a, 0x00, 0x96, 0x00, 0xbc, 0x00,
+0xb2, 0x00, 0x96, 0x00, 0x6c, 0x00, 0x30, 0x00, 0xf0, 0xff, 0xb8, 0xff, 0x88, 0xff, 0x50, 0xff,
+0x34, 0xff, 0x36, 0xff, 0x4c, 0xff, 0x82, 0xff, 0xc4, 0xff, 0x00, 0x00, 0x2c, 0x00, 0x66, 0x00,
+0x8c, 0x00, 0xa4, 0x00, 0x98, 0x00, 0x74, 0x00, 0x5a, 0x00, 0x1a, 0x00, 0xec, 0xff, 0xb8, 0xff,
+0x82, 0xff, 0x64, 0xff, 0x4e, 0xff, 0x5a, 0xff, 0x7c, 0xff, 0x98, 0xff, 0xd4, 0xff, 0x08, 0x00,
+0x38, 0x00, 0x68, 0x00, 0x7a, 0x00, 0x84, 0x00, 0x76, 0x00, 0x64, 0x00, 0x36, 0x00, 0x18, 0x00,
+0xe6, 0xff, 0xb2, 0xff, 0x92, 0xff, 0x6a, 0xff, 0x66, 0xff, 0x6c, 0xff, 0x82, 0xff, 0xb8, 0xff,
+0xe8, 0xff, 0xfc, 0xff, 0x26, 0x00, 0x40, 0x00, 0x4e, 0x00, 0x5a, 0x00, 0x60, 0x00, 0x44, 0x00,
+0x1c, 0x00, 0xfa, 0xff, 0xde, 0xff, 0xaa, 0xff, 0x94, 0xff, 0x94, 0xff, 0x84, 0xff, 0x92, 0xff,
+0x9e, 0xff, 0xd4, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0x14, 0x00, 0x2c, 0x00, 0x38, 0x00, 0x36, 0x00,
+0x3c, 0x00, 0x30, 0x00, 0x1a, 0x00, 0xf8, 0xff, 0xea, 0xff, 0xc4, 0xff, 0xb8, 0xff, 0xc2, 0xff,
+0xae, 0xff, 0xb8, 0xff, 0xbe, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x08, 0x00,
+0x12, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x14, 0x00, 0xfe, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xda, 0xff,
+0xe2, 0xff, 0xde, 0xff, 0xd4, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xe4, 0xff,
+0xea, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0x06, 0x00, 0x08, 0x00,
+0x14, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xee, 0xff, 0xe4, 0xff,
+0xde, 0xff, 0xce, 0xff, 0xc6, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xdc, 0xff, 0xf0, 0xff, 0xfa, 0xff,
+0x0e, 0x00, 0x1c, 0x00, 0x2a, 0x00, 0x36, 0x00, 0x24, 0x00, 0x28, 0x00, 0x22, 0x00, 0xfc, 0xff,
+0xf0, 0xff, 0xda, 0xff, 0xc0, 0xff, 0xaa, 0xff, 0x98, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xb8, 0xff,
+0xd4, 0xff, 0xf2, 0xff, 0x06, 0x00, 0x36, 0x00, 0x52, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x4c, 0x00,
+0x3a, 0x00, 0x12, 0x00, 0xf0, 0xff, 0xc4, 0xff, 0xa0, 0xff, 0x90, 0xff, 0x80, 0xff, 0x7a, 0xff,
+0x8a, 0xff, 0xa6, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0x1e, 0x00, 0x52, 0x00, 0x62, 0x00, 0x76, 0x00,
+0x7a, 0x00, 0x5e, 0x00, 0x3e, 0x00, 0x08, 0x00, 0xe4, 0xff, 0xb4, 0xff, 0x86, 0xff, 0x64, 0xff,
+0x56, 0xff, 0x54, 0xff, 0x74, 0xff, 0xa0, 0xff, 0xc8, 0xff, 0x02, 0x00, 0x2a, 0x00, 0x62, 0x00,
+0x7e, 0x00, 0x88, 0x00, 0x82, 0x00, 0x64, 0x00, 0x32, 0x00, 0x00, 0x00, 0xce, 0xff, 0x94, 0xff,
+0x5e, 0xff, 0x4a, 0xff, 0x3c, 0xff, 0x4c, 0xff, 0x70, 0xff, 0xaa, 0xff, 0xda, 0xff, 0x0a, 0x00,
+0x48, 0x00, 0x84, 0x00, 0x98, 0x00, 0xa8, 0x00, 0xa0, 0x00, 0x68, 0x00, 0x2e, 0x00, 0xf0, 0xff,
+0xb8, 0xff, 0x7e, 0xff, 0x4e, 0xff, 0x34, 0xff, 0x28, 0xff, 0x3e, 0xff, 0x6e, 0xff, 0xa0, 0xff,
+0xea, 0xff, 0x1e, 0x00, 0x66, 0x00, 0x9e, 0x00, 0xae, 0x00, 0xb4, 0x00, 0x96, 0x00, 0x6a, 0x00,
+0x1e, 0x00, 0xe6, 0xff, 0xb4, 0xff, 0x78, 0xff, 0x40, 0xff, 0x16, 0xff, 0x20, 0xff, 0x42, 0xff,
+0x7c, 0xff, 0xc2, 0xff, 0xfe, 0xff, 0x2a, 0x00, 0x78, 0x00, 0xa4, 0x00, 0xba, 0x00, 0xb8, 0x00,
+0x92, 0x00, 0x66, 0x00, 0x10, 0x00, 0xdc, 0xff, 0xa4, 0xff, 0x64, 0xff, 0x4c, 0xff, 0x30, 0xff,
+0x3a, 0xff, 0x62, 0xff, 0x90, 0xff, 0xe0, 0xff, 0x14, 0x00, 0x46, 0x00, 0x84, 0x00, 0xa4, 0x00,
+0xba, 0x00, 0xac, 0x00, 0x7c, 0x00, 0x48, 0x00, 0x06, 0x00, 0xc8, 0xff, 0xa4, 0xff, 0x66, 0xff,
+0x56, 0xff, 0x44, 0xff, 0x48, 0xff, 0x72, 0xff, 0xaa, 0xff, 0xe8, 0xff, 0x22, 0x00, 0x46, 0x00,
+0x78, 0x00, 0x90, 0x00, 0x92, 0x00, 0x8a, 0x00, 0x60, 0x00, 0x32, 0x00, 0xf8, 0xff, 0xce, 0xff,
+0x9a, 0xff, 0x78, 0xff, 0x62, 0xff, 0x5e, 0xff, 0x72, 0xff, 0x88, 0xff, 0xc0, 0xff, 0xf2, 0xff,
+0x16, 0x00, 0x56, 0x00, 0x5e, 0x00, 0x70, 0x00, 0x76, 0x00, 0x5e, 0x00, 0x4e, 0x00, 0x1a, 0x00,
+0xf4, 0xff, 0xce, 0xff, 0x98, 0xff, 0x94, 0xff, 0x86, 0xff, 0x88, 0xff, 0x8c, 0xff, 0xa6, 0xff,
+0xcc, 0xff, 0xec, 0xff, 0x12, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x44, 0x00, 0x3e, 0x00, 0x32, 0x00,
+0x22, 0x00, 0x04, 0x00, 0xe8, 0xff, 0xcc, 0xff, 0xb6, 0xff, 0xa6, 0xff, 0xaa, 0xff, 0xa6, 0xff,
+0xa8, 0xff, 0xbe, 0xff, 0xd6, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x10, 0x00, 0x14, 0x00, 0x12, 0x00,
+0x14, 0x00, 0x12, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xec, 0xff, 0xec, 0xff, 0xd4, 0xff, 0xc8, 0xff,
+0xd4, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xd8, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xee, 0xff,
+0xf6, 0xff, 0xf6, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x00, 0x00,
+0xf4, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xd2, 0xff,
+0xd8, 0xff, 0xca, 0xff, 0xda, 0xff, 0xda, 0xff, 0xea, 0xff, 0xf2, 0xff, 0xee, 0xff, 0x08, 0x00,
+0x0a, 0x00, 0x2a, 0x00, 0x20, 0x00, 0x14, 0x00, 0x12, 0x00, 0x06, 0x00, 0x06, 0x00, 0xf6, 0xff,
+0xe2, 0xff, 0xca, 0xff, 0xba, 0xff, 0xb4, 0xff, 0xb8, 0xff, 0xc0, 0xff, 0xc6, 0xff, 0xe6, 0xff,
+0x00, 0x00, 0x12, 0x00, 0x2c, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x46, 0x00, 0x46, 0x00, 0x30, 0x00,
+0x14, 0x00, 0xfa, 0xff, 0xd0, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0x92, 0xff, 0x96, 0xff, 0xa6, 0xff,
+0xb4, 0xff, 0xda, 0xff, 0xfc, 0xff, 0x34, 0x00, 0x54, 0x00, 0x64, 0x00, 0x64, 0x00, 0x64, 0x00,
+0x5a, 0x00, 0x34, 0x00, 0x08, 0x00, 0xe2, 0xff, 0xac, 0xff, 0x82, 0xff, 0x78, 0xff, 0x5c, 0xff,
+0x74, 0xff, 0x8c, 0xff, 0xaa, 0xff, 0xea, 0xff, 0x16, 0x00, 0x4c, 0x00, 0x6a, 0x00, 0x80, 0x00,
+0x8e, 0x00, 0x8a, 0x00, 0x66, 0x00, 0x30, 0x00, 0x02, 0x00, 0xce, 0xff, 0x92, 0xff, 0x68, 0xff,
+0x40, 0xff, 0x42, 0xff, 0x54, 0xff, 0x7e, 0xff, 0xb2, 0xff, 0xee, 0xff, 0x2a, 0x00, 0x5c, 0x00,
+0x8a, 0x00, 0xa2, 0x00, 0xa6, 0x00, 0x8c, 0x00, 0x6c, 0x00, 0x24, 0x00, 0xea, 0xff, 0xb6, 0xff,
+0x70, 0xff, 0x4a, 0xff, 0x28, 0xff, 0x1a, 0xff, 0x4a, 0xff, 0x76, 0xff, 0xbe, 0xff, 0x00, 0x00,
+0x20, 0x00, 0x60, 0x00, 0x8c, 0x00, 0xa6, 0x00, 0xb0, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x08, 0x00,
+0xd8, 0xff, 0x9a, 0xff, 0x58, 0xff, 0x3c, 0xff, 0x1e, 0xff, 0x26, 0xff, 0x5e, 0xff, 0x8c, 0xff,
+0xd6, 0xff, 0x04, 0x00, 0x34, 0x00, 0x7c, 0x00, 0xa4, 0x00, 0xac, 0x00, 0xa8, 0x00, 0x78, 0x00,
+0x38, 0x00, 0x04, 0x00, 0xca, 0xff, 0x92, 0xff, 0x4e, 0xff, 0x2c, 0xff, 0x2e, 0xff, 0x48, 0xff,
+0x6a, 0xff, 0xa0, 0xff, 0xe2, 0xff, 0x18, 0x00, 0x44, 0x00, 0x7c, 0x00, 0x9a, 0x00, 0xa0, 0x00,
+0x9c, 0x00, 0x5e, 0x00, 0x20, 0x00, 0xf4, 0xff, 0xaa, 0xff, 0x88, 0xff, 0x60, 0xff, 0x3e, 0xff,
+0x44, 0xff, 0x50, 0xff, 0x7c, 0xff, 0xba, 0xff, 0xf8, 0xff, 0x2a, 0x00, 0x56, 0x00, 0x80, 0x00,
+0x9a, 0x00, 0x8e, 0x00, 0x7e, 0x00, 0x5c, 0x00, 0x2a, 0x00, 0xf6, 0xff, 0xba, 0xff, 0x86, 0xff,
+0x68, 0xff, 0x5e, 0xff, 0x68, 0xff, 0x86, 0xff, 0xa2, 0xff, 0xda, 0xff, 0x02, 0x00, 0x36, 0x00,
+0x66, 0x00, 0x72, 0x00, 0x8c, 0x00, 0x82, 0x00, 0x62, 0x00, 0x46, 0x00, 0x0c, 0x00, 0xe4, 0xff,
+0xae, 0xff, 0x8e, 0xff, 0x80, 0xff, 0x7a, 0xff, 0x84, 0xff, 0x94, 0xff, 0xb0, 0xff, 0xe0, 0xff,
+0x0c, 0x00, 0x2e, 0x00, 0x4c, 0x00, 0x56, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x4e, 0x00, 0x28, 0x00,
+0xf6, 0xff, 0xe6, 0xff, 0xb0, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0x92, 0xff, 0x9c, 0xff, 0xb6, 0xff,
+0xca, 0xff, 0xee, 0xff, 0x06, 0x00, 0x20, 0x00, 0x36, 0x00, 0x3a, 0x00, 0x4e, 0x00, 0x40, 0x00,
+0x24, 0x00, 0x08, 0x00, 0xf4, 0xff, 0xd8, 0xff, 0xca, 0xff, 0xba, 0xff, 0xc0, 0xff, 0xb4, 0xff,
+0xbe, 0xff, 0xca, 0xff, 0xcc, 0xff, 0xea, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x14, 0x00, 0x0e, 0x00,
+0xfc, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xd4, 0xff, 0xe4, 0xff,
+0xdc, 0xff, 0xda, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xe6, 0xff,
+0xe4, 0xff, 0xda, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xea, 0xff, 0x02, 0x00, 0x0e, 0x00,
+0x14, 0x00, 0x18, 0x00, 0x14, 0x00, 0x10, 0x00, 0x00, 0x00, 0xf6, 0xff, 0xe8, 0xff, 0xde, 0xff,
+0xbc, 0xff, 0xaa, 0xff, 0xae, 0xff, 0xae, 0xff, 0xb4, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xee, 0xff,
+0x10, 0x00, 0x22, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x2c, 0x00, 0x1a, 0x00, 0xf4, 0xff,
+0xdc, 0xff, 0xbe, 0xff, 0xa4, 0xff, 0x98, 0xff, 0x8c, 0xff, 0x98, 0xff, 0xa6, 0xff, 0xba, 0xff,
+0xe6, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x4a, 0x00, 0x62, 0x00, 0x6a, 0x00, 0x4e, 0x00, 0x44, 0x00,
+0x2a, 0x00, 0x00, 0x00, 0xde, 0xff, 0xaa, 0xff, 0x84, 0xff, 0x84, 0xff, 0x7a, 0xff, 0x7c, 0xff,
+0x9e, 0xff, 0xc4, 0xff, 0xe4, 0xff, 0x14, 0x00, 0x48, 0x00, 0x6e, 0x00, 0x8a, 0x00, 0x7c, 0x00,
+0x64, 0x00, 0x50, 0x00, 0x24, 0x00, 0xf6, 0xff, 0xb2, 0xff, 0x8a, 0xff, 0x6e, 0xff, 0x56, 0xff,
+0x58, 0xff, 0x68, 0xff, 0x92, 0xff, 0xb6, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x5a, 0x00, 0x86, 0x00,
+0x98, 0x00, 0x90, 0x00, 0x6e, 0x00, 0x40, 0x00, 0x10, 0x00, 0xe8, 0xff, 0xb0, 0xff, 0x78, 0xff,
+0x5a, 0xff, 0x48, 0xff, 0x42, 0xff, 0x5c, 0xff, 0xac, 0xff, 0xe4, 0xff, 0x0e, 0x00, 0x4a, 0x00,
+0x78, 0x00, 0xa2, 0x00, 0xac, 0x00, 0xa0, 0x00, 0x7a, 0x00, 0x30, 0x00, 0x02, 0x00, 0xdc, 0xff,
+0x8e, 0xff, 0x58, 0xff, 0x40, 0xff, 0x26, 0xff, 0x4a, 0xff, 0x72, 0xff, 0xa8, 0xff, 0xee, 0xff,
+0x1c, 0x00, 0x58, 0x00, 0x8e, 0x00, 0xae, 0x00, 0xa4, 0x00, 0x8c, 0x00, 0x5e, 0x00, 0x2c, 0x00,
+0xee, 0xff, 0xba, 0xff, 0x6e, 0xff, 0x40, 0xff, 0x2c, 0xff, 0x28, 0xff, 0x4c, 0xff, 0x76, 0xff,
+0xc4, 0xff, 0xf6, 0xff, 0x26, 0x00, 0x68, 0x00, 0x96, 0x00, 0xb4, 0x00, 0xa8, 0x00, 0x8a, 0x00,
+0x56, 0x00, 0x1a, 0x00, 0xe4, 0xff, 0xae, 0xff, 0x74, 0xff, 0x44, 0xff, 0x36, 0xff, 0x3e, 0xff,
+0x5c, 0xff, 0x84, 0xff, 0xc6, 0xff, 0x06, 0x00, 0x32, 0x00, 0x6a, 0x00, 0x88, 0x00, 0xa4, 0x00,
+0x96, 0x00, 0x6c, 0x00, 0x44, 0x00, 0x10, 0x00, 0xd2, 0xff, 0x9e, 0xff, 0x70, 0xff, 0x4e, 0xff,
+0x46, 0xff, 0x48, 0xff, 0x66, 0xff, 0x98, 0xff, 0xd4, 0xff, 0x0a, 0x00, 0x48, 0x00, 0x64, 0x00,
+0x7c, 0x00, 0x8a, 0x00, 0x74, 0x00, 0x5e, 0x00, 0x2a, 0x00, 0xfa, 0xff, 0xd0, 0xff, 0xa2, 0xff,
+0x82, 0xff, 0x68, 0xff, 0x5e, 0xff, 0x72, 0xff, 0x8e, 0xff, 0xb4, 0xff, 0xf0, 0xff, 0x12, 0x00,
+0x3a, 0x00, 0x52, 0x00, 0x62, 0x00, 0x66, 0x00, 0x52, 0x00, 0x3c, 0x00, 0x1c, 0x00, 0xfa, 0xff,
+0xd6, 0xff, 0xac, 0xff, 0x92, 0xff, 0x7e, 0xff, 0x84, 0xff, 0x8c, 0xff, 0xa2, 0xff, 0xc8, 0xff,
+0xee, 0xff, 0x10, 0x00, 0x24, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x2e, 0x00,
+0x12, 0x00, 0xf6, 0xff, 0xce, 0xff, 0xb8, 0xff, 0xb6, 0xff, 0xae, 0xff, 0xa4, 0xff, 0xb0, 0xff,
+0xc2, 0xff, 0xe2, 0xff, 0x00, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x2e, 0x00,
+0x24, 0x00, 0x1e, 0x00, 0x04, 0x00, 0xea, 0xff, 0xe4, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xd8, 0xff,
+0xce, 0xff, 0xce, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf8, 0xff,
+0xfc, 0xff, 0xfe, 0xff, 0x04, 0x00, 0xfa, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xea, 0xff,
+0xe2, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xee, 0xff, 0xe0, 0xff, 0xd8, 0xff, 0xd8, 0xff,
+0xd6, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x0a, 0x00,
+0x12, 0x00, 0x18, 0x00, 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xde, 0xff,
+0xc4, 0xff, 0xba, 0xff, 0xb2, 0xff, 0xbc, 0xff, 0xb4, 0xff, 0xbe, 0xff, 0xde, 0xff, 0xf6, 0xff,
+0x0a, 0x00, 0x20, 0x00, 0x30, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x30, 0x00, 0x08, 0x00,
+0xf2, 0xff, 0xc2, 0xff, 0xaa, 0xff, 0x98, 0xff, 0x7c, 0xff, 0x90, 0xff, 0x9e, 0xff, 0xa4, 0xff,
+0xd4, 0xff, 0xf0, 0xff, 0x10, 0x00, 0x44, 0x00, 0x58, 0x00, 0x68, 0x00, 0x62, 0x00, 0x52, 0x00,
+0x3e, 0x00, 0x0a, 0x00, 0xea, 0xff, 0xb6, 0xff, 0x80, 0xff, 0x78, 0xff, 0x6e, 0xff, 0x72, 0xff,
+0x90, 0xff, 0xac, 0xff, 0xde, 0xff, 0x10, 0x00, 0x36, 0x00, 0x6e, 0x00, 0x8c, 0x00, 0x96, 0x00,
+0x84, 0x00, 0x6e, 0x00, 0x4a, 0x00, 0x06, 0x00, 0xdc, 0xff, 0xac, 0xff, 0x70, 0xff, 0x58, 0xff,
+0x4e, 0xff, 0x60, 0xff, 0x82, 0xff, 0xae, 0xff, 0xe2, 0xff, 0x1c, 0x00, 0x52, 0x00, 0x82, 0x00,
+0x98, 0x00, 0xa4, 0x00, 0x9e, 0x00, 0x6c, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xb6, 0xff, 0x80, 0xff,
+0x54, 0xff, 0x30, 0xff, 0x30, 0xff, 0x4c, 0xff, 0x78, 0xff, 0xc0, 0xff, 0xf2, 0xff, 0x1c, 0x00,
+0x64, 0x00, 0x94, 0x00, 0xac, 0x00, 0xb2, 0x00, 0x90, 0x00, 0x5e, 0x00, 0x16, 0x00, 0xdc, 0xff,
+0xac, 0xff, 0x5e, 0xff, 0x44, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x5c, 0xff, 0x86, 0xff, 0xcc, 0xff,
+0x08, 0x00, 0x38, 0x00, 0x7e, 0x00, 0xa2, 0x00, 0xc0, 0x00, 0xba, 0x00, 0x90, 0x00, 0x48, 0x00,
+0x04, 0x00, 0xda, 0xff, 0x9c, 0xff, 0x5a, 0xff, 0x3e, 0xff, 0x28, 0xff, 0x36, 0xff, 0x5e, 0xff,
+0x9c, 0xff, 0xd0, 0xff, 0x06, 0x00, 0x48, 0x00, 0x80, 0x00, 0xae, 0x00, 0xb2, 0x00, 0x98, 0x00,
+0x74, 0x00, 0x34, 0x00, 0xee, 0xff, 0xb0, 0xff, 0x7e, 0xff, 0x58, 0xff, 0x38, 0xff, 0x30, 0xff,
+0x3a, 0xff, 0x76, 0xff, 0xa6, 0xff, 0xdc, 0xff, 0x20, 0x00, 0x58, 0x00, 0x8e, 0x00, 0xa2, 0x00,
+0x9e, 0x00, 0x86, 0x00, 0x4e, 0x00, 0x1a, 0x00, 0xec, 0xff, 0xb6, 0xff, 0x8a, 0xff, 0x66, 0xff,
+0x54, 0xff, 0x5c, 0xff, 0x76, 0xff, 0x90, 0xff, 0xc2, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x60, 0x00,
+0x76, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x66, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0xd8, 0xff, 0x98, 0xff,
+0x72, 0xff, 0x70, 0xff, 0x86, 0xff, 0xaa, 0xff, 0xde, 0xff, 0x0a, 0x00, 0x2e, 0x00, 0x44, 0x00,
+0x58, 0x00, 0x60, 0x00, 0x52, 0x00, 0x42, 0x00, 0x20, 0x00, 0x08, 0x00, 0xe4, 0xff, 0xc6, 0xff,
+0xb0, 0xff, 0xa8, 0xff, 0xb0, 0xff, 0xa2, 0xff, 0xac, 0xff, 0xd0, 0xff, 0xee, 0xff, 0x0e, 0x00,
+0x1c, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x36, 0x00, 0x30, 0x00, 0x22, 0x00, 0x10, 0x00, 0xfc, 0xff,
+0xf6, 0xff, 0xde, 0xff, 0xca, 0xff, 0xd0, 0xff, 0xbe, 0xff, 0xc4, 0xff, 0xca, 0xff, 0xd6, 0xff,
+0xfa, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x08, 0x00, 0x12, 0x00, 0x0c, 0x00, 0x04, 0x00,
+0x0a, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xe4, 0xff,
+0xe6, 0xff, 0xe2, 0xff, 0xde, 0xff, 0xec, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xea, 0xff, 0xe0, 0xff,
+0xf4, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x08, 0x00,
+0x08, 0x00, 0xf4, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xc8, 0xff, 0xc2, 0xff, 0xb2, 0xff, 0xac, 0xff,
+0xb8, 0xff, 0xbc, 0xff, 0xcc, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0x10, 0x00, 0x22, 0x00, 0x28, 0x00,
+0x26, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x0a, 0x00, 0xf8, 0xff, 0xd8, 0xff, 0xb4, 0xff, 0x98, 0xff,
+0x8a, 0xff, 0x82, 0xff, 0x98, 0xff, 0xaa, 0xff, 0xc0, 0xff, 0xf0, 0xff, 0x14, 0x00, 0x32, 0x00,
+0x56, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x4c, 0x00, 0x34, 0x00, 0x1e, 0x00, 0xfa, 0xff, 0xd2, 0xff,
+0x9e, 0xff, 0x84, 0xff, 0x6e, 0xff, 0x66, 0xff, 0x7c, 0xff, 0x92, 0xff, 0xca, 0xff, 0x08, 0x00,
+0x26, 0x00, 0x58, 0x00, 0x6c, 0x00, 0x7c, 0x00, 0x82, 0x00, 0x62, 0x00, 0x4e, 0x00, 0x20, 0x00,
+0xec, 0xff, 0xb2, 0xff, 0x76, 0xff, 0x60, 0xff, 0x46, 0xff, 0x3c, 0xff, 0x5c, 0xff, 0x8e, 0xff,
+0xd0, 0xff, 0x02, 0x00, 0x3e, 0x00, 0x60, 0x00, 0x8a, 0x00, 0xa6, 0x00, 0x9c, 0x00, 0x88, 0x00,
+0x56, 0x00, 0x20, 0x00, 0xec, 0xff, 0xa6, 0xff, 0x74, 0xff, 0x48, 0xff, 0x3c, 0xff, 0x3c, 0xff,
+0x52, 0xff, 0xa2, 0xff, 0xd8, 0xff, 0x10, 0x00, 0x4c, 0x00, 0x82, 0x00, 0xac, 0x00, 0xbc, 0x00,
+0xa4, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x0c, 0x00, 0xdc, 0xff, 0x90, 0xff, 0x52, 0xff, 0x3e, 0xff,
+0x20, 0xff, 0x3c, 0xff, 0x68, 0xff, 0xa0, 0xff, 0xe6, 0xff, 0x06, 0x00, 0x4e, 0x00, 0x8a, 0x00,
+0xa2, 0x00, 0xc2, 0x00, 0xae, 0x00, 0x7e, 0x00, 0x3a, 0x00, 0xee, 0xff, 0xc8, 0xff, 0x76, 0xff,
+0x50, 0xff, 0x3a, 0xff, 0x2a, 0xff, 0x48, 0xff, 0x68, 0xff, 0xb0, 0xff, 0xf6, 0xff, 0x18, 0x00,
+0x5e, 0x00, 0x92, 0x00, 0xaa, 0x00, 0xb2, 0x00, 0xa2, 0x00, 0x6c, 0x00, 0x24, 0x00, 0xe6, 0xff,
+0xac, 0xff, 0x78, 0xff, 0x48, 0xff, 0x2a, 0xff, 0x36, 0xff, 0x52, 0xff, 0x8a, 0xff, 0xbc, 0xff,
+0xf6, 0xff, 0x2a, 0x00, 0x5c, 0x00, 0x90, 0x00, 0x9c, 0x00, 0x9a, 0x00, 0x78, 0x00, 0x4a, 0x00,
+0x1c, 0x00, 0xce, 0xff, 0xa0, 0xff, 0x6e, 0xff, 0x4a, 0xff, 0x46, 0xff, 0x48, 0xff, 0x78, 0xff,
+0x9c, 0xff, 0xd0, 0xff, 0x08, 0x00, 0x38, 0x00, 0x58, 0x00, 0x7e, 0x00, 0x96, 0x00, 0x84, 0x00,
+0x60, 0x00, 0x2c, 0x00, 0xf0, 0xff, 0xcc, 0xff, 0x9e, 0xff, 0x7c, 0xff, 0x6e, 0xff, 0x58, 0xff,
+0x72, 0xff, 0x90, 0xff, 0xb8, 0xff, 0xec, 0xff, 0x16, 0x00, 0x40, 0x00, 0x5e, 0x00, 0x6a, 0x00,
+0x6c, 0x00, 0x5a, 0x00, 0x42, 0x00, 0x10, 0x00, 0xee, 0xff, 0xce, 0xff, 0x98, 0xff, 0x90, 0xff,
+0x84, 0xff, 0x7a, 0xff, 0x94, 0xff, 0xac, 0xff, 0xce, 0xff, 0xf2, 0xff, 0x0a, 0x00, 0x2c, 0x00,
+0x3c, 0x00, 0x50, 0x00, 0x4e, 0x00, 0x40, 0x00, 0x1c, 0x00, 0xfc, 0xff, 0xe2, 0xff, 0xce, 0xff,
+0xbe, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xca, 0xff, 0xe2, 0xff, 0xfe, 0xff,
+0x0a, 0x00, 0x1e, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x22, 0x00, 0x22, 0x00, 0xfa, 0xff,
+0xde, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xd8, 0xff,
+0xe6, 0xff, 0xea, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xf8, 0xff, 0xfc, 0xff,
+0x00, 0x00, 0xf4, 0xff, 0xf6, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
+0x00, 0x00, 0xf8, 0xff, 0xec, 0xff, 0xe2, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xce, 0xff, 0xd4, 0xff,
+0xd2, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0x1a, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x2c, 0x00,
+0x30, 0x00, 0x28, 0x00, 0x0e, 0x00, 0x04, 0x00, 0xe0, 0xff, 0xc2, 0xff, 0xac, 0xff, 0xa6, 0xff,
+0xa8, 0xff, 0xaa, 0xff, 0xc0, 0xff, 0xd6, 0xff, 0xec, 0xff, 0x08, 0x00, 0x22, 0x00, 0x44, 0x00,
+0x48, 0x00, 0x40, 0x00, 0x40, 0x00, 0x1c, 0x00, 0x02, 0x00, 0xf2, 0xff, 0xca, 0xff, 0xa6, 0xff,
+0x9c, 0xff, 0x7e, 0xff, 0x84, 0xff, 0x98, 0xff, 0xa2, 0xff, 0xd2, 0xff, 0xfa, 0xff, 0x1a, 0x00,
+0x4c, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x4c, 0x00, 0x4a, 0x00, 0x30, 0x00, 0x0c, 0x00, 0xf8, 0xff,
+0xba, 0xff, 0x92, 0xff, 0x7a, 0xff, 0x6a, 0xff, 0x74, 0xff, 0x8c, 0xff, 0xa8, 0xff, 0xd0, 0xff,
+0x00, 0x00, 0x30, 0x00, 0x56, 0x00, 0x72, 0x00, 0x7c, 0x00, 0x76, 0x00, 0x5a, 0x00, 0x32, 0x00,
+0xfe, 0xff, 0xd4, 0xff, 0xa0, 0xff, 0x7a, 0xff, 0x6a, 0xff, 0x48, 0xff, 0x50, 0xff, 0x78, 0xff,
+0xa6, 0xff, 0xd4, 0xff, 0x0c, 0x00, 0x54, 0x00, 0x76, 0x00, 0x96, 0x00, 0xa0, 0x00, 0x80, 0x00,
+0x60, 0x00, 0x20, 0x00, 0xfa, 0xff, 0xd0, 0xff, 0x8c, 0xff, 0x5e, 0xff, 0x3e, 0xff, 0x2e, 0xff,
+0x4c, 0xff, 0x7a, 0xff, 0xb8, 0xff, 0xfa, 0xff, 0x30, 0x00, 0x74, 0x00, 0x9e, 0x00, 0xba, 0x00,
+0xbc, 0x00, 0xa0, 0x00, 0x6a, 0x00, 0x22, 0x00, 0xea, 0xff, 0xc0, 0xff, 0x66, 0xff, 0x46, 0xff,
+0x28, 0xff, 0x1a, 0xff, 0x4c, 0xff, 0x84, 0xff, 0xd0, 0xff, 0x0a, 0x00, 0x44, 0x00, 0x8c, 0x00,
+0xb0, 0x00, 0xcc, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x62, 0x00, 0x10, 0x00, 0xd8, 0xff, 0x9c, 0xff,
+0x5a, 0xff, 0x2a, 0xff, 0x1e, 0xff, 0x20, 0xff, 0x48, 0xff, 0x90, 0xff, 0xdc, 0xff, 0x20, 0x00,
+0x5c, 0x00, 0x90, 0x00, 0xb4, 0x00, 0xc4, 0x00, 0xb6, 0x00, 0x82, 0x00, 0x48, 0x00, 0x10, 0x00,
+0xc4, 0xff, 0x94, 0xff, 0x56, 0xff, 0x28, 0xff, 0x26, 0xff, 0x40, 0xff, 0x6e, 0xff, 0xaa, 0xff,
+0xf8, 0xff, 0x2e, 0x00, 0x60, 0x00, 0x9a, 0x00, 0xb4, 0x00, 0xac, 0x00, 0x90, 0x00, 0x64, 0x00,
+0x28, 0x00, 0xf8, 0xff, 0xc0, 0xff, 0x82, 0xff, 0x6c, 0xff, 0x46, 0xff, 0x48, 0xff, 0x64, 0xff,
+0x80, 0xff, 0xba, 0xff, 0xf4, 0xff, 0x2a, 0x00, 0x52, 0x00, 0x6c, 0x00, 0x7a, 0x00, 0x7a, 0x00,
+0x5a, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0xea, 0xff, 0xc2, 0xff, 0x90, 0xff, 0x82, 0xff, 0x76, 0xff,
+0x72, 0xff, 0x86, 0xff, 0xa2, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0x14, 0x00, 0x3e, 0x00, 0x4a, 0x00,
+0x52, 0x00, 0x50, 0x00, 0x3c, 0x00, 0x22, 0x00, 0x04, 0x00, 0xea, 0xff, 0xd4, 0xff, 0xba, 0xff,
+0xaa, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0xa8, 0xff, 0xc6, 0xff, 0xe2, 0xff, 0xf4, 0xff, 0x06, 0x00,
+0x1c, 0x00, 0x16, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0xfa, 0xff, 0xee, 0xff,
+0xda, 0xff, 0xca, 0xff, 0xd4, 0xff, 0xcc, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd0, 0xff, 0xe6, 0xff,
+0xf8, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xee, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x06, 0x00,
+0xfc, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0x02, 0x00, 0xf8, 0xff, 0xfa, 0xff, 0xf0, 0xff,
+0xe8, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xe8, 0xff,
+0xf6, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x04, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x0e, 0x00, 0x22, 0x00,
+0x10, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xb8, 0xff, 0xb4, 0xff, 0xba, 0xff,
+0xbc, 0xff, 0xc8, 0xff, 0xe4, 0xff, 0xfc, 0xff, 0x12, 0x00, 0x28, 0x00, 0x34, 0x00, 0x3a, 0x00,
+0x36, 0x00, 0x2a, 0x00, 0x20, 0x00, 0x06, 0x00, 0xe8, 0xff, 0xce, 0xff, 0xa4, 0xff, 0xa2, 0xff,
+0x9a, 0xff, 0xa2, 0xff, 0xb0, 0xff, 0xc6, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x30, 0x00, 0x50, 0x00,
+0x5a, 0x00, 0x5c, 0x00, 0x52, 0x00, 0x44, 0x00, 0x20, 0x00, 0xfa, 0xff, 0xd6, 0xff, 0xa0, 0xff,
+0x86, 0xff, 0x78, 0xff, 0x6a, 0xff, 0x7e, 0xff, 0x92, 0xff, 0xc0, 0xff, 0xf0, 0xff, 0x12, 0x00,
+0x3c, 0x00, 0x62, 0x00, 0x72, 0x00, 0x74, 0x00, 0x6a, 0x00, 0x4e, 0x00, 0x1c, 0x00, 0xe8, 0xff,
+0xb6, 0xff, 0x7c, 0xff, 0x5e, 0xff, 0x52, 0xff, 0x4c, 0xff, 0x68, 0xff, 0x86, 0xff, 0xb6, 0xff,
+0xf2, 0xff, 0x24, 0x00, 0x58, 0x00, 0x82, 0x00, 0x9c, 0x00, 0x96, 0x00, 0x88, 0x00, 0x54, 0x00,
+0x1c, 0x00, 0xe4, 0xff, 0xae, 0xff, 0x76, 0xff, 0x42, 0xff, 0x38, 0xff, 0x40, 0xff, 0x4e, 0xff,
+0x94, 0xff, 0xc8, 0xff, 0xfc, 0xff, 0x2a, 0x00, 0x68, 0x00, 0x8e, 0x00, 0xa8, 0x00, 0xa6, 0x00,
+0x7c, 0x00, 0x4c, 0x00, 0xfe, 0xff, 0xcc, 0xff, 0x8c, 0xff, 0x54, 0xff, 0x38, 0xff, 0x2a, 0xff,
+0x34, 0xff, 0x56, 0xff, 0x90, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x4c, 0x00, 0x88, 0x00, 0xa2, 0x00,
+0xb8, 0x00, 0xa4, 0x00, 0x78, 0x00, 0x3a, 0x00, 0xfc, 0xff, 0xd4, 0xff, 0x86, 0xff, 0x5e, 0xff,
+0x36, 0xff, 0x2a, 0xff, 0x52, 0xff, 0x70, 0xff, 0xb0, 0xff, 0xf8, 0xff, 0x1c, 0x00, 0x5e, 0x00,
+0x98, 0x00, 0xb4, 0x00, 0xb0, 0x00, 0xa0, 0x00, 0x6e, 0x00, 0x22, 0x00, 0x00, 0x00, 0xbe, 0xff,
+0x80, 0xff, 0x5a, 0xff, 0x36, 0xff, 0x36, 0xff, 0x52, 0xff, 0x84, 0xff, 0xb8, 0xff, 0xfe, 0xff,
+0x28, 0x00, 0x58, 0x00, 0x96, 0x00, 0xa6, 0x00, 0xa2, 0x00, 0x86, 0x00, 0x56, 0x00, 0x26, 0x00,
+0xe8, 0xff, 0xb4, 0xff, 0x86, 0xff, 0x60, 0xff, 0x46, 0xff, 0x48, 0xff, 0x7a, 0xff, 0x9c, 0xff,
+0xd0, 0xff, 0x00, 0x00, 0x3e, 0x00, 0x60, 0x00, 0x80, 0x00, 0xa0, 0x00, 0x90, 0x00, 0x72, 0x00,
+0x58, 0x00, 0x14, 0x00, 0xdc, 0xff, 0xbc, 0xff, 0x90, 0xff, 0x78, 0xff, 0x6c, 0xff, 0x70, 0xff,
+0x86, 0xff, 0xa0, 0xff, 0xd2, 0xff, 0x00, 0x00, 0x2e, 0x00, 0x4c, 0x00, 0x60, 0x00, 0x68, 0x00,
+0x5c, 0x00, 0x4a, 0x00, 0x24, 0x00, 0x02, 0x00, 0xd8, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0x8c, 0xff,
+0x86, 0xff, 0x90, 0xff, 0x9a, 0xff, 0xba, 0xff, 0xdc, 0xff, 0xfa, 0xff, 0x1c, 0x00, 0x32, 0x00,
+0x3e, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x0a, 0x00, 0xfe, 0xff, 0xe8, 0xff, 0xd0, 0xff,
+0xce, 0xff, 0xbc, 0xff, 0xba, 0xff, 0xb2, 0xff, 0xc6, 0xff, 0xd8, 0xff, 0xf0, 0xff, 0x02, 0x00,
+0x08, 0x00, 0x1c, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x12, 0x00, 0x04, 0x00, 0xf4, 0xff,
+0xf4, 0xff, 0xe6, 0xff, 0xd6, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xe2, 0xff,
+0xda, 0xff, 0xe0, 0xff, 0xec, 0xff, 0xea, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xf0, 0xff, 0x00, 0x00,
+0xf6, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xf6, 0xff,
+0xf2, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xdc, 0xff, 0xe0, 0xff, 0xdc, 0xff,
+0xe2, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x0e, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x20, 0x00, 0x26, 0x00,
+0x2a, 0x00, 0x10, 0x00, 0xfe, 0xff, 0xee, 0xff, 0xd2, 0xff, 0xbe, 0xff, 0xb0, 0xff, 0xb4, 0xff,
+0xae, 0xff, 0xb0, 0xff, 0xc2, 0xff, 0xde, 0xff, 0xfc, 0xff, 0x1e, 0x00, 0x42, 0x00, 0x40, 0x00,
+0x50, 0x00, 0x4a, 0x00, 0x3e, 0x00, 0x24, 0x00, 0x02, 0x00, 0xe0, 0xff, 0xb8, 0xff, 0x94, 0xff,
+0x88, 0xff, 0x80, 0xff, 0x88, 0xff, 0x92, 0xff, 0xbc, 0xff, 0xee, 0xff, 0x12, 0x00, 0x48, 0x00,
+0x6a, 0x00, 0x76, 0x00, 0x88, 0x00, 0x7a, 0x00, 0x5a, 0x00, 0x30, 0x00, 0xfc, 0xff, 0xc6, 0xff,
+0x9c, 0xff, 0x7c, 0xff, 0x5c, 0xff, 0x60, 0xff, 0x64, 0xff, 0x86, 0xff, 0xb8, 0xff, 0xf6, 0xff,
+0x30, 0x00, 0x6a, 0x00, 0x84, 0x00, 0x96, 0x00, 0x96, 0x00, 0x76, 0x00, 0x46, 0x00, 0x1a, 0x00,
+0xe2, 0xff, 0xa6, 0xff, 0x6a, 0xff, 0x3c, 0xff, 0x26, 0xff, 0x30, 0xff, 0x5a, 0xff, 0x8e, 0xff,
+0xca, 0xff, 0x0e, 0x00, 0x50, 0x00, 0x84, 0x00, 0xa8, 0x00, 0xae, 0x00, 0xa4, 0x00, 0x80, 0x00,
+0x40, 0x00, 0x0c, 0x00, 0xcc, 0xff, 0x86, 0xff, 0x58, 0xff, 0x2a, 0xff, 0x22, 0xff, 0x42, 0xff,
+0x6a, 0xff, 0xb4, 0xff, 0xee, 0xff, 0x24, 0x00, 0x64, 0x00, 0x92, 0x00, 0xb0, 0x00, 0xb4, 0x00,
+0xa4, 0x00, 0x76, 0x00, 0x30, 0x00, 0xf2, 0xff, 0xb8, 0xff, 0x70, 0xff, 0x44, 0xff, 0x2e, 0xff,
+0x26, 0xff, 0x46, 0xff, 0x72, 0xff, 0xb2, 0xff, 0xf0, 0xff, 0x22, 0x00, 0x68, 0x00, 0x94, 0x00,
+0xa8, 0x00, 0xa6, 0x00, 0x90, 0x00, 0x54, 0x00, 0x12, 0x00, 0xe4, 0xff, 0xaa, 0xff, 0x6e, 0xff,
+0x42, 0xff, 0x2c, 0xff, 0x34, 0xff, 0x58, 0xff, 0x86, 0xff, 0xca, 0xff, 0x0a, 0x00, 0x3a, 0x00,
+0x72, 0x00, 0x9e, 0x00, 0xae, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x54, 0x00, 0x16, 0x00, 0xda, 0xff,
+0xa8, 0xff, 0x6e, 0xff, 0x40, 0xff, 0x40, 0xff, 0x4e, 0xff, 0x6c, 0xff, 0x9e, 0xff, 0xdc, 0xff,
+0x14, 0x00, 0x3e, 0x00, 0x70, 0x00, 0x8e, 0x00, 0x98, 0x00, 0x8c, 0x00, 0x66, 0x00, 0x3e, 0x00,
+0x00, 0x00, 0xcc, 0xff, 0x98, 0xff, 0x78, 0xff, 0x5e, 0xff, 0x52, 0xff, 0x64, 0xff, 0x7e, 0xff,
+0xae, 0xff, 0xe6, 0xff, 0x0e, 0x00, 0x46, 0x00, 0x5c, 0x00, 0x72, 0x00, 0x80, 0x00, 0x6c, 0x00,
+0x54, 0x00, 0x26, 0x00, 0x00, 0x00, 0xc6, 0xff, 0xa8, 0xff, 0x98, 0xff, 0x7c, 0xff, 0x84, 0xff,
+0x8a, 0xff, 0xaa, 0xff, 0xd0, 0xff, 0xf6, 0xff, 0x20, 0x00, 0x32, 0x00, 0x4c, 0x00, 0x5a, 0x00,
+0x52, 0x00, 0x4e, 0x00, 0x2e, 0x00, 0x10, 0x00, 0xf8, 0xff, 0xd2, 0xff, 0xb4, 0xff, 0xa4, 0xff,
+0x9a, 0xff, 0x96, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xca, 0xff, 0xea, 0xff, 0x00, 0x00, 0x1c, 0x00,
+0x26, 0x00, 0x26, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xdc, 0xff,
+0xc2, 0xff, 0xc6, 0xff, 0xc0, 0xff, 0xba, 0xff, 0xc6, 0xff, 0xce, 0xff, 0xda, 0xff, 0xe8, 0xff,
+0xf6, 0xff, 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x18, 0x00, 0x14, 0x00, 0x06, 0x00,
+0xfe, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xd8, 0xff,
+0xce, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xde, 0xff, 0xe6, 0xff, 0xf2, 0xff, 0xfa, 0xff,
+0xfc, 0xff, 0xfc, 0xff, 0x12, 0x00, 0x16, 0x00, 0x18, 0x00, 0x16, 0x00, 0x14, 0x00, 0x00, 0x00,
+0xea, 0xff, 0xdc, 0xff, 0xc4, 0xff, 0xc0, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xbc, 0xff, 0xc0, 0xff,
+0xc8, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0x12, 0x00, 0x32, 0x00, 0x3c, 0x00, 0x4a, 0x00, 0x40, 0x00,
+0x36, 0x00, 0x24, 0x00, 0x06, 0x00, 0xf0, 0xff, 0xc8, 0xff, 0xac, 0xff, 0x9e, 0xff, 0x92, 0xff,
+0x98, 0xff, 0xa2, 0xff, 0xb6, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0x16, 0x00, 0x42, 0x00, 0x58, 0x00,
+0x66, 0x00, 0x50, 0x00, 0x4e, 0x00, 0x34, 0x00, 0x08, 0x00, 0xe4, 0xff, 0xb2, 0xff, 0x94, 0xff,
+0x78, 0xff, 0x66, 0xff, 0x6e, 0xff, 0x94, 0xff, 0xa6, 0xff, 0xd6, 0xff, 0x04, 0x00, 0x30, 0x00,
+0x6c, 0x00, 0x86, 0x00, 0x8a, 0x00, 0x7e, 0x00, 0x5c, 0x00, 0x3c, 0x00, 0x08, 0x00, 0xd6, 0xff,
+0xa0, 0xff, 0x74, 0xff, 0x5c, 0xff, 0x50, 0xff, 0x5c, 0xff, 0x86, 0xff, 0xac, 0xff, 0xec, 0xff,
+0x28, 0x00, 0x56, 0x00, 0x8c, 0x00, 0x9c, 0x00, 0xa2, 0x00, 0x8a, 0x00, 0x5e, 0x00, 0x2a, 0x00,
+0xf4, 0xff, 0xb2, 0xff, 0x7e, 0xff, 0x50, 0xff, 0x2e, 0xff, 0x3a, 0xff, 0x4a, 0xff, 0x80, 0xff,
+0xbe, 0xff, 0xf8, 0xff, 0x2e, 0x00, 0x68, 0x00, 0x98, 0x00, 0xae, 0x00, 0xa6, 0x00, 0x88, 0x00,
+0x54, 0x00, 0x10, 0x00, 0xda, 0xff, 0x94, 0xff, 0x62, 0xff, 0x3e, 0xff, 0x22, 0xff, 0x36, 0xff,
+0x54, 0xff, 0x8e, 0xff, 0xde, 0xff, 0x12, 0x00, 0x48, 0x00, 0x82, 0x00, 0xae, 0x00, 0xb6, 0x00,
+0xaa, 0x00, 0x80, 0x00, 0x4e, 0x00, 0x02, 0x00, 0xce, 0xff, 0x90, 0xff, 0x52, 0xff, 0x3c, 0xff,
+0x20, 0xff, 0x38, 0xff, 0x60, 0xff, 0x96, 0xff, 0xe0, 0xff, 0x16, 0x00, 0x4c, 0x00, 0x8a, 0x00,
+0xac, 0x00, 0xb2, 0x00, 0x9a, 0x00, 0x72, 0x00, 0x32, 0x00, 0xf4, 0xff, 0xc0, 0xff, 0x7e, 0xff,
+0x4e, 0xff, 0x36, 0xff, 0x34, 0xff, 0x3c, 0xff, 0x6a, 0xff, 0xac, 0xff, 0xe2, 0xff, 0x2a, 0x00,
+0x5c, 0x00, 0x8e, 0x00, 0xac, 0x00, 0xa4, 0x00, 0x8a, 0x00, 0x60, 0x00, 0x2c, 0x00, 0xea, 0xff,
+0xb6, 0xff, 0x90, 0xff, 0x60, 0xff, 0x4a, 0xff, 0x44, 0xff, 0x68, 0xff, 0x92, 0xff, 0xcc, 0xff,
+0x06, 0x00, 0x3c, 0x00, 0x66, 0x00, 0x82, 0x00, 0x8a, 0x00, 0x8c, 0x00, 0x6c, 0x00, 0x46, 0x00,
+0x16, 0x00, 0xdc, 0xff, 0xba, 0xff, 0x8c, 0xff, 0x6a, 0xff, 0x60, 0xff, 0x70, 0xff, 0x88, 0xff,
+0xa2, 0xff, 0xde, 0xff, 0x04, 0x00, 0x30, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x60, 0x00, 0x5c, 0x00,
+0x4a, 0x00, 0x28, 0x00, 0x02, 0x00, 0xe4, 0xff, 0xc0, 0xff, 0x9c, 0xff, 0xa0, 0xff, 0x96, 0xff,
+0x9c, 0xff, 0xa8, 0xff, 0xc0, 0xff, 0xe8, 0xff, 0x08, 0x00, 0x22, 0x00, 0x32, 0x00, 0x3a, 0x00,
+0x36, 0x00, 0x36, 0x00, 0x28, 0x00, 0x12, 0x00, 0x00, 0x00, 0xea, 0xff, 0xd8, 0xff, 0xba, 0xff,
+0xc4, 0xff, 0xc2, 0xff, 0xba, 0xff, 0xc2, 0xff, 0xd8, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x00, 0x00,
+0x0a, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x06, 0x00, 0xfe, 0xff, 0xee, 0xff, 0xf2, 0xff,
+0xea, 0xff, 0xd4, 0xff, 0xe2, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xf0, 0xff,
+0xd6, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf6, 0xff,
+0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf2, 0xff, 0xf2, 0xff,
+0xf0, 0xff, 0xd6, 0xff, 0xd0, 0xff, 0xc4, 0xff, 0xca, 0xff, 0xd6, 0xff, 0xca, 0xff, 0xda, 0xff,
+0xea, 0xff, 0xf8, 0xff, 0x00, 0x00, 0x16, 0x00, 0x24, 0x00, 0x24, 0x00, 0x26, 0x00, 0x10, 0x00,
+0x0c, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xd2, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xa2, 0xff, 0xa2, 0xff,
+0xb0, 0xff, 0xc4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x44, 0x00, 0x44, 0x00, 0x50, 0x00,
+0x3a, 0x00, 0x3e, 0x00, 0x20, 0x00, 0xfa, 0xff, 0xdc, 0xff, 0xb0, 0xff, 0x98, 0xff, 0x8a, 0xff,
+0x86, 0xff, 0x98, 0xff, 0xa2, 0xff, 0xd4, 0xff, 0xfa, 0xff, 0x1a, 0x00, 0x4c, 0x00, 0x60, 0x00,
+0x70, 0x00, 0x70, 0x00, 0x60, 0x00, 0x4e, 0x00, 0x24, 0x00, 0xec, 0xff, 0xbc, 0xff, 0x92, 0xff,
+0x78, 0xff, 0x64, 0xff, 0x64, 0xff, 0x7c, 0xff, 0xa0, 0xff, 0xd2, 0xff, 0x06, 0x00, 0x34, 0x00,
+0x5e, 0x00, 0x7c, 0x00, 0x94, 0x00, 0x8e, 0x00, 0x76, 0x00, 0x4e, 0x00, 0x10, 0x00, 0xd6, 0xff,
+0xa2, 0xff, 0x6c, 0xff, 0x4a, 0xff, 0x3c, 0xff, 0x46, 0xff, 0x66, 0xff, 0x9c, 0xff, 0xd4, 0xff,
+0x12, 0x00, 0x48, 0x00, 0x80, 0x00, 0x9c, 0x00, 0xb2, 0x00, 0xae, 0x00, 0x86, 0x00, 0x4c, 0x00,
+0x00, 0x00, 0xc8, 0xff, 0x88, 0xff, 0x46, 0xff, 0x2a, 0xff, 0x20, 0xff, 0x2e, 0xff, 0x5a, 0xff,
+0xa0, 0xff, 0xe2, 0xff, 0x1a, 0x00, 0x5c, 0x00, 0x96, 0x00, 0xb6, 0x00, 0xc4, 0x00, 0xa8, 0x00,
+0x84, 0x00, 0x36, 0x00, 0xe8, 0xff, 0xb2, 0xff, 0x68, 0xff, 0x2e, 0xff, 0x18, 0xff, 0x0c, 0xff,
+0x2e, 0xff, 0x5a, 0xff, 0xa8, 0xff, 0xf4, 0xff, 0x1e, 0x00, 0x68, 0x00, 0x98, 0x00, 0xba, 0x00,
+0xba, 0x00, 0xa0, 0x00, 0x66, 0x00, 0x16, 0x00, 0xd6, 0xff, 0xa2, 0xff, 0x58, 0xff, 0x2e, 0xff,
+0x12, 0xff, 0x1e, 0xff, 0x48, 0xff, 0x7a, 0xff, 0xc8, 0xff, 0x08, 0x00, 0x36, 0x00, 0x78, 0x00,
+0xaa, 0x00, 0xc4, 0x00, 0xba, 0x00, 0x98, 0x00, 0x54, 0x00, 0x0e, 0x00, 0xd4, 0xff, 0x9c, 0xff,
+0x68, 0xff, 0x3c, 0xff, 0x2a, 0xff, 0x36, 0xff, 0x5c, 0xff, 0x92, 0xff, 0xd2, 0xff, 0x10, 0x00,
+0x48, 0x00, 0x72, 0x00, 0x9a, 0x00, 0xac, 0x00, 0x9a, 0x00, 0x76, 0x00, 0x40, 0x00, 0x04, 0x00,
+0xca, 0xff, 0x8c, 0xff, 0x70, 0xff, 0x54, 0xff, 0x4c, 0xff, 0x60, 0xff, 0x78, 0xff, 0xa4, 0xff,
+0xe2, 0xff, 0x18, 0x00, 0x40, 0x00, 0x64, 0x00, 0x7e, 0x00, 0x84, 0x00, 0x68, 0x00, 0x58, 0x00,
+0x2c, 0x00, 0xfa, 0xff, 0xcc, 0xff, 0xa2, 0xff, 0x94, 0xff, 0x7c, 0xff, 0x80, 0xff, 0x90, 0xff,
+0xa2, 0xff, 0xd0, 0xff, 0xf4, 0xff, 0x10, 0x00, 0x3e, 0x00, 0x4c, 0x00, 0x56, 0x00, 0x4a, 0x00,
+0x48, 0x00, 0x32, 0x00, 0x0a, 0x00, 0xf0, 0xff, 0xda, 0xff, 0xb8, 0xff, 0xb0, 0xff, 0xa8, 0xff,
+0xaa, 0xff, 0xb2, 0xff, 0xc4, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0x00, 0x00, 0x1e, 0x00, 0x18, 0x00,
+0x22, 0x00, 0x26, 0x00, 0x14, 0x00, 0x0a, 0x00, 0xfc, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xde, 0xff,
+0xde, 0xff, 0xda, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xf8, 0xff,
+0xf2, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff,
+0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xf0, 0xff, 0xe4, 0xff, 0xe0, 0xff,
+0xe2, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xce, 0xff, 0xc6, 0xff, 0xd4, 0xff, 0xe0, 0xff, 0xe4, 0xff,
+0xfc, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x1e, 0x00, 0x1a, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+0xf2, 0xff, 0xd6, 0xff, 0xc6, 0xff, 0xae, 0xff, 0xaa, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xc0, 0xff,
+0xd6, 0xff, 0xf0, 0xff, 0x02, 0x00, 0x28, 0x00, 0x36, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x32, 0x00,
+0x28, 0x00, 0x04, 0x00, 0xf8, 0xff, 0xd2, 0xff, 0xb2, 0xff, 0xa0, 0xff, 0x88, 0xff, 0x8c, 0xff,
+0x96, 0xff, 0xa4, 0xff, 0xcc, 0xff, 0xf2, 0xff, 0x14, 0x00, 0x30, 0x00, 0x54, 0x00, 0x60, 0x00,
+0x52, 0x00, 0x44, 0x00, 0x34, 0x00, 0x0e, 0x00, 0xe4, 0xff, 0xbc, 0xff, 0x9a, 0xff, 0x7a, 0xff,
+0x68, 0xff, 0x66, 0xff, 0x8c, 0xff, 0xa0, 0xff, 0xc6, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x5c, 0x00,
+0x76, 0x00, 0x88, 0x00, 0x7a, 0x00, 0x6e, 0x00, 0x42, 0x00, 0x10, 0x00, 0xe0, 0xff, 0xae, 0xff,
+0x7c, 0xff, 0x5e, 0xff, 0x54, 0xff, 0x58, 0xff, 0x7c, 0xff, 0xa8, 0xff, 0xda, 0xff, 0x20, 0x00,
+0x54, 0x00, 0x82, 0x00, 0x96, 0x00, 0x9e, 0x00, 0x94, 0x00, 0x64, 0x00, 0x36, 0x00, 0x04, 0x00,
+0xca, 0xff, 0x8c, 0xff, 0x58, 0xff, 0x3a, 0xff, 0x3e, 0xff, 0x4c, 0xff, 0x70, 0xff, 0xb4, 0xff,
+0xf0, 0xff, 0x28, 0x00, 0x66, 0x00, 0x90, 0x00, 0xaa, 0x00, 0xb0, 0x00, 0x8e, 0x00, 0x6c, 0x00,
+0x24, 0x00, 0xe6, 0xff, 0xb8, 0xff, 0x76, 0xff, 0x4e, 0xff, 0x30, 0xff, 0x2e, 0xff, 0x56, 0xff,
+0x8c, 0xff, 0xd8, 0xff, 0x02, 0x00, 0x3c, 0x00, 0x7a, 0x00, 0xa2, 0x00, 0xbc, 0x00, 0xa8, 0x00,
+0x88, 0x00, 0x58, 0x00, 0x04, 0x00, 0xd2, 0xff, 0xa8, 0xff, 0x68, 0xff, 0x3a, 0xff, 0x26, 0xff,
+0x3c, 0xff, 0x5c, 0xff, 0x96, 0xff, 0xe4, 0xff, 0x12, 0x00, 0x46, 0x00, 0x74, 0x00, 0x8e, 0x00,
+0xa4, 0x00, 0x94, 0x00, 0x6a, 0x00, 0x34, 0x00, 0xf0, 0xff, 0xb8, 0xff, 0x8c, 0xff, 0x4e, 0xff,
+0x3c, 0xff, 0x30, 0xff, 0x44, 0xff, 0x72, 0xff, 0x9c, 0xff, 0xe4, 0xff, 0x20, 0x00, 0x56, 0x00,
+0x7a, 0x00, 0x92, 0x00, 0x98, 0x00, 0x80, 0x00, 0x5e, 0x00, 0x2e, 0x00, 0xf4, 0xff, 0xb8, 0xff,
+0x82, 0xff, 0x5c, 0xff, 0x48, 0xff, 0x4e, 0xff, 0x6a, 0xff, 0x8e, 0xff, 0xc2, 0xff, 0xf6, 0xff,
+0x28, 0x00, 0x4c, 0x00, 0x6e, 0x00, 0x8c, 0x00, 0x82, 0x00, 0x68, 0x00, 0x42, 0x00, 0x02, 0x00,
+0xde, 0xff, 0xae, 0xff, 0x88, 0xff, 0x6c, 0xff, 0x5a, 0xff, 0x6a, 0xff, 0x86, 0xff, 0xa8, 0xff,
+0xd6, 0xff, 0x04, 0x00, 0x2a, 0x00, 0x52, 0x00, 0x5e, 0x00, 0x60, 0x00, 0x5c, 0x00, 0x4c, 0x00,
+0x1c, 0x00, 0xfc, 0xff, 0xe8, 0xff, 0xb0, 0xff, 0x9c, 0xff, 0x92, 0xff, 0x90, 0xff, 0xa4, 0xff,
+0xae, 0xff, 0xd6, 0xff, 0xf2, 0xff, 0x10, 0x00, 0x24, 0x00, 0x3a, 0x00, 0x48, 0x00, 0x44, 0x00,
+0x44, 0x00, 0x36, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xea, 0xff, 0xcc, 0xff, 0xb4, 0xff, 0xbc, 0xff,
+0xc4, 0xff, 0xca, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xee, 0xff, 0x04, 0x00, 0x0a, 0x00, 0x1c, 0x00,
+0x1a, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x14, 0x00, 0x0c, 0x00, 0xf8, 0xff, 0xee, 0xff, 0xec, 0xff,
+0xe8, 0xff, 0xe6, 0xff, 0xee, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xea, 0xff,
+0xe4, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0x04, 0x00,
+0x08, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x04, 0x00, 0xf2, 0xff, 0xe8, 0xff,
+0xd8, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xd0, 0xff, 0xe0, 0xff,
+0xf0, 0xff, 0x02, 0x00, 0x1a, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x2a, 0x00, 0x1a, 0x00, 0x14, 0x00,
+0x06, 0x00, 0xe8, 0xff, 0xca, 0xff, 0xb0, 0xff, 0x9e, 0xff, 0x9a, 0xff, 0xa2, 0xff, 0xaa, 0xff,
+0xbe, 0xff, 0xd4, 0xff, 0xea, 0xff, 0x0a, 0x00, 0x28, 0x00, 0x3a, 0x00, 0x4e, 0x00, 0x4a, 0x00,
+0x3c, 0x00, 0x22, 0x00, 0x02, 0x00, 0xe4, 0xff, 0xb6, 0xff, 0x9e, 0xff, 0x8e, 0xff, 0x7c, 0xff,
+0x7c, 0xff, 0x92, 0xff, 0xaa, 0xff, 0xce, 0xff, 0xfa, 0xff, 0x2c, 0x00, 0x5a, 0x00, 0x64, 0x00,
+0x6a, 0x00, 0x62, 0x00, 0x4c, 0x00, 0x2a, 0x00, 0xf8, 0xff, 0xd2, 0xff, 0x94, 0xff, 0x6e, 0xff,
+0x56, 0xff, 0x50, 0xff, 0x66, 0xff, 0x84, 0xff, 0xa6, 0xff, 0xdc, 0xff, 0x10, 0x00, 0x4a, 0x00,
+0x78, 0x00, 0x92, 0x00, 0x9a, 0x00, 0x84, 0x00, 0x50, 0x00, 0x22, 0x00, 0xf4, 0xff, 0xb8, 0xff,
+0x7a, 0xff, 0x4e, 0xff, 0x44, 0xff, 0x3e, 0xff, 0x5a, 0xff, 0x88, 0xff, 0xc4, 0xff, 0xfc, 0xff,
+0x3a, 0x00, 0x78, 0x00, 0xa6, 0x00, 0xb8, 0x00, 0xb4, 0x00, 0x92, 0x00, 0x56, 0x00, 0x18, 0x00,
+0xe0, 0xff, 0x98, 0xff, 0x62, 0xff, 0x44, 0xff, 0x2c, 0xff, 0x3e, 0xff, 0x64, 0xff, 0x9a, 0xff,
+0xe0, 0xff, 0x16, 0x00, 0x5c, 0x00, 0x92, 0x00, 0xc0, 0x00, 0xc8, 0x00, 0xa8, 0x00, 0x88, 0x00,
+0x3a, 0x00, 0xf6, 0xff, 0xc6, 0xff, 0x82, 0xff, 0x50, 0xff, 0x2e, 0xff, 0x20, 0xff, 0x46, 0xff,
+0x68, 0xff, 0xaa, 0xff, 0xf4, 0xff, 0x22, 0x00, 0x6a, 0x00, 0x98, 0x00, 0xae, 0x00, 0xbe, 0x00,
+0x96, 0x00, 0x6c, 0x00, 0x2e, 0x00, 0xf0, 0xff, 0xc0, 0xff, 0x76, 0xff, 0x52, 0xff, 0x3c, 0xff,
+0x38, 0xff, 0x54, 0xff, 0x82, 0xff, 0xb2, 0xff, 0xfc, 0xff, 0x2e, 0x00, 0x60, 0x00, 0x90, 0x00,
+0xa4, 0x00, 0xa2, 0x00, 0x8a, 0x00, 0x50, 0x00, 0x24, 0x00, 0xe4, 0xff, 0xae, 0xff, 0x86, 0xff,
+0x50, 0xff, 0x44, 0xff, 0x4e, 0xff, 0x5e, 0xff, 0x84, 0xff, 0xbc, 0xff, 0xfa, 0xff, 0x2e, 0x00,
+0x5a, 0x00, 0x88, 0x00, 0x86, 0x00, 0x7e, 0x00, 0x6a, 0x00, 0x38, 0x00, 0x0a, 0x00, 0xe4, 0xff,
+0xaa, 0xff, 0x7e, 0xff, 0x58, 0xff, 0x5a, 0xff, 0x60, 0xff, 0x72, 0xff, 0xa2, 0xff, 0xd6, 0xff,
+0x02, 0x00, 0x34, 0x00, 0x5a, 0x00, 0x68, 0x00, 0x70, 0x00, 0x68, 0x00, 0x50, 0x00, 0x32, 0x00,
+0x00, 0x00, 0xda, 0xff, 0xb0, 0xff, 0x90, 0xff, 0x84, 0xff, 0x80, 0xff, 0x92, 0xff, 0x92, 0xff,
+0xb8, 0xff, 0xe8, 0xff, 0x04, 0x00, 0x28, 0x00, 0x40, 0x00, 0x44, 0x00, 0x46, 0x00, 0x3a, 0x00,
+0x30, 0x00, 0x12, 0x00, 0xf0, 0xff, 0xde, 0xff, 0xc0, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xaa, 0xff,
+0xa4, 0xff, 0xb8, 0xff, 0xce, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x10, 0x00, 0x24, 0x00, 0x16, 0x00,
+0x20, 0x00, 0x28, 0x00, 0x0a, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xee, 0xff, 0xda, 0xff, 0xd4, 0xff,
+0xda, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xda, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xfa, 0xff,
+0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x02, 0x00, 0x06, 0x00, 0xfe, 0xff, 0xfe, 0xff,
+0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xe2, 0xff,
+0xd8, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xfc, 0xff,
+0x02, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x08, 0x00, 0xfc, 0xff,
+0xea, 0xff, 0xdc, 0xff, 0xc8, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xba, 0xff, 0xc6, 0xff, 0xe0, 0xff,
+0xf0, 0xff, 0x06, 0x00, 0x1a, 0x00, 0x44, 0x00, 0x52, 0x00, 0x3e, 0x00, 0x3c, 0x00, 0x30, 0x00,
+0x1a, 0x00, 0x00, 0x00, 0xec, 0xff, 0xb8, 0xff, 0x98, 0xff, 0x8c, 0xff, 0x88, 0xff, 0x98, 0xff,
+0xa0, 0xff, 0xca, 0xff, 0xf2, 0xff, 0x08, 0x00, 0x38, 0x00, 0x5e, 0x00, 0x62, 0x00, 0x68, 0x00,
+0x5c, 0x00, 0x40, 0x00, 0x16, 0x00, 0xf0, 0xff, 0xc0, 0xff, 0x90, 0xff, 0x6a, 0xff, 0x5a, 0xff,
+0x64, 0xff, 0x7a, 0xff, 0x92, 0xff, 0xce, 0xff, 0x00, 0x00, 0x26, 0x00, 0x5c, 0x00, 0x80, 0x00,
+0x94, 0x00, 0x88, 0x00, 0x72, 0x00, 0x4c, 0x00, 0x1c, 0x00, 0xe6, 0xff, 0xa8, 0xff, 0x80, 0xff,
+0x58, 0xff, 0x44, 0xff, 0x56, 0xff, 0x6e, 0xff, 0x9a, 0xff, 0xd4, 0xff, 0x08, 0x00, 0x40, 0x00,
+0x74, 0x00, 0x96, 0x00, 0xa2, 0x00, 0x9a, 0x00, 0x78, 0x00, 0x3a, 0x00, 0x04, 0x00, 0xcc, 0xff,
+0x90, 0xff, 0x58, 0xff, 0x38, 0xff, 0x28, 0xff, 0x3a, 0xff, 0x64, 0xff, 0xa0, 0xff, 0xde, 0xff,
+0x12, 0x00, 0x4e, 0x00, 0x88, 0x00, 0xb2, 0x00, 0xb6, 0x00, 0xa0, 0x00, 0x76, 0x00, 0x36, 0x00,
+0x00, 0x00, 0xce, 0xff, 0x80, 0xff, 0x4a, 0xff, 0x38, 0xff, 0x34, 0xff, 0x52, 0xff, 0x78, 0xff,
+0xb4, 0xff, 0xfa, 0xff, 0x24, 0x00, 0x6a, 0x00, 0x98, 0x00, 0xb4, 0x00, 0xbc, 0x00, 0x98, 0x00,
+0x70, 0x00, 0x2a, 0x00, 0xf6, 0xff, 0xb4, 0xff, 0x78, 0xff, 0x4a, 0xff, 0x2e, 0xff, 0x32, 0xff,
+0x48, 0xff, 0x82, 0xff, 0xc2, 0xff, 0xf6, 0xff, 0x2c, 0x00, 0x6a, 0x00, 0x90, 0x00, 0xb2, 0x00,
+0xa8, 0x00, 0x84, 0x00, 0x56, 0x00, 0x12, 0x00, 0xe4, 0xff, 0xac, 0xff, 0x74, 0xff, 0x4c, 0xff,
+0x3a, 0xff, 0x4c, 0xff, 0x68, 0xff, 0x94, 0xff, 0xce, 0xff, 0x00, 0x00, 0x38, 0x00, 0x70, 0x00,
+0x8e, 0x00, 0x9c, 0x00, 0xa0, 0x00, 0x72, 0x00, 0x4c, 0x00, 0x18, 0x00, 0xd8, 0xff, 0xac, 0xff,
+0x7c, 0xff, 0x60, 0xff, 0x50, 0xff, 0x68, 0xff, 0x7c, 0xff, 0xa0, 0xff, 0xde, 0xff, 0x0c, 0x00,
+0x38, 0x00, 0x60, 0x00, 0x70, 0x00, 0x7c, 0x00, 0x78, 0x00, 0x4a, 0x00, 0x22, 0x00, 0x00, 0x00,
+0xd2, 0xff, 0xa0, 0xff, 0x8e, 0xff, 0x78, 0xff, 0x6a, 0xff, 0x86, 0xff, 0x94, 0xff, 0xb6, 0xff,
+0xe4, 0xff, 0x0e, 0x00, 0x38, 0x00, 0x4a, 0x00, 0x52, 0x00, 0x54, 0x00, 0x52, 0x00, 0x36, 0x00,
+0x0e, 0x00, 0xf2, 0xff, 0xcc, 0xff, 0xb0, 0xff, 0xa8, 0xff, 0xa6, 0xff, 0x98, 0xff, 0x9e, 0xff,
+0xbc, 0xff, 0xd8, 0xff, 0xf4, 0xff, 0x10, 0x00, 0x1c, 0x00, 0x26, 0x00, 0x3a, 0x00, 0x30, 0x00,
+0x2e, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf2, 0xff, 0xda, 0xff, 0xca, 0xff, 0xbc, 0xff, 0xc0, 0xff,
+0xb4, 0xff, 0xb6, 0xff, 0xc0, 0xff, 0xdc, 0xff, 0xe6, 0xff, 0xfa, 0xff, 0x12, 0x00, 0x0c, 0x00,
+0x16, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x10, 0x00, 0xfe, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xe2, 0xff,
+0xd8, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xce, 0xff, 0xd8, 0xff, 0xea, 0xff, 0xec, 0xff, 0xee, 0xff,
+0x02, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00,
+0x0c, 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xdc, 0xff,
+0xce, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xda, 0xff, 0xf6, 0xff, 0xf6, 0xff,
+0x06, 0x00, 0x22, 0x00, 0x30, 0x00, 0x34, 0x00, 0x26, 0x00, 0x20, 0x00, 0x0a, 0x00, 0xfc, 0xff,
+0xec, 0xff, 0xd0, 0xff, 0xb4, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0xa4, 0xff, 0xb4, 0xff, 0xc2, 0xff,
+0xe6, 0xff, 0xfe, 0xff, 0x1e, 0x00, 0x40, 0x00, 0x54, 0x00, 0x56, 0x00, 0x50, 0x00, 0x3c, 0x00,
+0x28, 0x00, 0x02, 0x00, 0xee, 0xff, 0xbc, 0xff, 0x96, 0xff, 0x92, 0xff, 0x76, 0xff, 0x7c, 0xff,
+0xa0, 0xff, 0xaa, 0xff, 0xdc, 0xff, 0x06, 0x00, 0x34, 0x00, 0x5c, 0x00, 0x6e, 0x00, 0x7c, 0x00,
+0x62, 0x00, 0x50, 0x00, 0x2a, 0x00, 0xfc, 0xff, 0xce, 0xff, 0xa6, 0xff, 0x7a, 0xff, 0x58, 0xff,
+0x52, 0xff, 0x60, 0xff, 0x82, 0xff, 0xac, 0xff, 0xe0, 0xff, 0x1a, 0x00, 0x54, 0x00, 0x74, 0x00,
+0x8c, 0x00, 0x98, 0x00, 0x7a, 0x00, 0x58, 0x00, 0x22, 0x00, 0xf2, 0xff, 0xc2, 0xff, 0x82, 0xff,
+0x5e, 0xff, 0x40, 0xff, 0x48, 0xff, 0x5e, 0xff, 0x84, 0xff, 0xc8, 0xff, 0xfa, 0xff, 0x32, 0x00,
+0x78, 0x00, 0x9c, 0x00, 0xb0, 0x00, 0xb4, 0x00, 0x88, 0x00, 0x52, 0x00, 0x10, 0x00, 0xe0, 0xff,
+0xaa, 0xff, 0x58, 0xff, 0x3e, 0xff, 0x28, 0xff, 0x20, 0xff, 0x44, 0xff, 0x88, 0xff, 0xcc, 0xff,
+0x00, 0x00, 0x44, 0x00, 0x86, 0x00, 0xa8, 0x00, 0xb0, 0x00, 0xb4, 0x00, 0x7e, 0x00, 0x52, 0x00,
+0x08, 0x00, 0xd6, 0xff, 0x9a, 0xff, 0x52, 0xff, 0x34, 0xff, 0x20, 0xff, 0x32, 0xff, 0x5e, 0xff,
+0xa2, 0xff, 0xec, 0xff, 0x16, 0x00, 0x5c, 0x00, 0x9a, 0x00, 0xb4, 0x00, 0xca, 0x00, 0xaa, 0x00,
+0x86, 0x00, 0x40, 0x00, 0x00, 0x00, 0xcc, 0xff, 0x8e, 0xff, 0x56, 0xff, 0x34, 0xff, 0x2a, 0xff,
+0x3e, 0xff, 0x6a, 0xff, 0xac, 0xff, 0xf6, 0xff, 0x32, 0x00, 0x6a, 0x00, 0x92, 0x00, 0xae, 0x00,
+0xb0, 0x00, 0x9e, 0x00, 0x72, 0x00, 0x30, 0x00, 0x04, 0x00, 0xbe, 0xff, 0x86, 0xff, 0x58, 0xff,
+0x3c, 0xff, 0x3c, 0xff, 0x58, 0xff, 0x8a, 0xff, 0xbe, 0xff, 0x00, 0x00, 0x2a, 0x00, 0x58, 0x00,
+0x84, 0x00, 0x90, 0x00, 0x8c, 0x00, 0x86, 0x00, 0x5a, 0x00, 0x22, 0x00, 0xec, 0xff, 0xb6, 0xff,
+0x96, 0xff, 0x70, 0xff, 0x64, 0xff, 0x66, 0xff, 0x7c, 0xff, 0xa0, 0xff, 0xd6, 0xff, 0x06, 0x00,
+0x30, 0x00, 0x4e, 0x00, 0x66, 0x00, 0x7a, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x3e, 0x00, 0x0c, 0x00,
+0xec, 0xff, 0xb2, 0xff, 0x94, 0xff, 0x80, 0xff, 0x78, 0xff, 0x84, 0xff, 0x8c, 0xff, 0xb8, 0xff,
+0xdc, 0xff, 0xf0, 0xff, 0x0c, 0x00, 0x2c, 0x00, 0x36, 0x00, 0x40, 0x00, 0x40, 0x00, 0x2c, 0x00,
+0x1c, 0x00, 0xf2, 0xff, 0xd6, 0xff, 0xbc, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0x9a, 0xff, 0xaa, 0xff,
+0xba, 0xff, 0xc8, 0xff, 0xe2, 0xff, 0xf4, 0xff, 0x12, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x28, 0x00,
+0x1c, 0x00, 0x10, 0x00, 0x00, 0x00, 0xf6, 0xff, 0xe8, 0xff, 0xda, 0xff, 0xce, 0xff, 0xd0, 0xff,
+0xca, 0xff, 0xd2, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xec, 0xff, 0xf8, 0xff, 0xfc, 0xff,
+0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xe8, 0xff, 0xea, 0xff,
+0xea, 0xff, 0xec, 0xff, 0xea, 0xff, 0xee, 0xff, 0xea, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xda, 0xff,
+0xd2, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x10, 0x00,
+0x2a, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x1c, 0x00, 0x12, 0x00, 0x0c, 0x00, 0xf6, 0xff, 0xe6, 0xff,
+0xca, 0xff, 0xc0, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xd2, 0xff, 0xec, 0xff,
+0x08, 0x00, 0x18, 0x00, 0x36, 0x00, 0x52, 0x00, 0x56, 0x00, 0x46, 0x00, 0x40, 0x00, 0x1e, 0x00,
+0xf6, 0xff, 0xd8, 0xff, 0xae, 0xff, 0x86, 0xff, 0x78, 0xff, 0x76, 0xff, 0x92, 0xff, 0x9c, 0xff,
+0xbe, 0xff, 0xf0, 0xff, 0x1c, 0x00, 0x44, 0x00, 0x66, 0x00, 0x72, 0x00, 0x70, 0x00, 0x66, 0x00,
+0x4a, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xc6, 0xff, 0x8c, 0xff, 0x74, 0xff, 0x54, 0xff, 0x56, 0xff,
+0x70, 0xff, 0x8c, 0xff, 0xba, 0xff, 0xee, 0xff, 0x1a, 0x00, 0x58, 0x00, 0x90, 0x00, 0xa8, 0x00,
+0xa2, 0x00, 0x8a, 0x00, 0x5c, 0x00, 0x28, 0x00, 0xea, 0xff, 0xa6, 0xff, 0x6a, 0xff, 0x3e, 0xff,
+0x28, 0xff, 0x2e, 0xff, 0x48, 0xff, 0x7e, 0xff, 0xc8, 0xff, 0x08, 0x00, 0x3c, 0x00, 0x7c, 0x00,
+0x96, 0x00, 0xa6, 0x00, 0xa4, 0x00, 0x80, 0x00, 0x48, 0x00, 0x06, 0x00, 0xc6, 0xff, 0x7e, 0xff,
+0x4e, 0xff, 0x22, 0xff, 0x14, 0xff, 0x1e, 0xff, 0x4a, 0xff, 0x76, 0xff, 0xb8, 0xff, 0x02, 0x00,
+0x50, 0x00, 0xa4, 0x00, 0xce, 0x00, 0xdc, 0x00, 0xba, 0x00, 0x7e, 0x00, 0x46, 0x00, 0x06, 0x00,
+0xbc, 0xff, 0x88, 0xff, 0x42, 0xff, 0x36, 0xff, 0x22, 0xff, 0x1c, 0xff, 0x4e, 0xff, 0x94, 0xff,
+0xe4, 0xff, 0x20, 0x00, 0x68, 0x00, 0xa2, 0x00, 0xde, 0x00, 0xc6, 0x00, 0x92, 0x00, 0x88, 0x00,
+0x82, 0x00, 0x44, 0x00, 0x98, 0xff, 0x04, 0xfe, 0x84, 0xfb, 0xc0, 0xf8, 0x44, 0xf6, 0x10, 0xf5,
+0xac, 0xf5, 0xf6, 0xf8, 0x4a, 0xff, 0xea, 0x07, 0x04, 0x12, 0xca, 0x1b, 0xc3, 0x22, 0x01, 0x26,
+0x0b, 0x24, 0x97, 0x1c, 0x38, 0x10, 0x52, 0x00, 0x3e, 0xee, 0xd5, 0xdb, 0xe9, 0xcb, 0xbf, 0xc0,
+0xb5, 0xbc, 0xe5, 0xc1, 0x47, 0xd1, 0x20, 0xe9, 0xec, 0x05, 0xa7, 0x22, 0x93, 0x3a, 0x15, 0x4a,
+0x6f, 0x4f, 0xfb, 0x4a, 0x7f, 0x3e, 0xc7, 0x2b, 0x14, 0x15, 0x70, 0xfc, 0xb9, 0xe3, 0x37, 0xcd,
+0x9d, 0xbb, 0xe3, 0xb1, 0x5f, 0xb2, 0x97, 0xbe, 0x77, 0xd5, 0x5e, 0xf3, 0xe6, 0x12, 0x47, 0x2e,
+0x7f, 0x41, 0x97, 0x4a, 0x89, 0x49, 0x21, 0x40, 0x87, 0x30, 0xf7, 0x1c, 0x88, 0x07, 0xde, 0xf1,
+0xed, 0xdd, 0x67, 0xcd, 0xc5, 0xc2, 0x83, 0xbf, 0x07, 0xc5, 0x97, 0xd3, 0x16, 0xe9, 0x16, 0x02,
+0x60, 0x1a, 0x17, 0x2e, 0x9b, 0x3a, 0xd3, 0x3e, 0xe1, 0x3a, 0x39, 0x30, 0xdb, 0x20, 0xf6, 0x0e,
+0x76, 0xfc, 0x14, 0xeb, 0x81, 0xdc, 0x0d, 0xd2, 0xe9, 0xcc, 0x99, 0xcd, 0x57, 0xd4, 0x9b, 0xe0,
+0x14, 0xf1, 0x9c, 0x03, 0x96, 0x15, 0x73, 0x24, 0xc7, 0x2d, 0x8f, 0x30, 0xdb, 0x2c, 0x13, 0x24,
+0xf6, 0x17, 0x36, 0x0a, 0x9e, 0xfc, 0x1a, 0xf1, 0x84, 0xe8, 0x25, 0xe3, 0xb9, 0xe0, 0xc1, 0xe0,
+0x25, 0xe3, 0x02, 0xe8, 0x62, 0xef, 0xaa, 0xf8, 0x24, 0x03, 0xfc, 0x0c, 0x5c, 0x14, 0xf6, 0x17,
+0xfc, 0x17, 0xee, 0x13, 0x28, 0x0e, 0xc6, 0x08, 0x40, 0x04, 0x64, 0x01, 0xb0, 0xff, 0x06, 0xfe,
+0x46, 0xfb, 0x84, 0xf7, 0x24, 0xf3, 0xb0, 0xef, 0x62, 0xee, 0xfa, 0xef, 0x00, 0xf4, 0x0e, 0xf9,
+0x6c, 0xfd, 0x5c, 0x00, 0xfc, 0x01, 0x3e, 0x03, 0x32, 0x05, 0x34, 0x08, 0x8e, 0x0c, 0x5c, 0x11,
+0x26, 0x15, 0xd0, 0x15, 0x3a, 0x12, 0x9e, 0x0a, 0x2c, 0x00, 0x20, 0xf5, 0xc6, 0xeb, 0xc2, 0xe5,
+0x47, 0xe3, 0x91, 0xe3, 0xb0, 0xe5, 0x40, 0xe9, 0xca, 0xee, 0xae, 0xf6, 0x0c, 0x01, 0x46, 0x0d,
+0xde, 0x19, 0xb5, 0x24, 0x67, 0x2b, 0x11, 0x2c, 0xfb, 0x25, 0xbe, 0x19, 0x38, 0x09, 0xda, 0xf6,
+0xce, 0xe5, 0x55, 0xd8, 0xd7, 0xcf, 0x87, 0xcc, 0x6b, 0xce, 0x3f, 0xd5, 0xbf, 0xe0, 0xc2, 0xf0,
+0xd6, 0x03, 0x22, 0x18, 0x91, 0x2a, 0xab, 0x38, 0x0d, 0x40, 0x6f, 0x3f, 0x6d, 0x36, 0xb9, 0x25,
+0x2a, 0x0f, 0xa2, 0xf5, 0xc7, 0xdc, 0x0b, 0xc8, 0x35, 0xba, 0xf3, 0xb4, 0xe1, 0xb8, 0x6b, 0xc5,
+0x49, 0xd9, 0x02, 0xf2, 0xb4, 0x0c, 0x11, 0x26, 0x41, 0x3b, 0x07, 0x4a, 0xc5, 0x50, 0x5d, 0x4e,
+0x37, 0x42, 0xd1, 0x2c, 0x08, 0x10, 0x52, 0xef, 0x39, 0xcf, 0x17, 0xb5, 0x1e, 0xa5, 0x9a, 0xa1,
+0x98, 0xaa, 0x41, 0xbe, 0x5f, 0xd9, 0x20, 0xf8, 0xda, 0x16, 0x8b, 0x32, 0xc7, 0x48, 0xa2, 0x57,
+0x8c, 0x5d, 0xe0, 0x58, 0xef, 0x48, 0x39, 0x2e, 0x3c, 0x0b, 0x66, 0xe4, 0xd5, 0xbf, 0xce, 0xa3,
+0x18, 0x95, 0x94, 0x95, 0x12, 0xa4, 0x5d, 0xbd, 0x15, 0xdd, 0x2c, 0xff, 0x01, 0x20, 0xe7, 0x3c,
+0xab, 0x53, 0x3c, 0x62, 0x6e, 0x66, 0xa8, 0x5e, 0xff, 0x49, 0xb7, 0x29, 0x2a, 0x01, 0x29, 0xd6,
+0x05, 0xb0, 0x7a, 0x95, 0xe0, 0x8a, 0x8c, 0x90, 0x00, 0xa4, 0x11, 0xc1, 0x3d, 0xe3, 0x74, 0x06,
+0x9b, 0x27, 0x65, 0x44, 0xb8, 0x5a, 0xec, 0x67, 0x9a, 0x69, 0xe4, 0x5d, 0xab, 0x44, 0x21, 0x20,
+0xc2, 0xf4, 0x7f, 0xc9, 0xaa, 0xa5, 0x52, 0x8f, 0x48, 0x89, 0xec, 0x92, 0x40, 0xa9, 0x0f, 0xc8,
+0xf4, 0xea, 0x1e, 0x0e, 0xa3, 0x2e, 0xfb, 0x49, 0xd2, 0x5d, 0x78, 0x67, 0xdc, 0x64, 0x08, 0x55,
+0xf5, 0x38, 0xaa, 0x13, 0x58, 0xea, 0x3b, 0xc3, 0xaa, 0xa4, 0x28, 0x93, 0x64, 0x90, 0xa8, 0x9b,
+0x07, 0xb2, 0x25, 0xd0, 0xee, 0xf1, 0xe8, 0x13, 0xef, 0x32, 0x61, 0x4c, 0x4c, 0x5d, 0x22, 0x63,
+0x68, 0x5c, 0x93, 0x49, 0xbf, 0x2c, 0x56, 0x09, 0x14, 0xe4, 0x2b, 0xc2, 0xae, 0xa8, 0xd2, 0x9a,
+0x38, 0x9a, 0x28, 0xa6, 0x9b, 0xbc, 0x1f, 0xda, 0xd4, 0xfa, 0xdc, 0x1a, 0xb1, 0x36, 0x63, 0x4b,
+0x64, 0x56, 0x90, 0x56, 0x17, 0x4c, 0xd1, 0x38, 0xe5, 0x1e, 0x1c, 0x01, 0xb7, 0xe2, 0xb7, 0xc7,
+0xad, 0xb3, 0x72, 0xa9, 0x66, 0xaa, 0x5d, 0xb6, 0xa5, 0xcb, 0xc8, 0xe6, 0xea, 0x03, 0xf7, 0x1e,
+0xb1, 0x34, 0x81, 0x42, 0x77, 0x47, 0xc1, 0x43, 0x0d, 0x39, 0x05, 0x29, 0x30, 0x15, 0x04, 0xff,
+0x54, 0xe8, 0xcd, 0xd3, 0x1f, 0xc4, 0x11, 0xbc, 0x31, 0xbd, 0xf5, 0xc7, 0x67, 0xda, 0x32, 0xf1,
+0x3e, 0x08, 0x0e, 0x1c, 0x23, 0x2a, 0x77, 0x31, 0x73, 0x32, 0x51, 0x2e, 0xad, 0x26, 0x43, 0x1c,
+0x96, 0x0f, 0xee, 0x00, 0x4a, 0xf1, 0x6f, 0xe2, 0xf3, 0xd6, 0x13, 0xd1, 0x81, 0xd2, 0x0b, 0xdb,
+0xb0, 0xe8, 0x70, 0xf8, 0x08, 0x07, 0x50, 0x12, 0x36, 0x19, 0x12, 0x1c, 0xd4, 0x1b, 0xf4, 0x19,
+0x1c, 0x17, 0x7a, 0x13, 0x86, 0x0e, 0x9a, 0x07, 0xd0, 0xfe, 0x4a, 0xf5, 0x14, 0xed, 0x34, 0xe8,
+0xf2, 0xe7, 0xe4, 0xeb, 0x86, 0xf2, 0x84, 0xf9, 0x1c, 0xff, 0x86, 0x02, 0xfc, 0x03, 0x52, 0x04,
+0xdc, 0x04, 0x74, 0x06, 0x4e, 0x09, 0xbc, 0x0c, 0x64, 0x0f, 0x10, 0x10, 0x0c, 0x0e, 0xd2, 0x09,
+0x96, 0x04, 0xd0, 0xff, 0xf8, 0xfb, 0x2a, 0xf9, 0xe0, 0xf6, 0x8a, 0xf4, 0x06, 0xf2, 0x8a, 0xef,
+0xdc, 0xed, 0x06, 0xee, 0xd8, 0xf0, 0xbc, 0xf6, 0x7c, 0xff, 0xce, 0x09, 0x1a, 0x14, 0x63, 0x1c,
+0x1b, 0x21, 0x71, 0x21, 0x81, 0x1d, 0xee, 0x15, 0xea, 0x0b, 0x92, 0x00, 0xfc, 0xf4, 0x36, 0xea,
+0xf5, 0xe0, 0x31, 0xda, 0xe5, 0xd6, 0xed, 0xd7, 0xe9, 0xdd, 0xde, 0xe8, 0x16, 0xf8, 0x3a, 0x0a,
+0xd1, 0x1c, 0xdd, 0x2c, 0x4b, 0x37, 0xed, 0x39, 0x45, 0x34, 0x7b, 0x27, 0xd4, 0x15, 0x04, 0x02,
+0x96, 0xee, 0x6d, 0xdd, 0xe5, 0xcf, 0xed, 0xc6, 0x31, 0xc3, 0xb1, 0xc5, 0xf9, 0xce, 0x57, 0xdf,
+0xea, 0xf5, 0x78, 0x10, 0x45, 0x2b, 0x97, 0x41, 0xdf, 0x4e, 0x5b, 0x50, 0x0d, 0x46, 0x6d, 0x32,
+0x54, 0x19, 0x8a, 0xfe, 0x44, 0xe5, 0xa5, 0xcf, 0x5f, 0xbf, 0x19, 0xb5, 0x05, 0xb2, 0xfd, 0xb6,
+0x09, 0xc5, 0x0f, 0xdc, 0x44, 0xfa, 0xec, 0x1b, 0xe7, 0x3b, 0x99, 0x54, 0x22, 0x61, 0x88, 0x5f,
+0x95, 0x50, 0xdd, 0x37, 0xc6, 0x19, 0x62, 0xfa, 0xe3, 0xdc, 0xfd, 0xc3, 0x3f, 0xb1, 0x4e, 0xa6,
+0x50, 0xa4, 0xad, 0xac, 0x4f, 0xc0, 0x0b, 0xde, 0xbe, 0x02, 0x33, 0x29, 0x7b, 0x4b, 0xbc, 0x63,
+0xea, 0x6d, 0x6a, 0x68, 0x3a, 0x55, 0x6b, 0x38, 0x96, 0x16, 0xd2, 0xf3, 0x67, 0xd3, 0x17, 0xb8,
+0x7e, 0xa4, 0x90, 0x9a, 0xf6, 0x9b, 0xfc, 0xa9, 0x01, 0xc4, 0xaa, 0xe7, 0x18, 0x10, 0x89, 0x37,
+0x42, 0x58, 0x72, 0x6d, 0xdc, 0x73, 0xee, 0x6a, 0xde, 0x54, 0x6b, 0x35, 0x2a, 0x11, 0xdc, 0xeb,
+0x61, 0xc9, 0x53, 0xad, 0xf2, 0x9a, 0x60, 0x94, 0x1e, 0x9b, 0xcd, 0xae, 0xa9, 0xcd, 0xb0, 0xf3,
+0xb6, 0x1b, 0x93, 0x40, 0xb0, 0x5d, 0x5e, 0x6f, 0xfe, 0x72, 0x32, 0x68, 0x95, 0x50, 0xef, 0x2f,
+0x1a, 0x0a, 0x89, 0xe3, 0xb1, 0xc0, 0x00, 0xa6, 0xfc, 0x96, 0xa0, 0x95, 0xc2, 0xa1, 0xbf, 0xb9,
+0x59, 0xda, 0xfa, 0xfe, 0x61, 0x23, 0x79, 0x43, 0x24, 0x5c, 0x7c, 0x6a, 0x4c, 0x6c, 0x88, 0x60,
+0x9d, 0x48, 0x67, 0x27, 0x52, 0x01, 0x6f, 0xdb, 0xcd, 0xba, 0x36, 0xa4, 0x82, 0x9a, 0x50, 0x9e,
+0x3d, 0xae, 0x6b, 0xc7, 0x0e, 0xe6, 0xbc, 0x06, 0x05, 0x26, 0x4d, 0x41, 0x40, 0x56, 0x0c, 0x62,
+0x42, 0x62, 0xc8, 0x55, 0x77, 0x3d, 0x67, 0x1c, 0xbe, 0xf7, 0xe5, 0xd4, 0x5d, 0xb9, 0xea, 0xa8,
+0xfe, 0xa4, 0xd9, 0xac, 0x15, 0xbe, 0x65, 0xd5, 0xbc, 0xef, 0x98, 0x0a, 0x01, 0x24, 0x69, 0x3a,
+0x77, 0x4b, 0xb3, 0x54, 0x7f, 0x53, 0xad, 0x46, 0x55, 0x2f, 0x16, 0x11, 0xee, 0xf0, 0x91, 0xd4,
+0x4f, 0xc0, 0x5f, 0xb6, 0x01, 0xb7, 0x3d, 0xc0, 0x7b, 0xcf, 0x35, 0xe2, 0x60, 0xf6, 0x8a, 0x0a,
+0x03, 0x1e, 0x25, 0x2f, 0x0f, 0x3c, 0x5f, 0x42, 0xf1, 0x3f, 0xff, 0x33, 0x1d, 0x20, 0xb6, 0x07,
+0x8c, 0xef, 0xdd, 0xdb, 0x3d, 0xcf, 0x99, 0xca, 0x0d, 0xcd, 0xd3, 0xd4, 0xed, 0xdf, 0x9a, 0xec,
+0xce, 0xf9, 0x28, 0x07, 0x02, 0x14, 0x95, 0x1f, 0x57, 0x28, 0x77, 0x2c, 0xab, 0x2a, 0x93, 0x22,
+0x40, 0x15, 0xa0, 0x05, 0xc2, 0xf6, 0x1c, 0xeb, 0x08, 0xe4, 0x91, 0xe1, 0xf1, 0xe2, 0x1e, 0xe7,
+0xbe, 0xec, 0x04, 0xf3, 0x8a, 0xf9, 0xf8, 0xff, 0x6a, 0x06, 0x8e, 0x0c, 0xbe, 0x11, 0x56, 0x15,
+0x9c, 0x16, 0xbc, 0x14, 0x32, 0x10, 0xda, 0x09, 0x40, 0x03, 0xd2, 0xfd, 0x36, 0xfa, 0x7e, 0xf8,
+0x60, 0xf8, 0xd2, 0xf8, 0xfa, 0xf8, 0x78, 0xf8, 0xfe, 0xf6, 0x38, 0xf5, 0x18, 0xf4, 0xd2, 0xf4,
+0x4c, 0xf8, 0x40, 0xfe, 0x1e, 0x05, 0x78, 0x0b, 0x04, 0x10, 0x44, 0x12, 0xbc, 0x12, 0xec, 0x11,
+0x6e, 0x10, 0x76, 0x0e, 0x8e, 0x0b, 0x10, 0x07, 0xa2, 0x00, 0x00, 0xf8, 0x08, 0xee, 0x5e, 0xe4,
+0x5b, 0xdd, 0x89, 0xdb, 0x23, 0xe0, 0x92, 0xea, 0xc0, 0xf8, 0xca, 0x07, 0x18, 0x15, 0x57, 0x1f,
+0x85, 0x25, 0xfd, 0x27, 0x69, 0x27, 0xe9, 0x23, 0x15, 0x1d, 0x7e, 0x12, 0xe2, 0x03, 0x48, 0xf2,
+0xe9, 0xdf, 0xc5, 0xcf, 0xbb, 0xc5, 0x7f, 0xc4, 0x03, 0xcd, 0xa1, 0xdd, 0x0e, 0xf3, 0x32, 0x09,
+0x19, 0x1d, 0x69, 0x2c, 0xa9, 0x36, 0xc7, 0x3b, 0xc5, 0x3b, 0x43, 0x36, 0x95, 0x2a, 0x82, 0x18,
+0x1e, 0x01, 0x06, 0xe7, 0xc5, 0xcd, 0x15, 0xba, 0x9d, 0xaf, 0xe3, 0xb0, 0xdd, 0xbd, 0x5f, 0xd4,
+0x4c, 0xf0, 0x60, 0x0d, 0x4f, 0x27, 0xc5, 0x3b, 0x59, 0x49, 0x63, 0x4f, 0x83, 0x4d, 0x19, 0x43,
+0x35, 0x30, 0xfc, 0x15, 0x3c, 0xf7, 0x8f, 0xd7, 0xf7, 0xbb, 0x74, 0xa8, 0x66, 0xa0, 0x2c, 0xa5,
+0x2f, 0xb6, 0x05, 0xd1, 0xb6, 0xf1, 0x54, 0x13, 0xb9, 0x31, 0xeb, 0x49, 0x88, 0x59, 0x44, 0x5f,
+0xe2, 0x59, 0x75, 0x49, 0x81, 0x2f, 0x0c, 0x0f, 0xa8, 0xeb, 0x35, 0xca, 0xd3, 0xae, 0xfc, 0x9c,
+0x36, 0x97, 0x34, 0x9e, 0xe3, 0xb1, 0x2d, 0xd0, 0x0c, 0xf5, 0x2e, 0x1b, 0xc7, 0x3d, 0x6c, 0x58,
+0x10, 0x68, 0x8c, 0x6a, 0x48, 0x5f, 0x35, 0x48, 0x97, 0x28, 0x6a, 0x04, 0xfd, 0xdf, 0x41, 0xbf,
+0xc0, 0xa5, 0x6c, 0x96, 0xc6, 0x92, 0x2c, 0x9c, 0x9f, 0xb2, 0x3d, 0xd4, 0xa4, 0xfc, 0x13, 0x26,
+0x59, 0x4a, 0x9e, 0x64, 0x28, 0x71, 0x26, 0x6e, 0x14, 0x5d, 0x15, 0x41, 0xbb, 0x1e, 0x44, 0xfa,
+0x3d, 0xd7, 0xc7, 0xb8, 0x0a, 0xa2, 0xe0, 0x94, 0x7e, 0x93, 0x4a, 0x9f, 0x6b, 0xb8, 0xcf, 0xdc,
+0x64, 0x07, 0x63, 0x31, 0x4f, 0x54, 0xe0, 0x6a, 0xd2, 0x71, 0x78, 0x69, 0x25, 0x54, 0x5f, 0x36,
+0x82, 0x14, 0x00, 0xf2, 0xe3, 0xd1, 0xd9, 0xb6, 0xec, 0xa2, 0x9e, 0x98, 0xd8, 0x99, 0x0a, 0xa8,
+0x4d, 0xc3, 0xa6, 0xe8, 0x40, 0x12, 0x5b, 0x39, 0x78, 0x57, 0x16, 0x68, 0x0e, 0x6a, 0x32, 0x5e,
+0x23, 0x48, 0xe5, 0x2b, 0xd2, 0x0c, 0xe0, 0xed, 0x81, 0xd1, 0xc9, 0xb9, 0x16, 0xa9, 0xaa, 0xa1,
+0x38, 0xa5, 0x3b, 0xb5, 0xb7, 0xd0, 0x1c, 0xf4, 0xac, 0x19, 0xdd, 0x3a, 0x59, 0x52, 0x5e, 0x5d,
+0x7c, 0x5b, 0xe3, 0x4e, 0xa5, 0x3a, 0x89, 0x21, 0xa0, 0x06, 0x0a, 0xec, 0x03, 0xd4, 0xa3, 0xc0,
+0x03, 0xb4, 0xf5, 0xaf, 0x0f, 0xb6, 0x67, 0xc6, 0x31, 0xdf, 0x3a, 0xfd, 0x48, 0x1b, 0xbd, 0x34,
+0xcf, 0x45, 0x83, 0x4c, 0x5f, 0x49, 0x23, 0x3e, 0xbf, 0x2c, 0xba, 0x17, 0x7a, 0x01, 0x3a, 0xec,
+0xcf, 0xd9, 0x0f, 0xcc, 0x39, 0xc4, 0x8f, 0xc3, 0x39, 0xca, 0xa3, 0xd7, 0x78, 0xea, 0xf0, 0xff,
+0x54, 0x15, 0x3f, 0x27, 0x3d, 0x33, 0xdb, 0x37, 0x37, 0x35, 0x63, 0x2c, 0x0d, 0x1f, 0x42, 0x0f,
+0x22, 0xff, 0xb6, 0xf0, 0x46, 0xe5, 0xa5, 0xdd, 0x35, 0xda, 0xc1, 0xda, 0xd9, 0xde, 0x2c, 0xe6,
+0x24, 0xf0, 0x48, 0xfc, 0x20, 0x09, 0xc8, 0x14, 0x31, 0x1d, 0xfb, 0x20, 0xe3, 0x1f, 0x6c, 0x1a,
+0x20, 0x12, 0xc8, 0x08, 0x62, 0x00, 0x00, 0xfa, 0xb8, 0xf5, 0x64, 0xf3, 0x18, 0xf2, 0xf6, 0xf0,
+0x92, 0xef, 0xd8, 0xee, 0xf4, 0xef, 0x88, 0xf3, 0x72, 0xf9, 0x3e, 0x00, 0x54, 0x06, 0x56, 0x0a,
+0x96, 0x0b, 0xaa, 0x0a, 0xdc, 0x08, 0xd0, 0x07, 0x18, 0x08, 0x96, 0x09, 0x54, 0x0b, 0xde, 0x0b,
+0xba, 0x09, 0x1e, 0x04, 0xf6, 0xfb, 0x08, 0xf3, 0xb0, 0xeb, 0x9e, 0xe7, 0x46, 0xe7, 0x0c, 0xea,
+0x76, 0xee, 0x5c, 0xf3, 0x52, 0xf8, 0x9e, 0xfd, 0x0c, 0x04, 0x0c, 0x0c, 0xe4, 0x14, 0xe9, 0x1c,
+0x39, 0x22, 0xed, 0x22, 0xed, 0x1d, 0x56, 0x13, 0x92, 0x04, 0x58, 0xf4, 0x98, 0xe5, 0x5d, 0xda,
+0x35, 0xd4, 0x31, 0xd3, 0xb9, 0xd6, 0x11, 0xde, 0x90, 0xe8, 0x12, 0xf6, 0xd6, 0x05, 0xb0, 0x16,
+0x29, 0x26, 0x17, 0x32, 0x37, 0x38, 0x3f, 0x37, 0x6f, 0x2e, 0x75, 0x1e, 0x86, 0x09, 0x2e, 0xf2,
+0xaf, 0xdb, 0xa9, 0xc9, 0x97, 0xbe, 0xa3, 0xbb, 0xcd, 0xc0, 0x35, 0xcd, 0xa9, 0xdf, 0x32, 0xf6,
+0x7c, 0x0e, 0x91, 0x25, 0xf7, 0x38, 0xd7, 0x45, 0xe7, 0x4a, 0x0f, 0x47, 0x45, 0x3a, 0x65, 0x25,
+0x40, 0x0a, 0x0c, 0xec, 0x0b, 0xcf, 0xe3, 0xb7, 0x12, 0xaa, 0xdc, 0xa7, 0x1b, 0xb1, 0x7b, 0xc4,
+0xc9, 0xde, 0xa2, 0xfc, 0x42, 0x1a, 0x89, 0x34, 0x9d, 0x48, 0xf6, 0x54, 0x4c, 0x58, 0xaf, 0x51,
+0x1d, 0x41, 0x4b, 0x27, 0x8a, 0x06, 0x5b, 0xe2, 0x41, 0xc0, 0x16, 0xa6, 0x8a, 0x98, 0x6c, 0x99,
+0x2c, 0xa8, 0x03, 0xc2, 0xa1, 0xe2, 0x2c, 0x05, 0x81, 0x25, 0x87, 0x40, 0x83, 0x54, 0xd2, 0x5f,
+0x30, 0x61, 0xc4, 0x57, 0x5b, 0x43, 0x05, 0x25, 0x26, 0xff, 0x9f, 0xd6, 0xd9, 0xb1, 0xb8, 0x97,
+0x88, 0x8c, 0xe4, 0x91, 0x1a, 0xa6, 0xed, 0xc4, 0xf8, 0xe8, 0x3c, 0x0d, 0xf1, 0x2d, 0xb1, 0x48,
+0xe6, 0x5b, 0x02, 0x66, 0x76, 0x65, 0x0a, 0x59, 0xd1, 0x40, 0x41, 0x1e, 0xd6, 0xf4, 0x45, 0xca,
+0xe0, 0xa5, 0x68, 0x8e, 0xb6, 0x87, 0xec, 0x91, 0x1a, 0xaa, 0x7f, 0xcb, 0xbe, 0xf0, 0x10, 0x15,
+0x31, 0x35, 0xcb, 0x4e, 0x62, 0x60, 0x0c, 0x68, 0x2a, 0x64, 0xdb, 0x53, 0xc1, 0x37, 0x4e, 0x12,
+0xd2, 0xe7, 0xf9, 0xbe, 0xc2, 0x9e, 0xb2, 0x8c, 0x02, 0x8b, 0xf6, 0x98, 0x05, 0xb3, 0x89, 0xd4,
+0xcc, 0xf8, 0x98, 0x1b, 0xdb, 0x39, 0x51, 0x51, 0xd4, 0x5f, 0xdc, 0x63, 0x1a, 0x5c, 0x49, 0x48,
+0x35, 0x2a, 0x38, 0x05, 0x1b, 0xde, 0xc3, 0xba, 0xc8, 0xa0, 0xe0, 0x93, 0xa0, 0x95, 0x8e, 0xa4,
+0xc9, 0xbd, 0x7d, 0xdd, 0x5e, 0xff, 0x9b, 0x1f, 0x0d, 0x3b, 0x19, 0x4f, 0xf0, 0x59, 0x2c, 0x5a,
+0x17, 0x4f, 0x05, 0x3a, 0x37, 0x1d, 0x4a, 0xfc, 0x49, 0xdb, 0xaf, 0xbe, 0x56, 0xaa, 0x22, 0xa1,
+0x02, 0xa4, 0x57, 0xb2, 0xf3, 0xc9, 0xf4, 0xe6, 0xd2, 0x05, 0x7f, 0x22, 0xab, 0x39, 0xb3, 0x48,
+0x27, 0x4e, 0xd5, 0x49, 0xd3, 0x3c, 0xf9, 0x28, 0xf4, 0x10, 0x64, 0xf7, 0x8f, 0xde, 0x0f, 0xc9,
+0x91, 0xb9, 0x75, 0xb2, 0x5d, 0xb5, 0x1b, 0xc2, 0xaf, 0xd6, 0x38, 0xf0, 0x62, 0x0a, 0x77, 0x21,
+0x3f, 0x32, 0xff, 0x3a, 0xa9, 0x3b, 0x6f, 0x35, 0x03, 0x2a, 0x84, 0x1b, 0x48, 0x0b, 0xf4, 0xf9,
+0xd4, 0xe8, 0x2d, 0xd9, 0x47, 0xcd, 0x7d, 0xc7, 0x83, 0xc9, 0x71, 0xd3, 0xea, 0xe3, 0x62, 0xf7,
+0x8e, 0x0a, 0xfe, 0x19, 0x81, 0x23, 0xcb, 0x26, 0xe1, 0x24, 0x99, 0x1f, 0xbc, 0x18, 0x3a, 0x11,
+0x14, 0x09, 0x24, 0x00, 0x18, 0xf6, 0xc0, 0xeb, 0x09, 0xe3, 0x07, 0xde, 0x83, 0xde, 0x98, 0xe4,
+0xa2, 0xee, 0x3e, 0xfa, 0x92, 0x04, 0xae, 0x0b, 0xfe, 0x0e, 0x54, 0x0f, 0x14, 0x0e, 0xa2, 0x0c,
+0xd4, 0x0b, 0xca, 0x0b, 0xa0, 0x0b, 0x00, 0x0a, 0x68, 0x06, 0x08, 0x01, 0xea, 0xfa, 0xa4, 0xf5,
+0x9c, 0xf2, 0x46, 0xf2, 0xd2, 0xf3, 0xd8, 0xf5, 0x40, 0xf7, 0x9c, 0xf7, 0x28, 0xf7, 0x1e, 0xf7,
+0x74, 0xf8, 0x0a, 0xfc, 0xfa, 0x01, 0x80, 0x09, 0x20, 0x11, 0x0a, 0x17, 0xaa, 0x19, 0x6e, 0x18,
+0xac, 0x13, 0x58, 0x0c, 0xd2, 0x03, 0x36, 0xfb, 0xea, 0xf2, 0x9e, 0xeb, 0x64, 0xe5, 0x1f, 0xe1,
+0x75, 0xdf, 0x27, 0xe1, 0x7c, 0xe6, 0x86, 0xef, 0x18, 0xfc, 0xf8, 0x0a, 0x30, 0x1a, 0xdf, 0x26,
+0x0b, 0x2f, 0x85, 0x30, 0xe9, 0x2a, 0xf9, 0x1e, 0xd6, 0x0e, 0xfc, 0xfc, 0xd2, 0xeb, 0x0b, 0xdd,
+0x19, 0xd2, 0xbd, 0xcb, 0x55, 0xca, 0x57, 0xce, 0xaf, 0xd7, 0x70, 0xe6, 0xe8, 0xf9, 0x5e, 0x10,
+0xe5, 0x26, 0x13, 0x3a, 0xd7, 0x45, 0x89, 0x47, 0x4f, 0x3e, 0xcf, 0x2b, 0xa4, 0x13, 0xc4, 0xf9,
+0x97, 0xe1, 0xef, 0xcd, 0x1b, 0xc0, 0xb5, 0xb8, 0x53, 0xb8, 0xcf, 0xbe, 0xc1, 0xcc, 0xaf, 0xe1,
+0x74, 0xfc, 0x06, 0x1a, 0xf1, 0x36, 0xcf, 0x4d, 0x56, 0x5a, 0x62, 0x59, 0xbb, 0x4a, 0xd9, 0x31,
+0x40, 0x13, 0xc4, 0xf3, 0x3b, 0xd7, 0x79, 0xc0, 0xe7, 0xb0, 0xa6, 0xa9, 0xa6, 0xaa, 0x89, 0xb4,
+0xa3, 0xc7, 0x13, 0xe3, 0x66, 0x04, 0xe9, 0x27, 0x35, 0x48, 0xf2, 0x5f, 0x50, 0x6a, 0xd6, 0x64,
+0x0f, 0x51, 0x13, 0x33, 0xfa, 0x0f, 0x9a, 0xec, 0x03, 0xcd, 0x37, 0xb4, 0x2e, 0xa4, 0xaa, 0x9d,
+0x5e, 0xa1, 0xf1, 0xaf, 0xf5, 0xc8, 0xa0, 0xea, 0x3e, 0x11, 0x77, 0x37, 0xa2, 0x57, 0xa8, 0x6c,
+0xa2, 0x72, 0xcc, 0x68, 0xf5, 0x50, 0xcb, 0x2f, 0x46, 0x0a, 0x10, 0xe5, 0x35, 0xc4, 0x0c, 0xab,
+0xa0, 0x9b, 0x3a, 0x97, 0xec, 0x9e, 0x7b, 0xb2, 0xfb, 0xd0, 0xa2, 0xf6, 0xa3, 0x1e, 0x73, 0x43,
+0x50, 0x60, 0x2c, 0x71, 0x76, 0x73, 0xa6, 0x66, 0x4b, 0x4d, 0x29, 0x2b, 0x9a, 0x04, 0x33, 0xde,
+0x81, 0xbc, 0x60, 0xa3, 0xb0, 0x95, 0x1c, 0x95, 0xf4, 0xa1, 0xfb, 0xba, 0x03, 0xdd, 0x88, 0x03,
+0x47, 0x29, 0xdb, 0x49, 0xe2, 0x61, 0x84, 0x6e, 0xf4, 0x6d, 0x02, 0x60, 0x29, 0x46, 0xc9, 0x23,
+0x3c, 0xfd, 0x5f, 0xd7, 0x39, 0xb7, 0xe8, 0xa0, 0x70, 0x97, 0xd2, 0x9b, 0xfb, 0xac, 0x3f, 0xc8,
+0xb8, 0xe9, 0xda, 0x0c, 0x93, 0x2d, 0x11, 0x49, 0xba, 0x5c, 0x7e, 0x66, 0x7a, 0x64, 0x20, 0x56,
+0xad, 0x3c, 0xe6, 0x1a, 0x6a, 0xf5, 0xa3, 0xd1, 0x07, 0xb5, 0xae, 0xa3, 0x8c, 0x9f, 0x54, 0xa8,
+0xc1, 0xbb, 0x69, 0xd6, 0x1e, 0xf4, 0xbc, 0x11, 0x7b, 0x2c, 0xb1, 0x42, 0x63, 0x52, 0xbe, 0x59,
+0xbe, 0x56, 0xb7, 0x48, 0x3b, 0x30, 0x7a, 0x10, 0x60, 0xee, 0x87, 0xcf, 0x09, 0xb9, 0xe1, 0xad,
+0xc5, 0xae, 0x17, 0xba, 0xed, 0xcc, 0xab, 0xe3, 0x7e, 0xfb, 0x48, 0x12, 0xa3, 0x26, 0x7d, 0x37,
+0x5d, 0x43, 0x79, 0x48, 0x21, 0x45, 0x55, 0x38, 0x31, 0x23, 0x80, 0x08, 0xfa, 0xec, 0xaf, 0xd5,
+0x4f, 0xc6, 0x7d, 0xc0, 0xd1, 0xc3, 0x2f, 0xce, 0xe1, 0xdc, 0x86, 0xed, 0x04, 0xfe, 0xa0, 0x0d,
+0xb6, 0x1b, 0x77, 0x27, 0xdb, 0x2f, 0x73, 0x33, 0xb3, 0x30, 0x03, 0x27, 0x3e, 0x17, 0xf6, 0x03,
+0x2c, 0xf1, 0x25, 0xe2, 0x3b, 0xd9, 0xf3, 0xd6, 0x3d, 0xda, 0x6d, 0xe1, 0x94, 0xea, 0x46, 0xf4,
+0x96, 0xfd, 0x62, 0x06, 0x3e, 0x0e, 0x3a, 0x15, 0xa2, 0x1a, 0xa7, 0x1d, 0x65, 0x1d, 0x34, 0x19,
+0x72, 0x11, 0x60, 0x07, 0x2e, 0xfd, 0xcc, 0xf4, 0x9a, 0xef, 0xb0, 0xed, 0x8c, 0xee, 0x06, 0xf1,
+0x0c, 0xf4, 0x0e, 0xf7, 0x68, 0xf9, 0x4a, 0xfb, 0x04, 0xfd, 0x34, 0xff, 0x4a, 0x02, 0x60, 0x06,
+0xba, 0x0a, 0x40, 0x0e, 0x06, 0x10, 0x74, 0x0f, 0x5a, 0x0d, 0x76, 0x0a, 0xba, 0x07, 0x58, 0x05,
+0x22, 0x03, 0x98, 0x00, 0x26, 0xfd, 0x68, 0xf8, 0x80, 0xf2, 0x62, 0xec, 0x7c, 0xe7, 0x0c, 0xe6,
+0x90, 0xe9, 0x0e, 0xf2, 0x0c, 0xfe, 0xcc, 0x0a, 0xc8, 0x15, 0x43, 0x1d, 0xc5, 0x20, 0xed, 0x20,
+0x89, 0x1e, 0x3e, 0x1a, 0x0e, 0x14, 0xc0, 0x0b, 0xc2, 0x00, 0x74, 0xf3, 0xd4, 0xe4, 0x7d, 0xd7,
+0xcf, 0xce, 0x37, 0xcd, 0x67, 0xd4, 0x55, 0xe3, 0x88, 0xf7, 0xbc, 0x0c, 0x8d, 0x1f, 0xcb, 0x2c,
+0x19, 0x34, 0x9d, 0x35, 0x61, 0x32, 0x39, 0x2b, 0x07, 0x20, 0xd6, 0x10, 0xd4, 0xfd, 0x92, 0xe8,
+0x67, 0xd3, 0x5b, 0xc2, 0xad, 0xb8, 0x6b, 0xb9, 0x2d, 0xc5, 0x51, 0xda, 0x3c, 0xf5, 0x40, 0x11,
+0xc5, 0x29, 0xfd, 0x3b, 0x9d, 0x46, 0x9d, 0x49, 0x85, 0x45, 0x91, 0x3a, 0xf9, 0x28, 0x66, 0x11,
+0xb0, 0xf5, 0xe1, 0xd8, 0x6d, 0xbf, 0x33, 0xad, 0xf2, 0xa5, 0xf2, 0xaa, 0x47, 0xbc, 0x53, 0xd7,
+0xf4, 0xf7, 0xe6, 0x18, 0xb7, 0x35, 0x1b, 0x4b, 0x72, 0x57, 0x40, 0x5a, 0x11, 0x53, 0xbb, 0x42,
+0x01, 0x2a, 0x0c, 0x0b, 0x1a, 0xe9, 0xbd, 0xc8, 0x7d, 0xae, 0x48, 0x9e, 0x3e, 0x9a, 0x0e, 0xa3,
+0x57, 0xb8, 0x3b, 0xd7, 0xae, 0xfb, 0x5f, 0x20, 0x89, 0x40, 0x80, 0x58, 0xaa, 0x65, 0x78, 0x66,
+0xc6, 0x5a, 0xfd, 0x43, 0x8b, 0x24, 0x74, 0x00, 0xcd, 0xdb, 0x71, 0xbb, 0x66, 0xa3, 0x2a, 0x96,
+0x38, 0x95, 0x14, 0xa1, 0xf3, 0xb8, 0xb9, 0xda, 0x08, 0x02, 0x71, 0x29, 0xb9, 0x4b, 0x4c, 0x64,
+0x8c, 0x6f, 0x2e, 0x6c, 0xc6, 0x5a, 0x43, 0x3e, 0x00, 0x1b, 0x22, 0xf5, 0x5b, 0xd1, 0x6b, 0xb3,
+0x78, 0x9e, 0x2c, 0x94, 0xaa, 0x95, 0x5c, 0xa3, 0x21, 0xbd, 0xb5, 0xe0, 0xb0, 0x09, 0x7f, 0x32,
+0xb9, 0x54, 0x5e, 0x6b, 0xca, 0x72, 0x30, 0x6a, 0xf1, 0x53, 0x51, 0x34, 0x10, 0x10, 0xb8, 0xeb,
+0xfd, 0xca, 0x9b, 0xb0, 0x26, 0x9f, 0x90, 0x97, 0x1e, 0x9b, 0xa0, 0xaa, 0xdd, 0xc5, 0x74, 0xea,
+0xc6, 0x13, 0x39, 0x3b, 0x72, 0x5a, 0x52, 0x6c, 0x3a, 0x6e, 0x28, 0x61, 0x5b, 0x48, 0xbd, 0x28,
+0xc4, 0x06, 0xf8, 0xe5, 0x57, 0xc9, 0x0b, 0xb3, 0x9e, 0xa4, 0x9e, 0x9f, 0x2e, 0xa5, 0xd9, 0xb5,
+0x87, 0xd1, 0x3e, 0xf5, 0xc8, 0x1b, 0x0f, 0x3f, 0xb4, 0x58, 0xd2, 0x64, 0x94, 0x62, 0x87, 0x53,
+0x6b, 0x3b, 0x91, 0x1e, 0x8c, 0x00, 0x38, 0xe4, 0x25, 0xcc, 0xdb, 0xb9, 0xf3, 0xae, 0xbb, 0xac,
+0x13, 0xb4, 0x81, 0xc5, 0x77, 0xdf, 0x50, 0xff, 0xdb, 0x1f, 0xf7, 0x3b, 0xd5, 0x4e, 0x02, 0x56,
+0x3d, 0x51, 0xdb, 0x42, 0xb5, 0x2d, 0x1a, 0x15, 0x58, 0xfc, 0x8c, 0xe5, 0xbd, 0xd2, 0x77, 0xc5,
+0x9b, 0xbe, 0x09, 0xbf, 0x45, 0xc7, 0x97, 0xd6, 0xb4, 0xeb, 0x04, 0x04, 0x10, 0x1c, 0x19, 0x30,
+0x0d, 0x3d, 0x39, 0x41, 0xe9, 0x3c, 0x6b, 0x31, 0x11, 0x21, 0x64, 0x0e, 0xb6, 0xfb, 0x20, 0xeb,
+0x33, 0xde, 0xd7, 0xd5, 0xaf, 0xd2, 0x93, 0xd4, 0x2d, 0xdb, 0xca, 0xe5, 0x24, 0xf3, 0x20, 0x02,
+0x2c, 0x11, 0x1d, 0x1e, 0xff, 0x26, 0x85, 0x2a, 0x23, 0x28, 0xd9, 0x20, 0x36, 0x16, 0xd2, 0x09,
+0xee, 0xfd, 0x14, 0xf4, 0x44, 0xed, 0xd0, 0xe9, 0x24, 0xe9, 0x4e, 0xea, 0x72, 0xec, 0x62, 0xef,
+0x70, 0xf3, 0x50, 0xf9, 0xd4, 0x00, 0xe6, 0x08, 0xe4, 0x0f, 0xfc, 0x13, 0xa4, 0x14, 0xfa, 0x11,
+0x66, 0x0d, 0x4e, 0x08, 0x22, 0x04, 0xe4, 0x01, 0x40, 0x01, 0x36, 0x01, 0x60, 0x00, 0xe2, 0xfd,
+0x2e, 0xf9, 0xc4, 0xf3, 0x4c, 0xef, 0x68, 0xed, 0xfc, 0xee, 0x68, 0xf3, 0xd6, 0xf8, 0xf2, 0xfd,
+0xf8, 0x01, 0xfc, 0x04, 0xd0, 0x07, 0x46, 0x0b, 0x92, 0x0f, 0x3e, 0x14, 0xe2, 0x17, 0xbc, 0x18,
+0x74, 0x15, 0x7e, 0x0d, 0xa4, 0x01, 0xec, 0xf3, 0x52, 0xe7, 0x59, 0xde, 0x75, 0xda, 0xb7, 0xdb,
+0xfb, 0xe0, 0xc2, 0xe8, 0x3e, 0xf2, 0xe8, 0xfc, 0xac, 0x08, 0x2a, 0x15, 0x1f, 0x21, 0xa9, 0x2a,
+0xe5, 0x2f, 0x01, 0x2f, 0x15, 0x27, 0xc4, 0x18, 0xb4, 0x05, 0xbc, 0xf0, 0x35, 0xdd, 0x37, 0xce,
+0xef, 0xc5, 0xe5, 0xc4, 0xf3, 0xca, 0xc9, 0xd6, 0x48, 0xe7, 0x08, 0xfb, 0x1c, 0x10, 0x55, 0x24,
+0x39, 0x35, 0x85, 0x40, 0x4f, 0x44, 0xe7, 0x3f, 0x0d, 0x33, 0xfb, 0x1e, 0xe4, 0x05, 0xa6, 0xea,
+0xfd, 0xd0, 0xeb, 0xbc, 0x67, 0xb1, 0x17, 0xb0, 0x33, 0xb9, 0x3d, 0xcb, 0x00, 0xe4, 0x3e, 0x00,
+0x4f, 0x1c, 0xd7, 0x34, 0x45, 0x47, 0x97, 0x51, 0xd5, 0x52, 0xa9, 0x4a, 0xb7, 0x39, 0xf7, 0x20,
+0xac, 0x02, 0x0d, 0xe2, 0x61, 0xc3, 0xa3, 0xab, 0x08, 0x9f, 0xdc, 0x9f, 0xf1, 0xad, 0x3b, 0xc7,
+0x80, 0xe7, 0xda, 0x09, 0xbb, 0x29, 0x9d, 0x43, 0x7c, 0x55, 0x2a, 0x5e, 0xde, 0x5c, 0x8d, 0x51,
+0xc3, 0x3c, 0xad, 0x1f, 0x72, 0xfc, 0xdf, 0xd6, 0x61, 0xb4, 0x08, 0x9b, 0xcc, 0x8f, 0xe8, 0x94,
+0x4e, 0xa9, 0x11, 0xc9, 0x9e, 0xee, 0xf0, 0x13, 0xaf, 0x34, 0x1b, 0x4e, 0x90, 0x5e, 0x58, 0x65,
+0xca, 0x61, 0xa1, 0x53, 0x6b, 0x3b, 0x74, 0x1a, 0x30, 0xf3, 0x71, 0xca, 0x0e, 0xa7, 0x50, 0x8f,
+0x18, 0x88, 0x82, 0x92, 0x03, 0xac, 0x91, 0xcf, 0xce, 0xf6, 0x3a, 0x1c, 0x11, 0x3c, 0x47, 0x54,
+0x5c, 0x63, 0x0e, 0x68, 0xda, 0x61, 0x6b, 0x50, 0x91, 0x34, 0x34, 0x10, 0xba, 0xe6, 0x07, 0xbe,
+0x14, 0x9d, 0x20, 0x8a, 0x0e, 0x88, 0x1e, 0x97, 0xa1, 0xb3, 0x2d, 0xd8, 0xf6, 0xfe, 0xe3, 0x22,
+0xf3, 0x40, 0x28, 0x57, 0xe6, 0x63, 0xa4, 0x65, 0x02, 0x5c, 0x39, 0x47, 0x97, 0x28, 0x0c, 0x03,
+0x05, 0xdb, 0x6b, 0xb6, 0x6c, 0x9b, 0x80, 0x8e, 0x48, 0x91, 0x96, 0xa2, 0x37, 0xbf, 0x2d, 0xe2,
+0x46, 0x06, 0x43, 0x27, 0x07, 0x42, 0xce, 0x54, 0xe8, 0x5d, 0x4c, 0x5c, 0xa7, 0x4f, 0x4d, 0x39,
+0x36, 0x1b, 0x8a, 0xf8, 0xf7, 0xd5, 0x03, 0xb8, 0x32, 0xa3, 0x80, 0x9a, 0xd4, 0x9e, 0x71, 0xaf,
+0x9b, 0xc9, 0x3e, 0xe9, 0xc4, 0x09, 0x79, 0x27, 0x11, 0x3f, 0x33, 0x4e, 0x79, 0x53, 0x25, 0x4e,
+0x6b, 0x3f, 0x15, 0x29, 0x16, 0x0e, 0x78, 0xf1, 0x6f, 0xd6, 0x33, 0xc0, 0x41, 0xb1, 0x9f, 0xab,
+0x63, 0xb0, 0x2b, 0xbf, 0x09, 0xd6, 0x8e, 0xf1, 0x9e, 0x0d, 0x2b, 0x26, 0x7d, 0x38, 0x43, 0x42,
+0xd9, 0x42, 0x0d, 0x3b, 0x97, 0x2c, 0x26, 0x1a, 0xf6, 0x05, 0xd8, 0xf1, 0x39, 0xdf, 0x9d, 0xcf,
+0x93, 0xc4, 0x0b, 0xc0, 0x77, 0xc3, 0x0f, 0xcf, 0x53, 0xe1, 0x3a, 0xf7, 0x06, 0x0d, 0x31, 0x1f,
+0x09, 0x2b, 0xcb, 0x2f, 0xab, 0x2d, 0x49, 0x26, 0xe8, 0x1b, 0x1e, 0x10, 0x2c, 0x04, 0x8e, 0xf8,
+0x36, 0xed, 0xa9, 0xe2, 0x7b, 0xda, 0x17, 0xd6, 0x5b, 0xd7, 0xc3, 0xde, 0x02, 0xeb, 0xc4, 0xf9,
+0xd2, 0x07, 0x66, 0x12, 0x2e, 0x18, 0x44, 0x19, 0xde, 0x16, 0xe2, 0x12, 0x8a, 0x0e, 0xc8, 0x0a,
+0x26, 0x07, 0x2e, 0x03, 0x0a, 0xfe, 0xd2, 0xf7, 0x52, 0xf1, 0x80, 0xec, 0x8a, 0xea, 0x3a, 0xec,
+0x18, 0xf1, 0x16, 0xf7, 0x88, 0xfc, 0xfc, 0xff, 0x20, 0x01, 0x1e, 0x01, 0x42, 0x01, 0x60, 0x02,
+0x12, 0x05, 0x00, 0x09, 0x24, 0x0d, 0x38, 0x10, 0xfa, 0x10, 0x80, 0x0e, 0x86, 0x09, 0xca, 0x02,
+0x00, 0xfc, 0x0e, 0xf6, 0x76, 0xf1, 0x16, 0xee, 0x60, 0xeb, 0x82, 0xe9, 0xf4, 0xe8, 0x7e, 0xea,
+0xbe, 0xee, 0x08, 0xf6, 0xb4, 0xff, 0x0a, 0x0b, 0x9a, 0x16, 0x01, 0x20, 0xc1, 0x25, 0x21, 0x26,
+0x95, 0x20, 0x2c, 0x16, 0x6e, 0x08, 0x6c, 0xf9, 0x46, 0xeb, 0x71, 0xdf, 0xd3, 0xd6, 0x5f, 0xd2,
+0x45, 0xd2, 0xbf, 0xd6, 0xe7, 0xdf, 0x46, 0xed, 0xfc, 0xfd, 0xa2, 0x10, 0x09, 0x23, 0x8d, 0x32,
+0x23, 0x3c, 0x77, 0x3d, 0x85, 0x35, 0x01, 0x25, 0xe2, 0x0e, 0x96, 0xf6, 0xf5, 0xdf, 0xe1, 0xcd,
+0x23, 0xc2, 0x17, 0xbd, 0xf3, 0xbe, 0x2b, 0xc7, 0x29, 0xd5, 0xae, 0xe8, 0x26, 0x00, 0xb8, 0x19,
+0x77, 0x32, 0x93, 0x46, 0xe7, 0x51, 0xa5, 0x51, 0x8b, 0x44, 0xb9, 0x2c, 0x7c, 0x0e, 0xfc, 0xee,
+0xf1, 0xd2, 0xe3, 0xbd, 0x1d, 0xb1, 0x01, 0xad, 0xd9, 0xb0, 0x5f, 0xbc, 0x47, 0xcf, 0xa0, 0xe8,
+0xba, 0x06, 0x55, 0x26, 0x73, 0x43, 0x62, 0x59, 0x84, 0x63, 0xde, 0x5e, 0xf5, 0x4b, 0xcf, 0x2d,
+0xe0, 0x09, 0x2c, 0xe6, 0x51, 0xc7, 0xe5, 0xb0, 0x3e, 0xa4, 0x22, 0xa1, 0x7a, 0xa7, 0x03, 0xb7,
+0x23, 0xcf, 0xa0, 0xee, 0x40, 0x12, 0xd3, 0x35, 0x6d, 0x54, 0xc6, 0x68, 0xcc, 0x6e, 0x02, 0x65,
+0xa9, 0x4c, 0x3b, 0x2a, 0x3c, 0x03, 0x29, 0xdd, 0x1d, 0xbd, 0x28, 0xa6, 0xe6, 0x99, 0xd4, 0x98,
+0x98, 0xa2, 0xe5, 0xb6, 0xd3, 0xd4, 0x5e, 0xf9, 0x51, 0x20, 0x87, 0x44, 0xd2, 0x60, 0xe4, 0x70,
+0x26, 0x72, 0xec, 0x63, 0xc1, 0x48, 0xe9, 0x24, 0x42, 0xfd, 0x27, 0xd7, 0x07, 0xb7, 0xa0, 0xa0,
+0xac, 0x95, 0x08, 0x97, 0xbc, 0xa4, 0xcd, 0xbd, 0xe7, 0xdf, 0x80, 0x06, 0x91, 0x2c, 0x29, 0x4d,
+0xb6, 0x64, 0xde, 0x6f, 0x40, 0x6d, 0x3c, 0x5d, 0x8d, 0x41, 0x09, 0x1e, 0xfc, 0xf6, 0x4d, 0xd1,
+0x25, 0xb2, 0x82, 0x9d, 0x62, 0x95, 0xc8, 0x9a, 0x0f, 0xad, 0xe1, 0xc9, 0x82, 0xed, 0xc0, 0x12,
+0xbb, 0x34, 0x37, 0x50, 0x8a, 0x62, 0xe8, 0x69, 0x2c, 0x65, 0x65, 0x54, 0x41, 0x39, 0xae, 0x16,
+0xb0, 0xf0, 0xaf, 0xcc, 0xe7, 0xaf, 0x90, 0x9e, 0xea, 0x9a, 0xa2, 0xa4, 0x0f, 0xba, 0xcd, 0xd7,
+0x0e, 0xf9, 0x46, 0x19, 0x4d, 0x35, 0xc9, 0x4a, 0x76, 0x58, 0x40, 0x5d, 0xb8, 0x57, 0x15, 0x48,
+0xed, 0x2e, 0x94, 0x0e, 0x8a, 0xeb, 0x41, 0xcb, 0x1f, 0xb3, 0xd4, 0xa6, 0x04, 0xa8, 0x13, 0xb5,
+0x49, 0xcb, 0x18, 0xe6, 0x9a, 0x01, 0xcc, 0x1a, 0xcb, 0x2f, 0xd5, 0x3f, 0xc5, 0x49, 0xcb, 0x4c,
+0xa3, 0x47, 0xad, 0x39, 0x7b, 0x23, 0x6e, 0x07, 0xcc, 0xe9, 0xc5, 0xcf, 0x31, 0xbe, 0x65, 0xb7,
+0xbf, 0xbb, 0xf5, 0xc8, 0x9b, 0xdb, 0x54, 0xf0, 0x34, 0x04, 0xb2, 0x15, 0x31, 0x24, 0x67, 0x2f,
+0xab, 0x36, 0x25, 0x39, 0x59, 0x35, 0x6d, 0x2a, 0xe4, 0x18, 0xfe, 0x02, 0xc0, 0xec, 0x51, 0xda,
+0x0b, 0xcf, 0x61, 0xcc, 0x61, 0xd1, 0xc1, 0xdb, 0xca, 0xe8, 0x44, 0xf6, 0xaa, 0x02, 0x94, 0x0d,
+0x8c, 0x16, 0xa5, 0x1d, 0x87, 0x22, 0x71, 0x24, 0x9d, 0x22, 0x3a, 0x1c, 0xb4, 0x11, 0x8e, 0x04,
+0x6a, 0xf7, 0x90, 0xec, 0x2c, 0xe6, 0x70, 0xe4, 0xac, 0xe6, 0x48, 0xeb, 0x04, 0xf1, 0xd4, 0xf6,
+0x1c, 0xfc, 0x9a, 0x00, 0x6e, 0x04, 0xfc, 0x07, 0x70, 0x0b, 0xd6, 0x0e, 0x3a, 0x11, 0xee, 0x11,
+0x46, 0x10, 0x64, 0x0c, 0x38, 0x07, 0x04, 0x02, 0xc4, 0xfd, 0x12, 0xfb, 0xb4, 0xf9, 0x10, 0xf9,
+0x66, 0xf8, 0x38, 0xf7, 0x2c, 0xf5, 0xd8, 0xf2, 0xe6, 0xf0, 0xc2, 0xf0, 0x9c, 0xf3, 0xca, 0xf9,
+0xa2, 0x02, 0x24, 0x0c, 0x7e, 0x14, 0xb4, 0x19, 0x66, 0x1b, 0xc8, 0x19, 0xf8, 0x15, 0x98, 0x10,
+0x56, 0x0a, 0x58, 0x03, 0x36, 0xfb, 0x18, 0xf2, 0x4c, 0xe8, 0x37, 0xdf, 0xd9, 0xd8, 0x81, 0xd7,
+0xdf, 0xdc, 0x0e, 0xe9, 0x5c, 0xfa, 0x4e, 0x0d, 0x75, 0x1e, 0xa9, 0x2a, 0x9d, 0x30, 0x6f, 0x30,
+0x55, 0x2b, 0xb3, 0x22, 0x70, 0x17, 0xfa, 0x09, 0x6a, 0xfa, 0x72, 0xe9, 0xb5, 0xd8, 0xdd, 0xca,
+0xc9, 0xc2, 0x2d, 0xc3, 0x4b, 0xcd, 0x59, 0xe0, 0x4a, 0xf9, 0x9a, 0x13, 0x71, 0x2a, 0xa3, 0x3a,
+0xb5, 0x42, 0xfd, 0x42, 0xb7, 0x3c, 0x0d, 0x31, 0xbb, 0x20, 0x5c, 0x0c, 0xe0, 0xf4, 0x47, 0xdc,
+0xe5, 0xc5, 0x3f, 0xb5, 0xf3, 0xad, 0x27, 0xb2, 0x43, 0xc2, 0x23, 0xdc, 0xce, 0xfb, 0xc0, 0x1b,
+0x27, 0x37, 0x5f, 0x4a, 0x01, 0x54, 0x0f, 0x54, 0x3f, 0x4b, 0xcd, 0x3a, 0xcd, 0x23, 0xbc, 0x07,
+0x00, 0xe9, 0x65, 0xcb, 0xd9, 0xb2, 0x76, 0xa3, 0xbe, 0x9f, 0xd0, 0xa8, 0x0b, 0xbe, 0xb5, 0xdc,
+0x58, 0x00, 0xb1, 0x23, 0xdf, 0x41, 0x66, 0x57, 0x3e, 0x62, 0x84, 0x61, 0x86, 0x55, 0x7f, 0x3f,
+0x77, 0x21, 0xa4, 0xfe, 0xe3, 0xda, 0xf7, 0xba, 0x66, 0xa3, 0x3a, 0x97, 0x10, 0x98, 0xc0, 0xa5,
+0xeb, 0xbe, 0xc7, 0xe0, 0x14, 0x07, 0xa9, 0x2c, 0xcb, 0x4c, 0x48, 0x63, 0x46, 0x6d, 0x7e, 0x69,
+0x3c, 0x58, 0xd3, 0x3b, 0x02, 0x18, 0x3e, 0xf1, 0xa3, 0xcc, 0xc5, 0xae, 0x0e, 0x9b, 0x42, 0x93,
+0xbc, 0x97, 0x1a, 0xa8, 0x3d, 0xc3, 0x90, 0xe6, 0x26, 0x0e, 0x1b, 0x35, 0xd0, 0x55, 0xc4, 0x6b,
+0x30, 0x73, 0xd0, 0x6a, 0x2f, 0x54, 0x21, 0x33, 0x8e, 0x0c, 0xd8, 0xe5, 0xa5, 0xc3, 0x8a, 0xa9,
+0xf8, 0x99, 0x72, 0x95, 0x3a, 0x9c, 0x05, 0xae, 0x01, 0xca, 0x06, 0xee, 0x0c, 0x16, 0x7b, 0x3c,
+0x98, 0x5b, 0x24, 0x6e, 0xc0, 0x70, 0x74, 0x63, 0x09, 0x49, 0x8b, 0x26, 0x76, 0x01, 0x65, 0xde,
+0x03, 0xc1, 0xb3, 0xab, 0xac, 0x9f, 0x90, 0x9d, 0x9a, 0xa5, 0xfb, 0xb7, 0x1d, 0xd4, 0x9e, 0xf7,
+0x1b, 0x1e, 0xf1, 0x41, 0xd4, 0x5c, 0x16, 0x6a, 0x90, 0x67, 0x7c, 0x56, 0x13, 0x3b, 0x54, 0x1a,
+0x16, 0xf9, 0x09, 0xdb, 0xb7, 0xc2, 0xb7, 0xb1, 0x08, 0xa9, 0x10, 0xa9, 0x55, 0xb2, 0x27, 0xc5,
+0x4d, 0xe0, 0x5a, 0x01, 0x85, 0x23, 0x87, 0x41, 0x24, 0x56, 0xe2, 0x5d, 0xf8, 0x57, 0xb1, 0x46,
+0xdb, 0x2d, 0xd4, 0x11, 0x44, 0xf6, 0xb5, 0xdd, 0x6b, 0xca, 0x83, 0xbd, 0xcd, 0xb7, 0xd5, 0xb9,
+0xd1, 0xc3, 0x43, 0xd5, 0xee, 0xec, 0xd4, 0x07, 0x7b, 0x22, 0xb9, 0x38, 0xdb, 0x46, 0xd1, 0x4a,
+0x9d, 0x44, 0xe9, 0x35, 0xe1, 0x21, 0x96, 0x0b, 0xcc, 0xf5, 0x25, 0xe3, 0xf7, 0xd4, 0x61, 0xcc,
+0xd7, 0xc9, 0x6d, 0xcd, 0x85, 0xd6, 0x78, 0xe4, 0xa4, 0xf5, 0x5a, 0x08, 0x46, 0x1a, 0xf5, 0x28,
+0x53, 0x32, 0xdd, 0x34, 0x7b, 0x30, 0x27, 0x26, 0xde, 0x17, 0x12, 0x08, 0x28, 0xf9, 0xdc, 0xec,
+0x76, 0xe4, 0x5f, 0xe0, 0x41, 0xe0, 0x87, 0xe3, 0x00, 0xe9, 0xf0, 0xef, 0xf8, 0xf7, 0xd2, 0x00,
+0x30, 0x0a, 0x20, 0x13, 0x22, 0x1a, 0xa7, 0x1d, 0xf5, 0x1c, 0x0a, 0x18, 0x4c, 0x10, 0xb4, 0x07,
+0x38, 0x00, 0xf0, 0xfa, 0x32, 0xf8, 0x9e, 0xf7, 0x10, 0xf8, 0x2a, 0xf8, 0x2e, 0xf7, 0x4c, 0xf5,
+0x9c, 0xf3, 0xb0, 0xf3, 0x66, 0xf6, 0x70, 0xfb, 0xa0, 0x01, 0x46, 0x07, 0xf8, 0x0a, 0x6c, 0x0c,
+0x34, 0x0c, 0xca, 0x0b, 0x14, 0x0c, 0x52, 0x0d, 0xc6, 0x0e, 0x4a, 0x0f, 0x3a, 0x0d, 0xc4, 0x07,
+0x00, 0xff, 0x52, 0xf4, 0x4a, 0xea, 0x4b, 0xe3, 0x15, 0xe1, 0xc0, 0xe3, 0x32, 0xea, 0x96, 0xf2,
+0x82, 0xfb, 0x0c, 0x04, 0x4e, 0x0c, 0x9c, 0x14, 0x85, 0x1c, 0x21, 0x23, 0xbf, 0x26, 0xbf, 0x25,
+0x31, 0x1f, 0xf8, 0x12, 0x50, 0x02, 0xd2, 0xef, 0xd1, 0xde, 0x45, 0xd2, 0x57, 0xcc, 0x59, 0xcd,
+0xad, 0xd4, 0xa1, 0xe0, 0x9a, 0xef, 0x50, 0x00, 0x8e, 0x11, 0xf9, 0x21, 0xdf, 0x2f, 0x3b, 0x39,
+0x2f, 0x3c, 0xbd, 0x37, 0xcb, 0x2b, 0x50, 0x19, 0x28, 0x02, 0x60, 0xe9, 0x8b, 0xd2, 0x57, 0xc1,
+0x3b, 0xb8, 0x99, 0xb8, 0x0f, 0xc2, 0x43, 0xd3, 0xd6, 0xe9, 0x4c, 0x03, 0x85, 0x1c, 0xd3, 0x32,
+0x85, 0x43, 0xa7, 0x4c, 0x1f, 0x4d, 0x69, 0x44, 0x63, 0x33, 0x72, 0x1b, 0xf0, 0xfe, 0xd9, 0xe0,
+0x59, 0xc5, 0x47, 0xb0, 0x78, 0xa5, 0xbc, 0xa6, 0x4f, 0xb4, 0x59, 0xcc, 0x32, 0xeb, 0x78, 0x0c,
+0x85, 0x2b, 0xa7, 0x44, 0x34, 0x55, 0xe0, 0x5b, 0x6c, 0x58, 0x5d, 0x4b, 0xbf, 0x35, 0x54, 0x19,
+0x46, 0xf8, 0xf1, 0xd5, 0xc3, 0xb6, 0xca, 0x9f, 0x68, 0x95, 0x3c, 0x9a, 0xcd, 0xad, 0x2f, 0xcd,
+0xd6, 0xf2, 0xcc, 0x18, 0xc5, 0x39, 0x63, 0x52, 0xec, 0x60, 0xd0, 0x64, 0x3e, 0x5e, 0xcf, 0x4d,
+0xc7, 0x34, 0xa0, 0x14, 0xc6, 0xef, 0x1f, 0xca, 0x36, 0xa9, 0xca, 0x92, 0x90, 0x8b, 0x8e, 0x95,
+0x1d, 0xaf, 0xc1, 0xd3, 0xbc, 0xfc, 0x9f, 0x23, 0xb9, 0x43, 0x48, 0x5a, 0x6a, 0x66, 0xb8, 0x67,
+0x86, 0x5e, 0x59, 0x4b, 0x71, 0x2f, 0x68, 0x0c, 0x52, 0xe5, 0xc3, 0xbe, 0xe6, 0x9e, 0xd4, 0x8b,
+0x46, 0x89, 0x42, 0x98, 0xbd, 0xb5, 0x71, 0xdc, 0x6c, 0x05, 0xc7, 0x2a, 0xb5, 0x48, 0x30, 0x5d,
+0x30, 0x67, 0x2c, 0x66, 0x9a, 0x5a, 0x05, 0x45, 0xc5, 0x26, 0x08, 0x02, 0xa1, 0xda, 0xeb, 0xb5,
+0x04, 0x9a, 0x0e, 0x8c, 0x86, 0x8e, 0x08, 0xa1, 0xf9, 0xbf, 0xda, 0xe5, 0x96, 0x0c, 0x15, 0x2f,
+0x0d, 0x4a, 0x94, 0x5b, 0x96, 0x62, 0x8e, 0x5e, 0xfd, 0x4f, 0x13, 0x38, 0xbc, 0x18, 0x0c, 0xf5,
+0x3d, 0xd1, 0x87, 0xb2, 0x80, 0x9d, 0x74, 0x95, 0x8e, 0x9b, 0xb5, 0xae, 0xc7, 0xcb, 0xf4, 0xed,
+0x70, 0x10, 0xef, 0x2e, 0x73, 0x46, 0xbd, 0x54, 0xd6, 0x58, 0x5b, 0x52, 0x57, 0x42, 0x6b, 0x2a,
+0x1e, 0x0d, 0xe4, 0xed, 0x75, 0xd0, 0xd9, 0xb8, 0xb4, 0xa9, 0x52, 0xa5, 0x05, 0xac, 0x41, 0xbd,
+0x7d, 0xd6, 0x2e, 0xf4, 0xe0, 0x11, 0xe3, 0x2b, 0x09, 0x3f, 0x1f, 0x49, 0x73, 0x49, 0x8f, 0x40,
+0x43, 0x30, 0xa0, 0x1a, 0xae, 0x02, 0x04, 0xeb, 0x31, 0xd6, 0xf7, 0xc5, 0xed, 0xbb, 0x31, 0xb9,
+0xdd, 0xbe, 0xa3, 0xcc, 0x17, 0xe1, 0xfe, 0xf8, 0xe2, 0x10, 0x11, 0x25, 0xb7, 0x32, 0x2f, 0x38,
+0x95, 0x35, 0x75, 0x2c, 0xcd, 0x1e, 0x04, 0x0f, 0x0a, 0xff, 0x72, 0xf0, 0x95, 0xe3, 0x29, 0xd9,
+0xb7, 0xd1, 0xb5, 0xce, 0x65, 0xd1, 0x6d, 0xda, 0xcc, 0xe8, 0x0a, 0xfa, 0x32, 0x0b, 0xe2, 0x18,
+0x15, 0x21, 0x11, 0x23, 0xf1, 0x1f, 0x78, 0x19, 0x86, 0x11, 0x90, 0x09, 0x36, 0x02, 0xa4, 0xfb,
+0x24, 0xf5, 0x78, 0xee, 0x1c, 0xe8, 0xbb, 0xe3, 0xd9, 0xe2, 0x5a, 0xe6, 0xd8, 0xed, 0x6e, 0xf7,
+0xda, 0x00, 0xca, 0x07, 0x56, 0x0b, 0xda, 0x0b, 0xba, 0x0a, 0x4c, 0x09, 0x62, 0x08, 0x80, 0x08,
+0x38, 0x09, 0x9e, 0x09, 0x6e, 0x08, 0xd0, 0x04, 0x36, 0xff, 0xf4, 0xf8, 0xc2, 0xf3, 0x82, 0xf0,
+0x90, 0xef, 0x2c, 0xf0, 0x4e, 0xf1, 0x56, 0xf2, 0x36, 0xf3, 0xa2, 0xf4, 0x72, 0xf7, 0x42, 0xfc,
+0xca, 0x02, 0xbe, 0x0a, 0xfe, 0x12, 0xd2, 0x19, 0x61, 0x1d, 0x81, 0x1c, 0x14, 0x17, 0xc2, 0x0d,
+0x40, 0x02, 0x24, 0xf6, 0x1c, 0xeb, 0x61, 0xe2, 0x65, 0xdc, 0xbf, 0xd9, 0x97, 0xda, 0x37, 0xdf,
+0x62, 0xe7, 0xfa, 0xf2, 0x22, 0x01, 0xae, 0x10, 0xcb, 0x1f, 0x2f, 0x2c, 0x6b, 0x33, 0xa7, 0x33,
+0x13, 0x2c, 0x23, 0x1d, 0x62, 0x09, 0xd0, 0xf3, 0xeb, 0xdf, 0x37, 0xd0, 0xa5, 0xc6, 0x67, 0xc3,
+0xa5, 0xc6, 0x99, 0xcf, 0x6f, 0xdd, 0x46, 0xef, 0x16, 0x04, 0x1a, 0x1a, 0xcb, 0x2e, 0x79, 0x3f,
+0xc1, 0x48, 0x0b, 0x48, 0x0d, 0x3c, 0x13, 0x26, 0xa6, 0x09, 0xe2, 0xeb, 0x53, 0xd1, 0xa9, 0xbd,
+0xb7, 0xb2, 0xef, 0xb0, 0x33, 0xb7, 0x91, 0xc4, 0xa1, 0xd7, 0x64, 0xef, 0x4c, 0x0a, 0xf1, 0x25,
+0x49, 0x3f, 0x53, 0x52, 0x68, 0x5b, 0x0e, 0x57, 0x2d, 0x45, 0xf5, 0x27, 0xb0, 0x04, 0x47, 0xe1,
+0x4f, 0xc3, 0x39, 0xae, 0xb0, 0xa3, 0xb6, 0xa3, 0xdb, 0xac, 0x0f, 0xbe, 0x07, 0xd6, 0x5a, 0xf3,
+0xb6, 0x13, 0xff, 0x33, 0xff, 0x4f, 0x10, 0x63, 0x1e, 0x69, 0xba, 0x5f, 0xa9, 0x47, 0xfb, 0x24,
+0x52, 0xfd, 0x39, 0xd7, 0xcf, 0xb7, 0xcc, 0xa2, 0x3e, 0x99, 0x00, 0x9b, 0x2a, 0xa7, 0x5d, 0xbc,
+0x85, 0xd9, 0xf4, 0xfb, 0x81, 0x20, 0xe7, 0x42, 0x56, 0x5e, 0x2e, 0x6e, 0x16, 0x6f, 0x50, 0x60,
+0xe3, 0x43, 0x4f, 0x1e, 0x5e, 0xf5, 0xd9, 0xce, 0xe7, 0xaf, 0xdc, 0x9b, 0xd6, 0x93, 0xd8, 0x97,
+0x52, 0xa7, 0x03, 0xc1, 0x9b, 0xe2, 0x86, 0x08, 0x3f, 0x2e, 0x11, 0x4f, 0xc8, 0x66, 0x6c, 0x71,
+0x56, 0x6d, 0x0e, 0x5b, 0x21, 0x3d, 0x88, 0x17, 0x40, 0xef, 0x93, 0xc9, 0x85, 0xab, 0xc4, 0x98,
+0x9e, 0x92, 0xac, 0x99, 0x25, 0xad, 0x0d, 0xcb, 0x74, 0xef, 0x9c, 0x15, 0xbf, 0x38, 0xbf, 0x54,
+0xac, 0x66, 0x2c, 0x6c, 0xce, 0x64, 0x8f, 0x51, 0x99, 0x34, 0xd6, 0x10, 0x94, 0xea, 0xf5, 0xc6,
+0xfc, 0xaa, 0xac, 0x9a, 0xb6, 0x97, 0x7e, 0xa2, 0x65, 0xb9, 0x23, 0xd9, 0xc6, 0xfc, 0x49, 0x1f,
+0xdf, 0x3c, 0xb5, 0x52, 0x2c, 0x5f, 0x58, 0x61, 0x0c, 0x59, 0xe3, 0x46, 0x09, 0x2c, 0xe6, 0x0a,
+0x36, 0xe7, 0x61, 0xc6, 0xab, 0xad, 0xd8, 0xa0, 0xf2, 0xa1, 0x0f, 0xb0, 0x97, 0xc8, 0xf8, 0xe6,
+0x70, 0x06, 0xbb, 0x22, 0x85, 0x39, 0x55, 0x49, 0x85, 0x51, 0xd7, 0x51, 0xff, 0x49, 0xe1, 0x39,
+0xfd, 0x21, 0xac, 0x04, 0x5c, 0xe5, 0x8d, 0xc9, 0xf9, 0xb5, 0x33, 0xae, 0xf3, 0xb2, 0xa9, 0xc2,
+0x59, 0xd9, 0xb8, 0xf2, 0x00, 0x0b, 0x8f, 0x1f, 0x53, 0x2f, 0xf1, 0x39, 0x5f, 0x3f, 0x3b, 0x3f,
+0x21, 0x39, 0x03, 0x2c, 0x72, 0x18, 0x70, 0x00, 0xac, 0xe7, 0x7b, 0xd2, 0x1b, 0xc5, 0xaf, 0xc1,
+0xe9, 0xc7, 0xad, 0xd5, 0x3a, 0xe7, 0x3a, 0xf9, 0x8e, 0x09, 0xec, 0x16, 0xb9, 0x20, 0x45, 0x27,
+0xb1, 0x2a, 0xc1, 0x2a, 0xd3, 0x26, 0x37, 0x1e, 0xf4, 0x10, 0xe8, 0x00, 0xac, 0xf0, 0x21, 0xe3,
+0x0f, 0xdb, 0x9d, 0xd9, 0x0f, 0xde, 0x6c, 0xe6, 0x74, 0xf0, 0x1a, 0xfa, 0x72, 0x02, 0x22, 0x09,
+0x16, 0x0e, 0xba, 0x11, 0x80, 0x14, 0x3c, 0x16, 0x3c, 0x16, 0xfe, 0x13, 0x06, 0x0f, 0xf8, 0x07,
+0xf2, 0xff, 0x90, 0xf8, 0x50, 0xf3, 0x02, 0xf1, 0x68, 0xf1, 0x50, 0xf3, 0xfc, 0xf5, 0x2e, 0xf8,
+0x80, 0xf9, 0x04, 0xfa, 0x36, 0xfa, 0xd8, 0xfa, 0x02, 0xfd, 0x28, 0x01, 0xae, 0x06, 0x94, 0x0c,
+0x62, 0x11, 0xa4, 0x13, 0x06, 0x13, 0x28, 0x10, 0xb8, 0x0b, 0x06, 0x07, 0x6a, 0x02, 0xd0, 0xfd,
+0xda, 0xf8, 0x8c, 0xf3, 0xa6, 0xed, 0xf2, 0xe7, 0xe2, 0xe3, 0x0b, 0xe3, 0x12, 0xe7, 0x80, 0xf0,
+0x54, 0xfe, 0xd0, 0x0d, 0x22, 0x1c, 0xfb, 0x25, 0x05, 0x2a, 0x75, 0x28, 0x95, 0x22, 0xcc, 0x19,
+0x4c, 0x0f, 0xb2, 0x03, 0x3a, 0xf7, 0x30, 0xea, 0x21, 0xdd, 0xf7, 0xd1, 0x6b, 0xcb, 0xe3, 0xcb,
+0x85, 0xd4, 0x68, 0xe5, 0xfc, 0xfb, 0x76, 0x14, 0xf9, 0x29, 0x05, 0x39, 0x6d, 0x3f, 0xad, 0x3d,
+0x6b, 0x35, 0x37, 0x28, 0xc8, 0x17, 0xfe, 0x04, 0xe0, 0xf0, 0x91, 0xdc, 0x3f, 0xca, 0x79, 0xbc,
+0x61, 0xb6, 0x47, 0xba, 0xed, 0xc8, 0xdf, 0xe0, 0xae, 0xfe, 0x53, 0x1d, 0xa1, 0x37, 0xcb, 0x49,
+0xbf, 0x51, 0xa1, 0x4f, 0x01, 0x45, 0x89, 0x33, 0xcf, 0x1c, 0x88, 0x02, 0xba, 0xe6, 0x1b, 0xcc,
+0x2b, 0xb6, 0x62, 0xa8, 0x7c, 0xa5, 0xff, 0xae, 0x63, 0xc4, 0xd9, 0xe2, 0xea, 0x05, 0x6b, 0x28,
+0x47, 0x45, 0xb2, 0x58, 0xc4, 0x60, 0xfc, 0x5c, 0xc7, 0x4e, 0x25, 0x38, 0x0c, 0x1b, 0x3e, 0xfa,
+0xfd, 0xd8, 0x77, 0xbb, 0xa4, 0xa5, 0xbe, 0x9a, 0x7e, 0x9c, 0xfc, 0xaa, 0xf1, 0xc4, 0xd2, 0xe6,
+0x5c, 0x0c, 0xa3, 0x30, 0xff, 0x4e, 0x76, 0x63, 0x84, 0x6b, 0x04, 0x66, 0xc7, 0x53, 0x7d, 0x37,
+0x4e, 0x14, 0x30, 0xee, 0xf7, 0xc9, 0x93, 0xac, 0xc6, 0x99, 0x76, 0x93, 0x12, 0x9a, 0xa1, 0xac,
+0x49, 0xc9, 0x12, 0xed, 0xb2, 0x13, 0xf7, 0x38, 0x08, 0x58, 0x5c, 0x6c, 0x90, 0x72, 0x4a, 0x69,
+0x0b, 0x52, 0x4d, 0x30, 0xf0, 0x08, 0xf5, 0xe0, 0xdd, 0xbd, 0x0c, 0xa4, 0x00, 0x96, 0x2e, 0x94,
+0x10, 0x9e, 0x79, 0xb2, 0xc7, 0xcf, 0x96, 0xf3, 0x36, 0x1a, 0x27, 0x3f, 0x5c, 0x5d, 0xb8, 0x6f,
+0x78, 0x72, 0xd8, 0x64, 0x45, 0x49, 0xa5, 0x24, 0x86, 0xfc, 0xb5, 0xd6, 0xab, 0xb7, 0xec, 0xa2,
+0x7c, 0x99, 0x00, 0x9b, 0xa2, 0xa6, 0xb3, 0xbb, 0xf9, 0xd8, 0x14, 0xfc, 0x97, 0x21, 0x81, 0x44,
+0x82, 0x5f, 0x66, 0x6d, 0x42, 0x6b, 0x76, 0x59, 0xd7, 0x3b, 0xb2, 0x17, 0xc8, 0xf2, 0x07, 0xd2,
+0xd9, 0xb8, 0xfa, 0xa8, 0xfe, 0xa2, 0x60, 0xa6, 0x99, 0xb2, 0x59, 0xc7, 0x51, 0xe3, 0x3a, 0x04,
+0x45, 0x26, 0xe3, 0x44, 0x7a, 0x5a, 0x48, 0x63, 0x5e, 0x5d, 0x6b, 0x4a, 0x61, 0x2e, 0x46, 0x0e,
+0xf6, 0xee, 0x11, 0xd4, 0x39, 0xc0, 0x2f, 0xb4, 0x93, 0xb0, 0x09, 0xb5, 0x4d, 0xc1, 0xb7, 0xd4,
+0x18, 0xee, 0xac, 0x0a, 0x09, 0x27, 0x1b, 0x3f, 0x93, 0x4e, 0xcb, 0x52, 0x6f, 0x4b, 0xf9, 0x39,
+0x35, 0x22, 0x1a, 0x08, 0x50, 0xef, 0xa1, 0xda, 0xc9, 0xcb, 0xb1, 0xc3, 0x4f, 0xc2, 0xb7, 0xc7,
+0x07, 0xd3, 0x67, 0xe3, 0x24, 0xf7, 0x66, 0x0c, 0x87, 0x20, 0xd1, 0x30, 0xf5, 0x3a, 0x0d, 0x3d,
+0x35, 0x37, 0x5f, 0x2a, 0xee, 0x18, 0xd2, 0x05, 0xda, 0xf3, 0x20, 0xe5, 0x0d, 0xdb, 0x71, 0xd6,
+0x0b, 0xd7, 0x41, 0xdc, 0xd0, 0xe4, 0x70, 0xef, 0x4a, 0xfb, 0x56, 0x07, 0xc0, 0x12, 0x97, 0x1c,
+0x7d, 0x23, 0x09, 0x26, 0xab, 0x23, 0xc7, 0x1c, 0x7a, 0x12, 0xec, 0x06, 0x10, 0xfc, 0xa4, 0xf3,
+0x7e, 0xee, 0xde, 0xec, 0xfe, 0xed, 0x8c, 0xf0, 0x64, 0xf3, 0xd6, 0xf5, 0x0e, 0xf8, 0xfc, 0xfa,
+0x54, 0xff, 0xea, 0x04, 0xfa, 0x0a, 0xf4, 0x0f, 0x4c, 0x12, 0xc8, 0x11, 0xf6, 0x0e, 0x02, 0x0b,
+0x7a, 0x07, 0x4a, 0x05, 0x9a, 0x04, 0xbc, 0x04, 0x50, 0x04, 0xf6, 0x01, 0x2e, 0xfd, 0x8a, 0xf6,
+0xc6, 0xef, 0xf6, 0xea, 0xe8, 0xe9, 0x22, 0xed, 0xa8, 0xf3, 0xb0, 0xfb, 0x60, 0x03, 0xc2, 0x09,
+0xcc, 0x0e, 0x10, 0x13, 0xe8, 0x16, 0x46, 0x1a, 0x3c, 0x1c, 0x90, 0x1b, 0xf2, 0x16, 0xaa, 0x0d,
+0x96, 0x00, 0x74, 0xf1, 0x51, 0xe3, 0xdd, 0xd8, 0x69, 0xd4, 0x9d, 0xd6, 0x8b, 0xde, 0x62, 0xea,
+0x18, 0xf8, 0x14, 0x06, 0x8a, 0x13, 0xd9, 0x1f, 0x17, 0x2a, 0xcb, 0x30, 0x93, 0x32, 0x67, 0x2e,
+0xcd, 0x23, 0x62, 0x13, 0xc4, 0xfe, 0xf0, 0xe8, 0x19, 0xd5, 0xa5, 0xc6, 0xc9, 0xbf, 0xb5, 0xc1,
+0xb1, 0xcb, 0x37, 0xdc, 0xd6, 0xf0, 0x6e, 0x07, 0xa1, 0x1d, 0xff, 0x30, 0x87, 0x3f, 0xe5, 0x46,
+0x57, 0x46, 0x45, 0x3d, 0x85, 0x2c, 0xba, 0x15, 0x24, 0xfb, 0xb1, 0xdf, 0x25, 0xc7, 0x29, 0xb5,
+0x7b, 0xac, 0xcb, 0xae, 0x2d, 0xbc, 0xe9, 0xd2, 0xde, 0xef, 0x00, 0x0f, 0x1f, 0x2c, 0xbb, 0x43,
+0xe7, 0x52, 0x1c, 0x58, 0x21, 0x53, 0xf5, 0x44, 0x0b, 0x2f, 0x7e, 0x13, 0x72, 0xf4, 0x33, 0xd5,
+0x69, 0xb9, 0x56, 0xa5, 0x74, 0x9c, 0x16, 0xa1, 0x9f, 0xb3, 0x73, 0xd1, 0x0e, 0xf6, 0x6e, 0x1b,
+0x23, 0x3c, 0x49, 0x54, 0x86, 0x61, 0x3c, 0x63, 0xea, 0x59, 0x79, 0x47, 0x9f, 0x2d, 0x82, 0x0e,
+0x26, 0xec, 0xcf, 0xc9, 0xf9, 0xab, 0x58, 0x97, 0x62, 0x90, 0x84, 0x99, 0x73, 0xb2, 0xff, 0xd6,
+0xd0, 0x00, 0xb7, 0x28, 0x31, 0x49, 0x14, 0x5f, 0x1a, 0x69, 0x42, 0x67, 0xf0, 0x5a, 0xcb, 0x45,
+0x7f, 0x29, 0xba, 0x07, 0x01, 0xe3, 0x1d, 0xbf, 0x3a, 0xa1, 0xc2, 0x8e, 0xe4, 0x8b, 0x84, 0x9a,
+0x97, 0xb8, 0xc5, 0xe0, 0x88, 0x0b, 0x57, 0x32, 0x5d, 0x50, 0x62, 0x63, 0x74, 0x6a, 0x26, 0x66,
+0x9a, 0x57, 0x43, 0x40, 0xe7, 0x21, 0x32, 0xfe, 0x85, 0xd8, 0x4d, 0xb5, 0x38, 0x9a, 0x1e, 0x8c,
+0x96, 0x8e, 0xca, 0xa1, 0x95, 0xc2, 0xe8, 0xea, 0xd4, 0x13, 0x87, 0x37, 0x37, 0x52, 0x20, 0x62,
+0xa6, 0x66, 0x38, 0x60, 0xcd, 0x4f, 0xe1, 0x36, 0x1a, 0x17, 0x44, 0xf3, 0x3d, 0xcf, 0xf7, 0xaf,
+0x76, 0x9a, 0x88, 0x92, 0xbe, 0x99, 0x35, 0xaf, 0x5f, 0xcf, 0xa8, 0xf4, 0x4a, 0x19, 0x59, 0x38,
+0xd9, 0x4e, 0x3c, 0x5b, 0x2a, 0x5d, 0xab, 0x54, 0xf9, 0x42, 0x93, 0x29, 0xe2, 0x0a, 0x4c, 0xea,
+0xa7, 0xcb, 0x3b, 0xb3, 0x26, 0xa4, 0xca, 0xa0, 0x62, 0xa9, 0x2d, 0xbd, 0x13, 0xd9, 0x20, 0xf9,
+0x9e, 0x18, 0x89, 0x33, 0xdd, 0x46, 0xa1, 0x50, 0x13, 0x50, 0xbf, 0x45, 0x23, 0x33, 0xae, 0x1a,
+0x94, 0xff, 0xfc, 0xe4, 0x1b, 0xce, 0x31, 0xbd, 0x05, 0xb4, 0x27, 0xb3, 0x43, 0xbb, 0x7d, 0xcb,
+0x5b, 0xe2, 0xa8, 0xfc, 0xc0, 0x16, 0xa5, 0x2c, 0x69, 0x3b, 0x6f, 0x41, 0x51, 0x3e, 0x3d, 0x33,
+0x35, 0x22, 0x44, 0x0e, 0x10, 0xfa, 0x0c, 0xe8, 0x63, 0xd9, 0xf3, 0xce, 0x07, 0xc9, 0x37, 0xc8,
+0x2d, 0xcd, 0x31, 0xd8, 0xa2, 0xe8, 0x4c, 0xfc, 0xda, 0x0f, 0xcf, 0x1f, 0xd1, 0x29, 0xb1, 0x2c,
+0xd1, 0x28, 0xb1, 0x1f, 0xac, 0x13, 0x18, 0x07, 0xe2, 0xfb, 0x8e, 0xf2, 0x32, 0xeb, 0x48, 0xe5,
+0xc9, 0xe0, 0x45, 0xde, 0xe5, 0xde, 0xd2, 0xe3, 0x26, 0xed, 0x4c, 0xf9, 0x7e, 0x05, 0x2a, 0x0f,
+0x9a, 0x14, 0x94, 0x15, 0xfc, 0x12, 0x5c, 0x0e, 0x6e, 0x09, 0x94, 0x05, 0x1e, 0x03, 0x68, 0x01,
+0x66, 0xff, 0x26, 0xfc, 0x7e, 0xf7, 0x5e, 0xf2, 0x4e, 0xee, 0xe8, 0xec, 0x9a, 0xee, 0x94, 0xf2,
+0x0a, 0xf7, 0xcc, 0xfa, 0x18, 0xfd, 0x6a, 0xfe, 0x8c, 0xff, 0x5c, 0x01, 0xa4, 0x04, 0x48, 0x09,
+0x7c, 0x0e, 0xc2, 0x12, 0xb4, 0x14, 0x2e, 0x13, 0xdc, 0x0d, 0x9e, 0x05, 0xf6, 0xfb, 0xba, 0xf2,
+0x2c, 0xeb, 0xc6, 0xe5, 0xb5, 0xe2, 0x11, 0xe2, 0xf2, 0xe3, 0x76, 0xe8, 0x9c, 0xef, 0x1a, 0xf9,
+0x6a, 0x04, 0x80, 0x10, 0xe2, 0x1b, 0xf1, 0x24, 0xe9, 0x29, 0x45, 0x29, 0x3d, 0x22, 0x78, 0x15,
+0x84, 0x04, 0x20, 0xf2, 0x1b, 0xe1, 0xa7, 0xd3, 0xd7, 0xcb, 0x1b, 0xca, 0x6b, 0xce, 0xd9, 0xd7,
+0x70, 0xe5, 0xfc, 0xf5, 0x28, 0x08, 0x74, 0x1a, 0x11, 0x2b, 0x1f, 0x38, 0x11, 0x3f, 0xdd, 0x3d,
+0x2f, 0x33, 0xd5, 0x1f, 0x54, 0x06, 0xdc, 0xea, 0xd7, 0xd1, 0x69, 0xbf, 0xe9, 0xb5, 0xc9, 0xb5,
+0xf5, 0xbd, 0xb9, 0xcc, 0x49, 0xe0, 0xdc, 0xf6, 0xc8, 0x0e, 0x2d, 0x26, 0x15, 0x3b, 0xbd, 0x4a,
+0x33, 0x52, 0x49, 0x4e, 0x55, 0x3e, 0x6d, 0x23, 0xe2, 0x01, 0x4d, 0xdf, 0xb9, 0xc1, 0x8d, 0xad,
+0xee, 0xa4, 0x62, 0xa7, 0x0f, 0xb3, 0x15, 0xc6, 0x23, 0xde, 0xb4, 0xf9, 0x94, 0x16, 0xb5, 0x32,
+0x0f, 0x4b, 0xf8, 0x5b, 0x74, 0x61, 0xf0, 0x58, 0x59, 0x42, 0x8f, 0x20, 0x34, 0xf9, 0xd5, 0xd2,
+0xbd, 0xb3, 0x08, 0xa0, 0x06, 0x99, 0xce, 0x9d, 0x9f, 0xac, 0x53, 0xc3, 0x03, 0xe0, 0x6e, 0x00,
+0xf9, 0x21, 0x6f, 0x41, 0xe0, 0x5a, 0xec, 0x69, 0xee, 0x6a, 0x90, 0x5c, 0x51, 0x40, 0x56, 0x1a,
+0x48, 0xf0, 0x0b, 0xc9, 0x26, 0xaa, 0x88, 0x97, 0x00, 0x92, 0xc0, 0x98, 0x52, 0xaa, 0xd9, 0xc4,
+0x10, 0xe6, 0xa4, 0x0a, 0x0d, 0x2f, 0xeb, 0x4e, 0x28, 0x66, 0x9c, 0x70, 0x18, 0x6c, 0xca, 0x58,
+0x65, 0x39, 0x42, 0x12, 0xc6, 0xe8, 0xd5, 0xc2, 0x88, 0xa5, 0x7c, 0x94, 0x98, 0x90, 0x9c, 0x99,
+0x47, 0xae, 0x85, 0xcc, 0x00, 0xf1, 0x6c, 0x17, 0xfb, 0x3a, 0x74, 0x57, 0x38, 0x69, 0xea, 0x6d,
+0xda, 0x64, 0x5b, 0x4f, 0x23, 0x30, 0xc2, 0x0a, 0xde, 0xe3, 0x5b, 0xc0, 0x38, 0xa5, 0x0a, 0x96,
+0x6c, 0x94, 0x2a, 0xa0, 0x0f, 0xb8, 0xdd, 0xd8, 0x1c, 0xfe, 0xa3, 0x22, 0xcd, 0x41, 0x52, 0x58,
+0xfe, 0x63, 0x12, 0x64, 0xfc, 0x58, 0x17, 0x44, 0x27, 0x27, 0x00, 0x05, 0x63, 0xe1, 0xd5, 0xc0,
+0x86, 0xa8, 0x2e, 0x9c, 0x9e, 0x9d, 0x6d, 0xac, 0x5d, 0xc6, 0xfc, 0xe6, 0x60, 0x09, 0x7f, 0x28,
+0xdd, 0x40, 0xdd, 0x50, 0xb4, 0x57, 0x72, 0x55, 0x9b, 0x4a, 0x0b, 0x38, 0xa9, 0x1e, 0xa2, 0x00,
+0xff, 0xe0, 0x6d, 0xc4, 0x03, 0xb0, 0x92, 0xa7, 0x39, 0xac, 0x05, 0xbd, 0x5d, 0xd6, 0x80, 0xf3,
+0xc4, 0x0f, 0x8f, 0x27, 0xd1, 0x38, 0x29, 0x43, 0xb9, 0x46, 0xbf, 0x43, 0xb7, 0x3a, 0x4f, 0x2b,
+0x5e, 0x16, 0x66, 0xfd, 0x83, 0xe3, 0xcd, 0xcc, 0x01, 0xbe, 0xbd, 0xb9, 0x99, 0xc0, 0x6d, 0xd0,
+0x54, 0xe5, 0x6e, 0xfb, 0x50, 0x0f, 0x11, 0x1f, 0xe1, 0x29, 0x1d, 0x30, 0xff, 0x31, 0xd5, 0x2f,
+0x91, 0x29, 0xd1, 0x1e, 0xb6, 0x0f, 0xbe, 0xfd, 0x18, 0xeb, 0x73, 0xdb, 0xef, 0xd1, 0x39, 0xd0,
+0x1b, 0xd6, 0x8b, 0xe1, 0x86, 0xef, 0x54, 0xfd, 0x40, 0x09, 0x04, 0x12, 0xde, 0x17, 0x3c, 0x1b,
+0x85, 0x1c, 0x0c, 0x1c, 0x88, 0x19, 0x80, 0x14, 0xf6, 0x0c, 0x78, 0x03, 0x40, 0xf9, 0x46, 0xf0,
+0x52, 0xea, 0x44, 0xe8, 0x02, 0xea, 0x78, 0xee, 0x2c, 0xf4, 0xb2, 0xf9, 0x20, 0xfe, 0x18, 0x01,
+0x12, 0x03, 0x94, 0x04, 0x40, 0x06, 0x8e, 0x08, 0x6e, 0x0b, 0x06, 0x0e, 0x92, 0x0f, 0x22, 0x0f,
+0x5c, 0x0c, 0xfa, 0x07, 0xf0, 0x02, 0x46, 0xfe, 0xac, 0xfa, 0x22, 0xf8, 0x30, 0xf6, 0x42, 0xf4,
+0xd8, 0xf1, 0x3c, 0xef, 0x76, 0xed, 0x78, 0xed, 0x58, 0xf0, 0xfc, 0xf6, 0x12, 0x01, 0x08, 0x0d,
+0x4a, 0x18, 0x33, 0x20, 0x11, 0x23, 0xb7, 0x20, 0x22, 0x1a, 0xf0, 0x10, 0xe2, 0x06, 0xdc, 0xfc,
+0x30, 0xf3, 0xe0, 0xe9, 0x07, 0xe1, 0xd5, 0xd9, 0xcf, 0xd5, 0x81, 0xd6, 0x5b, 0xdd, 0xda, 0xea,
+0xa6, 0xfd, 0xbe, 0x12, 0xf5, 0x25, 0xa9, 0x33, 0x85, 0x39, 0xfb, 0x36, 0x95, 0x2d, 0xad, 0x1f,
+0xba, 0x0f, 0xe8, 0xfe, 0x12, 0xee, 0xeb, 0xdd, 0x99, 0xcf, 0x03, 0xc5, 0x85, 0xc0, 0x05, 0xc4,
+0xbd, 0xd0, 0x1a, 0xe6, 0x22, 0x01, 0x7b, 0x1d, 0xf3, 0x35, 0x81, 0x46, 0xeb, 0x4c, 0x45, 0x49,
+0xfb, 0x3c, 0xdd, 0x2a, 0xfc, 0x14, 0x3c, 0xfd, 0xf8, 0xe4, 0x31, 0xce, 0x57, 0xbb, 0x6d, 0xaf,
+0x11, 0xad, 0xe5, 0xb5, 0x11, 0xca, 0x2a, 0xe7, 0xe0, 0x08, 0xbf, 0x29, 0x1f, 0x45, 0xe4, 0x56,
+0x52, 0x5d, 0xd6, 0x57, 0x45, 0x48, 0x37, 0x31, 0x46, 0x15, 0x90, 0xf6, 0x0b, 0xd8, 0xdb, 0xbc,
+0xb8, 0xa8, 0xe6, 0x9e, 0x34, 0xa1, 0x4b, 0xb0, 0x8d, 0xca, 0x5e, 0xec, 0xfa, 0x10, 0xcd, 0x33,
+0x3b, 0x50, 0xdc, 0x62, 0x02, 0x69, 0x08, 0x62, 0x2b, 0x4f, 0x27, 0x33, 0xf8, 0x10, 0x58, 0xec,
+0x77, 0xc9, 0xe3, 0xac, 0xa0, 0x9a, 0x1a, 0x95, 0xd2, 0x9c, 0xe5, 0xb0, 0xe5, 0xce, 0xec, 0xf2,
+0xca, 0x18, 0x33, 0x3c, 0x10, 0x59, 0x8e, 0x6b, 0x74, 0x70, 0x86, 0x66, 0x53, 0x4f, 0xf7, 0x2d,
+0xae, 0x06, 0xa3, 0xde, 0x51, 0xbb, 0x82, 0xa1, 0x3a, 0x94, 0x00, 0x94, 0x06, 0xa0, 0xc9, 0xb6,
+0xd7, 0xd5, 0xe4, 0xf9, 0x71, 0x1f, 0x91, 0x42, 0xf0, 0x5e, 0x30, 0x70, 0x9e, 0x72, 0xf6, 0x64,
+0x25, 0x49, 0x81, 0x23, 0xae, 0xf9, 0xed, 0xd1, 0xb7, 0xb1, 0xe8, 0x9c, 0xea, 0x94, 0x04, 0x99,
+0xb2, 0xa7, 0x71, 0xbf, 0x2b, 0xde, 0x20, 0x01, 0x47, 0x25, 0xbf, 0x46, 0xfa, 0x60, 0x32, 0x6f,
+0xd8, 0x6d, 0x36, 0x5c, 0x4f, 0x3d, 0x76, 0x16, 0x36, 0xee, 0xbd, 0xca, 0x5d, 0xb0, 0x3c, 0xa1,
+0x60, 0x9d, 0xb2, 0xa3, 0xe1, 0xb2, 0xc1, 0xc9, 0x9c, 0xe6, 0x6a, 0x07, 0x0b, 0x29, 0x73, 0x47,
+0xdc, 0x5d, 0xba, 0x67, 0x34, 0x62, 0xf3, 0x4d, 0x05, 0x2f, 0x0e, 0x0b, 0x2a, 0xe8, 0x05, 0xcb,
+0x8f, 0xb6, 0xbb, 0xab, 0x60, 0xaa, 0x83, 0xb1, 0x6d, 0xc0, 0xe1, 0xd5, 0x3a, 0xf0, 0x66, 0x0d,
+0x71, 0x2a, 0x69, 0x43, 0x01, 0x54, 0xf4, 0x58, 0xad, 0x50, 0x07, 0x3d, 0xa7, 0x21, 0x9a, 0x03,
+0x74, 0xe7, 0xe3, 0xd0, 0xa7, 0xc1, 0x81, 0xba, 0x21, 0xbb, 0xc5, 0xc2, 0x7b, 0xd0, 0x13, 0xe3,
+0x2c, 0xf9, 0x96, 0x10, 0xe1, 0x26, 0xc5, 0x38, 0x9f, 0x43, 0x1f, 0x45, 0x2b, 0x3d, 0x23, 0x2d,
+0xec, 0x17, 0x06, 0x01, 0x18, 0xec, 0xad, 0xdb, 0x3d, 0xd1, 0x45, 0xcd, 0x3d, 0xcf, 0x63, 0xd6,
+0x75, 0xe1, 0x56, 0xef, 0x72, 0xfe, 0xa2, 0x0d, 0x2a, 0x1b, 0xcb, 0x25, 0x3b, 0x2c, 0x77, 0x2d,
+0xf9, 0x28, 0x5d, 0x1f, 0x08, 0x12, 0x50, 0x03, 0xc8, 0xf5, 0x50, 0xeb, 0x28, 0xe5, 0x63, 0xe3,
+0x78, 0xe5, 0x22, 0xea, 0x74, 0xf0, 0x20, 0xf7, 0x74, 0xfd, 0x4e, 0x03, 0xf2, 0x08, 0x80, 0x0e,
+0x9e, 0x13, 0x24, 0x17, 0xfa, 0x17, 0x80, 0x15, 0xf4, 0x0f, 0xe6, 0x08, 0x04, 0x02, 0xf6, 0xfc,
+0x7c, 0xfa, 0x4c, 0xfa, 0x2e, 0xfb, 0xd4, 0xfb, 0x2c, 0xfb, 0xd0, 0xf8, 0x90, 0xf5, 0xec, 0xf2,
+0xac, 0xf2, 0xe8, 0xf5, 0x30, 0xfc, 0xae, 0x03, 0x66, 0x0a, 0xf4, 0x0e, 0x12, 0x11, 0x9c, 0x11,
+0x8c, 0x11, 0x98, 0x11, 0xc0, 0x11, 0x2c, 0x11, 0x6e, 0x0e, 0x88, 0x08, 0x4c, 0xff, 0xea, 0xf3,
+0x8a, 0xe8, 0xdb, 0xdf, 0x3d, 0xdc, 0xcb, 0xde, 0xea, 0xe6, 0x82, 0xf2, 0x32, 0xff, 0x10, 0x0b,
+0x60, 0x15, 0xc1, 0x1d, 0x27, 0x24, 0x41, 0x28, 0x37, 0x29, 0xcf, 0x25, 0x25, 0x1d, 0x5a, 0x0f,
+0x96, 0xfd, 0x4a, 0xea, 0x99, 0xd8, 0xbf, 0xcb, 0x45, 0xc6, 0x53, 0xc9, 0x09, 0xd4, 0x78, 0xe4,
+0x0e, 0xf8, 0x16, 0x0c, 0xb5, 0x1e, 0x69, 0x2e, 0xd9, 0x39, 0x77, 0x3f, 0x4b, 0x3e, 0x95, 0x35,
+0xe3, 0x25, 0x88, 0x10, 0xca, 0xf7, 0xad, 0xde, 0xdd, 0xc8, 0x83, 0xb9, 0x0f, 0xb3, 0xe7, 0xb6,
+0x85, 0xc4, 0x5f, 0xda, 0x4c, 0xf5, 0xbc, 0x11, 0xf9, 0x2b, 0x3b, 0x41, 0xd7, 0x4e, 0x39, 0x53,
+0x9f, 0x4d, 0xd1, 0x3e, 0xbf, 0x28, 0xce, 0x0d, 0x5c, 0xf0, 0x93, 0xd3, 0xe9, 0xba, 0xca, 0xa9,
+0x42, 0xa3, 0xcc, 0xa8, 0xc1, 0xba, 0x11, 0xd7, 0xa4, 0xf9, 0x17, 0x1d, 0x7b, 0x3c, 0xa7, 0x53,
+0x16, 0x60, 0xa2, 0x60, 0xdc, 0x55, 0xd9, 0x41, 0x39, 0x27, 0x64, 0x08, 0xc4, 0xe7, 0x6b, 0xc8,
+0xe3, 0xad, 0x26, 0x9c, 0xa0, 0x96, 0x84, 0x9f, 0xe5, 0xb6, 0xff, 0xd9, 0xf8, 0x02, 0xf9, 0x2a,
+0x1b, 0x4c, 0x36, 0x62, 0x5e, 0x6b, 0x8c, 0x67, 0x68, 0x58, 0xbd, 0x40, 0x2f, 0x23, 0xe8, 0x01,
+0x23, 0xdf, 0x27, 0xbe, 0x1a, 0xa3, 0x82, 0x92, 0x12, 0x90, 0xde, 0x9d, 0xf1, 0xba, 0xff, 0xe2,
+0xf4, 0x0e, 0x43, 0x37, 0x6a, 0x56, 0x02, 0x69, 0x2a, 0x6e, 0xc8, 0x66, 0xf8, 0x54, 0x59, 0x3b,
+0x43, 0x1c, 0xb0, 0xf9, 0x2f, 0xd6, 0x83, 0xb5, 0x2e, 0x9c, 0xc6, 0x8e, 0xc2, 0x90, 0x74, 0xa3,
+0x77, 0xc4, 0x54, 0xee, 0x7a, 0x19, 0xf3, 0x3e, 0x34, 0x5a, 0x06, 0x69, 0x22, 0x6b, 0x9e, 0x61,
+0x69, 0x4e, 0xbb, 0x33, 0xac, 0x13, 0xa0, 0xf0, 0xef, 0xcd, 0x9f, 0xaf, 0x40, 0x9a, 0xcc, 0x91,
+0xaa, 0x98, 0x93, 0xae, 0x79, 0xd0, 0x68, 0xf8, 0xd7, 0x1f, 0xe9, 0x40, 0x08, 0x58, 0x6e, 0x63,
+0x12, 0x63, 0xec, 0x57, 0x95, 0x43, 0x41, 0x28, 0x54, 0x08, 0xe8, 0xe6, 0x9f, 0xc7, 0xe7, 0xae,
+0xfa, 0x9f, 0x4c, 0x9d, 0x82, 0xa7, 0x93, 0xbd, 0x5f, 0xdc, 0x28, 0xff, 0xa7, 0x20, 0x7b, 0x3c,
+0x9f, 0x4f, 0x54, 0x58, 0x72, 0x56, 0x8f, 0x4a, 0x65, 0x36, 0x28, 0x1c, 0x02, 0xff, 0x1b, 0xe2,
+0x21, 0xc9, 0xf3, 0xb6, 0xbb, 0xad, 0x65, 0xae, 0xcd, 0xb8, 0xed, 0xcb, 0x8c, 0xe5, 0x5a, 0x02,
+0x41, 0x1e, 0x65, 0x35, 0x9f, 0x44, 0x63, 0x4a, 0x3b, 0x46, 0x65, 0x39, 0xdb, 0x25, 0xbe, 0x0e,
+0x0e, 0xf7, 0xbd, 0xe1, 0xdd, 0xd0, 0xbf, 0xc5, 0x0d, 0xc1, 0xb1, 0xc2, 0xbb, 0xca, 0x93, 0xd8,
+0x9a, 0xeb, 0x74, 0x01, 0x10, 0x17, 0xcb, 0x28, 0x01, 0x34, 0x1b, 0x37, 0x3f, 0x32, 0xd1, 0x26,
+0x46, 0x17, 0x9e, 0x06, 0x2a, 0xf7, 0x96, 0xea, 0x4b, 0xe1, 0x55, 0xdb, 0x35, 0xd8, 0x17, 0xd8,
+0x5f, 0xdb, 0xbb, 0xe2, 0x44, 0xee, 0xb8, 0xfc, 0x86, 0x0b, 0xaa, 0x17, 0xeb, 0x1e, 0x47, 0x20,
+0x65, 0x1c, 0xd6, 0x14, 0xd0, 0x0b, 0x7e, 0x03, 0x1e, 0xfd, 0xb4, 0xf8, 0x6e, 0xf5, 0x60, 0xf2,
+0x2e, 0xef, 0x14, 0xec, 0x36, 0xea, 0xfc, 0xea, 0x18, 0xef, 0xf0, 0xf5, 0xa4, 0xfd, 0x24, 0x04,
+0x0c, 0x08, 0x38, 0x09, 0x58, 0x08, 0xca, 0x06, 0xfa, 0x05, 0x92, 0x06, 0x6a, 0x08, 0x54, 0x0a,
+0x16, 0x0b, 0x7a, 0x09, 0x28, 0x05, 0x98, 0xfe, 0x10, 0xf7, 0x4e, 0xf0, 0xb0, 0xeb, 0xda, 0xe9,
+0x3e, 0xea, 0x18, 0xec, 0xc6, 0xee, 0x62, 0xf2, 0x40, 0xf7, 0xd2, 0xfd, 0xf6, 0x05, 0xfc, 0x0e,
+0x96, 0x17, 0x55, 0x1e, 0x95, 0x21, 0x61, 0x20, 0x08, 0x1a, 0xe6, 0x0e, 0x70, 0x00, 0xd4, 0xf0,
+0xd1, 0xe2, 0x4b, 0xd8, 0xb5, 0xd2, 0x4b, 0xd2, 0xdf, 0xd6, 0x9f, 0xdf, 0xf0, 0xeb, 0xb6, 0xfa,
+0x9a, 0x0a, 0x60, 0x1a, 0xff, 0x27, 0x19, 0x32, 0xe1, 0x36, 0xf7, 0x34, 0x35, 0x2b, 0x1e, 0x1a,
+0x72, 0x03, 0xde, 0xea, 0x65, 0xd4, 0xd3, 0xc3, 0xa5, 0xbb, 0x61, 0xbc, 0x0b, 0xc5, 0xe1, 0xd3,
+0xea, 0xe6, 0x22, 0xfc, 0xe4, 0x11, 0x25, 0x26, 0x8d, 0x37, 0xf7, 0x43, 0x63, 0x49, 0x65, 0x45,
+0x3d, 0x37, 0x45, 0x1f, 0xae, 0x00, 0x55, 0xe0, 0xdb, 0xc3, 0x35, 0xb0, 0xfe, 0xa7, 0x5f, 0xab,
+0x65, 0xb8, 0xa5, 0xcc, 0x36, 0xe5, 0xf2, 0xff, 0x8c, 0x1a, 0x1f, 0x33, 0x6f, 0x47, 0x02, 0x55,
+0x1a, 0x59, 0x5f, 0x51, 0x17, 0x3d, 0xff, 0x1d, 0x78, 0xf8, 0xad, 0xd2, 0x69, 0xb3, 0xa0, 0x9f,
+0x88, 0x99, 0x5e, 0xa0, 0x8f, 0xb1, 0x0d, 0xca, 0x3e, 0xe7, 0x5e, 0x06, 0xfd, 0x24, 0xb9, 0x40,
+0xc4, 0x56, 0xb4, 0x63, 0x5a, 0x64, 0xf0, 0x56, 0xfd, 0x3b, 0xe2, 0x16, 0x02, 0xed, 0x6d, 0xc5,
+0x84, 0xa6, 0xb0, 0x94, 0x12, 0x91, 0x8c, 0x9a, 0xc3, 0xae, 0xdf, 0xca, 0xe4, 0xeb, 0xda, 0x0e,
+0xbb, 0x30, 0x13, 0x4e, 0x38, 0x63, 0x80, 0x6c, 0x82, 0x67, 0x15, 0x54, 0x61, 0x34, 0xca, 0x0c,
+0xd5, 0xe2, 0xa7, 0xbc, 0xe2, 0x9f, 0x38, 0x90, 0xb4, 0x8e, 0x72, 0x9a, 0x55, 0xb1, 0x97, 0xd0,
+0xea, 0xf4, 0x3c, 0x1a, 0x83, 0x3c, 0xfe, 0x57, 0x14, 0x69, 0xde, 0x6c, 0x96, 0x62, 0x77, 0x4b,
+0x9b, 0x2a, 0xce, 0x03, 0xff, 0xdb, 0x7f, 0xb8, 0x7c, 0x9e, 0x38, 0x91, 0xe8, 0x91, 0xde, 0x9f,
+0x3d, 0xb9, 0xff, 0xda, 0xa0, 0x00, 0xbb, 0x25, 0x8d, 0x45, 0x56, 0x5c, 0x56, 0x67, 0x9a, 0x65,
+0x88, 0x57, 0x91, 0x3f, 0x4f, 0x20, 0xfc, 0xfc, 0x57, 0xd9, 0xbd, 0xb9, 0xac, 0xa2, 0xc2, 0x97,
+0x4c, 0x9a, 0x0a, 0xaa, 0xf9, 0xc4, 0x20, 0xe7, 0xa2, 0x0b, 0x1d, 0x2d, 0x45, 0x47, 0x92, 0x57,
+0x06, 0x5d, 0xba, 0x57, 0x75, 0x49, 0xed, 0x33, 0xb0, 0x18, 0xe6, 0xf9, 0x3d, 0xda, 0x31, 0xbe,
+0x50, 0xaa, 0x3c, 0xa2, 0x74, 0xa7, 0x4f, 0xb9, 0x7d, 0xd4, 0x62, 0xf4, 0xcc, 0x13, 0x29, 0x2e,
+0xe7, 0x40, 0xc5, 0x4a, 0x49, 0x4c, 0x8b, 0x46, 0x89, 0x3a, 0xed, 0x28, 0xae, 0x12, 0x00, 0xf9,
+0x97, 0xde, 0x31, 0xc7, 0x45, 0xb7, 0x1b, 0xb2, 0x03, 0xb9, 0x39, 0xca, 0x59, 0xe2, 0xa6, 0xfc,
+0xee, 0x14, 0xef, 0x27, 0x39, 0x34, 0x03, 0x3a, 0x07, 0x3a, 0x31, 0x35, 0x01, 0x2c, 0xcd, 0x1e,
+0xb6, 0x0d, 0xe6, 0xf9, 0x7e, 0xe5, 0xe1, 0xd3, 0xb7, 0xc8, 0x69, 0xc6, 0x6f, 0xcd, 0xdf, 0xdb,
+0x2e, 0xee, 0xb2, 0x00, 0x86, 0x10, 0x18, 0x1c, 0xf1, 0x22, 0xb1, 0x25, 0x17, 0x25, 0x05, 0x22,
+0x8b, 0x1c, 0x88, 0x14, 0x32, 0x0a, 0x1a, 0xfe, 0x9a, 0xf1, 0xcc, 0xe6, 0xfd, 0xdf, 0x9f, 0xde,
+0xdd, 0xe2, 0x0c, 0xeb, 0xe4, 0xf4, 0x5c, 0xfe, 0xe8, 0x05, 0xe6, 0x0a, 0x9a, 0x0d, 0x8e, 0x0e,
+0xa6, 0x0e, 0x68, 0x0e, 0x02, 0x0e, 0x3c, 0x0d, 0x84, 0x0b, 0x5e, 0x08, 0xea, 0x03, 0xac, 0xfe,
+0xa2, 0xf9, 0x06, 0xf6, 0x2e, 0xf4, 0x28, 0xf4, 0x28, 0xf5, 0x34, 0xf6, 0xda, 0xf6, 0x10, 0xf7,
+0x04, 0xf7, 0x8a, 0xf7, 0x86, 0xf9, 0xa2, 0xfd, 0x0c, 0x04, 0xbc, 0x0b, 0x44, 0x13, 0xca, 0x18,
+0x80, 0x1a, 0xee, 0x17, 0xde, 0x11, 0xb6, 0x09, 0x28, 0x01, 0x36, 0xf9, 0xfc, 0xf1, 0xac, 0xeb,
+0x4c, 0xe6, 0x07, 0xe2, 0xf1, 0xdf, 0x05, 0xe1, 0x76, 0xe6, 0xe0, 0xf0, 0xca, 0xff, 0x22, 0x11,
+0xb5, 0x21, 0xab, 0x2d, 0xa5, 0x32, 0xcb, 0x2f, 0x3f, 0x26, 0x70, 0x18, 0x06, 0x09, 0xba, 0xf9,
+0xb0, 0xeb, 0x0b, 0xdf, 0x29, 0xd4, 0x6b, 0xcc, 0x51, 0xc9, 0xb3, 0xcc, 0x8f, 0xd7, 0x0a, 0xea,
+0xd4, 0x01, 0x92, 0x1b, 0x2b, 0x32, 0xf3, 0x41, 0xc9, 0x47, 0x57, 0x43, 0x1f, 0x36, 0x59, 0x23,
+0xba, 0x0d, 0xb0, 0xf7, 0xaf, 0xe2, 0x15, 0xd0, 0x5d, 0xc1, 0xe9, 0xb7, 0x19, 0xb6, 0xa3, 0xbd,
+0x4d, 0xcf, 0x6a, 0xe9, 0xdc, 0x08, 0x21, 0x28, 0xad, 0x42, 0xc9, 0x53, 0x32, 0x59, 0xb7, 0x52,
+0x13, 0x42, 0x43, 0x2a, 0x9c, 0x0e, 0xe0, 0xf1, 0x45, 0xd6, 0xbf, 0xbe, 0x7f, 0xad, 0x58, 0xa5,
+0xf8, 0xa7, 0x2d, 0xb6, 0x2b, 0xcf, 0x04, 0xf0, 0xde, 0x13, 0xad, 0x35, 0xfd, 0x50, 0xe2, 0x61,
+0x32, 0x66, 0x3c, 0x5d, 0xe9, 0x48, 0x71, 0x2c, 0x40, 0x0b, 0xb2, 0xe8, 0x93, 0xc8, 0x91, 0xae,
+0x14, 0x9e, 0x60, 0x99, 0x78, 0xa1, 0xf3, 0xb5, 0x5f, 0xd4, 0x9e, 0xf8, 0x0f, 0x1e, 0x2f, 0x40,
+0xf6, 0x5a, 0xfc, 0x6a, 0x84, 0x6d, 0x14, 0x62, 0x45, 0x4a, 0x1f, 0x29, 0xe4, 0x02, 0x0d, 0xdc,
+0xab, 0xb9, 0x7a, 0xa0, 0xbc, 0x93, 0x84, 0x94, 0x6c, 0xa2, 0x55, 0xbb, 0x33, 0xdc, 0x28, 0x01,
+0xe7, 0x25, 0xf7, 0x46, 0xaa, 0x60, 0x5c, 0x6f, 0xf4, 0x6f, 0xa8, 0x61, 0xed, 0x45, 0xe5, 0x20,
+0x46, 0xf7, 0x11, 0xcf, 0x43, 0xae, 0x6c, 0x99, 0x30, 0x92, 0x60, 0x98, 0x02, 0xaa, 0x9b, 0xc4,
+0x34, 0xe5, 0x5c, 0x08, 0x25, 0x2b, 0x5f, 0x4a, 0x48, 0x62, 0xca, 0x6e, 0xdc, 0x6c, 0x54, 0x5b,
+0x8b, 0x3c, 0x26, 0x15, 0x46, 0xeb, 0x99, 0xc5, 0x7e, 0xa9, 0x2c, 0x9a, 0xf4, 0x97, 0x64, 0xa1,
+0x15, 0xb4, 0x03, 0xce, 0xbc, 0xec, 0xc8, 0x0d, 0x43, 0x2e, 0xf5, 0x4a, 0x08, 0x60, 0x44, 0x69,
+0xce, 0x63, 0x7d, 0x4f, 0x7f, 0x2f, 0x18, 0x09, 0xcb, 0xe2, 0x71, 0xc2, 0x8f, 0xac, 0x8e, 0xa2,
+0xca, 0xa3, 0x6b, 0xae, 0xc5, 0xc0, 0xb5, 0xd8, 0x88, 0xf4, 0xfa, 0x11, 0x91, 0x2e, 0x3d, 0x47,
+0x04, 0x58, 0x4e, 0x5d, 0x1a, 0x55, 0x85, 0x40, 0x89, 0x22, 0xcc, 0x00, 0xb5, 0xe0, 0x55, 0xc7,
+0x1b, 0xb7, 0xdf, 0xb0, 0x9d, 0xb3, 0x13, 0xbe, 0xb9, 0xce, 0xd6, 0xe3, 0xd6, 0xfb, 0x9c, 0x14,
+0xc9, 0x2b, 0x69, 0x3e, 0xbd, 0x49, 0x2d, 0x4b, 0x05, 0x42, 0x9f, 0x2f, 0x1e, 0x17, 0x8e, 0xfc,
+0x74, 0xe4, 0xff, 0xd1, 0x05, 0xc7, 0xb3, 0xc3, 0x5d, 0xc7, 0xa3, 0xd0, 0x7d, 0xde, 0x18, 0xef,
+0xf8, 0x00, 0x98, 0x12, 0x41, 0x22, 0x3f, 0x2e, 0xe5, 0x34, 0x01, 0x35, 0x45, 0x2e, 0xb1, 0x21,
+0xec, 0x10, 0xc4, 0xfe, 0x36, 0xee, 0xa5, 0xe1, 0x4b, 0xda, 0x91, 0xd8, 0xfb, 0xdb, 0x43, 0xe3,
+0xe8, 0xec, 0x84, 0xf7, 0xb2, 0x01, 0xd8, 0x0a, 0x9a, 0x12, 0xc2, 0x18, 0xeb, 0x1c, 0x8f, 0x1e,
+0xd7, 0x1c, 0x9a, 0x17, 0x72, 0x0f, 0x6c, 0x05, 0xcc, 0xfb, 0x56, 0xf4, 0x1c, 0xf0, 0x4c, 0xef,
+0x38, 0xf1, 0x7a, 0xf4, 0x96, 0xf7, 0xd2, 0xf9, 0xb4, 0xfa, 0x50, 0xfb, 0xb8, 0xfc, 0xfa, 0xff,
+0x04, 0x05, 0xda, 0x0a, 0xd2, 0x0f, 0x5a, 0x12, 0xf8, 0x11, 0x26, 0x0f, 0xa6, 0x0b, 0x98, 0x08,
+0xc2, 0x06, 0xe0, 0x05, 0xd8, 0x04, 0x52, 0x02, 0x74, 0xfd, 0x7c, 0xf6, 0xc6, 0xee, 0x4e, 0xe8,
+0x60, 0xe5, 0x96, 0xe7, 0xb0, 0xee, 0x3e, 0xf9, 0xda, 0x04, 0x1a, 0x0f, 0xb2, 0x16, 0xa8, 0x1b,
+0x39, 0x1e, 0x59, 0x1f, 0xc9, 0x1e, 0xc6, 0x1b, 0x64, 0x15, 0xf6, 0x0a, 0xee, 0xfc, 0x36, 0xed,
+0x55, 0xde, 0x27, 0xd3, 0x89, 0xce, 0x93, 0xd1, 0xe9, 0xdb, 0x8c, 0xeb, 0xd8, 0xfd, 0x80, 0x0f,
+0xe9, 0x1e, 0xcf, 0x2a, 0xf3, 0x32, 0x69, 0x36, 0xad, 0x34, 0xfd, 0x2c, 0x39, 0x1f, 0x54, 0x0c,
+0x1c, 0xf6, 0xdd, 0xdf, 0x53, 0xcc, 0x2d, 0xbf, 0x35, 0xba, 0x11, 0xbf, 0x03, 0xcd, 0x37, 0xe2,
+0x6a, 0xfb, 0x3c, 0x15, 0x4d, 0x2c, 0x53, 0x3e, 0x73, 0x49, 0x09, 0x4c, 0xff, 0x45, 0x85, 0x37,
+0x1d, 0x22, 0x2c, 0x08, 0x70, 0xec, 0x0b, 0xd2, 0x89, 0xbc, 0x6d, 0xae, 0x46, 0xaa, 0x17, 0xb1,
+0xb1, 0xc2, 0x55, 0xdd, 0x98, 0xfd, 0x69, 0x1e, 0x93, 0x3b, 0x25, 0x51, 0x3c, 0x5c, 0xd0, 0x5b,
+0x27, 0x50, 0x71, 0x3b, 0x35, 0x20, 0xc0, 0x01, 0xb9, 0xe2, 0x6b, 0xc6, 0x97, 0xaf, 0x4c, 0xa1,
+0x08, 0x9e, 0x46, 0xa7, 0x89, 0xbd, 0x45, 0xde, 0x1e, 0x05, 0xaf, 0x2b, 0x2f, 0x4c, 0xda, 0x61,
+0x62, 0x6a, 0x38, 0x65, 0x4b, 0x54, 0xe5, 0x3a, 0xea, 0x1b, 0x7a, 0xfa, 0x83, 0xd9, 0xb5, 0xbb,
+0x78, 0xa4, 0x0a, 0x97, 0x06, 0x96, 0x64, 0xa3, 0xfb, 0xbe, 0x92, 0xe5, 0x02, 0x11, 0x27, 0x3a,
+0x04, 0x5a, 0xdc, 0x6c, 0xba, 0x70, 0xce, 0x66, 0xf5, 0x51, 0xa9, 0x35, 0x00, 0x15, 0xb2, 0xf2,
+0x4d, 0xd1, 0x97, 0xb3, 0x48, 0x9d, 0xb8, 0x91, 0x46, 0x94, 0x48, 0xa6, 0xa7, 0xc6, 0xc4, 0xf0,
+0x47, 0x1d, 0x93, 0x44, 0x04, 0x61, 0x3c, 0x6f, 0xe0, 0x6e, 0x02, 0x62, 0x77, 0x4b, 0x81, 0x2e,
+0xb0, 0x0d, 0x20, 0xeb, 0xbf, 0xc9, 0x4d, 0xad, 0x6e, 0x99, 0x2a, 0x92, 0xaa, 0x99, 0x11, 0xb0,
+0x07, 0xd3, 0xda, 0xfc, 0x43, 0x26, 0x17, 0x49, 0xc4, 0x60, 0xde, 0x6a, 0xf6, 0x67, 0xa0, 0x59,
+0xab, 0x42, 0xbd, 0x25, 0x3c, 0x05, 0xb3, 0xe3, 0xd9, 0xc4, 0x29, 0xac, 0x82, 0x9d, 0x60, 0x9b,
+0xaa, 0xa6, 0x9b, 0xbe, 0x0f, 0xe0, 0xa2, 0x05, 0x85, 0x29, 0xc1, 0x46, 0x88, 0x59, 0x9a, 0x60,
+0xd6, 0x5b, 0x0d, 0x4d, 0x65, 0x36, 0x70, 0x1a, 0xea, 0xfb, 0x3d, 0xde, 0x9d, 0xc4, 0x3d, 0xb2,
+0x90, 0xa9, 0x53, 0xab, 0xc1, 0xb7, 0x47, 0xcd, 0x3e, 0xe9, 0xf0, 0x07, 0x3f, 0x25, 0x2f, 0x3d,
+0xb1, 0x4c, 0xdd, 0x51, 0x57, 0x4c, 0xe1, 0x3d, 0x4f, 0x28, 0xaa, 0x0e, 0x52, 0xf4, 0x8b, 0xdc,
+0x21, 0xca, 0xed, 0xbe, 0x75, 0xbb, 0x5b, 0xbf, 0x2d, 0xca, 0xbd, 0xda, 0xc4, 0xef, 0x02, 0x07,
+0x97, 0x1d, 0x4d, 0x30, 0x2d, 0x3c, 0x3d, 0x3f, 0x7b, 0x39, 0x39, 0x2c, 0x0c, 0x1a, 0xc0, 0x05,
+0xb2, 0xf2, 0x09, 0xe3, 0x3b, 0xd8, 0x75, 0xd2, 0x37, 0xd1, 0xc3, 0xd3, 0xe1, 0xd9, 0xee, 0xe3,
+0x5a, 0xf1, 0x6c, 0x01, 0xc6, 0x11, 0x9d, 0x1f, 0x37, 0x28, 0x11, 0x2a, 0x19, 0x25, 0xfc, 0x1a,
+0x6c, 0x0e, 0xd4, 0x01, 0x8e, 0xf7, 0x60, 0xf0, 0x08, 0xec, 0xb4, 0xe9, 0x78, 0xe8, 0xe2, 0xe7,
+0x76, 0xe8, 0x64, 0xeb, 0x3a, 0xf1, 0xd6, 0xf9, 0xb6, 0x03, 0x80, 0x0c, 0x24, 0x12, 0x8e, 0x13,
+0x0c, 0x11, 0x52, 0x0c, 0x52, 0x07, 0x7a, 0x03, 0x8c, 0x01, 0x26, 0x01, 0xf2, 0x00, 0xd8, 0xff,
+0x26, 0xfd, 0xc0, 0xf8, 0xb4, 0xf3, 0xa0, 0xef, 0xba, 0xed, 0x84, 0xee, 0x74, 0xf1, 0x7c, 0xf5,
+0x4c, 0xf9, 0x74, 0xfc, 0x4c, 0xff, 0x8e, 0x02, 0xca, 0x06, 0x14, 0x0c, 0xd2, 0x11, 0x5a, 0x16,
+0xa8, 0x18, 0x4c, 0x17, 0xe6, 0x11, 0x98, 0x08, 0xac, 0xfc, 0x18, 0xf0, 0x38, 0xe5, 0x8f, 0xdd,
+0x39, 0xda, 0x71, 0xdb, 0x43, 0xe0, 0x36, 0xe8, 0xe6, 0xf2, 0x14, 0xff, 0x2c, 0x0c, 0x10, 0x19,
+0xef, 0x23, 0x7d, 0x2b, 0x77, 0x2e, 0xc1, 0x2b, 0xb5, 0x22, 0xf0, 0x13, 0x60, 0x00, 0x46, 0xeb,
+0xaf, 0xd7, 0x25, 0xc9, 0x31, 0xc2, 0x69, 0xc3, 0x39, 0xcc, 0xe1, 0xda, 0x66, 0xed, 0x42, 0x01,
+0x06, 0x15, 0xc5, 0x26, 0x11, 0x35, 0x71, 0x3e, 0x69, 0x41, 0xbb, 0x3c, 0x35, 0x2f, 0xac, 0x19,
+0x10, 0xfe, 0x83, 0xe0, 0x2d, 0xc6, 0xe7, 0xb3, 0x85, 0xac, 0xcf, 0xb0, 0xf5, 0xbe, 0xe1, 0xd3,
+0x9e, 0xec, 0x4a, 0x06, 0x97, 0x1e, 0x39, 0x34, 0x0f, 0x45, 0x8b, 0x4f, 0xc7, 0x51, 0xbb, 0x49,
+0xc1, 0x36, 0x22, 0x1a, 0x1c, 0xf7, 0x25, 0xd3, 0xfb, 0xb4, 0x7a, 0xa1, 0x00, 0x9c, 0xfe, 0xa3,
+0xd5, 0xb6, 0xcd, 0xd0, 0x64, 0xee, 0x62, 0x0c, 0xa3, 0x28, 0x23, 0x41, 0xc7, 0x53, 0x1c, 0x5e,
+0x7a, 0x5d, 0x73, 0x50, 0x07, 0x37, 0xa8, 0x13, 0x5a, 0xeb, 0x79, 0xc4, 0xb2, 0xa5, 0x38, 0x94,
+0xde, 0x91, 0x58, 0x9d, 0xf9, 0xb3, 0xb9, 0xd1, 0xf6, 0xf2, 0x8c, 0x14, 0xa9, 0x33, 0xe3, 0x4d,
+0x74, 0x60, 0x30, 0x68, 0xec, 0x62, 0x17, 0x50, 0xfb, 0x30, 0x8e, 0x09, 0x51, 0xdf, 0xb5, 0xb8,
+0xf4, 0x9b, 0x4e, 0x8d, 0xd2, 0x8d, 0x44, 0x9c, 0xb7, 0xb5, 0xa3, 0xd6, 0xc6, 0xfa, 0x9d, 0x1e,
+0x05, 0x3f, 0xc4, 0x58, 0x74, 0x68, 0x98, 0x6b, 0xca, 0x60, 0xc1, 0x48, 0xb3, 0x26, 0xae, 0xfe,
+0x13, 0xd6, 0x6f, 0xb2, 0x02, 0x99, 0x1c, 0x8d, 0xd8, 0x8f, 0x1e, 0xa0, 0x81, 0xbb, 0x73, 0xde,
+0x3e, 0x04, 0xe9, 0x28, 0x37, 0x48, 0xbc, 0x5e, 0x86, 0x69, 0x14, 0x67, 0x78, 0x57, 0x1d, 0x3d,
+0x68, 0x1b, 0x04, 0xf6, 0x59, 0xd1, 0xc7, 0xb1, 0xda, 0x9b, 0x76, 0x92, 0xf8, 0x96, 0xc0, 0xa8,
+0x9f, 0xc5, 0x44, 0xe9, 0xe2, 0x0e, 0x63, 0x31, 0x9b, 0x4c, 0x90, 0x5d, 0xac, 0x62, 0x96, 0x5b,
+0x19, 0x4a, 0xdf, 0x30, 0x8c, 0x12, 0xe6, 0xf1, 0x01, 0xd2, 0xbd, 0xb6, 0xe4, 0xa3, 0xbe, 0x9c,
+0xae, 0xa2, 0x91, 0xb5, 0x73, 0xd2, 0xce, 0xf4, 0x28, 0x17, 0x71, 0x34, 0x53, 0x49, 0xed, 0x53,
+0x17, 0x54, 0xdf, 0x4a, 0x8f, 0x3a, 0xdd, 0x24, 0xd2, 0x0b, 0xe4, 0xf0, 0x5d, 0xd6, 0xa3, 0xbf,
+0x5d, 0xb0, 0x83, 0xab, 0xdf, 0xb2, 0xb9, 0xc5, 0x71, 0xe0, 0x56, 0xfe, 0x1c, 0x1a, 0x07, 0x30,
+0xe9, 0x3d, 0x49, 0x43, 0xe9, 0x40, 0xc7, 0x38, 0x01, 0x2c, 0xbc, 0x1b, 0xae, 0x08, 0xbc, 0xf3,
+0xbd, 0xde, 0xdb, 0xcc, 0x77, 0xc1, 0x0d, 0xbf, 0xc7, 0xc6, 0x31, 0xd7, 0xe6, 0xec, 0x30, 0x03,
+0x98, 0x16, 0x7b, 0x24, 0x2f, 0x2c, 0x1d, 0x2e, 0xa3, 0x2b, 0xed, 0x25, 0xd3, 0x1d, 0x66, 0x13,
+0xde, 0x06, 0xe8, 0xf8, 0xaa, 0xea, 0x7b, 0xde, 0xdd, 0xd6, 0x97, 0xd5, 0x37, 0xdb, 0x54, 0xe6,
+0xf2, 0xf3, 0x52, 0x01, 0x34, 0x0c, 0x7a, 0x13, 0x2c, 0x17, 0x1a, 0x18, 0xe2, 0x16, 0x8c, 0x14,
+0x64, 0x11, 0x84, 0x0d, 0x74, 0x08, 0x42, 0x02, 0x62, 0xfb, 0xca, 0xf4, 0xae, 0xef, 0x34, 0xed,
+0xcc, 0xed, 0xbe, 0xf0, 0x14, 0xf5, 0x6e, 0xf9, 0xea, 0xfc, 0x16, 0xff, 0x56, 0x00, 0x44, 0x01,
+0x7e, 0x02, 0xa2, 0x04, 0xf4, 0x07, 0x02, 0x0c, 0xbc, 0x0f, 0xf6, 0x11, 0x7e, 0x11, 0x0a, 0x0e,
+0x40, 0x08, 0x32, 0x01, 0x58, 0xfa, 0xa6, 0xf4, 0x76, 0xf0, 0x8a, 0xed, 0x6a, 0xeb, 0x1e, 0xea,
+0xee, 0xe9, 0x5e, 0xeb, 0x4c, 0xef, 0xc2, 0xf6, 0x6e, 0x01, 0x58, 0x0e, 0x64, 0x1b, 0x43, 0x25,
+0xa7, 0x29, 0x3b, 0x27, 0xa7, 0x1e, 0xaa, 0x11, 0x24, 0x03, 0x10, 0xf5, 0x20, 0xe9, 0x8d, 0xdf,
+0x83, 0xd8, 0x6b, 0xd4, 0x9f, 0xd3, 0x47, 0xd7, 0x49, 0xe0, 0xec, 0xee, 0x2e, 0x02, 0xec, 0x17,
+0x13, 0x2c, 0xbd, 0x3a, 0xb3, 0x40, 0xbf, 0x3c, 0xd7, 0x2f, 0xef, 0x1c, 0x74, 0x07, 0x8a, 0xf2,
+0xd3, 0xdf, 0x99, 0xd0, 0x77, 0xc5, 0x4f, 0xbf, 0x53, 0xbf, 0xcf, 0xc6, 0x45, 0xd6, 0x02, 0xed,
+0xf6, 0x08, 0xd3, 0x25, 0xdb, 0x3e, 0x29, 0x4f, 0x23, 0x54, 0x05, 0x4d, 0xc1, 0x3b, 0xbf, 0x23,
+0x88, 0x08, 0x66, 0xed, 0xd9, 0xd4, 0xef, 0xc0, 0xd9, 0xb2, 0xb3, 0xac, 0xb1, 0xaf, 0x1d, 0xbd,
+0x6d, 0xd4, 0x4c, 0xf3, 0xbc, 0x15, 0x93, 0x36, 0xbd, 0x50, 0x32, 0x60, 0xa2, 0x62, 0xc4, 0x57,
+0x39, 0x42, 0x3d, 0x25, 0x96, 0x04, 0x24, 0xe4, 0x0d, 0xc7, 0x19, 0xb0, 0xfc, 0xa1, 0x76, 0x9e,
+0xec, 0xa6, 0x23, 0xbb, 0x21, 0xd9, 0xe2, 0xfc, 0xb1, 0x21, 0x93, 0x42, 0xaa, 0x5b, 0x86, 0x69,
+0xe2, 0x69, 0x04, 0x5d, 0x99, 0x44, 0xf9, 0x23, 0xe2, 0xfe, 0xdf, 0xd9, 0x39, 0xb9, 0x70, 0xa1,
+0x8a, 0x95, 0x0c, 0x97, 0xbc, 0xa5, 0xa3, 0xbf, 0x97, 0xe1, 0xf0, 0x06, 0x67, 0x2b, 0x1f, 0x4b,
+0x9e, 0x62, 0xce, 0x6e, 0x82, 0x6d, 0x3e, 0x5e, 0xa3, 0x42, 0x2b, 0x1e, 0x6e, 0xf5, 0xf3, 0xcd,
+0x2f, 0xad, 0xe2, 0x97, 0xb0, 0x90, 0x86, 0x97, 0xf8, 0xaa, 0xf9, 0xc7, 0xac, 0xea, 0x0c, 0x0f,
+0xc1, 0x31, 0x3b, 0x4f, 0xbc, 0x64, 0x10, 0x6f, 0xa6, 0x6b, 0xdc, 0x59, 0x49, 0x3b, 0xe0, 0x13,
+0x62, 0xe9, 0x33, 0xc2, 0x74, 0xa4, 0x5a, 0x94, 0xc2, 0x92, 0x8e, 0x9e, 0xfb, 0xb4, 0x7d, 0xd2,
+0x96, 0xf3, 0x3e, 0x15, 0xb1, 0x34, 0x8f, 0x4f, 0xaa, 0x62, 0xce, 0x6a, 0xe4, 0x64, 0x93, 0x50,
+0x0b, 0x30, 0x3c, 0x08, 0x8b, 0xdf, 0xad, 0xbc, 0xf8, 0xa4, 0xac, 0x9a, 0xa2, 0x9d, 0x95, 0xab,
+0xb9, 0xc1, 0xf9, 0xdc, 0xbe, 0xfa, 0xc8, 0x18, 0x9d, 0x34, 0xed, 0x4b, 0x6e, 0x5b, 0x06, 0x60,
+0x2a, 0x57, 0x79, 0x41, 0xb7, 0x21, 0x0c, 0xfd, 0xe3, 0xd9, 0x07, 0xbe, 0xe1, 0xac, 0xba, 0xa7,
+0x2b, 0xad, 0x2d, 0xbb, 0x3d, 0xcf, 0xf4, 0xe6, 0x8a, 0x00, 0xe2, 0x19, 0x0f, 0x31, 0xb5, 0x43,
+0xf9, 0x4e, 0x31, 0x50, 0x57, 0x46, 0xf7, 0x31, 0x84, 0x16, 0x7a, 0xf8, 0xff, 0xdc, 0x35, 0xc8,
+0xd1, 0xbc, 0x5b, 0xba, 0x27, 0xc0, 0x25, 0xcc, 0x93, 0xdc, 0xfc, 0xef, 0x2a, 0x04, 0xc2, 0x17,
+0xbd, 0x28, 0x7b, 0x35, 0x29, 0x3c, 0x63, 0x3b, 0xb9, 0x32, 0x35, 0x23, 0x04, 0x0f, 0x62, 0xf9,
+0x06, 0xe6, 0x87, 0xd7, 0xad, 0xcf, 0xa3, 0xce, 0x8f, 0xd3, 0xe9, 0xdc, 0x76, 0xe9, 0x44, 0xf7,
+0xd6, 0x04, 0x0c, 0x11, 0xe4, 0x1a, 0x07, 0x22, 0x91, 0x25, 0x23, 0x25, 0x55, 0x20, 0x56, 0x17,
+0x0a, 0x0c, 0x18, 0x00, 0x68, 0xf5, 0x48, 0xee, 0x02, 0xec, 0x00, 0xee, 0x2e, 0xf3, 0xb8, 0xf9,
+0x96, 0xff, 0x18, 0x04, 0x66, 0x07, 0x8a, 0x0a, 0x0a, 0x0e, 0x60, 0x11, 0x44, 0x13, 0xda, 0x12,
+0xac, 0x0f, 0x2e, 0x0a, 0x16, 0x04, 0x14, 0xff, 0x1c, 0xfc, 0x40, 0xfb, 0xb0, 0xfb, 0xc0, 0xfb,
+0xb2, 0xfa, 0xf4, 0xf7, 0xf0, 0xf3, 0x66, 0xf0, 0x38, 0xef, 0xb6, 0xf1, 0x06, 0xf8, 0x18, 0x01,
+0x78, 0x0a, 0x60, 0x12, 0x16, 0x17, 0x7c, 0x18, 0xc0, 0x17, 0xd2, 0x15, 0x70, 0x13, 0x50, 0x10,
+0x4a, 0x0b, 0x72, 0x03, 0x20, 0xf9, 0x24, 0xed, 0x99, 0xe1, 0x3d, 0xd9, 0x9b, 0xd6, 0x9b, 0xda,
+0x2c, 0xe5, 0x70, 0xf4, 0x44, 0x05, 0xd8, 0x14, 0x21, 0x21, 0x29, 0x29, 0x37, 0x2d, 0xab, 0x2d,
+0x0f, 0x2a, 0x81, 0x22, 0x22, 0x16, 0x76, 0x05, 0x5c, 0xf2, 0xeb, 0xde, 0x83, 0xce, 0x13, 0xc4,
+0xd7, 0xc1, 0xa1, 0xc8, 0xb5, 0xd7, 0xc2, 0xec, 0x64, 0x04, 0x1c, 0x1b, 0xf3, 0x2d, 0x9b, 0x3b,
+0xd7, 0x42, 0x0b, 0x43, 0xb9, 0x3b, 0x37, 0x2d, 0x9c, 0x18, 0xf4, 0xff, 0x04, 0xe6, 0x53, 0xce,
+0xe1, 0xbb, 0x89, 0xb1, 0x39, 0xb1, 0x0f, 0xbb, 0xc1, 0xce, 0x88, 0xe9, 0xfc, 0x07, 0xa1, 0x25,
+0xdb, 0x3e, 0x3d, 0x50, 0xf6, 0x57, 0xcc, 0x54, 0x3b, 0x47, 0x7f, 0x31, 0xca, 0x15, 0x50, 0xf7,
+0xd7, 0xd9, 0xe9, 0xbf, 0xe7, 0xac, 0x4e, 0xa3, 0x80, 0xa4, 0x75, 0xb1, 0x93, 0xc9, 0x34, 0xea,
+0x2c, 0x0f, 0xdd, 0x32, 0xc9, 0x4f, 0x32, 0x62, 0x62, 0x67, 0x16, 0x5f, 0x75, 0x4b, 0xb3, 0x2f,
+0x68, 0x0f, 0x12, 0xee, 0xed, 0xce, 0xa1, 0xb4, 0x12, 0xa2, 0x8c, 0x99, 0xfe, 0x9c, 0x3b, 0xad,
+0x17, 0xca, 0x30, 0xf0, 0x26, 0x1a, 0xf5, 0x40, 0x84, 0x5e, 0xd2, 0x6e, 0x98, 0x6f, 0x0e, 0x62,
+0x9f, 0x49, 0x73, 0x2a, 0x28, 0x08, 0x18, 0xe6, 0xb5, 0xc6, 0xe3, 0xac, 0x40, 0x9b, 0x84, 0x94,
+0xb4, 0x9a, 0x07, 0xaf, 0x69, 0xd0, 0xa6, 0xfa, 0xbf, 0x26, 0x35, 0x4d, 0x28, 0x68, 0xc2, 0x73,
+0xce, 0x6f, 0x48, 0x5e, 0x3d, 0x43, 0xeb, 0x22, 0x5c, 0x00, 0xbf, 0xde, 0x5d, 0xc0, 0x12, 0xa8,
+0xe2, 0x98, 0x66, 0x95, 0xc2, 0x9f, 0x27, 0xb8, 0x97, 0xdc, 0x3a, 0x07, 0x61, 0x31, 0xdf, 0x53,
+0xc6, 0x69, 0xc2, 0x70, 0x46, 0x69, 0xf6, 0x55, 0xbb, 0x3a, 0xda, 0x1a, 0x82, 0xf9, 0x29, 0xd9,
+0xe1, 0xbc, 0x78, 0xa7, 0xd8, 0x9b, 0x84, 0x9c, 0x72, 0xaa, 0x3b, 0xc5, 0xea, 0xe8, 0x84, 0x10,
+0x6f, 0x35, 0x6d, 0x52, 0x94, 0x63, 0x4c, 0x67, 0x82, 0x5e, 0x3b, 0x4b, 0xe3, 0x30, 0x5c, 0x12,
+0x68, 0xf2, 0x85, 0xd4, 0xc1, 0xbb, 0x0c, 0xab, 0xac, 0xa4, 0x9a, 0xa9, 0xc5, 0xb9, 0x6d, 0xd3,
+0x30, 0xf3, 0x68, 0x14, 0xbd, 0x32, 0xd1, 0x49, 0x24, 0x57, 0x56, 0x59, 0x63, 0x50, 0x87, 0x3e,
+0x07, 0x26, 0x12, 0x0a, 0xda, 0xed, 0xab, 0xd4, 0x83, 0xc1, 0xa1, 0xb6, 0xc3, 0xb4, 0x37, 0xbc,
+0x59, 0xcb, 0xd1, 0xe0, 0x0c, 0xfa, 0x08, 0x14, 0x89, 0x2b, 0x93, 0x3d, 0x85, 0x47, 0x0d, 0x48,
+0x57, 0x3f, 0x8d, 0x2e, 0xd6, 0x18, 0xfa, 0x00, 0xbe, 0xea, 0xf9, 0xd8, 0x47, 0xcd, 0x69, 0xc8,
+0x07, 0xca, 0xc5, 0xd0, 0xad, 0xdb, 0x06, 0xea, 0xee, 0xfa, 0x0e, 0x0d, 0x2b, 0x1e, 0xb5, 0x2b,
+0x1f, 0x33, 0x1b, 0x33, 0x8f, 0x2b, 0x41, 0x1e, 0xf6, 0x0d, 0x94, 0xfd, 0x0c, 0xf0, 0x82, 0xe6,
+0x63, 0xe1, 0xe3, 0xdf, 0x13, 0xe1, 0xe6, 0xe3, 0x5e, 0xe8, 0xce, 0xee, 0x7e, 0xf7, 0x22, 0x02,
+0x3c, 0x0d, 0xbe, 0x16, 0x4f, 0x1c, 0xc7, 0x1c, 0x2c, 0x18, 0x36, 0x10, 0x36, 0x07, 0x8a, 0xff,
+0x66, 0xfa, 0x08, 0xf8, 0x2a, 0xf7, 0xda, 0xf6, 0xe6, 0xf5, 0xea, 0xf3, 0xba, 0xf1, 0x66, 0xf0,
+0x3a, 0xf1, 0xba, 0xf4, 0xfc, 0xf9, 0xc0, 0xff, 0x5c, 0x04, 0xe2, 0x06, 0x96, 0x07, 0x74, 0x07,
+0xfc, 0x07, 0xb6, 0x09, 0x42, 0x0c, 0x88, 0x0e, 0x60, 0x0f, 0x80, 0x0d, 0x92, 0x08, 0xb2, 0x00,
+0x4c, 0xf7, 0x3a, 0xee, 0x20, 0xe7, 0x61, 0xe3, 0x69, 0xe3, 0x8e, 0xe6, 0x3c, 0xec, 0x68, 0xf3,
+0xc8, 0xfb, 0x26, 0x05, 0xdc, 0x0e, 0x42, 0x18, 0xe9, 0x1f, 0xc7, 0x24, 0xa9, 0x25, 0x81, 0x21,
+0x44, 0x18, 0x78, 0x0a, 0xc2, 0xf9, 0x9a, 0xe8, 0x65, 0xd9, 0x19, 0xcf, 0x5d, 0xcb, 0x47, 0xce,
+0x75, 0xd7, 0x7c, 0xe5, 0x52, 0xf6, 0x34, 0x08, 0x50, 0x19, 0xd5, 0x27, 0xf5, 0x32, 0xd9, 0x38,
+0xd5, 0x38, 0x2b, 0x32, 0x53, 0x24, 0x68, 0x10, 0x36, 0xf8, 0xc5, 0xde, 0x69, 0xc8, 0x53, 0xb9,
+0x35, 0xb4, 0xad, 0xb9, 0x7f, 0xc8, 0xef, 0xdd, 0x5a, 0xf6, 0xfc, 0x0e, 0x1f, 0x25, 0x7d, 0x37,
+0x4b, 0x44, 0x8f, 0x4a, 0x13, 0x49, 0xd9, 0x3e, 0x91, 0x2b, 0x72, 0x10, 0x6a, 0xf0, 0xb7, 0xcf,
+0x83, 0xb4, 0xd4, 0xa3, 0xd6, 0xa0, 0x34, 0xab, 0x7b, 0xc0, 0x8d, 0xdc, 0x04, 0xfb, 0x1c, 0x18,
+0xc1, 0x31, 0xf7, 0x45, 0xad, 0x53, 0x2a, 0x59, 0xd0, 0x54, 0xc1, 0x45, 0x17, 0x2c, 0x22, 0x0a,
+0xd2, 0xe3, 0xf3, 0xbe, 0x64, 0xa2, 0xa0, 0x93, 0x96, 0x94, 0xfc, 0xa3, 0x63, 0xbe, 0x05, 0xdf,
+0x1e, 0x01, 0x17, 0x21, 0x97, 0x3c, 0x03, 0x52, 0x68, 0x5f, 0xd6, 0x62, 0x94, 0x5a, 0x2f, 0x46,
+0xe9, 0x26, 0xca, 0xff, 0x73, 0xd6, 0x0b, 0xb1, 0xa0, 0x96, 0x60, 0x8b, 0x1a, 0x90, 0x0a, 0xa3,
+0x8b, 0xc0, 0xc2, 0xe3, 0xfc, 0x07, 0xb5, 0x29, 0x57, 0x46, 0xb4, 0x5b, 0x40, 0x67, 0xe6, 0x66,
+0x74, 0x59, 0xe1, 0x3f, 0x75, 0x1c, 0xc0, 0xf3, 0x47, 0xcb, 0xf8, 0xa8, 0x3a, 0x92, 0x68, 0x8a,
+0x94, 0x91, 0x50, 0xa6, 0x49, 0xc5, 0xca, 0xe9, 0x66, 0x0f, 0x1f, 0x32, 0x8d, 0x4e, 0xea, 0x61,
+0x88, 0x69, 0xee, 0x63, 0xe3, 0x51, 0x11, 0x35, 0x2a, 0x11, 0x80, 0xea, 0xbd, 0xc5, 0xce, 0xa7,
+0xd6, 0x94, 0x4a, 0x8f, 0xcc, 0x97, 0x5b, 0xad, 0x01, 0xcd, 0x2c, 0xf2, 0xbe, 0x17, 0x25, 0x39,
+0xf9, 0x52, 0xe6, 0x61, 0x46, 0x64, 0x14, 0x5a, 0x11, 0x45, 0x55, 0x28, 0xfe, 0x06, 0x9a, 0xe4,
+0x03, 0xc5, 0xb7, 0xab, 0x02, 0x9c, 0x88, 0x98, 0xfc, 0xa1, 0x1d, 0xb8, 0xcd, 0xd7, 0xf8, 0xfb,
+0x4b, 0x1f, 0x43, 0x3d, 0xb5, 0x51, 0xca, 0x5a, 0x1a, 0x58, 0xe9, 0x4a, 0xa1, 0x36, 0xdd, 0x1c,
+0x94, 0x00, 0x04, 0xe4, 0xb5, 0xc9, 0xb7, 0xb4, 0x28, 0xa8, 0x7a, 0xa6, 0xfb, 0xb0, 0x0b, 0xc7,
+0xec, 0xe4, 0xc0, 0x05, 0xed, 0x23, 0x13, 0x3b, 0xa9, 0x48, 0xdb, 0x4b, 0xdd, 0x45, 0x21, 0x39,
+0xa7, 0x27, 0x90, 0x13, 0xa0, 0xfd, 0xa8, 0xe7, 0x23, 0xd3, 0xa5, 0xc2, 0x19, 0xb9, 0xef, 0xb8,
+0x3d, 0xc3, 0xcf, 0xd6, 0x10, 0xf0, 0xfe, 0x09, 0x6f, 0x20, 0xf7, 0x2f, 0x8b, 0x37, 0x73, 0x37,
+0x9b, 0x31, 0x99, 0x27, 0x78, 0x1b, 0x8c, 0x0d, 0x98, 0xfe, 0x3e, 0xef, 0x87, 0xe0, 0xad, 0xd4,
+0xdd, 0xcd, 0x3d, 0xce, 0x29, 0xd6, 0xa8, 0xe4, 0x70, 0xf6, 0x04, 0x08, 0x52, 0x16, 0x4b, 0x1f,
+0xd7, 0x22, 0xb5, 0x21, 0x9d, 0x1d, 0xe4, 0x17, 0x48, 0x11, 0x16, 0x0a, 0x40, 0x02, 0x18, 0xfa,
+0xfa, 0xf1, 0xe6, 0xea, 0x42, 0xe6, 0x44, 0xe5, 0x5a, 0xe8, 0xe2, 0xee, 0x22, 0xf7, 0x44, 0xff,
+0x08, 0x06, 0x28, 0x0a, 0xcc, 0x0b, 0xb6, 0x0b, 0xda, 0x0a, 0x24, 0x0a, 0xee, 0x09, 0x0c, 0x0a,
+0x36, 0x0a, 0x86, 0x09, 0xfe, 0x06, 0xe0, 0x02, 0x8c, 0xfd, 0x46, 0xf8, 0x1c, 0xf4, 0x80, 0xf1,
+0xc0, 0xf0, 0x3c, 0xf1, 0x64, 0xf2, 0x8e, 0xf3, 0xd4, 0xf4, 0xc2, 0xf6, 0x06, 0xfa, 0x20, 0xff,
+0x28, 0x06, 0x9e, 0x0e, 0xe0, 0x16, 0x1f, 0x1d, 0x21, 0x1f, 0xfe, 0x1b, 0xee, 0x13, 0x80, 0x08,
+0x0c, 0xfc, 0x7e, 0xf0, 0x58, 0xe7, 0x01, 0xe1, 0xa1, 0xdd, 0xb1, 0xdc, 0x8b, 0xde, 0x59, 0xe3,
+0xc4, 0xeb, 0x1e, 0xf8, 0xaa, 0x07, 0xca, 0x18, 0x89, 0x28, 0x89, 0x33, 0xe3, 0x36, 0x99, 0x31,
+0x73, 0x24, 0x1e, 0x12, 0x16, 0xfe, 0x42, 0xeb, 0xcf, 0xdb, 0xa3, 0xd0, 0xbd, 0xc9, 0x67, 0xc7,
+0x35, 0xca, 0xcb, 0xd2, 0xb7, 0xe1, 0x50, 0xf6, 0xb0, 0x0e, 0x9b, 0x27, 0xab, 0x3c, 0xdb, 0x49,
+0x35, 0x4c, 0x1d, 0x43, 0x7f, 0x30, 0x9a, 0x17, 0xc4, 0xfc, 0x85, 0xe3, 0x6f, 0xce, 0x1b, 0xbf,
+0x4f, 0xb6, 0x7f, 0xb4, 0x57, 0xba, 0x87, 0xc8, 0xa3, 0xde, 0x6e, 0xfb, 0xec, 0x1a, 0xad, 0x38,
+0xcf, 0x4f, 0x4e, 0x5c, 0xf8, 0x5b, 0xb9, 0x4e, 0xf1, 0x36, 0xac, 0x18, 0x52, 0xf8, 0xa3, 0xd9,
+0x09, 0xc0, 0x93, 0xad, 0x24, 0xa4, 0xc2, 0xa4, 0xdd, 0xaf, 0x7f, 0xc5, 0xa9, 0xe3, 0xcc, 0x06,
+0x01, 0x2a, 0xb5, 0x48, 0x88, 0x5e, 0x94, 0x68, 0xf4, 0x64, 0x3b, 0x54, 0xf9, 0x38, 0x00, 0x17,
+0x82, 0xf2, 0xe3, 0xcf, 0x15, 0xb3, 0xb2, 0x9f, 0xdc, 0x97, 0xa4, 0x9c, 0xfb, 0xad, 0xef, 0xc9,
+0x0c, 0xed, 0x98, 0x12, 0xd7, 0x35, 0xcb, 0x52, 0x66, 0x66, 0xd4, 0x6d, 0x0a, 0x68, 0x26, 0x55,
+0x7f, 0x37, 0x64, 0x12, 0x68, 0xea, 0xb1, 0xc4, 0x9c, 0xa6, 0x74, 0x94, 0x6c, 0x90, 0xe0, 0x9a,
+0xd7, 0xb1, 0x55, 0xd2, 0x78, 0xf7, 0xad, 0x1c, 0xeb, 0x3d, 0x4c, 0x58, 0x5a, 0x69, 0xc2, 0x6e,
+0xec, 0x66, 0xeb, 0x51, 0xab, 0x31, 0xd6, 0x09, 0xcb, 0xdf, 0xc7, 0xb9, 0xee, 0x9d, 0x4c, 0x90,
+0xe4, 0x91, 0x82, 0xa1, 0x09, 0xbc, 0x5d, 0xdd, 0x16, 0x01, 0x45, 0x23, 0x1f, 0x41, 0x7c, 0x58,
+0x22, 0x67, 0x68, 0x6a, 0xba, 0x60, 0xbd, 0x49, 0xb9, 0x27, 0xe4, 0xfe, 0x93, 0xd5, 0xb1, 0xb2,
+0x00, 0x9c, 0x28, 0x94, 0xe0, 0x9a, 0x7d, 0xad, 0x6b, 0xc8, 0xc6, 0xe7, 0xce, 0x07, 0xb7, 0x25,
+0x9d, 0x3f, 0x93, 0x53, 0x56, 0x5f, 0x50, 0x60, 0xca, 0x54, 0xeb, 0x3c, 0x3a, 0x1b, 0xcc, 0xf4,
+0x1b, 0xd0, 0x9d, 0xb3, 0x6e, 0xa3, 0xc0, 0xa0, 0x0c, 0xaa, 0x95, 0xbc, 0xfd, 0xd4, 0x0a, 0xf0,
+0x4a, 0x0b, 0x7b, 0x24, 0x3d, 0x3a, 0x5d, 0x4a, 0xf5, 0x52, 0x99, 0x51, 0x47, 0x45, 0x65, 0x2e,
+0x22, 0x10, 0x58, 0xef, 0xd7, 0xd1, 0x7f, 0xbc, 0xc3, 0xb1, 0x1b, 0xb2, 0x9d, 0xbb, 0xed, 0xcb,
+0x59, 0xe0, 0xb4, 0xf6, 0xb6, 0x0c, 0xe5, 0x20, 0x7d, 0x31, 0x29, 0x3d, 0x2d, 0x42, 0x15, 0x3f,
+0x5d, 0x33, 0x35, 0x20, 0x3a, 0x08, 0x80, 0xef, 0x37, 0xda, 0x81, 0xcb, 0xfb, 0xc4, 0x57, 0xc6,
+0x61, 0xce, 0x2f, 0xdb, 0xd8, 0xea, 0x42, 0xfb, 0x28, 0x0b, 0xf2, 0x18, 0xd1, 0x23, 0xaf, 0x2a,
+0x0d, 0x2d, 0x6d, 0x2a, 0xc5, 0x22, 0x94, 0x16, 0x54, 0x07, 0x7a, 0xf7, 0x74, 0xe9, 0x79, 0xdf,
+0xa5, 0xda, 0x7f, 0xdb, 0xff, 0xe0, 0x98, 0xe9, 0x84, 0xf3, 0x42, 0xfd, 0xac, 0x05, 0x4a, 0x0c,
+0xec, 0x10, 0xfe, 0x13, 0xe8, 0x15, 0x96, 0x16, 0x5a, 0x15, 0xc4, 0x11, 0xa8, 0x0b, 0xe0, 0x03,
+0xd0, 0xfb, 0x4a, 0xf5, 0xac, 0xf1, 0x22, 0xf1, 0xfa, 0xf2, 0xc8, 0xf5, 0x62, 0xf8, 0xde, 0xf9,
+0x0c, 0xfa, 0x4e, 0xf9, 0x28, 0xf9, 0x10, 0xfb, 0x9c, 0xff, 0x50, 0x06, 0x60, 0x0d, 0xd6, 0x12,
+0x1a, 0x15, 0x2e, 0x14, 0xe0, 0x10, 0xd8, 0x0c, 0x08, 0x09, 0xc0, 0x05, 0x52, 0x02, 0xdc, 0xfd,
+0xc8, 0xf7, 0x3c, 0xf0, 0x5e, 0xe8, 0x0f, 0xe2, 0xdf, 0xdf, 0x5f, 0xe3, 0x96, 0xec, 0x00, 0xfa,
+0x0e, 0x09, 0x92, 0x16, 0x6d, 0x20, 0x9d, 0x25, 0xa5, 0x26, 0x6f, 0x24, 0xb5, 0x1f, 0x3c, 0x18,
+0x10, 0x0e, 0xee, 0x00, 0xb2, 0xf1, 0xf7, 0xe1, 0x55, 0xd4, 0x97, 0xcb, 0xfb, 0xc9, 0x9d, 0xd0,
+0xcb, 0xde, 0x76, 0xf2, 0x14, 0x08, 0x93, 0x1c, 0xcf, 0x2c, 0x47, 0x37, 0x6f, 0x3b, 0x9d, 0x39,
+0xeb, 0x31, 0xbd, 0x24, 0x76, 0x12, 0xb4, 0xfc, 0xde, 0xe5, 0xc9, 0xd0, 0x75, 0xc0, 0x9f, 0xb7,
+0x0d, 0xb8, 0x53, 0xc2, 0x4b, 0xd5, 0x86, 0xee, 0xa4, 0x0a, 0xd5, 0x25, 0x47, 0x3c, 0x47, 0x4b,
+0x53, 0x51, 0xb5, 0x4d, 0xbd, 0x40, 0xa1, 0x2b, 0xe0, 0x10, 0x80, 0xf3, 0x2f, 0xd7, 0x4f, 0xbf,
+0xc3, 0xae, 0x92, 0xa7, 0xd2, 0xaa, 0xab, 0xb8, 0x3d, 0xd0, 0x30, 0xef, 0x86, 0x11, 0x77, 0x32,
+0x5f, 0x4d, 0x60, 0x5e, 0x04, 0x63, 0xb4, 0x5a, 0xed, 0x46, 0x9f, 0x2a, 0xc2, 0x09, 0x50, 0xe8,
+0x25, 0xca, 0x4b, 0xb2, 0xfe, 0xa2, 0x8e, 0x9d, 0x1c, 0xa3, 0x3d, 0xb4, 0x1b, 0xd0, 0x0a, 0xf4,
+0x72, 0x1b, 0x8d, 0x40, 0x7a, 0x5d, 0x66, 0x6d, 0x0a, 0x6e, 0xf8, 0x5f, 0x37, 0x46, 0x1f, 0x25,
+0x52, 0x01, 0xd7, 0xde, 0xd7, 0xc0, 0xd4, 0xa9, 0xba, 0x9b, 0x08, 0x98, 0x12, 0xa0, 0x7b, 0xb4,
+0x7f, 0xd4, 0xc8, 0xfc, 0x9b, 0x27, 0xef, 0x4d, 0x6e, 0x69, 0xac, 0x75, 0x3a, 0x71, 0xee, 0x5d,
+0x4d, 0x40, 0x3d, 0x1d, 0x26, 0xf9, 0x27, 0xd7, 0x29, 0xba, 0xba, 0xa4, 0xb6, 0x98, 0x98, 0x97,
+0xd8, 0xa2, 0x0b, 0xbb, 0x79, 0xde, 0xc0, 0x08, 0x3d, 0x33, 0xfc, 0x56, 0x2e, 0x6e, 0x66, 0x75,
+0x6e, 0x6c, 0x6a, 0x56, 0xd5, 0x37, 0x4c, 0x15, 0x4a, 0xf2, 0xe9, 0xd1, 0xd5, 0xb6, 0x90, 0xa3,
+0x3a, 0x9a, 0x8c, 0x9c, 0x55, 0xab, 0x57, 0xc6, 0xcc, 0xea, 0x80, 0x13, 0x11, 0x3a, 0x82, 0x58,
+0x54, 0x6a, 0x64, 0x6d, 0x4a, 0x62, 0x07, 0x4c, 0xc5, 0x2e, 0x32, 0x0e, 0x4e, 0xed, 0x11, 0xcf,
+0x95, 0xb6, 0xae, 0xa6, 0x30, 0xa1, 0x28, 0xa7, 0xcb, 0xb8, 0x71, 0xd4, 0xb6, 0xf6, 0x9c, 0x1a,
+0x0b, 0x3b, 0x71, 0x53, 0x68, 0x60, 0xa8, 0x60, 0x1a, 0x55, 0x0b, 0x40, 0xe9, 0x24, 0xbe, 0x06,
+0x02, 0xe9, 0xe7, 0xce, 0x4d, 0xbb, 0x5d, 0xb0, 0x67, 0xaf, 0x59, 0xb8, 0x21, 0xca, 0x75, 0xe2,
+0x7c, 0xfe, 0xb2, 0x1a, 0xbd, 0x33, 0x61, 0x46, 0x1b, 0x50, 0x99, 0x4f, 0x03, 0x45, 0x1d, 0x32,
+0xdc, 0x19, 0xa2, 0xff, 0xc4, 0xe6, 0x75, 0xd2, 0x0d, 0xc5, 0xc9, 0xbf, 0xad, 0xc2, 0x7b, 0xcc,
+0x71, 0xdb, 0xb6, 0xed, 0x92, 0x01, 0xa4, 0x15, 0xcf, 0x27, 0xc1, 0x35, 0x05, 0x3d, 0x21, 0x3c,
+0x27, 0x33, 0x83, 0x23, 0xe0, 0x0f, 0xca, 0xfb, 0x60, 0xea, 0xe5, 0xdd, 0x41, 0xd7, 0x45, 0xd6,
+0xe9, 0xd9, 0x9b, 0xe0, 0xe8, 0xe8, 0x9e, 0xf2, 0xa8, 0xfd, 0xe2, 0x09, 0x2e, 0x16, 0x39, 0x20,
+0x13, 0x26, 0x31, 0x26, 0x41, 0x20, 0xd4, 0x15, 0x54, 0x09, 0x96, 0xfd, 0xae, 0xf4, 0x78, 0xef,
+0xb6, 0xed, 0x36, 0xee, 0x90, 0xef, 0xc0, 0xf0, 0xa6, 0xf1, 0x0e, 0xf3, 0x22, 0xf6, 0x6c, 0xfb,
+0x64, 0x02, 0x76, 0x09, 0xba, 0x0e, 0xf4, 0x10, 0xea, 0x0f, 0x96, 0x0c, 0xa4, 0x08, 0xd8, 0x05,
+0xd6, 0x04, 0x12, 0x05, 0x48, 0x05, 0x52, 0x04, 0x5e, 0x01, 0x4a, 0xfc, 0xd0, 0xf5, 0x86, 0xef,
+0x4c, 0xeb, 0x38, 0xea, 0x48, 0xec, 0x0e, 0xf1, 0x1e, 0xf7, 0x68, 0xfd, 0x44, 0x03, 0xd4, 0x08,
+0xbc, 0x0e, 0xa6, 0x14, 0xa2, 0x19, 0xaf, 0x1c, 0xb9, 0x1c, 0x04, 0x19, 0x42, 0x11, 0xc2, 0x05,
+0xdc, 0xf7, 0xd8, 0xe9, 0xbf, 0xdd, 0xfd, 0xd5, 0x1b, 0xd4, 0x07, 0xd8, 0x1f, 0xe1, 0xa8, 0xed,
+0x2a, 0xfc, 0x50, 0x0b, 0x88, 0x19, 0x61, 0x25, 0xc1, 0x2d, 0x77, 0x31, 0x1b, 0x30, 0x49, 0x29,
+0xd5, 0x1c, 0x76, 0x0b, 0xa4, 0xf6, 0xe9, 0xe0, 0xf9, 0xcd, 0x0d, 0xc1, 0xf3, 0xbc, 0x93, 0xc2,
+0xa5, 0xd0, 0xb2, 0xe4, 0xa2, 0xfb, 0x74, 0x12, 0x99, 0x26, 0x15, 0x36, 0xdd, 0x3f, 0x6b, 0x43,
+0x5f, 0x40, 0x2b, 0x36, 0xbd, 0x24, 0x06, 0x0d, 0x04, 0xf1, 0x43, 0xd4, 0x73, 0xbb, 0x85, 0xab,
+0xfc, 0xa7, 0x93, 0xb1, 0x1d, 0xc6, 0xdd, 0xe1, 0x14, 0x00, 0x93, 0x1c, 0x65, 0x34, 0xf5, 0x45,
+0x47, 0x50, 0xfd, 0x52, 0x0b, 0x4d, 0x6d, 0x3e, 0x23, 0x27, 0x94, 0x08, 0xb0, 0xe5, 0x87, 0xc3,
+0x02, 0xa8, 0xba, 0x98, 0xe0, 0x98, 0x06, 0xa8, 0x31, 0xc3, 0xb8, 0xe4, 0x70, 0x07, 0x0f, 0x27,
+0xc7, 0x40, 0x3f, 0x53, 0x62, 0x5d, 0x30, 0x5e, 0xec, 0x54, 0x39, 0x41, 0xd5, 0x23, 0x36, 0xff,
+0xaf, 0xd7, 0x45, 0xb3, 0xd6, 0x98, 0xee, 0x8c, 0xdc, 0x91, 0xf6, 0xa5, 0x0f, 0xc5, 0xf8, 0xe9,
+0xd4, 0x0e, 0xeb, 0x2f, 0x97, 0x4a, 0x36, 0x5d, 0x0c, 0x66, 0xd2, 0x63, 0xbe, 0x55, 0x97, 0x3c,
+0x3e, 0x1a, 0xf4, 0xf1, 0x8b, 0xc9, 0x0a, 0xa7, 0x72, 0x90, 0x2e, 0x89, 0xe2, 0x91, 0xec, 0xa8,
+0x0f, 0xca, 0x0c, 0xf0, 0xd0, 0x15, 0x7b, 0x37, 0x3f, 0x52, 0xdc, 0x63, 0x12, 0x6a, 0x8c, 0x63,
+0xa1, 0x50, 0xd9, 0x32, 0xb0, 0x0d, 0x8a, 0xe5, 0xb9, 0xbf, 0xce, 0xa1, 0xdc, 0x8f, 0x52, 0x8c,
+0x76, 0x97, 0x9f, 0xaf, 0x17, 0xd1, 0x1c, 0xf7, 0x8f, 0x1c, 0x4f, 0x3d, 0x6a, 0x56, 0xd2, 0x64,
+0xc4, 0x66, 0x84, 0x5b, 0xbf, 0x44, 0x7f, 0x25, 0xd4, 0x01, 0x99, 0xdd, 0x51, 0xbd, 0xa8, 0xa4,
+0xa6, 0x96, 0x48, 0x95, 0x1a, 0xa1, 0x13, 0xb9, 0xf7, 0xd9, 0xee, 0xfe, 0xd7, 0x22, 0x3d, 0x41,
+0x6e, 0x56, 0xfe, 0x5f, 0xc6, 0x5c, 0xc7, 0x4d, 0xd3, 0x35, 0x66, 0x18, 0x10, 0xf9, 0x01, 0xdb,
+0xdf, 0xc0, 0x2d, 0xad, 0x74, 0xa2, 0xa6, 0xa2, 0xa7, 0xae, 0xd7, 0xc5, 0xd8, 0xe4, 0x1a, 0x07,
+0x5b, 0x27, 0xaf, 0x40, 0xfb, 0x4f, 0xbd, 0x53, 0x53, 0x4c, 0x4b, 0x3c, 0x93, 0x26, 0x44, 0x0e,
+0xc2, 0xf5, 0x95, 0xde, 0x3f, 0xca, 0x1d, 0xbb, 0xa1, 0xb2, 0x93, 0xb3, 0xe9, 0xbe, 0x9d, 0xd3,
+0x02, 0xef, 0x1c, 0x0c, 0xc3, 0x25, 0x35, 0x38, 0x49, 0x41, 0xa7, 0x40, 0x71, 0x38, 0xa9, 0x2a,
+0x16, 0x1a, 0x8a, 0x08, 0x1c, 0xf7, 0xb2, 0xe6, 0x1b, 0xd8, 0x9d, 0xcc, 0xab, 0xc6, 0xd1, 0xc7,
+0x2b, 0xd1, 0xaf, 0xe1, 0x74, 0xf6, 0x66, 0x0b, 0xdf, 0x1c, 0x05, 0x28, 0x2b, 0x2c, 0x61, 0x2a,
+0x0b, 0x24, 0x3c, 0x1b, 0x30, 0x11, 0xe6, 0x06, 0xba, 0xfc, 0xd0, 0xf2, 0x66, 0xe9, 0xa7, 0xe1,
+0x19, 0xdd, 0x2f, 0xdd, 0x79, 0xe2, 0x3c, 0xec, 0x82, 0xf8, 0xae, 0x04, 0x1a, 0x0e, 0x9e, 0x13,
+0x46, 0x15, 0x0a, 0x14, 0x2e, 0x11, 0xc2, 0x0d, 0x70, 0x0a, 0x94, 0x07, 0xe2, 0x04, 0xb8, 0x01,
+0xc0, 0xfd, 0x44, 0xf9, 0xc4, 0xf4, 0x78, 0xf1, 0xf8, 0xef, 0x9e, 0xf0, 0x2a, 0xf3, 0x78, 0xf6,
+0xa2, 0xf9, 0x28, 0xfc, 0x0a, 0xfe, 0xb6, 0xff, 0xd2, 0x01, 0x7e, 0x04, 0x40, 0x08, 0xbe, 0x0c,
+0x26, 0x11, 0x44, 0x14, 0x92, 0x14, 0x3e, 0x11, 0x6c, 0x0a, 0x32, 0x01, 0x7e, 0xf7, 0xec, 0xee,
+0xa6, 0xe8, 0x2e, 0xe5, 0x0a, 0xe4, 0x14, 0xe5, 0xe6, 0xe7, 0x92, 0xec, 0x50, 0xf3, 0x70, 0xfc,
+0xec, 0x07, 0xf2, 0x14, 0x3b, 0x21, 0x59, 0x2a, 0xb7, 0x2d, 0x61, 0x29, 0xdf, 0x1d, 0xe0, 0x0c,
+0xe0, 0xf9, 0x5a, 0xe8, 0xa1, 0xda, 0x01, 0xd2, 0xa1, 0xce, 0x95, 0xcf, 0xbd, 0xd4, 0xab, 0xdd,
+0x70, 0xea, 0x0a, 0xfb, 0x6a, 0x0e, 0x7f, 0x22, 0x53, 0x34, 0x4d, 0x40, 0x15, 0x43, 0x67, 0x3b,
+0x93, 0x29, 0x92, 0x11, 0x60, 0xf7, 0x8b, 0xdf, 0xf5, 0xcc, 0x07, 0xc1, 0xc3, 0xbb, 0xc7, 0xbc,
+0x0f, 0xc4, 0x73, 0xd1, 0x10, 0xe5, 0xa2, 0xfd, 0xe4, 0x18, 0x4f, 0x33, 0x77, 0x48, 0x85, 0x54,
+0xa9, 0x54, 0x3b, 0x48, 0x4f, 0x31, 0xb2, 0x13, 0x3e, 0xf4, 0x2b, 0xd7, 0x3f, 0xc0, 0xe5, 0xb0,
+0x52, 0xaa, 0x7d, 0xac, 0x9f, 0xb7, 0xbf, 0xcb, 0x32, 0xe7, 0x7e, 0x07, 0x59, 0x28, 0x91, 0x45,
+0x82, 0x5a, 0xf6, 0x63, 0xda, 0x5f, 0x77, 0x4e, 0xe7, 0x32, 0xaa, 0x10, 0x0c, 0xed, 0x4b, 0xcc,
+0x6b, 0xb2, 0x04, 0xa2, 0x74, 0x9c, 0x36, 0xa2, 0x2f, 0xb3, 0x0d, 0xce, 0x76, 0xef, 0xce, 0x13,
+0xf5, 0x35, 0x25, 0x52, 0xb2, 0x64, 0xbe, 0x6a, 0x92, 0x63, 0xcb, 0x4f, 0xbd, 0x31, 0x4c, 0x0d,
+0xa0, 0xe6, 0xfb, 0xc2, 0x42, 0xa7, 0xf0, 0x96, 0xee, 0x93, 0xba, 0x9e, 0x89, 0xb5, 0xe9, 0xd5,
+0x1a, 0xfb, 0x0f, 0x20, 0xed, 0x40, 0xfc, 0x59, 0x1e, 0x69, 0x30, 0x6c, 0x9a, 0x62, 0xbf, 0x4c,
+0x0f, 0x2d, 0x5c, 0x06, 0xe7, 0xdd, 0x47, 0xb9, 0x3e, 0x9e, 0xd4, 0x90, 0x82, 0x92, 0x9c, 0xa2,
+0x41, 0xbe, 0x39, 0xe1, 0x38, 0x06, 0xdb, 0x28, 0xef, 0x45, 0x46, 0x5b, 0x1c, 0x67, 0xe0, 0x67,
+0xaa, 0x5c, 0xbd, 0x45, 0xb5, 0x24, 0x24, 0xfd, 0x95, 0xd4, 0xd1, 0xb1, 0x88, 0x9a, 0x64, 0x92,
+0x92, 0x99, 0xf9, 0xad, 0x89, 0xcb, 0x76, 0xed, 0x2e, 0x0f, 0x65, 0x2d, 0xf9, 0x45, 0x64, 0x57,
+0x38, 0x60, 0xd6, 0x5e, 0x4b, 0x52, 0x85, 0x3a, 0x7e, 0x19, 0x2a, 0xf3, 0xbd, 0xcd, 0xd1, 0xaf,
+0x7a, 0x9e, 0xfc, 0x9b, 0x28, 0xa7, 0xe5, 0xbc, 0xdb, 0xd8, 0xcc, 0xf6, 0x60, 0x13, 0x3f, 0x2c,
+0x39, 0x40, 0xe7, 0x4d, 0x35, 0x54, 0x23, 0x51, 0x05, 0x44, 0xe9, 0x2c, 0xfe, 0x0d, 0xf0, 0xeb,
+0x69, 0xcc, 0x47, 0xb5, 0x44, 0xaa, 0xf3, 0xab, 0x6f, 0xb8, 0x99, 0xcc, 0x88, 0xe4, 0x26, 0xfd,
+0x2c, 0x14, 0xbf, 0x27, 0x15, 0x37, 0x47, 0x41, 0x9d, 0x44, 0x85, 0x40, 0xcb, 0x33, 0x5f, 0x1f,
+0xbc, 0x05, 0xa6, 0xea, 0xfd, 0xd2, 0xf5, 0xc2, 0x79, 0xbc, 0x91, 0xbf, 0xa1, 0xca, 0xa1, 0xda,
+0x60, 0xed, 0x46, 0x00, 0x5e, 0x11, 0xd9, 0x1f, 0x5f, 0x2a, 0x65, 0x30, 0x85, 0x31, 0xc9, 0x2c,
+0xb1, 0x22, 0xd6, 0x13, 0xdc, 0x01, 0x9c, 0xef, 0x2d, 0xe0, 0xcf, 0xd5, 0x15, 0xd2, 0xdf, 0xd4,
+0xb9, 0xdc, 0x60, 0xe8, 0x34, 0xf5, 0xb2, 0x01, 0x58, 0x0c, 0x26, 0x14, 0xfa, 0x18, 0x08, 0x1b,
+0xa4, 0x1a, 0x2c, 0x18, 0xce, 0x13, 0x46, 0x0d, 0xfe, 0x04, 0xd0, 0xfb, 0x18, 0xf3, 0xa8, 0xec,
+0xa2, 0xe9, 0x6a, 0xea, 0x68, 0xee, 0x32, 0xf4, 0x24, 0xfa, 0xfc, 0xfe, 0xf6, 0x01, 0xf4, 0x02,
+0xd8, 0x02, 0xbe, 0x02, 0xe4, 0x03, 0xa6, 0x06, 0x1e, 0x0a, 0xe4, 0x0c, 0xc2, 0x0d, 0x04, 0x0c,
+0x5c, 0x08, 0x34, 0x04, 0xb4, 0x00, 0xba, 0xfe, 0xc8, 0xfd, 0xc2, 0xfc, 0xc8, 0xfa, 0x1c, 0xf7,
+0x54, 0xf2, 0x8a, 0xed, 0x8e, 0xea, 0x50, 0xeb, 0xb8, 0xf0, 0x5a, 0xfa, 0x2a, 0x06, 0x8a, 0x11,
+0xfa, 0x19, 0x1d, 0x1e, 0x23, 0x1e, 0x42, 0x1b, 0x9a, 0x16, 0xce, 0x10, 0x94, 0x09, 0x80, 0x00,
+0x92, 0xf5, 0x9e, 0xe9, 0x4f, 0xde, 0x15, 0xd6, 0x47, 0xd3, 0x77, 0xd7, 0xcf, 0xe2, 0x84, 0xf3,
+0xea, 0x06, 0x82, 0x19, 0x17, 0x28, 0x03, 0x31, 0xbd, 0x33, 0x1b, 0x31, 0xbb, 0x29, 0x7b, 0x1e,
+0x7c, 0x0f, 0x8c, 0xfd, 0x4a, 0xea, 0xa5, 0xd7, 0xf1, 0xc8, 0x5d, 0xc0, 0x29, 0xc0, 0xfd, 0xc8,
+0xeb, 0xd9, 0xf6, 0xf0, 0xa2, 0x0a, 0x15, 0x23, 0xd9, 0x36, 0x9b, 0x43, 0xf3, 0x47, 0x13, 0x44,
+0x6d, 0x38, 0x21, 0x26, 0x10, 0x0f, 0x2c, 0xf5, 0xb1, 0xdb, 0xdf, 0xc5, 0x65, 0xb6, 0xf3, 0xaf,
+0xf3, 0xb2, 0xdb, 0xbf, 0x65, 0xd5, 0x5c, 0xf1, 0x48, 0x10, 0x03, 0x2e, 0x43, 0x46, 0x96, 0x55,
+0xf8, 0x59, 0x8f, 0x52, 0xbf, 0x40, 0xaf, 0x26, 0xec, 0x07, 0x32, 0xe8, 0x75, 0xcb, 0x1f, 0xb5,
+0x90, 0xa7, 0xf6, 0xa3, 0x9a, 0xaa, 0x61, 0xbb, 0x43, 0xd5, 0xfa, 0xf5, 0xb0, 0x19, 0x95, 0x3b,
+0x70, 0x56, 0xec, 0x65, 0x3a, 0x67, 0x16, 0x5a, 0x4f, 0x41, 0x9f, 0x20, 0x3a, 0xfd, 0x4f, 0xdb,
+0xb1, 0xbe, 0x4a, 0xaa, 0x52, 0x9f, 0x76, 0x9e, 0x04, 0xa8, 0xf3, 0xbb, 0x97, 0xd9, 0x40, 0xfe,
+0x69, 0x25, 0x67, 0x49, 0x24, 0x64, 0xbc, 0x70, 0xfe, 0x6c, 0x08, 0x5a, 0x05, 0x3c, 0x30, 0x18,
+0x7c, 0xf3, 0x27, 0xd2, 0x3d, 0xb7, 0xd8, 0xa4, 0xdc, 0x9b, 0xf2, 0x9c, 0xee, 0xa8, 0x03, 0xc0,
+0x1b, 0xe1, 0xa2, 0x08, 0x21, 0x31, 0x39, 0x54, 0xcc, 0x6b, 0x5e, 0x73, 0x6a, 0x6a, 0x0f, 0x53,
+0xd1, 0x32, 0xa8, 0x0e, 0x4c, 0xeb, 0x41, 0xcc, 0x0f, 0xb4, 0x74, 0xa4, 0x2e, 0x9e, 0x4c, 0xa2,
+0x63, 0xb1, 0x73, 0xcb, 0x32, 0xee, 0x62, 0x15, 0x37, 0x3b, 0xb8, 0x59, 0x8e, 0x6b, 0xde, 0x6d,
+0x06, 0x61, 0x41, 0x48, 0x7b, 0x28, 0x72, 0x06, 0xbe, 0xe5, 0xcb, 0xc9, 0x93, 0xb4, 0xc0, 0xa7,
+0xb2, 0xa4, 0xcf, 0xab, 0xc3, 0xbd, 0x07, 0xd9, 0x9e, 0xfa, 0x3f, 0x1e, 0xa5, 0x3e, 0xd6, 0x56,
+0x4a, 0x63, 0x16, 0x62, 0x21, 0x54, 0x85, 0x3c, 0xff, 0x1e, 0xda, 0xff, 0x5b, 0xe2, 0x91, 0xc9,
+0xeb, 0xb7, 0x39, 0xaf, 0x19, 0xb0, 0xb3, 0xba, 0xfb, 0xcd, 0xaa, 0xe7, 0xca, 0x04, 0xa5, 0x21,
+0x97, 0x3a, 0x59, 0x4c, 0x6b, 0x54, 0x91, 0x51, 0xaf, 0x44, 0xc3, 0x2f, 0xfc, 0x15, 0x2e, 0xfb,
+0x4f, 0xe2, 0x87, 0xce, 0xff, 0xc1, 0x8f, 0xbd, 0xd7, 0xc1, 0x99, 0xcd, 0x0f, 0xdf, 0x10, 0xf4,
+0xe0, 0x09, 0xa3, 0x1e, 0x4f, 0x30, 0xa5, 0x3c, 0xf9, 0x41, 0x21, 0x3f, 0x25, 0x34, 0xc5, 0x22,
+0x90, 0x0d, 0xe6, 0xf7, 0x0c, 0xe5, 0x67, 0xd7, 0xb5, 0xd0, 0xf7, 0xd0, 0x05, 0xd7, 0x1f, 0xe1,
+0x60, 0xed, 0x6a, 0xfa, 0x82, 0x07, 0xde, 0x13, 0x2f, 0x1f, 0x9d, 0x27, 0xc7, 0x2b, 0x43, 0x2a,
+0xa7, 0x22, 0x62, 0x16, 0x56, 0x07, 0xda, 0xf8, 0x66, 0xed, 0xbe, 0xe6, 0x2e, 0xe5, 0xb2, 0xe7,
+0x80, 0xec, 0xd0, 0xf1, 0xac, 0xf6, 0x0a, 0xfb, 0xc4, 0xff, 0x4e, 0x05, 0xba, 0x0b, 0xb6, 0x11,
+0xaa, 0x15, 0x52, 0x16, 0xec, 0x12, 0x96, 0x0c, 0x24, 0x05, 0xd0, 0xfe, 0x66, 0xfb, 0xc0, 0xfa,
+0x46, 0xfc, 0x5e, 0xfe, 0x28, 0xff, 0xfa, 0xfd, 0xc4, 0xfa, 0xda, 0xf6, 0x06, 0xf4, 0x5c, 0xf3,
+0x5e, 0xf5, 0x6a, 0xf9, 0x16, 0xfe, 0x72, 0x02, 0x9e, 0x05, 0xd6, 0x07, 0xe2, 0x09, 0x86, 0x0c,
+0xd8, 0x0f, 0xf6, 0x12, 0x72, 0x14, 0x38, 0x13, 0x80, 0x0e, 0x40, 0x06, 0x94, 0xfb, 0x1c, 0xf0,
+0x4c, 0xe6, 0xe5, 0xdf, 0x19, 0xde, 0x35, 0xe1, 0x54, 0xe8, 0x7a, 0xf2, 0xe4, 0xfd, 0x7e, 0x09,
+0x82, 0x14, 0x25, 0x1e, 0x63, 0x25, 0x41, 0x29, 0x9f, 0x28, 0x4f, 0x23, 0x2c, 0x19, 0x9c, 0x0a,
+0x2e, 0xf9, 0xde, 0xe6, 0xbd, 0xd6, 0x79, 0xcb, 0x3f, 0xc7, 0x53, 0xcb, 0xf7, 0xd6, 0x92, 0xe8,
+0x10, 0xfd, 0x92, 0x11, 0xbf, 0x23, 0xcf, 0x31, 0x8d, 0x3a, 0x27, 0x3d, 0x67, 0x39, 0x75, 0x2f,
+0xd1, 0x1f, 0x14, 0x0b, 0xea, 0xf2, 0x0d, 0xda, 0x59, 0xc4, 0xe9, 0xb5, 0xb9, 0xb1, 0x6d, 0xb9,
+0xef, 0xcb, 0xb2, 0xe5, 0x50, 0x02, 0x37, 0x1d, 0x89, 0x33, 0x29, 0x43, 0x53, 0x4b, 0xe7, 0x4b,
+0xe7, 0x44, 0xdd, 0x36, 0x05, 0x22, 0x4e, 0x07, 0xee, 0xe8, 0xbd, 0xca, 0x97, 0xb1, 0xb8, 0xa2,
+0xa0, 0xa1, 0xed, 0xae, 0x77, 0xc8, 0x16, 0xe9, 0x20, 0x0b, 0x9f, 0x29, 0x57, 0x41, 0x27, 0x51,
+0x68, 0x58, 0xec, 0x56, 0xc9, 0x4c, 0x31, 0x3a, 0xcf, 0x1f, 0x32, 0xff, 0x85, 0xdb, 0xc7, 0xb9,
+0x3c, 0xa0, 0xfe, 0x93, 0xb2, 0x97, 0xf2, 0xaa, 0xfd, 0xc9, 0xd8, 0xee, 0x84, 0x13, 0x53, 0x33,
+0xa3, 0x4b, 0x48, 0x5b, 0x70, 0x61, 0x98, 0x5d, 0xa7, 0x4f, 0x3b, 0x38, 0x6c, 0x18, 0x22, 0xf3,
+0xaf, 0xcc, 0x26, 0xab, 0x70, 0x94, 0xc6, 0x8c, 0x88, 0x95, 0x29, 0xad, 0x53, 0xcf, 0x18, 0xf6,
+0xa0, 0x1b, 0x81, 0x3b, 0x6b, 0x53, 0x04, 0x62, 0x00, 0x66, 0x98, 0x5e, 0x1b, 0x4c, 0xb5, 0x2f,
+0x14, 0x0c, 0x04, 0xe5, 0xad, 0xbf, 0xe8, 0xa1, 0x82, 0x90, 0xc4, 0x8d, 0x4c, 0x9a, 0xff, 0xb3,
+0xb3, 0xd6, 0x18, 0xfd, 0xe5, 0x21, 0x11, 0x41, 0x04, 0x58, 0x8c, 0x64, 0x00, 0x65, 0x4e, 0x59,
+0x61, 0x42, 0x09, 0x23, 0xbe, 0xfe, 0xbb, 0xd9, 0x2f, 0xb9, 0x3a, 0xa1, 0xcc, 0x94, 0x84, 0x95,
+0x78, 0xa3, 0xff, 0xbc, 0xc5, 0xde, 0xcc, 0x03, 0x31, 0x27, 0xa9, 0x44, 0xea, 0x58, 0x9a, 0x61,
+0x82, 0x5d, 0x73, 0x4d, 0x2b, 0x34, 0xbc, 0x14, 0xb0, 0xf3, 0x69, 0xd4, 0x63, 0xba, 0x56, 0xa8,
+0xe2, 0x9f, 0x18, 0xa2, 0x99, 0xaf, 0xab, 0xc7, 0x1a, 0xe7, 0xe0, 0x09, 0x4b, 0x2a, 0x35, 0x44,
+0x11, 0x54, 0xb2, 0x57, 0x7f, 0x4f, 0xb5, 0x3d, 0x35, 0x25, 0xd8, 0x09, 0xc0, 0xee, 0x47, 0xd6,
+0xcf, 0xc2, 0x37, 0xb5, 0xdb, 0xae, 0x5d, 0xb1, 0xcd, 0xbd, 0x71, 0xd3, 0x08, 0xf0, 0xaa, 0x0e,
+0x55, 0x2a, 0xc1, 0x3e, 0xbf, 0x48, 0xc7, 0x47, 0x73, 0x3d, 0x37, 0x2c, 0x9c, 0x17, 0x9a, 0x02,
+0xce, 0xee, 0xb9, 0xdd, 0xd9, 0xcf, 0xf5, 0xc5, 0x71, 0xc1, 0xc7, 0xc3, 0x27, 0xce, 0x6b, 0xe0,
+0x9a, 0xf7, 0xbe, 0x0f, 0x3b, 0x24, 0xa9, 0x31, 0x87, 0x36, 0x17, 0x33, 0x83, 0x29, 0x73, 0x1c,
+0x70, 0x0e, 0xc8, 0x00, 0x9e, 0xf4, 0xfe, 0xe9, 0x1b, 0xe1, 0x43, 0xda, 0x91, 0xd6, 0x9d, 0xd7,
+0x51, 0xde, 0x4e, 0xea, 0x9a, 0xf9, 0x42, 0x09, 0xd6, 0x15, 0x95, 0x1d, 0x73, 0x1f, 0xab, 0x1c,
+0x0e, 0x17, 0x14, 0x10, 0x4e, 0x09, 0x5c, 0x03, 0x50, 0xfe, 0xb4, 0xf9, 0x1e, 0xf5, 0xc0, 0xf0,
+0x4c, 0xed, 0x88, 0xeb, 0x54, 0xec, 0x1c, 0xf0, 0xf2, 0xf5, 0x7e, 0xfc, 0x44, 0x02, 0xfe, 0x05,
+0xe4, 0x07, 0x1a, 0x08, 0xa2, 0x07, 0x6a, 0x07, 0xe4, 0x07, 0x02, 0x09, 0x78, 0x0a, 0x74, 0x0b,
+0xb4, 0x0a, 0xd8, 0x07, 0x94, 0x02, 0xf8, 0xfb, 0x1a, 0xf5, 0x56, 0xef, 0xb2, 0xeb, 0x7c, 0xea,
+0x72, 0xeb, 0xc8, 0xed, 0x4c, 0xf1, 0x8e, 0xf5, 0xd8, 0xfa, 0x38, 0x01, 0xde, 0x08, 0x74, 0x11,
+0xfc, 0x19, 0x77, 0x20, 0xcf, 0x22, 0xa7, 0x1f, 0x60, 0x16, 0x76, 0x08, 0x44, 0xf8, 0x00, 0xe9,
+0x51, 0xdd, 0x69, 0xd6, 0x7b, 0xd4, 0xeb, 0xd6, 0xdb, 0xdc, 0x96, 0xe5, 0x10, 0xf1, 0x1e, 0xff,
+0xfa, 0x0e, 0x61, 0x1f, 0xe9, 0x2d, 0xbb, 0x37, 0xfb, 0x39, 0xd1, 0x32, 0xed, 0x22, 0xe0, 0x0c,
+0x82, 0xf4, 0x21, 0xde, 0x13, 0xcd, 0x3f, 0xc3, 0x83, 0xc0, 0xcd, 0xc3, 0xad, 0xcc, 0x85, 0xda,
+0xa2, 0xec, 0x30, 0x02, 0x8a, 0x19, 0x39, 0x30, 0xc9, 0x42, 0x71, 0x4d, 0x3f, 0x4d, 0x3d, 0x41,
+0xd5, 0x2a, 0xaa, 0x0d, 0xb8, 0xee, 0x9d, 0xd2, 0x87, 0xbd, 0x19, 0xb1, 0xd1, 0xad, 0x07, 0xb3,
+0x9f, 0xbf, 0xf3, 0xd2, 0x36, 0xec, 0x16, 0x09, 0x9d, 0x26, 0x81, 0x41, 0x26, 0x55, 0x4e, 0x5e,
+0x46, 0x5a, 0xfb, 0x48, 0x17, 0x2d, 0x12, 0x0b, 0xb2, 0xe7, 0x15, 0xc8, 0x51, 0xb0, 0x86, 0xa2,
+0xcc, 0x9f, 0x74, 0xa7, 0xfb, 0xb8, 0x4b, 0xd3, 0xa2, 0xf3, 0x42, 0x16, 0x2f, 0x37, 0x0d, 0x52,
+0x70, 0x63, 0x42, 0x68, 0x60, 0x5f, 0xef, 0x49, 0xe3, 0x2a, 0x04, 0x06, 0x63, 0xe0, 0xe7, 0xbe,
+0xd6, 0xa5, 0x6a, 0x98, 0x58, 0x97, 0xd2, 0xa2, 0x9d, 0xb9, 0x5d, 0xd9, 0x22, 0xfe, 0x4f, 0x23,
+0x03, 0x44, 0x6e, 0x5c, 0xfe, 0x69, 0xd8, 0x6a, 0xf4, 0x5e, 0x51, 0x47, 0xb1, 0x26, 0x76, 0x00,
+0x43, 0xd9, 0x57, 0xb6, 0xf6, 0x9c, 0xd6, 0x90, 0x62, 0x93, 0xe8, 0xa3, 0x29, 0xc0, 0x5e, 0xe4,
+0x0e, 0x0b, 0x33, 0x2f, 0xa1, 0x4c, 0xcc, 0x60, 0x3a, 0x6a, 0xda, 0x67, 0xb8, 0x59, 0x09, 0x41,
+0xa9, 0x1f, 0xca, 0xf8, 0x71, 0xd1, 0x41, 0xaf, 0x26, 0x98, 0xec, 0x8f, 0x52, 0x97, 0xd9, 0xac,
+0xa7, 0xcc, 0x5a, 0xf1, 0xca, 0x15, 0x75, 0x35, 0x97, 0x4d, 0x1c, 0x5d, 0x28, 0x63, 0xfe, 0x5e,
+0x77, 0x50, 0xc9, 0x37, 0xb4, 0x16, 0xa2, 0xf0, 0xd7, 0xca, 0xdb, 0xab, 0x70, 0x99, 0x7c, 0x96,
+0x9e, 0xa2, 0xdf, 0xba, 0x87, 0xda, 0x6a, 0xfc, 0xec, 0x1b, 0xe3, 0x35, 0xf3, 0x48, 0x87, 0x54,
+0x1c, 0x58, 0xa7, 0x52, 0xd7, 0x43, 0xdb, 0x2b, 0x64, 0x0c, 0x44, 0xe9, 0x09, 0xc8, 0x0b, 0xaf,
+0xb8, 0xa2, 0xaa, 0xa4, 0x33, 0xb3, 0xf3, 0xca, 0x0c, 0xe7, 0x60, 0x03, 0x9f, 0x1c, 0xe3, 0x30,
+0x7b, 0x3f, 0xab, 0x47, 0xff, 0x48, 0xc5, 0x42, 0x8d, 0x34, 0xab, 0x1e, 0x6e, 0x03, 0x38, 0xe6,
+0x2f, 0xcc, 0x1f, 0xba, 0x05, 0xb3, 0x69, 0xb7, 0x57, 0xc5, 0x57, 0xd9, 0xf8, 0xef, 0x22, 0x06,
+0x6c, 0x19, 0x89, 0x28, 0xc5, 0x32, 0x8f, 0x37, 0xad, 0x36, 0xd7, 0x2f, 0x5d, 0x23, 0x2c, 0x12,
+0xd4, 0xfd, 0x5c, 0xe9, 0xf5, 0xd7, 0xd9, 0xcc, 0x6d, 0xc9, 0xc9, 0xcd, 0x4d, 0xd8, 0xdc, 0xe6,
+0xcc, 0xf6, 0xea, 0x05, 0xba, 0x12, 0xe6, 0x1b, 0x53, 0x21, 0x8d, 0x22, 0x7b, 0x20, 0x76, 0x1b,
+0xec, 0x13, 0x4e, 0x0a, 0x62, 0xff, 0x38, 0xf4, 0x5a, 0xea, 0xb1, 0xe3, 0xeb, 0xe0, 0xf1, 0xe2,
+0xbc, 0xe8, 0xda, 0xf0, 0x00, 0xfa, 0x58, 0x02, 0x7a, 0x08, 0xe2, 0x0b, 0xb4, 0x0c, 0xbc, 0x0b,
+0x86, 0x0a, 0x8a, 0x09, 0x06, 0x09, 0x96, 0x08, 0xf4, 0x06, 0xca, 0x03, 0x88, 0xff, 0x20, 0xfb,
+0xe0, 0xf7, 0x92, 0xf6, 0x26, 0xf7, 0xe2, 0xf8, 0x96, 0xfa, 0xf0, 0xfa, 0xd8, 0xf9, 0x74, 0xf7,
+0x24, 0xf5, 0x98, 0xf4, 0xf8, 0xf6, 0xd2, 0xfc, 0xfa, 0x04, 0x80, 0x0d, 0x1e, 0x14, 0x46, 0x17,
+0x68, 0x16, 0x9a, 0x12, 0x54, 0x0d, 0xcc, 0x07, 0x6e, 0x02, 0xb2, 0xfc, 0x24, 0xf6, 0x86, 0xee,
+0x78, 0xe6, 0xcd, 0xdf, 0xa7, 0xdc, 0x0d, 0xdf, 0x8c, 0xe7, 0x4e, 0xf5, 0xe8, 0x05, 0x64, 0x16,
+0x59, 0x23, 0xbb, 0x2a, 0x21, 0x2c, 0x3b, 0x28, 0x9d, 0x20, 0x2c, 0x16, 0xc6, 0x09, 0x9a, 0xfb,
+0x7c, 0xec, 0x67, 0xdd, 0xe3, 0xd0, 0x1d, 0xc9, 0x69, 0xc8, 0xcd, 0xcf, 0xff, 0xde, 0x06, 0xf4,
+0x88, 0x0b, 0xdf, 0x21, 0x8b, 0x33, 0x3b, 0x3e, 0x89, 0x40, 0x6f, 0x3b, 0xc9, 0x2f, 0x01, 0x1f,
+0x68, 0x0a, 0xb0, 0xf3, 0x1d, 0xdd, 0x87, 0xc9, 0x89, 0xbb, 0x71, 0xb5, 0xdd, 0xb8, 0xbb, 0xc5,
+0x9f, 0xda, 0x56, 0xf5, 0x30, 0x12, 0x71, 0x2d, 0xff, 0x42, 0xd3, 0x4f, 0x5f, 0x52, 0x81, 0x4a,
+0x79, 0x39, 0x43, 0x21, 0xf2, 0x04, 0x68, 0xe7, 0x97, 0xcc, 0x77, 0xb7, 0xf8, 0xaa, 0x7e, 0xa8,
+0x39, 0xb0, 0xc1, 0xc1, 0x59, 0xdb, 0x76, 0xfa, 0x58, 0x1b, 0xff, 0x39, 0x09, 0x52, 0xc4, 0x5f,
+0xd4, 0x60, 0xa1, 0x54, 0x45, 0x3d, 0xf9, 0x1d, 0x30, 0xfb, 0x71, 0xd9, 0x25, 0xbd, 0x9e, 0xa9,
+0x22, 0xa0, 0x68, 0xa1, 0xd5, 0xac, 0xd9, 0xc1, 0xd9, 0xde, 0x5c, 0x01, 0x91, 0x25, 0xdb, 0x46,
+0x22, 0x60, 0x4e, 0x6c, 0x26, 0x69, 0xc4, 0x56, 0x95, 0x38, 0xd6, 0x13, 0x12, 0xee, 0x71, 0xcc,
+0x63, 0xb2, 0x1a, 0xa2, 0x0a, 0x9c, 0x3c, 0xa0, 0x45, 0xae, 0xcf, 0xc5, 0x6e, 0xe5, 0x52, 0x0a,
+0x5f, 0x30, 0xd3, 0x51, 0x26, 0x69, 0xd2, 0x71, 0x96, 0x69, 0x37, 0x52, 0x71, 0x30, 0x12, 0x0a,
+0xca, 0xe4, 0x09, 0xc5, 0x8f, 0xad, 0xe8, 0x9f, 0x8e, 0x9c, 0x28, 0xa3, 0xe1, 0xb3, 0x11, 0xce,
+0xd2, 0xef, 0xae, 0x15, 0xb1, 0x3a, 0x54, 0x59, 0x14, 0x6c, 0x22, 0x6f, 0xfc, 0x61, 0x75, 0x47,
+0xd1, 0x24, 0xe2, 0xff, 0x87, 0xdd, 0x45, 0xc1, 0x81, 0xad, 0x4a, 0xa3, 0xb6, 0xa2, 0x21, 0xac,
+0xf3, 0xbe, 0x7f, 0xda, 0x20, 0xfc, 0xe9, 0x1f, 0xa9, 0x40, 0x84, 0x59, 0x6a, 0x66, 0xe2, 0x64,
+0x92, 0x55, 0x81, 0x3b, 0x86, 0x1b, 0x54, 0xfa, 0x01, 0xdc, 0x6f, 0xc3, 0xbf, 0xb2, 0x53, 0xab,
+0x77, 0xad, 0x1f, 0xb9, 0xa3, 0xcd, 0xd8, 0xe8, 0xca, 0x07, 0x65, 0x26, 0xd5, 0x40, 0x1f, 0x53,
+0xc2, 0x5a, 0x78, 0x56, 0x25, 0x47, 0x8d, 0x2f, 0x16, 0x13, 0x00, 0xf6, 0xa1, 0xdb, 0x59, 0xc7,
+0xcf, 0xba, 0x49, 0xb7, 0xe3, 0xbc, 0xbf, 0xca, 0xd3, 0xde, 0x8a, 0xf6, 0x1a, 0x0f, 0x8b, 0x25,
+0xdb, 0x37, 0xe7, 0x43, 0x09, 0x48, 0x95, 0x43, 0x97, 0x36, 0xc7, 0x22, 0x48, 0x0b, 0x88, 0xf3,
+0xc5, 0xde, 0xcb, 0xcf, 0x65, 0xc8, 0x01, 0xc9, 0xff, 0xd0, 0x3f, 0xde, 0xa2, 0xee, 0xb0, 0xff,
+0xc0, 0x0f, 0xd1, 0x1d, 0xeb, 0x28, 0x77, 0x30, 0x25, 0x33, 0xfb, 0x2f, 0x95, 0x26, 0x26, 0x18,
+0x8e, 0x06, 0x3e, 0xf5, 0x30, 0xe7, 0x59, 0xde, 0xdd, 0xdb, 0x01, 0xdf, 0x56, 0xe6, 0x92, 0xef,
+0xd4, 0xf8, 0xf6, 0x00, 0x0a, 0x08, 0x8a, 0x0e, 0xa8, 0x14, 0xf4, 0x19, 0x2f, 0x1d, 0x25, 0x1d,
+0x9a, 0x18, 0x2a, 0x10, 0xc0, 0x05, 0xbc, 0xfb, 0x92, 0xf4, 0x60, 0xf1, 0xf8, 0xf1, 0x2c, 0xf5,
+0x40, 0xf9, 0x3e, 0xfc, 0x6e, 0xfd, 0x2c, 0xfd, 0x8e, 0xfc, 0xfa, 0xfc, 0x24, 0xff, 0xfc, 0x02,
+0x3c, 0x07, 0x86, 0x0a, 0xb0, 0x0b, 0xb2, 0x0a, 0xba, 0x08, 0x4e, 0x07, 0x46, 0x07, 0x8e, 0x08,
+0x46, 0x0a, 0xce, 0x0a, 0xf8, 0x08, 0x52, 0x04, 0x36, 0xfd, 0x18, 0xf5, 0xc6, 0xed, 0x1c, 0xe9,
+0x26, 0xe8, 0x5a, 0xeb, 0xd0, 0xf1, 0xfa, 0xf9, 0x9a, 0x02, 0xba, 0x0a, 0x2a, 0x12, 0x94, 0x18,
+0xb7, 0x1d, 0x83, 0x20, 0x47, 0x20, 0x2e, 0x1c, 0xee, 0x13, 0x16, 0x08, 0xb2, 0xf9, 0xbe, 0xea,
+0x37, 0xdd, 0xeb, 0xd3, 0xb9, 0xd0, 0x8f, 0xd4, 0xeb, 0xde, 0x18, 0xee, 0x92, 0xff, 0x12, 0x11,
+0xa5, 0x20, 0x8b, 0x2c, 0xe1, 0x33, 0xcf, 0x35, 0xf9, 0x31, 0x99, 0x28, 0x2c, 0x1a, 0xa6, 0x07,
+0xb8, 0xf2, 0x83, 0xdd, 0x1f, 0xcb, 0xb7, 0xbe, 0x3b, 0xbb, 0x33, 0xc2, 0xb1, 0xd2, 0x02, 0xea,
+0x4c, 0x04, 0x57, 0x1d, 0xf1, 0x31, 0x29, 0x40, 0xef, 0x46, 0x59, 0x46, 0xbd, 0x3e, 0x5b, 0x30,
+0x67, 0x1c, 0x06, 0x04, 0x1a, 0xe9, 0xaf, 0xce, 0x7d, 0xb8, 0x08, 0xab, 0x9a, 0xa9, 0x85, 0xb5,
+0x13, 0xcd, 0x38, 0xec, 0x30, 0x0d, 0x07, 0x2b, 0xfb, 0x41, 0x3b, 0x50, 0x9e, 0x55, 0x05, 0x52,
+0x6d, 0x46, 0x97, 0x33, 0x80, 0x1a, 0xa8, 0xfc, 0xb9, 0xdc, 0x6d, 0xbe, 0xe8, 0xa6, 0xf2, 0x9a,
+0xd0, 0x9d, 0x17, 0xb0, 0x83, 0xce, 0x74, 0xf3, 0x7a, 0x18, 0x2d, 0x38, 0x45, 0x4f, 0x66, 0x5c,
+0x48, 0x5f, 0xd4, 0x58, 0x73, 0x49, 0x43, 0x32, 0x84, 0x14, 0x36, 0xf2, 0xd3, 0xce, 0x63, 0xaf,
+0x72, 0x99, 0x76, 0x91, 0xe2, 0x99, 0x65, 0xb1, 0x37, 0xd4, 0xf6, 0xfb, 0x21, 0x22, 0xb1, 0x41,
+0xb8, 0x57, 0x5a, 0x63, 0x04, 0x64, 0x58, 0x5a, 0x2b, 0x47, 0xcf, 0x2b, 0xf2, 0x09, 0xc2, 0xe4,
+0xe9, 0xc0, 0xb6, 0xa3, 0x62, 0x92, 0xc2, 0x8f, 0xe0, 0x9c, 0xdf, 0xb7, 0x47, 0xdc, 0x10, 0x04,
+0x39, 0x29, 0xa3, 0x47, 0x3e, 0x5c, 0xea, 0x65, 0xf4, 0x63, 0xcc, 0x56, 0xa3, 0x3f, 0x91, 0x20,
+0x98, 0xfc, 0xcb, 0xd7, 0x3b, 0xb7, 0x5a, 0x9f, 0xb4, 0x93, 0xd4, 0x95, 0x96, 0xa5, 0x07, 0xc1,
+0x3c, 0xe4, 0x22, 0x0a, 0x57, 0x2d, 0xc9, 0x49, 0x8e, 0x5c, 0xc6, 0x63, 0xa0, 0x5e, 0xdd, 0x4d,
+0x9f, 0x33, 0x34, 0x13, 0x84, 0xf0, 0x9f, 0xcf, 0xeb, 0xb4, 0x56, 0xa3, 0x6c, 0x9c, 0xf6, 0xa0,
+0xd3, 0xb0, 0xb1, 0xca, 0x8e, 0xeb, 0xcc, 0x0e, 0x77, 0x2f, 0x6d, 0x49, 0xf8, 0x58, 0x44, 0x5c,
+0x1b, 0x53, 0x67, 0x3f, 0x5d, 0x24, 0xda, 0x05, 0xe8, 0xe7, 0x0b, 0xce, 0x6d, 0xba, 0x6d, 0xae,
+0xe8, 0xaa, 0x0d, 0xb0, 0x7d, 0xbe, 0x5b, 0xd5, 0x58, 0xf2, 0xaa, 0x11, 0x75, 0x2e, 0xef, 0x43,
+0x0d, 0x4f, 0x51, 0x4e, 0x9d, 0x42, 0xcd, 0x2e, 0x96, 0x16, 0xe6, 0xfd, 0x6c, 0xe7, 0xe5, 0xd4,
+0x4f, 0xc7, 0x05, 0xbf, 0x71, 0xbc, 0xab, 0xc0, 0x53, 0xcc, 0x79, 0xdf, 0x2c, 0xf8, 0x46, 0x12,
+0x59, 0x29, 0x45, 0x39, 0x73, 0x3f, 0xc5, 0x3b, 0x03, 0x30, 0x3d, 0x1f, 0xcc, 0x0c, 0x08, 0xfb,
+0xda, 0xeb, 0xf3, 0xdf, 0x1f, 0xd7, 0x8f, 0xd1, 0xeb, 0xcf, 0xf7, 0xd2, 0xcd, 0xdb, 0xfe, 0xe9,
+0xd2, 0xfb, 0x3c, 0x0e, 0x6f, 0x1d, 0xad, 0x26, 0xeb, 0x28, 0xcf, 0x24, 0x53, 0x1c, 0xbc, 0x11,
+0xee, 0x06, 0xc0, 0xfd, 0x3a, 0xf6, 0x3a, 0xf0, 0x8e, 0xeb, 0x14, 0xe8, 0x22, 0xe6, 0x5e, 0xe6,
+0xa0, 0xe9, 0x26, 0xf0, 0x30, 0xf9, 0x98, 0x02, 0xbe, 0x0a, 0xd6, 0x0f, 0x94, 0x11, 0x7e, 0x10,
+0x9c, 0x0d, 0x22, 0x0a, 0x0a, 0x07, 0xda, 0x04, 0x7e, 0x03, 0xb4, 0x02, 0x6e, 0x01, 0x18, 0xff,
+0x62, 0xfb, 0xf6, 0xf6, 0xba, 0xf2, 0xde, 0xef, 0x48, 0xef, 0xea, 0xf0, 0x0c, 0xf4, 0x8a, 0xf7,
+0xf6, 0xfa, 0x38, 0xfe, 0x94, 0x01, 0x42, 0x05, 0x98, 0x09, 0xc8, 0x0e, 0x08, 0x14, 0xf2, 0x17,
+0xfc, 0x18, 0x1e, 0x16, 0x90, 0x0e, 0x2e, 0x03, 0x0a, 0xf6, 0xb6, 0xe9, 0xcb, 0xe0, 0x3d, 0xdc,
+0x03, 0xdc, 0x8f, 0xdf, 0xf8, 0xe5, 0x26, 0xee, 0xf4, 0xf7, 0x04, 0x03, 0x20, 0x0f, 0x84, 0x1b,
+0xa1, 0x26, 0x83, 0x2e, 0x87, 0x30, 0xe7, 0x2a, 0x87, 0x1d, 0xec, 0x09, 0x60, 0xf3, 0x73, 0xde,
+0x85, 0xce, 0xf3, 0xc5, 0xfb, 0xc4, 0x55, 0xca, 0xcb, 0xd4, 0xfb, 0xe2, 0x90, 0xf3, 0x06, 0x06,
+0x40, 0x19, 0xa5, 0x2b, 0xd3, 0x3a, 0xbd, 0x43, 0xf1, 0x43, 0xc1, 0x39, 0x6f, 0x25, 0x16, 0x0a,
+0x70, 0xec, 0x77, 0xd1, 0xd9, 0xbd, 0x4d, 0xb3, 0x33, 0xb2, 0x87, 0xb9, 0xa5, 0xc7, 0x09, 0xdb,
+0x56, 0xf2, 0x04, 0x0c, 0x15, 0x26, 0xab, 0x3d, 0xf7, 0x4e, 0x0e, 0x57, 0x0f, 0x53, 0xbb, 0x42,
+0xe3, 0x27, 0x9a, 0x06, 0x14, 0xe4, 0xdb, 0xc5, 0x01, 0xb0, 0xca, 0xa4, 0x6a, 0xa4, 0xd1, 0xad,
+0x13, 0xc0, 0x35, 0xd9, 0x34, 0xf7, 0x14, 0x17, 0x91, 0x35, 0xd1, 0x4e, 0x12, 0x5f, 0x20, 0x63,
+0xf2, 0x59, 0x83, 0x44, 0x51, 0x25, 0xb2, 0x00, 0xbd, 0xdb, 0xc3, 0xbb, 0xdc, 0xa4, 0x98, 0x99,
+0x98, 0x9a, 0x92, 0xa7, 0xd7, 0xbe, 0xe3, 0xdd, 0x4c, 0x01, 0xe7, 0x24, 0x5b, 0x44, 0xdc, 0x5b,
+0x50, 0x68, 0xf4, 0x67, 0xb8, 0x5a, 0x11, 0x42, 0xdd, 0x20, 0xca, 0xfa, 0x65, 0xd4, 0x09, 0xb3,
+0x8a, 0x9b, 0x06, 0x91, 0xf2, 0x94, 0x6a, 0xa6, 0x2d, 0xc3, 0x8c, 0xe7, 0x68, 0x0e, 0x8b, 0x32,
+0xdb, 0x4f, 0x4c, 0x63, 0xf2, 0x6a, 0x52, 0x66, 0xf0, 0x55, 0xb9, 0x3b, 0xd0, 0x19, 0x6a, 0xf3,
+0x17, 0xcd, 0x4b, 0xac, 0x64, 0x96, 0xf2, 0x8e, 0xfc, 0x96, 0x31, 0xad, 0x31, 0xce, 0x6e, 0xf4,
+0x84, 0x1a, 0x87, 0x3b, 0x0f, 0x54, 0x84, 0x62, 0x22, 0x66, 0xd6, 0x5e, 0x95, 0x4d, 0x7b, 0x33,
+0x44, 0x12, 0x02, 0xed, 0x1b, 0xc8, 0x88, 0xa9, 0xd6, 0x96, 0x76, 0x93, 0xd0, 0x9f, 0x8d, 0xb9,
+0xb7, 0xdb, 0xba, 0x00, 0xd3, 0x22, 0x31, 0x3e, 0x35, 0x51, 0xe0, 0x5a, 0x64, 0x5b, 0xa1, 0x52,
+0x61, 0x41, 0x5d, 0x28, 0x2e, 0x09, 0x5c, 0xe6, 0x23, 0xc5, 0x53, 0xab, 0xae, 0x9d, 0x20, 0x9f,
+0x77, 0xae, 0xf5, 0xc8, 0x04, 0xe9, 0x20, 0x09, 0xe7, 0x24, 0x41, 0x3a, 0x23, 0x48, 0x69, 0x4e,
+0x17, 0x4d, 0x19, 0x44, 0x01, 0x34, 0xfb, 0x1c, 0xf0, 0x00, 0xcf, 0xe2, 0x61, 0xc7, 0xbd, 0xb3,
+0xa7, 0xab, 0x63, 0xb0, 0xbf, 0xc0, 0xb7, 0xd8, 0xa6, 0xf3, 0x54, 0x0d, 0x67, 0x22, 0xc9, 0x31,
+0x19, 0x3b, 0x37, 0x3e, 0x3b, 0x3b, 0x5d, 0x32, 0xd5, 0x23, 0xc0, 0x10, 0x72, 0xfa, 0xc0, 0xe3,
+0x69, 0xd0, 0xc7, 0xc3, 0x3f, 0xc0, 0xf7, 0xc5, 0x81, 0xd3, 0x02, 0xe6, 0xc0, 0xf9, 0xac, 0x0b,
+0x1a, 0x1a, 0x13, 0x24, 0x7f, 0x29, 0x51, 0x2a, 0xb9, 0x26, 0x73, 0x1f, 0x2a, 0x15, 0x3c, 0x08,
+0x3a, 0xfa, 0x6c, 0xec, 0xed, 0xe0, 0x7b, 0xd9, 0x53, 0xd7, 0x03, 0xdb, 0xab, 0xe3, 0x5c, 0xef,
+0xbe, 0xfb, 0xf4, 0x06, 0x66, 0x0f, 0xb2, 0x14, 0x7e, 0x16, 0x7a, 0x15, 0x6e, 0x12, 0x2c, 0x0e,
+0xb6, 0x09, 0x28, 0x05, 0x60, 0x00, 0x3a, 0xfb, 0xf2, 0xf5, 0x46, 0xf1, 0xa4, 0xee, 0x90, 0xee,
+0x50, 0xf1, 0xfc, 0xf5, 0xf8, 0xfa, 0xd4, 0xfe, 0xa4, 0x00, 0x66, 0x00, 0xee, 0xfe, 0x90, 0xfd,
+0x76, 0xfd, 0xae, 0xff, 0xec, 0x03, 0x2a, 0x09, 0x60, 0x0d, 0xfc, 0x0e, 0x86, 0x0d, 0x88, 0x09,
+0x98, 0x04, 0xf0, 0xff, 0x5c, 0xfc, 0x78, 0xf9, 0x9e, 0xf6, 0xd2, 0xf2, 0x3e, 0xee, 0xd4, 0xe9,
+0x2a, 0xe7, 0x2c, 0xe8, 0x9a, 0xed, 0xaa, 0xf7, 0xb0, 0x04, 0x60, 0x12, 0x85, 0x1d, 0xc9, 0x23,
+0x4b, 0x24, 0xc3, 0x1f, 0xca, 0x17, 0xf6, 0x0d, 0x6e, 0x03, 0x68, 0xf8, 0x3e, 0xed, 0x31, 0xe2,
+0x87, 0xd8, 0x51, 0xd2, 0x75, 0xd1, 0x45, 0xd7, 0xee, 0xe3, 0xea, 0xf5, 0xc0, 0x0a, 0xef, 0x1e,
+0xeb, 0x2e, 0x11, 0x38, 0x55, 0x39, 0x4b, 0x33, 0xa7, 0x27, 0x0c, 0x18, 0xca, 0x05, 0x60, 0xf2,
+0x2f, 0xdf, 0x7d, 0xce, 0x73, 0xc2, 0x41, 0xbd, 0xb1, 0xc0, 0xdf, 0xcc, 0x85, 0xe0, 0x50, 0xf9,
+0xd8, 0x13, 0x6d, 0x2c, 0x71, 0x3f, 0xff, 0x49, 0xeb, 0x4a, 0x99, 0x42, 0x1f, 0x32, 0x88, 0x1b,
+0x5e, 0x01, 0x2e, 0xe6, 0x89, 0xcd, 0x43, 0xba, 0x47, 0xaf, 0x19, 0xae, 0xe1, 0xb6, 0xd3, 0xc8,
+0xcd, 0xe1, 0x22, 0xff, 0x47, 0x1d, 0xd9, 0x38, 0xed, 0x4d, 0xac, 0x59, 0xba, 0x59, 0xc5, 0x4d,
+0x91, 0x37, 0xaa, 0x19, 0x30, 0xf8, 0x89, 0xd7, 0x3b, 0xbc, 0xe8, 0xa9, 0x4c, 0xa2, 0x98, 0xa5,
+0xef, 0xb2, 0x15, 0xc9, 0xac, 0xe5, 0x0a, 0x06, 0xd3, 0x26, 0x73, 0x44, 0xe2, 0x5a, 0xea, 0x65,
+0xf4, 0x62, 0xb5, 0x51, 0xdf, 0x34, 0xd2, 0x10, 0xe2, 0xea, 0xc5, 0xc8, 0xff, 0xae, 0x2c, 0xa0,
+0x98, 0x9c, 0xae, 0xa3, 0x33, 0xb4, 0xe9, 0xcc, 0xac, 0xeb, 0xe6, 0x0d, 0x69, 0x30, 0x29, 0x4f,
+0x32, 0x65, 0xc8, 0x6d, 0x66, 0x66, 0x99, 0x4f, 0x8f, 0x2d, 0x0a, 0x06, 0x51, 0xdf, 0x9f, 0xbe,
+0xf0, 0xa7, 0x98, 0x9c, 0x3a, 0x9c, 0xe6, 0xa5, 0x6b, 0xb8, 0xeb, 0xd2, 0x64, 0xf3, 0x1a, 0x17,
+0x21, 0x3a, 0xc2, 0x57, 0xa8, 0x6a, 0x70, 0x6e, 0xb2, 0x61, 0x59, 0x46, 0xed, 0x21, 0x80, 0xfa,
+0x07, 0xd6, 0x13, 0xb9, 0x76, 0xa6, 0xc8, 0x9e, 0x52, 0xa1, 0x49, 0xad, 0xd9, 0xc1, 0xeb, 0xdd,
+0x1e, 0xff, 0x33, 0x22, 0xa9, 0x42, 0xc2, 0x5b, 0xf6, 0x68, 0x1c, 0x67, 0x58, 0x56, 0xd1, 0x39,
+0xc4, 0x16, 0xbe, 0xf2, 0xcd, 0xd2, 0x2f, 0xba, 0x3a, 0xab, 0x66, 0xa6, 0xee, 0xaa, 0x45, 0xb8,
+0xdd, 0xcd, 0xea, 0xe9, 0x72, 0x09, 0xcd, 0x28, 0x01, 0x44, 0xf8, 0x56, 0x84, 0x5e, 0x32, 0x59,
+0xdd, 0x47, 0x8b, 0x2d, 0x48, 0x0e, 0xfa, 0xee, 0x7b, 0xd3, 0x0d, 0xbf, 0x4f, 0xb3, 0x39, 0xb1,
+0x57, 0xb8, 0x91, 0xc7, 0x8b, 0xdd, 0x8c, 0xf7, 0xa6, 0x12, 0x47, 0x2b, 0xc1, 0x3e, 0x83, 0x4a,
+0x63, 0x4d, 0xf9, 0x46, 0x81, 0x37, 0x85, 0x21, 0xee, 0x07, 0x7c, 0xee, 0x99, 0xd8, 0x15, 0xc9,
+0x5f, 0xc1, 0x39, 0xc2, 0x13, 0xcb, 0xf9, 0xd9, 0x48, 0xed, 0x08, 0x02, 0x8a, 0x15, 0xed, 0x25,
+0xd5, 0x31, 0xaf, 0x38, 0xc7, 0x39, 0x87, 0x34, 0xeb, 0x28, 0x42, 0x18, 0xa8, 0x04, 0x2e, 0xf1,
+0xf7, 0xe0, 0x61, 0xd6, 0xf7, 0xd2, 0x27, 0xd6, 0xed, 0xde, 0x66, 0xeb, 0xda, 0xf8, 0x7e, 0x05,
+0x06, 0x10, 0x26, 0x18, 0x29, 0x1e, 0x41, 0x22, 0xb5, 0x23, 0xc7, 0x21, 0x88, 0x1b, 0xf0, 0x10,
+0x00, 0x04, 0x22, 0xf7, 0x38, 0xed, 0x02, 0xe8, 0xfa, 0xe7, 0x3a, 0xec, 0xba, 0xf2, 0x56, 0xf9,
+0xbe, 0xfe, 0x62, 0x02, 0x94, 0x04, 0x72, 0x06, 0xe2, 0x08, 0x3e, 0x0c, 0x9e, 0x0f, 0x56, 0x11,
+0x60, 0x10, 0x9a, 0x0c, 0x14, 0x07, 0xf0, 0x01, 0xd4, 0xfe, 0x46, 0xfe, 0xd6, 0xff, 0xe6, 0x01,
+0xc4, 0x02, 0xc4, 0x01, 0x92, 0xfe, 0xd0, 0xf9, 0x02, 0xf5, 0x10, 0xf2, 0xe8, 0xf1, 0xfa, 0xf4,
+0x70, 0xfa, 0xaa, 0x00, 0x8e, 0x06, 0x52, 0x0b, 0x26, 0x0f, 0x44, 0x12, 0x0c, 0x15, 0xe0, 0x16,
+0x0a, 0x17, 0x50, 0x14, 0x48, 0x0e, 0x44, 0x05, 0x1a, 0xfa, 0x8e, 0xee, 0x3e, 0xe4, 0x5d, 0xdd,
+0x6b, 0xdb, 0x2f, 0xdf, 0xf6, 0xe7, 0x8c, 0xf4, 0xd0, 0x02, 0x00, 0x11, 0x79, 0x1d, 0xc1, 0x26,
+0x3f, 0x2c, 0x3f, 0x2d, 0x41, 0x29, 0x89, 0x20, 0xb6, 0x13, 0xae, 0x03, 0x0a, 0xf2, 0x97, 0xe0,
+0xb7, 0xd1, 0x1d, 0xc8, 0xdb, 0xc5, 0x0b, 0xcc, 0x75, 0xda, 0xfe, 0xee, 0x88, 0x06, 0x3d, 0x1d,
+0xf5, 0x2f, 0x6d, 0x3c, 0x83, 0x41, 0x45, 0x3f, 0x7f, 0x36, 0x25, 0x28, 0x6e, 0x15, 0xb4, 0xff,
+0x8e, 0xe8, 0x93, 0xd2, 0x4b, 0xc0, 0x01, 0xb5, 0xa5, 0xb3, 0xf5, 0xbd, 0xff, 0xd2, 0xe2, 0xef,
+0x6a, 0x0f, 0x43, 0x2c, 0x59, 0x42, 0x01, 0x4f, 0xdd, 0x51, 0xad, 0x4b, 0x71, 0x3e, 0x31, 0x2b,
+0xbc, 0x13, 0x28, 0xf9, 0x77, 0xdd, 0x6b, 0xc3, 0xe7, 0xae, 0xec, 0xa3, 0xac, 0xa5, 0xd3, 0xb5,
+0x3f, 0xd2, 0x38, 0xf6, 0x1c, 0x1b, 0xe1, 0x3a, 0x49, 0x51, 0xa4, 0x5c, 0xfa, 0x5c, 0x9b, 0x53,
+0x7d, 0x42, 0x47, 0x2b, 0x30, 0x0f, 0xe4, 0xef, 0x43, 0xd0, 0x17, 0xb4, 0xe4, 0x9f, 0x06, 0x98,
+0x38, 0x9f, 0xb3, 0xb5, 0x3b, 0xd8, 0x62, 0x00, 0x43, 0x27, 0xed, 0x46, 0x0c, 0x5c, 0x84, 0x65,
+0x58, 0x63, 0xf0, 0x56, 0x1f, 0x42, 0x8d, 0x26, 0xd4, 0x05, 0xc9, 0xe2, 0x37, 0xc1, 0x04, 0xa6,
+0x9c, 0x95, 0x56, 0x93, 0xb8, 0xa0, 0x41, 0xbc, 0xb9, 0xe1, 0x7a, 0x0a, 0x3d, 0x30, 0x2d, 0x4e,
+0x7a, 0x61, 0xa2, 0x68, 0x12, 0x64, 0xf2, 0x54, 0xb1, 0x3c, 0xc1, 0x1d, 0x4a, 0xfa, 0x09, 0xd6,
+0xed, 0xb5, 0xce, 0x9e, 0xac, 0x93, 0xda, 0x96, 0x16, 0xa8, 0x49, 0xc5, 0x24, 0xea, 0x0a, 0x11,
+0x9f, 0x34, 0x87, 0x50, 0xe8, 0x61, 0x1c, 0x67, 0x08, 0x60, 0xed, 0x4d, 0xd7, 0x32, 0x6e, 0x11,
+0xb6, 0xed, 0xfd, 0xcb, 0xb5, 0xb0, 0x4c, 0x9f, 0xe8, 0x99, 0xc0, 0xa0, 0x4d, 0xb3, 0x6f, 0xcf,
+0xbc, 0xf1, 0x9a, 0x15, 0x43, 0x36, 0x79, 0x4f, 0x0a, 0x5e, 0x84, 0x60, 0x64, 0x56, 0xab, 0x41,
+0x05, 0x25, 0x76, 0x04, 0xf0, 0xe3, 0xaf, 0xc7, 0x01, 0xb3, 0xd0, 0xa7, 0x94, 0xa6, 0xdb, 0xae,
+0x71, 0xc0, 0xaf, 0xd9, 0x08, 0xf8, 0xb0, 0x17, 0x77, 0x34, 0xdb, 0x49, 0xe4, 0x54, 0xdb, 0x53,
+0x4f, 0x47, 0xab, 0x31, 0x9a, 0x16, 0x00, 0xfa, 0xf1, 0xdf, 0x2d, 0xcb, 0x65, 0xbd, 0xcd, 0xb6,
+0x61, 0xb7, 0x1d, 0xbf, 0x93, 0xcd, 0xad, 0xe2, 0x26, 0xfc, 0x12, 0x17, 0x17, 0x2f, 0x45, 0x40,
+0x25, 0x47, 0x47, 0x43, 0xed, 0x35, 0xf1, 0x21, 0x5e, 0x0b, 0x8c, 0xf5, 0x71, 0xe3, 0xd1, 0xd5,
+0x6d, 0xcd, 0xb3, 0xc9, 0x99, 0xca, 0x4f, 0xd0, 0x39, 0xdb, 0x32, 0xeb, 0xca, 0xfe, 0x52, 0x13,
+0xdb, 0x24, 0x2b, 0x30, 0x39, 0x33, 0xe9, 0x2d, 0x4b, 0x22, 0x58, 0x13, 0x40, 0x04, 0x30, 0xf7,
+0x46, 0xed, 0x80, 0xe6, 0x63, 0xe2, 0x85, 0xe0, 0xa3, 0xe0, 0x5d, 0xe3, 0xe0, 0xe8, 0xc6, 0xf1,
+0x28, 0xfd, 0x22, 0x09, 0x62, 0x13, 0xa2, 0x19, 0xda, 0x1a, 0x7a, 0x17, 0x68, 0x11, 0x3e, 0x0a,
+0xe2, 0x03, 0x1c, 0xff, 0xfc, 0xfb, 0xf0, 0xf9, 0x4a, 0xf8, 0x98, 0xf6, 0x92, 0xf4, 0xb2, 0xf2,
+0x90, 0xf1, 0x12, 0xf2, 0xa0, 0xf4, 0xc8, 0xf8, 0x52, 0xfd, 0x2c, 0x01, 0x00, 0x04, 0x9e, 0x05,
+0x68, 0x06, 0x3c, 0x07, 0xae, 0x08, 0xac, 0x0a, 0xb8, 0x0c, 0x22, 0x0e, 0xe0, 0x0d, 0x72, 0x0b,
+0x4a, 0x06, 0x92, 0xfe, 0x8a, 0xf5, 0xe8, 0xec, 0xb4, 0xe6, 0xee, 0xe3, 0xfa, 0xe4, 0x14, 0xe9,
+0x46, 0xef, 0x98, 0xf6, 0x7a, 0xfe, 0xb6, 0x06, 0x16, 0x0f, 0x7c, 0x17, 0xbd, 0x1e, 0xcf, 0x23,
+0x17, 0x25, 0x11, 0x21, 0xda, 0x16, 0x3a, 0x07, 0x8a, 0xf4, 0x2f, 0xe2, 0x05, 0xd4, 0x77, 0xcc,
+0x2b, 0xcc, 0x53, 0xd2, 0x1d, 0xdd, 0xca, 0xea, 0xf2, 0xf9, 0xcc, 0x09, 0x84, 0x19, 0xdb, 0x27,
+0x81, 0x33, 0x5f, 0x3a, 0x41, 0x3a, 0x63, 0x31, 0x01, 0x20, 0xb4, 0x07, 0x9a, 0xec, 0x93, 0xd3,
+0x39, 0xc1, 0x51, 0xb8, 0xfd, 0xb8, 0xcd, 0xc1, 0xa9, 0xd0, 0xd0, 0xe3, 0x58, 0xf9, 0xd2, 0x0f,
+0xaf, 0x25, 0x45, 0x39, 0xe7, 0x47, 0xe1, 0x4e, 0x8f, 0x4b, 0xc7, 0x3c, 0x77, 0x23, 0x4c, 0x03,
+0x6d, 0xe1, 0x91, 0xc3, 0x97, 0xae, 0x32, 0xa5, 0x7c, 0xa7, 0xa7, 0xb3, 0xab, 0xc7, 0xcb, 0xe0,
+0xf4, 0xfc, 0xa4, 0x19, 0xb5, 0x34, 0x13, 0x4b, 0xe0, 0x59, 0xd8, 0x5d, 0x0c, 0x55, 0xe3, 0x3f,
+0xdf, 0x20, 0x42, 0xfc, 0x3d, 0xd7, 0xc7, 0xb7, 0x28, 0xa2, 0x2c, 0x99, 0xde, 0x9c, 0x07, 0xac,
+0x41, 0xc4, 0x07, 0xe3, 0x16, 0x05, 0xe9, 0x26, 0x11, 0x45, 0xe0, 0x5b, 0xcc, 0x67, 0x9a, 0x66,
+0x06, 0x58, 0xa1, 0x3d, 0xd4, 0x1a, 0xee, 0xf3, 0xe9, 0xcd, 0xd1, 0xad, 0x64, 0x98, 0x24, 0x90,
+0xde, 0x95, 0x86, 0xa8, 0xfb, 0xc5, 0x5c, 0xea, 0x36, 0x11, 0xe3, 0x35, 0xbd, 0x53, 0x20, 0x67,
+0xa6, 0x6d, 0xe2, 0x66, 0xbb, 0x53, 0xe9, 0x36, 0x64, 0x13, 0x94, 0xec, 0xed, 0xc6, 0x88, 0xa7,
+0x18, 0x93, 0x98, 0x8c, 0x64, 0x95, 0x61, 0xac, 0x79, 0xce, 0x9c, 0xf6, 0xdd, 0x1e, 0xe7, 0x41,
+0x86, 0x5b, 0x6c, 0x69, 0x92, 0x6a, 0x14, 0x60, 0x87, 0x4b, 0xf7, 0x2e, 0x6e, 0x0c, 0xfa, 0xe6,
+0xc7, 0xc2, 0xda, 0xa4, 0x68, 0x92, 0xc6, 0x8e, 0x3c, 0x9b, 0x01, 0xb6, 0xc5, 0xda, 0x10, 0x03,
+0xcb, 0x28, 0x0f, 0x47, 0xf2, 0x5a, 0x6c, 0x63, 0x32, 0x61, 0x4e, 0x55, 0x2f, 0x41, 0x17, 0x26,
+0xb2, 0x05, 0x6f, 0xe2, 0xb5, 0xc0, 0xf4, 0xa5, 0x1a, 0x97, 0x90, 0x97, 0xa8, 0xa7, 0x9d, 0xc4,
+0x96, 0xe8, 0x7e, 0x0d, 0x67, 0x2d, 0x43, 0x45, 0x6f, 0x53, 0x20, 0x58, 0x01, 0x54, 0x21, 0x48,
+0x5d, 0x35, 0x45, 0x1c, 0x96, 0xfe, 0xcf, 0xde, 0x93, 0xc1, 0xb3, 0xab, 0xea, 0xa1, 0x44, 0xa6,
+0x33, 0xb8, 0xe3, 0xd3, 0x9c, 0xf3, 0xf2, 0x11, 0xf3, 0x2a, 0xbf, 0x3c, 0x75, 0x46, 0xad, 0x48,
+0x0b, 0x44, 0x13, 0x39, 0x3f, 0x28, 0x8a, 0x12, 0x92, 0xf9, 0xf1, 0xdf, 0x4f, 0xc9, 0xef, 0xb9,
+0xbd, 0xb4, 0xf1, 0xba, 0x01, 0xcb, 0x7b, 0xe1, 0xca, 0xf9, 0x32, 0x10, 0x19, 0x22, 0x41, 0x2e,
+0xb5, 0x34, 0x55, 0x35, 0xd3, 0x30, 0x87, 0x27, 0x82, 0x1a, 0x42, 0x0a, 0x7a, 0xf8, 0xf6, 0xe6,
+0x1f, 0xd8, 0x7b, 0xce, 0xb1, 0xcb, 0x79, 0xd0, 0x81, 0xdb, 0x9a, 0xea, 0xc6, 0xfa, 0xa2, 0x09,
+0x7a, 0x15, 0x69, 0x1d, 0x11, 0x21, 0xbb, 0x20, 0x41, 0x1d, 0x22, 0x17, 0x66, 0x0f, 0xec, 0x06,
+0x08, 0xfe, 0x34, 0xf5, 0x30, 0xed, 0x22, 0xe7, 0xfe, 0xe3, 0x94, 0xe4, 0xce, 0xe8, 0xc8, 0xef,
+0xf6, 0xf7, 0x92, 0xff, 0x7c, 0x05, 0xf2, 0x08, 0x40, 0x0a, 0xea, 0x09, 0xf4, 0x08, 0x62, 0x08,
+0xcc, 0x08, 0xc0, 0x09, 0x22, 0x0a, 0xfc, 0x08, 0x78, 0x05, 0x14, 0x00, 0x24, 0xfa, 0x2e, 0xf5,
+0x3c, 0xf2, 0x6c, 0xf1, 0xdc, 0xf1, 0x86, 0xf2, 0xbc, 0xf2, 0x4a, 0xf2, 0x28, 0xf2, 0xa4, 0xf3,
+0xde, 0xf7, 0x3a, 0xff, 0x18, 0x09, 0xba, 0x13, 0x43, 0x1c, 0x0f, 0x20, 0x41, 0x1e, 0x94, 0x17,
+0xa2, 0x0d, 0xb6, 0x02, 0xa4, 0xf8, 0x04, 0xf0, 0xb8, 0xe8, 0x5b, 0xe2, 0x29, 0xdd, 0x19, 0xda,
+0xd9, 0xda, 0x9f, 0xe0, 0xde, 0xeb, 0xea, 0xfb, 0x92, 0x0e, 0x9d, 0x20, 0x5d, 0x2e, 0x51, 0x35,
+0x47, 0x34, 0xcf, 0x2b, 0xe5, 0x1d, 0x1e, 0x0d, 0x90, 0xfb, 0x8c, 0xea, 0x51, 0xdb, 0xa5, 0xce,
+0x2d, 0xc6, 0x4d, 0xc3, 0xc9, 0xc7, 0x1d, 0xd4, 0x76, 0xe7, 0x62, 0xff, 0xbc, 0x18, 0xc7, 0x2f,
+0xb3, 0x40, 0xef, 0x48, 0x4f, 0x47, 0x55, 0x3c, 0xcf, 0x29, 0x80, 0x12, 0x1a, 0xf9, 0x31, 0xe0,
+0x43, 0xca, 0xef, 0xb9, 0x1d, 0xb1, 0x8b, 0xb1, 0x9b, 0xbb, 0xad, 0xce, 0x62, 0xe8, 0xea, 0x05,
+0x7f, 0x23, 0x81, 0x3d, 0x67, 0x50, 0x74, 0x59, 0xe8, 0x56, 0xa1, 0x48, 0xdf, 0x30, 0xae, 0x12,
+0xcc, 0xf1, 0x35, 0xd2, 0x4d, 0xb8, 0x3e, 0xa7, 0x0a, 0xa1, 0x0c, 0xa6, 0xbf, 0xb5, 0x29, 0xce,
+0x8a, 0xec, 0x8c, 0x0d, 0xcb, 0x2d, 0xf1, 0x49, 0x14, 0x5e, 0xea, 0x66, 0x32, 0x62, 0xa5, 0x4f,
+0xc3, 0x31, 0x92, 0x0c, 0x96, 0xe5, 0x41, 0xc2, 0xda, 0xa7, 0x48, 0x99, 0x56, 0x97, 0x5e, 0xa1,
+0x7d, 0xb5, 0x5f, 0xd1, 0x52, 0xf2, 0x64, 0x15, 0x41, 0x37, 0x53, 0x54, 0xa2, 0x68, 0xf0, 0x6f,
+0xb2, 0x67, 0x1b, 0x50, 0x91, 0x2c, 0xbe, 0x02, 0x0b, 0xd9, 0xd1, 0xb5, 0xde, 0x9d, 0x24, 0x93,
+0x32, 0x95, 0x98, 0xa2, 0x33, 0xb9, 0xf7, 0xd6, 0x4c, 0xf9, 0x4f, 0x1d, 0xb7, 0x3f, 0x68, 0x5c,
+0xd6, 0x6e, 0x9c, 0x72, 0xb2, 0x65, 0x59, 0x49, 0x37, 0x22, 0xc6, 0xf6, 0x0b, 0xce, 0xef, 0xad,
+0x1c, 0x9a, 0x52, 0x93, 0x96, 0x98, 0x68, 0xa8, 0xd1, 0xc0, 0xcd, 0xdf, 0xe2, 0x02, 0x01, 0x27,
+0x05, 0x48, 0x94, 0x61, 0x5c, 0x6f, 0xc0, 0x6d, 0xfa, 0x5b, 0x9d, 0x3c, 0x18, 0x15, 0xf0, 0xeb,
+0x67, 0xc7, 0x5f, 0xac, 0x2a, 0x9d, 0x08, 0x9a, 0xc0, 0xa1, 0xdf, 0xb2, 0xdd, 0xcb, 0x8a, 0xea,
+0x2c, 0x0c, 0x3f, 0x2d, 0xfb, 0x49, 0x46, 0x5e, 0xbe, 0x66, 0x2c, 0x61, 0x13, 0x4e, 0x57, 0x30,
+0xe4, 0x0c, 0x08, 0xe9, 0x1b, 0xca, 0xc3, 0xb3, 0x9c, 0xa7, 0x02, 0xa6, 0x81, 0xae, 0xd9, 0xbf,
+0x35, 0xd8, 0x28, 0xf5, 0xa0, 0x13, 0x03, 0x30, 0xe3, 0x46, 0x30, 0x55, 0xe2, 0x58, 0x3b, 0x51,
+0x57, 0x3f, 0x71, 0x25, 0x80, 0x07, 0xa4, 0xe9, 0x09, 0xd0, 0xeb, 0xbd, 0xdd, 0xb4, 0x6d, 0xb5,
+0x13, 0xbf, 0x4f, 0xd0, 0x9e, 0xe6, 0x34, 0xff, 0x10, 0x17, 0x7d, 0x2b, 0x7f, 0x3a, 0xf7, 0x42,
+0x3f, 0x44, 0xf7, 0x3d, 0x6b, 0x30, 0xdd, 0x1c, 0x9a, 0x05, 0x18, 0xee, 0xf7, 0xd9, 0x0f, 0xcc,
+0x17, 0xc6, 0x55, 0xc8, 0x01, 0xd2, 0x03, 0xe1, 0x80, 0xf2, 0x06, 0x04, 0xa4, 0x13, 0x03, 0x20,
+0xbd, 0x28, 0xbd, 0x2d, 0x05, 0x2f, 0xef, 0x2b, 0xd5, 0x23, 0x10, 0x17, 0x08, 0x07, 0x76, 0xf6,
+0x66, 0xe8, 0x33, 0xdf, 0x17, 0xdc, 0xef, 0xde, 0x2a, 0xe6, 0xaa, 0xef, 0x5c, 0xf9, 0xd0, 0x01,
+0x84, 0x08, 0x82, 0x0d, 0xde, 0x11, 0xe6, 0x15, 0x3c, 0x19, 0xbe, 0x1a, 0x32, 0x19, 0xf4, 0x13,
+0x94, 0x0b, 0x3c, 0x02, 0x34, 0xfa, 0x3c, 0xf5, 0xa8, 0xf3, 0xda, 0xf4, 0x50, 0xf7, 0x8c, 0xf9,
+0x8c, 0xfa, 0x2c, 0xfa, 0x44, 0xf9, 0x1e, 0xf9, 0xe8, 0xfa, 0x16, 0xff, 0x20, 0x05, 0x7e, 0x0b,
+0x82, 0x10, 0xfa, 0x12, 0xf0, 0x12, 0x5a, 0x11, 0x44, 0x0f, 0x3c, 0x0d, 0x34, 0x0b, 0x72, 0x08,
+0xf2, 0x03, 0x78, 0xfd, 0xa0, 0xf5, 0x68, 0xed, 0x46, 0xe6, 0x39, 0xe2, 0xc1, 0xe2, 0x6e, 0xe8,
+0x4c, 0xf2, 0xe4, 0xfe, 0x0c, 0x0c, 0xd8, 0x17, 0xab, 0x20, 0xff, 0x25, 0xc7, 0x27, 0xfb, 0x25,
+0x59, 0x20, 0x0a, 0x17, 0xb2, 0x0a, 0x1c, 0xfc, 0xca, 0xec, 0x69, 0xde, 0x01, 0xd3, 0xb7, 0xcc,
+0x31, 0xcd, 0x19, 0xd5, 0xd6, 0xe3, 0xb6, 0xf7, 0x92, 0x0d, 0x11, 0x22, 0x2f, 0x32, 0x11, 0x3c,
+0x9f, 0x3e, 0xff, 0x39, 0x27, 0x2f, 0x55, 0x1f, 0x0a, 0x0c, 0xec, 0xf6, 0xf7, 0xe1, 0x17, 0xcf,
+0x99, 0xc0, 0xd1, 0xb8, 0x29, 0xba, 0x8f, 0xc5, 0x59, 0xda, 0xf8, 0xf5, 0x72, 0x14, 0x7f, 0x30,
+0xad, 0x45, 0x1d, 0x51, 0x2d, 0x52, 0x7d, 0x49, 0x25, 0x39, 0x65, 0x23, 0x72, 0x0a, 0x2a, 0xf0,
+0x7b, 0xd6, 0xcf, 0xbf, 0x09, 0xaf, 0x68, 0xa7, 0x22, 0xab, 0x9b, 0xbb, 0x93, 0xd7, 0x34, 0xfb,
+0x45, 0x20, 0x95, 0x40, 0x1c, 0x57, 0x52, 0x61, 0x12, 0x5f, 0x29, 0x52, 0x79, 0x3d, 0x8d, 0x23,
+0x74, 0x06, 0xf0, 0xe7, 0x8d, 0xca, 0x63, 0xb1, 0x02, 0xa0, 0x14, 0x9a, 0x4c, 0xa2, 0x0d, 0xb9,
+0xbf, 0xdb, 0xf4, 0x04, 0x85, 0x2d, 0xd5, 0x4e, 0x52, 0x64, 0x10, 0x6c, 0xd0, 0x66, 0xca, 0x56,
+0xc3, 0x3e, 0x2d, 0x21, 0x4a, 0x00, 0x55, 0xde, 0x57, 0xbe, 0x56, 0xa4, 0xbe, 0x94, 0x04, 0x93,
+0xbe, 0xa0, 0x21, 0xbd, 0x4c, 0xe4, 0xaa, 0x0f, 0x2d, 0x38, 0xb6, 0x57, 0xd2, 0x6a, 0x26, 0x70,
+0x68, 0x68, 0xaa, 0x55, 0xd5, 0x3a, 0x54, 0x1a, 0x92, 0xf6, 0xd5, 0xd2, 0x0d, 0xb3, 0xca, 0x9b,
+0xd0, 0x90, 0x86, 0x94, 0x48, 0xa7, 0xdb, 0xc6, 0xc0, 0xee, 0x98, 0x18, 0x51, 0x3e, 0xf2, 0x5a,
+0x96, 0x6b, 0x82, 0x6e, 0xb2, 0x64, 0xdf, 0x4f, 0xa5, 0x32, 0xe6, 0x0f, 0x18, 0xeb, 0x33, 0xc8,
+0xb7, 0xab, 0x94, 0x99, 0x50, 0x94, 0xde, 0x9c, 0x0d, 0xb2, 0x59, 0xd1, 0xb8, 0xf6, 0x19, 0x1d,
+0x55, 0x3f, 0x26, 0x59, 0x7e, 0x67, 0xaa, 0x68, 0xb0, 0x5c, 0xb9, 0x45, 0xe3, 0x26, 0xc0, 0x03,
+0x9d, 0xe0, 0x0d, 0xc2, 0xb9, 0xab, 0x40, 0xa0, 0x60, 0xa0, 0x53, 0xab, 0xfd, 0xbf, 0x29, 0xdc,
+0xca, 0xfc, 0x27, 0x1e, 0x31, 0x3c, 0x97, 0x52, 0x02, 0x5e, 0x9e, 0x5c, 0xcf, 0x4e, 0x07, 0x37,
+0xda, 0x18, 0xae, 0xf8, 0xcb, 0xda, 0x2b, 0xc3, 0x17, 0xb4, 0x1b, 0xae, 0xf7, 0xb0, 0xc3, 0xbb,
+0x41, 0xcd, 0x5c, 0xe4, 0x92, 0xff, 0xb2, 0x1b, 0x17, 0x35, 0x89, 0x47, 0xaf, 0x4f, 0x13, 0x4c,
+0x97, 0x3d, 0x01, 0x27, 0x8a, 0x0c, 0x7a, 0xf2, 0x5f, 0xdc, 0x67, 0xcc, 0x81, 0xc3, 0x2d, 0xc1,
+0x81, 0xc4, 0xdd, 0xcc, 0x27, 0xda, 0xcc, 0xeb, 0xf0, 0x00, 0x42, 0x17, 0x15, 0x2b, 0xc7, 0x38,
+0x8b, 0x3d, 0x99, 0x38, 0x4b, 0x2b, 0xfc, 0x18, 0x12, 0x05, 0x28, 0xf3, 0x38, 0xe5, 0x19, 0xdc,
+0x5f, 0xd7, 0x63, 0xd6, 0x67, 0xd8, 0x47, 0xdd, 0x5e, 0xe5, 0xb2, 0xf0, 0xb0, 0xfe, 0xa8, 0x0d,
+0x06, 0x1b, 0xab, 0x23, 0x0d, 0x26, 0x39, 0x22, 0x90, 0x19, 0x68, 0x0e, 0x94, 0x03, 0x98, 0xfa,
+0x38, 0xf4, 0x48, 0xf0, 0x32, 0xee, 0x3c, 0xed, 0xf2, 0xec, 0x60, 0xed, 0x0a, 0xef, 0x98, 0xf2,
+0x08, 0xf8, 0xfa, 0xfe, 0xcc, 0x05, 0x48, 0x0b, 0xfc, 0x0d, 0x2e, 0x0e, 0x80, 0x0c, 0x10, 0x0a,
+0xc0, 0x07, 0x80, 0x06, 0xee, 0x05, 0x92, 0x05, 0xf0, 0x04, 0xf4, 0x02, 0x52, 0xff, 0x0e, 0xfa,
+0x32, 0xf4, 0xc8, 0xee, 0x62, 0xeb, 0xe8, 0xea, 0x8e, 0xed, 0x30, 0xf2, 0x26, 0xf8, 0x8c, 0xfe,
+0xc0, 0x04, 0x7c, 0x0a, 0xc2, 0x0f, 0x96, 0x14, 0xbc, 0x18, 0x2e, 0x1b, 0x02, 0x1b, 0x60, 0x17,
+0x48, 0x0f, 0x3a, 0x03, 0x7e, 0xf4, 0xc0, 0xe5, 0xf3, 0xd9, 0xf5, 0xd3, 0x71, 0xd4, 0xe1, 0xda,
+0x58, 0xe5, 0x2c, 0xf2, 0xc6, 0xff, 0xf8, 0x0c, 0x62, 0x19, 0x2f, 0x24, 0xa9, 0x2c, 0x51, 0x31,
+0xb1, 0x30, 0x39, 0x29, 0xbc, 0x1a, 0xe6, 0x05, 0xca, 0xed, 0xb9, 0xd6, 0x2f, 0xc5, 0xa5, 0xbc,
+0x1f, 0xbe, 0x25, 0xc8, 0x19, 0xd8, 0x80, 0xeb, 0xec, 0xff, 0xae, 0x13, 0x91, 0x25, 0xcb, 0x34,
+0xb9, 0x3f, 0x8f, 0x44, 0x59, 0x41, 0xc9, 0x34, 0xbd, 0x1e, 0xd8, 0x01, 0x4d, 0xe2, 0xb1, 0xc5,
+0x7b, 0xb1, 0xc0, 0xa8, 0xf9, 0xab, 0xa9, 0xb9, 0xb1, 0xce, 0xc0, 0xe7, 0x9a, 0x02, 0xcd, 0x1c,
+0x8f, 0x34, 0xc7, 0x47, 0x35, 0x54, 0xec, 0x56, 0x1f, 0x4e, 0xdf, 0x39, 0x1a, 0x1c, 0xac, 0xf8,
+0xe5, 0xd4, 0x95, 0xb6, 0x46, 0xa2, 0x20, 0x9b, 0xfa, 0xa0, 0xe3, 0xb1, 0x27, 0xcb, 0x82, 0xe9,
+0x96, 0x09, 0xa3, 0x28, 0xe1, 0x43, 0x42, 0x58, 0xd8, 0x62, 0xfe, 0x60, 0x39, 0x52, 0x09, 0x38,
+0x9c, 0x15, 0x32, 0xef, 0xdb, 0xc9, 0x16, 0xab, 0x86, 0x97, 0x5c, 0x91, 0x3a, 0x99, 0x8d, 0xad,
+0x6f, 0xcb, 0x08, 0xef, 0x6c, 0x14, 0x37, 0x37, 0x97, 0x53, 0x1a, 0x66, 0xd8, 0x6b, 0x0c, 0x64,
+0x9d, 0x4f, 0x5f, 0x31, 0xce, 0x0c, 0x0a, 0xe6, 0x5b, 0xc1, 0xb4, 0xa3, 0x76, 0x91, 0x48, 0x8d,
+0xca, 0x97, 0xa1, 0xaf, 0xf3, 0xd1, 0xac, 0xf9, 0x8b, 0x21, 0x77, 0x44, 0xec, 0x5d, 0x3a, 0x6b,
+0x26, 0x6b, 0x40, 0x5e, 0xe9, 0x46, 0x4f, 0x28, 0xf4, 0x04, 0x01, 0xe0, 0x67, 0xbd, 0xb6, 0xa1,
+0x6a, 0x91, 0x4e, 0x8f, 0x6e, 0x9c, 0x99, 0xb7, 0xbf, 0xdc, 0xe4, 0x05, 0xc7, 0x2c, 0x2f, 0x4c,
+0xaa, 0x60, 0x66, 0x68, 0xc4, 0x63, 0xd4, 0x54, 0x89, 0x3d, 0x29, 0x20, 0x0e, 0xff, 0x7f, 0xdc,
+0x61, 0xbc, 0x48, 0xa3, 0x82, 0x95, 0x48, 0x96, 0x5a, 0xa6, 0xa5, 0xc3, 0x52, 0xe9, 0xa8, 0x10,
+0x4b, 0x33, 0x2f, 0x4d, 0xc6, 0x5b, 0x08, 0x5f, 0xdc, 0x57, 0x37, 0x48, 0x49, 0x32, 0x60, 0x17,
+0x22, 0xf9, 0x33, 0xda, 0xfb, 0xbd, 0xa4, 0xa8, 0x02, 0x9f, 0xfc, 0xa2, 0x2d, 0xb5, 0x7b, 0xd2,
+0x48, 0xf5, 0x34, 0x17, 0x29, 0x33, 0x5b, 0x46, 0xd7, 0x4f, 0xe7, 0x4f, 0xdb, 0x47, 0xc9, 0x39,
+0x7f, 0x26, 0x58, 0x0f, 0x86, 0xf5, 0x87, 0xdb, 0xbd, 0xc4, 0xbb, 0xb4, 0xc9, 0xae, 0x3f, 0xb5,
+0xbf, 0xc6, 0x2f, 0xe0, 0x9c, 0xfc, 0xf4, 0x16, 0xbb, 0x2b, 0x63, 0x39, 0x43, 0x3f, 0x1f, 0x3e,
+0x0b, 0x37, 0xe9, 0x2a, 0x52, 0x1b, 0x96, 0x08, 0x94, 0xf4, 0x3f, 0xe1, 0xfd, 0xd0, 0x51, 0xc6,
+0x95, 0xc3, 0x59, 0xc9, 0xfb, 0xd6, 0xe2, 0xe9, 0x2e, 0xfe, 0xd2, 0x10, 0x1b, 0x1f, 0x0d, 0x28,
+0x79, 0x2b, 0xb3, 0x29, 0xa5, 0x23, 0xde, 0x1a, 0x0e, 0x10, 0x22, 0x04, 0x18, 0xf8, 0x0a, 0xed,
+0xf0, 0xe3, 0x91, 0xdd, 0x55, 0xdb, 0xe9, 0xdd, 0x10, 0xe5, 0x6a, 0xef, 0x18, 0xfb, 0xd0, 0x05,
+0x32, 0x0e, 0x2a, 0x13, 0xaa, 0x14, 0x76, 0x13, 0x70, 0x10, 0xb8, 0x0c, 0x3a, 0x09, 0x14, 0x06,
+0x40, 0x03, 0x22, 0x00, 0x26, 0xfc, 0x60, 0xf7, 0xb6, 0xf2, 0x7a, 0xef, 0x80, 0xee, 0x26, 0xf0,
+0x8c, 0xf3, 0x90, 0xf7, 0xa6, 0xfa, 0x92, 0xfc, 0x60, 0xfd, 0xec, 0xfd, 0x6c, 0xff, 0xb2, 0x02,
+0xe8, 0x07, 0x10, 0x0e, 0x7c, 0x13, 0x34, 0x16, 0xb6, 0x14, 0xca, 0x0e, 0xe4, 0x05, 0x54, 0xfc,
+0xdc, 0xf3, 0xcc, 0xed, 0xec, 0xe9, 0x8e, 0xe7, 0x14, 0xe6, 0x74, 0xe5, 0x96, 0xe6, 0xaa, 0xea,
+0xc2, 0xf2, 0x86, 0xfe, 0x24, 0x0d, 0xd0, 0x1b, 0x6f, 0x27, 0x6f, 0x2d, 0x05, 0x2c, 0x7b, 0x23,
+0xd6, 0x15, 0xd8, 0x05, 0xf4, 0xf5, 0x38, 0xe8, 0x0b, 0xdd, 0x75, 0xd4, 0x39, 0xcf, 0xeb, 0xcd,
+0xfd, 0xd1, 0x4b, 0xdc, 0x86, 0xec, 0x3a, 0x01, 0xb2, 0x17, 0x17, 0x2c, 0x33, 0x3b, 0x4b, 0x42,
+0xe5, 0x3f, 0x7f, 0x34, 0x39, 0x22, 0xf0, 0x0b, 0xe4, 0xf4, 0x3f, 0xdf, 0xff, 0xcc, 0xe1, 0xbf,
+0xf3, 0xb8, 0xe9, 0xb9, 0x47, 0xc3, 0xf1, 0xd4, 0x14, 0xed, 0xb2, 0x08, 0xf5, 0x23, 0xa9, 0x3b,
+0x2b, 0x4c, 0x49, 0x53, 0x71, 0x4f, 0xfd, 0x40, 0xeb, 0x29, 0x3a, 0x0d, 0x7e, 0xee, 0xaf, 0xd1,
+0x2b, 0xba, 0xac, 0xaa, 0x8e, 0xa5, 0x0e, 0xab, 0x35, 0xbb, 0xf1, 0xd3, 0x30, 0xf2, 0x38, 0x12,
+0xa5, 0x30, 0xdd, 0x49, 0x34, 0x5b, 0x02, 0x62, 0xfe, 0x5b, 0x99, 0x49, 0x9b, 0x2c, 0xd8, 0x08,
+0x37, 0xe3, 0x23, 0xc1, 0x8c, 0xa7, 0xa8, 0x99, 0xda, 0x98, 0x62, 0xa4, 0x71, 0xba, 0x0f, 0xd8,
+0xa2, 0xf9, 0x86, 0x1b, 0xc1, 0x3a, 0x59, 0x54, 0x54, 0x65, 0x90, 0x6a, 0xba, 0x61, 0xcd, 0x4a,
+0x7f, 0x28, 0x5a, 0xff, 0xeb, 0xd5, 0xa1, 0xb2, 0xc8, 0x9a, 0xf4, 0x90, 0xe2, 0x94, 0x06, 0xa5,
+0x5f, 0xbe, 0xff, 0xdd, 0x38, 0x00, 0x71, 0x22, 0xbb, 0x41, 0x44, 0x5b, 0x84, 0x6b, 0x92, 0x6e,
+0x34, 0x62, 0xdf, 0x46, 0x45, 0x20, 0x50, 0xf4, 0x49, 0xca, 0x02, 0xa9, 0xe8, 0x94, 0x5a, 0x8f,
+0x28, 0x97, 0xe0, 0xa9, 0xd5, 0xc4, 0x0e, 0xe5, 0x8a, 0x07, 0x99, 0x29, 0x8b, 0x48, 0x9e, 0x60,
+0xee, 0x6d, 0xe6, 0x6c, 0xa6, 0x5b, 0x71, 0x3c, 0xb4, 0x13, 0x2c, 0xe8, 0xfd, 0xc0, 0x5a, 0xa4,
+0x44, 0x95, 0xec, 0x93, 0xc6, 0x9e, 0xe9, 0xb2, 0x89, 0xce, 0x80, 0xee, 0x1a, 0x10, 0x85, 0x30,
+0xa7, 0x4c, 0xa0, 0x60, 0xf0, 0x68, 0x20, 0x63, 0xc3, 0x4e, 0x1b, 0x2f, 0xba, 0x08, 0xd9, 0xe1,
+0xbb, 0xc0, 0xa0, 0xa9, 0xcc, 0x9e, 0x24, 0xa0, 0x7d, 0xab, 0x8d, 0xbf, 0xe5, 0xd9, 0xb2, 0xf7,
+0x58, 0x16, 0xdb, 0x32, 0xb7, 0x49, 0x46, 0x58, 0xf4, 0x5b, 0x3b, 0x53, 0x99, 0x3f, 0xf9, 0x22,
+0x24, 0x02, 0x7b, 0xe1, 0xf7, 0xc5, 0x2f, 0xb3, 0x14, 0xab, 0x8d, 0xad, 0xa1, 0xb9, 0x2d, 0xcd,
+0xe4, 0xe5, 0xe4, 0x00, 0xa4, 0x1a, 0xdf, 0x30, 0x35, 0x41, 0x9f, 0x49, 0x85, 0x49, 0xc1, 0x40,
+0xed, 0x2f, 0x94, 0x19, 0xfc, 0xff, 0xd8, 0xe6, 0xb1, 0xd1, 0x85, 0xc3, 0xdd, 0xbd, 0x1f, 0xc1,
+0xfd, 0xcb, 0xed, 0xdc, 0x78, 0xf1, 0x2a, 0x06, 0xd2, 0x18, 0x87, 0x27, 0x1f, 0x31, 0x75, 0x35,
+0x85, 0x34, 0x5f, 0x2e, 0x7d, 0x23, 0x42, 0x14, 0x1e, 0x02, 0x9e, 0xef, 0xbb, 0xdf, 0x2b, 0xd5,
+0xad, 0xd1, 0x41, 0xd5, 0xaf, 0xde, 0xde, 0xeb, 0x26, 0xfa, 0x06, 0x07, 0xe8, 0x10, 0xe6, 0x17,
+0x0a, 0x1c, 0x37, 0x1e, 0xe9, 0x1e, 0x83, 0x1d, 0x56, 0x19, 0xbc, 0x11, 0x32, 0x07, 0x92, 0xfb,
+0x44, 0xf1, 0x6a, 0xea, 0x54, 0xe8, 0xae, 0xea, 0xe0, 0xef, 0x46, 0xf6, 0xc8, 0xfb, 0x70, 0xff,
+0x42, 0x01, 0x58, 0x02, 0xf4, 0x03, 0xe4, 0x06, 0x48, 0x0b, 0xf8, 0x0f, 0x20, 0x13, 0x86, 0x13,
+0xba, 0x10, 0xe8, 0x0b, 0xae, 0x06, 0x88, 0x02, 0x06, 0x00, 0xcc, 0xfe, 0x72, 0xfd, 0xfe, 0xfa,
+0x2e, 0xf7, 0x22, 0xf2, 0x98, 0xed, 0x04, 0xeb, 0xf0, 0xeb, 0xd6, 0xf0, 0x86, 0xf9, 0x54, 0x04,
+0x04, 0x0f, 0x8e, 0x17, 0xfd, 0x1c, 0x1b, 0x1f, 0x5d, 0x1e, 0x46, 0x1b, 0x42, 0x16, 0x0c, 0x0f,
+0x74, 0x05, 0xf0, 0xf9, 0xac, 0xed, 0x2d, 0xe2, 0x4b, 0xd9, 0xfd, 0xd4, 0x2d, 0xd6, 0xdb, 0xdd,
+0x54, 0xeb, 0xd0, 0xfc, 0x9a, 0x0f, 0xc5, 0x20, 0xd5, 0x2d, 0x6f, 0x35, 0xaf, 0x36, 0x99, 0x31,
+0x57, 0x27, 0x7e, 0x18, 0xa0, 0x06, 0x98, 0xf3, 0x2d, 0xe1, 0x49, 0xd1, 0x1f, 0xc6, 0xe9, 0xc0,
+0x85, 0xc3, 0x65, 0xce, 0x67, 0xe1, 0x40, 0xfa, 0x58, 0x15, 0x37, 0x2e, 0x69, 0x41, 0xa3, 0x4b,
+0xe9, 0x4b, 0xdd, 0x42, 0x2d, 0x32, 0xa5, 0x1c, 0x48, 0x04, 0xc2, 0xeb, 0xfd, 0xd4, 0x2b, 0xc2,
+0xeb, 0xb4, 0xdf, 0xaf, 0x17, 0xb4, 0x47, 0xc3, 0x8b, 0xdc, 0xfe, 0xfc, 0x83, 0x1f, 0x79, 0x3e,
+0x6b, 0x54, 0x86, 0x5e, 0xac, 0x5b, 0x9d, 0x4d, 0xb5, 0x37, 0xc3, 0x1c, 0xc8, 0xff, 0x2b, 0xe3,
+0xfb, 0xc8, 0x97, 0xb3, 0xc4, 0xa5, 0xa4, 0xa1, 0xa2, 0xa9, 0x9b, 0xbe, 0xe7, 0xde, 0x00, 0x06,
+0x85, 0x2d, 0x8b, 0x4e, 0x56, 0x64, 0xe8, 0x6b, 0x34, 0x65, 0xef, 0x52, 0xb3, 0x38, 0xca, 0x19,
+0x22, 0xf9, 0x41, 0xd9, 0xdb, 0xbc, 0xdc, 0xa6, 0x32, 0x9a, 0x4e, 0x99, 0x70, 0xa6, 0x73, 0xc1,
+0x42, 0xe7, 0x24, 0x12, 0xc1, 0x3a, 0xa4, 0x5a, 0x66, 0x6d, 0x2a, 0x71, 0xc0, 0x66, 0x7d, 0x51,
+0xad, 0x34, 0x78, 0x13, 0xb4, 0xf0, 0x09, 0xcf, 0x01, 0xb2, 0x26, 0x9d, 0x9a, 0x93, 0xc6, 0x97,
+0x70, 0xaa, 0x21, 0xca, 0x7a, 0xf2, 0x3f, 0x1d, 0x9d, 0x43, 0x6e, 0x60, 0x10, 0x70, 0x2c, 0x71,
+0xbe, 0x64, 0x75, 0x4d, 0xdf, 0x2e, 0xa8, 0x0b, 0x4a, 0xe7, 0x47, 0xc5, 0x06, 0xaa, 0xea, 0x98,
+0x84, 0x94, 0xfa, 0x9d, 0xbb, 0xb4, 0x23, 0xd6, 0x46, 0xfd, 0xb9, 0x24, 0xf7, 0x46, 0xee, 0x5f,
+0x7a, 0x6c, 0x62, 0x6b, 0x74, 0x5d, 0x05, 0x45, 0x59, 0x25, 0x9e, 0x01, 0xc5, 0xdd, 0x53, 0xbe,
+0x72, 0xa7, 0x08, 0x9c, 0x40, 0x9d, 0x74, 0xaa, 0x29, 0xc2, 0x79, 0xe1, 0x6a, 0x04, 0xbf, 0x26,
+0x81, 0x44, 0xc0, 0x59, 0xea, 0x63, 0x0e, 0x61, 0xb5, 0x51, 0xb1, 0x38, 0x1c, 0x19, 0x38, 0xf7,
+0x45, 0xd7, 0xc1, 0xbd, 0xa1, 0xad, 0x6a, 0xa8, 0x41, 0xad, 0x29, 0xbb, 0x65, 0xd0, 0x82, 0xea,
+0x8e, 0x07, 0x45, 0x24, 0x67, 0x3d, 0x4d, 0x4f, 0xd4, 0x56, 0x59, 0x52, 0xab, 0x42, 0x41, 0x2a,
+0x18, 0x0d, 0xd8, 0xef, 0x77, 0xd6, 0x51, 0xc4, 0xc9, 0xba, 0x81, 0xb9, 0x95, 0xbf, 0x69, 0xcb,
+0xc7, 0xdb, 0xea, 0xef, 0x6c, 0x06, 0x63, 0x1d, 0xb1, 0x31, 0x03, 0x40, 0x31, 0x45, 0x25, 0x40,
+0x65, 0x31, 0x5d, 0x1c, 0xe0, 0x04, 0xec, 0xee, 0x8f, 0xdd, 0x83, 0xd2, 0xbf, 0xcd, 0x39, 0xce,
+0x05, 0xd3, 0xf7, 0xda, 0xfe, 0xe5, 0x8c, 0xf3, 0x5e, 0x03, 0xfc, 0x13, 0xef, 0x22, 0xf1, 0x2c,
+0x0d, 0x30, 0x47, 0x2b, 0xe1, 0x1f, 0xde, 0x10, 0x3e, 0x01, 0x12, 0xf4, 0xc0, 0xea, 0x88, 0xe5,
+0xc4, 0xe3, 0x68, 0xe4, 0x74, 0xe6, 0xae, 0xe9, 0x34, 0xee, 0x6c, 0xf4, 0xb2, 0xfc, 0x3a, 0x06,
+0x62, 0x0f, 0x12, 0x16, 0xc0, 0x18, 0x02, 0x17, 0xe6, 0x11, 0x2c, 0x0b, 0xd8, 0x04, 0x0e, 0x00,
+0x18, 0xfd, 0x98, 0xfb, 0xc4, 0xfa, 0xcc, 0xf9, 0x26, 0xf8, 0xc4, 0xf5, 0x0a, 0xf3, 0x12, 0xf1,
+0xda, 0xf0, 0xfe, 0xf2, 0x44, 0xf7, 0x72, 0xfc, 0xb8, 0x01, 0xf8, 0x05, 0x46, 0x09, 0xc4, 0x0b,
+0xce, 0x0d, 0xc8, 0x0f, 0x40, 0x11, 0xf2, 0x11, 0xe8, 0x10, 0xb6, 0x0d, 0x90, 0x07, 0xc2, 0xfe,
+0xca, 0xf3, 0xf4, 0xe8, 0x8f, 0xe0, 0x75, 0xdc, 0xef, 0xdd, 0x30, 0xe4, 0x3c, 0xee, 0xd8, 0xf9,
+0x6e, 0x05, 0x04, 0x10, 0x48, 0x19, 0x7d, 0x20, 0x83, 0x25, 0x95, 0x27, 0xc7, 0x25, 0x6f, 0x1f,
+0xa2, 0x13, 0xee, 0x02, 0xfc, 0xee, 0x23, 0xdb, 0x7b, 0xcb, 0xd1, 0xc3, 0x43, 0xc5, 0x4d, 0xcf,
+0x6d, 0xdf, 0x7a, 0xf2, 0xd0, 0x05, 0x98, 0x17, 0xb7, 0x26, 0xa7, 0x32, 0x77, 0x3a, 0xf1, 0x3c,
+0xfd, 0x38, 0x65, 0x2d, 0x0e, 0x1a, 0x84, 0x00, 0x10, 0xe4, 0xc7, 0xc9, 0x01, 0xb7, 0x09, 0xaf,
+0x17, 0xb3, 0x49, 0xc1, 0xbf, 0xd6, 0xc6, 0xef, 0x38, 0x09, 0x7f, 0x20, 0x8d, 0x34, 0xd5, 0x43,
+0x07, 0x4d, 0x5d, 0x4e, 0x35, 0x46, 0x29, 0x34, 0x20, 0x19, 0x0e, 0xf8, 0xb1, 0xd5, 0x17, 0xb8,
+0x2a, 0xa4, 0xb4, 0x9d, 0xb2, 0xa4, 0x4f, 0xb7, 0xed, 0xd1, 0x96, 0xf0, 0x66, 0x0f, 0xc3, 0x2b,
+0x83, 0x43, 0x99, 0x54, 0xfa, 0x5c, 0x44, 0x5a, 0x03, 0x4c, 0x0d, 0x33, 0xda, 0x11, 0x84, 0xec,
+0x4b, 0xc8, 0xba, 0xaa, 0x56, 0x98, 0xc4, 0x93, 0x2e, 0x9d, 0xdd, 0xb2, 0x57, 0xd1, 0x4e, 0xf4,
+0xda, 0x17, 0x41, 0x38, 0x77, 0x52, 0x44, 0x63, 0x62, 0x68, 0x52, 0x60, 0xd1, 0x4b, 0x3f, 0x2d,
+0x76, 0x08, 0xd7, 0xe1, 0x17, 0xbe, 0xe2, 0xa1, 0x34, 0x91, 0x84, 0x8e, 0x26, 0x9a, 0x9f, 0xb2,
+0xc7, 0xd4, 0x0c, 0xfc, 0x57, 0x23, 0xb7, 0x45, 0x1e, 0x5f, 0x70, 0x6c, 0xd2, 0x6b, 0x8c, 0x5d,
+0x15, 0x44, 0x0f, 0x23, 0x2e, 0xfe, 0x1b, 0xd9, 0xbd, 0xb7, 0x46, 0x9e, 0x20, 0x90, 0xa2, 0x8f,
+0xc2, 0x9d, 0x33, 0xb9, 0x65, 0xde, 0xea, 0x07, 0x7f, 0x2f, 0xd3, 0x4f, 0xee, 0x64, 0x7c, 0x6c,
+0x54, 0x66, 0x69, 0x54, 0xb3, 0x39, 0x90, 0x19, 0x08, 0xf7, 0xe5, 0xd4, 0xa1, 0xb6, 0x9a, 0x9f,
+0x88, 0x93, 0x4a, 0x95, 0xc8, 0xa5, 0x5b, 0xc3, 0xe4, 0xe9, 0xfa, 0x12, 0xd1, 0x37, 0x83, 0x53,
+0xd8, 0x62, 0x38, 0x65, 0xa8, 0x5b, 0x93, 0x48, 0x13, 0x2f, 0xa0, 0x11, 0x70, 0xf2, 0xaf, 0xd3,
+0x99, 0xb8, 0xa4, 0xa4, 0xa6, 0x9b, 0xee, 0x9f, 0x59, 0xb2, 0xcd, 0xd0, 0xda, 0xf5, 0x10, 0x1b,
+0x3b, 0x3a, 0x87, 0x4f, 0x16, 0x59, 0x7a, 0x57, 0x77, 0x4c, 0xa1, 0x3a, 0xf3, 0x23, 0x66, 0x0a,
+0xc0, 0xef, 0xc9, 0xd5, 0x67, 0xbf, 0xdb, 0xaf, 0x46, 0xaa, 0xd3, 0xb0, 0x7d, 0xc3, 0x33, 0xdf,
+0x10, 0xff, 0x27, 0x1d, 0xdf, 0x34, 0x9f, 0x43, 0xdd, 0x48, 0x77, 0x45, 0x4f, 0x3b, 0xff, 0x2b,
+0x7c, 0x19, 0x20, 0x05, 0xfc, 0xef, 0xe7, 0xdb, 0x17, 0xcb, 0x37, 0xc0, 0x8d, 0xbd, 0x6b, 0xc4,
+0xff, 0xd3, 0x04, 0xea, 0x02, 0x02, 0xe2, 0x17, 0x83, 0x28, 0x5f, 0x32, 0x39, 0x35, 0xe1, 0x31,
+0x8d, 0x29, 0xdf, 0x1d, 0x32, 0x10, 0x72, 0x01, 0xec, 0xf2, 0xcc, 0xe5, 0x65, 0xdb, 0x01, 0xd5,
+0xdd, 0xd3, 0x75, 0xd8, 0x8d, 0xe2, 0x44, 0xf0, 0x66, 0xff, 0x50, 0x0d, 0xde, 0x17, 0xd1, 0x1d,
+0x45, 0x1f, 0xd3, 0x1c, 0x5e, 0x17, 0x62, 0x10, 0xf8, 0x08, 0x3c, 0x02, 0x30, 0xfc, 0xee, 0xf6,
+0x40, 0xf2, 0x42, 0xee, 0x52, 0xeb, 0x40, 0xea, 0x0a, 0xec, 0x78, 0xf0, 0xf0, 0xf6, 0x84, 0xfd,
+0x0c, 0x03, 0x92, 0x06, 0xfe, 0x07, 0x9a, 0x07, 0x9a, 0x06, 0x2e, 0x06, 0xf0, 0x06, 0xec, 0x08,
+0x2c, 0x0b, 0x50, 0x0c, 0xd6, 0x0a, 0x22, 0x06, 0x0c, 0xff, 0x48, 0xf7, 0xc4, 0xf0, 0xe4, 0xec,
+0xca, 0xeb, 0x88, 0xec, 0x14, 0xee, 0xcc, 0xef, 0xa6, 0xf1, 0xaa, 0xf4, 0x98, 0xf9, 0x0e, 0x01,
+0xc4, 0x0a, 0x74, 0x15, 0x8d, 0x1e, 0x8d, 0x23, 0x77, 0x22, 0x38, 0x1b, 0x0c, 0x0f, 0x52, 0x00,
+0x1c, 0xf2, 0x92, 0xe6, 0x7b, 0xde, 0x97, 0xd9, 0x99, 0xd7, 0x5d, 0xd8, 0xc5, 0xdc, 0x4a, 0xe5,
+0x4c, 0xf2, 0x14, 0x03, 0xb6, 0x15, 0x29, 0x27, 0x5f, 0x34, 0x6d, 0x3a, 0xd7, 0x37, 0xb3, 0x2c,
+0xee, 0x1a, 0xd4, 0x05, 0x96, 0xf0, 0xb9, 0xdd, 0xe3, 0xce, 0x1f, 0xc5, 0xd1, 0xc0, 0xfb, 0xc2,
+0x0b, 0xcc, 0x27, 0xdc, 0xec, 0xf1, 0xd6, 0x0a, 0x9f, 0x23, 0xf5, 0x38, 0x6f, 0x47, 0xa7, 0x4c,
+0x8d, 0x47, 0xb3, 0x38, 0x37, 0x22, 0x3e, 0x07, 0x42, 0xeb, 0xdd, 0xd1, 0xd3, 0xbd, 0x2f, 0xb1,
+0x8f, 0xad, 0x75, 0xb3, 0xdf, 0xc2, 0x2b, 0xda, 0xd0, 0xf6, 0x06, 0x15, 0x4b, 0x31, 0x25, 0x48,
+0xf4, 0x56, 0x92, 0x5b, 0x89, 0x54, 0x61, 0x42, 0xed, 0x26, 0xb4, 0x05, 0xc9, 0xe2, 0x0b, 0xc3,
+0x04, 0xab, 0x0e, 0x9e, 0x86, 0x9d, 0x1c, 0xa9, 0x55, 0xbf, 0x33, 0xdd, 0xcc, 0xfe, 0xeb, 0x1f,
+0x5b, 0x3d, 0x6d, 0x54, 0xae, 0x62, 0xa8, 0x65, 0xf8, 0x5b, 0xb1, 0x45, 0xf1, 0x24, 0x7a, 0xfd,
+0x25, 0xd5, 0x6b, 0xb2, 0xc8, 0x9a, 0x4a, 0x91, 0x60, 0x96, 0x5c, 0xa8, 0x0f, 0xc4, 0x82, 0xe5,
+0x8a, 0x08, 0xcb, 0x29, 0x81, 0x46, 0x74, 0x5c, 0x40, 0x69, 0x30, 0x6a, 0x58, 0x5d, 0xe9, 0x42,
+0x87, 0x1d, 0x3e, 0xf2, 0x11, 0xc8, 0x0e, 0xa6, 0xaa, 0x91, 0x20, 0x8d, 0x48, 0x97, 0x09, 0xad,
+0xd3, 0xca, 0xc6, 0xec, 0x4a, 0x0f, 0x89, 0x2f, 0x51, 0x4b, 0x54, 0x60, 0x58, 0x6b, 0x70, 0x69,
+0xfe, 0x58, 0xd7, 0x3a, 0x8c, 0x12, 0x3a, 0xe6, 0x73, 0xbd, 0x32, 0x9f, 0xa8, 0x8f, 0x84, 0x8f,
+0xee, 0x9c, 0xad, 0xb4, 0x21, 0xd3, 0xae, 0xf4, 0x3e, 0x16, 0x55, 0x35, 0x77, 0x4f, 0xa6, 0x61,
+0xea, 0x68, 0xc4, 0x62, 0x75, 0x4e, 0xeb, 0x2d, 0xa4, 0x05, 0x3f, 0xdc, 0x8b, 0xb8, 0x26, 0xa0,
+0xce, 0x95, 0x60, 0x99, 0x88, 0xa8, 0x31, 0xc0, 0x49, 0xdd, 0xd4, 0xfc, 0xe8, 0x1b, 0xc7, 0x37,
+0xc9, 0x4d, 0x0e, 0x5b, 0x5e, 0x5d, 0x79, 0x53, 0x23, 0x3e, 0xe7, 0x1f, 0xe8, 0xfc, 0x57, 0xda,
+0xa1, 0xbd, 0xce, 0xaa, 0xb4, 0xa3, 0x0c, 0xa8, 0x53, 0xb6, 0x69, 0xcc, 0x50, 0xe7, 0xf2, 0x03,
+0x6f, 0x1f, 0xdd, 0x36, 0xaf, 0x47, 0xf3, 0x4f, 0x3b, 0x4e, 0xc9, 0x42, 0x27, 0x2f, 0x80, 0x15,
+0x2c, 0xf9, 0xeb, 0xdd, 0x91, 0xc7, 0x21, 0xb9, 0x59, 0xb4, 0x39, 0xb9, 0xa1, 0xc6, 0x51, 0xda,
+0x7c, 0xf1, 0x18, 0x09, 0x3f, 0x1e, 0xa7, 0x2e, 0xe1, 0x38, 0x53, 0x3c, 0x0b, 0x39, 0xff, 0x2f,
+0xd5, 0x21, 0xc8, 0x0f, 0x6e, 0xfb, 0x72, 0xe7, 0x8f, 0xd6, 0x99, 0xcb, 0x21, 0xc8, 0x7f, 0xcc,
+0xb3, 0xd7, 0x9a, 0xe7, 0x3c, 0xf9, 0xe2, 0x09, 0x7a, 0x17, 0xa1, 0x20, 0x63, 0x25, 0x39, 0x26,
+0x33, 0x24, 0x89, 0x1f, 0x34, 0x18, 0xf8, 0x0d, 0x78, 0x01, 0x30, 0xf4, 0x6e, 0xe8, 0xa3, 0xe0,
+0x3f, 0xde, 0x99, 0xe1, 0x34, 0xe9, 0x20, 0xf3, 0xd8, 0xfc, 0xcc, 0x04, 0xbc, 0x09, 0x40, 0x0c,
+0x44, 0x0d, 0x42, 0x0e, 0xbc, 0x0f, 0x50, 0x11, 0xc8, 0x11, 0x14, 0x10, 0xa0, 0x0b, 0x16, 0x05,
+0x34, 0xfe, 0xd2, 0xf8, 0x28, 0xf6, 0x0e, 0xf6, 0x7c, 0xf7, 0xde, 0xf8, 0x3e, 0xf9, 0x22, 0xf8,
+0x34, 0xf6, 0xc6, 0xf4, 0x60, 0xf5, 0xe8, 0xf8, 0x60, 0xff, 0x88, 0x07, 0x9e, 0x0f, 0xc4, 0x15,
+0xa2, 0x18, 0x36, 0x18, 0x56, 0x15, 0x2e, 0x11, 0x58, 0x0c, 0xba, 0x06, 0xfc, 0xff, 0x34, 0xf8,
+0xc8, 0xef, 0x96, 0xe7, 0x01, 0xe1, 0xd7, 0xdd, 0x59, 0xdf, 0x2e, 0xe6, 0xb6, 0xf1, 0x84, 0x00,
+0x50, 0x10, 0x71, 0x1e, 0x85, 0x28, 0x6b, 0x2d, 0xf9, 0x2c, 0xb7, 0x27, 0x27, 0x1e, 0x34, 0x11,
+0xf6, 0x01, 0xca, 0xf1, 0x3d, 0xe2, 0xfb, 0xd4, 0xf9, 0xcb, 0x9f, 0xc8, 0x3f, 0xcc, 0xdf, 0xd6,
+0x22, 0xe8, 0xfa, 0xfd, 0xc6, 0x15, 0x65, 0x2b, 0xcd, 0x3b, 0x47, 0x44, 0xe1, 0x43, 0xe9, 0x3a,
+0xe7, 0x2a, 0x34, 0x16, 0x2c, 0xff, 0x86, 0xe8, 0x2f, 0xd4, 0x57, 0xc4, 0x53, 0xba, 0xc5, 0xb7,
+0x6f, 0xbd, 0x15, 0xcc, 0xf5, 0xe2, 0xf2, 0xff, 0xef, 0x1e, 0x23, 0x3b, 0xaf, 0x4f, 0xfe, 0x58,
+0xf4, 0x55, 0xb3, 0x47, 0x23, 0x31, 0xc8, 0x15, 0x30, 0xf9, 0xf1, 0xdd, 0xab, 0xc6, 0x19, 0xb5,
+0xfa, 0xaa, 0x6e, 0xa9, 0x0d, 0xb2, 0x83, 0xc5, 0x03, 0xe3, 0x28, 0x07, 0x5d, 0x2c, 0x8d, 0x4c,
+0xe8, 0x61, 0x58, 0x69, 0xd0, 0x61, 0x25, 0x4e, 0x31, 0x32, 0x94, 0x12, 0x42, 0xf2, 0x59, 0xd4,
+0x29, 0xbb, 0xc8, 0xa8, 0xfc, 0x9e, 0x98, 0x9f, 0x73, 0xac, 0xe3, 0xc5, 0xde, 0xe9, 0x38, 0x13,
+0x79, 0x3b, 0xd4, 0x5b, 0x0a, 0x6f, 0x4e, 0x72, 0x5c, 0x66, 0x8b, 0x4e, 0x5d, 0x2f, 0xda, 0x0c,
+0x5a, 0xea, 0x85, 0xca, 0x37, 0xb0, 0x14, 0x9e, 0x76, 0x96, 0x4a, 0x9b, 0xbd, 0xad, 0x13, 0xcd,
+0x4a, 0xf5, 0x6f, 0x20, 0xa1, 0x47, 0x16, 0x65, 0x82, 0x74, 0x28, 0x74, 0x28, 0x65, 0x0f, 0x4b,
+0x49, 0x2a, 0x44, 0x06, 0x4b, 0xe2, 0x9b, 0xc1, 0xf0, 0xa7, 0x30, 0x98, 0xca, 0x94, 0x1e, 0x9f,
+0xc3, 0xb6, 0x43, 0xd9, 0xa8, 0x01, 0x49, 0x2a, 0x61, 0x4d, 0x6e, 0x66, 0x14, 0x72, 0x1c, 0x6f,
+0xd8, 0x5e, 0x31, 0x44, 0xe3, 0x22, 0x60, 0xfe, 0x8b, 0xda, 0x2f, 0xbb, 0x6a, 0xa4, 0x46, 0x99,
+0x56, 0x9b, 0x5a, 0xaa, 0x77, 0xc4, 0x38, 0xe6, 0x12, 0x0b, 0x77, 0x2e, 0x49, 0x4c, 0xe2, 0x60,
+0xa8, 0x69, 0x50, 0x65, 0x89, 0x54, 0xc9, 0x39, 0x98, 0x18, 0x14, 0xf5, 0x5d, 0xd3, 0x37, 0xb8,
+0x16, 0xa7, 0x16, 0xa2, 0xdc, 0xa8, 0x13, 0xba, 0xff, 0xd2, 0x80, 0xf0, 0x6c, 0x0f, 0x9b, 0x2c,
+0x33, 0x45, 0x12, 0x56, 0xd0, 0x5c, 0x92, 0x57, 0x07, 0x47, 0x3f, 0x2d, 0x06, 0x0e, 0xc4, 0xed,
+0x59, 0xd1, 0x91, 0xbc, 0xcd, 0xb1, 0x81, 0xb1, 0x71, 0xba, 0x5f, 0xca, 0x13, 0xdf, 0x8c, 0xf6,
+0xe6, 0x0e, 0x33, 0x26, 0x0b, 0x3a, 0xb1, 0x47, 0x51, 0x4c, 0x97, 0x46, 0xa3, 0x36, 0x3f, 0x1f,
+0x58, 0x04, 0xb4, 0xea, 0xe9, 0xd5, 0xc3, 0xc8, 0xef, 0xc3, 0x77, 0xc6, 0xa7, 0xce, 0xd9, 0xda,
+0x8c, 0xe9, 0xc8, 0xf9, 0xf6, 0x0a, 0xe8, 0x1b, 0xb3, 0x2a, 0xd9, 0x34, 0xeb, 0x37, 0x8b, 0x32,
+0x73, 0x25, 0x4c, 0x13, 0xc4, 0xff, 0x7e, 0xee, 0x11, 0xe2, 0x51, 0xdb, 0xdf, 0xd9, 0x6f, 0xdc,
+0x9f, 0xe1, 0x22, 0xe8, 0xc6, 0xef, 0xa8, 0xf8, 0xbc, 0x02, 0x76, 0x0d, 0x94, 0x17, 0x15, 0x1f,
+0xf1, 0x21, 0x49, 0x1f, 0xac, 0x17, 0x4a, 0x0d, 0xb8, 0x02, 0x0c, 0xfa, 0x3e, 0xf4, 0x94, 0xf1,
+0x26, 0xf1, 0xcc, 0xf1, 0x88, 0xf2, 0x22, 0xf3, 0xaa, 0xf3, 0x00, 0xf5, 0xa4, 0xf7, 0xec, 0xfb,
+0x46, 0x01, 0xc0, 0x06, 0xf6, 0x0a, 0x08, 0x0d, 0x1a, 0x0d, 0xda, 0x0b, 0x58, 0x0a, 0x30, 0x09,
+0xcc, 0x08, 0x94, 0x08, 0xe4, 0x07, 0xfa, 0x05, 0x1e, 0x02, 0x3a, 0xfc, 0x08, 0xf5, 0xb8, 0xed,
+0xf4, 0xe7, 0x82, 0xe5, 0x6c, 0xe7, 0x3e, 0xed, 0xca, 0xf5, 0x74, 0xff, 0xd2, 0x08, 0x08, 0x11,
+0xaa, 0x17, 0x6d, 0x1c, 0x1b, 0x1f, 0xa9, 0x1f, 0x3f, 0x1d, 0x58, 0x17, 0x88, 0x0d, 0x4c, 0x00,
+0x8e, 0xf0, 0xad, 0xe0, 0xf1, 0xd3, 0x53, 0xcd, 0x95, 0xce, 0xa3, 0xd7, 0x98, 0xe6, 0x68, 0xf8,
+0x4e, 0x0a, 0x3a, 0x1a, 0xa3, 0x26, 0x51, 0x2f, 0xf9, 0x33, 0x4b, 0x34, 0x8f, 0x2f, 0x0d, 0x25,
+0xa2, 0x14, 0xf0, 0xfe, 0x96, 0xe6, 0x39, 0xcf, 0xa9, 0xbd, 0xa9, 0xb5, 0x49, 0xb9, 0x57, 0xc7,
+0x21, 0xdd, 0x5a, 0xf6, 0xf2, 0x0e, 0x51, 0x24, 0xef, 0x34, 0x3f, 0x40, 0xab, 0x45, 0xcf, 0x44,
+0xdb, 0x3c, 0xc7, 0x2c, 0x0a, 0x15, 0xaa, 0xf7, 0x4b, 0xd8, 0x63, 0xbc, 0x40, 0xa9, 0xc4, 0xa2,
+0xc6, 0xa9, 0xe7, 0xbc, 0x37, 0xd8, 0x24, 0xf7, 0x2e, 0x15, 0x77, 0x2f, 0x03, 0x44, 0xd5, 0x51,
+0xbe, 0x57, 0x29, 0x54, 0x7b, 0x46, 0xdb, 0x2e, 0x64, 0x0f, 0x6c, 0xeb, 0x57, 0xc8, 0xb7, 0xab,
+0x56, 0x9a, 0x1c, 0x97, 0x2e, 0xa2, 0x91, 0xb9, 0xff, 0xd8, 0xf2, 0xfb, 0x9f, 0x1d, 0x01, 0x3b,
+0xbd, 0x51, 0xbe, 0x5f, 0x3a, 0x63, 0xf6, 0x5a, 0x1f, 0x47, 0x4f, 0x29, 0x04, 0x05, 0xab, 0xde,
+0x61, 0xbb, 0x42, 0xa0, 0x5e, 0x91, 0xa8, 0x90, 0x36, 0x9e, 0x37, 0xb8, 0xdd, 0xda, 0x4a, 0x01,
+0xb3, 0x26, 0xf3, 0x46, 0x9a, 0x5e, 0xd8, 0x6a, 0x04, 0x6a, 0xba, 0x5b, 0xe1, 0x41, 0xdb, 0x1f,
+0xaa, 0xf9, 0xed, 0xd3, 0xff, 0xb2, 0x0e, 0x9b, 0xd6, 0x8e, 0x74, 0x90, 0x40, 0xa0, 0x83, 0xbc,
+0xc5, 0xe1, 0xbc, 0x0a, 0xe1, 0x31, 0xe7, 0x51, 0xfe, 0x66, 0x40, 0x6e, 0x36, 0x67, 0x7d, 0x53,
+0x69, 0x36, 0xcc, 0x13, 0x86, 0xef, 0x3b, 0xcd, 0xff, 0xaf, 0x4c, 0x9b, 0xa8, 0x91, 0x42, 0x95,
+0xbc, 0xa6, 0xf7, 0xc4, 0xc4, 0xeb, 0x64, 0x15, 0x79, 0x3b, 0x70, 0x58, 0x70, 0x68, 0x16, 0x6a,
+0x60, 0x5e, 0x15, 0x48, 0x1b, 0x2b, 0xc2, 0x0a, 0x1c, 0xea, 0x9d, 0xcb, 0x47, 0xb2, 0x94, 0xa0,
+0x60, 0x99, 0xcc, 0x9e, 0xed, 0xb1, 0xb3, 0xd0, 0xd2, 0xf6, 0xef, 0x1d, 0x83, 0x3f, 0x92, 0x56,
+0x90, 0x60, 0xa6, 0x5d, 0xab, 0x4f, 0x03, 0x3a, 0xef, 0x1f, 0x02, 0x04, 0x46, 0xe8, 0xd1, 0xce,
+0x9b, 0xb9, 0x65, 0xab, 0xbe, 0xa6, 0xb9, 0xad, 0xeb, 0xc0, 0x1b, 0xde, 0x78, 0x00, 0x9f, 0x21,
+0x45, 0x3c, 0x91, 0x4c, 0xa3, 0x51, 0x6d, 0x4c, 0x59, 0x3f, 0xc9, 0x2c, 0x5c, 0x17, 0xb4, 0x00,
+0x2a, 0xea, 0x75, 0xd5, 0x95, 0xc4, 0xdd, 0xb9, 0x85, 0xb7, 0x67, 0xbf, 0xe7, 0xd0, 0xdc, 0xe9,
+0x76, 0x05, 0xe9, 0x1e, 0xe9, 0x31, 0xbd, 0x3c, 0xff, 0x3e, 0xc3, 0x39, 0xbd, 0x2e, 0x09, 0x20,
+0x42, 0x0f, 0xf8, 0xfd, 0x58, 0xed, 0xb9, 0xde, 0x85, 0xd3, 0x33, 0xcd, 0x05, 0xcd, 0x7d, 0xd3,
+0x43, 0xe0, 0x56, 0xf1, 0xe2, 0x03, 0x82, 0x14, 0x07, 0x21, 0xe1, 0x27, 0x0f, 0x29, 0x3f, 0x25,
+0xc3, 0x1d, 0x00, 0x14, 0x6e, 0x09, 0x24, 0xff, 0xe0, 0xf5, 0x48, 0xee, 0xb0, 0xe8, 0x56, 0xe5,
+0x56, 0xe4, 0x30, 0xe6, 0x18, 0xeb, 0x98, 0xf2, 0xb6, 0xfb, 0xc6, 0x04, 0x32, 0x0c, 0xd0, 0x10,
+0x52, 0x12, 0x22, 0x11, 0x1a, 0x0e, 0x8c, 0x0a, 0x6c, 0x07, 0x62, 0x05, 0x24, 0x04, 0x12, 0x03,
+0x14, 0x01, 0xa4, 0xfd, 0xca, 0xf8, 0x88, 0xf3, 0x9a, 0xef, 0x00, 0xee, 0x1a, 0xef, 0x0e, 0xf2,
+0xc0, 0xf5, 0x24, 0xf9, 0xd2, 0xfb, 0x2e, 0xfe, 0xec, 0x00, 0xf8, 0x04, 0x96, 0x0a, 0x38, 0x11,
+0x32, 0x17, 0x86, 0x1a, 0x76, 0x19, 0x50, 0x13, 0xd8, 0x08, 0x26, 0xfc, 0xfe, 0xef, 0x84, 0xe6,
+0xef, 0xe0, 0xef, 0xde, 0xbd, 0xdf, 0xb1, 0xe2, 0x76, 0xe7, 0x70, 0xee, 0x30, 0xf8, 0xdc, 0x04,
+0x64, 0x13, 0xb9, 0x21, 0xf9, 0x2c, 0x27, 0x32, 0x9b, 0x2f, 0x1b, 0x25, 0x64, 0x14, 0x70, 0x00,
+0xc0, 0xec, 0x55, 0xdc, 0xc5, 0xd0, 0x99, 0xca, 0x97, 0xc9, 0x7d, 0xcd, 0x41, 0xd6, 0x1c, 0xe4,
+0x88, 0xf6, 0x08, 0x0c, 0x09, 0x22, 0x2b, 0x35, 0x15, 0x42, 0x37, 0x46, 0x99, 0x40, 0x87, 0x31,
+0x48, 0x1b, 0x38, 0x01, 0x16, 0xe7, 0x55, 0xd0, 0x77, 0xbf, 0xf3, 0xb5, 0x81, 0xb4, 0x5f, 0xbb,
+0x41, 0xca, 0x15, 0xe0, 0xb4, 0xfa, 0x1a, 0x17, 0x91, 0x31, 0x91, 0x46, 0x45, 0x53, 0xb8, 0x55,
+0x1f, 0x4d, 0x3b, 0x3a, 0x3d, 0x1f, 0x96, 0xff, 0x57, 0xdf, 0xe7, 0xc2, 0xcf, 0xad, 0xda, 0xa2,
+0x72, 0xa3, 0x85, 0xaf, 0x7f, 0xc5, 0xc5, 0xe2, 0x8e, 0x03, 0xbd, 0x23, 0xaf, 0x3f, 0x81, 0x54,
+0xda, 0x5f, 0x30, 0x60, 0xb9, 0x54, 0x2b, 0x3e, 0x8b, 0x1e, 0x94, 0xf9, 0x1f, 0xd4, 0x77, 0xb3,
+0xd2, 0x9c, 0x7e, 0x93, 0xba, 0x98, 0x26, 0xab, 0xd5, 0xc7, 0x62, 0xea, 0x44, 0x0e, 0x55, 0x2f,
+0xad, 0x4a, 0xf8, 0x5d, 0x6c, 0x67, 0x62, 0x65, 0xee, 0x56, 0xc1, 0x3c, 0x18, 0x19, 0x02, 0xf0,
+0x41, 0xc7, 0xae, 0xa5, 0xd0, 0x90, 0xec, 0x8b, 0xd0, 0x96, 0xc9, 0xae, 0x75, 0xcf, 0xee, 0xf3,
+0x9a, 0x17, 0x43, 0x37, 0xaf, 0x50, 0x1a, 0x62, 0xb6, 0x69, 0x6a, 0x65, 0x77, 0x54, 0x27, 0x37,
+0x60, 0x10, 0xea, 0xe4, 0xdd, 0xbb, 0x48, 0x9c, 0xca, 0x8b, 0x14, 0x8c, 0x88, 0x9b, 0x65, 0xb6,
+0x0d, 0xd8, 0xc4, 0xfb, 0xad, 0x1d, 0x81, 0x3b, 0x17, 0x53, 0xae, 0x62, 0xf2, 0x67, 0xf6, 0x60,
+0xbd, 0x4c, 0xbd, 0x2c, 0x72, 0x04, 0xdd, 0xd9, 0x1d, 0xb4, 0xfa, 0x99, 0x28, 0x8f, 0xf8, 0x93,
+0xf4, 0xa5, 0x43, 0xc1, 0xcf, 0xe1, 0x66, 0x03, 0xe9, 0x22, 0xed, 0x3d, 0x8f, 0x52, 0x86, 0x5e,
+0xe2, 0x5f, 0x34, 0x55, 0xcf, 0x3e, 0xd1, 0x1e, 0x4c, 0xf9, 0xeb, 0xd3, 0xef, 0xb4, 0x42, 0xa1,
+0x0a, 0x9b, 0x00, 0xa2, 0xa9, 0xb3, 0xf5, 0xcc, 0x2a, 0xea, 0x0c, 0x08, 0x9b, 0x23, 0x8d, 0x3a,
+0xf5, 0x4a, 0xeb, 0x52, 0xf5, 0x50, 0xcd, 0x44, 0x6b, 0x2f, 0x3c, 0x13, 0xe6, 0xf3, 0xbb, 0xd5,
+0x75, 0xbd, 0x63, 0xae, 0x64, 0xaa, 0x75, 0xb1, 0xe9, 0xc1, 0xa9, 0xd8, 0xa0, 0xf2, 0x60, 0x0c,
+0x33, 0x23, 0xe3, 0x34, 0xe9, 0x3f, 0x1f, 0x43, 0x6b, 0x3e, 0x7b, 0x32, 0xd7, 0x20, 0x52, 0x0b,
+0x30, 0xf4, 0x59, 0xde, 0xcd, 0xcc, 0x11, 0xc2, 0x99, 0xbf, 0x83, 0xc5, 0x9f, 0xd2, 0xc0, 0xe4,
+0x02, 0xf9, 0x8c, 0x0c, 0xb9, 0x1c, 0x0d, 0x28, 0xa7, 0x2d, 0xcb, 0x2d, 0x4b, 0x29, 0x3b, 0x21,
+0x66, 0x16, 0x60, 0x09, 0xdc, 0xfa, 0x48, 0xec, 0xab, 0xdf, 0x55, 0xd7, 0xf5, 0xd4, 0x07, 0xd9,
+0xa3, 0xe2, 0xb4, 0xef, 0x68, 0xfd, 0x50, 0x09, 0xc2, 0x11, 0x42, 0x16, 0x5c, 0x17, 0x8a, 0x16,
+0xe8, 0x14, 0xfa, 0x12, 0x50, 0x10, 0x08, 0x0c, 0x70, 0x05, 0x2c, 0xfd, 0xa0, 0xf4, 0x1c, 0xee,
+0x40, 0xeb, 0x82, 0xec, 0xe2, 0xf0, 0x7c, 0xf6, 0x6e, 0xfb, 0x64, 0xfe, 0x38, 0xff, 0xca, 0xfe,
+0xa8, 0xfe, 0x26, 0x00, 0x02, 0x04, 0x8e, 0x09, 0x3c, 0x0f, 0x20, 0x13, 0xd8, 0x13, 0x08, 0x11,
+0xfe, 0x0b, 0x48, 0x06, 0x5e, 0x01, 0x76, 0xfd, 0x1a, 0xfa, 0x7a, 0xf6, 0x18, 0xf2, 0x3a, 0xed,
+0xd8, 0xe8, 0x98, 0xe6, 0xd2, 0xe7, 0x7c, 0xed, 0x3c, 0xf7, 0xda, 0x03, 0x0e, 0x11, 0x6b, 0x1c,
+0xc3, 0x23, 0x1f, 0x26, 0xd5, 0x23, 0xc3, 0x1d, 0xf0, 0x14, 0x10, 0x0a, 0xc4, 0xfd, 0xd6, 0xf0,
+0x66, 0xe4, 0xc7, 0xd9, 0xbf, 0xd2, 0x89, 0xd0, 0x61, 0xd4, 0x3d, 0xde, 0xaa, 0xed, 0xf2, 0x00,
+0xa8, 0x15, 0x3b, 0x28, 0xdf, 0x35, 0x6b, 0x3c, 0x07, 0x3b, 0x55, 0x32, 0x45, 0x23, 0xfc, 0x0f,
+0xaa, 0xfa, 0xce, 0xe5, 0x7d, 0xd3, 0xd9, 0xc5, 0x29, 0xbe, 0xa3, 0xbd, 0xa7, 0xc4, 0x29, 0xd3,
+0x8a, 0xe8, 0xda, 0x02, 0xc7, 0x1e, 0x2d, 0x38, 0xa1, 0x4a, 0x01, 0x53, 0xd1, 0x4f, 0x8f, 0x41,
+0xf9, 0x2a, 0x9e, 0x0f, 0x5a, 0xf3, 0x3b, 0xd9, 0xed, 0xc3, 0xfd, 0xb4, 0xeb, 0xad, 0x3b, 0xaf,
+0x69, 0xb9, 0xa7, 0xcc, 0x0a, 0xe8, 0x12, 0x09, 0x1b, 0x2b, 0x29, 0x49, 0x76, 0x5d, 0x94, 0x64,
+0x0a, 0x5d, 0xcd, 0x48, 0xed, 0x2b, 0x4a, 0x0b, 0xe8, 0xea, 0x0f, 0xce, 0x37, 0xb7, 0x0e, 0xa8,
+0xfe, 0xa1, 0x78, 0xa5, 0x73, 0xb3, 0xff, 0xcb, 0x72, 0xed, 0xf4, 0x13, 0x25, 0x3a, 0x76, 0x59,
+0xa2, 0x6c, 0xec, 0x6f, 0x50, 0x63, 0xf5, 0x49, 0xef, 0x28, 0x2c, 0x05, 0xb5, 0xe2, 0x77, 0xc4,
+0x15, 0xad, 0x8c, 0x9e, 0xf8, 0x99, 0xc4, 0xa0, 0x57, 0xb3, 0x49, 0xd1, 0x96, 0xf7, 0x3d, 0x21,
+0xef, 0x47, 0x84, 0x65, 0xea, 0x74, 0xc8, 0x73, 0x36, 0x63, 0xe1, 0x46, 0xf1, 0x23, 0xce, 0xfe,
+0x5b, 0xdb, 0xa5, 0xbc, 0xae, 0xa5, 0xa4, 0x98, 0x18, 0x97, 0x0a, 0xa2, 0x77, 0xb9, 0x7f, 0xdb,
+0xda, 0x03, 0x01, 0x2d, 0xdb, 0x50, 0x48, 0x6a, 0x48, 0x75, 0xb4, 0x70, 0xf4, 0x5d, 0xb7, 0x40,
+0x5d, 0x1d, 0x16, 0xf8, 0xab, 0xd4, 0xdd, 0xb6, 0xdc, 0xa1, 0x12, 0x98, 0xe2, 0x9a, 0x62, 0xaa,
+0x87, 0xc5, 0xc2, 0xe8, 0x64, 0x0f, 0x63, 0x34, 0x23, 0x53, 0x86, 0x67, 0xec, 0x6e, 0x32, 0x68,
+0xde, 0x54, 0xff, 0x37, 0x3a, 0x15, 0xe2, 0xf0, 0x25, 0xcf, 0x21, 0xb4, 0x52, 0xa3, 0x64, 0x9e,
+0xd6, 0xa5, 0xcd, 0xb8, 0x6f, 0xd4, 0xfa, 0xf4, 0x54, 0x16, 0xef, 0x34, 0xa3, 0x4d, 0x98, 0x5d,
+0x7c, 0x62, 0x56, 0x5b, 0xdd, 0x48, 0x47, 0x2d, 0x7c, 0x0c, 0x9c, 0xea, 0xa9, 0xcc, 0xad, 0xb6,
+0x5f, 0xab, 0xa3, 0xab, 0x73, 0xb6, 0xe1, 0xc9, 0x65, 0xe2, 0x32, 0xfd, 0x66, 0x17, 0x35, 0x2f,
+0x75, 0x42, 0xf7, 0x4e, 0x75, 0x52, 0x93, 0x4b, 0x81, 0x3a, 0x59, 0x21, 0x2c, 0x04, 0x74, 0xe7,
+0xcb, 0xcf, 0x89, 0xc0, 0xef, 0xba, 0xab, 0xbe, 0xc3, 0xc9, 0xd1, 0xd9, 0x8c, 0xec, 0xb6, 0xff,
+0x9a, 0x12, 0x29, 0x24, 0xeb, 0x32, 0xaf, 0x3c, 0x75, 0x3f, 0x53, 0x39, 0xe5, 0x2a, 0x58, 0x16,
+0x48, 0xff, 0x4c, 0xea, 0x5b, 0xda, 0xaf, 0xd1, 0x27, 0xd0, 0x81, 0xd4, 0xbf, 0xdc, 0x34, 0xe7,
+0x70, 0xf2, 0x20, 0xfe, 0x24, 0x0a, 0xe8, 0x15, 0x8d, 0x20, 0xed, 0x27, 0x45, 0x2a, 0x55, 0x26,
+0x5d, 0x1c, 0x9a, 0x0e, 0xf2, 0xff, 0x50, 0xf3, 0xb2, 0xea, 0x96, 0xe6, 0x6a, 0xe6, 0xfc, 0xe8,
+0xec, 0xec, 0x1a, 0xf1, 0x80, 0xf5, 0x18, 0xfa, 0x4c, 0xff, 0x2c, 0x05, 0x6c, 0x0b, 0xda, 0x10,
+0x0c, 0x14, 0x38, 0x14, 0x30, 0x11, 0x42, 0x0c, 0xc4, 0x06, 0x38, 0x02, 0x4c, 0xff, 0xda, 0xfd,
+0x42, 0xfd, 0xba, 0xfc, 0x50, 0xfb, 0xd6, 0xf8, 0x9a, 0xf5, 0x3c, 0xf2, 0xf8, 0xef, 0xd8, 0xef,
+0x6a, 0xf2, 0xb6, 0xf7, 0x84, 0xfe, 0x8e, 0x05, 0xf2, 0x0b, 0xc8, 0x10, 0x52, 0x14, 0x5e, 0x16,
+0xce, 0x16, 0xba, 0x15, 0xf0, 0x12, 0xde, 0x0d, 0x92, 0x06, 0xe6, 0xfc, 0x98, 0xf1, 0x24, 0xe6,
+0xa1, 0xdc, 0xb5, 0xd7, 0x07, 0xd9, 0xe3, 0xe0, 0xec, 0xed, 0xc0, 0xfd, 0x5c, 0x0d, 0xe0, 0x1a,
+0x8b, 0x24, 0x57, 0x2a, 0x43, 0x2c, 0x5d, 0x2a, 0xab, 0x24, 0x26, 0x1b, 0x7c, 0x0d, 0x38, 0xfc,
+0xbe, 0xe8, 0xa1, 0xd5, 0xcf, 0xc6, 0xa5, 0xbf, 0x6f, 0xc2, 0x25, 0xcf, 0x83, 0xe3, 0x7e, 0xfb,
+0x1e, 0x13, 0xed, 0x26, 0x5b, 0x35, 0xb3, 0x3d, 0x3d, 0x40, 0xf5, 0x3c, 0xc9, 0x33, 0xbd, 0x24,
+0xe4, 0x0f, 0xb4, 0xf6, 0xbd, 0xdb, 0x2d, 0xc3, 0xcb, 0xb1, 0xb7, 0xab, 0x63, 0xb2, 0xc5, 0xc4,
+0x71, 0xdf, 0xde, 0xfd, 0xd0, 0x1a, 0xd5, 0x32, 0x53, 0x44, 0x7f, 0x4e, 0x2d, 0x51, 0xe7, 0x4b,
+0x61, 0x3e, 0x93, 0x28, 0x30, 0x0c, 0x4e, 0xeb, 0x9f, 0xca, 0x3f, 0xaf, 0x28, 0x9e, 0x30, 0x9b,
+0xb8, 0xa6, 0xc9, 0xbe, 0x57, 0xdf, 0xb8, 0x02, 0xc9, 0x23, 0x47, 0x3f, 0xcb, 0x52, 0x6c, 0x5d,
+0x36, 0x5e, 0x79, 0x54, 0xa9, 0x40, 0x05, 0x24, 0x2e, 0x01, 0x5d, 0xdc, 0x51, 0xba, 0x90, 0xa0,
+0x1e, 0x93, 0x12, 0x94, 0x70, 0xa3, 0xf3, 0xbe, 0x71, 0xe2, 0x7a, 0x08, 0x5b, 0x2c, 0xef, 0x49,
+0xc8, 0x5e, 0x90, 0x68, 0x4c, 0x66, 0x94, 0x57, 0xd5, 0x3d, 0x04, 0x1c, 0xc0, 0xf5, 0x1b, 0xd0,
+0xb1, 0xaf, 0x20, 0x99, 0x10, 0x8f, 0xce, 0x92, 0x28, 0xa4, 0x43, 0xc1, 0x60, 0xe6, 0x6c, 0x0e,
+0x39, 0x34, 0x05, 0x53, 0x54, 0x67, 0x42, 0x6e, 0xfa, 0x66, 0xdf, 0x52, 0x83, 0x34, 0x46, 0x10,
+0x78, 0xea, 0x3f, 0xc7, 0xde, 0xaa, 0x06, 0x98, 0xc8, 0x90, 0x8a, 0x96, 0x48, 0xa9, 0xd1, 0xc7,
+0x76, 0xee, 0xa0, 0x17, 0x89, 0x3d, 0xce, 0x5a, 0x1a, 0x6b, 0xc2, 0x6c, 0x00, 0x60, 0xc3, 0x47,
+0x09, 0x28, 0x16, 0x05, 0xa5, 0xe2, 0x2b, 0xc4, 0x13, 0xac, 0x92, 0x9c, 0xae, 0x97, 0x98, 0x9e,
+0x77, 0xb2, 0x93, 0xd1, 0x24, 0xf8, 0x2f, 0x20, 0x4d, 0x43, 0xf8, 0x5b, 0xba, 0x66, 0x0c, 0x63,
+0xcf, 0x52, 0xd5, 0x39, 0x20, 0x1c, 0x48, 0xfd, 0xff, 0xdf, 0x89, 0xc6, 0x83, 0xb2, 0x08, 0xa6,
+0x16, 0xa3, 0x5d, 0xab, 0xaf, 0xbf, 0xfd, 0xdd, 0x0c, 0x02, 0xe5, 0x25, 0x33, 0x43, 0x7c, 0x55,
+0xc6, 0x5a, 0x77, 0x53, 0xc7, 0x42, 0x07, 0x2c, 0xa8, 0x12, 0x48, 0xf9, 0x9d, 0xe1, 0x29, 0xcd,
+0x7d, 0xbd, 0x3b, 0xb4, 0x3d, 0xb3, 0x4f, 0xbc, 0x11, 0xcf, 0xd6, 0xe9, 0x2a, 0x08, 0xb1, 0x24,
+0x95, 0x3a, 0xc5, 0x46, 0x21, 0x48, 0xad, 0x40, 0x4f, 0x32, 0x3f, 0x20, 0xa8, 0x0c, 0x14, 0xf9,
+0x36, 0xe7, 0xf3, 0xd7, 0xd1, 0xcc, 0xe7, 0xc6, 0xb3, 0xc7, 0x97, 0xcf, 0x85, 0xde, 0x5e, 0xf2,
+0x2a, 0x08, 0x06, 0x1c, 0xcd, 0x2a, 0x65, 0x32, 0xdb, 0x32, 0xff, 0x2c, 0xb5, 0x22, 0xea, 0x15,
+0x1c, 0x08, 0xf2, 0xfa, 0x44, 0xef, 0x18, 0xe6, 0xdd, 0xdf, 0xf3, 0xdc, 0x91, 0xdd, 0xdd, 0xe1,
+0xc2, 0xe9, 0x9a, 0xf4, 0xe2, 0x00, 0xec, 0x0c, 0x3c, 0x16, 0xda, 0x1b, 0xf7, 0x1c, 0x1a, 0x1a,
+0x72, 0x14, 0x44, 0x0d, 0x6a, 0x06, 0xb0, 0x00, 0xaa, 0xfc, 0xe6, 0xf9, 0xe6, 0xf7, 0xbe, 0xf5,
+0x3a, 0xf3, 0xc4, 0xf0, 0x82, 0xef, 0xa0, 0xf0, 0x32, 0xf4, 0x80, 0xf9, 0x1c, 0xff, 0xa2, 0x03,
+0x56, 0x06, 0x48, 0x07, 0x3a, 0x07, 0x76, 0x07, 0xd0, 0x08, 0x6e, 0x0b, 0x9e, 0x0e, 0xbc, 0x10,
+0x30, 0x10, 0xf4, 0x0b, 0xd4, 0x03, 0x96, 0xf9, 0x74, 0xef, 0x1a, 0xe8, 0xb4, 0xe4, 0xfe, 0xe4,
+0xfa, 0xe7, 0x76, 0xec, 0xa8, 0xf1, 0x7e, 0xf7, 0x80, 0xfe, 0x26, 0x07, 0x66, 0x11, 0xb2, 0x1b,
+0x35, 0x24, 0x8b, 0x28, 0xb5, 0x26, 0x19, 0x1e, 0x72, 0x0f, 0x80, 0xfd, 0x94, 0xeb, 0x05, 0xdd,
+0x95, 0xd3, 0xe7, 0xcf, 0x45, 0xd1, 0x9f, 0xd6, 0x99, 0xdf, 0x8e, 0xeb, 0xbe, 0xfa, 0x5e, 0x0c,
+0x83, 0x1e, 0xed, 0x2e, 0x4f, 0x3a, 0x55, 0x3e, 0x69, 0x39, 0x71, 0x2b, 0x88, 0x16, 0xb0, 0xfd,
+0x3a, 0xe5, 0x7d, 0xd0, 0x67, 0xc2, 0xd3, 0xbb, 0xd7, 0xbc, 0xe3, 0xc4, 0x05, 0xd3, 0x96, 0xe6,
+0x28, 0xfe, 0x66, 0x17, 0x35, 0x2f, 0x2d, 0x42, 0x67, 0x4d, 0x0b, 0x4f, 0x03, 0x46, 0x6f, 0x33,
+0x36, 0x19, 0x10, 0xfb, 0xbb, 0xdc, 0xd5, 0xc2, 0xbb, 0xb0, 0x9c, 0xa8, 0x18, 0xab, 0x8f, 0xb7,
+0xc5, 0xcc, 0x52, 0xe8, 0x12, 0x07, 0x53, 0x25, 0x7f, 0x3f, 0x57, 0x52, 0xf2, 0x5b, 0xa6, 0x5a,
+0x5d, 0x4e, 0xd3, 0x37, 0x50, 0x19, 0x26, 0xf6, 0xe9, 0xd2, 0x9d, 0xb4, 0x04, 0xa0, 0x1a, 0x98,
+0xc4, 0x9d, 0x43, 0xb0, 0xb7, 0xcc, 0x3c, 0xef, 0xf0, 0x12, 0x99, 0x33, 0xa3, 0x4d, 0xe2, 0x5e,
+0xaa, 0x65, 0x5c, 0x61, 0xb5, 0x51, 0x8f, 0x37, 0x02, 0x15, 0x92, 0xed, 0x89, 0xc6, 0x02, 0xa6,
+0x9a, 0x91, 0xc0, 0x8c, 0x04, 0x98, 0xeb, 0xb0, 0x6f, 0xd3, 0xac, 0xf9, 0xad, 0x1e, 0x6f, 0x3e,
+0x5c, 0x56, 0x14, 0x65, 0x38, 0x69, 0x2e, 0x62, 0xc7, 0x4f, 0xa9, 0x32, 0xe6, 0x0c, 0xd1, 0xe2,
+0x8b, 0xba, 0x24, 0x9b, 0x5a, 0x8a, 0xaa, 0x8a, 0x40, 0x9b, 0x7f, 0xb8, 0xb9, 0xdc, 0xb2, 0x02,
+0xb3, 0x25, 0xad, 0x42, 0x36, 0x58, 0x96, 0x64, 0xb6, 0x66, 0x96, 0x5d, 0xc5, 0x48, 0x59, 0x29,
+0x0c, 0x02, 0xe5, 0xd7, 0xc5, 0xb1, 0xc2, 0x96, 0x48, 0x8b, 0xb2, 0x90, 0xe2, 0xa4, 0x2b, 0xc3,
+0xa4, 0xe6, 0x2c, 0x0a, 0xfb, 0x29, 0x33, 0x44, 0xca, 0x56, 0x7a, 0x60, 0x0e, 0x60, 0x4d, 0x54,
+0x97, 0x3d, 0x39, 0x1d, 0xbc, 0xf6, 0xb9, 0xcf, 0xd3, 0xae, 0x96, 0x99, 0x80, 0x93, 0x8a, 0x9c,
+0xa3, 0xb1, 0xf1, 0xce, 0x80, 0xef, 0x44, 0x0f, 0x75, 0x2b, 0xb9, 0x41, 0xc9, 0x50, 0x44, 0x57,
+0xb5, 0x53, 0x25, 0x46, 0x25, 0x2f, 0xce, 0x10, 0x04, 0xef, 0xbb, 0xce, 0x0b, 0xb5, 0x00, 0xa6,
+0x72, 0xa3, 0xdb, 0xac, 0x37, 0xc0, 0xad, 0xd9, 0xc2, 0xf5, 0x16, 0x11, 0xe1, 0x28, 0x19, 0x3b,
+0x41, 0x46, 0xf9, 0x48, 0xfb, 0x42, 0xc9, 0x34, 0x27, 0x20, 0x6c, 0x07, 0x74, 0xed, 0x65, 0xd5,
+0xb1, 0xc2, 0x0b, 0xb8, 0xb5, 0xb6, 0xf9, 0xbe, 0xe9, 0xce, 0x18, 0xe4, 0x20, 0xfb, 0x2c, 0x11,
+0x73, 0x23, 0x3b, 0x30, 0x3d, 0x36, 0x87, 0x35, 0xcf, 0x2e, 0x61, 0x23, 0xa2, 0x14, 0x12, 0x04,
+0xb4, 0xf2, 0x47, 0xe2, 0xdb, 0xd4, 0x85, 0xcc, 0x35, 0xcb, 0x07, 0xd1, 0x3f, 0xdd, 0x3a, 0xed,
+0x5a, 0xfe, 0x9e, 0x0d, 0x12, 0x19, 0x8d, 0x1f, 0x11, 0x21, 0xc1, 0x1e, 0x0a, 0x1a, 0xe4, 0x13,
+0x26, 0x0d, 0x86, 0x05, 0xfe, 0xfc, 0xd6, 0xf3, 0x04, 0xeb, 0x7e, 0xe4, 0xed, 0xe1, 0x34, 0xe4,
+0x88, 0xea, 0x56, 0xf3, 0x38, 0xfc, 0x68, 0x03, 0xfa, 0x07, 0x94, 0x09, 0x8a, 0x09, 0x22, 0x09,
+0x5c, 0x09, 0xce, 0x0a, 0x96, 0x0c, 0x7a, 0x0d, 0x46, 0x0c, 0x44, 0x08, 0x64, 0x02, 0x60, 0xfc,
+0xc8, 0xf7, 0x60, 0xf5, 0xe4, 0xf4, 0x20, 0xf5, 0x0e, 0xf5, 0x24, 0xf4, 0x5a, 0xf2, 0x16, 0xf1,
+0x9c, 0xf1, 0x08, 0xf5, 0xce, 0xfb, 0xfa, 0x04, 0xde, 0x0e, 0x70, 0x17, 0x85, 0x1c, 0x53, 0x1d,
+0x20, 0x1a, 0xd4, 0x13, 0xe8, 0x0b, 0x2e, 0x03, 0xf4, 0xf9, 0xa0, 0xf0, 0xb8, 0xe7, 0x05, 0xe0,
+0xe5, 0xda, 0x63, 0xd9, 0xb9, 0xdc, 0x52, 0xe5, 0x94, 0xf2, 0x0a, 0x03, 0x8c, 0x14, 0x2d, 0x24,
+0x3f, 0x2f, 0x07, 0x34, 0x97, 0x31, 0xfb, 0x28, 0x44, 0x1b, 0x52, 0x0a, 0xf8, 0xf7, 0x2a, 0xe6,
+0x9d, 0xd6, 0x45, 0xcb, 0x1f, 0xc5, 0x69, 0xc5, 0x7b, 0xcc, 0x47, 0xda, 0xc2, 0xed, 0x10, 0x05,
+0x73, 0x1d, 0x45, 0x33, 0x3d, 0x43, 0x27, 0x4a, 0x03, 0x47, 0xed, 0x39, 0x27, 0x25, 0x9e, 0x0b,
+0xfe, 0xf0, 0x53, 0xd8, 0xbd, 0xc4, 0xbf, 0xb7, 0xa9, 0xb2, 0xa3, 0xb5, 0xe3, 0xc0, 0xc9, 0xd3,
+0x12, 0xed, 0xae, 0x0a, 0x05, 0x29, 0x1f, 0x44, 0x06, 0x57, 0x1c, 0x5e, 0x6a, 0x57, 0x2b, 0x44,
+0x93, 0x27, 0xb0, 0x06, 0x10, 0xe6, 0xfd, 0xc9, 0x07, 0xb5, 0xba, 0xa8, 0x4e, 0xa5, 0xfe, 0xaa,
+0xe1, 0xb9, 0x75, 0xd1, 0x98, 0xf0, 0xee, 0x13, 0x71, 0x37, 0x72, 0x55, 0x68, 0x68, 0x58, 0x6c,
+0x44, 0x60, 0x73, 0x46, 0x15, 0x24, 0xae, 0xfe, 0x61, 0xdb, 0x33, 0xbe, 0x90, 0xa9, 0x70, 0x9e,
+0x30, 0x9d, 0xea, 0xa5, 0xa3, 0xb8, 0x27, 0xd5, 0xe2, 0xf8, 0x5d, 0x20, 0x13, 0x46, 0xb6, 0x63,
+0xe0, 0x73, 0x10, 0x73, 0x96, 0x61, 0x65, 0x43, 0xfd, 0x1d, 0x02, 0xf7, 0x5f, 0xd3, 0x6b, 0xb6,
+0x96, 0xa2, 0xfc, 0x98, 0x00, 0x9a, 0x20, 0xa6, 0x67, 0xbd, 0x49, 0xde, 0x7c, 0x05, 0x23, 0x2e,
+0x37, 0x52, 0x22, 0x6c, 0x28, 0x77, 0x84, 0x71, 0xbc, 0x5c, 0xc5, 0x3c, 0x04, 0x17, 0x7a, 0xf0,
+0x75, 0xcd, 0x63, 0xb1, 0xf0, 0x9e, 0x5a, 0x97, 0xb2, 0x9b, 0x03, 0xac, 0x81, 0xc7, 0x34, 0xeb,
+0x8a, 0x12, 0x29, 0x38, 0x30, 0x57, 0x54, 0x6b, 0x9c, 0x71, 0x48, 0x69, 0xdd, 0x53, 0xe9, 0x34,
+0xae, 0x10, 0x96, 0xeb, 0xed, 0xc9, 0xc9, 0xaf, 0xcc, 0x9f, 0xf2, 0x9b, 0x86, 0xa4, 0xd5, 0xb8,
+0x73, 0xd6, 0x44, 0xf9, 0x7f, 0x1c, 0xfb, 0x3b, 0x8f, 0x54, 0x5e, 0x63, 0xa6, 0x66, 0x84, 0x5d,
+0x03, 0x49, 0xc3, 0x2b, 0x92, 0x09, 0xaa, 0xe6, 0xdf, 0xc7, 0x3f, 0xb1, 0xbc, 0xa5, 0x50, 0xa6,
+0x5b, 0xb2, 0x2b, 0xc8, 0x46, 0xe4, 0xb8, 0x02, 0x83, 0x1f, 0x53, 0x38, 0x17, 0x4b, 0x1c, 0x56,
+0xc6, 0x57, 0x07, 0x4f, 0x67, 0x3c, 0xdb, 0x21, 0xc4, 0x02, 0xaf, 0xe3, 0xb1, 0xc9, 0x93, 0xb8,
+0x81, 0xb2, 0x23, 0xb7, 0xbb, 0xc4, 0x6b, 0xd8, 0x58, 0xef, 0x40, 0x06, 0x60, 0x1b, 0x8f, 0x2d,
+0xc9, 0x3b, 0x77, 0x44, 0xb5, 0x45, 0x49, 0x3e, 0x4d, 0x2e, 0xac, 0x17, 0xcc, 0xfd, 0x54, 0xe5,
+0x59, 0xd2, 0xdd, 0xc7, 0x4f, 0xc6, 0x7b, 0xcc, 0x19, 0xd8, 0xd0, 0xe6, 0x76, 0xf6, 0x7e, 0x05,
+0x1e, 0x13, 0x25, 0x1f, 0x31, 0x29, 0xa9, 0x2f, 0xe7, 0x30, 0xc1, 0x2b, 0x35, 0x20, 0xda, 0x0f,
+0xd4, 0xfd, 0x90, 0xed, 0x3d, 0xe2, 0x2f, 0xdd, 0xdd, 0xdd, 0xbf, 0xe2, 0xda, 0xe9, 0xa6, 0xf1,
+0x36, 0xf9, 0xfe, 0xff, 0x4e, 0x06, 0xba, 0x0c, 0xec, 0x12, 0x06, 0x18, 0xa8, 0x1a, 0xa6, 0x19,
+0xbc, 0x14, 0xe4, 0x0c, 0xc4, 0x03, 0xba, 0xfb, 0x8e, 0xf6, 0x5a, 0xf4, 0xaa, 0xf4, 0xf6, 0xf5,
+0x20, 0xf7, 0xac, 0xf7, 0x7c, 0xf7, 0xfe, 0xf6, 0x2a, 0xf7, 0xca, 0xf8, 0x24, 0xfc, 0xf4, 0x00,
+0x3e, 0x06, 0x14, 0x0b, 0x98, 0x0e, 0x5e, 0x10, 0x72, 0x10, 0xa6, 0x0f, 0x46, 0x0e, 0x8e, 0x0c,
+0x1c, 0x0a, 0x62, 0x06, 0x32, 0x01, 0x7a, 0xfa, 0xa4, 0xf2, 0xc2, 0xea, 0x84, 0xe4, 0x7b, 0xe1,
+0x2f, 0xe3, 0xc6, 0xe9, 0x9e, 0xf4, 0xb8, 0x01, 0xc8, 0x0e, 0x90, 0x19, 0xfd, 0x20, 0x83, 0x24,
+0x59, 0x24, 0xf1, 0x20, 0x6a, 0x1a, 0x3a, 0x11, 0xf2, 0x05, 0xd6, 0xf9, 0xba, 0xee, 0xaa, 0xe6,
+0xe5, 0xe2, 0x04, 0xe4, 0x2e, 0xe9, 0xfa, 0xf0, 0x86, 0xf9, 0xfe, 0x00, 0x66, 0x06, 0x74, 0x09,
+0x60, 0x0a, 0xde, 0x09, 0x8e, 0x08, 0xe6, 0x06, 0x16, 0x05, 0x4c, 0x03, 0x76, 0x01, 0xb2, 0xff,
+0x20, 0xfe, 0x12, 0xfd, 0xa6, 0xfc, 0xd8, 0xfc, 0x8e, 0xfd, 0x9e, 0xfe, 0xc2, 0xff, 0xbe, 0x00,
+0x82, 0x01, 0xf6, 0x01, 0x38, 0x02, 0x26, 0x02, 0xbe, 0x01, 0x2c, 0x01, 0xdc, 0x00, 0x9a, 0x00,
+0x6c, 0x00, 0x26, 0x00, 0xfe, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xfa, 0xff, 0x1c, 0x00, 0x48, 0x00,
+0x80, 0x00, 0xb0, 0x00, 0xd2, 0x00, 0x04, 0x01, 0x1a, 0x01, 0x08, 0x01, 0xae, 0x00, 0x38, 0x00,
+0xc4, 0xff, 0x8e, 0xff, 0x6e, 0xff, 0x6c, 0xff, 0x82, 0xff, 0xb4, 0xff, 0xec, 0xff, 0x14, 0x00,
+0x20, 0x00, 0x2c, 0x00, 0x28, 0x00, 0x26, 0x00, 0x38, 0x00, 0x56, 0x00, 0x9a, 0x00, 0xb6, 0x00,
+0xa8, 0x00, 0x74, 0x00, 0x3a, 0x00, 0xf2, 0xff, 0xa4, 0xff, 0x34, 0xff, 0xce, 0xfe, 0x94, 0xfe,
+0x9a, 0xfe, 0xc8, 0xfe, 0x10, 0xff, 0x7a, 0xff, 0xcc, 0xff, 0xf6, 0xff, 0x1a, 0x00, 0x46, 0x00,
+0x6a, 0x00, 0x74, 0x00, 0x54, 0x00, 0x20, 0x00, 0xf2, 0xff, 0xc2, 0xff, 0x8a, 0xff, 0x46, 0xff,
+0x0c, 0xff, 0xe8, 0xfe, 0xea, 0xfe, 0x10, 0xff, 0x4e, 0xff, 0x96, 0xff, 0xca, 0xff, 0xf0, 0xff,
+0x0c, 0x00, 0x40, 0x00, 0x62, 0x00, 0x5c, 0x00, 0x0c, 0x00, 0xb2, 0xff, 0x64, 0xff, 0x46, 0xff,
+0x16, 0xff, 0xdc, 0xfe, 0x8e, 0xfe, 0x42, 0xfe, 0x2a, 0xfe, 0x56, 0xfe, 0xd0, 0xfe, 0x4a, 0xff,
+0xaa, 0xff, 0xca, 0xff, 0xe8, 0xff, 0x1a, 0x00, 0x78, 0x00, 0xae, 0x00, 0xa0, 0x00, 0x3a, 0x00,
+0xc6, 0xff, 0x48, 0xff, 0xf8, 0xfe, 0xd2, 0xfe, 0xc8, 0xfe, 0xb8, 0xfe, 0xa2, 0xfe, 0xa6, 0xfe,
+0xbe, 0xfe, 0x12, 0xff, 0x64, 0xff, 0xc8, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x40, 0x00, 0x14, 0x00,
+0xd0, 0xff, 0x76, 0xff, 0x18, 0xff, 0xd0, 0xfe, 0xa6, 0xfe, 0x8e, 0xfe, 0xa2, 0xfe, 0xca, 0xfe,
+0x06, 0xff, 0x46, 0xff, 0x74, 0xff, 0x8e, 0xff, 0x8a, 0xff, 0x8e, 0xff, 0x98, 0xff, 0xb6, 0xff,
+0xdc, 0xff, 0x06, 0x00, 0x12, 0x00, 0xfa, 0xff, 0xcc, 0xff, 0x8c, 0xff, 0x3c, 0xff, 0xf4, 0xfe,
+0xb2, 0xfe, 0x98, 0xfe, 0xa2, 0xfe, 0xbe, 0xfe, 0xfa, 0xfe, 0x1c, 0xff, 0x52, 0xff, 0x7c, 0xff,
+0xa2, 0xff, 0xa6, 0xff, 0xac, 0xff, 0xaa, 0xff, 0x9c, 0xff, 0x88, 0xff, 0x6e, 0xff, 0x54, 0xff,
+0x2a, 0xff, 0x0e, 0xff, 0xec, 0xfe, 0xee, 0xfe, 0xfe, 0xfe, 0x20, 0xff, 0x1e, 0xff, 0x22, 0xff,
+0x1e, 0xff, 0x40, 0xff, 0x6a, 0xff, 0x9e, 0xff, 0xbc, 0xff, 0xb6, 0xff, 0xa2, 0xff, 0x70, 0xff,
+0x56, 0xff, 0x4c, 0xff, 0x5a, 0xff, 0x4e, 0xff, 0x3c, 0xff, 0x26, 0xff, 0x32, 0xff, 0x46, 0xff,
+0x68, 0xff, 0x82, 0xff, 0x8c, 0xff, 0x8a, 0xff, 0x74, 0xff, 0x64, 0xff, 0x70, 0xff, 0x8a, 0xff,
+0xa6, 0xff, 0xae, 0xff, 0xa8, 0xff, 0x96, 0xff, 0x72, 0xff, 0x4c, 0xff, 0x22, 0xff, 0x1e, 0xff,
+0x36, 0xff, 0x58, 0xff, 0x78, 0xff, 0x80, 0xff, 0x8c, 0xff, 0x86, 0xff, 0x6a, 0xff, 0x4c, 0xff,
+0x4c, 0xff, 0x62, 0xff, 0x70, 0xff, 0x90, 0xff, 0x9c, 0xff, 0xa8, 0xff, 0x98, 0xff, 0x8a, 0xff,
+0x78, 0xff, 0x88, 0xff, 0x92, 0xff, 0x8a, 0xff, 0x66, 0xff, 0x3c, 0xff, 0x34, 0xff, 0x40, 0xff,
+0x62, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x4c, 0xff, 0x48, 0xff, 0x56, 0xff, 0x86, 0xff, 0xb2, 0xff,
+0xc8, 0xff, 0xbc, 0xff, 0xae, 0xff, 0x9c, 0xff, 0x9e, 0xff, 0x90, 0xff, 0x6e, 0xff, 0x4c, 0xff,
+0x34, 0xff, 0x28, 0xff, 0x22, 0xff, 0x30, 0xff, 0x3e, 0xff, 0x56, 0xff, 0x6c, 0xff, 0x94, 0xff,
+0xae, 0xff, 0xc6, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xb6, 0xff, 0xc0, 0xff, 0xae, 0xff, 0xae, 0xff,
+0x92, 0xff, 0x6e, 0xff, 0x5c, 0xff, 0x34, 0xff, 0x22, 0xff, 0x20, 0xff, 0x28, 0xff, 0x48, 0xff,
+0x88, 0xff, 0xde, 0xff, 0x20, 0x00, 0x5a, 0x00, 0x60, 0x00, 0x4a, 0x00, 0x20, 0x00, 0xea, 0xff,
+0xac, 0xff, 0x64, 0xff, 0x2a, 0xff, 0x04, 0xff, 0xea, 0xfe, 0xee, 0xfe, 0x22, 0xff, 0x3c, 0xff,
+0x72, 0xff, 0x96, 0xff, 0xc8, 0xff, 0xf2, 0xff, 0x16, 0x00, 0x22, 0x00, 0x32, 0x00, 0x38, 0x00,
+0x1a, 0x00, 0xec, 0xff, 0xa8, 0xff, 0x5e, 0xff, 0x28, 0xff, 0x0c, 0xff, 0x02, 0xff, 0x12, 0xff,
+0x18, 0xff, 0x38, 0xff, 0x58, 0xff, 0x92, 0xff, 0xca, 0xff, 0x14, 0x00, 0x46, 0x00, 0x5c, 0x00,
+0x40, 0x00, 0x2e, 0x00, 0x0c, 0x00, 0xd0, 0xff, 0xae, 0xff, 0x6a, 0xff, 0x28, 0xff, 0xdc, 0xfe,
+0xb4, 0xfe, 0xb8, 0xfe, 0xf6, 0xfe, 0x26, 0xff, 0x80, 0xff, 0xb6, 0xff, 0x04, 0x00, 0x50, 0x00,
+0x7c, 0x00, 0x9e, 0x00, 0x92, 0x00, 0x68, 0x00, 0x1e, 0x00, 0xdc, 0xff, 0x9e, 0xff, 0x68, 0xff,
+0x14, 0xff, 0xdc, 0xfe, 0xba, 0xfe, 0xcc, 0xfe, 0xf6, 0xfe, 0x34, 0xff, 0x82, 0xff, 0xc4, 0xff,
+0x0e, 0x00, 0x4c, 0x00, 0x6e, 0x00, 0x7a, 0x00, 0x60, 0x00, 0x32, 0x00, 0xf2, 0xff, 0xb6, 0xff,
+0x78, 0xff, 0x50, 0xff, 0x20, 0xff, 0x00, 0xff, 0xf4, 0xfe, 0x04, 0xff, 0x2c, 0xff, 0x60, 0xff,
+0xa4, 0xff, 0xd8, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x6c, 0x00, 0x7c, 0x00, 0x66, 0x00, 0x42, 0x00,
+0x08, 0x00, 0xbe, 0xff, 0x86, 0xff, 0x50, 0xff, 0x24, 0xff, 0xfc, 0xfe, 0x08, 0xff, 0x20, 0xff,
+0x4c, 0xff, 0x78, 0xff, 0xac, 0xff, 0xf0, 0xff, 0x14, 0x00, 0x32, 0x00, 0x4e, 0x00, 0x50, 0x00,
+0x34, 0x00, 0x20, 0x00, 0xf4, 0xff, 0xb4, 0xff, 0x86, 0xff, 0x54, 0xff, 0x3e, 0xff, 0x2c, 0xff,
+0x24, 0xff, 0x3c, 0xff, 0x56, 0xff, 0x8a, 0xff, 0xb6, 0xff, 0xe4, 0xff, 0x10, 0x00, 0x1a, 0x00,
+0x32, 0x00, 0x2c, 0x00, 0x1c, 0x00, 0x04, 0x00, 0xde, 0xff, 0xc0, 0xff, 0xa0, 0xff, 0x7e, 0xff,
+0x74, 0xff, 0x76, 0xff, 0x76, 0xff, 0x8a, 0xff, 0x96, 0xff, 0xb2, 0xff, 0xe2, 0xff, 0xee, 0xff,
+0x02, 0x00, 0x04, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0xea, 0xff, 0xda, 0xff, 0xc2, 0xff,
+0xb8, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xa2, 0xff, 0x96, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0xc0, 0xff,
+0xcc, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf2, 0xff, 0x00, 0x00, 0xf0, 0xff, 0xf8, 0xff,
+0xec, 0xff, 0xe6, 0xff, 0xf2, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd8, 0xff,
+0xce, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xdc, 0xff, 0xe8, 0xff, 0xea, 0xff,
+0xf8, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x0a, 0x00, 0x0e, 0x00,
+0xfc, 0xff, 0xec, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xac, 0xff, 0xa8, 0xff, 0xba, 0xff,
+0xbe, 0xff, 0xd0, 0xff, 0xe0, 0xff, 0xf8, 0xff, 0x14, 0x00, 0x18, 0x00, 0x38, 0x00, 0x36, 0x00,
+0x2c, 0x00, 0x1c, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xde, 0xff, 0xca, 0xff, 0xa2, 0xff, 0x9c, 0xff,
+0xa2, 0xff, 0xac, 0xff, 0xbe, 0xff, 0xca, 0xff, 0xe6, 0xff, 0x08, 0x00, 0x2c, 0x00, 0x4c, 0x00,
+0x54, 0x00, 0x58, 0x00, 0x50, 0x00, 0x46, 0x00, 0x22, 0x00, 0xfa, 0xff, 0xda, 0xff, 0xb8, 0xff,
+0x9e, 0xff, 0x80, 0xff, 0x7a, 0xff, 0x86, 0xff, 0x9a, 0xff, 0xae, 0xff, 0xe6, 0xff, 0x08, 0x00,
+0x32, 0x00, 0x4e, 0x00, 0x66, 0x00, 0x6a, 0x00, 0x62, 0x00, 0x42, 0x00, 0x28, 0x00, 0xf4, 0xff,
+0xce, 0xff, 0x9a, 0xff, 0x6c, 0xff, 0x5e, 0xff, 0x54, 0xff, 0x66, 0xff, 0x88, 0xff, 0xb0, 0xff,
+0xda, 0xff, 0x14, 0x00, 0x4e, 0x00, 0x64, 0x00, 0x92, 0x00, 0x9c, 0x00, 0x82, 0x00, 0x60, 0x00,
+0x2a, 0x00, 0x02, 0x00, 0xc6, 0xff, 0x90, 0xff, 0x66, 0xff, 0x50, 0xff, 0x4e, 0xff, 0x64, 0xff,
+0x8a, 0xff, 0xb4, 0xff, 0xf4, 0xff, 0x2e, 0x00, 0x6c, 0x00, 0x9e, 0x00, 0xae, 0x00, 0xa8, 0x00,
+0x8c, 0x00, 0x56, 0x00, 0x22, 0x00, 0xe8, 0xff, 0xa8, 0xff, 0x72, 0xff, 0x48, 0xff, 0x3a, 0xff,
+0x38, 0xff, 0x5a, 0xff, 0x88, 0xff, 0xd0, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x88, 0x00, 0xac, 0x00,
+0xb8, 0x00, 0xae, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x16, 0x00, 0xea, 0xff, 0xa0, 0xff, 0x70, 0xff,
+0x44, 0xff, 0x40, 0xff, 0x54, 0xff, 0x84, 0xff, 0xb8, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x6c, 0x00,
+0xa2, 0x00, 0xc0, 0x00, 0xc8, 0x00, 0xb8, 0x00, 0x8e, 0x00, 0x48, 0x00, 0x10, 0x00, 0xda, 0xff,
+0xa4, 0xff, 0x74, 0xff, 0x5e, 0xff, 0x52, 0xff, 0x64, 0xff, 0x8e, 0xff, 0xca, 0xff, 0x06, 0x00,
+0x36, 0x00, 0x7a, 0x00, 0xa0, 0x00, 0xb8, 0x00, 0xbe, 0x00, 0x9c, 0x00, 0x6c, 0x00, 0x3a, 0x00,
+0x00, 0x00, 0xcc, 0xff, 0xaa, 0xff, 0x76, 0xff, 0x6c, 0xff, 0x6a, 0xff, 0x72, 0xff, 0xa2, 0xff,
+0xd4, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x7a, 0x00, 0x9c, 0x00, 0xae, 0x00, 0xa6, 0x00, 0x88, 0x00,
+0x6c, 0x00, 0x36, 0x00, 0x06, 0x00, 0xde, 0xff, 0xa6, 0xff, 0x96, 0xff, 0x86, 0xff, 0x7c, 0xff,
+0x98, 0xff, 0xba, 0xff, 0xf2, 0xff, 0x18, 0x00, 0x44, 0x00, 0x64, 0x00, 0x80, 0x00, 0x8a, 0x00,
+0x84, 0x00, 0x72, 0x00, 0x58, 0x00, 0x20, 0x00, 0xfc, 0xff, 0xd2, 0xff, 0xb6, 0xff, 0xa0, 0xff,
+0x9c, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0xc2, 0xff, 0xe6, 0xff, 0x0e, 0x00, 0x2a, 0x00, 0x46, 0x00,
+0x5a, 0x00, 0x5c, 0x00, 0x50, 0x00, 0x48, 0x00, 0x36, 0x00, 0x12, 0x00, 0x02, 0x00, 0xea, 0xff,
+0xd0, 0xff, 0xce, 0xff, 0xc2, 0xff, 0xbc, 0xff, 0xca, 0xff, 0xd8, 0xff, 0x00, 0x00, 0x0e, 0x00,
+0x1c, 0x00, 0x36, 0x00, 0x30, 0x00, 0x36, 0x00, 0x3c, 0x00, 0x38, 0x00, 0x28, 0x00, 0x10, 0x00,
+0x16, 0x00, 0x06, 0x00, 0xfc, 0xff, 0xf6, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xea, 0xff,
+0xf4, 0xff, 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x26, 0x00,
+0x16, 0x00, 0x1a, 0x00, 0x20, 0x00, 0x10, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0c, 0x00, 0x04, 0x00,
+0xfc, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0xde, 0xff, 0xea, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xfe, 0xff,
+0x00, 0x00, 0x0e, 0x00, 0x20, 0x00, 0x30, 0x00, 0x46, 0x00, 0x50, 0x00, 0x48, 0x00, 0x40, 0x00,
+0x38, 0x00, 0x22, 0x00, 0x1c, 0x00, 0x04, 0x00, 0xee, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xd4, 0xff,
+0xd8, 0xff, 0xd6, 0xff, 0xee, 0xff, 0x18, 0x00, 0x2c, 0x00, 0x58, 0x00, 0x6c, 0x00, 0x70, 0x00,
+0x6e, 0x00, 0x5e, 0x00, 0x4e, 0x00, 0x3a, 0x00, 0x14, 0x00, 0xf6, 0xff, 0xcc, 0xff, 0xb4, 0xff,
+0xa8, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xe4, 0xff, 0x08, 0x00, 0x32, 0x00, 0x62, 0x00,
+0x80, 0x00, 0x8e, 0x00, 0x90, 0x00, 0x7c, 0x00, 0x64, 0x00, 0x40, 0x00, 0x12, 0x00, 0xde, 0xff,
+0xac, 0xff, 0x9a, 0xff, 0x8c, 0xff, 0x8e, 0xff, 0xb0, 0xff, 0xca, 0xff, 0xf8, 0xff, 0x26, 0x00,
+0x4a, 0x00, 0x84, 0x00, 0x9e, 0x00, 0xb2, 0x00, 0xaa, 0x00, 0x8a, 0x00, 0x6a, 0x00, 0x3a, 0x00,
+0xfe, 0xff, 0xd6, 0xff, 0x9a, 0xff, 0x7c, 0xff, 0x64, 0xff, 0x66, 0xff, 0x7a, 0xff, 0xb2, 0xff,
+0xec, 0xff, 0x18, 0x00, 0x5a, 0x00, 0x84, 0x00, 0xae, 0x00, 0xbc, 0x00, 0xa6, 0x00, 0x90, 0x00,
+0x64, 0x00, 0x1e, 0x00, 0xee, 0xff, 0xb0, 0xff, 0x80, 0xff, 0x56, 0xff, 0x40, 0xff, 0x54, 0xff,
+0x74, 0xff, 0xb0, 0xff, 0xf2, 0xff, 0x2e, 0x00, 0x6e, 0x00, 0x9c, 0x00, 0xc2, 0x00, 0xd8, 0x00,
+0xc0, 0x00, 0x9c, 0x00, 0x64, 0x00, 0x1e, 0x00, 0xe4, 0xff, 0xa4, 0xff, 0x70, 0xff, 0x4c, 0xff,
+0x44, 0xff, 0x62, 0xff, 0x86, 0xff, 0xc2, 0xff, 0x0c, 0x00, 0x40, 0x00, 0x88, 0x00, 0xbc, 0x00,
+0xda, 0x00, 0xb8, 0x00, 0x4a, 0x00, 0x08, 0x00, 0xc0, 0xff, 0x80, 0xff, 0x5a, 0xff, 0x3a, 0xff,
+0x4c, 0xff, 0x64, 0xff, 0x98, 0xff, 0xe4, 0xff, 0x16, 0x00, 0x56, 0x00, 0x92, 0x00, 0xb8, 0x00,
+0xce, 0x00, 0xba, 0x00, 0xa8, 0x00, 0x7c, 0x00, 0x34, 0x00, 0x06, 0x00, 0xc4, 0xff, 0x86, 0xff,
+0x62, 0xff, 0x50, 0xff, 0x58, 0xff, 0x90, 0xff, 0xba, 0xff, 0xfa, 0xff, 0x40, 0x00, 0x62, 0x00,
+0xa4, 0x00, 0xc6, 0x00, 0xc2, 0x00, 0xb8, 0x00, 0x96, 0x00, 0x5e, 0x00, 0x22, 0x00, 0xe6, 0xff,
+0xb8, 0xff, 0x86, 0xff, 0x6a, 0xff, 0x70, 0xff, 0x80, 0xff, 0xa0, 0xff, 0xd4, 0xff, 0x08, 0x00,
+0x42, 0x00, 0x72, 0x00, 0x8e, 0x00, 0xa6, 0x00, 0x9e, 0x00, 0x80, 0x00, 0x70, 0x00, 0x34, 0x00,
+0x02, 0x00, 0xd6, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0x88, 0xff, 0x8e, 0xff, 0xac, 0xff, 0xb8, 0xff,
+0xe4, 0xff, 0x16, 0x00, 0x3c, 0x00, 0x68, 0x00, 0x76, 0x00, 0x7c, 0x00, 0x78, 0x00, 0x6c, 0x00,
+0x56, 0x00, 0x2e, 0x00, 0x0e, 0x00, 0xe2, 0xff, 0xc0, 0xff, 0xbc, 0xff, 0xb8, 0xff, 0xc0, 0xff,
+0xc6, 0xff, 0xd8, 0xff, 0x04, 0x00, 0x26, 0x00, 0x34, 0x00, 0x4c, 0x00, 0x5a, 0x00, 0x50, 0x00,
+0x50, 0x00, 0x58, 0x00, 0x30, 0x00, 0x18, 0x00, 0x02, 0x00, 0xea, 0xff, 0xde, 0xff, 0xd2, 0xff,
+0xd6, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xe0, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x14, 0x00, 0x28, 0x00,
+0x28, 0x00, 0x2c, 0x00, 0x26, 0x00, 0x24, 0x00, 0x1e, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x00,
+0x0a, 0x00, 0xfa, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0x04, 0x00, 0xfa, 0xff, 0xf0, 0xff,
+0xfe, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x1c, 0x00,
+0x2c, 0x00, 0x34, 0x00, 0x2e, 0x00, 0x20, 0x00, 0x24, 0x00, 0x0e, 0x00, 0x02, 0x00, 0xfa, 0xff,
+0xee, 0xff, 0xe6, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xda, 0xff, 0xe2, 0xff, 0xec, 0xff, 0x04, 0x00,
+0x0c, 0x00, 0x22, 0x00, 0x3c, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x2c, 0x00,
+0x10, 0x00, 0xf8, 0xff, 0xdc, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xb2, 0xff, 0xc0, 0xff,
+0xd8, 0xff, 0xf6, 0xff, 0x16, 0x00, 0x42, 0x00, 0x5e, 0x00, 0x70, 0x00, 0x7a, 0x00, 0x76, 0x00,
+0x5e, 0x00, 0x48, 0x00, 0x22, 0x00, 0xfa, 0xff, 0xd8, 0xff, 0xb0, 0xff, 0x9e, 0xff, 0x94, 0xff,
+0x94, 0xff, 0xac, 0xff, 0xbe, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x54, 0x00, 0x7c, 0x00, 0x92, 0x00,
+0x9c, 0x00, 0x8a, 0x00, 0x72, 0x00, 0x4a, 0x00, 0x16, 0x00, 0xe2, 0xff, 0xb2, 0xff, 0x92, 0xff,
+0x70, 0xff, 0x6a, 0xff, 0x76, 0xff, 0xa4, 0xff, 0xca, 0xff, 0xf6, 0xff, 0x34, 0x00, 0x6e, 0x00,
+0x94, 0x00, 0xb2, 0x00, 0xb4, 0x00, 0x9e, 0x00, 0x6e, 0x00, 0x46, 0x00, 0x1a, 0x00, 0xe2, 0xff,
+0xa8, 0xff, 0x70, 0xff, 0x62, 0xff, 0x58, 0xff, 0x70, 0xff, 0xa2, 0xff, 0xdc, 0xff, 0x08, 0x00,
+0x48, 0x00, 0x82, 0x00, 0xb0, 0x00, 0xc6, 0x00, 0xbc, 0x00, 0xa2, 0x00, 0x6e, 0x00, 0x34, 0x00,
+0x02, 0x00, 0xb8, 0xff, 0x82, 0xff, 0x54, 0xff, 0x4c, 0xff, 0x3c, 0xff, 0x64, 0xff, 0x9c, 0xff,
+0xd6, 0xff, 0x16, 0x00, 0x4c, 0x00, 0x94, 0x00, 0xae, 0x00, 0xc6, 0x00, 0xac, 0x00, 0x90, 0x00,
+0x58, 0x00, 0x16, 0x00, 0xd8, 0xff, 0xa2, 0xff, 0x6e, 0xff, 0x46, 0xff, 0x3e, 0xff, 0x4a, 0xff,
+0x6c, 0xff, 0xac, 0xff, 0xf6, 0xff, 0x24, 0x00, 0x64, 0x00, 0x9a, 0x00, 0xbc, 0x00, 0xc4, 0x00,
+0xa2, 0x00, 0x7e, 0x00, 0x40, 0x00, 0x08, 0x00, 0xca, 0xff, 0x8a, 0xff, 0x5a, 0xff, 0x3c, 0xff,
+0x36, 0xff, 0x3c, 0xff, 0x78, 0xff, 0xc6, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x5e, 0x00, 0x90, 0x00,
+0xae, 0x00, 0xac, 0x00, 0x90, 0x00, 0x60, 0x00, 0x34, 0x00, 0xe6, 0xff, 0xaa, 0xff, 0x84, 0xff,
+0x52, 0xff, 0x3e, 0xff, 0x3c, 0xff, 0x5a, 0xff, 0x8a, 0xff, 0xc0, 0xff, 0x08, 0x00, 0x38, 0x00,
+0x6c, 0x00, 0x88, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0x78, 0x00, 0x68, 0x00, 0x26, 0x00, 0xea, 0xff,
+0xb2, 0xff, 0x92, 0xff, 0x74, 0xff, 0x66, 0xff, 0x66, 0xff, 0x7a, 0xff, 0xa6, 0xff, 0xda, 0xff,
+0x14, 0x00, 0x3c, 0x00, 0x60, 0x00, 0x74, 0x00, 0x8c, 0x00, 0x78, 0x00, 0x68, 0x00, 0x3a, 0x00,
+0x14, 0x00, 0xec, 0xff, 0xb0, 0xff, 0x9c, 0xff, 0x8a, 0xff, 0x7c, 0xff, 0x82, 0xff, 0x9e, 0xff,
+0xc2, 0xff, 0xf6, 0xff, 0x12, 0x00, 0x26, 0x00, 0x48, 0x00, 0x50, 0x00, 0x50, 0x00, 0x4e, 0x00,
+0x40, 0x00, 0x18, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xc8, 0xff, 0xba, 0xff, 0xb8, 0xff, 0xb6, 0xff,
+0xbe, 0xff, 0xe2, 0xff, 0xec, 0xff, 0x06, 0x00, 0x12, 0x00, 0x22, 0x00, 0x30, 0x00, 0x2c, 0x00,
+0x2a, 0x00, 0x20, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x04, 0x00, 0xf4, 0xff, 0xe6, 0xff, 0xe0, 0xff,
+0xec, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xf8, 0xff,
+0xf4, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0x04, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0x0e, 0x00,
+0x04, 0x00, 0xf8, 0xff, 0x06, 0x00, 0x0a, 0x00, 0xf2, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xe4, 0xff,
+0xda, 0xff, 0xce, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xf6, 0xff, 0x00, 0x00,
+0x10, 0x00, 0x26, 0x00, 0x3a, 0x00, 0x34, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x20, 0x00, 0x0c, 0x00,
+0xfe, 0xff, 0xdc, 0xff, 0xb4, 0xff, 0xb0, 0xff, 0xaa, 0xff, 0xb8, 0xff, 0xb6, 0xff, 0xc4, 0xff,
+0xf0, 0xff, 0xfa, 0xff, 0x20, 0x00, 0x34, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x44, 0x00,
+0x2c, 0x00, 0x02, 0x00, 0xe0, 0xff, 0xbc, 0xff, 0x96, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x94, 0xff,
+0xa0, 0xff, 0xc6, 0xff, 0xec, 0xff, 0x0e, 0x00, 0x3c, 0x00, 0x62, 0x00, 0x78, 0x00, 0x72, 0x00,
+0x68, 0x00, 0x56, 0x00, 0x2a, 0x00, 0x04, 0x00, 0xd4, 0xff, 0xa8, 0xff, 0x8e, 0xff, 0x76, 0xff,
+0x76, 0xff, 0x8a, 0xff, 0xa4, 0xff, 0xd2, 0xff, 0xfa, 0xff, 0x24, 0x00, 0x5e, 0x00, 0x7e, 0x00,
+0x92, 0x00, 0x88, 0x00, 0x70, 0x00, 0x50, 0x00, 0x22, 0x00, 0xf2, 0xff, 0xb6, 0xff, 0x84, 0xff,
+0x64, 0xff, 0x50, 0xff, 0x4a, 0xff, 0x6e, 0xff, 0xa0, 0xff, 0xcc, 0xff, 0x02, 0x00, 0x3a, 0x00,
+0x66, 0x00, 0x92, 0x00, 0xa4, 0x00, 0x9e, 0x00, 0x84, 0x00, 0x48, 0x00, 0x08, 0x00, 0xd8, 0xff,
+0x9e, 0xff, 0x68, 0xff, 0x4a, 0xff, 0x36, 0xff, 0x42, 0xff, 0x72, 0xff, 0xa6, 0xff, 0xea, 0xff,
+0x12, 0x00, 0x5a, 0x00, 0x8c, 0x00, 0xac, 0x00, 0xc2, 0x00, 0xae, 0x00, 0x7a, 0x00, 0x36, 0x00,
+0xfa, 0xff, 0xc2, 0xff, 0x82, 0xff, 0x54, 0xff, 0x3c, 0xff, 0x2a, 0xff, 0x42, 0xff, 0x70, 0xff,
+0xb4, 0xff, 0xfa, 0xff, 0x22, 0x00, 0x62, 0x00, 0x98, 0x00, 0xb0, 0x00, 0xac, 0x00, 0x8e, 0x00,
+0x5e, 0x00, 0x20, 0x00, 0xe4, 0xff, 0xa8, 0xff, 0x64, 0xff, 0x38, 0xff, 0x32, 0xff, 0x2c, 0xff,
+0x52, 0xff, 0x7e, 0xff, 0xc8, 0xff, 0x04, 0x00, 0x30, 0x00, 0x76, 0x00, 0x9c, 0x00, 0xb0, 0x00,
+0xac, 0x00, 0x88, 0x00, 0x4e, 0x00, 0x16, 0x00, 0xdc, 0xff, 0xae, 0xff, 0x70, 0xff, 0x4a, 0xff,
+0x44, 0xff, 0x4e, 0xff, 0x6e, 0xff, 0x9e, 0xff, 0xda, 0xff, 0x14, 0x00, 0x44, 0x00, 0x7a, 0x00,
+0x9c, 0x00, 0x9e, 0x00, 0x90, 0x00, 0x6a, 0x00, 0x46, 0x00, 0x0a, 0x00, 0xce, 0xff, 0x98, 0xff,
+0x70, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x60, 0xff, 0x7c, 0xff, 0xa6, 0xff, 0xdc, 0xff, 0x14, 0x00,
+0x44, 0x00, 0x6a, 0x00, 0x78, 0x00, 0x7a, 0x00, 0x62, 0x00, 0x56, 0x00, 0x28, 0x00, 0xf8, 0xff,
+0xda, 0xff, 0x9a, 0xff, 0x90, 0xff, 0x80, 0xff, 0x80, 0xff, 0x88, 0xff, 0x9a, 0xff, 0xc6, 0xff,
+0xee, 0xff, 0x1a, 0x00, 0x3a, 0x00, 0x54, 0x00, 0x64, 0x00, 0x5a, 0x00, 0x54, 0x00, 0x3a, 0x00,
+0x1c, 0x00, 0x00, 0x00, 0xda, 0xff, 0xbc, 0xff, 0xaa, 0xff, 0xa4, 0xff, 0x9e, 0xff, 0xa2, 0xff,
+0xb8, 0xff, 0xda, 0xff, 0xf6, 0xff, 0x0a, 0x00, 0x20, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2c, 0x00,
+0x32, 0x00, 0x12, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xe2, 0xff, 0xd0, 0xff, 0xbe, 0xff, 0xc4, 0xff,
+0xc6, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x14, 0x00, 0x14, 0x00,
+0x0c, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x06, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xee, 0xff,
+0xec, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xea, 0xff, 0xf2, 0xff, 0xf0, 0xff,
+0xf0, 0xff, 0xee, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xfa, 0xff, 0x04, 0x00,
+0x02, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xf8, 0xff, 0xe2, 0xff,
+0xd4, 0xff, 0xc4, 0xff, 0xb4, 0xff, 0xae, 0xff, 0xbc, 0xff, 0xc2, 0xff, 0xce, 0xff, 0xea, 0xff,
+0xf6, 0xff, 0x12, 0x00, 0x28, 0x00, 0x3c, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x0e, 0x00,
+0xfa, 0xff, 0xe8, 0xff, 0xbc, 0xff, 0xa6, 0xff, 0x9e, 0xff, 0x9a, 0xff, 0xa6, 0xff, 0xa2, 0xff,
+0xcc, 0xff, 0xea, 0xff, 0x10, 0x00, 0x3a, 0x00, 0x4c, 0x00, 0x5a, 0x00, 0x54, 0x00, 0x4e, 0x00,
+0x3c, 0x00, 0x20, 0x00, 0xf8, 0xff, 0xc8, 0xff, 0xa2, 0xff, 0x84, 0xff, 0x6e, 0xff, 0x76, 0xff,
+0x8a, 0xff, 0x9a, 0xff, 0xcc, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x4c, 0x00, 0x60, 0x00, 0x78, 0x00,
+0x6c, 0x00, 0x58, 0x00, 0x3a, 0x00, 0x08, 0x00, 0xdc, 0xff, 0xac, 0xff, 0x7a, 0xff, 0x62, 0xff,
+0x5a, 0xff, 0x62, 0xff, 0x88, 0xff, 0xac, 0xff, 0xe0, 0xff, 0x18, 0x00, 0x4c, 0x00, 0x7c, 0x00,
+0x94, 0x00, 0x9e, 0x00, 0x8a, 0x00, 0x64, 0x00, 0x2c, 0x00, 0x08, 0x00, 0xd2, 0xff, 0x8e, 0xff,
+0x60, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x52, 0xff, 0x7e, 0xff, 0xb8, 0xff, 0xf2, 0xff, 0x28, 0x00,
+0x5e, 0x00, 0x90, 0x00, 0xac, 0x00, 0xb0, 0x00, 0x94, 0x00, 0x6a, 0x00, 0x24, 0x00, 0xee, 0xff,
+0xb6, 0xff, 0x70, 0xff, 0x44, 0xff, 0x28, 0xff, 0x28, 0xff, 0x56, 0xff, 0x78, 0xff, 0xc4, 0xff,
+0x06, 0x00, 0x32, 0x00, 0x78, 0x00, 0xa6, 0x00, 0xc0, 0x00, 0xb0, 0x00, 0x94, 0x00, 0x62, 0x00,
+0x18, 0x00, 0xee, 0xff, 0xa2, 0xff, 0x5e, 0xff, 0x36, 0xff, 0x22, 0xff, 0x3e, 0xff, 0x5a, 0xff,
+0x92, 0xff, 0xd6, 0xff, 0x02, 0x00, 0x44, 0x00, 0x80, 0x00, 0xa6, 0x00, 0xb4, 0x00, 0xa2, 0x00,
+0x80, 0x00, 0x48, 0x00, 0x02, 0x00, 0xca, 0xff, 0x94, 0xff, 0x58, 0xff, 0x36, 0xff, 0x30, 0xff,
+0x34, 0xff, 0x5a, 0xff, 0x98, 0xff, 0xd0, 0xff, 0x14, 0x00, 0x42, 0x00, 0x70, 0x00, 0x92, 0x00,
+0x94, 0x00, 0x92, 0x00, 0x72, 0x00, 0x38, 0x00, 0xfa, 0xff, 0xba, 0xff, 0x82, 0xff, 0x56, 0xff,
+0x40, 0xff, 0x40, 0xff, 0x4e, 0xff, 0x7a, 0xff, 0xb2, 0xff, 0xe2, 0xff, 0x28, 0x00, 0x54, 0x00,
+0x76, 0x00, 0x96, 0x00, 0x96, 0x00, 0x7c, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xe8, 0xff, 0xb8, 0xff,
+0x8e, 0xff, 0x6a, 0xff, 0x54, 0xff, 0x52, 0xff, 0x68, 0xff, 0x94, 0xff, 0xbe, 0xff, 0xee, 0xff,
+0x26, 0x00, 0x46, 0x00, 0x56, 0x00, 0x70, 0x00, 0x66, 0x00, 0x60, 0x00, 0x3a, 0x00, 0x0a, 0x00,
+0xe8, 0xff, 0xaa, 0xff, 0x94, 0xff, 0x86, 0xff, 0x82, 0xff, 0x7c, 0xff, 0x88, 0xff, 0xa6, 0xff,
+0xd0, 0xff, 0xf8, 0xff, 0x14, 0x00, 0x30, 0x00, 0x3e, 0x00, 0x42, 0x00, 0x42, 0x00, 0x48, 0x00,
+0x2a, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xde, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xae, 0xff,
+0xca, 0xff, 0xd0, 0xff, 0xda, 0xff, 0xfe, 0xff, 0x08, 0x00, 0x16, 0x00, 0x1e, 0x00, 0x20, 0x00,
+0x20, 0x00, 0x1e, 0x00, 0x10, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xea, 0xff, 0xde, 0xff, 0xe0, 0xff,
+0xde, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xee, 0xff, 0xf0, 0xff,
+0xf4, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf8, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xd8, 0xff, 0xd4, 0xff,
+0xcc, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0x0a, 0x00,
+0x22, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x12, 0x00, 0x22, 0x00, 0x08, 0x00, 0xea, 0xff, 0xd8, 0xff,
+0xc0, 0xff, 0xae, 0xff, 0x92, 0xff, 0xa2, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xbe, 0xff, 0xe2, 0xff,
+0xf8, 0xff, 0x14, 0x00, 0x38, 0x00, 0x38, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x26, 0x00, 0x16, 0x00,
+0xe4, 0xff, 0xc0, 0xff, 0xa2, 0xff, 0x8a, 0xff, 0x72, 0xff, 0x70, 0xff, 0x7e, 0xff, 0x9e, 0xff,
+0xb8, 0xff, 0xe8, 0xff, 0x0a, 0x00, 0x38, 0x00, 0x64, 0x00, 0x6e, 0x00, 0x7e, 0x00, 0x60, 0x00,
+0x44, 0x00, 0x18, 0x00, 0xee, 0xff, 0xbe, 0xff, 0x8a, 0xff, 0x6e, 0xff, 0x54, 0xff, 0x58, 0xff,
+0x6e, 0xff, 0x8e, 0xff, 0xb4, 0xff, 0xea, 0xff, 0x28, 0x00, 0x58, 0x00, 0x7c, 0x00, 0x90, 0x00,
+0x8a, 0x00, 0x6e, 0x00, 0x42, 0x00, 0x14, 0x00, 0xd8, 0xff, 0xa0, 0xff, 0x6a, 0xff, 0x48, 0xff,
+0x40, 0xff, 0x42, 0xff, 0x5a, 0xff, 0x8c, 0xff, 0xc8, 0xff, 0x0c, 0x00, 0x46, 0x00, 0x80, 0x00,
+0xa4, 0x00, 0xb2, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x50, 0x00, 0x1c, 0x00, 0xd0, 0xff, 0x9a, 0xff,
+0x66, 0xff, 0x42, 0xff, 0x2e, 0xff, 0x38, 0xff, 0x70, 0xff, 0x9c, 0xff, 0xea, 0xff, 0x1c, 0x00,
+0x5c, 0x00, 0x9e, 0x00, 0xba, 0x00, 0xce, 0x00, 0xb8, 0x00, 0x86, 0x00, 0x44, 0x00, 0x00, 0x00,
+0xd2, 0xff, 0x8e, 0xff, 0x50, 0xff, 0x2c, 0xff, 0x14, 0xff, 0x2c, 0xff, 0x62, 0xff, 0xaa, 0xff,
+0xf4, 0xff, 0x24, 0x00, 0x66, 0x00, 0x96, 0x00, 0xb8, 0x00, 0xc2, 0x00, 0xa4, 0x00, 0x6c, 0x00,
+0x2c, 0x00, 0xe6, 0xff, 0xba, 0xff, 0x7a, 0xff, 0x4e, 0xff, 0x2e, 0xff, 0x28, 0xff, 0x42, 0xff,
+0x7a, 0xff, 0xc6, 0xff, 0x02, 0x00, 0x38, 0x00, 0x7c, 0x00, 0xaa, 0x00, 0xba, 0x00, 0xb6, 0x00,
+0x98, 0x00, 0x62, 0x00, 0x20, 0x00, 0xdc, 0xff, 0xa2, 0xff, 0x78, 0xff, 0x3e, 0xff, 0x34, 0xff,
+0x3a, 0xff, 0x4e, 0xff, 0x88, 0xff, 0xcc, 0xff, 0x0e, 0x00, 0x3a, 0x00, 0x70, 0x00, 0x8e, 0x00,
+0xa0, 0x00, 0x98, 0x00, 0x76, 0x00, 0x46, 0x00, 0x02, 0x00, 0xc2, 0xff, 0x88, 0xff, 0x6c, 0xff,
+0x46, 0xff, 0x38, 0xff, 0x4a, 0xff, 0x64, 0xff, 0x96, 0xff, 0xce, 0xff, 0x00, 0x00, 0x3a, 0x00,
+0x5a, 0x00, 0x72, 0x00, 0x72, 0x00, 0x72, 0x00, 0x5c, 0x00, 0x3a, 0x00, 0x04, 0x00, 0xd2, 0xff,
+0x96, 0xff, 0x80, 0xff, 0x6e, 0xff, 0x66, 0xff, 0x78, 0xff, 0x84, 0xff, 0xb8, 0xff, 0xe4, 0xff,
+0x0a, 0x00, 0x38, 0x00, 0x44, 0x00, 0x4c, 0x00, 0x54, 0x00, 0x4e, 0x00, 0x3a, 0x00, 0x04, 0x00,
+0xf2, 0xff, 0xce, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0x8e, 0xff, 0x8c, 0xff, 0x8e, 0xff, 0xb0, 0xff,
+0xd0, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x12, 0x00, 0x26, 0x00, 0x26, 0x00, 0x22, 0x00, 0x1e, 0x00,
+0x12, 0x00, 0xfc, 0xff, 0xec, 0xff, 0xdc, 0xff, 0xce, 0xff, 0xc8, 0xff, 0xd0, 0xff, 0xc0, 0xff,
+0xcc, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xfe, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xfa, 0xff,
+0xfc, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xde, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xce, 0xff,
+0xd2, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xe4, 0xff, 0xee, 0xff, 0xfa, 0xff, 0x04, 0x00, 0x06, 0x00,
+0x1a, 0x00, 0x14, 0x00, 0x16, 0x00, 0x12, 0x00, 0x06, 0x00, 0xf6, 0xff, 0xe4, 0xff, 0xc4, 0xff,
+0xba, 0xff, 0xa6, 0xff, 0xb2, 0xff, 0xb6, 0xff, 0xbc, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0x0c, 0x00,
+0x12, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x40, 0x00, 0x34, 0x00, 0x36, 0x00, 0x1e, 0x00, 0x00, 0x00,
+0xdc, 0xff, 0xb8, 0xff, 0xa4, 0xff, 0x90, 0xff, 0x92, 0xff, 0x98, 0xff, 0x9c, 0xff, 0xc2, 0xff,
+0xf0, 0xff, 0x10, 0x00, 0x34, 0x00, 0x54, 0x00, 0x58, 0x00, 0x5a, 0x00, 0x4e, 0x00, 0x36, 0x00,
+0x16, 0x00, 0xf2, 0xff, 0xc8, 0xff, 0x96, 0xff, 0x7a, 0xff, 0x68, 0xff, 0x60, 0xff, 0x7c, 0xff,
+0x92, 0xff, 0xc0, 0xff, 0xee, 0xff, 0x18, 0x00, 0x4a, 0x00, 0x70, 0x00, 0x8c, 0x00, 0x86, 0x00,
+0x6a, 0x00, 0x3e, 0x00, 0x14, 0x00, 0xe6, 0xff, 0xac, 0xff, 0x80, 0xff, 0x54, 0xff, 0x48, 0xff,
+0x4c, 0xff, 0x66, 0xff, 0xa0, 0xff, 0xc6, 0xff, 0x08, 0x00, 0x38, 0x00, 0x68, 0x00, 0x8a, 0x00,
+0xa0, 0x00, 0x9e, 0x00, 0x7a, 0x00, 0x42, 0x00, 0xfe, 0xff, 0xc4, 0xff, 0x8a, 0xff, 0x56, 0xff,
+0x3c, 0xff, 0x2e, 0xff, 0x38, 0xff, 0x64, 0xff, 0x9c, 0xff, 0xdc, 0xff, 0x0e, 0x00, 0x48, 0x00,
+0x7c, 0x00, 0xa8, 0x00, 0xae, 0x00, 0x90, 0x00, 0x6c, 0x00, 0x28, 0x00, 0xfc, 0xff, 0xbe, 0xff,
+0x76, 0xff, 0x40, 0xff, 0x22, 0xff, 0x1a, 0xff, 0x4c, 0xff, 0x74, 0xff, 0xb8, 0xff, 0xf4, 0xff,
+0x22, 0x00, 0x6e, 0x00, 0xa2, 0x00, 0xc0, 0x00, 0xb6, 0x00, 0x94, 0x00, 0x66, 0x00, 0x18, 0x00,
+0xe2, 0xff, 0xa8, 0xff, 0x6a, 0xff, 0x40, 0xff, 0x22, 0xff, 0x30, 0xff, 0x4e, 0xff, 0x82, 0xff,
+0xc6, 0xff, 0x08, 0x00, 0x3a, 0x00, 0x86, 0x00, 0xaa, 0x00, 0xba, 0x00, 0xb8, 0x00, 0x7c, 0x00,
+0x4c, 0x00, 0x06, 0x00, 0xd0, 0xff, 0x98, 0xff, 0x60, 0xff, 0x44, 0xff, 0x30, 0xff, 0x44, 0xff,
+0x60, 0xff, 0x9a, 0xff, 0xdc, 0xff, 0x12, 0x00, 0x50, 0x00, 0x7e, 0x00, 0xa4, 0x00, 0xb2, 0x00,
+0x9e, 0x00, 0x7c, 0x00, 0x40, 0x00, 0x06, 0x00, 0xc4, 0xff, 0x96, 0xff, 0x68, 0xff, 0x56, 0xff,
+0x4e, 0xff, 0x62, 0xff, 0x7e, 0xff, 0xae, 0xff, 0xe8, 0xff, 0x1c, 0x00, 0x50, 0x00, 0x6a, 0x00,
+0x8a, 0x00, 0x86, 0x00, 0x78, 0x00, 0x5a, 0x00, 0x24, 0x00, 0xf2, 0xff, 0xbc, 0xff, 0x90, 0xff,
+0x7a, 0xff, 0x68, 0xff, 0x66, 0xff, 0x7a, 0xff, 0x96, 0xff, 0xca, 0xff, 0xfa, 0xff, 0x10, 0x00,
+0x3e, 0x00, 0x4c, 0x00, 0x54, 0x00, 0x5e, 0x00, 0x50, 0x00, 0x3a, 0x00, 0x0a, 0x00, 0xf0, 0xff,
+0xc8, 0xff, 0xa4, 0xff, 0x90, 0xff, 0x88, 0xff, 0x8c, 0xff, 0x90, 0xff, 0xaa, 0xff, 0xd0, 0xff,
+0xee, 0xff, 0x02, 0x00, 0x24, 0x00, 0x32, 0x00, 0x34, 0x00, 0x3e, 0x00, 0x32, 0x00, 0x1a, 0x00,
+0x0a, 0x00, 0xf0, 0xff, 0xdc, 0xff, 0xbe, 0xff, 0xb8, 0xff, 0xb0, 0xff, 0xa4, 0xff, 0xac, 0xff,
+0xbc, 0xff, 0xd0, 0xff, 0xe2, 0xff, 0xf8, 0xff, 0x0e, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x14, 0x00,
+0x08, 0x00, 0x06, 0x00, 0xfa, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xde, 0xff, 0xde, 0xff, 0xea, 0xff,
+0xcc, 0xff, 0xcc, 0xff, 0xd2, 0xff, 0xc8, 0xff, 0xde, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xec, 0xff,
+0xf2, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0x06, 0x00, 0x0a, 0x00, 0x08, 0x00,
+0x08, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe2, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xcc, 0xff,
+0xc4, 0xff, 0xca, 0xff, 0xc0, 0xff, 0xc4, 0xff, 0xdc, 0xff, 0xf8, 0xff, 0x0c, 0x00, 0x1c, 0x00,
+0x2c, 0x00, 0x34, 0x00, 0x2e, 0x00, 0x2c, 0x00, 0x1a, 0x00, 0x02, 0x00, 0xf6, 0xff, 0xd4, 0xff,
+0xb8, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0xa6, 0xff, 0xbc, 0xff, 0xe2, 0xff, 0x00, 0x00,
+0x18, 0x00, 0x42, 0x00, 0x46, 0x00, 0x4e, 0x00, 0x50, 0x00, 0x36, 0x00, 0x32, 0x00, 0x04, 0x00,
+0xe0, 0xff, 0xc0, 0xff, 0x9a, 0xff, 0x88, 0xff, 0x7c, 0xff, 0x80, 0xff, 0x8e, 0xff, 0xb0, 0xff,
+0xe0, 0xff, 0x0e, 0x00, 0x3e, 0x00, 0x52, 0x00, 0x6c, 0x00, 0x70, 0x00, 0x56, 0x00, 0x50, 0x00,
+0x38, 0x00, 0xfa, 0xff, 0xce, 0xff, 0xa4, 0xff, 0x76, 0xff, 0x5a, 0xff, 0x4a, 0xff, 0x64, 0xff,
+0x86, 0xff, 0xb8, 0xff, 0xe6, 0xff, 0x1e, 0x00, 0x4a, 0x00, 0x6a, 0x00, 0x80, 0x00, 0x88, 0x00,
+0x82, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xea, 0xff, 0xbc, 0xff, 0x80, 0xff, 0x50, 0xff, 0x44, 0xff,
+0x3c, 0xff, 0x4c, 0xff, 0x7c, 0xff, 0xbc, 0xff, 0xf0, 0xff, 0x1e, 0x00, 0x64, 0x00, 0x8e, 0x00,
+0xa4, 0x00, 0x96, 0x00, 0x84, 0x00, 0x56, 0x00, 0x14, 0x00, 0xde, 0xff, 0xa6, 0xff, 0x6a, 0xff,
+0x44, 0xff, 0x2c, 0xff, 0x2a, 0xff, 0x54, 0xff, 0x84, 0xff, 0xd0, 0xff, 0x00, 0x00, 0x2c, 0x00,
+0x70, 0x00, 0xa0, 0x00, 0xb2, 0x00, 0xa0, 0x00, 0x86, 0x00, 0x3e, 0x00, 0xf8, 0xff, 0xc8, 0xff,
+0x8e, 0xff, 0x56, 0xff, 0x2a, 0xff, 0x1e, 0xff, 0x3c, 0xff, 0x60, 0xff, 0x94, 0xff, 0xe4, 0xff,
+0x10, 0x00, 0x46, 0x00, 0x8e, 0x00, 0xb2, 0x00, 0xb2, 0x00, 0x9c, 0x00, 0x6c, 0x00, 0x36, 0x00,
+0xe8, 0xff, 0xc8, 0xff, 0x8a, 0xff, 0x4c, 0xff, 0x28, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x74, 0xff,
+0xbe, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x60, 0x00, 0x8a, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0x92, 0x00,
+0x64, 0x00, 0x26, 0x00, 0xea, 0xff, 0xb2, 0xff, 0x7e, 0xff, 0x46, 0xff, 0x40, 0xff, 0x44, 0xff,
+0x5a, 0xff, 0x96, 0xff, 0xca, 0xff, 0x02, 0x00, 0x32, 0x00, 0x5c, 0x00, 0x76, 0x00, 0x84, 0x00,
+0x84, 0x00, 0x6a, 0x00, 0x4c, 0x00, 0x0a, 0x00, 0xda, 0xff, 0xae, 0xff, 0x7c, 0xff, 0x64, 0xff,
+0x5c, 0xff, 0x68, 0xff, 0x82, 0xff, 0xaa, 0xff, 0xd0, 0xff, 0xfe, 0xff, 0x36, 0x00, 0x52, 0x00,
+0x66, 0x00, 0x62, 0x00, 0x5e, 0x00, 0x46, 0x00, 0x26, 0x00, 0x02, 0x00, 0xe4, 0xff, 0xa8, 0xff,
+0x90, 0xff, 0x88, 0xff, 0x80, 0xff, 0x92, 0xff, 0x9e, 0xff, 0xc4, 0xff, 0xee, 0xff, 0x02, 0x00,
+0x1e, 0x00, 0x34, 0x00, 0x4e, 0x00, 0x42, 0x00, 0x3c, 0x00, 0x3a, 0x00, 0x18, 0x00, 0xf6, 0xff,
+0xdc, 0xff, 0xb8, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0xc2, 0xff,
+0xe4, 0xff, 0xee, 0xff, 0x0e, 0x00, 0x20, 0x00, 0x2e, 0x00, 0x24, 0x00, 0x22, 0x00, 0x1c, 0x00,
+0xf6, 0xff, 0xf6, 0xff, 0xe2, 0xff, 0xc6, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xbc, 0xff,
+0xc8, 0xff, 0xcc, 0xff, 0xe0, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x0e, 0x00,
+0x04, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf2, 0xff, 0xe4, 0xff, 0xfa, 0xff, 0xf2, 0xff,
+0xf2, 0xff, 0xe6, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd0, 0xff, 0xda, 0xff, 0xd4, 0xff, 0xd2, 0xff,
+0xe0, 0xff, 0xd4, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xee, 0xff, 0x0a, 0x00, 0x0e, 0x00, 0x1a, 0x00,
+0x16, 0x00, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xe2, 0xff, 0xcc, 0xff, 0xac, 0xff,
+0xa8, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xbc, 0xff, 0xd4, 0xff, 0xea, 0xff, 0x02, 0x00, 0x1c, 0x00,
+0x24, 0x00, 0x48, 0x00, 0x40, 0x00, 0x34, 0x00, 0x36, 0x00, 0x18, 0x00, 0x04, 0x00, 0xda, 0xff,
+0xbc, 0xff, 0xa0, 0xff, 0x96, 0xff, 0x96, 0xff, 0xaa, 0xff, 0xa6, 0xff, 0xbe, 0xff, 0xee, 0xff,
+0x02, 0x00, 0x2e, 0x00, 0x50, 0x00, 0x60, 0x00, 0x5a, 0x00, 0x4c, 0x00, 0x42, 0x00, 0x14, 0x00,
+0xf0, 0xff, 0xcc, 0xff, 0x9c, 0xff, 0x7a, 0xff, 0x64, 0xff, 0x5e, 0xff, 0x6e, 0xff, 0x94, 0xff,
+0xba, 0xff, 0xe6, 0xff, 0x1c, 0x00, 0x4a, 0x00, 0x62, 0x00, 0x78, 0x00, 0x80, 0x00, 0x6c, 0x00,
+0x4c, 0x00, 0x18, 0x00, 0xee, 0xff, 0xb4, 0xff, 0x88, 0xff, 0x66, 0xff, 0x4e, 0xff, 0x56, 0xff,
+0x62, 0xff, 0x8a, 0xff, 0xbe, 0xff, 0xf4, 0xff, 0x28, 0x00, 0x60, 0x00, 0x8a, 0x00, 0xa6, 0x00,
+0xa2, 0x00, 0x78, 0x00, 0x48, 0x00, 0x0e, 0x00, 0xdc, 0xff, 0xa4, 0xff, 0x6a, 0xff, 0x42, 0xff,
+0x2c, 0xff, 0x34, 0xff, 0x54, 0xff, 0x88, 0xff, 0xca, 0xff, 0x02, 0x00, 0x3c, 0x00, 0x76, 0x00,
+0x8e, 0x00, 0xac, 0x00, 0x92, 0x00, 0x6c, 0x00, 0x30, 0x00, 0xf6, 0xff, 0xc4, 0xff, 0x86, 0xff,
+0x58, 0xff, 0x2e, 0xff, 0x1e, 0xff, 0x34, 0xff, 0x66, 0xff, 0xaa, 0xff, 0xea, 0xff, 0x16, 0x00,
+0x58, 0x00, 0x96, 0x00, 0xaa, 0x00, 0xb2, 0x00, 0x9e, 0x00, 0x64, 0x00, 0x20, 0x00, 0xec, 0xff,
+0xbc, 0xff, 0x72, 0xff, 0x46, 0xff, 0x26, 0xff, 0x24, 0xff, 0x4c, 0xff, 0x7c, 0xff, 0xc0, 0xff,
+0xfe, 0xff, 0x2a, 0x00, 0x78, 0x00, 0x9a, 0x00, 0xb0, 0x00, 0xac, 0x00, 0x82, 0x00, 0x4c, 0x00,
+0x1c, 0x00, 0xe2, 0xff, 0xa6, 0xff, 0x76, 0xff, 0x34, 0xff, 0x2e, 0xff, 0x38, 0xff, 0x56, 0xff,
+0x88, 0xff, 0xc4, 0xff, 0x06, 0x00, 0x40, 0x00, 0x7a, 0x00, 0x98, 0x00, 0xa6, 0x00, 0x94, 0x00,
+0x7c, 0x00, 0x52, 0x00, 0x12, 0x00, 0xe0, 0xff, 0xb0, 0xff, 0x74, 0xff, 0x56, 0xff, 0x50, 0xff,
+0x58, 0xff, 0x7a, 0xff, 0xa4, 0xff, 0xda, 0xff, 0x14, 0x00, 0x4a, 0x00, 0x60, 0x00, 0x84, 0x00,
+0x86, 0x00, 0x76, 0x00, 0x64, 0x00, 0x38, 0x00, 0x14, 0x00, 0xdc, 0xff, 0xac, 0xff, 0x8e, 0xff,
+0x76, 0xff, 0x5e, 0xff, 0x6c, 0xff, 0x88, 0xff, 0xa4, 0xff, 0xdc, 0xff, 0x04, 0x00, 0x28, 0x00,
+0x42, 0x00, 0x5a, 0x00, 0x5e, 0x00, 0x62, 0x00, 0x4c, 0x00, 0x26, 0x00, 0x08, 0x00, 0xda, 0xff,
+0xbe, 0xff, 0x9e, 0xff, 0x92, 0xff, 0x98, 0xff, 0x92, 0xff, 0xa8, 0xff, 0xc8, 0xff, 0xe4, 0xff,
+0xfc, 0xff, 0x22, 0x00, 0x30, 0x00, 0x32, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x2c, 0x00, 0x0e, 0x00,
+0xfc, 0xff, 0xec, 0xff, 0xd0, 0xff, 0xbe, 0xff, 0xba, 0xff, 0xac, 0xff, 0xa4, 0xff, 0xc0, 0xff,
+0xd2, 0xff, 0xea, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x0c, 0x00,
+0x0a, 0x00, 0xfc, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xce, 0xff,
+0xd8, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xda, 0xff, 0xda, 0xff, 0xea, 0xff, 0xf2, 0xff,
+0xf0, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xf0, 0xff, 0x04, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x08, 0x00,
+0x02, 0x00, 0xf8, 0xff, 0xee, 0xff, 0xea, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xc4, 0xff, 0xc2, 0xff,
+0xc2, 0xff, 0xca, 0xff, 0xcc, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x16, 0x00, 0x22, 0x00,
+0x2a, 0x00, 0x20, 0x00, 0x22, 0x00, 0x14, 0x00, 0x06, 0x00, 0xe4, 0xff, 0xd4, 0xff, 0xae, 0xff,
+0x98, 0xff, 0x9a, 0xff, 0x9e, 0xff, 0xae, 0xff, 0xbe, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0x14, 0x00,
+0x38, 0x00, 0x48, 0x00, 0x54, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x24, 0x00, 0x0a, 0x00, 0xee, 0xff,
+0xc0, 0xff, 0xa4, 0xff, 0x96, 0xff, 0x88, 0xff, 0x96, 0xff, 0x9e, 0xff, 0xba, 0xff, 0xee, 0xff,
+0x06, 0x00, 0x2c, 0x00, 0x58, 0x00, 0x66, 0x00, 0x72, 0x00, 0x6e, 0x00, 0x56, 0x00, 0x3c, 0x00,
+0x04, 0x00, 0xda, 0xff, 0xaa, 0xff, 0x78, 0xff, 0x6c, 0xff, 0x60, 0xff, 0x6a, 0xff, 0x7e, 0xff,
+0xac, 0xff, 0xec, 0xff, 0x0a, 0x00, 0x42, 0x00, 0x6a, 0x00, 0x78, 0x00, 0x90, 0x00, 0x7e, 0x00,
+0x58, 0x00, 0x2a, 0x00, 0xfc, 0xff, 0xc0, 0xff, 0x8e, 0xff, 0x6a, 0xff, 0x42, 0xff, 0x40, 0xff,
+0x54, 0xff, 0x80, 0xff, 0xb8, 0xff, 0xee, 0xff, 0x26, 0x00, 0x5e, 0x00, 0x88, 0x00, 0xa6, 0x00,
+0xae, 0x00, 0x98, 0x00, 0x68, 0x00, 0x2a, 0x00, 0xee, 0xff, 0xae, 0xff, 0x72, 0xff, 0x46, 0xff,
+0x2c, 0xff, 0x30, 0xff, 0x4c, 0xff, 0x7e, 0xff, 0xc2, 0xff, 0xf2, 0xff, 0x26, 0x00, 0x68, 0x00,
+0x8a, 0x00, 0xb0, 0x00, 0xa4, 0x00, 0x7c, 0x00, 0x4e, 0x00, 0x02, 0x00, 0xd2, 0xff, 0x94, 0xff,
+0x5a, 0xff, 0x30, 0xff, 0x20, 0xff, 0x24, 0xff, 0x4a, 0xff, 0x80, 0xff, 0xc0, 0xff, 0x00, 0x00,
+0x38, 0x00, 0x70, 0x00, 0x9a, 0x00, 0xae, 0x00, 0x9e, 0x00, 0x78, 0x00, 0x40, 0x00, 0x00, 0x00,
+0xd2, 0xff, 0x8a, 0xff, 0x54, 0xff, 0x3a, 0xff, 0x2a, 0xff, 0x3c, 0xff, 0x6c, 0xff, 0xa6, 0xff,
+0xe6, 0xff, 0x14, 0x00, 0x46, 0x00, 0x82, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0x86, 0x00, 0x5e, 0x00,
+0x28, 0x00, 0xf0, 0xff, 0xba, 0xff, 0x88, 0xff, 0x52, 0xff, 0x40, 0xff, 0x44, 0xff, 0x56, 0xff,
+0x7c, 0xff, 0xaa, 0xff, 0xee, 0xff, 0x18, 0x00, 0x42, 0x00, 0x7e, 0x00, 0x90, 0x00, 0x8a, 0x00,
+0x76, 0x00, 0x46, 0x00, 0x1e, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0x86, 0xff, 0x68, 0xff, 0x62, 0xff,
+0x5c, 0xff, 0x76, 0xff, 0x94, 0xff, 0xca, 0xff, 0x00, 0x00, 0x38, 0x00, 0x58, 0x00, 0x70, 0x00,
+0x7e, 0x00, 0x78, 0x00, 0x6a, 0x00, 0x44, 0x00, 0x18, 0x00, 0xf0, 0xff, 0xb8, 0xff, 0x9c, 0xff,
+0x94, 0xff, 0x7c, 0xff, 0x7a, 0xff, 0x90, 0xff, 0xb0, 0xff, 0xda, 0xff, 0xf0, 0xff, 0x1e, 0x00,
+0x40, 0x00, 0x48, 0x00, 0x52, 0x00, 0x52, 0x00, 0x48, 0x00, 0x24, 0x00, 0x02, 0x00, 0xea, 0xff,
+0xcc, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xa8, 0xff, 0xa2, 0xff, 0xae, 0xff, 0xc2, 0xff, 0xde, 0xff,
+0xf4, 0xff, 0x02, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x26, 0x00, 0x12, 0x00,
+0x02, 0x00, 0xf8, 0xff, 0xf6, 0xff, 0xda, 0xff, 0xde, 0xff, 0xd4, 0xff, 0xcc, 0xff, 0xd4, 0xff,
+0xd4, 0xff, 0xee, 0xff, 0xea, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x04, 0x00,
+0xfe, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf2, 0xff,
+0xe8, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xd8, 0xff, 0xd4, 0xff,
+0xcc, 0xff, 0xd6, 0xff, 0xe8, 0xff, 0xee, 0xff, 0x02, 0x00, 0x0c, 0x00, 0x16, 0x00, 0x20, 0x00,
+0x0e, 0x00, 0x12, 0x00, 0x06, 0x00, 0xf8, 0xff, 0xe6, 0xff, 0xd2, 0xff, 0xc6, 0xff, 0xb0, 0xff,
+0xa8, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xbc, 0xff, 0xe4, 0xff, 0xf6, 0xff, 0x0e, 0x00, 0x32, 0x00,
+0x3c, 0x00, 0x44, 0x00, 0x3e, 0x00, 0x30, 0x00, 0x1e, 0x00, 0x08, 0x00, 0xe8, 0xff, 0xc2, 0xff,
+0x9e, 0xff, 0x8a, 0xff, 0x80, 0xff, 0x8a, 0xff, 0x9e, 0xff, 0xb0, 0xff, 0xe0, 0xff, 0xfc, 0xff,
+0x1e, 0x00, 0x46, 0x00, 0x5a, 0x00, 0x68, 0x00, 0x58, 0x00, 0x4e, 0x00, 0x26, 0x00, 0x00, 0x00,
+0xd0, 0xff, 0xa4, 0xff, 0x8e, 0xff, 0x6e, 0xff, 0x6c, 0xff, 0x7c, 0xff, 0x98, 0xff, 0xc4, 0xff,
+0xea, 0xff, 0x20, 0x00, 0x5c, 0x00, 0x6e, 0x00, 0x8e, 0x00, 0x8c, 0x00, 0x74, 0x00, 0x5a, 0x00,
+0x22, 0x00, 0xf0, 0xff, 0xc2, 0xff, 0x96, 0xff, 0x70, 0xff, 0x54, 0xff, 0x58, 0xff, 0x6a, 0xff,
+0x90, 0xff, 0xc2, 0xff, 0xf6, 0xff, 0x2c, 0x00, 0x72, 0x00, 0x8e, 0x00, 0x98, 0x00, 0x9e, 0x00,
+0x84, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xea, 0xff, 0xb2, 0xff, 0x76, 0xff, 0x4e, 0xff, 0x3a, 0xff,
+0x34, 0xff, 0x5a, 0xff, 0x9a, 0xff, 0xd0, 0xff, 0x08, 0x00, 0x3e, 0x00, 0x76, 0x00, 0xa0, 0x00,
+0xaa, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x12, 0x00, 0xda, 0xff, 0xa0, 0xff, 0x6a, 0xff,
+0x3e, 0xff, 0x28, 0xff, 0x3a, 0xff, 0x66, 0xff, 0x9e, 0xff, 0xe4, 0xff, 0x14, 0x00, 0x5a, 0x00,
+0x82, 0x00, 0xaa, 0x00, 0xb8, 0x00, 0xa2, 0x00, 0x74, 0x00, 0x32, 0x00, 0xfc, 0xff, 0xc6, 0xff,
+0x7a, 0xff, 0x4a, 0xff, 0x28, 0xff, 0x26, 0xff, 0x4c, 0xff, 0x5e, 0xff, 0xae, 0xff, 0xe8, 0xff,
+0x1c, 0x00, 0x54, 0x00, 0x88, 0x00, 0xa6, 0x00, 0xa0, 0x00, 0x86, 0x00, 0x5a, 0x00, 0x22, 0x00,
+0xea, 0xff, 0xb2, 0xff, 0x76, 0xff, 0x4c, 0xff, 0x32, 0xff, 0x3e, 0xff, 0x5a, 0xff, 0x86, 0xff,
+0xb8, 0xff, 0xf6, 0xff, 0x28, 0x00, 0x62, 0x00, 0x80, 0x00, 0x90, 0x00, 0x9e, 0x00, 0x78, 0x00,
+0x42, 0x00, 0x12, 0x00, 0xd4, 0xff, 0xa4, 0xff, 0x82, 0xff, 0x5c, 0xff, 0x52, 0xff, 0x4e, 0xff,
+0x70, 0xff, 0x94, 0xff, 0xce, 0xff, 0x08, 0x00, 0x30, 0x00, 0x58, 0x00, 0x74, 0x00, 0x78, 0x00,
+0x74, 0x00, 0x56, 0x00, 0x26, 0x00, 0xfe, 0xff, 0xd2, 0xff, 0xa0, 0xff, 0x86, 0xff, 0x6e, 0xff,
+0x62, 0xff, 0x7c, 0xff, 0x90, 0xff, 0xb8, 0xff, 0xe6, 0xff, 0x02, 0x00, 0x36, 0x00, 0x50, 0x00,
+0x56, 0x00, 0x64, 0x00, 0x58, 0x00, 0x48, 0x00, 0x1a, 0x00, 0xf4, 0xff, 0xe2, 0xff, 0xac, 0xff,
+0xa2, 0xff, 0x98, 0xff, 0x98, 0xff, 0xa6, 0xff, 0xb4, 0xff, 0xdc, 0xff, 0xf4, 0xff, 0x08, 0x00,
+0x1e, 0x00, 0x32, 0x00, 0x36, 0x00, 0x44, 0x00, 0x40, 0x00, 0x24, 0x00, 0x08, 0x00, 0xf0, 0xff,
+0xd6, 0xff, 0xc2, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xd8, 0xff, 0xd8, 0xff,
+0xec, 0xff, 0xf2, 0xff, 0x04, 0x00, 0x18, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x0a, 0x00,
+0xfc, 0xff, 0xee, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xe2, 0xff,
+0xde, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xec, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf8, 0xff,
+0xf0, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x04, 0x00, 0x02, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00,
+0xfe, 0xff, 0xee, 0xff, 0xf2, 0xff, 0xe8, 0xff, 0xd2, 0xff, 0xc8, 0xff, 0xb8, 0xff, 0xc8, 0xff,
+0xcc, 0xff, 0xc8, 0xff, 0xe4, 0xff, 0xee, 0xff, 0xfa, 0xff, 0x16, 0x00, 0x22, 0x00, 0x28, 0x00,
+0x2c, 0x00, 0x22, 0x00, 0x16, 0x00, 0x02, 0x00, 0xf2, 0xff, 0xda, 0xff, 0xbc, 0xff, 0xa2, 0xff,
+0x96, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xae, 0xff, 0xd4, 0xff, 0xf2, 0xff, 0x06, 0x00, 0x36, 0x00,
+0x4a, 0x00, 0x54, 0x00, 0x5a, 0x00, 0x46, 0x00, 0x36, 0x00, 0x0e, 0x00, 0xe6, 0xff, 0xce, 0xff,
+0xa2, 0xff, 0x8e, 0xff, 0x78, 0xff, 0x76, 0xff, 0x8e, 0xff, 0xa4, 0xff, 0xd6, 0xff, 0xf6, 0xff,
+0x18, 0x00, 0x48, 0x00, 0x66, 0x00, 0x70, 0x00, 0x76, 0x00, 0x66, 0x00, 0x3e, 0x00, 0x04, 0x00,
+0xe0, 0xff, 0xac, 0xff, 0x7e, 0xff, 0x68, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x78, 0xff, 0xa2, 0xff,
+0xc4, 0xff, 0xfa, 0xff, 0x38, 0x00, 0x6e, 0x00, 0x9a, 0x00, 0xa0, 0x00, 0x92, 0x00, 0x66, 0x00,
+0x30, 0x00, 0x0c, 0x00, 0xd4, 0xff, 0x98, 0xff, 0x66, 0xff, 0x4e, 0xff, 0x46, 0xff, 0x48, 0xff,
+0x6c, 0xff, 0xb0, 0xff, 0xe4, 0xff, 0x14, 0x00, 0x54, 0x00, 0x8a, 0x00, 0xa4, 0x00, 0xb2, 0x00,
+0x9c, 0x00, 0x70, 0x00, 0x32, 0x00, 0xfa, 0xff, 0xc2, 0xff, 0x7e, 0xff, 0x50, 0xff, 0x32, 0xff,
+0x30, 0xff, 0x44, 0xff, 0x76, 0xff, 0xb6, 0xff, 0xf0, 0xff, 0x1e, 0x00, 0x64, 0x00, 0x9c, 0x00,
+0xba, 0x00, 0xb2, 0x00, 0x96, 0x00, 0x6e, 0x00, 0x1c, 0x00, 0xf8, 0xff, 0xaa, 0xff, 0x68, 0xff,
+0x3e, 0xff, 0x30, 0xff, 0x36, 0xff, 0x56, 0xff, 0x84, 0xff, 0xc2, 0xff, 0x00, 0x00, 0x38, 0x00,
+0x7a, 0x00, 0xa6, 0x00, 0xc2, 0x00, 0xac, 0x00, 0x92, 0x00, 0x56, 0x00, 0x18, 0x00, 0xe8, 0xff,
+0xac, 0xff, 0x6e, 0xff, 0x3c, 0xff, 0x2c, 0xff, 0x34, 0xff, 0x5c, 0xff, 0x90, 0xff, 0xde, 0xff,
+0x10, 0x00, 0x3c, 0x00, 0x7a, 0x00, 0x9c, 0x00, 0xae, 0x00, 0xa8, 0x00, 0x74, 0x00, 0x3e, 0x00,
+0x04, 0x00, 0xca, 0xff, 0x96, 0xff, 0x62, 0xff, 0x44, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x68, 0xff,
+0xa6, 0xff, 0xea, 0xff, 0x1e, 0x00, 0x44, 0x00, 0x74, 0x00, 0x90, 0x00, 0x92, 0x00, 0x80, 0x00,
+0x5a, 0x00, 0x28, 0x00, 0xf2, 0xff, 0xc4, 0xff, 0xa0, 0xff, 0x7a, 0xff, 0x58, 0xff, 0x5a, 0xff,
+0x64, 0xff, 0x8e, 0xff, 0xc4, 0xff, 0xea, 0xff, 0x24, 0x00, 0x44, 0x00, 0x5e, 0x00, 0x72, 0x00,
+0x6a, 0x00, 0x5e, 0x00, 0x44, 0x00, 0x16, 0x00, 0xe6, 0xff, 0xc6, 0xff, 0xa0, 0xff, 0x92, 0xff,
+0x7c, 0xff, 0x7a, 0xff, 0x7c, 0xff, 0x9e, 0xff, 0xc8, 0xff, 0xea, 0xff, 0x10, 0x00, 0x2a, 0x00,
+0x3c, 0x00, 0x42, 0x00, 0x4e, 0x00, 0x3e, 0x00, 0x26, 0x00, 0x02, 0x00, 0xea, 0xff, 0xd4, 0xff,
+0xb6, 0xff, 0xa8, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xc8, 0xff, 0xe2, 0xff, 0xf6, 0xff,
+0x08, 0x00, 0x1e, 0x00, 0x26, 0x00, 0x28, 0x00, 0x1c, 0x00, 0x20, 0x00, 0x16, 0x00, 0xfe, 0xff,
+0xf2, 0xff, 0xe4, 0xff, 0xd4, 0xff, 0xe2, 0xff, 0xde, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xdc, 0xff,
+0xf6, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x04, 0x00,
+0x02, 0x00, 0xfa, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xfe, 0xff,
+0xf6, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xd6, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd8, 0xff,
+0xea, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0x04, 0x00, 0x14, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x16, 0x00,
+0x16, 0x00, 0x0c, 0x00, 0xfa, 0xff, 0xf6, 0xff, 0xe6, 0xff, 0xc2, 0xff, 0xb6, 0xff, 0xb0, 0xff,
+0xb0, 0xff, 0xc8, 0xff, 0xce, 0xff, 0xec, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x2e, 0x00, 0x3a, 0x00,
+0x3c, 0x00, 0x32, 0x00, 0x2c, 0x00, 0x14, 0x00, 0xfc, 0xff, 0xe4, 0xff, 0xc2, 0xff, 0xa2, 0xff,
+0x92, 0xff, 0x86, 0xff, 0x90, 0xff, 0xa4, 0xff, 0xba, 0xff, 0xea, 0xff, 0xfe, 0xff, 0x2e, 0x00,
+0x46, 0x00, 0x54, 0x00, 0x54, 0x00, 0x56, 0x00, 0x46, 0x00, 0x28, 0x00, 0x04, 0x00, 0xd8, 0xff,
+0xa4, 0xff, 0x88, 0xff, 0x7e, 0xff, 0x6c, 0xff, 0x7a, 0xff, 0x92, 0xff, 0xaa, 0xff, 0xe0, 0xff,
+0x0c, 0x00, 0x3c, 0x00, 0x64, 0x00, 0x7a, 0x00, 0x82, 0x00, 0x70, 0x00, 0x58, 0x00, 0x2e, 0x00,
+0xfe, 0xff, 0xca, 0xff, 0x9c, 0xff, 0x74, 0xff, 0x54, 0xff, 0x4c, 0xff, 0x5c, 0xff, 0x88, 0xff,
+0xba, 0xff, 0xee, 0xff, 0x1c, 0x00, 0x52, 0x00, 0x78, 0x00, 0x96, 0x00, 0x96, 0x00, 0x86, 0x00,
+0x5e, 0x00, 0x20, 0x00, 0xee, 0xff, 0xb0, 0xff, 0x78, 0xff, 0x58, 0xff, 0x3e, 0xff, 0x3e, 0xff,
+0x5e, 0xff, 0x86, 0xff, 0xca, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x74, 0x00, 0x9c, 0x00, 0xac, 0x00,
+0xa6, 0x00, 0x88, 0x00, 0x56, 0x00, 0x0c, 0x00, 0xd4, 0xff, 0xa2, 0xff, 0x68, 0xff, 0x44, 0xff,
+0x2c, 0xff, 0x3a, 0xff, 0x60, 0xff, 0x9e, 0xff, 0xe2, 0xff, 0x12, 0x00, 0x4e, 0x00, 0x82, 0x00,
+0xa6, 0x00, 0xc4, 0x00, 0xaa, 0x00, 0x8c, 0x00, 0x3a, 0x00, 0xfc, 0xff, 0xd6, 0xff, 0x7a, 0xff,
+0x58, 0xff, 0x34, 0xff, 0x2a, 0xff, 0x48, 0xff, 0x6a, 0xff, 0xa6, 0xff, 0xe4, 0xff, 0x18, 0x00,
+0x50, 0x00, 0x92, 0x00, 0xb0, 0x00, 0xbc, 0x00, 0xaa, 0x00, 0x6e, 0x00, 0x2c, 0x00, 0xec, 0xff,
+0xbc, 0xff, 0x82, 0xff, 0x58, 0xff, 0x3e, 0xff, 0x30, 0xff, 0x58, 0xff, 0x7c, 0xff, 0xc2, 0xff,
+0xfe, 0xff, 0x2a, 0x00, 0x62, 0x00, 0x86, 0x00, 0x9a, 0x00, 0x9e, 0x00, 0x88, 0x00, 0x58, 0x00,
+0x1e, 0x00, 0xe6, 0xff, 0xb0, 0xff, 0x82, 0xff, 0x60, 0xff, 0x4a, 0xff, 0x52, 0xff, 0x68, 0xff,
+0x94, 0xff, 0xd6, 0xff, 0x00, 0x00, 0x2e, 0x00, 0x50, 0x00, 0x68, 0x00, 0x82, 0x00, 0x7a, 0x00,
+0x66, 0x00, 0x36, 0x00, 0x04, 0x00, 0xe2, 0xff, 0xa6, 0xff, 0x90, 0xff, 0x72, 0xff, 0x66, 0xff,
+0x70, 0xff, 0x82, 0xff, 0xa8, 0xff, 0xd2, 0xff, 0xfc, 0xff, 0x34, 0x00, 0x44, 0x00, 0x54, 0x00,
+0x6a, 0x00, 0x52, 0x00, 0x48, 0x00, 0x28, 0x00, 0xfa, 0xff, 0xea, 0xff, 0xc4, 0xff, 0xb0, 0xff,
+0xa0, 0xff, 0x92, 0xff, 0x96, 0xff, 0xa4, 0xff, 0xc4, 0xff, 0xe6, 0xff, 0xfe, 0xff, 0x1c, 0x00,
+0x34, 0x00, 0x38, 0x00, 0x32, 0x00, 0x34, 0x00, 0x26, 0x00, 0x0a, 0x00, 0xfc, 0xff, 0xe4, 0xff,
+0xce, 0xff, 0xbe, 0xff, 0xc2, 0xff, 0xbe, 0xff, 0xba, 0xff, 0xcc, 0xff, 0xd0, 0xff, 0xe8, 0xff,
+0xf8, 0xff, 0x06, 0x00, 0x18, 0x00, 0x16, 0x00, 0x1e, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x0e, 0x00,
+0xf6, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0xdc, 0xff,
+0xda, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0x00, 0x00,
+0x00, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x06, 0x00,
+0xf0, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xde, 0xff, 0xd0, 0xff, 0xc0, 0xff, 0xbc, 0xff, 0xc6, 0xff,
+0xc8, 0xff, 0xd2, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x12, 0x00, 0x2c, 0x00, 0x2e, 0x00, 0x2a, 0x00,
+0x26, 0x00, 0x28, 0x00, 0x0e, 0x00, 0xfc, 0xff, 0xf6, 0xff, 0xc8, 0xff, 0xaa, 0xff, 0xa6, 0xff,
+0x94, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xbe, 0xff, 0xec, 0xff, 0x02, 0x00, 0x2c, 0x00, 0x48, 0x00,
+0x50, 0x00, 0x5a, 0x00, 0x50, 0x00, 0x38, 0x00, 0x1a, 0x00, 0x02, 0x00, 0xcc, 0xff, 0x9e, 0xff,
+0x8c, 0xff, 0x72, 0xff, 0x6e, 0xff, 0x84, 0xff, 0x8e, 0xff, 0xb2, 0xff, 0xde, 0xff, 0x08, 0x00,
+0x3c, 0x00, 0x4e, 0x00, 0x6a, 0x00, 0x6e, 0x00, 0x4e, 0x00, 0x38, 0x00, 0x02, 0x00, 0xd8, 0xff,
+0xb2, 0xff, 0x88, 0xff, 0x66, 0xff, 0x4a, 0xff, 0x58, 0xff, 0x6e, 0xff, 0x96, 0xff, 0xc8, 0xff,
+0xfc, 0xff, 0x28, 0x00, 0x56, 0x00, 0x7c, 0x00, 0x8a, 0x00, 0x84, 0x00, 0x6c, 0x00, 0x38, 0x00,
+0x0a, 0x00, 0xd8, 0xff, 0xa0, 0xff, 0x76, 0xff, 0x46, 0xff, 0x3a, 0xff, 0x46, 0xff, 0x64, 0xff,
+0xb2, 0xff, 0xd8, 0xff, 0x0c, 0x00, 0x3e, 0x00, 0x70, 0x00, 0xa2, 0x00, 0xa4, 0x00, 0x8e, 0x00,
+0x6a, 0x00, 0x2e, 0x00, 0xf4, 0xff, 0xc8, 0xff, 0x8e, 0xff, 0x52, 0xff, 0x36, 0xff, 0x26, 0xff,
+0x3e, 0xff, 0x62, 0xff, 0xae, 0xff, 0xf4, 0xff, 0x1e, 0x00, 0x5c, 0x00, 0x94, 0x00, 0xb2, 0x00,
+0xaa, 0x00, 0x9a, 0x00, 0x74, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xc6, 0xff, 0x8a, 0xff, 0x5c, 0xff,
+0x32, 0xff, 0x2e, 0xff, 0x4e, 0xff, 0x7e, 0xff, 0xc8, 0xff, 0x02, 0x00, 0x3a, 0x00, 0x78, 0x00,
+0xa2, 0x00, 0xc0, 0x00, 0xb4, 0x00, 0x9a, 0x00, 0x70, 0x00, 0x26, 0x00, 0xe6, 0xff, 0xbc, 0xff,
+0x7e, 0xff, 0x44, 0xff, 0x30, 0xff, 0x3a, 0xff, 0x5c, 0xff, 0x86, 0xff, 0xcc, 0xff, 0x0a, 0x00,
+0x2c, 0x00, 0x6c, 0x00, 0x96, 0x00, 0x9e, 0x00, 0xa0, 0x00, 0x80, 0x00, 0x4a, 0x00, 0x12, 0x00,
+0xd6, 0xff, 0x9e, 0xff, 0x72, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x5c, 0xff, 0x70, 0xff, 0xa4, 0xff,
+0xd8, 0xff, 0x0e, 0x00, 0x3a, 0x00, 0x64, 0x00, 0x86, 0x00, 0x8a, 0x00, 0x84, 0x00, 0x66, 0x00,
+0x38, 0x00, 0x02, 0x00, 0xce, 0xff, 0xa6, 0xff, 0x7e, 0xff, 0x66, 0xff, 0x62, 0xff, 0x6e, 0xff,
+0x84, 0xff, 0xb4, 0xff, 0xf0, 0xff, 0x0c, 0x00, 0x38, 0x00, 0x50, 0x00, 0x5e, 0x00, 0x6a, 0x00,
+0x5c, 0x00, 0x42, 0x00, 0x16, 0x00, 0xf0, 0xff, 0xc4, 0xff, 0x98, 0xff, 0x86, 0xff, 0x70, 0xff,
+0x70, 0xff, 0x86, 0xff, 0x9c, 0xff, 0xbc, 0xff, 0xde, 0xff, 0x02, 0x00, 0x2c, 0x00, 0x32, 0x00,
+0x3a, 0x00, 0x48, 0x00, 0x32, 0x00, 0x20, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xd6, 0xff, 0xb0, 0xff,
+0xb0, 0xff, 0xa4, 0xff, 0xa0, 0xff, 0xaa, 0xff, 0xbe, 0xff, 0xdc, 0xff, 0xee, 0xff, 0xfc, 0xff,
+0x18, 0x00, 0x26, 0x00, 0x1a, 0x00, 0x28, 0x00, 0x20, 0x00, 0x0e, 0x00, 0xfe, 0xff, 0xec, 0xff,
+0xea, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xcc, 0xff, 0xd8, 0xff,
+0xdc, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00,
+0x06, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xf0, 0xff,
+0xe6, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd2, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xf0, 0xff,
+0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0x14, 0x00, 0x20, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x2a, 0x00,
+0x16, 0x00, 0x04, 0x00, 0xf0, 0xff, 0xd8, 0xff, 0xc6, 0xff, 0xae, 0xff, 0xb4, 0xff, 0xbc, 0xff,
+0xba, 0xff, 0xc8, 0xff, 0xde, 0xff, 0xfa, 0xff, 0x16, 0x00, 0x30, 0x00, 0x40, 0x00, 0x4a, 0x00,
+0x42, 0x00, 0x36, 0x00, 0x2c, 0x00, 0x0a, 0x00, 0xe8, 0xff, 0xc0, 0xff, 0xa6, 0xff, 0x90, 0xff,
+0x86, 0xff, 0x98, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xd8, 0xff, 0xfe, 0xff, 0x24, 0x00, 0x54, 0x00,
+0x68, 0x00, 0x68, 0x00, 0x68, 0x00, 0x54, 0x00, 0x36, 0x00, 0x10, 0x00, 0xd6, 0xff, 0xb4, 0xff,
+0x88, 0xff, 0x68, 0xff, 0x68, 0xff, 0x6a, 0xff, 0x84, 0xff, 0xa4, 0xff, 0xdc, 0xff, 0x0c, 0x00,
+0x34, 0x00, 0x66, 0x00, 0x86, 0x00, 0x8c, 0x00, 0x7c, 0x00, 0x5e, 0x00, 0x28, 0x00, 0xfe, 0xff,
+0xc4, 0xff, 0x8c, 0xff, 0x54, 0xff, 0x38, 0xff, 0x3e, 0xff, 0x48, 0xff, 0x6a, 0xff, 0x9a, 0xff,
+0xd6, 0xff, 0x10, 0x00, 0x4c, 0x00, 0x82, 0x00, 0x9e, 0x00, 0xa0, 0x00, 0x82, 0x00, 0x5c, 0x00,
+0x1e, 0x00, 0xf0, 0xff, 0xb4, 0xff, 0x76, 0xff, 0x48, 0xff, 0x2e, 0xff, 0x30, 0xff, 0x46, 0xff,
+0x78, 0xff, 0xb8, 0xff, 0xf8, 0xff, 0x2c, 0x00, 0x66, 0x00, 0x9e, 0x00, 0xb8, 0x00, 0xb2, 0x00,
+0x90, 0x00, 0x5e, 0x00, 0x12, 0x00, 0xe6, 0xff, 0xa0, 0xff, 0x5e, 0xff, 0x3e, 0xff, 0x22, 0xff,
+0x26, 0xff, 0x48, 0xff, 0x80, 0xff, 0xce, 0xff, 0x02, 0x00, 0x38, 0x00, 0x7c, 0x00, 0xa8, 0x00,
+0xbc, 0x00, 0xa8, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xc8, 0xff, 0x8e, 0xff, 0x5a, 0xff,
+0x2a, 0xff, 0x22, 0xff, 0x42, 0xff, 0x6a, 0xff, 0x98, 0xff, 0xe2, 0xff, 0x22, 0x00, 0x54, 0x00,
+0x8e, 0x00, 0xb2, 0x00, 0xbc, 0x00, 0x9a, 0x00, 0x72, 0x00, 0x38, 0x00, 0x02, 0x00, 0xc0, 0xff,
+0x88, 0xff, 0x56, 0xff, 0x44, 0xff, 0x4a, 0xff, 0x52, 0xff, 0x80, 0xff, 0xbc, 0xff, 0xfc, 0xff,
+0x30, 0x00, 0x6c, 0x00, 0x98, 0x00, 0xa6, 0x00, 0xa2, 0x00, 0x82, 0x00, 0x60, 0x00, 0x2e, 0x00,
+0xf8, 0xff, 0xba, 0xff, 0x82, 0xff, 0x5a, 0xff, 0x4e, 0xff, 0x5a, 0xff, 0x66, 0xff, 0x90, 0xff,
+0xcc, 0xff, 0xf6, 0xff, 0x34, 0x00, 0x62, 0x00, 0x7a, 0x00, 0x84, 0x00, 0x84, 0x00, 0x70, 0x00,
+0x44, 0x00, 0x20, 0x00, 0xee, 0xff, 0xb6, 0xff, 0x96, 0xff, 0x80, 0xff, 0x70, 0xff, 0x7a, 0xff,
+0x86, 0xff, 0xa4, 0xff, 0xde, 0xff, 0x06, 0x00, 0x2c, 0x00, 0x48, 0x00, 0x50, 0x00, 0x56, 0x00,
+0x52, 0x00, 0x4a, 0x00, 0x32, 0x00, 0x04, 0x00, 0xe0, 0xff, 0xc4, 0xff, 0xa4, 0xff, 0x9c, 0xff,
+0x94, 0xff, 0x90, 0xff, 0x9e, 0xff, 0xbc, 0xff, 0xde, 0xff, 0x00, 0x00, 0x10, 0x00, 0x26, 0x00,
+0x26, 0x00, 0x26, 0x00, 0x22, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xc2, 0xff,
+0xb6, 0xff, 0xbe, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xe2, 0xff, 0xf6, 0xff,
+0xec, 0xff, 0x08, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0xf4, 0xff,
+0xf2, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xd8, 0xff,
+0xde, 0xff, 0xd2, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xe4, 0xff, 0xec, 0xff, 0xea, 0xff,
+0xfa, 0xff, 0x02, 0x00, 0x0c, 0x00, 0x1a, 0x00, 0x0c, 0x00, 0x06, 0x00, 0xfc, 0xff, 0xfa, 0xff,
+0xf0, 0xff, 0xdc, 0xff, 0xd0, 0xff, 0xb8, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xc2, 0xff, 0xc6, 0xff,
+0xe0, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x1e, 0x00, 0x34, 0x00, 0x4c, 0x00, 0x40, 0x00, 0x3a, 0x00,
+0x2e, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xe2, 0xff, 0xca, 0xff, 0xa4, 0xff, 0x88, 0xff, 0x90, 0xff,
+0xa6, 0xff, 0xb6, 0xff, 0xca, 0xff, 0xf8, 0xff, 0x18, 0x00, 0x48, 0x00, 0x60, 0x00, 0x62, 0x00,
+0x6e, 0x00, 0x58, 0x00, 0x42, 0x00, 0x22, 0x00, 0xfa, 0xff, 0xd4, 0xff, 0xa2, 0xff, 0x78, 0xff,
+0x64, 0xff, 0x72, 0xff, 0x88, 0xff, 0xa0, 0xff, 0xca, 0xff, 0xf6, 0xff, 0x24, 0x00, 0x56, 0x00,
+0x72, 0x00, 0x84, 0x00, 0x80, 0x00, 0x6c, 0x00, 0x48, 0x00, 0x20, 0x00, 0xf0, 0xff, 0xc0, 0xff,
+0x92, 0xff, 0x72, 0xff, 0x5a, 0xff, 0x58, 0xff, 0x80, 0xff, 0x9a, 0xff, 0xd2, 0xff, 0x08, 0x00,
+0x36, 0x00, 0x68, 0x00, 0x88, 0x00, 0x94, 0x00, 0x94, 0x00, 0x7e, 0x00, 0x44, 0x00, 0x18, 0x00,
+0xe0, 0xff, 0xae, 0xff, 0x70, 0xff, 0x50, 0xff, 0x3a, 0xff, 0x4a, 0xff, 0x6e, 0xff, 0x90, 0xff,
+0xd2, 0xff, 0xfe, 0xff, 0x3e, 0x00, 0x6e, 0x00, 0x94, 0x00, 0xac, 0x00, 0x94, 0x00, 0x80, 0x00,
+0x3e, 0x00, 0xfc, 0xff, 0xd8, 0xff, 0x92, 0xff, 0x54, 0xff, 0x36, 0xff, 0x2e, 0xff, 0x44, 0xff,
+0x5c, 0xff, 0x9e, 0xff, 0xda, 0xff, 0x08, 0x00, 0x4c, 0x00, 0x86, 0x00, 0xaa, 0x00, 0xb4, 0x00,
+0xa4, 0x00, 0x7c, 0x00, 0x38, 0x00, 0xfc, 0xff, 0xce, 0xff, 0x7c, 0xff, 0x50, 0xff, 0x2a, 0xff,
+0x26, 0xff, 0x44, 0xff, 0x66, 0xff, 0xaa, 0xff, 0xee, 0xff, 0x16, 0x00, 0x52, 0x00, 0x8a, 0x00,
+0xb2, 0x00, 0xb2, 0x00, 0x96, 0x00, 0x64, 0x00, 0x1c, 0x00, 0xf0, 0xff, 0xbe, 0xff, 0x7c, 0xff,
+0x46, 0xff, 0x28, 0xff, 0x2c, 0xff, 0x4e, 0xff, 0x7c, 0xff, 0xc2, 0xff, 0xfc, 0xff, 0x24, 0x00,
+0x56, 0x00, 0x84, 0x00, 0xa4, 0x00, 0xa0, 0x00, 0x8e, 0x00, 0x56, 0x00, 0x1a, 0x00, 0xea, 0xff,
+0xb2, 0xff, 0x86, 0xff, 0x60, 0xff, 0x48, 0xff, 0x4c, 0xff, 0x6a, 0xff, 0x92, 0xff, 0xd0, 0xff,
+0x04, 0x00, 0x34, 0x00, 0x60, 0x00, 0x86, 0x00, 0x92, 0x00, 0x84, 0x00, 0x72, 0x00, 0x40, 0x00,
+0x14, 0x00, 0xe8, 0xff, 0xaa, 0xff, 0x8a, 0xff, 0x74, 0xff, 0x66, 0xff, 0x64, 0xff, 0x80, 0xff,
+0xa8, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x38, 0x00, 0x4c, 0x00, 0x5a, 0x00, 0x6e, 0x00, 0x62, 0x00,
+0x4e, 0x00, 0x24, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xac, 0xff, 0x9e, 0xff, 0x90, 0xff, 0x82, 0xff,
+0x90, 0xff, 0x9a, 0xff, 0xc2, 0xff, 0xe4, 0xff, 0x06, 0x00, 0x28, 0x00, 0x34, 0x00, 0x44, 0x00,
+0x50, 0x00, 0x4a, 0x00, 0x3c, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xee, 0xff, 0xcc, 0xff, 0xc0, 0xff,
+0xb6, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0xbc, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xfa, 0xff, 0x0e, 0x00,
+0x20, 0x00, 0x22, 0x00, 0x24, 0x00, 0x26, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf4, 0xff,
+0xe0, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xc2, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xd4, 0xff, 0xda, 0xff,
+0xe6, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0x0a, 0x00, 0x04, 0x00, 0x02, 0x00,
+0x0c, 0x00, 0x06, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0xee, 0xff, 0xf0, 0xff,
+0xd4, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xe4, 0xff,
+0xf8, 0xff, 0x04, 0x00, 0x08, 0x00, 0x1a, 0x00, 0x22, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x1c, 0x00,
+0x06, 0x00, 0xf4, 0xff, 0xe0, 0xff, 0xc4, 0xff, 0xb2, 0xff, 0xaa, 0xff, 0xb0, 0xff, 0xa6, 0xff,
+0xb2, 0xff, 0xce, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0x1e, 0x00, 0x48, 0x00, 0x48, 0x00, 0x46, 0x00,
+0x38, 0x00, 0x30, 0x00, 0x10, 0x00, 0x04, 0x00, 0xde, 0xff, 0xac, 0xff, 0x94, 0xff, 0x86, 0xff,
+0x88, 0xff, 0x90, 0xff, 0xa8, 0xff, 0xc8, 0xff, 0xec, 0xff, 0x10, 0x00, 0x56, 0x00, 0x68, 0x00,
+0x6e, 0x00, 0x72, 0x00, 0x56, 0x00, 0x44, 0x00, 0x24, 0x00, 0xfc, 0xff, 0xc0, 0xff, 0x8e, 0xff,
+0x78, 0xff, 0x64, 0xff, 0x62, 0xff, 0x7e, 0xff, 0xa2, 0xff, 0xd2, 0xff, 0xfc, 0xff, 0x2c, 0x00,
+0x66, 0x00, 0x82, 0x00, 0x92, 0x00, 0x8c, 0x00, 0x6c, 0x00, 0x34, 0x00, 0x0e, 0x00, 0xe0, 0xff,
+0x92, 0xff, 0x76, 0xff, 0x48, 0xff, 0x40, 0xff, 0x46, 0xff, 0x68, 0xff, 0x9c, 0xff, 0xd2, 0xff,
+0x14, 0x00, 0x46, 0x00, 0x84, 0x00, 0xa2, 0x00, 0xac, 0x00, 0x96, 0x00, 0x76, 0x00, 0x32, 0x00,
+0xfe, 0xff, 0xc6, 0xff, 0x8c, 0xff, 0x5a, 0xff, 0x34, 0xff, 0x32, 0xff, 0x3a, 0xff, 0x66, 0xff,
+0xb2, 0xff, 0xec, 0xff, 0x26, 0x00, 0x6a, 0x00, 0xa2, 0x00, 0xb4, 0x00, 0xae, 0x00, 0x9a, 0x00,
+0x6e, 0x00, 0x20, 0x00, 0xee, 0xff, 0xb6, 0xff, 0x68, 0xff, 0x3e, 0xff, 0x20, 0xff, 0x20, 0xff,
+0x3a, 0xff, 0x6e, 0xff, 0xc0, 0xff, 0xfa, 0xff, 0x2a, 0x00, 0x70, 0x00, 0xa0, 0x00, 0xba, 0x00,
+0xa8, 0x00, 0x8c, 0x00, 0x50, 0x00, 0x0a, 0x00, 0xde, 0xff, 0x9c, 0xff, 0x62, 0xff, 0x34, 0xff,
+0x26, 0xff, 0x26, 0xff, 0x50, 0xff, 0x92, 0xff, 0xca, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x7a, 0x00,
+0xa8, 0x00, 0xbe, 0x00, 0x9c, 0x00, 0x78, 0x00, 0x40, 0x00, 0x06, 0x00, 0xd2, 0xff, 0x9e, 0xff,
+0x64, 0xff, 0x3e, 0xff, 0x2e, 0xff, 0x40, 0xff, 0x6c, 0xff, 0x9e, 0xff, 0xe0, 0xff, 0x1c, 0x00,
+0x4c, 0x00, 0x78, 0x00, 0x92, 0x00, 0x92, 0x00, 0x82, 0x00, 0x58, 0x00, 0x2c, 0x00, 0xf8, 0xff,
+0xc2, 0xff, 0x92, 0xff, 0x68, 0xff, 0x44, 0xff, 0x42, 0xff, 0x5e, 0xff, 0x74, 0xff, 0xb4, 0xff,
+0xea, 0xff, 0x20, 0x00, 0x4e, 0x00, 0x62, 0x00, 0x80, 0x00, 0x7c, 0x00, 0x66, 0x00, 0x56, 0x00,
+0x22, 0x00, 0xfa, 0xff, 0xc6, 0xff, 0xa0, 0xff, 0x8a, 0xff, 0x74, 0xff, 0x72, 0xff, 0x82, 0xff,
+0x96, 0xff, 0xcc, 0xff, 0xfa, 0xff, 0x20, 0x00, 0x42, 0x00, 0x4c, 0x00, 0x5c, 0x00, 0x58, 0x00,
+0x58, 0x00, 0x38, 0x00, 0x10, 0x00, 0xe8, 0xff, 0xcc, 0xff, 0xb2, 0xff, 0xa0, 0xff, 0x8a, 0xff,
+0x90, 0xff, 0xa0, 0xff, 0xc0, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0x0c, 0x00, 0x26, 0x00, 0x28, 0x00,
+0x2c, 0x00, 0x2c, 0x00, 0x26, 0x00, 0x18, 0x00, 0x04, 0x00, 0xea, 0xff, 0xdc, 0xff, 0xce, 0xff,
+0xbe, 0xff, 0xbe, 0xff, 0xc2, 0xff, 0xce, 0xff, 0xda, 0xff, 0xe6, 0xff, 0xfa, 0xff, 0xf8, 0xff,
+0x06, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x12, 0x00, 0x10, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xfa, 0xff,
+0xf6, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xde, 0xff,
+0xd8, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xe2, 0xff, 0xf8, 0xff, 0x04, 0x00,
+0x12, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x16, 0x00, 0x16, 0x00, 0x08, 0x00, 0xfe, 0xff, 0xea, 0xff,
+0xde, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xb4, 0xff, 0xae, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xd8, 0xff,
+0xf4, 0xff, 0x12, 0x00, 0x1e, 0x00, 0x26, 0x00, 0x34, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x36, 0x00,
+0x1a, 0x00, 0xf6, 0xff, 0xd6, 0xff, 0xc2, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0x90, 0xff, 0x98, 0xff,
+0xae, 0xff, 0xbe, 0xff, 0xe4, 0xff, 0xfa, 0xff, 0x2e, 0x00, 0x3c, 0x00, 0x56, 0x00, 0x60, 0x00,
+0x5a, 0x00, 0x50, 0x00, 0x28, 0x00, 0xf8, 0xff, 0xca, 0xff, 0xa8, 0xff, 0x8c, 0xff, 0x70, 0xff,
+0x6e, 0xff, 0x80, 0xff, 0x90, 0xff, 0xac, 0xff, 0xdc, 0xff, 0x0e, 0x00, 0x44, 0x00, 0x68, 0x00,
+0x8c, 0x00, 0x8c, 0x00, 0x76, 0x00, 0x62, 0x00, 0x34, 0x00, 0xf8, 0xff, 0xc8, 0xff, 0x94, 0xff,
+0x78, 0xff, 0x56, 0xff, 0x54, 0xff, 0x5e, 0xff, 0x88, 0xff, 0xba, 0xff, 0xe8, 0xff, 0x32, 0x00,
+0x5e, 0x00, 0x8c, 0x00, 0xb0, 0x00, 0xa2, 0x00, 0x90, 0x00, 0x5c, 0x00, 0x22, 0x00, 0xf2, 0xff,
+0xb6, 0xff, 0x78, 0xff, 0x4a, 0xff, 0x32, 0xff, 0x3e, 0xff, 0x56, 0xff, 0x88, 0xff, 0xd2, 0xff,
+0xf8, 0xff, 0x36, 0x00, 0x76, 0x00, 0xa6, 0x00, 0xc2, 0x00, 0xae, 0x00, 0x86, 0x00, 0x46, 0x00,
+0x12, 0x00, 0xd4, 0xff, 0x96, 0xff, 0x62, 0xff, 0x38, 0xff, 0x34, 0xff, 0x3e, 0xff, 0x5e, 0xff,
+0x9c, 0xff, 0xe0, 0xff, 0x0c, 0x00, 0x54, 0x00, 0x8e, 0x00, 0xb2, 0x00, 0xc6, 0x00, 0xa6, 0x00,
+0x7e, 0x00, 0x3a, 0x00, 0xfc, 0xff, 0xcc, 0xff, 0x80, 0xff, 0x5e, 0xff, 0x30, 0xff, 0x26, 0xff,
+0x40, 0xff, 0x66, 0xff, 0xa2, 0xff, 0xea, 0xff, 0x18, 0x00, 0x5c, 0x00, 0x96, 0x00, 0xa8, 0x00,
+0xb2, 0x00, 0x98, 0x00, 0x64, 0x00, 0x20, 0x00, 0xea, 0xff, 0xb2, 0xff, 0x82, 0xff, 0x4a, 0xff,
+0x2e, 0xff, 0x2e, 0xff, 0x46, 0xff, 0x72, 0xff, 0xa8, 0xff, 0xf0, 0xff, 0x28, 0x00, 0x58, 0x00,
+0x8a, 0x00, 0xa4, 0x00, 0xa2, 0x00, 0x88, 0x00, 0x5e, 0x00, 0x20, 0x00, 0xec, 0xff, 0xb0, 0xff,
+0x82, 0xff, 0x62, 0xff, 0x42, 0xff, 0x4e, 0xff, 0x5e, 0xff, 0x86, 0xff, 0xc2, 0xff, 0xfc, 0xff,
+0x32, 0x00, 0x62, 0x00, 0x88, 0x00, 0x90, 0x00, 0x84, 0x00, 0x6a, 0x00, 0x4c, 0x00, 0x0c, 0x00,
+0xe6, 0xff, 0xb4, 0xff, 0x80, 0xff, 0x72, 0xff, 0x62, 0xff, 0x68, 0xff, 0x7a, 0xff, 0x9c, 0xff,
+0xd4, 0xff, 0x0a, 0x00, 0x34, 0x00, 0x52, 0x00, 0x5a, 0x00, 0x5e, 0x00, 0x66, 0x00, 0x52, 0x00,
+0x30, 0x00, 0x04, 0x00, 0xe4, 0xff, 0xb8, 0xff, 0xa0, 0xff, 0x98, 0xff, 0x92, 0xff, 0x9e, 0xff,
+0xa2, 0xff, 0xc0, 0xff, 0xf0, 0xff, 0x0c, 0x00, 0x28, 0x00, 0x3a, 0x00, 0x3c, 0x00, 0x4a, 0x00,
+0x44, 0x00, 0x32, 0x00, 0x20, 0x00, 0xfe, 0xff, 0xea, 0xff, 0xd2, 0xff, 0xbe, 0xff, 0xce, 0xff,
+0xbc, 0xff, 0xb2, 0xff, 0xc8, 0xff, 0xda, 0xff, 0xee, 0xff, 0xfc, 0xff, 0x06, 0x00, 0x1c, 0x00,
+0x14, 0x00, 0x1c, 0x00, 0x22, 0x00, 0x12, 0x00, 0x0a, 0x00, 0xfc, 0xff, 0xf6, 0xff, 0xf4, 0xff,
+0xea, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xec, 0xff,
+0xf2, 0xff, 0xee, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x0c, 0x00,
+0x08, 0x00, 0x08, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xf0, 0xff, 0x02, 0x00, 0xec, 0xff, 0xda, 0xff,
+0xdc, 0xff, 0xd6, 0xff, 0xc0, 0xff, 0xca, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xe8, 0xff, 0xf0, 0xff,
+0xfa, 0xff, 0x06, 0x00, 0x1a, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x12, 0x00, 0x0c, 0x00, 0x04, 0x00,
+0xf2, 0xff, 0xd2, 0xff, 0xba, 0xff, 0xaa, 0xff, 0x94, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xb2, 0xff,
+0xd0, 0xff, 0xf0, 0xff, 0x06, 0x00, 0x22, 0x00, 0x3c, 0x00, 0x48, 0x00, 0x3c, 0x00, 0x30, 0x00,
+0x28, 0x00, 0x10, 0x00, 0xe2, 0xff, 0xcc, 0xff, 0xaa, 0xff, 0x82, 0xff, 0x74, 0xff, 0x82, 0xff,
+0x98, 0xff, 0xa4, 0xff, 0xc8, 0xff, 0xf8, 0xff, 0x1e, 0x00, 0x42, 0x00, 0x68, 0x00, 0x74, 0x00,
+0x64, 0x00, 0x50, 0x00, 0x3a, 0x00, 0x18, 0x00, 0xe8, 0xff, 0xba, 0xff, 0x8e, 0xff, 0x6c, 0xff,
+0x56, 0xff, 0x5e, 0xff, 0x82, 0xff, 0xa2, 0xff, 0xc8, 0xff, 0x00, 0x00, 0x2e, 0x00, 0x60, 0x00,
+0x80, 0x00, 0x88, 0x00, 0x8c, 0x00, 0x70, 0x00, 0x40, 0x00, 0x18, 0x00, 0xec, 0xff, 0xb2, 0xff,
+0x7e, 0xff, 0x54, 0xff, 0x4c, 0xff, 0x56, 0xff, 0x76, 0xff, 0xaa, 0xff, 0xd8, 0xff, 0x12, 0x00,
+0x46, 0x00, 0x74, 0x00, 0x9a, 0x00, 0xa4, 0x00, 0x94, 0x00, 0x7c, 0x00, 0x44, 0x00, 0x0e, 0x00,
+0xea, 0xff, 0x9e, 0xff, 0x60, 0xff, 0x52, 0xff, 0x3c, 0xff, 0x4e, 0xff, 0x72, 0xff, 0xaa, 0xff,
+0xea, 0xff, 0x14, 0x00, 0x5a, 0x00, 0x88, 0x00, 0xb0, 0x00, 0xb6, 0x00, 0x9a, 0x00, 0x7a, 0x00,
+0x38, 0x00, 0x00, 0x00, 0xce, 0xff, 0x7e, 0xff, 0x52, 0xff, 0x40, 0xff, 0x2e, 0xff, 0x46, 0xff,
+0x78, 0xff, 0xb8, 0xff, 0xf8, 0xff, 0x24, 0x00, 0x6c, 0x00, 0x98, 0x00, 0xb6, 0x00, 0xb4, 0x00,
+0x90, 0x00, 0x70, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xbe, 0xff, 0x70, 0xff, 0x40, 0xff, 0x36, 0xff,
+0x2c, 0xff, 0x4e, 0xff, 0x84, 0xff, 0xbe, 0xff, 0x02, 0x00, 0x2a, 0x00, 0x70, 0x00, 0xa6, 0x00,
+0xa8, 0x00, 0x9e, 0x00, 0x94, 0x00, 0x58, 0x00, 0x12, 0x00, 0xe0, 0xff, 0xa4, 0xff, 0x6c, 0xff,
+0x3e, 0xff, 0x2c, 0xff, 0x3c, 0xff, 0x68, 0xff, 0x92, 0xff, 0xc8, 0xff, 0x00, 0x00, 0x3c, 0x00,
+0x6c, 0x00, 0x8a, 0x00, 0x88, 0x00, 0x78, 0x00, 0x64, 0x00, 0x2c, 0x00, 0xfc, 0xff, 0xce, 0xff,
+0x92, 0xff, 0x64, 0xff, 0x58, 0xff, 0x4c, 0xff, 0x6c, 0xff, 0x84, 0xff, 0xa8, 0xff, 0xe8, 0xff,
+0x06, 0x00, 0x38, 0x00, 0x5c, 0x00, 0x68, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x4a, 0x00, 0x1c, 0x00,
+0xf2, 0xff, 0xca, 0xff, 0x9e, 0xff, 0x88, 0xff, 0x80, 0xff, 0x7e, 0xff, 0x88, 0xff, 0xa2, 0xff,
+0xc6, 0xff, 0xf0, 0xff, 0x0a, 0x00, 0x26, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x40, 0x00,
+0x30, 0x00, 0x04, 0x00, 0xee, 0xff, 0xcc, 0xff, 0xb4, 0xff, 0xaa, 0xff, 0xb0, 0xff, 0xa6, 0xff,
+0xac, 0xff, 0xb8, 0xff, 0xce, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x1e, 0x00, 0x1e, 0x00, 0x22, 0x00,
+0x2e, 0x00, 0x26, 0x00, 0x14, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xf6, 0xff, 0xe0, 0xff, 0xda, 0xff,
+0xda, 0xff, 0xc4, 0xff, 0xcc, 0xff, 0xd2, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x00, 0x00,
+0x04, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x0a, 0x00,
+0x02, 0x00, 0xf6, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xce, 0xff,
+0xda, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xea, 0xff, 0xfe, 0xff, 0x04, 0x00, 0x10, 0x00,
+0x1e, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xf4, 0xff,
+0xd8, 0xff, 0xc6, 0xff, 0xc0, 0xff, 0xb4, 0xff, 0xc4, 0xff, 0xbe, 0xff, 0xca, 0xff, 0xea, 0xff,
+0x02, 0x00, 0x12, 0x00, 0x28, 0x00, 0x42, 0x00, 0x40, 0x00, 0x3c, 0x00, 0x32, 0x00, 0x20, 0x00,
+0x04, 0x00, 0xee, 0xff, 0xc8, 0xff, 0xa0, 0xff, 0x94, 0xff, 0x84, 0xff, 0x8c, 0xff, 0x9a, 0xff,
+0xa4, 0xff, 0xcc, 0xff, 0xee, 0xff, 0x0a, 0x00, 0x36, 0x00, 0x50, 0x00, 0x5e, 0x00, 0x54, 0x00,
+0x40, 0x00, 0x28, 0x00, 0x02, 0x00, 0xde, 0xff, 0xa8, 0xff, 0x90, 0xff, 0x6a, 0xff, 0x60, 0xff,
+0x6a, 0xff, 0x84, 0xff, 0x9e, 0xff, 0xd6, 0xff, 0x00, 0x00, 0x2c, 0x00, 0x60, 0x00, 0x70, 0x00,
+0x82, 0x00, 0x74, 0x00, 0x58, 0x00, 0x34, 0x00, 0xfa, 0xff, 0xc6, 0xff, 0x90, 0xff, 0x6a, 0xff,
+0x52, 0xff, 0x48, 0xff, 0x54, 0xff, 0x84, 0xff, 0xac, 0xff, 0xda, 0xff, 0x14, 0x00, 0x4c, 0x00,
+0x7c, 0x00, 0x94, 0x00, 0x90, 0x00, 0x86, 0x00, 0x56, 0x00, 0x1e, 0x00, 0xf2, 0xff, 0xb2, 0xff,
+0x7e, 0xff, 0x46, 0xff, 0x34, 0xff, 0x40, 0xff, 0x54, 0xff, 0x84, 0xff, 0xc0, 0xff, 0xf2, 0xff,
+0x2a, 0x00, 0x66, 0x00, 0x9c, 0x00, 0xba, 0x00, 0xb6, 0x00, 0x92, 0x00, 0x68, 0x00, 0x1a, 0x00,
+0xea, 0xff, 0xb8, 0xff, 0x6c, 0xff, 0x4e, 0xff, 0x36, 0xff, 0x38, 0xff, 0x62, 0xff, 0x8e, 0xff,
+0xd8, 0xff, 0x0a, 0x00, 0x4a, 0x00, 0x92, 0x00, 0xb2, 0x00, 0xd2, 0x00, 0xb8, 0x00, 0x90, 0x00,
+0x58, 0x00, 0x12, 0x00, 0xec, 0xff, 0xa2, 0xff, 0x5c, 0xff, 0x34, 0xff, 0x26, 0xff, 0x2e, 0xff,
+0x60, 0xff, 0x9c, 0xff, 0xe0, 0xff, 0x0e, 0x00, 0x52, 0x00, 0x8e, 0x00, 0xac, 0x00, 0xc2, 0x00,
+0xaa, 0x00, 0x88, 0x00, 0x42, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x8e, 0xff, 0x5c, 0xff, 0x3e, 0xff,
+0x34, 0xff, 0x4a, 0xff, 0x6c, 0xff, 0xb4, 0xff, 0xec, 0xff, 0x28, 0x00, 0x60, 0x00, 0x8a, 0x00,
+0xae, 0x00, 0xae, 0x00, 0x9a, 0x00, 0x66, 0x00, 0x30, 0x00, 0xfc, 0xff, 0xb8, 0xff, 0x9a, 0xff,
+0x6a, 0xff, 0x46, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x8a, 0xff, 0xc2, 0xff, 0xfe, 0xff, 0x2a, 0x00,
+0x56, 0x00, 0x72, 0x00, 0x80, 0x00, 0x82, 0x00, 0x68, 0x00, 0x4a, 0x00, 0x12, 0x00, 0xe0, 0xff,
+0xa8, 0xff, 0x7e, 0xff, 0x68, 0xff, 0x5a, 0xff, 0x6a, 0xff, 0x7c, 0xff, 0x9e, 0xff, 0xce, 0xff,
+0xf0, 0xff, 0x1e, 0x00, 0x50, 0x00, 0x62, 0x00, 0x6a, 0x00, 0x56, 0x00, 0x48, 0x00, 0x28, 0x00,
+0x04, 0x00, 0xe4, 0xff, 0xb6, 0xff, 0x9e, 0xff, 0x8e, 0xff, 0x84, 0xff, 0x90, 0xff, 0xa2, 0xff,
+0xbe, 0xff, 0xe8, 0xff, 0x04, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x40, 0x00, 0x38, 0x00, 0x32, 0x00,
+0x32, 0x00, 0x18, 0x00, 0xf0, 0xff, 0xe0, 0xff, 0xc2, 0xff, 0xae, 0xff, 0xac, 0xff, 0xae, 0xff,
+0xb2, 0xff, 0xb6, 0xff, 0xc6, 0xff, 0xdc, 0xff, 0xf4, 0xff, 0x04, 0x00, 0x0e, 0x00, 0x10, 0x00,
+0x14, 0x00, 0x1c, 0x00, 0x08, 0x00, 0x04, 0x00, 0xf2, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xdc, 0xff,
+0xe0, 0xff, 0xd4, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xf4, 0xff,
+0xf4, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x04, 0x00, 0xfe, 0xff, 0x10, 0x00, 0x0c, 0x00,
+0x0a, 0x00, 0x14, 0x00, 0x06, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xfa, 0xff, 0xf2, 0xff, 0xe0, 0xff,
+0xd6, 0xff, 0xce, 0xff, 0xc4, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xee, 0xff, 0xfc, 0xff,
+0x08, 0x00, 0x1e, 0x00, 0x2e, 0x00, 0x26, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x0e, 0x00, 0xfe, 0xff,
+0xe6, 0xff, 0xd0, 0xff, 0xb4, 0xff, 0xa0, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0xaa, 0xff, 0xda, 0xff,
+0xee, 0xff, 0x00, 0x00, 0x24, 0x00, 0x42, 0x00, 0x56, 0x00, 0x58, 0x00, 0x4e, 0x00, 0x40, 0x00,
+0x28, 0x00, 0x06, 0x00, 0xf0, 0xff, 0xc0, 0xff, 0x94, 0xff, 0x84, 0xff, 0x84, 0xff, 0x90, 0xff,
+0x9e, 0xff, 0xc4, 0xff, 0xf0, 0xff, 0x08, 0x00, 0x46, 0x00, 0x5a, 0x00, 0x64, 0x00, 0x70, 0x00,
+0x58, 0x00, 0x44, 0x00, 0x22, 0x00, 0xf4, 0xff, 0xc8, 0xff, 0x8c, 0xff, 0x6a, 0xff, 0x5a, 0xff,
+0x56, 0xff, 0x66, 0xff, 0x90, 0xff, 0xc8, 0xff, 0xe8, 0xff, 0x24, 0x00, 0x50, 0x00, 0x68, 0x00,
+0x80, 0x00, 0x80, 0x00, 0x72, 0x00, 0x42, 0x00, 0x1a, 0x00, 0xe4, 0xff, 0xae, 0xff, 0x80, 0xff,
+0x56, 0xff, 0x42, 0xff, 0x4c, 0xff, 0x62, 0xff, 0x96, 0xff, 0xce, 0xff, 0x04, 0x00, 0x38, 0x00,
+0x66, 0x00, 0x90, 0x00, 0x9c, 0x00, 0x94, 0x00, 0x80, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0xce, 0xff,
+0x94, 0xff, 0x6c, 0xff, 0x3e, 0xff, 0x2e, 0xff, 0x3a, 0xff, 0x56, 0xff, 0x92, 0xff, 0xda, 0xff,
+0x10, 0x00, 0x3c, 0x00, 0x70, 0x00, 0x92, 0x00, 0xa6, 0x00, 0x8e, 0x00, 0x6c, 0x00, 0x34, 0x00,
+0xf6, 0xff, 0xca, 0xff, 0x8c, 0xff, 0x58, 0xff, 0x30, 0xff, 0x20, 0xff, 0x3a, 0xff, 0x74, 0xff,
+0xa8, 0xff, 0xec, 0xff, 0x1e, 0x00, 0x50, 0x00, 0x88, 0x00, 0xa4, 0x00, 0xb0, 0x00, 0xa8, 0x00,
+0x6a, 0x00, 0x32, 0x00, 0xfa, 0xff, 0xc4, 0xff, 0x86, 0xff, 0x58, 0xff, 0x3c, 0xff, 0x3a, 0xff,
+0x50, 0xff, 0x7a, 0xff, 0xb8, 0xff, 0xf4, 0xff, 0x30, 0x00, 0x60, 0x00, 0x94, 0x00, 0xa4, 0x00,
+0xa4, 0x00, 0x90, 0x00, 0x5e, 0x00, 0x24, 0x00, 0xf2, 0xff, 0xba, 0xff, 0x80, 0xff, 0x54, 0xff,
+0x34, 0xff, 0x3e, 0xff, 0x54, 0xff, 0x86, 0xff, 0xbc, 0xff, 0xfa, 0xff, 0x28, 0x00, 0x60, 0x00,
+0x8a, 0x00, 0x9a, 0x00, 0x98, 0x00, 0x72, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xde, 0xff, 0xb0, 0xff,
+0x7c, 0xff, 0x6a, 0xff, 0x54, 0xff, 0x5c, 0xff, 0x7c, 0xff, 0x9c, 0xff, 0xda, 0xff, 0x04, 0x00,
+0x3e, 0x00, 0x5a, 0x00, 0x74, 0x00, 0x88, 0x00, 0x70, 0x00, 0x58, 0x00, 0x32, 0x00, 0x06, 0x00,
+0xde, 0xff, 0xb0, 0xff, 0x9a, 0xff, 0x8e, 0xff, 0x7e, 0xff, 0x80, 0xff, 0x92, 0xff, 0xb8, 0xff,
+0xdc, 0xff, 0xfe, 0xff, 0x26, 0x00, 0x2e, 0x00, 0x42, 0x00, 0x40, 0x00, 0x40, 0x00, 0x34, 0x00,
+0x0e, 0x00, 0xee, 0xff, 0xda, 0xff, 0xba, 0xff, 0xaa, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0xa6, 0xff,
+0xba, 0xff, 0xce, 0xff, 0xee, 0xff, 0x04, 0x00, 0x16, 0x00, 0x22, 0x00, 0x26, 0x00, 0x26, 0x00,
+0x24, 0x00, 0x10, 0x00, 0xfa, 0xff, 0xf6, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xc8, 0xff, 0xd2, 0xff,
+0xd0, 0xff, 0xd2, 0xff, 0xe2, 0xff, 0xde, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xfc, 0xff,
+0xf8, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xec, 0xff,
+0xf4, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xdc, 0xff, 0xdc, 0xff,
+0xe4, 0xff, 0xde, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0x0c, 0x00,
+0x16, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x04, 0x00, 0x02, 0x00, 0xf2, 0xff,
+0xd4, 0xff, 0xc8, 0xff, 0xba, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xd8, 0xff, 0xe4, 0xff, 0xf0, 0xff,
+0x08, 0x00, 0x12, 0x00, 0x30, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x3a, 0x00, 0x1a, 0x00, 0x10, 0x00,
+0xf8, 0xff, 0xd4, 0xff, 0xc2, 0xff, 0xa0, 0xff, 0x90, 0xff, 0xa0, 0xff, 0xa6, 0xff, 0xb4, 0xff,
+0xcc, 0xff, 0xf6, 0xff, 0x18, 0x00, 0x40, 0x00, 0x52, 0x00, 0x54, 0x00, 0x52, 0x00, 0x46, 0x00,
+0x3e, 0x00, 0x12, 0x00, 0xf4, 0xff, 0xc8, 0xff, 0x90, 0xff, 0x88, 0xff, 0x76, 0xff, 0x76, 0xff,
+0x9a, 0xff, 0xa2, 0xff, 0xd4, 0xff, 0xfe, 0xff, 0x28, 0x00, 0x52, 0x00, 0x6e, 0x00, 0x76, 0x00,
+0x7c, 0x00, 0x62, 0x00, 0x3c, 0x00, 0x10, 0x00, 0xdc, 0xff, 0xac, 0xff, 0x78, 0xff, 0x52, 0xff,
+0x44, 0xff, 0x56, 0xff, 0x74, 0xff, 0x9e, 0xff, 0xd6, 0xff, 0x06, 0x00, 0x3c, 0x00, 0x72, 0x00,
+0x86, 0x00, 0x9a, 0x00, 0x80, 0x00, 0x70, 0x00, 0x30, 0x00, 0xfc, 0xff, 0xcc, 0xff, 0x88, 0xff,
+0x56, 0xff, 0x34, 0xff, 0x2e, 0xff, 0x3a, 0xff, 0x7a, 0xff, 0xac, 0xff, 0xe4, 0xff, 0x1e, 0x00,
+0x5a, 0x00, 0x92, 0x00, 0xa2, 0x00, 0xac, 0x00, 0x90, 0x00, 0x60, 0x00, 0x2c, 0x00, 0xf0, 0xff,
+0xc2, 0xff, 0x7a, 0xff, 0x40, 0xff, 0x32, 0xff, 0x2c, 0xff, 0x4c, 0xff, 0x8a, 0xff, 0xca, 0xff,
+0xf8, 0xff, 0x2a, 0x00, 0x70, 0x00, 0x9a, 0x00, 0xb6, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x52, 0x00,
+0x08, 0x00, 0xde, 0xff, 0xaa, 0xff, 0x5c, 0xff, 0x42, 0xff, 0x28, 0xff, 0x3c, 0xff, 0x56, 0xff,
+0x8c, 0xff, 0xd8, 0xff, 0x06, 0x00, 0x3e, 0x00, 0x72, 0x00, 0x9e, 0x00, 0xac, 0x00, 0x96, 0x00,
+0x7a, 0x00, 0x40, 0x00, 0x00, 0x00, 0xd8, 0xff, 0x9c, 0xff, 0x66, 0xff, 0x3e, 0xff, 0x44, 0xff,
+0x5a, 0xff, 0x72, 0xff, 0xb2, 0xff, 0xea, 0xff, 0x1a, 0x00, 0x4a, 0x00, 0x7c, 0x00, 0x96, 0x00,
+0x9e, 0x00, 0x96, 0x00, 0x6a, 0x00, 0x32, 0x00, 0x00, 0x00, 0xca, 0xff, 0x9a, 0xff, 0x70, 0xff,
+0x54, 0xff, 0x56, 0xff, 0x62, 0xff, 0x88, 0xff, 0xbc, 0xff, 0xf0, 0xff, 0x1c, 0x00, 0x46, 0x00,
+0x64, 0x00, 0x80, 0x00, 0x88, 0x00, 0x72, 0x00, 0x4e, 0x00, 0x1c, 0x00, 0xea, 0xff, 0xb0, 0xff,
+0x96, 0xff, 0x80, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x82, 0xff, 0xa6, 0xff, 0xd0, 0xff, 0xf6, 0xff,
+0x26, 0x00, 0x4c, 0x00, 0x54, 0x00, 0x68, 0x00, 0x64, 0x00, 0x4e, 0x00, 0x30, 0x00, 0x08, 0x00,
+0xe4, 0xff, 0xb8, 0xff, 0xa0, 0xff, 0x92, 0xff, 0x86, 0xff, 0x8a, 0xff, 0xa2, 0xff, 0xc6, 0xff,
+0xe4, 0xff, 0xfe, 0xff, 0x16, 0x00, 0x36, 0x00, 0x3e, 0x00, 0x42, 0x00, 0x46, 0x00, 0x36, 0x00,
+0x14, 0x00, 0xf2, 0xff, 0xe0, 0xff, 0xca, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xae, 0xff,
+0xbe, 0xff, 0xd2, 0xff, 0xda, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0x10, 0x00, 0x0e, 0x00, 0x16, 0x00,
+0x20, 0x00, 0x14, 0x00, 0x0e, 0x00, 0xf4, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xda, 0xff,
+0xec, 0xff, 0xdc, 0xff, 0xd2, 0xff, 0xde, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xf2, 0xff,
+0xea, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00,
+0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0xf4, 0xff, 0xee, 0xff, 0xd4, 0xff, 0xcc, 0xff,
+0xb4, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xd2, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0x06, 0x00,
+0x18, 0x00, 0x26, 0x00, 0x30, 0x00, 0x26, 0x00, 0x1c, 0x00, 0x0c, 0x00, 0xf8, 0xff, 0xe2, 0xff,
+0xc8, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0xae, 0xff, 0xbc, 0xff, 0xca, 0xff, 0xea, 0xff,
+0x02, 0x00, 0x24, 0x00, 0x44, 0x00, 0x50, 0x00, 0x60, 0x00, 0x48, 0x00, 0x3a, 0x00, 0x26, 0x00,
+0x06, 0x00, 0xe2, 0xff, 0xb4, 0xff, 0x94, 0xff, 0x8c, 0xff, 0x8a, 0xff, 0x7e, 0xff, 0xa0, 0xff,
+0xbc, 0xff, 0xe8, 0xff, 0x08, 0x00, 0x40, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x7a, 0x00, 0x64, 0x00,
+0x48, 0x00, 0x30, 0x00, 0xfa, 0xff, 0xca, 0xff, 0x94, 0xff, 0x6e, 0xff, 0x64, 0xff, 0x5c, 0xff,
+0x74, 0xff, 0x8e, 0xff, 0xc2, 0xff, 0xf2, 0xff, 0x20, 0x00, 0x64, 0x00, 0x8a, 0x00, 0x9e, 0x00,
+0x9a, 0x00, 0x7e, 0x00, 0x50, 0x00, 0x1e, 0x00, 0xf6, 0xff, 0xac, 0xff, 0x72, 0xff, 0x5c, 0xff,
+0x44, 0xff, 0x42, 0xff, 0x60, 0xff, 0x92, 0xff, 0xd2, 0xff, 0x02, 0x00, 0x38, 0x00, 0x80, 0x00,
+0x9c, 0x00, 0xb6, 0x00, 0xa4, 0x00, 0x80, 0x00, 0x52, 0x00, 0x0a, 0x00, 0xd6, 0xff, 0xa0, 0xff,
+0x62, 0xff, 0x48, 0xff, 0x2c, 0xff, 0x34, 0xff, 0x5a, 0xff, 0x82, 0xff, 0xda, 0xff, 0x04, 0x00,
+0x3e, 0x00, 0x82, 0x00, 0x9a, 0x00, 0xb2, 0x00, 0xa0, 0x00, 0x74, 0x00, 0x42, 0x00, 0x10, 0x00,
+0xe0, 0xff, 0x92, 0xff, 0x62, 0xff, 0x40, 0xff, 0x30, 0xff, 0x38, 0xff, 0x5e, 0xff, 0xa2, 0xff,
+0xe0, 0xff, 0x0c, 0x00, 0x4a, 0x00, 0x82, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0x98, 0x00, 0x7c, 0x00,
+0x32, 0x00, 0x02, 0x00, 0xd0, 0xff, 0x94, 0xff, 0x5a, 0xff, 0x3c, 0xff, 0x34, 0xff, 0x4c, 0xff,
+0x74, 0xff, 0xb0, 0xff, 0xf2, 0xff, 0x1e, 0x00, 0x5a, 0x00, 0x7e, 0x00, 0x9e, 0x00, 0x9c, 0x00,
+0x86, 0x00, 0x62, 0x00, 0x1c, 0x00, 0xec, 0xff, 0xb2, 0xff, 0x8a, 0xff, 0x58, 0xff, 0x44, 0xff,
+0x4c, 0xff, 0x56, 0xff, 0x90, 0xff, 0xca, 0xff, 0x02, 0x00, 0x34, 0x00, 0x60, 0x00, 0x84, 0x00,
+0x90, 0x00, 0x82, 0x00, 0x6e, 0x00, 0x4a, 0x00, 0x10, 0x00, 0xdc, 0xff, 0xba, 0xff, 0x8e, 0xff,
+0x6e, 0xff, 0x64, 0xff, 0x6c, 0xff, 0x8a, 0xff, 0xa8, 0xff, 0xe8, 0xff, 0x14, 0x00, 0x2c, 0x00,
+0x52, 0x00, 0x58, 0x00, 0x70, 0x00, 0x66, 0x00, 0x50, 0x00, 0x2c, 0x00, 0xfe, 0xff, 0xe6, 0xff,
+0xb0, 0xff, 0x9e, 0xff, 0x84, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0xa2, 0xff, 0xc2, 0xff, 0xec, 0xff,
+0x0c, 0x00, 0x20, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x42, 0x00, 0x44, 0x00, 0x32, 0x00, 0x1a, 0x00,
+0xf0, 0xff, 0xe6, 0xff, 0xce, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xac, 0xff, 0xb0, 0xff, 0xba, 0xff,
+0xd8, 0xff, 0xec, 0xff, 0x02, 0x00, 0x10, 0x00, 0x24, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x20, 0x00,
+0x16, 0x00, 0x08, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xc8, 0xff, 0xd0, 0xff,
+0xd8, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0xfc, 0xff,
+0xfe, 0xff, 0xfc, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x06, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xf2, 0xff,
+0xec, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xd0, 0xff,
+0xd2, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xf8, 0xff, 0x00, 0x00, 0x0a, 0x00, 0x0a, 0x00,
+0x1e, 0x00, 0x1c, 0x00, 0x10, 0x00, 0x0a, 0x00, 0xf4, 0xff, 0xf6, 0xff, 0xe4, 0xff, 0xd0, 0xff,
+0xbe, 0xff, 0xac, 0xff, 0xbc, 0xff, 0xca, 0xff, 0xca, 0xff, 0xde, 0xff, 0xf2, 0xff, 0x08, 0x00,
+0x1a, 0x00, 0x28, 0x00, 0x30, 0x00, 0x3a, 0x00, 0x2a, 0x00, 0x24, 0x00, 0x0a, 0x00, 0xf2, 0xff,
+0xe2, 0xff, 0xb2, 0xff, 0x9a, 0xff, 0x92, 0xff, 0x94, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xd4, 0xff,
+0xf4, 0xff, 0x10, 0x00, 0x36, 0x00, 0x4c, 0x00, 0x56, 0x00, 0x5c, 0x00, 0x50, 0x00, 0x3e, 0x00,
+0x1c, 0x00, 0xf2, 0xff, 0xc4, 0xff, 0xa2, 0xff, 0x8c, 0xff, 0x76, 0xff, 0x7a, 0xff, 0x8e, 0xff,
+0xa0, 0xff, 0xd0, 0xff, 0xfe, 0xff, 0x2a, 0x00, 0x58, 0x00, 0x6a, 0x00, 0x8c, 0x00, 0x7e, 0x00,
+0x70, 0x00, 0x52, 0x00, 0x18, 0x00, 0xf2, 0xff, 0xb2, 0xff, 0x7e, 0xff, 0x64, 0xff, 0x54, 0xff,
+0x54, 0xff, 0x70, 0xff, 0x92, 0xff, 0xc8, 0xff, 0x06, 0x00, 0x3e, 0x00, 0x72, 0x00, 0x8e, 0x00,
+0xa8, 0x00, 0xa0, 0x00, 0x7c, 0x00, 0x48, 0x00, 0x10, 0x00, 0xd6, 0xff, 0x96, 0xff, 0x5e, 0xff,
+0x42, 0xff, 0x34, 0xff, 0x3e, 0xff, 0x68, 0xff, 0xa6, 0xff, 0xdc, 0xff, 0x10, 0x00, 0x60, 0x00,
+0x90, 0x00, 0xa8, 0x00, 0xc4, 0x00, 0xa6, 0x00, 0x78, 0x00, 0x30, 0x00, 0xf2, 0xff, 0xc4, 0xff,
+0x78, 0xff, 0x44, 0xff, 0x24, 0xff, 0x28, 0xff, 0x48, 0xff, 0x70, 0xff, 0xba, 0xff, 0xf8, 0xff,
+0x1e, 0x00, 0x60, 0x00, 0x9c, 0x00, 0xb6, 0x00, 0xb8, 0x00, 0x9c, 0x00, 0x5e, 0x00, 0x1c, 0x00,
+0xe0, 0xff, 0xac, 0xff, 0x60, 0xff, 0x38, 0xff, 0x22, 0xff, 0x22, 0xff, 0x48, 0xff, 0x6e, 0xff,
+0xb6, 0xff, 0xf6, 0xff, 0x2e, 0x00, 0x70, 0x00, 0x9a, 0x00, 0xae, 0x00, 0xac, 0x00, 0x88, 0x00,
+0x58, 0x00, 0x1c, 0x00, 0xd8, 0xff, 0x9c, 0xff, 0x60, 0xff, 0x3e, 0xff, 0x2a, 0xff, 0x3a, 0xff,
+0x52, 0xff, 0x84, 0xff, 0xc4, 0xff, 0x0a, 0x00, 0x3a, 0x00, 0x74, 0x00, 0x9a, 0x00, 0xa6, 0x00,
+0xa4, 0x00, 0x76, 0x00, 0x48, 0x00, 0x0a, 0x00, 0xd0, 0xff, 0x8c, 0xff, 0x60, 0xff, 0x44, 0xff,
+0x34, 0xff, 0x4c, 0xff, 0x62, 0xff, 0x94, 0xff, 0xd8, 0xff, 0x0c, 0x00, 0x42, 0x00, 0x7c, 0x00,
+0x8c, 0x00, 0x94, 0x00, 0x82, 0x00, 0x5c, 0x00, 0x32, 0x00, 0xfa, 0xff, 0xc8, 0xff, 0x9a, 0xff,
+0x84, 0xff, 0x64, 0xff, 0x62, 0xff, 0x6a, 0xff, 0x8c, 0xff, 0xbe, 0xff, 0xec, 0xff, 0x12, 0x00,
+0x42, 0x00, 0x62, 0x00, 0x6c, 0x00, 0x72, 0x00, 0x70, 0x00, 0x4a, 0x00, 0x24, 0x00, 0xfa, 0xff,
+0xd8, 0xff, 0xba, 0xff, 0xae, 0xff, 0xa2, 0xff, 0x94, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xd6, 0xff,
+0xf2, 0xff, 0x0c, 0x00, 0x28, 0x00, 0x34, 0x00, 0x42, 0x00, 0x40, 0x00, 0x38, 0x00, 0x1e, 0x00,
+0x0e, 0x00, 0xee, 0xff, 0xe2, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xb6, 0xff, 0xbc, 0xff,
+0xc4, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0x0c, 0x00, 0x04, 0x00, 0x10, 0x00, 0x1a, 0x00,
+0x16, 0x00, 0x08, 0x00, 0x04, 0x00, 0xfa, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe8, 0xff,
+0xda, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xe8, 0xff,
+0xe2, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x14, 0x00,
+0x06, 0x00, 0xfc, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xca, 0xff, 0xb8, 0xff, 0xae, 0xff,
+0xb4, 0xff, 0xba, 0xff, 0xba, 0xff, 0xc8, 0xff, 0xe0, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x1e, 0x00,
+0x30, 0x00, 0x30, 0x00, 0x24, 0x00, 0x28, 0x00, 0x0e, 0x00, 0xf0, 0xff, 0xe0, 0xff, 0xc0, 0xff,
+0xae, 0xff, 0x96, 0xff, 0x98, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xc2, 0xff, 0xe4, 0xff, 0x00, 0x00,
+0x1e, 0x00, 0x42, 0x00, 0x50, 0x00, 0x5e, 0x00, 0x3c, 0x00, 0x34, 0x00, 0x26, 0x00, 0xf6, 0xff,
+0xe4, 0xff, 0xae, 0xff, 0x8e, 0xff, 0x74, 0xff, 0x70, 0xff, 0x76, 0xff, 0x88, 0xff, 0xaa, 0xff,
+0xd2, 0xff, 0x04, 0x00, 0x34, 0x00, 0x62, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6a, 0x00, 0x58, 0x00,
+0x38, 0x00, 0xfe, 0xff, 0xd2, 0xff, 0x9c, 0xff, 0x6a, 0xff, 0x5a, 0xff, 0x50, 0xff, 0x5c, 0xff,
+0x7c, 0xff, 0xb2, 0xff, 0xe0, 0xff, 0x1a, 0x00, 0x5e, 0x00, 0x8a, 0x00, 0xa2, 0x00, 0x9c, 0x00,
+0x90, 0x00, 0x6a, 0x00, 0x3e, 0x00, 0xfe, 0xff, 0xca, 0xff, 0x8e, 0xff, 0x5c, 0xff, 0x46, 0xff,
+0x3c, 0xff, 0x52, 0xff, 0x7e, 0xff, 0xba, 0xff, 0xfa, 0xff, 0x32, 0x00, 0x64, 0x00, 0x9e, 0x00,
+0xaa, 0x00, 0xac, 0x00, 0x8c, 0x00, 0x5a, 0x00, 0x1c, 0x00, 0xe6, 0xff, 0xb8, 0xff, 0x76, 0xff,
+0x48, 0xff, 0x22, 0xff, 0x38, 0xff, 0x58, 0xff, 0x8a, 0xff, 0xcc, 0xff, 0xfa, 0xff, 0x40, 0x00,
+0x7e, 0x00, 0x9e, 0x00, 0xae, 0x00, 0xa8, 0x00, 0x8c, 0x00, 0x52, 0x00, 0x0c, 0x00, 0xd8, 0xff,
+0xa6, 0xff, 0x6c, 0xff, 0x34, 0xff, 0x2a, 0xff, 0x3c, 0xff, 0x60, 0xff, 0x9a, 0xff, 0xe2, 0xff,
+0x0e, 0x00, 0x4c, 0x00, 0x80, 0x00, 0x9c, 0x00, 0xae, 0x00, 0xa2, 0x00, 0x82, 0x00, 0x42, 0x00,
+0x00, 0x00, 0xc0, 0xff, 0x92, 0xff, 0x5c, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x3e, 0xff, 0x62, 0xff,
+0xa2, 0xff, 0xe0, 0xff, 0x12, 0x00, 0x44, 0x00, 0x78, 0x00, 0x8c, 0x00, 0x96, 0x00, 0x82, 0x00,
+0x64, 0x00, 0x2e, 0x00, 0xea, 0xff, 0xae, 0xff, 0x7e, 0xff, 0x5a, 0xff, 0x38, 0xff, 0x3a, 0xff,
+0x56, 0xff, 0x7e, 0xff, 0xb6, 0xff, 0xf4, 0xff, 0x28, 0x00, 0x58, 0x00, 0x7c, 0x00, 0x86, 0x00,
+0x84, 0x00, 0x70, 0x00, 0x4a, 0x00, 0x14, 0x00, 0xee, 0xff, 0xae, 0xff, 0x7e, 0xff, 0x62, 0xff,
+0x56, 0xff, 0x5a, 0xff, 0x7e, 0xff, 0x9a, 0xff, 0xc6, 0xff, 0x00, 0x00, 0x2e, 0x00, 0x50, 0x00,
+0x5e, 0x00, 0x70, 0x00, 0x66, 0x00, 0x52, 0x00, 0x32, 0x00, 0x04, 0x00, 0xe2, 0xff, 0xaa, 0xff,
+0x8c, 0xff, 0x7e, 0xff, 0x76, 0xff, 0x80, 0xff, 0x90, 0xff, 0xb8, 0xff, 0xe2, 0xff, 0x00, 0x00,
+0x14, 0x00, 0x38, 0x00, 0x50, 0x00, 0x4c, 0x00, 0x50, 0x00, 0x42, 0x00, 0x22, 0x00, 0x06, 0x00,
+0xea, 0xff, 0xce, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xc0, 0xff, 0xda, 0xff,
+0xf0, 0xff, 0x00, 0x00, 0x10, 0x00, 0x26, 0x00, 0x24, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x22, 0x00,
+0x12, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xe4, 0xff, 0xd2, 0xff, 0xdc, 0xff, 0xc8, 0xff, 0xd6, 0xff,
+0xd6, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00,
+0x10, 0x00, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xf8, 0xff,
+0xfa, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xee, 0xff, 0xea, 0xff, 0xda, 0xff, 0xda, 0xff, 0xde, 0xff,
+0xde, 0xff, 0xe4, 0xff, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x1c, 0x00, 0x1e, 0x00,
+0x26, 0x00, 0x1a, 0x00, 0x14, 0x00, 0x08, 0x00, 0xf8, 0xff, 0xe0, 0xff, 0xcc, 0xff, 0xb4, 0xff,
+0xaa, 0xff, 0xb0, 0xff, 0xbc, 0xff, 0xbe, 0xff, 0xd4, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0x18, 0x00,
+0x30, 0x00, 0x40, 0x00, 0x3c, 0x00, 0x36, 0x00, 0x24, 0x00, 0x0a, 0x00, 0xf0, 0xff, 0xd6, 0xff,
+0xb2, 0xff, 0x94, 0xff, 0x84, 0xff, 0x8c, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xc4, 0xff, 0xf0, 0xff,
+0x06, 0x00, 0x34, 0x00, 0x54, 0x00, 0x54, 0x00, 0x66, 0x00, 0x52, 0x00, 0x3a, 0x00, 0x1a, 0x00,
+0xe6, 0xff, 0xc8, 0xff, 0xa6, 0xff, 0x82, 0xff, 0x68, 0xff, 0x68, 0xff, 0x7c, 0xff, 0x9c, 0xff,
+0xc0, 0xff, 0xf0, 0xff, 0x20, 0x00, 0x4a, 0x00, 0x66, 0x00, 0x80, 0x00, 0x7c, 0x00, 0x6e, 0x00,
+0x46, 0x00, 0x10, 0x00, 0xe0, 0xff, 0xa8, 0xff, 0x7e, 0xff, 0x5a, 0xff, 0x42, 0xff, 0x3c, 0xff,
+0x62, 0xff, 0x90, 0xff, 0xc8, 0xff, 0x00, 0x00, 0x32, 0x00, 0x66, 0x00, 0x8c, 0x00, 0xa2, 0x00,
+0xa2, 0x00, 0x8c, 0x00, 0x44, 0x00, 0x12, 0x00, 0xd6, 0xff, 0xa8, 0xff, 0x70, 0xff, 0x48, 0xff,
+0x40, 0xff, 0x3a, 0xff, 0x6a, 0xff, 0x98, 0xff, 0xda, 0xff, 0x0c, 0x00, 0x46, 0x00, 0x82, 0x00,
+0xac, 0x00, 0xba, 0x00, 0xb0, 0x00, 0x8e, 0x00, 0x40, 0x00, 0x08, 0x00, 0xd2, 0xff, 0x8e, 0xff,
+0x64, 0xff, 0x34, 0xff, 0x22, 0xff, 0x36, 0xff, 0x5c, 0xff, 0xa4, 0xff, 0xdc, 0xff, 0x1c, 0x00,
+0x5a, 0x00, 0x8c, 0x00, 0xb8, 0x00, 0xc8, 0x00, 0xb0, 0x00, 0x78, 0x00, 0x44, 0x00, 0xf6, 0xff,
+0xcc, 0xff, 0x82, 0xff, 0x46, 0xff, 0x32, 0xff, 0x28, 0xff, 0x3c, 0xff, 0x6c, 0xff, 0xb6, 0xff,
+0xec, 0xff, 0x2a, 0x00, 0x6c, 0x00, 0x9c, 0x00, 0xbe, 0x00, 0xb8, 0x00, 0xa0, 0x00, 0x74, 0x00,
+0x2a, 0x00, 0xf2, 0xff, 0xbc, 0xff, 0x7c, 0xff, 0x4a, 0xff, 0x2e, 0xff, 0x42, 0xff, 0x50, 0xff,
+0x78, 0xff, 0xbe, 0xff, 0xf8, 0xff, 0x2a, 0x00, 0x68, 0x00, 0x96, 0x00, 0x9e, 0x00, 0xa0, 0x00,
+0x78, 0x00, 0x4e, 0x00, 0x10, 0x00, 0xd8, 0xff, 0xa4, 0xff, 0x6c, 0xff, 0x48, 0xff, 0x3c, 0xff,
+0x4a, 0xff, 0x6c, 0xff, 0x92, 0xff, 0xbe, 0xff, 0x0a, 0x00, 0x44, 0x00, 0x6a, 0x00, 0x80, 0x00,
+0x88, 0x00, 0x80, 0x00, 0x60, 0x00, 0x36, 0x00, 0x02, 0x00, 0xd0, 0xff, 0x9c, 0xff, 0x84, 0xff,
+0x6c, 0xff, 0x60, 0xff, 0x76, 0xff, 0x8e, 0xff, 0xb8, 0xff, 0xea, 0xff, 0x0e, 0x00, 0x42, 0x00,
+0x5a, 0x00, 0x68, 0x00, 0x5a, 0x00, 0x58, 0x00, 0x3c, 0x00, 0x14, 0x00, 0xf2, 0xff, 0xc6, 0xff,
+0xac, 0xff, 0x98, 0xff, 0x94, 0xff, 0x94, 0xff, 0x9e, 0xff, 0xac, 0xff, 0xd0, 0xff, 0xee, 0xff,
+0x02, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x2c, 0x00, 0x2e, 0x00, 0x2c, 0x00, 0x1a, 0x00, 0x04, 0x00,
+0xf2, 0xff, 0xd8, 0xff, 0xc6, 0xff, 0xbe, 0xff, 0xc0, 0xff, 0xbc, 0xff, 0xc0, 0xff, 0xca, 0xff,
+0xe2, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x10, 0x00, 0x14, 0x00, 0x12, 0x00, 0x18, 0x00, 0x10, 0x00,
+0x12, 0x00, 0x06, 0x00, 0xfa, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xee, 0xff, 0xe6, 0xff,
+0xe6, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xe8, 0xff,
+0xea, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0x04, 0x00, 0x06, 0x00, 0x10, 0x00, 0x10, 0x00, 0x04, 0x00,
+0x06, 0x00, 0xfc, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xc4, 0xff, 0xba, 0xff,
+0xbc, 0xff, 0xbe, 0xff, 0xde, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0x0a, 0x00, 0x24, 0x00, 0x36, 0x00,
+0x40, 0x00, 0x34, 0x00, 0x26, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xda, 0xff, 0xae, 0xff,
+0x9e, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0xac, 0xff, 0xb4, 0xff, 0xdc, 0xff, 0xfc, 0xff, 0x12, 0x00,
+0x3a, 0x00, 0x4c, 0x00, 0x50, 0x00, 0x4a, 0x00, 0x3e, 0x00, 0x28, 0x00, 0x08, 0x00, 0xec, 0xff,
+0xba, 0xff, 0x92, 0xff, 0x82, 0xff, 0x72, 0xff, 0x6a, 0xff, 0x84, 0xff, 0xa0, 0xff, 0xcc, 0xff,
+0xfc, 0xff, 0x1c, 0x00, 0x48, 0x00, 0x5e, 0x00, 0x7c, 0x00, 0x6e, 0x00, 0x54, 0x00, 0x36, 0x00,
+0x0a, 0x00, 0xec, 0xff, 0xb2, 0xff, 0x82, 0xff, 0x66, 0xff, 0x5a, 0xff, 0x56, 0xff, 0x7e, 0xff,
+0xa2, 0xff, 0xd4, 0xff, 0x18, 0x00, 0x3c, 0x00, 0x6a, 0x00, 0x7e, 0x00, 0x8e, 0x00, 0x8a, 0x00,
+0x74, 0x00, 0x42, 0x00, 0x0c, 0x00, 0xd4, 0xff, 0x96, 0xff, 0x5e, 0xff, 0x42, 0xff, 0x3e, 0xff,
+0x4c, 0xff, 0x7a, 0xff, 0xac, 0xff, 0xe4, 0xff, 0x16, 0x00, 0x50, 0x00, 0x84, 0x00, 0x9a, 0x00,
+0xa6, 0x00, 0x9e, 0x00, 0x62, 0x00, 0x2e, 0x00, 0xfc, 0xff, 0xb8, 0xff, 0x88, 0xff, 0x4a, 0xff,
+0x2c, 0xff, 0x38, 0xff, 0x54, 0xff, 0x82, 0xff, 0xc2, 0xff, 0xf6, 0xff, 0x32, 0x00, 0x7c, 0x00,
+0xa2, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0x9c, 0x00, 0x6a, 0x00, 0x20, 0x00, 0xf0, 0xff, 0xb4, 0xff,
+0x74, 0xff, 0x44, 0xff, 0x30, 0xff, 0x44, 0xff, 0x56, 0xff, 0x92, 0xff, 0xda, 0xff, 0x0a, 0x00,
+0x40, 0x00, 0x84, 0x00, 0xa4, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0x8e, 0x00, 0x48, 0x00, 0x0c, 0x00,
+0xd8, 0xff, 0x98, 0xff, 0x62, 0xff, 0x3a, 0xff, 0x2c, 0xff, 0x42, 0xff, 0x62, 0xff, 0xa0, 0xff,
+0xea, 0xff, 0x16, 0x00, 0x4c, 0x00, 0x84, 0x00, 0xa0, 0x00, 0xb0, 0x00, 0xa2, 0x00, 0x7a, 0x00,
+0x3e, 0x00, 0x02, 0x00, 0xc6, 0xff, 0x8c, 0xff, 0x66, 0xff, 0x52, 0xff, 0x44, 0xff, 0x5c, 0xff,
+0x7c, 0xff, 0xb8, 0xff, 0xec, 0xff, 0x34, 0x00, 0x54, 0x00, 0x70, 0x00, 0x90, 0x00, 0x96, 0x00,
+0x82, 0x00, 0x56, 0x00, 0x28, 0x00, 0xea, 0xff, 0xbe, 0xff, 0x88, 0xff, 0x6c, 0xff, 0x68, 0xff,
+0x54, 0xff, 0x7a, 0xff, 0x9a, 0xff, 0xae, 0xff, 0xf0, 0xff, 0x14, 0x00, 0x36, 0x00, 0x5c, 0x00,
+0x6a, 0x00, 0x6a, 0x00, 0x56, 0x00, 0x3a, 0x00, 0x04, 0x00, 0xe6, 0xff, 0xc2, 0xff, 0x9e, 0xff,
+0x94, 0xff, 0x88, 0xff, 0x80, 0xff, 0x8a, 0xff, 0xac, 0xff, 0xce, 0xff, 0xf8, 0xff, 0x16, 0x00,
+0x2c, 0x00, 0x3a, 0x00, 0x54, 0x00, 0x46, 0x00, 0x40, 0x00, 0x26, 0x00, 0x04, 0x00, 0xf2, 0xff,
+0xd4, 0xff, 0xba, 0xff, 0xbc, 0xff, 0xb0, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xce, 0xff, 0xd6, 0xff,
+0xf8, 0xff, 0x0c, 0x00, 0x14, 0x00, 0x24, 0x00, 0x1e, 0x00, 0x26, 0x00, 0x1a, 0x00, 0x08, 0x00,
+0x00, 0x00, 0xe8, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xc8, 0xff, 0xc8, 0xff,
+0xd0, 0xff, 0xe6, 0xff, 0xee, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0x02, 0x00, 0x06, 0x00,
+0x16, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x04, 0x00, 0xf4, 0xff,
+0xf8, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xe2, 0xff, 0xe8, 0xff,
+0xe2, 0xff, 0xe2, 0xff, 0xee, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x10, 0x00, 0x22, 0x00, 0x26, 0x00,
+0x14, 0x00, 0x18, 0x00, 0x0a, 0x00, 0xf4, 0xff, 0xf0, 0xff, 0xd0, 0xff, 0xc4, 0xff, 0xb8, 0xff,
+0xb6, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xc4, 0xff, 0xde, 0xff, 0xfc, 0xff, 0x14, 0x00, 0x34, 0x00,
+0x40, 0x00, 0x52, 0x00, 0x42, 0x00, 0x34, 0x00, 0x1e, 0x00, 0x04, 0x00, 0xda, 0xff, 0xbc, 0xff,
+0xa0, 0xff, 0x94, 0xff, 0x90, 0xff, 0x8c, 0xff, 0xa2, 0xff, 0xb4, 0xff, 0xea, 0xff, 0x0e, 0x00,
+0x3a, 0x00, 0x5c, 0x00, 0x68, 0x00, 0x78, 0x00, 0x60, 0x00, 0x40, 0x00, 0x1e, 0x00, 0xf8, 0xff,
+0xd8, 0xff, 0x96, 0xff, 0x76, 0xff, 0x56, 0xff, 0x56, 0xff, 0x68, 0xff, 0x86, 0xff, 0xb0, 0xff,
+0xf0, 0xff, 0x18, 0x00, 0x4a, 0x00, 0x76, 0x00, 0x8a, 0x00, 0x88, 0x00, 0x76, 0x00, 0x4c, 0x00,
+0x1c, 0x00, 0xf0, 0xff, 0xaa, 0xff, 0x80, 0xff, 0x58, 0xff, 0x3a, 0xff, 0x42, 0xff, 0x5a, 0xff,
+0x84, 0xff, 0xbc, 0xff, 0xee, 0xff, 0x26, 0x00, 0x6a, 0x00, 0x98, 0x00, 0xa8, 0x00, 0x9c, 0x00,
+0x7a, 0x00, 0x4c, 0x00, 0x18, 0x00, 0xe6, 0xff, 0xaa, 0xff, 0x70, 0xff, 0x42, 0xff, 0x24, 0xff,
+0x30, 0xff, 0x52, 0xff, 0x7e, 0xff, 0xd0, 0xff, 0xfc, 0xff, 0x36, 0x00, 0x80, 0x00, 0x9c, 0x00,
+0xb6, 0x00, 0xa8, 0x00, 0x80, 0x00, 0x4a, 0x00, 0x00, 0x00, 0xd6, 0xff, 0x9c, 0xff, 0x58, 0xff,
+0x32, 0xff, 0x22, 0xff, 0x2a, 0xff, 0x4e, 0xff, 0x90, 0xff, 0xd8, 0xff, 0x18, 0x00, 0x54, 0x00,
+0x82, 0x00, 0xb4, 0x00, 0xb8, 0x00, 0xa2, 0x00, 0x8a, 0x00, 0x44, 0x00, 0x00, 0x00, 0xda, 0xff,
+0x92, 0xff, 0x58, 0xff, 0x2c, 0xff, 0x28, 0xff, 0x3a, 0xff, 0x6c, 0xff, 0xae, 0xff, 0xe8, 0xff,
+0x1a, 0x00, 0x64, 0x00, 0x8e, 0x00, 0xaa, 0x00, 0xae, 0x00, 0x98, 0x00, 0x6a, 0x00, 0x3a, 0x00,
+0x02, 0x00, 0xc2, 0xff, 0x86, 0xff, 0x4c, 0xff, 0x40, 0xff, 0x3c, 0xff, 0x4e, 0xff, 0x88, 0xff,
+0xbc, 0xff, 0xf0, 0xff, 0x26, 0x00, 0x60, 0x00, 0x88, 0x00, 0x94, 0x00, 0x9a, 0x00, 0x82, 0x00,
+0x56, 0x00, 0x1c, 0x00, 0xee, 0xff, 0xba, 0xff, 0x88, 0xff, 0x64, 0xff, 0x52, 0xff, 0x52, 0xff,
+0x76, 0xff, 0x98, 0xff, 0xda, 0xff, 0x02, 0x00, 0x2a, 0x00, 0x62, 0x00, 0x70, 0x00, 0x80, 0x00,
+0x78, 0x00, 0x64, 0x00, 0x46, 0x00, 0x0e, 0x00, 0xec, 0xff, 0xb8, 0xff, 0x8e, 0xff, 0x72, 0xff,
+0x72, 0xff, 0x7c, 0xff, 0x86, 0xff, 0xae, 0xff, 0xe4, 0xff, 0x0c, 0x00, 0x24, 0x00, 0x4a, 0x00,
+0x58, 0x00, 0x5e, 0x00, 0x56, 0x00, 0x46, 0x00, 0x28, 0x00, 0x04, 0x00, 0xd8, 0xff, 0xb2, 0xff,
+0xa0, 0xff, 0x8e, 0xff, 0x8c, 0xff, 0x90, 0xff, 0xb0, 0xff, 0xc4, 0xff, 0xe2, 0xff, 0x08, 0x00,
+0x16, 0x00, 0x2a, 0x00, 0x2e, 0x00, 0x3c, 0x00, 0x34, 0x00, 0x28, 0x00, 0x12, 0x00, 0xf8, 0xff,
+0xe2, 0xff, 0xc6, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xc2, 0xff, 0xce, 0xff, 0xde, 0xff,
+0xec, 0xff, 0xf6, 0xff, 0x0c, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x0a, 0x00, 0x10, 0x00,
+0x00, 0x00, 0xf6, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xf4, 0xff,
+0xec, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xee, 0xff, 0xe2, 0xff,
+0xf2, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0x0a, 0x00, 0x08, 0x00, 0x18, 0x00, 0x12, 0x00, 0x12, 0x00,
+0x18, 0x00, 0x08, 0x00, 0x02, 0x00, 0xf2, 0xff, 0xda, 0xff, 0xcc, 0xff, 0xbe, 0xff, 0xcc, 0xff,
+0xce, 0xff, 0xc4, 0xff, 0xde, 0xff, 0xee, 0xff, 0x06, 0x00, 0x10, 0x00, 0x32, 0x00, 0x3a, 0x00,
+0x3e, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x1e, 0x00, 0x06, 0x00, 0xec, 0xff, 0xc6, 0xff, 0xaa, 0xff,
+0xa0, 0xff, 0xa4, 0xff, 0xae, 0xff, 0xb4, 0xff, 0xcc, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x30, 0x00,
+0x50, 0x00, 0x58, 0x00, 0x58, 0x00, 0x50, 0x00, 0x40, 0x00, 0x16, 0x00, 0xfa, 0xff, 0xce, 0xff,
+0x98, 0xff, 0x7a, 0xff, 0x80, 0xff, 0x7e, 0xff, 0x8c, 0xff, 0xa8, 0xff, 0xcc, 0xff, 0xfc, 0xff,
+0x24, 0x00, 0x54, 0x00, 0x76, 0x00, 0x82, 0x00, 0x7e, 0x00, 0x64, 0x00, 0x42, 0x00, 0x18, 0x00,
+0xda, 0xff, 0xb0, 0xff, 0x84, 0xff, 0x66, 0xff, 0x4c, 0xff, 0x58, 0xff, 0x7c, 0xff, 0xa0, 0xff,
+0xd4, 0xff, 0xfc, 0xff, 0x42, 0x00, 0x70, 0x00, 0x88, 0x00, 0xa2, 0x00, 0x92, 0x00, 0x70, 0x00,
+0x38, 0x00, 0xfe, 0xff, 0xc0, 0xff, 0x86, 0xff, 0x5a, 0xff, 0x3c, 0xff, 0x30, 0xff, 0x3c, 0xff,
+0x5a, 0xff, 0x9c, 0xff, 0xda, 0xff, 0x10, 0x00, 0x52, 0x00, 0x82, 0x00, 0xa2, 0x00, 0xaa, 0x00,
+0xa0, 0x00, 0x74, 0x00, 0x2a, 0x00, 0xee, 0xff, 0xbe, 0xff, 0x7e, 0xff, 0x4a, 0xff, 0x2a, 0xff,
+0x22, 0xff, 0x3c, 0xff, 0x68, 0xff, 0xb2, 0xff, 0xec, 0xff, 0x16, 0x00, 0x60, 0x00, 0x92, 0x00,
+0xb8, 0x00, 0xb0, 0x00, 0x90, 0x00, 0x6e, 0x00, 0x24, 0x00, 0xee, 0xff, 0xa8, 0xff, 0x76, 0xff,
+0x48, 0xff, 0x28, 0xff, 0x2a, 0xff, 0x3c, 0xff, 0x74, 0xff, 0xb2, 0xff, 0xf6, 0xff, 0x2a, 0x00,
+0x66, 0x00, 0x8e, 0x00, 0xae, 0x00, 0xb4, 0x00, 0x8e, 0x00, 0x5a, 0x00, 0x18, 0x00, 0xdc, 0xff,
+0xae, 0xff, 0x6e, 0xff, 0x40, 0xff, 0x3c, 0xff, 0x3a, 0xff, 0x5c, 0xff, 0x8a, 0xff, 0xc8, 0xff,
+0x04, 0x00, 0x40, 0x00, 0x7a, 0x00, 0x92, 0x00, 0xac, 0x00, 0x9e, 0x00, 0x7c, 0x00, 0x4a, 0x00,
+0x0e, 0x00, 0xda, 0xff, 0xa8, 0xff, 0x76, 0xff, 0x5c, 0xff, 0x52, 0xff, 0x56, 0xff, 0x6e, 0xff,
+0xa0, 0xff, 0xe6, 0xff, 0x20, 0x00, 0x42, 0x00, 0x74, 0x00, 0x92, 0x00, 0x92, 0x00, 0x84, 0x00,
+0x5c, 0x00, 0x34, 0x00, 0xfa, 0xff, 0xce, 0xff, 0xa4, 0xff, 0x82, 0xff, 0x66, 0xff, 0x64, 0xff,
+0x72, 0xff, 0x8c, 0xff, 0xbe, 0xff, 0xf4, 0xff, 0x22, 0x00, 0x44, 0x00, 0x5a, 0x00, 0x6e, 0x00,
+0x68, 0x00, 0x5c, 0x00, 0x46, 0x00, 0x1a, 0x00, 0xfa, 0xff, 0xc6, 0xff, 0xa8, 0xff, 0x9a, 0xff,
+0x88, 0xff, 0x8a, 0xff, 0x8c, 0xff, 0xac, 0xff, 0xce, 0xff, 0xfa, 0xff, 0x14, 0x00, 0x3a, 0x00,
+0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3a, 0x00, 0x2a, 0x00, 0x04, 0x00, 0xec, 0xff, 0xd0, 0xff,
+0xb6, 0xff, 0xac, 0xff, 0xa4, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xbc, 0xff, 0xda, 0xff, 0xe8, 0xff,
+0xfe, 0xff, 0x18, 0x00, 0x1e, 0x00, 0x18, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x12, 0x00, 0xfe, 0xff,
+0xea, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xce, 0xff,
+0xce, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x02, 0x00,
+0x04, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xea, 0xff,
+0xea, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xc8, 0xff, 0xcc, 0xff, 0xd0, 0xff,
+0xd4, 0xff, 0xf8, 0xff, 0x02, 0x00, 0x0a, 0x00, 0x1a, 0x00, 0x32, 0x00, 0x22, 0x00, 0x18, 0x00,
+0x1c, 0x00, 0x0a, 0x00, 0x02, 0x00, 0xee, 0xff, 0xd0, 0xff, 0xb8, 0xff, 0xa8, 0xff, 0x9e, 0xff,
+0xb4, 0xff, 0xb0, 0xff, 0xc6, 0xff, 0xe0, 0xff, 0xfa, 0xff, 0x1e, 0x00, 0x3c, 0x00, 0x50, 0x00,
+0x4a, 0x00, 0x46, 0x00, 0x3e, 0x00, 0x28, 0x00, 0x08, 0x00, 0xe6, 0xff, 0xbc, 0xff, 0xa4, 0xff,
+0x84, 0xff, 0x84, 0xff, 0x8c, 0xff, 0xaa, 0xff, 0xc4, 0xff, 0xea, 0xff, 0x0e, 0x00, 0x40, 0x00,
+0x64, 0x00, 0x64, 0x00, 0x74, 0x00, 0x66, 0x00, 0x5e, 0x00, 0x3e, 0x00, 0x06, 0x00, 0xde, 0xff,
+0xaa, 0xff, 0x7a, 0xff, 0x66, 0xff, 0x64, 0xff, 0x6a, 0xff, 0x86, 0xff, 0xb6, 0xff, 0xe6, 0xff,
+0x0e, 0x00, 0x52, 0x00, 0x72, 0x00, 0x94, 0x00, 0xa0, 0x00, 0x8a, 0x00, 0x60, 0x00, 0x34, 0x00,
+0x02, 0x00, 0xc6, 0xff, 0x98, 0xff, 0x5c, 0xff, 0x48, 0xff, 0x3c, 0xff, 0x5e, 0xff, 0x82, 0xff,
+0xba, 0xff, 0xfc, 0xff, 0x20, 0x00, 0x60, 0x00, 0x92, 0x00, 0xae, 0x00, 0xa6, 0x00, 0x92, 0x00,
+0x6a, 0x00, 0x2a, 0x00, 0xf4, 0xff, 0xba, 0xff, 0x7e, 0xff, 0x40, 0xff, 0x2e, 0xff, 0x2c, 0xff,
+0x4c, 0xff, 0x82, 0xff, 0xc0, 0xff, 0xf6, 0xff, 0x2c, 0x00, 0x72, 0x00, 0x9a, 0x00, 0xb6, 0x00,
+0xb0, 0x00, 0x8c, 0x00, 0x4c, 0x00, 0x08, 0x00, 0xd6, 0xff, 0x96, 0xff, 0x56, 0xff, 0x28, 0xff,
+0x1c, 0xff, 0x30, 0xff, 0x56, 0xff, 0x88, 0xff, 0xda, 0xff, 0x0a, 0x00, 0x40, 0x00, 0x86, 0x00,
+0xa8, 0x00, 0xb0, 0x00, 0xa2, 0x00, 0x7e, 0x00, 0x40, 0x00, 0xfa, 0xff, 0xc8, 0xff, 0x92, 0xff,
+0x4a, 0xff, 0x26, 0xff, 0x26, 0xff, 0x3c, 0xff, 0x64, 0xff, 0xa8, 0xff, 0xec, 0xff, 0x1a, 0x00,
+0x56, 0x00, 0x82, 0x00, 0xa6, 0x00, 0xb4, 0x00, 0x9c, 0x00, 0x72, 0x00, 0x20, 0x00, 0xe6, 0xff,
+0xae, 0xff, 0x7c, 0xff, 0x46, 0xff, 0x30, 0xff, 0x2e, 0xff, 0x50, 0xff, 0x7c, 0xff, 0xac, 0xff,
+0xfa, 0xff, 0x28, 0x00, 0x56, 0x00, 0x84, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x84, 0x00, 0x5a, 0x00,
+0x1e, 0x00, 0xec, 0xff, 0xb6, 0xff, 0x86, 0xff, 0x5e, 0xff, 0x54, 0xff, 0x58, 0xff, 0x7a, 0xff,
+0x96, 0xff, 0xd0, 0xff, 0x02, 0x00, 0x32, 0x00, 0x66, 0x00, 0x74, 0x00, 0x96, 0x00, 0x84, 0x00,
+0x72, 0x00, 0x46, 0x00, 0x0e, 0x00, 0xe8, 0xff, 0xb8, 0xff, 0x9e, 0xff, 0x88, 0xff, 0x86, 0xff,
+0x80, 0xff, 0x9a, 0xff, 0xb6, 0xff, 0xde, 0xff, 0x08, 0x00, 0x2e, 0x00, 0x42, 0x00, 0x42, 0x00,
+0x52, 0x00, 0x4c, 0x00, 0x48, 0x00, 0x20, 0x00, 0xfc, 0xff, 0xe6, 0xff, 0xcc, 0xff, 0xb4, 0xff,
+0xaa, 0xff, 0xac, 0xff, 0xae, 0xff, 0xb8, 0xff, 0xd2, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0x14, 0x00,
+0x30, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x22, 0x00, 0x06, 0x00, 0xf4, 0xff, 0xec, 0xff,
+0xdc, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xc8, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xde, 0xff, 0xfa, 0xff,
+0xfc, 0xff, 0xf6, 0xff, 0x0a, 0x00, 0x04, 0x00, 0x08, 0x00, 0x02, 0x00, 0x02, 0x00, 0xf6, 0xff,
+0xf4, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xd8, 0xff, 0xd8, 0xff,
+0xe0, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xe4, 0xff,
+0xe6, 0xff, 0xea, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00,
+0xfc, 0xff, 0xf2, 0xff, 0xe0, 0xff, 0xd2, 0xff, 0xc4, 0xff, 0xb8, 0xff, 0xbe, 0xff, 0xc8, 0xff,
+0xc2, 0xff, 0xda, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0x10, 0x00, 0x28, 0x00, 0x30, 0x00, 0x30, 0x00,
+0x2a, 0x00, 0x10, 0x00, 0x08, 0x00, 0xe6, 0xff, 0xca, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0x94, 0xff,
+0x98, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0xbc, 0xff, 0xe4, 0xff, 0x06, 0x00, 0x34, 0x00, 0x4c, 0x00,
+0x56, 0x00, 0x56, 0x00, 0x3e, 0x00, 0x34, 0x00, 0x10, 0x00, 0xea, 0xff, 0xc8, 0xff, 0x92, 0xff,
+0x7a, 0xff, 0x6c, 0xff, 0x70, 0xff, 0x8c, 0xff, 0xa0, 0xff, 0xca, 0xff, 0x04, 0x00, 0x2c, 0x00,
+0x52, 0x00, 0x7c, 0x00, 0x84, 0x00, 0x86, 0x00, 0x68, 0x00, 0x4c, 0x00, 0x1e, 0x00, 0xe6, 0xff,
+0xb4, 0xff, 0x90, 0xff, 0x78, 0xff, 0x5c, 0xff, 0x58, 0xff, 0x6a, 0xff, 0x9c, 0xff, 0xca, 0xff,
+0x02, 0x00, 0x3a, 0x00, 0x70, 0x00, 0x94, 0x00, 0x9e, 0x00, 0x94, 0x00, 0x78, 0x00, 0x48, 0x00,
+0x10, 0x00, 0xdc, 0xff, 0x9e, 0xff, 0x72, 0xff, 0x4c, 0xff, 0x32, 0xff, 0x44, 0xff, 0x6a, 0xff,
+0x9e, 0xff, 0xde, 0xff, 0x14, 0x00, 0x4c, 0x00, 0x8c, 0x00, 0xa6, 0x00, 0xbc, 0x00, 0xac, 0x00,
+0x7c, 0x00, 0x4a, 0x00, 0x04, 0x00, 0xdc, 0xff, 0xa6, 0xff, 0x6c, 0xff, 0x4c, 0xff, 0x36, 0xff,
+0x46, 0xff, 0x6c, 0xff, 0xac, 0xff, 0xf0, 0xff, 0x22, 0x00, 0x66, 0x00, 0x96, 0x00, 0xb6, 0x00,
+0xbc, 0x00, 0xa4, 0x00, 0x74, 0x00, 0x36, 0x00, 0xfa, 0xff, 0xc8, 0xff, 0x84, 0xff, 0x4e, 0xff,
+0x2a, 0xff, 0x12, 0xff, 0x42, 0xff, 0x66, 0xff, 0xa2, 0xff, 0xf2, 0xff, 0x1e, 0x00, 0x60, 0x00,
+0x92, 0x00, 0xa4, 0x00, 0xb4, 0x00, 0x8a, 0x00, 0x52, 0x00, 0x20, 0x00, 0xe6, 0xff, 0xb0, 0xff,
+0x74, 0xff, 0x4c, 0xff, 0x2c, 0xff, 0x30, 0xff, 0x4c, 0xff, 0x7e, 0xff, 0xc4, 0xff, 0x04, 0x00,
+0x2e, 0x00, 0x64, 0x00, 0x94, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0x82, 0x00, 0x5a, 0x00, 0x16, 0x00,
+0xe0, 0xff, 0xb0, 0xff, 0x7a, 0xff, 0x4a, 0xff, 0x3a, 0xff, 0x46, 0xff, 0x5e, 0xff, 0x90, 0xff,
+0xce, 0xff, 0x08, 0x00, 0x2a, 0x00, 0x60, 0x00, 0x74, 0x00, 0x8c, 0x00, 0x80, 0x00, 0x5c, 0x00,
+0x34, 0x00, 0x0a, 0x00, 0xde, 0xff, 0xa0, 0xff, 0x80, 0xff, 0x5e, 0xff, 0x56, 0xff, 0x52, 0xff,
+0x78, 0xff, 0xa0, 0xff, 0xd4, 0xff, 0xfa, 0xff, 0x34, 0x00, 0x58, 0x00, 0x68, 0x00, 0x72, 0x00,
+0x5e, 0x00, 0x5a, 0x00, 0x26, 0x00, 0x02, 0x00, 0xde, 0xff, 0xb0, 0xff, 0xa6, 0xff, 0x8a, 0xff,
+0x84, 0xff, 0x8e, 0xff, 0x9e, 0xff, 0xc6, 0xff, 0xf6, 0xff, 0x16, 0x00, 0x36, 0x00, 0x40, 0x00,
+0x42, 0x00, 0x4c, 0x00, 0x3c, 0x00, 0x34, 0x00, 0x20, 0x00, 0xfa, 0xff, 0xe2, 0xff, 0xba, 0xff,
+0xb4, 0xff, 0xa8, 0xff, 0x96, 0xff, 0xa6, 0xff, 0xc2, 0xff, 0xe0, 0xff, 0xf6, 0xff, 0x0a, 0x00,
+0x12, 0x00, 0x1e, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x16, 0x00, 0x0c, 0x00, 0xfe, 0xff, 0xf4, 0xff,
+0xe8, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xee, 0xff,
+0xf2, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x08, 0x00, 0x10, 0x00, 0x12, 0x00,
+0x0a, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xfc, 0xff, 0xf8, 0xff,
+0xf4, 0xff, 0xea, 0xff, 0xda, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xd0, 0xff, 0xd6, 0xff,
+0xe8, 0xff, 0xee, 0xff, 0xfa, 0xff, 0x0c, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x10, 0x00, 0x12, 0x00,
+0x0e, 0x00, 0xfa, 0xff, 0xf2, 0xff, 0xd4, 0xff, 0xc2, 0xff, 0xae, 0xff, 0xa0, 0xff, 0xae, 0xff,
+0xae, 0xff, 0xc4, 0xff, 0xd6, 0xff, 0xf0, 0xff, 0x04, 0x00, 0x2c, 0x00, 0x38, 0x00, 0x36, 0x00,
+0x46, 0x00, 0x3a, 0x00, 0x36, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xd2, 0xff, 0xac, 0xff, 0x9a, 0xff,
+0x8a, 0xff, 0x90, 0xff, 0x96, 0xff, 0xac, 0xff, 0xce, 0xff, 0xec, 0xff, 0x1a, 0x00, 0x36, 0x00,
+0x48, 0x00, 0x56, 0x00, 0x5a, 0x00, 0x4a, 0x00, 0x2e, 0x00, 0x10, 0x00, 0xec, 0xff, 0xbc, 0xff,
+0x92, 0xff, 0x72, 0xff, 0x5e, 0xff, 0x62, 0xff, 0x7a, 0xff, 0x90, 0xff, 0xcc, 0xff, 0xfa, 0xff,
+0x2e, 0x00, 0x64, 0x00, 0x7a, 0x00, 0x8e, 0x00, 0x8a, 0x00, 0x66, 0x00, 0x40, 0x00, 0x0e, 0x00,
+0xda, 0xff, 0xa8, 0xff, 0x72, 0xff, 0x4a, 0xff, 0x52, 0xff, 0x56, 0xff, 0x72, 0xff, 0xa8, 0xff,
+0xe0, 0xff, 0x18, 0x00, 0x4e, 0x00, 0x8a, 0x00, 0xa8, 0x00, 0xba, 0x00, 0xa8, 0x00, 0x80, 0x00,
+0x42, 0x00, 0x08, 0x00, 0xd4, 0xff, 0x88, 0xff, 0x52, 0xff, 0x2a, 0xff, 0x2e, 0xff, 0x48, 0xff,
+0x6c, 0xff, 0xb6, 0xff, 0xee, 0xff, 0x24, 0x00, 0x5c, 0x00, 0x90, 0x00, 0xaa, 0x00, 0xb2, 0x00,
+0xa0, 0x00, 0x6a, 0x00, 0x2c, 0x00, 0xf6, 0xff, 0xc4, 0xff, 0x78, 0xff, 0x40, 0xff, 0x2c, 0xff,
+0x34, 0xff, 0x58, 0xff, 0x78, 0xff, 0xc6, 0xff, 0x00, 0x00, 0x2e, 0x00, 0x72, 0x00, 0x9e, 0x00,
+0xbc, 0x00, 0xb8, 0x00, 0x8a, 0x00, 0x58, 0x00, 0x16, 0x00, 0xe6, 0xff, 0xa4, 0xff, 0x62, 0xff,
+0x4a, 0xff, 0x30, 0xff, 0x48, 0xff, 0x6a, 0xff, 0xa0, 0xff, 0xde, 0xff, 0x0a, 0x00, 0x40, 0x00,
+0x7e, 0x00, 0x9c, 0x00, 0xa8, 0x00, 0x98, 0x00, 0x6e, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xc4, 0xff,
+0x90, 0xff, 0x5c, 0xff, 0x44, 0xff, 0x3a, 0xff, 0x50, 0xff, 0x7a, 0xff, 0xa0, 0xff, 0xe6, 0xff,
+0x24, 0x00, 0x4a, 0x00, 0x7a, 0x00, 0x94, 0x00, 0x94, 0x00, 0x7c, 0x00, 0x56, 0x00, 0x22, 0x00,
+0xf6, 0xff, 0xb8, 0xff, 0x90, 0xff, 0x72, 0xff, 0x5c, 0xff, 0x5e, 0xff, 0x70, 0xff, 0x8a, 0xff,
+0xc2, 0xff, 0xf6, 0xff, 0x22, 0x00, 0x54, 0x00, 0x74, 0x00, 0x86, 0x00, 0x78, 0x00, 0x5e, 0x00,
+0x3a, 0x00, 0x10, 0x00, 0xe0, 0xff, 0xb6, 0xff, 0x8e, 0xff, 0x7a, 0xff, 0x74, 0xff, 0x7a, 0xff,
+0x94, 0xff, 0xa8, 0xff, 0xdc, 0xff, 0xfa, 0xff, 0x2c, 0x00, 0x3c, 0x00, 0x4a, 0x00, 0x60, 0x00,
+0x48, 0x00, 0x40, 0x00, 0x24, 0x00, 0x08, 0x00, 0xe6, 0xff, 0xbe, 0xff, 0xa6, 0xff, 0x9c, 0xff,
+0x98, 0xff, 0xa0, 0xff, 0xae, 0xff, 0xce, 0xff, 0xec, 0xff, 0x0c, 0x00, 0x1c, 0x00, 0x30, 0x00,
+0x32, 0x00, 0x30, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x0a, 0x00, 0xf8, 0xff, 0xf0, 0xff, 0xde, 0xff,
+0xcc, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xd2, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0xfa, 0xff,
+0xf8, 0xff, 0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0a, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfc, 0xff,
+0xf4, 0xff, 0xf4, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xea, 0xff,
+0xf0, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xf2, 0xff,
+0xf0, 0xff, 0x06, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x08, 0x00,
+0x00, 0x00, 0xf2, 0xff, 0xe6, 0xff, 0xcc, 0xff, 0xc0, 0xff, 0xba, 0xff, 0xbe, 0xff, 0xbc, 0xff,
+0xd0, 0xff, 0xda, 0xff, 0xf2, 0xff, 0x10, 0x00, 0x22, 0x00, 0x38, 0x00, 0x44, 0x00, 0x30, 0x00,
+0x26, 0x00, 0x16, 0x00, 0xf8, 0xff, 0xe6, 0xff, 0xc2, 0xff, 0xa0, 0xff, 0x94, 0xff, 0x8c, 0xff,
+0x94, 0xff, 0xa2, 0xff, 0xb2, 0xff, 0xea, 0xff, 0xfc, 0xff, 0x2a, 0x00, 0x4a, 0x00, 0x50, 0x00,
+0x60, 0x00, 0x4e, 0x00, 0x40, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xea, 0xff, 0xb2, 0xff, 0x8c, 0xff,
+0x78, 0xff, 0x6c, 0xff, 0x7c, 0xff, 0x8a, 0xff, 0xc2, 0xff, 0xe2, 0xff, 0x0c, 0x00, 0x44, 0x00,
+0x64, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x6c, 0x00, 0x50, 0x00, 0x2c, 0x00, 0xfc, 0xff, 0xd0, 0xff,
+0x9c, 0xff, 0x7a, 0xff, 0x54, 0xff, 0x50, 0xff, 0x64, 0xff, 0x8c, 0xff, 0xbc, 0xff, 0xe6, 0xff,
+0x22, 0x00, 0x4e, 0x00, 0x7c, 0x00, 0x98, 0x00, 0x90, 0x00, 0x7c, 0x00, 0x58, 0x00, 0x26, 0x00,
+0xf4, 0xff, 0xb6, 0xff, 0x82, 0xff, 0x4c, 0xff, 0x36, 0xff, 0x44, 0xff, 0x60, 0xff, 0x90, 0xff,
+0xd0, 0xff, 0x0a, 0x00, 0x38, 0x00, 0x76, 0x00, 0x9c, 0x00, 0xaa, 0x00, 0xa6, 0x00, 0x82, 0x00,
+0x4c, 0x00, 0x12, 0x00, 0xe8, 0xff, 0x9c, 0xff, 0x64, 0xff, 0x46, 0xff, 0x32, 0xff, 0x3e, 0xff,
+0x5e, 0xff, 0x9e, 0xff, 0xe8, 0xff, 0x0c, 0x00, 0x54, 0x00, 0x92, 0x00, 0xa4, 0x00, 0xc0, 0x00,
+0xa0, 0x00, 0x76, 0x00, 0x38, 0x00, 0xfe, 0xff, 0xcc, 0xff, 0x80, 0xff, 0x50, 0xff, 0x30, 0xff,
+0x26, 0xff, 0x40, 0xff, 0x74, 0xff, 0xb4, 0xff, 0xe8, 0xff, 0x16, 0x00, 0x58, 0x00, 0x90, 0x00,
+0xb2, 0x00, 0xb8, 0x00, 0x9e, 0x00, 0x68, 0x00, 0x2e, 0x00, 0xfc, 0xff, 0xba, 0xff, 0x7e, 0xff,
+0x4e, 0xff, 0x34, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x80, 0xff, 0xb8, 0xff, 0x00, 0x00, 0x32, 0x00,
+0x6a, 0x00, 0x8e, 0x00, 0x9e, 0x00, 0xa2, 0x00, 0x76, 0x00, 0x4e, 0x00, 0x16, 0x00, 0xd6, 0xff,
+0xa6, 0xff, 0x6e, 0xff, 0x4e, 0xff, 0x42, 0xff, 0x48, 0xff, 0x66, 0xff, 0x94, 0xff, 0xce, 0xff,
+0x00, 0x00, 0x3c, 0x00, 0x58, 0x00, 0x74, 0x00, 0x86, 0x00, 0x72, 0x00, 0x5a, 0x00, 0x28, 0x00,
+0xf4, 0xff, 0xca, 0xff, 0x96, 0xff, 0x74, 0xff, 0x66, 0xff, 0x60, 0xff, 0x76, 0xff, 0x8c, 0xff,
+0xba, 0xff, 0xec, 0xff, 0x12, 0x00, 0x34, 0x00, 0x52, 0x00, 0x5e, 0x00, 0x56, 0x00, 0x4c, 0x00,
+0x3a, 0x00, 0x12, 0x00, 0xf0, 0xff, 0xd0, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0x8c, 0xff, 0x92, 0xff,
+0x94, 0xff, 0xbc, 0xff, 0xd0, 0xff, 0xec, 0xff, 0x18, 0x00, 0x2a, 0x00, 0x2e, 0x00, 0x2e, 0x00,
+0x2e, 0x00, 0x28, 0x00, 0x1c, 0x00, 0xfa, 0xff, 0xdc, 0xff, 0xd2, 0xff, 0xca, 0xff, 0xb2, 0xff,
+0xb6, 0xff, 0xba, 0xff, 0xbc, 0xff, 0xce, 0xff, 0xd8, 0xff, 0xf4, 0xff, 0x02, 0x00, 0x0a, 0x00,
+0x1e, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x1e, 0x00, 0x0a, 0x00, 0xfe, 0xff, 0xea, 0xff, 0xe6, 0xff,
+0xe4, 0xff, 0xd6, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xf4, 0xff,
+0x04, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0xfa, 0xff, 0xfe, 0xff,
+0x02, 0x00, 0xf2, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff,
+0xee, 0xff, 0xe6, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xdc, 0xff,
+0xe8, 0xff, 0xf2, 0xff, 0x08, 0x00, 0x1c, 0x00, 0x20, 0x00, 0x26, 0x00, 0x18, 0x00, 0x10, 0x00,
+0x08, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xd0, 0xff, 0xc2, 0xff, 0xb0, 0xff, 0xae, 0xff, 0xb2, 0xff,
+0xba, 0xff, 0xde, 0xff, 0xf2, 0xff, 0x06, 0x00, 0x28, 0x00, 0x3c, 0x00, 0x44, 0x00, 0x42, 0x00,
+0x44, 0x00, 0x2e, 0x00, 0x08, 0x00, 0xee, 0xff, 0xc6, 0xff, 0x9a, 0xff, 0x8e, 0xff, 0x7e, 0xff,
+0x78, 0xff, 0x92, 0xff, 0x9a, 0xff, 0xc2, 0xff, 0xf4, 0xff, 0x18, 0x00, 0x34, 0x00, 0x62, 0x00,
+0x62, 0x00, 0x62, 0x00, 0x54, 0x00, 0x26, 0x00, 0xfa, 0xff, 0xd0, 0xff, 0xac, 0xff, 0x7e, 0xff,
+0x62, 0xff, 0x4a, 0xff, 0x58, 0xff, 0x6a, 0xff, 0x9a, 0xff, 0xd6, 0xff, 0xfe, 0xff, 0x3c, 0x00,
+0x56, 0x00, 0x78, 0x00, 0x8a, 0x00, 0x82, 0x00, 0x6c, 0x00, 0x3a, 0x00, 0x0a, 0x00, 0xd6, 0xff,
+0x92, 0xff, 0x68, 0xff, 0x46, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x5e, 0xff, 0x9a, 0xff, 0xd2, 0xff,
+0x0c, 0x00, 0x48, 0x00, 0x82, 0x00, 0xa2, 0x00, 0xae, 0x00, 0x96, 0x00, 0x6e, 0x00, 0x30, 0x00,
+0x00, 0x00, 0xca, 0xff, 0x84, 0xff, 0x52, 0xff, 0x2e, 0xff, 0x18, 0xff, 0x2e, 0xff, 0x5c, 0xff,
+0xa8, 0xff, 0xee, 0xff, 0x22, 0x00, 0x66, 0x00, 0x92, 0x00, 0xc0, 0x00, 0xc6, 0x00, 0xaa, 0x00,
+0x78, 0x00, 0x2a, 0x00, 0xf0, 0xff, 0xca, 0xff, 0x78, 0xff, 0x4a, 0xff, 0x26, 0xff, 0x1e, 0xff,
+0x48, 0xff, 0x74, 0xff, 0xc4, 0xff, 0x02, 0x00, 0x36, 0x00, 0x78, 0x00, 0xa2, 0x00, 0xbc, 0x00,
+0xc0, 0x00, 0x96, 0x00, 0x6a, 0x00, 0x24, 0x00, 0xe8, 0xff, 0xae, 0xff, 0x6c, 0xff, 0x46, 0xff,
+0x2e, 0xff, 0x38, 0xff, 0x54, 0xff, 0x8e, 0xff, 0xca, 0xff, 0x0a, 0x00, 0x40, 0x00, 0x78, 0x00,
+0x96, 0x00, 0xb4, 0x00, 0xa2, 0x00, 0x80, 0x00, 0x52, 0x00, 0x10, 0x00, 0xe4, 0xff, 0xa8, 0xff,
+0x6c, 0xff, 0x46, 0xff, 0x38, 0xff, 0x44, 0xff, 0x74, 0xff, 0xa8, 0xff, 0xde, 0xff, 0x12, 0x00,
+0x3a, 0x00, 0x70, 0x00, 0x90, 0x00, 0xa6, 0x00, 0x90, 0x00, 0x6a, 0x00, 0x30, 0x00, 0xc4, 0xff,
+0x7a, 0xff, 0x50, 0xff, 0x4e, 0xff, 0x76, 0xff, 0x8c, 0xff, 0xb8, 0xff, 0xee, 0xff, 0x1a, 0x00,
+0x4e, 0x00, 0x56, 0x00, 0x72, 0x00, 0x6a, 0x00, 0x5e, 0x00, 0x52, 0x00, 0x14, 0x00, 0xec, 0xff,
+0xc8, 0xff, 0x9c, 0xff, 0x82, 0xff, 0x6e, 0xff, 0x76, 0xff, 0x82, 0xff, 0x9e, 0xff, 0xd6, 0xff,
+0xf6, 0xff, 0x0a, 0x00, 0x32, 0x00, 0x40, 0x00, 0x42, 0x00, 0x48, 0x00, 0x3e, 0x00, 0x2e, 0x00,
+0x0c, 0x00, 0xe6, 0xff, 0xcc, 0xff, 0xb0, 0xff, 0xa8, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0xa4, 0xff,
+0xc2, 0xff, 0xe0, 0xff, 0xf2, 0xff, 0x08, 0x00, 0x20, 0x00, 0x24, 0x00, 0x22, 0x00, 0x2c, 0x00,
+0x22, 0x00, 0x10, 0x00, 0xfe, 0xff, 0xf4, 0xff, 0xdc, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xbc, 0xff,
+0xbc, 0xff, 0xc0, 0xff, 0xd4, 0xff, 0xea, 0xff, 0xee, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0x08, 0x00,
+0x04, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfe, 0xff,
+0xfe, 0xff, 0xf8, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xd6, 0xff, 0xe2, 0xff,
+0xde, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x10, 0x00, 0x16, 0x00,
+0x16, 0x00, 0x28, 0x00, 0x1c, 0x00, 0x22, 0x00, 0x16, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xda, 0xff,
+0xc4, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xbc, 0xff, 0xc4, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xfc, 0xff,
+0x12, 0x00, 0x24, 0x00, 0x32, 0x00, 0x36, 0x00, 0x3e, 0x00, 0x34, 0x00, 0x22, 0x00, 0xfe, 0xff,
+0xf0, 0xff, 0xc6, 0xff, 0xa0, 0xff, 0x94, 0xff, 0x92, 0xff, 0x9a, 0xff, 0xa6, 0xff, 0xbe, 0xff,
+0xe8, 0xff, 0xfe, 0xff, 0x28, 0x00, 0x48, 0x00, 0x5c, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x4a, 0x00,
+0x2a, 0x00, 0x04, 0x00, 0xe4, 0xff, 0xae, 0xff, 0x82, 0xff, 0x70, 0xff, 0x64, 0xff, 0x76, 0xff,
+0x8e, 0xff, 0xb6, 0xff, 0xe2, 0xff, 0x0a, 0x00, 0x40, 0x00, 0x5e, 0x00, 0x8a, 0x00, 0x86, 0x00,
+0x6e, 0x00, 0x4a, 0x00, 0x22, 0x00, 0xf8, 0xff, 0xae, 0xff, 0x86, 0xff, 0x5c, 0xff, 0x40, 0xff,
+0x30, 0xff, 0x58, 0xff, 0x82, 0xff, 0xae, 0xff, 0xe4, 0xff, 0x1e, 0x00, 0x5c, 0x00, 0x8c, 0x00,
+0xa6, 0x00, 0xa4, 0x00, 0x8e, 0x00, 0x56, 0x00, 0x24, 0x00, 0xe8, 0xff, 0xa8, 0xff, 0x6e, 0xff,
+0x42, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x44, 0xff, 0x7e, 0xff, 0xbc, 0xff, 0xec, 0xff, 0x2c, 0x00,
+0x72, 0x00, 0xa4, 0x00, 0xbe, 0x00, 0xb6, 0x00, 0x90, 0x00, 0x5c, 0x00, 0x0e, 0x00, 0xde, 0xff,
+0x92, 0xff, 0x50, 0xff, 0x30, 0xff, 0x1a, 0xff, 0x20, 0xff, 0x4e, 0xff, 0x86, 0xff, 0xd0, 0xff,
+0xfe, 0xff, 0x46, 0x00, 0x88, 0x00, 0xb0, 0x00, 0xc6, 0x00, 0xb2, 0x00, 0x8a, 0x00, 0x42, 0x00,
+0x02, 0x00, 0xc4, 0xff, 0x82, 0xff, 0x50, 0xff, 0x2a, 0xff, 0x28, 0xff, 0x3c, 0xff, 0x60, 0xff,
+0xaa, 0xff, 0xe2, 0xff, 0x22, 0x00, 0x58, 0x00, 0x94, 0x00, 0xb4, 0x00, 0xbc, 0x00, 0xac, 0x00,
+0x76, 0x00, 0x36, 0x00, 0xf2, 0xff, 0xc4, 0xff, 0x80, 0xff, 0x54, 0xff, 0x3c, 0xff, 0x3a, 0xff,
+0x56, 0xff, 0x84, 0xff, 0xb6, 0xff, 0xfc, 0xff, 0x30, 0x00, 0x62, 0x00, 0x9a, 0x00, 0xa0, 0x00,
+0xac, 0x00, 0x84, 0x00, 0x56, 0x00, 0x26, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0x7a, 0xff, 0x62, 0xff,
+0x4a, 0xff, 0x54, 0xff, 0x66, 0xff, 0x94, 0xff, 0xca, 0xff, 0x08, 0x00, 0x40, 0x00, 0x62, 0x00,
+0x82, 0x00, 0x90, 0x00, 0x80, 0x00, 0x6a, 0x00, 0x42, 0x00, 0x0a, 0x00, 0xd6, 0xff, 0xaa, 0xff,
+0x8e, 0xff, 0x74, 0xff, 0x6e, 0xff, 0x74, 0xff, 0x90, 0xff, 0xa4, 0xff, 0xea, 0xff, 0x1a, 0x00,
+0x40, 0x00, 0x66, 0x00, 0x68, 0x00, 0x6a, 0x00, 0x60, 0x00, 0x46, 0x00, 0x2c, 0x00, 0xfa, 0xff,
+0xda, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x8e, 0xff, 0x92, 0xff, 0x9c, 0xff, 0xca, 0xff,
+0xea, 0xff, 0x04, 0x00, 0x30, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x3a, 0x00, 0x34, 0x00, 0x26, 0x00,
+0x00, 0x00, 0xf0, 0xff, 0xe0, 0xff, 0xc2, 0xff, 0xba, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb0, 0xff,
+0xbe, 0xff, 0xd2, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0x0e, 0x00, 0x22, 0x00, 0x1a, 0x00, 0x12, 0x00,
+0x16, 0x00, 0x0e, 0x00, 0x06, 0x00, 0xf6, 0xff, 0xf4, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xe2, 0xff,
+0xd8, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xee, 0xff,
+0xee, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00,
+0xfe, 0xff, 0xfa, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xca, 0xff,
+0xc4, 0xff, 0xcc, 0xff, 0xbc, 0xff, 0xc4, 0xff, 0xde, 0xff, 0xec, 0xff, 0xf6, 0xff, 0x0c, 0x00,
+0x2a, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0xf4, 0xff, 0xe6, 0xff,
+0xce, 0xff, 0xb0, 0xff, 0xa4, 0xff, 0x9a, 0xff, 0xa4, 0xff, 0xac, 0xff, 0xd2, 0xff, 0xf6, 0xff,
+0x14, 0x00, 0x32, 0x00, 0x50, 0x00, 0x5c, 0x00, 0x58, 0x00, 0x4e, 0x00, 0x3a, 0x00, 0x12, 0x00,
+0xf2, 0xff, 0xd8, 0xff, 0xa4, 0xff, 0x82, 0xff, 0x74, 0xff, 0x6c, 0xff, 0x7c, 0xff, 0x96, 0xff,
+0xc8, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x56, 0x00, 0x6a, 0x00, 0x7e, 0x00, 0x78, 0x00, 0x62, 0x00,
+0x42, 0x00, 0x0e, 0x00, 0xe8, 0xff, 0xbe, 0xff, 0x90, 0xff, 0x62, 0xff, 0x4e, 0xff, 0x54, 0xff,
+0x78, 0xff, 0x98, 0xff, 0xca, 0xff, 0x08, 0x00, 0x3e, 0x00, 0x6a, 0x00, 0x92, 0x00, 0xa4, 0x00,
+0x96, 0x00, 0x7c, 0x00, 0x48, 0x00, 0x1a, 0x00, 0xe4, 0xff, 0xac, 0xff, 0x6c, 0xff, 0x40, 0xff,
+0x46, 0xff, 0x3a, 0xff, 0x64, 0xff, 0xa0, 0xff, 0xd4, 0xff, 0x18, 0x00, 0x4c, 0x00, 0x8a, 0x00,
+0xa4, 0x00, 0xac, 0x00, 0xa0, 0x00, 0x74, 0x00, 0x46, 0x00, 0x00, 0x00, 0xc6, 0xff, 0x8e, 0xff,
+0x4e, 0xff, 0x32, 0xff, 0x1a, 0xff, 0x3c, 0xff, 0x6e, 0xff, 0xa4, 0xff, 0xee, 0xff, 0x20, 0x00,
+0x60, 0x00, 0x9a, 0x00, 0xaa, 0x00, 0xb8, 0x00, 0x98, 0x00, 0x6e, 0x00, 0x2c, 0x00, 0xee, 0xff,
+0xc6, 0xff, 0x7a, 0xff, 0x44, 0xff, 0x2c, 0xff, 0x28, 0xff, 0x42, 0xff, 0x78, 0xff, 0xc2, 0xff,
+0xfe, 0xff, 0x34, 0x00, 0x6c, 0x00, 0x94, 0x00, 0xb6, 0x00, 0xb0, 0x00, 0x98, 0x00, 0x5e, 0x00,
+0x16, 0x00, 0xe4, 0xff, 0xaa, 0xff, 0x68, 0xff, 0x42, 0xff, 0x1a, 0xff, 0x2a, 0xff, 0x54, 0xff,
+0x82, 0xff, 0xd0, 0xff, 0x06, 0x00, 0x3c, 0x00, 0x74, 0x00, 0x9a, 0x00, 0xa8, 0x00, 0x98, 0x00,
+0x78, 0x00, 0x4e, 0x00, 0x10, 0x00, 0xd0, 0xff, 0x96, 0xff, 0x62, 0xff, 0x46, 0xff, 0x38, 0xff,
+0x42, 0xff, 0x6a, 0xff, 0xa8, 0xff, 0xe0, 0xff, 0x18, 0x00, 0x50, 0x00, 0x76, 0x00, 0x90, 0x00,
+0x9e, 0x00, 0x88, 0x00, 0x6a, 0x00, 0x3e, 0x00, 0xfe, 0xff, 0xd0, 0xff, 0x9c, 0xff, 0x6e, 0xff,
+0x60, 0xff, 0x52, 0xff, 0x6c, 0xff, 0x8c, 0xff, 0xb2, 0xff, 0xf8, 0xff, 0x1e, 0x00, 0x3e, 0x00,
+0x66, 0x00, 0x74, 0x00, 0x72, 0x00, 0x68, 0x00, 0x4a, 0x00, 0x22, 0x00, 0xf2, 0xff, 0xc4, 0xff,
+0xa0, 0xff, 0x8c, 0xff, 0x76, 0xff, 0x86, 0xff, 0x8e, 0xff, 0xa8, 0xff, 0xd8, 0xff, 0xfa, 0xff,
+0x1c, 0x00, 0x34, 0x00, 0x3a, 0x00, 0x54, 0x00, 0x4a, 0x00, 0x40, 0x00, 0x2e, 0x00, 0x08, 0x00,
+0xf4, 0xff, 0xd8, 0xff, 0xba, 0xff, 0xb2, 0xff, 0xa4, 0xff, 0xb4, 0xff, 0xc8, 0xff, 0xce, 0xff,
+0xea, 0xff, 0xfe, 0xff, 0x0e, 0x00, 0x22, 0x00, 0x26, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1e, 0x00,
+0x0c, 0x00, 0xf4, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xc6, 0xff,
+0xd6, 0xff, 0xe2, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x02, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xf0, 0xff,
+0xea, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xea, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe2, 0xff,
+0xe4, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x0c, 0x00,
+0x14, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xea, 0xff, 0xce, 0xff, 0xc0, 0xff,
+0xb6, 0xff, 0xb6, 0xff, 0xc0, 0xff, 0xba, 0xff, 0xca, 0xff, 0xe0, 0xff, 0xf6, 0xff, 0x08, 0x00,
+0x24, 0x00, 0x36, 0x00, 0x34, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x1e, 0x00, 0x04, 0x00, 0xe4, 0xff,
+0xcc, 0xff, 0xa6, 0xff, 0x9c, 0xff, 0x92, 0xff, 0x90, 0xff, 0xb0, 0xff, 0xb4, 0xff, 0xde, 0xff,
+0x02, 0x00, 0x24, 0x00, 0x4c, 0x00, 0x5a, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x58, 0x00, 0x3c, 0x00,
+0x0a, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0x8e, 0xff, 0x72, 0xff, 0x62, 0xff, 0x72, 0xff, 0x8c, 0xff,
+0xa6, 0xff, 0xde, 0xff, 0x0a, 0x00, 0x3c, 0x00, 0x64, 0x00, 0x82, 0x00, 0x94, 0x00, 0x74, 0x00,
+0x60, 0x00, 0x36, 0x00, 0x0a, 0x00, 0xd2, 0xff, 0x84, 0xff, 0x6a, 0xff, 0x48, 0xff, 0x3c, 0xff,
+0x54, 0xff, 0x7e, 0xff, 0xb2, 0xff, 0xe4, 0xff, 0x24, 0x00, 0x60, 0x00, 0x8e, 0x00, 0xa4, 0x00,
+0xa6, 0x00, 0x98, 0x00, 0x64, 0x00, 0x24, 0x00, 0xf8, 0xff, 0xb8, 0xff, 0x80, 0xff, 0x56, 0xff,
+0x2c, 0xff, 0x32, 0xff, 0x4e, 0xff, 0x82, 0xff, 0xbc, 0xff, 0x02, 0x00, 0x36, 0x00, 0x72, 0x00,
+0x9e, 0x00, 0xa6, 0x00, 0xae, 0x00, 0x8a, 0x00, 0x52, 0x00, 0x14, 0x00, 0xd4, 0xff, 0xa4, 0xff,
+0x5e, 0xff, 0x40, 0xff, 0x2c, 0xff, 0x26, 0xff, 0x4c, 0xff, 0x7c, 0xff, 0xce, 0xff, 0x04, 0x00,
+0x40, 0x00, 0x7c, 0x00, 0x98, 0x00, 0xa6, 0x00, 0x94, 0x00, 0x7e, 0x00, 0x40, 0x00, 0xfa, 0xff,
+0xce, 0xff, 0x8e, 0xff, 0x5e, 0xff, 0x36, 0xff, 0x26, 0xff, 0x38, 0xff, 0x5e, 0xff, 0x9a, 0xff,
+0xde, 0xff, 0x10, 0x00, 0x4c, 0x00, 0x84, 0x00, 0xa4, 0x00, 0x9e, 0x00, 0x90, 0x00, 0x6e, 0x00,
+0x32, 0x00, 0xfc, 0xff, 0xb8, 0xff, 0x8c, 0xff, 0x64, 0xff, 0x40, 0xff, 0x38, 0xff, 0x40, 0xff,
+0x70, 0xff, 0xaa, 0xff, 0xec, 0xff, 0x1e, 0x00, 0x44, 0x00, 0x76, 0x00, 0x8a, 0x00, 0x8a, 0x00,
+0x76, 0x00, 0x4c, 0x00, 0x20, 0x00, 0xea, 0xff, 0xbc, 0xff, 0x8e, 0xff, 0x6c, 0xff, 0x5c, 0xff,
+0x5a, 0xff, 0x6a, 0xff, 0x94, 0xff, 0xc4, 0xff, 0xfa, 0xff, 0x34, 0x00, 0x4a, 0x00, 0x62, 0x00,
+0x74, 0x00, 0x76, 0x00, 0x6a, 0x00, 0x36, 0x00, 0x18, 0x00, 0xf2, 0xff, 0xbc, 0xff, 0xa6, 0xff,
+0x90, 0xff, 0x7e, 0xff, 0x88, 0xff, 0x90, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x0c, 0x00, 0x26, 0x00,
+0x44, 0x00, 0x5a, 0x00, 0x60, 0x00, 0x58, 0x00, 0x46, 0x00, 0x2c, 0x00, 0x06, 0x00, 0xea, 0xff,
+0xc4, 0xff, 0xae, 0xff, 0x9e, 0xff, 0x96, 0xff, 0x9a, 0xff, 0xa2, 0xff, 0xc2, 0xff, 0xe4, 0xff,
+0xfe, 0xff, 0x1a, 0x00, 0x2a, 0x00, 0x36, 0x00, 0x34, 0x00, 0x38, 0x00, 0x34, 0x00, 0x12, 0x00,
+0x00, 0x00, 0xec, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xc0, 0xff, 0xc6, 0xff, 0xc0, 0xff, 0xc4, 0xff,
+0xd6, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x12, 0x00,
+0x10, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe6, 0xff,
+0xde, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xe8, 0xff,
+0xec, 0xff, 0xea, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0x02, 0x00,
+0xfc, 0xff, 0x04, 0x00, 0xfa, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xd0, 0xff, 0xbc, 0xff, 0xbe, 0xff,
+0xc4, 0xff, 0xc4, 0xff, 0xc6, 0xff, 0xde, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0x0e, 0x00, 0x18, 0x00,
+0x24, 0x00, 0x22, 0x00, 0x16, 0x00, 0x22, 0x00, 0x14, 0x00, 0xfe, 0xff, 0xe2, 0xff, 0xbc, 0xff,
+0xa8, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0xb2, 0xff, 0xd4, 0xff, 0xf0, 0xff, 0x04, 0x00,
+0x22, 0x00, 0x38, 0x00, 0x48, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x20, 0x00, 0xfa, 0xff,
+0xd6, 0xff, 0xa6, 0xff, 0x8c, 0xff, 0x86, 0xff, 0x76, 0xff, 0x8c, 0xff, 0x9e, 0xff, 0xc8, 0xff,
+0xf6, 0xff, 0x1a, 0x00, 0x44, 0x00, 0x60, 0x00, 0x74, 0x00, 0x72, 0x00, 0x62, 0x00, 0x4c, 0x00,
+0x22, 0x00, 0xea, 0xff, 0xc2, 0xff, 0x8e, 0xff, 0x7a, 0xff, 0x66, 0xff, 0x62, 0xff, 0x82, 0xff,
+0x9e, 0xff, 0xd4, 0xff, 0x08, 0x00, 0x36, 0x00, 0x60, 0x00, 0x84, 0x00, 0x9e, 0x00, 0x92, 0x00,
+0x7a, 0x00, 0x4c, 0x00, 0x22, 0x00, 0xe0, 0xff, 0xaa, 0xff, 0x74, 0xff, 0x54, 0xff, 0x4a, 0xff,
+0x4e, 0xff, 0x6a, 0xff, 0xa2, 0xff, 0xd2, 0xff, 0x06, 0x00, 0x3c, 0x00, 0x76, 0x00, 0x98, 0x00,
+0xa2, 0x00, 0xa4, 0x00, 0x72, 0x00, 0x40, 0x00, 0x0a, 0x00, 0xd0, 0xff, 0x96, 0xff, 0x5c, 0xff,
+0x3c, 0xff, 0x28, 0xff, 0x3e, 0xff, 0x68, 0xff, 0xac, 0xff, 0xe8, 0xff, 0x10, 0x00, 0x48, 0x00,
+0x8a, 0x00, 0xaa, 0x00, 0xb2, 0x00, 0x9c, 0x00, 0x6a, 0x00, 0x32, 0x00, 0xf2, 0xff, 0xbe, 0xff,
+0x7a, 0xff, 0x54, 0xff, 0x32, 0xff, 0x2a, 0xff, 0x3c, 0xff, 0x6e, 0xff, 0xbe, 0xff, 0xf2, 0xff,
+0x24, 0x00, 0x60, 0x00, 0x8e, 0x00, 0xa8, 0x00, 0xa4, 0x00, 0x86, 0x00, 0x50, 0x00, 0x14, 0x00,
+0xd8, 0xff, 0xaa, 0xff, 0x74, 0xff, 0x48, 0xff, 0x28, 0xff, 0x38, 0xff, 0x52, 0xff, 0x7e, 0xff,
+0xbc, 0xff, 0xf8, 0xff, 0x36, 0x00, 0x60, 0x00, 0x8a, 0x00, 0xa2, 0x00, 0x94, 0x00, 0x76, 0x00,
+0x46, 0x00, 0x0c, 0x00, 0xde, 0xff, 0xac, 0xff, 0x76, 0xff, 0x58, 0xff, 0x4a, 0xff, 0x4a, 0xff,
+0x66, 0xff, 0x92, 0xff, 0xc8, 0xff, 0xfe, 0xff, 0x34, 0x00, 0x68, 0x00, 0x80, 0x00, 0x9a, 0x00,
+0x88, 0x00, 0x60, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xd6, 0xff, 0xa4, 0xff, 0x84, 0xff, 0x6c, 0xff,
+0x60, 0xff, 0x6e, 0xff, 0x86, 0xff, 0xa6, 0xff, 0xde, 0xff, 0x0e, 0x00, 0x30, 0x00, 0x54, 0x00,
+0x64, 0x00, 0x72, 0x00, 0x64, 0x00, 0x48, 0x00, 0x1c, 0x00, 0xf0, 0xff, 0xd2, 0xff, 0xa8, 0xff,
+0xa0, 0xff, 0x94, 0xff, 0x86, 0xff, 0x96, 0xff, 0xac, 0xff, 0xcc, 0xff, 0xf4, 0xff, 0x14, 0x00,
+0x36, 0x00, 0x4a, 0x00, 0x48, 0x00, 0x50, 0x00, 0x46, 0x00, 0x2a, 0x00, 0x12, 0x00, 0xf2, 0xff,
+0xda, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xba, 0xff, 0xc0, 0xff, 0xcc, 0xff, 0xe4, 0xff,
+0x02, 0x00, 0x0e, 0x00, 0x1e, 0x00, 0x2a, 0x00, 0x18, 0x00, 0x26, 0x00, 0x1c, 0x00, 0x02, 0x00,
+0xfe, 0xff, 0xf2, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xdc, 0xff,
+0xde, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xf8, 0xff, 0xfa, 0xff,
+0xfa, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xfa, 0xff,
+0xf8, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xde, 0xff,
+0xd4, 0xff, 0xcc, 0xff, 0xdc, 0xff, 0xe2, 0xff, 0xee, 0xff, 0x00, 0x00, 0x10, 0x00, 0x1a, 0x00,
+0x0e, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xdc, 0xff, 0xd0, 0xff, 0xbc, 0xff,
+0xb4, 0xff, 0xb6, 0xff, 0xae, 0xff, 0xb4, 0xff, 0xcc, 0xff, 0xde, 0xff, 0xfc, 0xff, 0x1a, 0x00,
+0x2e, 0x00, 0x30, 0x00, 0x38, 0x00, 0x2e, 0x00, 0x1c, 0x00, 0x04, 0x00, 0xf2, 0xff, 0xcc, 0xff,
+0xa4, 0xff, 0x96, 0xff, 0x88, 0xff, 0x8c, 0xff, 0xa0, 0xff, 0xa6, 0xff, 0xcc, 0xff, 0xf6, 0xff,
+0x1a, 0x00, 0x48, 0x00, 0x52, 0x00, 0x60, 0x00, 0x60, 0x00, 0x4c, 0x00, 0x32, 0x00, 0x06, 0x00,
+0xe6, 0xff, 0xbe, 0xff, 0x8a, 0xff, 0x66, 0xff, 0x64, 0xff, 0x62, 0xff, 0x78, 0xff, 0x9c, 0xff,
+0xca, 0xff, 0xf8, 0xff, 0x32, 0x00, 0x5c, 0x00, 0x72, 0x00, 0x8a, 0x00, 0x84, 0x00, 0x62, 0x00,
+0x36, 0x00, 0x0a, 0x00, 0xda, 0xff, 0xa4, 0xff, 0x6e, 0xff, 0x40, 0xff, 0x40, 0xff, 0x48, 0xff,
+0x66, 0xff, 0xb0, 0xff, 0xde, 0xff, 0x16, 0x00, 0x50, 0x00, 0x8a, 0x00, 0xac, 0x00, 0xac, 0x00,
+0xa0, 0x00, 0x74, 0x00, 0x3e, 0x00, 0x0a, 0x00, 0xcc, 0xff, 0x90, 0xff, 0x4e, 0xff, 0x3a, 0xff,
+0x30, 0xff, 0x3a, 0xff, 0x76, 0xff, 0xb8, 0xff, 0xf4, 0xff, 0x26, 0x00, 0x70, 0x00, 0xa4, 0x00,
+0xb8, 0x00, 0xc0, 0x00, 0xa4, 0x00, 0x74, 0x00, 0x2e, 0x00, 0xf4, 0xff, 0xb8, 0xff, 0x74, 0xff,
+0x3c, 0xff, 0x20, 0xff, 0x26, 0xff, 0x44, 0xff, 0x6c, 0xff, 0xc4, 0xff, 0x00, 0x00, 0x3c, 0x00,
+0x7c, 0x00, 0xaa, 0x00, 0xc8, 0x00, 0xba, 0x00, 0xa4, 0x00, 0x6e, 0x00, 0x1a, 0x00, 0xee, 0xff,
+0xa8, 0xff, 0x64, 0xff, 0x3c, 0xff, 0x26, 0xff, 0x2c, 0xff, 0x50, 0xff, 0x94, 0xff, 0xd2, 0xff,
+0x0e, 0x00, 0x4e, 0x00, 0x7e, 0x00, 0xa6, 0x00, 0xc2, 0x00, 0xb2, 0x00, 0x90, 0x00, 0x5a, 0x00,
+0x12, 0x00, 0xd0, 0xff, 0x9c, 0xff, 0x60, 0xff, 0x32, 0xff, 0x2c, 0xff, 0x36, 0xff, 0x5e, 0xff,
+0x9a, 0xff, 0xd6, 0xff, 0x10, 0x00, 0x3c, 0x00, 0x72, 0x00, 0x8e, 0x00, 0x96, 0x00, 0x8e, 0x00,
+0x64, 0x00, 0x36, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x8a, 0xff, 0x6a, 0xff, 0x52, 0xff, 0x42, 0xff,
+0x5e, 0xff, 0x7e, 0xff, 0xb4, 0xff, 0xec, 0xff, 0x16, 0x00, 0x44, 0x00, 0x5e, 0x00, 0x78, 0x00,
+0x78, 0x00, 0x5e, 0x00, 0x4a, 0x00, 0x10, 0x00, 0xf4, 0xff, 0xc2, 0xff, 0x8e, 0xff, 0x84, 0xff,
+0x66, 0xff, 0x72, 0xff, 0x84, 0xff, 0x98, 0xff, 0xd2, 0xff, 0xf4, 0xff, 0x1c, 0x00, 0x38, 0x00,
+0x42, 0x00, 0x50, 0x00, 0x4a, 0x00, 0x46, 0x00, 0x26, 0x00, 0x04, 0x00, 0xee, 0xff, 0xc0, 0xff,
+0xa0, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0xae, 0xff, 0xc2, 0xff, 0xe2, 0xff, 0x02, 0x00,
+0x14, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x22, 0x00, 0x16, 0x00, 0x00, 0x00,
+0xec, 0xff, 0xde, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xe6, 0xff,
+0xf2, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x0c, 0x00,
+0xfc, 0xff, 0xfa, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xe4, 0xff,
+0xe4, 0xff, 0xee, 0xff, 0xee, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xf2, 0xff};
+
+#endif
diff --git a/mbtk/test/libql_lib_v2/Makefile b/mbtk/test/libql_lib_v2/Makefile
new file mode 100755
index 0000000..401a563
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/Makefile
@@ -0,0 +1,34 @@
+BUILD_ROOT = $(shell pwd)/../..
+include $(BUILD_ROOT)/Make.defines
+
+INC_DIR +=
+
+LIB_DIR +=
+
+LIBS += -lmbtk_lib -lql_lib
+
+CFLAGS = $(CFLAGS_TEST)
+
+DEFINE +=
+
+LOCAL_SRC_FILES = $(wildcard *.c) $(wildcard *.cpp)
+
+$(info LOCAL_SRC_FILES = $(LOCAL_SRC_FILES))
+
+OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(LOCAL_SRC_FILES)))
+BINS = $(patsubst %.o,%,$(OBJS))
+
+all: $(BINS)
+
+$(BINS):$(OBJS)
+ @echo " BIN $@"
+ $(CC) $(CFLAGS) $(LIB_DIR) $(LIBS) $@.o -o $(OUT_DIR)/bin/$@
+
+%.o:%.c
+ $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
+
+%.o:%.cpp
+ $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
+
+clean:
+ rm -f $(OBJS)
diff --git a/mbtk/test/libql_lib_v2/ql_adc_test.c b/mbtk/test/libql_lib_v2/ql_adc_test.c
new file mode 100755
index 0000000..d82a5b9
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_adc_test.c
@@ -0,0 +1,23 @@
+#include <stdio.h>
+#include "ql_adc.h"
+
+int main(int argc, char *argv[])
+{
+ if(argc != 2) {
+ printf("ql_adc_test <0/1/2>\n");
+ return -1;
+ }
+
+ int adc = atoi(argv[1]);
+ if(adc != 0 && adc != 1 && adc != 2) {
+ printf("ql_adc_test <0/1/2>\n");
+ return -1;
+ }
+
+ int result = ql_adc_show((ADC_CHANNEL_E)(adc + 1));
+
+ printf("ADC : %d\n", result);
+
+ return 0;
+}
+
diff --git a/mbtk/test/libql_lib_v2/ql_atc_test.c b/mbtk/test/libql_lib_v2/ql_atc_test.c
new file mode 100755
index 0000000..47c00ac
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_atc_test.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include "ql_atc.h"
+
+
+int main(int argc, char *argv[])
+{
+ if(argc != 2) {
+ printf("ql_atc_test <at>\n");
+ return -1;
+ }
+
+ if(ql_atc_init()) {
+ printf("ql_atc_init() fail.\n");
+ return -1;
+ }
+
+ char resp[1024];
+ if(ql_atc_send(argv[1], resp, sizeof(resp))) {
+ printf("ql_atc_send() fail.\n");
+ return -1;
+ }
+
+ if(ql_atc_deinit()) {
+ printf("ql_atc_deinit() fail.\n");
+ return -1;
+ }
+
+ printf("RSP : %s\n", resp);
+
+ return 0;
+}
diff --git a/mbtk/test/libql_lib_v2/ql_audio_test.c b/mbtk/test/libql_lib_v2/ql_audio_test.c
new file mode 100755
index 0000000..1944fb5
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_audio_test.c
@@ -0,0 +1,541 @@
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @file m_audio.c
+ @brief audio API example
+*/
+/*-----------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ Copyright (c) 2019 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
+ Quectel Wireless Solution Proprietary and Confidential.
+-------------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ EDIT HISTORY
+ This section contains comments describing changes made to the file.
+ Notice that changes are listed in reverse chronological order.
+ $Header: $
+ when who what, where, why
+ -------- --- ----------------------------------------------------------
+ 2021-11-03 dameng.lin Create.
+-------------------------------------------------------------------------------------------------*/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <pthread.h>
+
+#include "ql_v2/ql_type.h"
+#include "ql_v2/ql_audio_pcm.h"
+#include "ql_v2/ql_audio_cfg.h"
+#include "ql_v2/ql_test_utils.h"
+
+typedef void (*show_handler_f)(void);
+
+typedef struct
+{
+ const char *name;
+ show_handler_f handle;
+}audio_show_t;
+
+typedef struct
+{
+ int playback_dest;
+ int block_flag;
+ char file_name[128];
+}audio_playback_info_t;
+
+static ql_audio_handle_t g_playback_handle = QL_AUDIO_INVALID_HANDLE;
+static int g_playback_end = 0;
+
+
+void item_ql_audio_init(void)
+{
+ int ret = 0;
+
+ printf("test ql_audio_init: ");
+ ret = ql_audio_init();
+ if(QL_ERR_OK != ret)
+ {
+ printf("Failed to init audio service, ret = %d\n", ret);
+ }
+ else
+ {
+ printf("Success to init audio service\n");
+ }
+}
+
+static void audio_service_error_cb_func(int error)
+{
+ printf("===== Audio Service Abort ===== error = %d\n",error);
+}
+
+static void item_ql_audio_set_service_error_cb(void)
+{
+ int ret = QL_ERR_OK;
+
+ printf("test ql_audio_set_service_error_cb: \n");
+ ret = ql_audio_set_service_error_cb(audio_service_error_cb_func);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_audio_set_service_error_cb, ret=%d\n", ret);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+
+static void item_ql_audio_set_loopback_enable_state(void)
+{
+ int ret = QL_ERR_OK;
+ int loopback_enable_state = 0;
+
+ printf("test ql_audio_set_loopback_enable_state: \n");
+ printf("please enter the loopback enable state(0-1): ");
+ ret = t_get_int(&loopback_enable_state);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ ret = ql_audio_set_loopback_enable_state(loopback_enable_state);
+ if (QL_ERR_OK != ret)
+ {
+ printf("Failed to set loopback enable state, ret = %d\n", ret);
+ }
+ else
+ {
+ printf("Success to set loopback enable state\n");
+ }
+}
+
+static void item_ql_audio_get_loopback_enable_state(void)
+{
+ int ret = QL_ERR_OK;
+ int32_t loopback_enable_state = 0;
+
+ printf("test ql_audio_get_loopback_enable_state: \n");
+
+ ret = ql_audio_get_loopback_enable_state(&loopback_enable_state);
+ if (QL_ERR_OK != ret)
+ {
+ printf("Failed to get loopback enable state, ret = %d\n", ret);
+ }
+ else
+ {
+ printf("Success to get loopback enable state, loopback_enable_state = %d\n", loopback_enable_state);
+ }
+}
+
+
+static void item_ql_audio_set_tx_voice_mic_gain(void)
+{
+ int ret = QL_ERR_OK;
+ int tx_voice_mic_gain = 0;
+
+ printf("test ql_audio_set_tx_voice_mic_gain: \n");
+ printf("please enter the tx voice mic gain(0-65535): ");
+ ret = t_get_int(&tx_voice_mic_gain);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ ret = ql_audio_set_tx_voice_mic_gain(tx_voice_mic_gain);
+ if (QL_ERR_OK != ret)
+ {
+ printf("Failed to set tx voice mic gain, ret = %d\n", ret);
+ }
+ else
+ {
+ printf("Success to set tx voice mic gain\n");
+ }
+}
+
+static void item_ql_audio_get_tx_voice_mic_gain(void)
+{
+ int ret = QL_ERR_OK;
+ int32_t tx_voice_mic_gain = 0;
+
+ printf("test ql_audio_get_tx_voice_mic_gain: \n");
+
+ ret = ql_audio_get_tx_voice_mic_gain(&tx_voice_mic_gain);
+ if (QL_ERR_OK != ret)
+ {
+ printf("Failed to get tx voice mic gain, ret = %d\n", ret);
+ }
+ else
+ {
+ printf("Success to get tx voice mic gain, tx_voice_mic_gain = %d\n", tx_voice_mic_gain);
+ }
+}
+
+static void item_ql_audio_set_codec_down_vol(void)
+{
+ int ret = QL_ERR_OK;
+ int down_volume = 0;
+
+ printf("test ql_audio_set_codec_down_vol: \n");
+ printf("please enter the codec down volume(0-100): ");
+ ret = t_get_int(&down_volume);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ ret = ql_audio_set_codec_down_vol(down_volume);
+ if (QL_ERR_OK != ret)
+ {
+ printf("Failed to set codec down volume, ret = %d\n", ret);
+ }
+ else
+ {
+ printf("Success to set codec down volume\n");
+ }
+}
+
+static void item_ql_audio_get_codec_down_vol(void)
+{
+ int ret = QL_ERR_OK;
+ int32_t down_volume = 0;
+
+ printf("test ql_audio_get_codec_down_vol: \n");
+
+ ret = ql_audio_get_codec_down_vol(&down_volume);
+ if (QL_ERR_OK != ret)
+ {
+ printf("Failed to get codec down volume, ret = %d\n", ret);
+ }
+ else
+ {
+ printf("Success to codec down volume, down_volume = %d\n", down_volume);
+ }
+}
+
+void item_ql_audio_deinit(void)
+{
+ int ret = 0;
+
+ printf("test ql_audio_deinit: ");
+ ret = ql_audio_deinit();
+ if(QL_ERR_OK != ret)
+ {
+ printf("Failed to deinit audio service, ret = %d\n", ret);
+ }
+ else
+ {
+ printf("Success to deinit audio service\n");
+ }
+}
+
+static int default_playback_state(ql_audio_handle_t handle, void *params, QL_AUDIO_PLAYBACK_STATE_E state)
+{
+ int ret = 0;
+
+ switch(state)
+ {
+ case QL_AUDIO_PLAYBACK_STATE_OPEN:
+ {
+ printf("QL_AUDIO_PLAYBACK_STATE_OPEN\n");
+ break;
+ }
+ case QL_AUDIO_PLAYBACK_STATE_PREPARE:
+ {
+ printf("QL_AUDIO_PLAYBACK_STATE_PREPARE\n");
+ break;
+ }
+ case QL_AUDIO_PLAYBACK_STATE_PLAYING:
+ {
+ printf("QL_AUDIO_PLAYBACK_STATE_PLAYING\n");
+ break;
+ }
+ case QL_AUDIO_PLAYBACK_STATE_FINISHED:
+ {
+ printf("QL_AUDIO_PLAYBACK_STATE_FINISHED\n");
+ g_playback_end = 1;
+ break;
+ }
+ case QL_AUDIO_PLAYBACK_STATE_PAUSE:
+ {
+ printf("QL_AUDIO_PLAYBACK_STATE_PAUSE\n");
+ break;
+ }
+ case QL_AUDIO_PLAYBACK_STATE_ERROR:
+ {
+ printf("QL_AUDIO_PLAYBACK_STATE_ERROR\n");
+ g_playback_end = 1;
+ break;
+ }
+ default:
+ {
+ printf("INVALID PALYBACK STATE\n");
+ ret = -1;
+ break;
+ }
+ }
+
+ return ret;
+}
+
+static void *ql_audio_play_file_thread(void *args)
+{
+ int ret = QL_ERR_OK;
+ uint32_t be_dai_mask = 0;
+ ql_audio_handle_t handle = QL_AUDIO_INVALID_HANDLE;
+
+ audio_playback_info_t *playback_info = (audio_playback_info_t *)args;
+ if (NULL == playback_info)
+ {
+ printf("invalid params\n");
+ return NULL;
+ }
+
+ switch(playback_info->playback_dest)
+ {
+ case 0:
+ {
+ be_dai_mask = QL_AUDIO_BE_DAI_MASK_PLAYBACK_PRI_PCM;
+ break;
+ }
+ case 1:
+ {
+ be_dai_mask = QL_AUDIO_BE_DAI_MASK_PLAYBACK_VOICE_TX;
+ break;
+ }
+ case 2:
+ {
+ be_dai_mask = QL_AUDIO_BE_DAI_MASK_PLAYBACK_PRI_PCM | QL_AUDIO_BE_DAI_MASK_PLAYBACK_VOICE_TX;
+ break;
+ }
+ default:
+ {
+ printf("invalid playback destination\n");
+ free(playback_info);
+ playback_info = NULL;
+ return NULL;
+ }
+ }
+
+ handle = ql_audio_playback_open(QL_AUDIO_FE_PCM_DEV_MULTIMEDIA1, be_dai_mask);
+ if (QL_AUDIO_INVALID_HANDLE >= handle)
+ {
+ printf("Failed to open playback\n");
+ free(playback_info);
+ playback_info = NULL;
+ return NULL;
+ }
+
+ g_playback_handle = handle;
+
+ printf("playback handle = %d",g_playback_handle);
+ ql_audio_playback_set_block_flag(g_playback_handle, playback_info->block_flag);
+
+ ret = ql_audio_playback_file_prepare(g_playback_handle,
+ playback_info->file_name,
+ NULL,
+ default_playback_state,
+ NULL);
+ if (QL_ERR_OK != ret)
+ {
+ printf("Failed to prepare playback file\n");
+ free(playback_info);
+ playback_info = NULL;
+ ql_audio_playback_close(g_playback_handle);
+ return NULL;
+ }
+ printf("playback handle = %d",g_playback_handle);
+
+ ret = ql_audio_playback_play(g_playback_handle);
+ if (QL_ERR_OK != ret)
+ {
+ printf("Failed to play file\n");
+ free(playback_info);
+ playback_info = NULL;
+ ql_audio_playback_close(g_playback_handle);
+ return NULL;
+ }
+
+ while(0 == g_playback_end)
+ {
+ usleep(100 * 1000);
+ }
+
+ printf("End playing file\n");
+ ql_audio_playback_close(g_playback_handle);
+ g_playback_handle = QL_AUDIO_INVALID_HANDLE;
+ g_playback_end = 0;
+
+ free(playback_info);
+ playback_info = NULL;
+
+ return NULL;
+}
+
+static void item_ql_audio_playback_play_file(void)
+{
+ int ret = 0;
+ pthread_t thread_id;
+ pthread_attr_t thread_attr;
+ audio_playback_info_t *playback_info = NULL;
+
+ printf("test ql_audio_playback_play_file: \n");
+
+ playback_info = (audio_playback_info_t *)malloc(sizeof(audio_playback_info_t));
+ if (NULL == playback_info)
+ {
+ printf("Failed to malloc memory\n");
+ return;
+ }
+ memset(playback_info, 0, sizeof(audio_playback_info_t));
+
+ printf("please enter the file name: ");
+ ret = t_get_string(playback_info->file_name,sizeof(playback_info->file_name));
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("please enter the playback destination(0-To pcm interface / 1-To voice / 2-To pcm interface and voice): ");
+ ret = t_get_int(&(playback_info->playback_dest));
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("please enter the block flag(0-nonblock / 1-block): ");
+ ret = t_get_int(&(playback_info->block_flag));
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ pthread_attr_init(&thread_attr);
+ pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED);
+
+ ret = pthread_create(&thread_id, &thread_attr, ql_audio_play_file_thread, (void *)playback_info);
+ if (0 > ret)
+ {
+ printf("Failed to create play file thread, ret = %d, err = %s\n", ret, strerror(errno));
+ }
+
+ pthread_attr_destroy(&thread_attr);
+}
+
+
+static audio_show_t audio_show[] =
+{
+ { "ql_audio_init", item_ql_audio_init },
+ { "ql_audio_set_service_error_cb", item_ql_audio_set_service_error_cb },
+ { "ql_audio_set_loopback_enable_state", item_ql_audio_set_loopback_enable_state },
+ { "ql_audio_get_loopback_enable_state", item_ql_audio_get_loopback_enable_state },
+ { "ql_audio_set_tx_voice_mic_gain", item_ql_audio_set_tx_voice_mic_gain },
+ { "ql_audio_get_tx_voice_mic_gain", item_ql_audio_get_tx_voice_mic_gain },
+ { "ql_audio_set_codec_down_vol", item_ql_audio_set_codec_down_vol },
+ { "ql_audio_get_codec_down_vol", item_ql_audio_get_codec_down_vol },
+ { "ql_audio_playback_play_file", item_ql_audio_playback_play_file },
+ { "ql_audio_deinit", item_ql_audio_deinit }
+
+};
+
+int audio_get_int(int *val)
+{
+ int dat;
+ char *ptr_end = NULL;
+ char buf[256] = {0};
+
+ if (NULL == val)
+ {
+ return -1;
+ }
+
+ if (fgets(buf, sizeof(buf), stdin) == NULL)
+ {
+ return -1;
+ }
+
+ if('\0' == buf[0])
+ {
+ return -1;
+ }
+
+ if('\n' == buf[0])
+ {
+ return 1;
+ }
+
+ dat = strtol(buf, &ptr_end, 10);
+ if((NULL != ptr_end) && ('\n' != ptr_end[0]))
+ {
+ return -1;
+ }
+
+ *val = dat;
+ return 0;
+}
+
+static void dump_audio_show(void)
+{
+ int i = 0;
+
+ for(i = 0; i < sizeof(audio_show)/sizeof(audio_show[0]); i++)
+ {
+ printf("%d\t%s\n", i, audio_show[i].name);
+ }
+ printf("-1\texit\n");
+}
+
+
+int main(int argc, char **argv)
+{
+ int ret = 0;
+ int index = 0;
+
+ dump_audio_show();
+
+ while (1)
+ {
+ printf("\n");
+ printf("Please enter your choice: ");
+ ret = audio_get_int(&index);
+ printf("\n");
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ continue;
+ }
+ else if(ret == 1)
+ {
+ dump_audio_show();
+ continue;
+ }
+
+ if (index == -1)
+ {
+ break;
+ }
+
+ if ((index < 0) || (index >= sizeof(audio_show)/sizeof(audio_show[0])))
+ {
+ printf("Not support index: %d\n", index);
+ continue;
+ }
+
+ if (NULL != audio_show[index].handle)
+ {
+ audio_show[index].handle();
+ }
+ }
+
+ return 0;
+}
+
+
+
diff --git a/mbtk/test/libql_lib_v2/ql_data_call_main_apn_test.c b/mbtk/test/libql_lib_v2/ql_data_call_main_apn_test.c
new file mode 100755
index 0000000..8921f4f
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_data_call_main_apn_test.c
@@ -0,0 +1,250 @@
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @file main_apn.c
+ @brief Example how to set and get APN configuration
+*/
+/*-----------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ Copyright (c) 2018 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
+ Quectel Wireless Solution Proprietary and Confidential.
+-------------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ EDIT HISTORY
+ This section contains comments describing changes made to the file.
+ Notice that changes are listed in reverse chronological order.
+ $Header: $
+ when who what, where, why
+ -------- --- ----------------------------------------------------------
+ 20190624 tyler.kuang Created .
+-------------------------------------------------------------------------------------------------*/
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdlib.h>
+#include <getopt.h>
+#include <stdint.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include "ql_type.h"
+#include "ql_data_call.h"
+
+const char *g_options_short = "a:n:v:f:u:p:sg";
+
+struct option g_options_long[] = {
+ {"set", no_argument, 0, 's'},
+ {"get", no_argument, 0, 'g'},
+ {"apn_id", required_argument, 0, 'a'},
+ {"apn_name", required_argument, 0, 'n'},
+ {"ip_ver", required_argument, 0, 'v'},
+ {"auth_pref", required_argument, 0, 'f'},
+ {"username", required_argument, 0, 'u'},
+ {"password", required_argument, 0, 'p'},
+ {NULL, 0, 0, 0 }
+};
+
+#define USAGE_STRING "exec --[set|s]|[get|g], set or get apn configuration\r\n"\
+ " --apn_id|a number, apn id, range:1-16\r\n"\
+ " [--ip_ver|v number], ip vresion:4-IPV4,6-IPV6,10-IPV4V6\r\n"\
+ " [--apn_name|n string], apn name\r\n"\
+ " [--auth_pref|f number], auth pref:0-none,1-pap,2-chap,3-pan&chap\r\n"\
+ " [--username|u string], \r\n"\
+ " [--password|p string], auth pref:0-none,1-pap,2-chap,3-pan&chap\r\n"\
+ "exp : exec -g -a 1\r\n " \
+ " exec -s -a 4 -v 4 -n test_apn -f 0 -u test_username -p test_password\r\n "
+
+
+void usage(void)
+{
+ printf("%s", USAGE_STRING);
+}
+
+
+int main(int argc, char *argv[])
+{
+ int c;
+ int dat;
+ int ret;
+ int opt_idx = 0;
+ int retry_cnt = 0;
+
+ int opt_type = -1; /*1-get 2-set*/
+ int apn_id = -1;
+ int ip_ver = QL_NET_IP_VER_V4;
+ int auth_pref = QL_NET_AUTH_PREF_PAP_CHAP_NOT_ALLOWED;
+ char apn_name[128] = {0};
+ char username[128] = {0};
+ char password[128] = {0};
+
+ ql_data_call_apn_config_t cfg;
+
+ while(1)
+ {
+ c = getopt_long(argc, argv, g_options_short, g_options_long, &opt_idx);
+ if(c==-1)
+ {
+ break;
+ }
+
+ switch(c) {
+ case 's':
+ opt_type = 2;
+ break;
+ case 'g':
+ opt_type = 1;
+ break;
+
+ case 'a':
+ apn_id = atoi(optarg);
+ if(apn_id<=0 || apn_id>QL_NET_MAX_APN_ID)
+ {
+ printf("Invalid apn_id : %d\n", apn_id);
+ return -1;
+ }
+
+ break;
+ case 'f':
+ dat = atoi(optarg);
+ switch(dat)
+ {
+ case 0:
+ auth_pref = QL_NET_AUTH_PREF_PAP_CHAP_NOT_ALLOWED;
+ break;
+ case 1:
+ auth_pref = QL_NET_AUTH_PREF_PAP_ONLY_ALLOWED;
+ break;
+ case 2:
+ auth_pref = QL_NET_AUTH_PREF_CHAP_ONLY_ALLOWED;
+ break;
+ case 3:
+ auth_pref = QL_NET_AUTH_PREF_PAP_CHAP_BOTH_ALLOWED;
+ break;
+ default:
+ printf("Invalid auth pref : %d\n", dat);
+ return -1;
+ }
+ break;
+ case 'v':
+ dat = atoi(optarg);
+ if(4 == dat)
+ {
+ ip_ver = QL_NET_IP_VER_V4;
+ }
+ else if(6 == dat)
+ {
+ ip_ver = QL_NET_IP_VER_V6;
+ }
+ else if(10 == dat)
+ {
+ ip_ver = QL_NET_IP_VER_V4V6;
+ }
+ else
+ {
+ printf("Invalid ip_ver : %d\n", dat);
+ return -1;
+ }
+ break;
+
+ case 'n':
+ strncpy(apn_name, optarg, sizeof(apn_name)-1);
+ break;
+
+ case 'u':
+ strncpy(username, optarg, sizeof(username)-1);
+ break;
+
+ case 'p':
+ strncpy(password, optarg, sizeof(password)-1);
+ break;
+
+ default:
+ usage();
+ return 0;
+ }
+ }
+
+ if(opt_type!=1 && opt_type!=2)
+ {
+ usage();
+ return 0;
+ }
+
+ if(apn_id<=0 || apn_id>QL_NET_MAX_APN_ID)
+ {
+ usage();
+ return 0;
+ }
+
+ retry_cnt = 20*1000/100; /** timeout : 20S */
+ while(retry_cnt>0)
+ {
+ ret = ql_data_call_init();
+ if(ret == QL_ERR_SERVICE_NOT_READY)
+ {
+ retry_cnt--;
+ usleep(100*1000); /** sleep 100ms */
+ }
+ break;
+ }
+
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_init, ret=%d", ret);
+ return -1;
+ }
+
+
+ /** get apn info */
+ if(opt_type == 1)
+ {
+ memset(&cfg, 0 ,sizeof(cfg));
+ ret = ql_data_call_get_apn_config(apn_id, &cfg);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to get apn configuration, ret=%d\n", ret);
+ return -1;
+ }
+ printf("Succeed to get apn configuration\n");
+ printf("apn_id : %d\n", apn_id);
+ printf("ip_ver : %d\n", cfg.ip_ver);
+ printf("auth_pref : %d\n", cfg.auth_pref);
+ printf("apn_name : %s\n", cfg.apn_name);
+ printf("username : %s\n", cfg.username);
+ printf("password : %s\n", cfg.password);
+ }
+ else
+ {
+ memset(&cfg, 0, sizeof(cfg));
+ cfg.ip_ver = ip_ver;
+ cfg.auth_pref = auth_pref;
+ strncpy(cfg.apn_name, apn_name, sizeof(cfg.apn_name)-1);
+ strncpy(cfg.username, username, sizeof(cfg.username)-1);
+ strncpy(cfg.password, password, sizeof(cfg.password)-1);
+
+ printf("Start to set apn configuration\n");
+ printf("apn_id : %d\n", apn_id);
+ printf("ip_ver : %d\n", cfg.ip_ver);
+ printf("auth_pref : %d\n", cfg.auth_pref);
+ printf("apn_name : %s\n", cfg.apn_name);
+ printf("username : %s\n", cfg.username);
+ printf("password : %s\n", cfg.password);
+
+ ret = ql_data_call_set_apn_config(apn_id, &cfg);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to set apn configuration, ret=%d\n", ret);
+ return -1;
+ }
+ printf("Succeed to set apn configuration\n");
+ }
+
+
+ return 0;
+}
+
diff --git a/mbtk/test/libql_lib_v2/ql_data_call_main_data_call_test.c b/mbtk/test/libql_lib_v2/ql_data_call_main_data_call_test.c
new file mode 100755
index 0000000..f6fb33d
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_data_call_main_data_call_test.c
@@ -0,0 +1,332 @@
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @file main_data_call.c
+ @brief Example how to data call API
+*/
+/*-----------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ Copyright (c) 2018 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
+ Quectel Wireless Solution Proprietary and Confidential.
+-------------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ EDIT HISTORY
+ This section contains comments describing changes made to the file.
+ Notice that changes are listed in reverse chronological order.
+ $Header: $
+ when who what, where, why
+ -------- --- ----------------------------------------------------------
+ 20190624 tyler.kuang Created .
+-------------------------------------------------------------------------------------------------*/
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdlib.h>
+#include <getopt.h>
+#include <stdint.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include "ql_type.h"
+#include "ql_data_call.h"
+
+const char *g_options_short = "i:n:a:v:r:dhd";
+
+struct option g_options_long[] = {
+ {"call_id", required_argument, 0, 'i'},
+ {"call_name", required_argument, 0, 'n'},
+ {"apn_id", required_argument, 0, 'a'},
+ {"ip_ver", required_argument, 0, 'v'},
+ {"reconnect", required_argument, 0, 'r'},
+ {"default", no_argument, 0, 'd'},
+ {"help", no_argument, 0, 'h'},
+ {NULL, 0, 0, 0 }
+};
+
+#define USAGE_STRING "exec --call_id|i,data call ID\r\n"\
+ " [--call_name|n], data call name\r\n"\
+ " --apn_id|a, APN ID, range:1-16\r\n"\
+ " [--ip_ver|v], IP vresion:4-IPV4,6-IPV6\r\n"\
+ " [--reconnect|r] reconnect interval in SEC\r\n"\
+ " [--default|d], set to system default network\r\n"\
+ "exp : exec -a 1 -n test_network -i 4 -d\r\n "
+
+int g_is_default_network = 0;
+int g_call_id = -1;
+
+void usage(void)
+{
+ printf("%s", USAGE_STRING);
+}
+
+void data_call_status_ind_cb(int call_id,
+ QL_NET_DATA_CALL_STATUS_E pre_call_status,
+ ql_data_call_status_t *p_msg)
+{
+ FILE *fp;
+ char cmd_buf[256];
+
+ /** not for this data call */
+ if(call_id != g_call_id)
+ {
+ return;
+ }
+
+ printf("data call status change, form %d to %d\n", pre_call_status, p_msg->call_status);
+ if(p_msg->call_status == QL_NET_DATA_CALL_STATUS_CONNECTED)
+ {
+ printf("call_id : %d\n", p_msg->call_id);
+ printf("call_name : %s\n", p_msg->call_name);
+ printf("device_name : %s\n", p_msg->device);
+ if(p_msg->has_addr)
+ {
+ printf("IPV4 addr : %s\n", p_msg->addr.addr);
+ printf("IPV4 gateway : %s\n", p_msg->addr.gateway);
+ printf("IPV4 netmask : %s\n", p_msg->addr.netmask);
+ printf("IPV4 dnsp : %s\n", p_msg->addr.dnsp);
+ printf("IPV4 dnss : %s\n", p_msg->addr.dnss);
+
+ if(g_is_default_network)
+ {
+ /** set system default router */
+ snprintf(cmd_buf, sizeof(cmd_buf), "ip ro add default via %s dev %s",
+ p_msg->addr.gateway, p_msg->device);
+ system(cmd_buf);
+
+ system("iptables -t filter -F");
+
+ snprintf(cmd_buf, sizeof(cmd_buf), "iptables -t nat -A POSTROUTING -o %s -j MASQUERADE", p_msg->device);
+ system(cmd_buf);
+
+ /** set system dns configuration*/
+ fp = fopen("/tmp/resolv_v4.conf", "w");
+ if(!fp)
+ {
+ printf("Failed to write resolv file, err=%s\n", strerror(errno));
+ return;
+ }
+
+ if(p_msg->addr.dnsp[0])
+ {
+ fprintf(fp, "nameserver %s\n", p_msg->addr.dnsp);
+ }
+
+ if(p_msg->addr.dnss[0])
+ {
+ fprintf(fp, "nameserver %s\n", p_msg->addr.dnss);
+ }
+ fclose(fp);
+
+ system("echo \"\" > /etc/resolv.conf");
+ if(access("/tmp/resolv_v4.conf", F_OK) == 0)
+ {
+ system("cat /tmp/resolv_v4.conf >> /etc/resolv.conf");
+ }
+ if(access("/tmp/resolv_v6.conf", F_OK) == 0)
+ {
+ system("cat /tmp/resolv_v6.conf >> /etc/resolv.conf");
+ }
+ }
+ }
+
+ if(p_msg->has_addr6)
+ {
+ printf("IPV6 addr : %s\n", p_msg->addr6.addr);
+ printf("IPV6 gateway : %s\n", p_msg->addr6.gateway);
+ printf("IPV6 netmask : %s\n", p_msg->addr6.prefix);
+ printf("IPV6 dnsp : %s\n", p_msg->addr6.dnsp);
+ printf("IPV6 dnss : %s\n", p_msg->addr6.dnss);
+
+ if(g_is_default_network)
+ {
+ /** set system default router */
+ snprintf(cmd_buf, sizeof(cmd_buf), "ip -6 ro add default via %s dev %s",
+ p_msg->addr6.gateway, p_msg->device);
+ system(cmd_buf);
+
+ /** set system dns configuration*/
+ fp = fopen("/tmp/resolv_v6.conf", "w");
+ if(!fp)
+ {
+ printf("Failed to write resolv file, err=%s\n", strerror(errno));
+ return;
+ }
+
+ if(p_msg->addr6.dnsp[0])
+ {
+ fprintf(fp, "nameserver %s\n", p_msg->addr6.dnsp);
+ }
+
+ if(p_msg->addr6.dnss[0])
+ {
+ fprintf(fp, "nameserver %s\n", p_msg->addr6.dnss);
+ }
+ fclose(fp);
+
+ system("echo \"\" > /etc/resolv.conf");
+ if(access("/tmp/resolv_v4.conf", F_OK) == 0)
+ {
+ system("cat /tmp/resolv_v4.conf >> /etc/resolv.conf");
+ }
+ if(access("/tmp/resolv_v6.conf", F_OK) == 0)
+ {
+ system("cat /tmp/resolv_v6.conf >> /etc/resolv.conf");
+ }
+ }
+ }
+ }
+}
+
+
+int main(int argc, char *argv[])
+{
+ int c;
+ int dat;
+ int ret;
+ int opt_idx = 0;
+ int retry_cnt = 0;
+
+ ql_data_call_param_t *p_cfg;
+ int reconnect_interval = 0;
+ int apn_id = -1;
+ int ip_ver = QL_NET_IP_VER_V4;
+ char call_name[128] = "test_network";
+
+ while(1)
+ {
+ c = getopt_long(argc, argv, g_options_short, g_options_long, &opt_idx);
+ if(c==-1)
+ {
+ break;
+ }
+
+ switch(c) {
+ case 'i':
+ g_call_id = atoi(optarg);
+ if(g_call_id < 0)
+ {
+ printf("Invalid call id : %d", g_call_id);
+ return -1;
+ }
+ break;
+
+ case 'r':
+ reconnect_interval = atoi(optarg);
+ if(reconnect_interval<=0)
+ {
+ printf("Invalid reconnect interval : %d\n", reconnect_interval);
+ return -1;
+ }
+ break;
+
+ case 'n':
+ strncpy(call_name, optarg, sizeof(call_name)-1);
+ break;
+
+ case 'a':
+ apn_id = atoi(optarg);
+ if(apn_id<=0 || apn_id>QL_NET_MAX_APN_ID)
+ {
+ printf("Invalid apn_id : %d\n", apn_id);
+ return -1;
+ }
+
+ break;
+ case 'v':
+ dat = atoi(optarg);
+ if(4 == dat)
+ {
+ ip_ver = QL_NET_IP_VER_V4;
+ }
+ else if(6 == dat)
+ {
+ ip_ver = QL_NET_IP_VER_V6;
+ }
+ else
+ {
+ printf("Invalid ip_ver : %d\n", dat);
+ return -1;
+ }
+ break;
+
+ case 'd':
+ g_is_default_network = 1;
+ break;
+ default:
+ usage();
+ return 0;
+ }
+ }
+
+ if(g_call_id < 0)
+ {
+ usage();
+ return 0;
+ }
+
+ retry_cnt = 20*1000/100; /** timeout : 20S */
+ while(retry_cnt>0)
+ {
+ ret = ql_data_call_init();
+ if(ret == QL_ERR_SERVICE_NOT_READY)
+ {
+ retry_cnt--;
+ usleep(100*1000); /** sleep 100ms */
+ continue;
+ }
+ break;
+ }
+
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_init, ret=%d", ret);
+ return -1;
+ }
+
+ ql_data_call_set_status_ind_cb(data_call_status_ind_cb);
+
+ ret = ql_data_call_create(g_call_id, call_name, 0);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to create data call, ret=%d\n", ret);
+ return -1;
+ }
+
+ p_cfg = ql_data_call_param_alloc();
+ ql_data_call_param_set_apn_id(p_cfg, apn_id);
+ ql_data_call_param_set_ip_version(p_cfg, ip_ver);
+
+ if(reconnect_interval > 0)
+ {
+ int time_list[2] = {0};
+ time_list[0] = reconnect_interval;
+ ql_data_call_param_set_reconnect_mode(p_cfg, QL_NET_DATA_CALL_RECONNECT_NORMAL);
+ ql_data_call_param_set_reconnect_interval(p_cfg, time_list, sizeof(time_list)/sizeof(time_list[0]));
+ }
+
+ ret = ql_data_call_config(g_call_id, p_cfg);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to config data call, ret=%d", ret);
+ return -1;
+ }
+
+ ret = ql_data_call_start(g_call_id);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to start data call, ret=%d", ret);
+ return -1;
+ }
+
+ while(1)
+ {
+ sleep(10);
+ }
+
+ return 0;
+}
diff --git a/mbtk/test/libql_lib_v2/ql_data_call_multi_data_call_test.c b/mbtk/test/libql_lib_v2/ql_data_call_multi_data_call_test.c
new file mode 100755
index 0000000..35610ca
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_data_call_multi_data_call_test.c
@@ -0,0 +1,320 @@
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @file main_apn.c
+ @brief Sample code for multiple data call
+*/
+/*-----------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ Copyright (c) 2018 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
+ Quectel Wireless Solution Proprietary and Confidential.
+-------------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ EDIT HISTORY
+ This section contains comments describing changes made to the file.
+ Notice that changes are listed in reverse chronological order.
+ $Header: $
+ when who what, where, why
+ -------- --- ----------------------------------------------------------
+ 20191127 tyler.kuang Created .
+-------------------------------------------------------------------------------------------------*/
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdlib.h>
+#include <getopt.h>
+#include <stdint.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include "ql_type.h"
+#include "ql_data_call.h"
+
+#define APN_NAME_PUBLIC "apnpublic"
+#define APN_NAME_PRIVATE "apnprivate"
+
+#define DATA_CALL_APN_PUBLIC 3
+#define DATA_CALL_APN_PRIVATE 4
+
+#define DATA_CALL_ID_PUBLIC 1
+#define DATA_CALL_ID_PRIVATE 2
+
+void data_call_status_ind_cb(int call_id,
+ QL_NET_DATA_CALL_STATUS_E pre_call_status,
+ ql_data_call_status_t *p_msg)
+{
+ FILE *fp;
+ char cmd_buf[256];
+
+ /** not for this data call */
+ if(call_id!=DATA_CALL_ID_PUBLIC && call_id!=DATA_CALL_ID_PRIVATE)
+ {
+ return;
+ }
+
+ printf("data call %d:%s status change, form %d to %d\n",
+ call_id, p_msg->call_name, pre_call_status, p_msg->call_status);
+ if(p_msg->call_status == QL_NET_DATA_CALL_STATUS_CONNECTED)
+ {
+ printf("call_id : %d\n", p_msg->call_id);
+ printf("call_name : %s\n", p_msg->call_name);
+ printf("device_name : %s\n", p_msg->device);
+ if(p_msg->has_addr)
+ {
+ printf("IPV4 addr : %s\n", p_msg->addr.addr);
+ printf("IPV4 gateway : %s\n", p_msg->addr.gateway);
+ printf("IPV4 netmask : %s\n", p_msg->addr.netmask);
+ printf("IPV4 dnsp : %s\n", p_msg->addr.dnsp);
+ printf("IPV4 dnss : %s\n", p_msg->addr.dnss);
+
+ if(call_id == DATA_CALL_ID_PUBLIC)
+ {
+ /** set system default router */
+ snprintf(cmd_buf, sizeof(cmd_buf), "ip ro add default via %s dev %s",
+ p_msg->addr.gateway, p_msg->device);
+ system(cmd_buf);
+
+ system("iptables -t filter -F");
+
+ snprintf(cmd_buf, sizeof(cmd_buf), "iptables -t nat -A POSTROUTING -o %s -j MASQUERADE", p_msg->device);
+ system(cmd_buf);
+
+ /** set system dns configuration*/
+ fp = fopen("/tmp/resolv_v4.conf", "w");
+ if(!fp)
+ {
+ printf("Failed to write resolv file, err=%s\n", strerror(errno));
+ return;
+ }
+
+ if(p_msg->addr.dnsp[0])
+ {
+ fprintf(fp, "nameserver %s\n", p_msg->addr.dnsp);
+ }
+
+ if(p_msg->addr.dnss[0])
+ {
+ fprintf(fp, "nameserver %s\n", p_msg->addr.dnss);
+ }
+ fclose(fp);
+
+ system("echo \"\" > /etc/resolv.conf");
+ if(access("/tmp/resolv_v4.conf", F_OK) == 0)
+ {
+ system("cat /tmp/resolv_v4.conf >> /etc/resolv.conf");
+ }
+ if(access("/tmp/resolv_v6.conf", F_OK) == 0)
+ {
+ system("cat /tmp/resolv_v6.conf >> /etc/resolv.conf");
+ }
+ }
+ }
+
+ if(p_msg->has_addr6)
+ {
+ printf("IPV6 addr : %s\n", p_msg->addr6.addr);
+ printf("IPV6 gateway : %s\n", p_msg->addr6.gateway);
+ printf("IPV6 netmask : %s\n", p_msg->addr6.prefix);
+ printf("IPV6 dnsp : %s\n", p_msg->addr6.dnsp);
+ printf("IPV6 dnss : %s\n", p_msg->addr6.dnss);
+
+ if(call_id == DATA_CALL_ID_PUBLIC)
+ {
+ /** set system default router */
+ snprintf(cmd_buf, sizeof(cmd_buf), "ip -6 ro add default via %s dev %s",
+ p_msg->addr6.gateway, p_msg->device);
+ system(cmd_buf);
+
+ /** set system dns configuration*/
+ fp = fopen("/tmp/resolv_v6.conf", "w");
+ if(!fp)
+ {
+ printf("Failed to write resolv file, err=%s\n", strerror(errno));
+ return;
+ }
+
+ if(p_msg->addr6.dnsp[0])
+ {
+ fprintf(fp, "nameserver %s\n", p_msg->addr6.dnsp);
+ }
+
+ if(p_msg->addr6.dnss[0])
+ {
+ fprintf(fp, "nameserver %s\n", p_msg->addr6.dnss);
+ }
+ fclose(fp);
+
+ system("echo \"\" > /etc/resolv.conf");
+ if(access("/tmp/resolv_v4.conf", F_OK) == 0)
+ {
+ system("cat /tmp/resolv_v4.conf >> /etc/resolv.conf");
+ }
+ if(access("/tmp/resolv_v6.conf", F_OK) == 0)
+ {
+ system("cat /tmp/resolv_v6.conf >> /etc/resolv.conf");
+ }
+ }
+ }
+ }
+}
+
+static void data_call_service_error_cb(int error)
+{
+ if(error == QL_ERR_ABORTED) {
+ printf("RIL service exit!!!\n");
+ }
+}
+
+int main(int argc, char *argv[])
+{
+ int ret = 0;
+ ql_data_call_apn_config_t apn_cfg;
+ ql_data_call_param_t *p_param = NULL;
+ int time_interval_list[20] = {0};
+ int retry_cnt = 20;
+
+ while(retry_cnt > 0)
+ {
+ ret = ql_data_call_init();
+
+ if(ret == QL_ERR_SERVICE_NOT_READY)
+ {
+ sleep(1);
+ retry_cnt --;
+ continue;
+ }
+ break;
+ }
+
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_init, ret=%d\n", ret);
+ return -1;
+ }
+
+ ql_data_call_set_status_ind_cb(data_call_status_ind_cb);
+
+ ql_data_call_set_service_error_cb(data_call_service_error_cb);
+
+ /**
+ * STEP 1: Set LTE default attach APN
+ */
+ memset(&apn_cfg, 0, sizeof(apn_cfg));
+ strncpy(apn_cfg.apn_name, APN_NAME_PRIVATE, sizeof(apn_cfg.apn_name));
+ apn_cfg.ip_ver = QL_NET_IP_VER_V4;
+
+ ret = ql_data_call_set_apn_config(1, &apn_cfg);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_set_apn_config, APN1, ret=%d\n", ret);
+ return -1;
+ }
+
+ /**
+ * STEP 2: Set APN used by Data call
+ * APN6 for public network
+ * APN7 For private network
+ */
+ memset(&apn_cfg, 0, sizeof(apn_cfg));
+ strncpy(apn_cfg.apn_name, APN_NAME_PUBLIC, sizeof(apn_cfg.apn_name));
+ apn_cfg.ip_ver = QL_NET_IP_VER_V4;
+
+ ret = ql_data_call_set_apn_config(DATA_CALL_APN_PUBLIC, &apn_cfg);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_set_apn_config, APN_ID=%d, ret=%d\n", DATA_CALL_APN_PUBLIC, ret);
+ return -1;
+ }
+
+ memset(&apn_cfg, 0, sizeof(apn_cfg));
+ strncpy(apn_cfg.apn_name, APN_NAME_PRIVATE, sizeof(apn_cfg.apn_name));
+ apn_cfg.ip_ver = QL_NET_IP_VER_V4;
+
+ ret = ql_data_call_set_apn_config(DATA_CALL_APN_PRIVATE, &apn_cfg);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_set_apn_config, APN_ID=%d, ret=%d\n", DATA_CALL_APN_PRIVATE, ret);
+ return -1;
+ }
+
+ p_param = ql_data_call_param_alloc();
+ if(p_param == NULL)
+ {
+ printf("Failed to ql_data_call_param_alloc, memory is not enough\n");
+ return -1;
+ }
+
+ /**
+ * STEP 3: create and start data call
+ * Public network data call: call_id=1, call_name=public, APN6
+ * Private network data_call: call_id=2, call_name=private, APN7
+ */
+ ret = ql_data_call_create(DATA_CALL_ID_PUBLIC, "public", 0);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_create, call_id=%d, ret=%d\n", DATA_CALL_ID_PUBLIC, ret);
+ return -1;
+ }
+
+ ql_data_call_param_init(p_param);
+ ql_data_call_param_set_apn_id(p_param, DATA_CALL_APN_PUBLIC);
+ ql_data_call_param_set_ip_version(p_param, QL_NET_IP_VER_V4);
+ ql_data_call_param_set_reconnect_mode(p_param, QL_NET_DATA_CALL_RECONNECT_NORMAL);
+ time_interval_list[0] = 20;
+ ql_data_call_param_set_reconnect_interval(p_param, time_interval_list, 1);
+
+ ret = ql_data_call_config(DATA_CALL_ID_PUBLIC, p_param);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_config, call_id=%d, ret=%d\n", DATA_CALL_ID_PUBLIC, ret);
+ return -1;
+ }
+
+ printf("Start data call : public\n");
+ ret = ql_data_call_start(DATA_CALL_ID_PUBLIC);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_start, call_id=%d, ret=%d\n", DATA_CALL_ID_PUBLIC, ret);
+ return -1;
+ }
+
+ ret = ql_data_call_create(DATA_CALL_ID_PRIVATE, "private", 0);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_create, call_id=%d, ret=%d\n", DATA_CALL_ID_PRIVATE, ret);
+ return -1;
+ }
+
+ ql_data_call_param_init(p_param);
+ ql_data_call_param_set_apn_id(p_param, DATA_CALL_APN_PRIVATE);
+ ql_data_call_param_set_ip_version(p_param, QL_NET_IP_VER_V4);
+ ql_data_call_param_set_reconnect_mode(p_param, QL_NET_DATA_CALL_RECONNECT_NORMAL);
+ time_interval_list[0] = 20;
+ ql_data_call_param_set_reconnect_interval(p_param, time_interval_list, 1);
+
+ ret = ql_data_call_config(DATA_CALL_ID_PRIVATE, p_param);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_config, call_id=%d, ret=%d\n", DATA_CALL_ID_PRIVATE, ret);
+ }
+
+ printf("Start data call : private\n");
+ ret = ql_data_call_start(DATA_CALL_ID_PRIVATE);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_start, call_id=%d, ret=%d\n", DATA_CALL_ID_PRIVATE, ret);
+ return -1;
+ }
+
+ while(1)
+ {
+ sleep(1);
+ }
+
+ return 0;
+}
diff --git a/mbtk/test/libql_lib_v2/ql_data_call_test.c b/mbtk/test/libql_lib_v2/ql_data_call_test.c
new file mode 100755
index 0000000..240ef45
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_data_call_test.c
@@ -0,0 +1,965 @@
+#include <stdio.h>
+#include <string.h>
+#include "ql_type.h"
+#include "ql_data_call.h"
+#include "ql_nslookup.h"
+#include "mbtk_utils.h"
+
+typedef void (*item_handler_f)(void);
+
+typedef struct
+{
+ const char *name;
+ item_handler_f handle;
+} t_item_t;
+
+const char *ql_data_call_state_str(int state)
+{
+ switch(state)
+ {
+ case QL_NET_DATA_CALL_STATUS_NONE:
+ return "NONE";
+ case QL_NET_DATA_CALL_STATUS_CREATED:
+ return "CREATE";
+ case QL_NET_DATA_CALL_STATUS_IDLE:
+ return "IDLE";
+ case QL_NET_DATA_CALL_STATUS_CONNECTING:
+ return "CONNECTING";
+ case QL_NET_DATA_CALL_STATUS_PARTIAL_V4_CONNECTED:
+ return "PARTIAL_V4_CONNECTED";
+ case QL_NET_DATA_CALL_STATUS_PARTIAL_V6_CONNECTED:
+ return "PARTIAL_V6_CONNECTED";
+ case QL_NET_DATA_CALL_STATUS_CONNECTED:
+ return "CONNECTED";
+ case QL_NET_DATA_CALL_STATUS_DISCONNECTED:
+ return "DISCONNECTED";
+ case QL_NET_DATA_CALL_STATUS_ERROR:
+ return "ERROR";
+ case QL_NET_DATA_CALL_STATUS_DELETED:
+ return "DELETE";
+ default:
+ break;
+ };
+
+ return "UNKNOW";
+}
+
+
+void data_call_status_ind_cb(int call_id,
+ QL_NET_DATA_CALL_STATUS_E pre_call_status,
+ ql_data_call_status_t *p_msg)
+{
+ printf("----DATA CALL STATUS CHANGE EVENT:\n");
+ printf("\tcall_id=%d\n", call_id);
+ printf("\tpre_call_status=%s\n", ql_data_call_state_str(pre_call_status));
+ printf("\tcall_name=%s\n", p_msg->call_name);
+ printf("\tcall_status=%s\n", ql_data_call_state_str(p_msg->call_status));
+ if(p_msg->device[0])
+ {
+ printf("\tdevice=%s\n", p_msg->device);
+ }
+ if(p_msg->has_addr)
+ {
+ printf("\tIP4 : addr=%s\n", p_msg->addr.addr);
+ printf("\tIP4 : netmask=%s\n", p_msg->addr.netmask);
+ printf("\tIP4 : subnet_bits=%d\n", p_msg->addr.subnet_bits);
+ printf("\tIP4 : gateway=%s\n", p_msg->addr.gateway);
+ printf("\tIP4 : dnsp=%s\n", p_msg->addr.dnsp);
+ printf("\tIP4 : dnss=%s\n", p_msg->addr.dnss);
+ }
+
+ if(p_msg->has_addr6)
+ {
+ printf("\tIP6 : addr=%s\n", p_msg->addr6.addr);
+ printf("\tIP6 : prefix=%s\n", p_msg->addr6.prefix);
+ printf("\tIP6 : prefix_bits=%d\n", p_msg->addr6.prefix_bits);
+ printf("\tIP6 : gateway=%s\n", p_msg->addr6.gateway);
+ printf("\tIP6 : dnsp=%s\n", p_msg->addr6.dnsp);
+ printf("\tIP6 : dnss=%s\n", p_msg->addr6.dnss);
+ }
+
+ printf("\tcall_end_reason_type=%d\n", p_msg->call_end_reason_type);
+ printf("\tcall_end_reason_code=0x%X\n", p_msg->call_end_reason_code);
+}
+
+void data_call_service_error_cb(int error)
+{
+ printf("===== DATACALL Service Abort =====\n");
+}
+
+void item_ql_data_call_init(void)
+{
+ int ret = 0;
+ printf("Start to ql_data_call_init\n");
+ ret = ql_data_call_init();
+ if(ret == QL_ERR_OK)
+ {
+ printf("Successful\n");
+ }
+ else
+ {
+ printf("Failed to ql_data_call_init, ret=%d\n", ret);
+ }
+}
+
+void item_ql_data_call_set_service_error_cb(void)
+{
+ int ret = 0;
+ printf("Start to ql_data_call_set_service_error_cb\n");
+ ret = ql_data_call_set_service_error_cb(data_call_service_error_cb);
+ if(ret == QL_ERR_OK)
+ {
+ printf("Successful\n");
+ }
+ else
+ {
+ printf("Failed to ql_data_call_set_service_error_cb, ret=%d\n", ret);
+ }
+
+}
+
+void item_ql_data_call_deinit(void)
+{
+ int ret = 0;
+ printf("Start to ql_data_call_deinit\n");
+ ret = ql_data_call_deinit();
+ if(ret == QL_ERR_OK)
+ {
+ printf("Successful\n");
+ }
+ else
+ {
+ printf("Failed to ql_data_call_deinit, ret=%d\n", ret);
+ }
+}
+
+void item_ql_data_call_create(void)
+{
+ int ret = 0;
+ int call_id = -1;
+ char call_name[64] = {0};
+ int is_background = 0;
+
+ printf("Please input call_id :");
+ ret = t_get_int(&call_id);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("Please input call name :");
+ ret = t_get_string(call_name, sizeof(call_name));
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("Working in background ?[0|1] :");
+ ret = t_get_int(&is_background);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("call_id=%d\n", call_id);
+ printf("call_name=%s\n", call_name);
+ printf("is_background=%d\n", is_background);
+ printf("Start to ql_data_call_create\n");
+ ret = ql_data_call_create(call_id, call_name, is_background);
+
+ if(ret == QL_ERR_OK)
+ {
+ printf("Successful\n");
+ }
+ else
+ {
+ printf("Failed to ql_data_call_create, ret=%d\n", ret);
+ }
+}
+
+void dump_data_call_config(ql_data_call_param_t *pcfg)
+{
+ int ret;
+ int dat;
+ int i;
+ int dat_list[128];
+ int dat_len;
+
+ ret = ql_data_call_param_get_apn_id(pcfg, &dat);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to get apn_id\n");
+ return;
+ }
+
+ printf("apn_id : %d\n", dat);
+
+ ret = ql_data_call_param_get_ip_version(pcfg, &dat);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to get ip_version\n");
+ return;
+ }
+ printf("ip_version : %d\n", dat);
+
+ ret = ql_data_call_param_get_reconnect_mode(pcfg, &dat);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to get reconnect_mode\n");
+ return;
+ }
+ printf("reconnect_mode : %d\n", dat);
+
+ dat_len = sizeof(dat_list)/sizeof(dat_list[0]);
+ ret = ql_data_call_param_get_reconnect_interval(pcfg, dat_list, &dat_len);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to get reconnect interval\n");
+ return;
+ }
+
+ printf("interval : ");
+ for(i=0; i<dat_len; i++)
+ {
+ if(dat_list[i]==0)
+ {
+ break;
+ }
+ if(i!=0)
+ {
+ printf("%c", ',');
+ }
+ printf("%d", dat_list[i]);
+ }
+ printf("\n");
+}
+
+void item_ql_data_call_config(void)
+{
+ int ret = 0;
+ int call_id;
+ int apn_id;
+ int dat = 0;
+ ql_data_call_param_t *pcfg;
+ int dat_buf[128];
+ int dat_len = sizeof(dat_buf)/sizeof(dat_buf[0]);
+
+ pcfg = ql_data_call_param_alloc();
+ if(pcfg == NULL)
+ {
+
+ printf("Failed to ql_data_call_param_alloc");
+ return;
+ }
+
+ do
+ {
+ printf("Please input call_id :");
+ ret = t_get_int(&call_id);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ ret = -1;
+ break;
+ }
+
+ printf("Please input apn_id :");
+ ret = t_get_int(&apn_id);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ ret = -1;
+ break;
+ }
+
+ if(apn_id<1 || apn_id>QL_NET_MAX_APN_ID)
+ {
+ printf("Invalid apn_id\n");
+ ret = -1;
+ break;
+ }
+
+ ql_data_call_param_set_apn_id(pcfg, apn_id);
+
+ printf("Please input ip_version [1-IPV4,2-IPV6,3-IPV4V6] :");
+ ret = t_get_int(&dat);
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ ret = -1;
+ break;
+ }
+
+ if(ret == 0)
+ {
+ if(!IS_QL_NET_IP_VER_VALID(dat))
+ {
+ printf("Unsupport ip_version : %d\n", dat);
+ ret = -1;
+ break;
+ }
+
+ ql_data_call_param_set_ip_version(pcfg, dat);
+ }
+
+ printf("Please input reconnect_mode [0-disable,1-normal,2-mode1,3-mode2] :");
+ ret = t_get_int(&dat);
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ ret = -1;
+ break;
+ }
+
+ if(ret == 0)
+ {
+ if(!IS_QL_NET_DATA_CALL_RECONNECT_MODE_VALID(dat))
+ {
+ printf("Unsupport mode : %d\n", dat);
+ ret = -1;
+ break;
+ }
+ ql_data_call_param_set_reconnect_mode(pcfg, dat);
+ }
+
+
+ printf("Please input interval_list [split by ,.:] :");
+ dat_len = sizeof(dat_buf)/sizeof(dat_buf[0]);
+ ret = t_get_int_list(dat_buf, &dat_len);
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ ret = -1;
+ break;
+ }
+
+ if(ret == 0)
+ {
+ ql_data_call_param_set_reconnect_interval(pcfg, dat_buf, dat_len);
+ }
+
+ ret = 0;
+ }
+ while(0);
+
+ if(ret == 0)
+ {
+ dump_data_call_config(pcfg);
+ printf("Accept ? [Y|N] :");
+ ret = t_get_char(&dat);
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ }
+ else
+ {
+ if(ret==1 || dat=='Y' || dat=='y')
+ {
+ printf("Start to ql_data_call_config\n");
+ ret = ql_data_call_config(call_id, pcfg);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_config, ret=%d\n", ret);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+ }
+ else
+ {
+ printf("Skip ql_data_call_config");
+ }
+ }
+ }
+
+ ql_data_call_param_free(pcfg);
+}
+
+
+void item_ql_data_call_get_config(void)
+{
+ int ret = 0;
+ int call_id;
+ ql_data_call_param_t *pcfg;
+
+ pcfg = ql_data_call_param_alloc();
+ if(pcfg == NULL)
+ {
+
+ printf("Failed to ql_data_call_param_alloc");
+ return;
+ }
+
+ do
+ {
+ printf("Please input call_id :");
+ ret = t_get_int(&call_id);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ ret = -1;
+ break;
+ }
+
+ ret = ql_data_call_get_config(call_id, pcfg);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_get_config, ret=%d\n", ret);
+ ret = -1;
+ break;
+ }
+
+ printf("Successful\n");
+
+ dump_data_call_config(pcfg);
+ } while(0);
+
+ ql_data_call_param_free(pcfg);
+}
+
+void item_ql_data_call_start(void)
+{
+ int ret = 0;
+ int call_id = -1;
+
+ printf("Please input call_id :");
+ ret = t_get_int(&call_id);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("Start to ql_data_call_start, data_call=%d\n", call_id);
+ ret = ql_data_call_start(call_id);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_start, ret=%d\n", ret);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+
+void item_ql_data_call_stop(void)
+{
+ int ret = 0;
+ int call_id = -1;
+
+ printf("Please input call_id :");
+ ret = t_get_int(&call_id);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("Start to ql_data_call_stop, data_call=%d\n", call_id);
+ ret = ql_data_call_stop(call_id);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_stop, ret=%d\n", ret);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+
+void item_ql_data_call_delete(void)
+{
+ int ret = 0;
+ int call_id = -1;
+
+ printf("Please input call_id :");
+ ret = t_get_int(&call_id);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("Start to ql_data_call_delete, data_call=%d\n", call_id);
+ ret = ql_data_call_delete(call_id);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_delete, ret=%d\n", ret);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+
+void item_ql_data_call_get_list(void)
+{
+ int i;
+ int ret = 0;
+ ql_data_call_item_t item_list[20];
+ int list_len = ARRAY_SIZE(item_list);
+
+ memset(item_list,0,sizeof(ql_data_call_item_t)*20);
+ printf("Start to ql_data_call_get_list\n");
+ ret = ql_data_call_get_list(item_list, &list_len);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_get_list, ret=%d\n", ret);
+ }
+ else
+ {
+ printf("Successful, instance_num=%d\n", list_len);
+ for(i=0; i<list_len; i++)
+ {
+ printf("%d\t%d\t%s\n", i, item_list[i].call_id, item_list[i].call_name);
+ }
+ }
+}
+
+void item_ql_data_call_get_status(void)
+{
+ int ret = 0;
+ int call_id;
+ ql_data_call_status_t sta = {0};
+
+ printf("Please input call_id :");
+ ret = t_get_int(&call_id);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("Start to ql_data_call_get_status\n");
+ ret = ql_data_call_get_status(call_id, &sta);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_get_status, ret=%d\n", ret);
+ return;
+ }
+
+ printf("Successful\n");
+ printf("call_id : %d\n", sta.call_id);
+ printf("call_name : %s\n", sta.call_name);
+ printf("call_status : %s\n", ql_data_call_state_str(sta.call_status));
+
+ if(sta.device[0])
+ {
+ printf("device : %s\n", sta.device);
+ }
+
+ if(sta.has_addr)
+ {
+ printf("\tip4 ip : %s\n", sta.addr.addr);
+ printf("\tip4 netmask : %s\n", sta.addr.netmask);
+ printf("\tip4 subnet_bits : %d\n", sta.addr.subnet_bits);
+ printf("\tip4 gateway : %s\n", sta.addr.gateway);
+ printf("\tip4_dnsp : %s\n", sta.addr.dnsp);
+ printf("\tip4_dnss : %s\n", sta.addr.dnss);
+ }
+
+ if(sta.has_addr6)
+ {
+ printf("\tip6 ip : %s\n", sta.addr6.addr);
+ printf("\tip6 prefix : %s\n", sta.addr6.prefix);
+ printf("\tip6 prefix_bits : %d\n", sta.addr6.prefix_bits);
+ printf("\tip6 gatway : %s\n", sta.addr6.gateway);
+ printf("\tip6 dnsp : %s\n", sta.addr6.dnsp);
+ printf("\tip6 dnss : %s\n", sta.addr6.dnss);
+ }
+
+ printf("call_end_reason_type : %d\n", sta.call_end_reason_type);
+ printf("call_end_reason_code : 0x%X\n", sta.call_end_reason_code);
+}
+
+void item_ql_data_call_set_status_ind_cb(void)
+{
+ int ret;
+
+ printf("Start to ql_data_call_set_status_ind_cb\n");
+ ret = ql_data_call_set_status_ind_cb(data_call_status_ind_cb);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_set_status_ind_cb, ret=%d\n", ret);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+
+void dump_apn_cfg(ql_data_call_apn_config_t *p_cfg)
+{
+ printf("ip_version : %d\n", p_cfg->ip_ver);
+ printf("auth_pref : %d\n", p_cfg->auth_pref);
+ printf("apn_name : %s\n", p_cfg->apn_name);
+ printf("username : %s\n", p_cfg->username);
+ printf("password : %s\n", p_cfg->password);
+}
+
+void item_ql_data_call_set_apn_config(void)
+{
+ int ret;
+ int dat;
+ int apn_id = 0;
+ ql_data_call_apn_config_t cfg = {0};
+
+ printf("Start to item_ql_data_call_set_apn_config\n");
+
+ printf("Please input apn_id :");
+ ret = t_get_int(&apn_id);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ if(apn_id<1 || apn_id>16)
+ {
+ printf("Invalid apn_id : %d\n", apn_id);
+ return;
+ }
+
+ printf("Please input auth_pref [0-NONE,1-PAP,2-CHAP,3-PAP&CHAP] :");
+ ret = t_get_int(&dat);
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ if(ret == 0)
+ {
+ if(!IS_QL_NET_AUTH_PREF_VALID(dat))
+ {
+ printf("Unspport auth_pref : %d\n", dat);
+ return;
+ }
+
+ cfg.auth_pref = dat;
+ }
+
+ printf("Please input ip_version [1-IPV4,2-IPV6,3-IPV4V6] :");
+ ret = t_get_int(&dat);
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ if(ret == 0)
+ {
+ if(!IS_QL_NET_IP_VER_VALID(dat))
+ {
+ printf("Unsupport ip_version : %d\n", dat);
+ return;
+ }
+
+ cfg.ip_ver = dat;
+ }
+
+ printf("Please input apn_name :");
+ ret = t_get_string(cfg.apn_name, sizeof(cfg.apn_name));
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("Please input username :");
+ ret = t_get_string(cfg.username, sizeof(cfg.username));
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("Please input password :");
+ ret = t_get_string(cfg.password, sizeof(cfg.password));
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("apn_id : %d", apn_id);
+ dump_apn_cfg(&cfg);
+
+ ret = ql_data_call_set_apn_config(apn_id, &cfg);
+
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_set_apn_config, ret=%d\n", ret);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+
+void item_ql_data_call_get_apn_config(void)
+{
+ int ret;
+ int apn_id = 0;
+ ql_data_call_apn_config_t cfg = {0};
+
+ printf("Start to item_ql_data_call_get_apn_config\n");
+
+ printf("Please input apn_id :");
+ ret = t_get_int(&apn_id);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ if(apn_id<1 || apn_id>16)
+ {
+ printf("Invalid apn_id : %d\n", apn_id);
+ return;
+ }
+
+ ret = ql_data_call_get_apn_config(apn_id, &cfg);
+
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_set_apn_config, ret=%d\n", ret);
+ }
+ else
+ {
+ printf("Successful\n");
+ printf("apn_id : %d\n", apn_id);
+ dump_apn_cfg(&cfg);
+ }
+}
+
+#if 0
+void item_ql_nslookup(void)
+{
+ printf("start ql_nslookup\n");
+ int i;
+ int ret = 0;
+ char ip_str[128];
+ char ip_family[5];
+ char hostname[64];
+ char dns_server_ip[20];
+ QUERY_IP_TYPE ip_type;
+ hostaddr_info_u resolved_addr;
+
+ memset(ip_str, 0, sizeof(ip_str));
+ memset(ip_family, 0, sizeof(ip_family));
+ memset(hostname, 0, sizeof(hostname));
+ memset(dns_server_ip, 0, sizeof(dns_server_ip));
+
+ printf("please input domain name: ");
+ ret = t_get_string(hostname, sizeof(hostname));
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("please input dns ip address: ");
+ ret = t_get_string(dns_server_ip, sizeof(dns_server_ip));
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("please input ipfamily(v4/v6): ");
+ ret = t_get_string(ip_family, sizeof(ip_family));
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ if(0 == strcmp(ip_family, "v4"))
+ {
+ ip_type = QUERY_IPV4_E;
+ }
+ else if(0 == strcmp(ip_family, "v6"))
+ {
+ ip_type = QUERY_IPV6_E;
+ }
+ else
+ {
+ printf("Invalid ip type\n");
+ return;
+ }
+
+
+ ql_nslookup(hostname, dns_server_ip, ip_type, &resolved_addr);
+
+ //printf resolved addr
+ for (i = 0; i < resolved_addr.addr_cnt; i++) {
+ inet_ntop(AF_INET, &resolved_addr.addr[i].s_addr, ip_str, sizeof(ip_str));
+ printf("%s has IPv4 address : %s\n", hostname, ip_str);
+ }
+
+ for (i = 0; i < resolved_addr.addr6_cnt; i++) {
+ inet_ntop(AF_INET6, &resolved_addr.addr6[i].s6_addr, ip_str, sizeof(ip_str));
+ printf("%s has IPv6 address : %s\n", hostname, ip_str);
+ }
+
+ return;
+}
+#endif
+
+void item_ql_data_call_set_attach_apn_config(void)
+{
+ int ret;
+ int dat;
+ ql_data_call_apn_config_t cfg = {0};
+
+ printf("Start to item_ql_data_call_set_attach_apn_config,apn id is 1\n");
+ printf("Please input auth_pref [0-NONE,1-PAP,2-CHAP,3-PAP&CHAP] :");
+ ret = t_get_int(&dat);
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ if(ret == 0)
+ {
+ if(!IS_QL_NET_AUTH_PREF_VALID(dat))
+ {
+ printf("Unspport auth_pref : %d\n", dat);
+ return;
+ }
+
+ cfg.auth_pref = dat;
+ }
+
+ printf("Please input ip_version [1-IPV4,2-IPV6,3-IPV4V6] :");
+ ret = t_get_int(&dat);
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ if(ret == 0)
+ {
+ if(!IS_QL_NET_IP_VER_VALID(dat))
+ {
+ printf("Unsupport ip_version : %d\n", dat);
+ return;
+ }
+
+ cfg.ip_ver = dat;
+ }
+
+ printf("Please input apn_name :");
+ ret = t_get_string(cfg.apn_name, sizeof(cfg.apn_name));
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("Please input username :");
+ ret = t_get_string(cfg.username, sizeof(cfg.username));
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ printf("Please input password :");
+ ret = t_get_string(cfg.password, sizeof(cfg.password));
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ dump_apn_cfg(&cfg);
+
+ ret = ql_data_call_set_attach_apn_config(&cfg);
+
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_data_call_set_apn_config, ret=%d\n", ret);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+
+static t_item_t ql_data_call_items[] =
+{
+ {"ql_data_call_init", item_ql_data_call_init},
+ {"ql_data_call_create", item_ql_data_call_create},
+ {"ql_data_call_config",item_ql_data_call_config},
+ {"ql_data_call_get_config",item_ql_data_call_get_config},
+ {"ql_data_call_start", item_ql_data_call_start},
+ {"ql_data_call_stop", item_ql_data_call_stop},
+ {"ql_data_call_delete", item_ql_data_call_delete},
+ {"ql_data_call_get_list", item_ql_data_call_get_list},
+ {"ql_data_call_get_status", item_ql_data_call_get_status},
+ {"ql_data_call_set_status_ind_cb", item_ql_data_call_set_status_ind_cb},
+ {"ql_data_call_set_apn_config", item_ql_data_call_set_apn_config},
+ {"ql_data_call_get_apn_config", item_ql_data_call_get_apn_config},
+ {"ql_data_call_set_service_error_cb", item_ql_data_call_set_service_error_cb},
+ {"ql_data_call_deinit", item_ql_data_call_deinit},
+// {"ql_nslookup",item_ql_nslookup},
+ {"ql_data_call_set_attach_apn_config", item_ql_data_call_set_attach_apn_config}
+};
+
+static void help()
+{
+ int i = 0;
+ printf("Test Items:\n");
+ while(i < ARRAY_SIZE(ql_data_call_items)) {
+ printf("%d : %s\n", i, ql_data_call_items[i].name);
+ i++;
+ }
+ printf(":");
+}
+
+int main(int argc, char *argv[])
+{
+ char cmd[1024];
+ help();
+ while(1)
+ {
+ memset(cmd, 0, sizeof(cmd));
+ if(fgets(cmd, sizeof(cmd), stdin))
+ {
+ char *ptr = cmd + strlen(cmd) - 1;
+ while(ptr >= cmd && (*ptr == '\r' || *ptr == '\n'))
+ {
+ *ptr-- = '\0';
+ }
+
+ if(strlen(cmd) > 0) {
+ if(isdigit(cmd[0])) {
+ int item = atoi(cmd);
+ if(item >= 0 && item < ARRAY_SIZE(ql_data_call_items)) {
+ ql_data_call_items[item].handle();
+ }
+ }
+ else if(!strcasecmp(cmd, "h")) {
+ help();
+ }
+ else if(!strcasecmp(cmd, "q")) {
+ break;
+ }
+ }
+ else {
+ printf("\n");
+ }
+ }
+ }
+ return 0;
+}
+
+
+
diff --git a/mbtk/test/libql_lib_v2/ql_dm_test.c b/mbtk/test/libql_lib_v2/ql_dm_test.c
new file mode 100755
index 0000000..409c460
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_dm_test.c
@@ -0,0 +1,553 @@
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <sys/time.h>
+
+#include "ql_v2/ql_type.h"
+#include "ql_dm.h"
+
+
+
+#define T_ARRAY_SIZE(items) (sizeof(items)/sizeof(items[0]))
+
+typedef void (*item_handler_f)(void);
+typedef int (*init_handler_f)(void);
+typedef int (*deinit_handler_f)(void);
+
+
+
+typedef struct
+{
+ const char *name;
+ item_handler_f handle;
+} t_item_t;
+
+typedef struct
+{
+ const char *name;
+ int item_len;
+ t_item_t *item_list;
+} t_module_t;
+
+typedef struct
+{
+ const char *name;
+ init_handler_f init_handle;
+ deinit_handler_f deinit_handle;
+} t_init_t;
+
+int t_get_int(int *val)
+{
+ int dat;
+ char *ptr_end = NULL;
+ char buf[256] = {0};
+
+ if(NULL == fgets(buf, sizeof(buf)-1, stdin))
+ {
+ return -1;
+ }
+
+ if(0 == buf[0])
+ {
+ return -1;
+ }
+
+ if(buf[0] == '\n')
+ {
+ return 1;
+ }
+
+ dat = strtol(buf, &ptr_end, 10);
+ if(ptr_end!=NULL && ptr_end[0]!='\n')
+ {
+ return -1;
+ }
+
+ if(val)
+ {
+ val[0] = dat;
+ }
+
+ return 0;
+}
+
+
+static int internal_dm_get_air_plane_mode(QL_DM_AIR_PLANE_MODE_TYPE_E mode, char* buf, int buf_len);
+
+
+void dm_air_plane_mode_event_ind_cb(QL_DM_AIR_PLANE_MODE_TYPE_E air_plane_mode)
+{
+ char mode_info[16] = {0};
+
+ printf("Recv event indication : air plane mode changed event\n");
+
+ if(internal_dm_get_air_plane_mode(air_plane_mode, mode_info, sizeof(mode_info)) == 0)
+ {
+ printf("unrecognized air plane mode:%d\n", air_plane_mode);
+ }
+ else
+ {
+ printf("current air plane mode is %s\n", mode_info);
+ }
+}
+
+void dm_modem_state_change_ind_cb(int modem_state)
+{
+ printf("Recv event indication : modem status changed event\n");
+ if(QL_DM_MODEM_STATE_ONLINE == modem_state)
+ {
+ printf("current modem status is ONLINE\n");
+ }
+ else if(QL_DM_MODEM_STATE_OFFLINE == modem_state)
+ {
+ printf("current modem status is OFFLINE\n");
+ }
+ else
+ {
+ printf("current modem status is UNKNOWN\n");
+ }
+}
+
+void dm_service_error_cb(int error)
+{
+ printf("===== DM Service Abort =====\n");
+}
+
+void item_ql_dm_init(void)
+{
+ int ret = 0;
+
+ printf("Start to ql_dm_init: ");
+ ret = ql_dm_init();
+ if(ret == QL_ERR_OK)
+ {
+ printf("dm init ok\n");
+ }
+ else
+ {
+ printf("failed, ret=%d\n", ret);
+ }
+}
+
+void item_ql_dm_set_service_error_cb(void)
+{
+ int ret = 0;
+
+ printf("Start to item_ql_dm_set_service_error_cb : ");
+ ret = ql_dm_set_service_error_cb(dm_service_error_cb);
+ if(ret != QL_ERR_OK)
+ {
+ printf("failed, ret=%d\n", ret);
+ }
+ else
+ {
+ printf("successful\n");
+ }
+}
+
+void item_ql_dm_deinit(void)
+{
+ int ret = 0;
+
+ printf("Start to ql_dm_deinit: ");
+ ret = ql_dm_deinit();
+ if(ret == QL_ERR_OK)
+ {
+ printf("dm deinit ok\n");
+ }
+ else
+ {
+ printf("failed, ret=%d\n", ret);
+ }
+}
+
+void item_ql_dm_set_air_plane_mode_ind_cb(void)
+{
+ int ret = 0;
+ int reg_flag = 0;
+
+ printf("please input air plane mode reg option: (0: unreg, other: reg): ");
+ ret = t_get_int(®_flag);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ if(reg_flag)
+ {
+ ret = ql_dm_set_air_plane_mode_ind_cb(dm_air_plane_mode_event_ind_cb);
+ }
+ else
+ {
+ ret = ql_dm_set_air_plane_mode_ind_cb(NULL);
+ }
+ printf("ql_dm_set_air_plane_mode_ind_cb ret = %d\n", ret);
+}
+
+void item_ql_dm_get_software_version(void)
+{
+ int ret;
+ char soft_ver[128] = {0};
+
+ ret = ql_dm_get_software_version(soft_ver, sizeof(soft_ver));
+
+ printf("ql_dm_get_software_version ret = %d, software version is %s\n", ret, soft_ver);
+}
+
+void item_ql_dm_set_modem_state_change_ind_cb(void)
+{
+ int ret = 0;
+ int reg_flag = 0;
+
+ printf("please input modem state reg option: (0: unreg, other: reg): ");
+ ret = t_get_int(®_flag);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ if(reg_flag)
+ {
+ ret = ql_dm_set_modem_state_change_ind_cb(dm_modem_state_change_ind_cb);
+ }
+ else
+ {
+ ret = ql_dm_set_modem_state_change_ind_cb(NULL);
+ }
+ printf("ql_dm_set_modem_state_change_ind_cb ret = %d\n", ret);
+}
+
+void item_ql_dm_get_device_serial_numbers(void)
+{
+ int ret;
+ ql_dm_device_serial_numbers_info_t t_info;
+ memset(&t_info, 0, sizeof(ql_dm_device_serial_numbers_info_t));
+
+ ret = ql_dm_get_device_serial_numbers(&t_info);
+ printf("ql_dm_get_device_serial_number ret = %d", ret);
+ if(t_info.imei_valid)
+ {
+ printf(", imei is %s", t_info.imei);
+ }
+ if(t_info.imei2_valid)
+ {
+ printf(", imei2 is %s", t_info.imei2);
+ }
+ if(t_info.meid_valid)
+ {
+ printf(", meid is %s ", t_info.meid);
+ }
+ printf("\n");
+}
+
+void item_ql_dm_get_device_firmware_rev_id(void)
+{
+ int ret;
+ char firmware_rev_id[QL_DM_FIRMWARE_REV_MAX_LEN + 1] = {0};
+
+ ret = ql_dm_get_device_firmware_rev_id(firmware_rev_id, sizeof(firmware_rev_id));
+ printf("ql_dm_get_device_firmware_rev_id ret = %d, device revision id is %s\n",
+ ret, firmware_rev_id);
+}
+
+void item_ql_dm_get_air_plane_mode(void)
+{
+ int ret;
+ char mode_info[16] = {0};
+ QL_DM_AIR_PLANE_MODE_TYPE_E air_plane_mode;
+
+ ret = ql_dm_get_air_plane_mode(&air_plane_mode);
+
+ printf("ql_dm_get_air_plane_mode ret = %d, ", ret);
+ if(internal_dm_get_air_plane_mode(air_plane_mode, mode_info, sizeof(mode_info)) == 0)
+ {
+ printf("unrecognized air plane mode:%d\n", air_plane_mode);
+ }
+ else
+ {
+ printf("current air plane mode is %s\n", mode_info);
+ }
+}
+
+void item_ql_dm_set_air_plane_mode(void)
+{
+ int ret;
+ int mode;
+ QL_DM_AIR_PLANE_MODE_TYPE_E air_plane_mode;
+
+ printf("please input air plane mode(1: ON, 2: OFF): ");
+ ret = t_get_int(&mode);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ air_plane_mode = mode;
+ if(air_plane_mode != QL_DM_AIR_PLANE_MODE_ON && air_plane_mode != QL_DM_AIR_PLANE_MODE_OFF)
+ {
+ printf("please input 1 or 2\n");
+ return;
+ }
+
+ ret = ql_dm_set_air_plane_mode(air_plane_mode);
+ printf("ql_dm_set_air_plane_mode ret = %d\n", ret);
+}
+
+static int internal_dm_get_air_plane_mode(QL_DM_AIR_PLANE_MODE_TYPE_E mode, char* buf, int buf_len)
+{
+ int ret_val = 1;
+
+ if(buf == NULL || buf_len < 2)
+ {
+ printf("param is valid\n");
+ return 0;
+ }
+
+ memset(buf, 0, buf_len);
+
+ switch(mode)
+ {
+ case QL_DM_AIR_PLANE_MODE_UNKNOWN:
+ strncpy(buf, "UNKNOWN", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_DM_AIR_PLANE_MODE_ON:
+ strncpy(buf, "ON", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_DM_AIR_PLANE_MODE_OFF:
+ strncpy(buf, "OFF", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_DM_AIR_PLANE_MODE_NA:
+ strncpy(buf, "UNAVAILABLE", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ default:
+ ret_val = 0;
+ break;
+ }
+ return ret_val;
+}
+
+
+static t_item_t ql_dm_items[] =
+{
+ {"ql_dm_init", item_ql_dm_init},
+ {"ql_dm_set_air_plane_mode_ind_cb", item_ql_dm_set_air_plane_mode_ind_cb},
+ {"ql_dm_get_software_version", item_ql_dm_get_software_version},
+ {"ql_dm_set_modem_state_change_ind_cb", item_ql_dm_set_modem_state_change_ind_cb},
+ {"ql_dm_get_device_serial_numbers", item_ql_dm_get_device_serial_numbers},
+ {"ql_dm_get_device_firmware_rev_id", item_ql_dm_get_device_firmware_rev_id},
+ {"ql_dm_get_air_plane_mode", item_ql_dm_get_air_plane_mode},
+ {"ql_dm_set_air_plane_mode", item_ql_dm_set_air_plane_mode},
+ {"ql_dm_set_service_error_cb", item_ql_dm_set_service_error_cb},
+ {"ql_dm_deinit", item_ql_dm_deinit}
+};
+
+t_module_t ql_dm_module =
+{
+ "dm",
+ T_ARRAY_SIZE(ql_dm_items),
+ ql_dm_items
+};
+
+
+t_module_t *test_modules[] =
+{
+ &ql_dm_module,
+
+};
+
+void dump_modules(void)
+{
+ int i;
+
+ printf("\n");
+ for(i=0; i<T_ARRAY_SIZE(test_modules); i++)
+ {
+ printf("%d\t%s\n", i, test_modules[i]->name);
+ }
+ printf("-1\texit\n");
+}
+
+void dump_items(t_module_t *m)
+{
+ int i;
+
+ printf("\n");
+ printf("The current module is: \n");
+
+ for(i=0; i<m->item_len; i++)
+ {
+ printf("%d\t%s\n", i, m->item_list[i].name);
+ }
+ printf("-1\texit\n");
+}
+
+void enter_modules(t_module_t *m)
+{
+ int ret;
+ int idx;
+
+ dump_items(m);
+
+ while(1)
+ {
+ printf("Please enter your choice: ");
+ ret = t_get_int(&idx);
+ printf("\n");
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ continue;
+ }
+ else if(ret == 1)
+ {
+ dump_items(m);
+ continue;
+ }
+
+ if(idx == -1)
+ {
+ break;
+ }
+
+ if(idx<0 || idx>=m->item_len)
+ {
+ printf("Not support idx: %d\n", idx);
+ continue;
+ }
+
+ printf("->Item : %s\n", m->item_list[idx].name);
+ m->item_list[idx].handle();
+ }
+}
+
+ static t_init_t init_func[] = {
+ {"ql_dm_init",ql_dm_init,ql_dm_deinit},
+
+
+};
+
+
+void test_init(int retry)
+{
+
+ int i = 0,j = 0;
+ for(i=0; i<T_ARRAY_SIZE(init_func); i++)
+ {
+ printf("Exec %s time = \n", init_func[i].name);
+ //clock_t start,end;
+ struct timeval start,end;
+
+ double cost_time = 0;
+ int ret = QL_ERR_OK;
+ for(j = 0;j < retry; j++)
+ {
+ if(QL_ERR_OK == ret )
+ {
+ //start = clock();
+ gettimeofday(&start, NULL);
+ }
+
+ ret = -1;
+ ret = init_func[i].init_handle();
+ if(QL_ERR_OK == ret)
+ {
+ //end = clock();
+ gettimeofday(&end, NULL);
+ long timeuse = 1000000*(end.tv_sec - start.tv_sec) + end.tv_usec-start.tv_usec;
+ //printf("%6.0f ",(double)(end-start));
+ printf("%ld ",timeuse/1000);
+ //cost_time = cost_time > (end-start) ?cost_time:(end-start);
+ cost_time = cost_time > (timeuse/1000) ?cost_time:(timeuse/1000);
+
+ init_func[i].deinit_handle();
+ }
+
+
+ }
+ printf("\n");
+ printf("Finish test. %s max cost time = %6.0f ms\n",init_func[i].name, cost_time);
+
+ }
+
+
+}
+
+
+int main(int argc, char *argv[])
+{
+ int ret;
+ int idx;
+
+ if(argc > 1)
+ {
+ int c = -1;
+ int retry = -1;
+
+ while((c = getopt(argc, argv, "i:")) != -1)
+ {
+ if(-1 == c)
+ {
+ break;
+ }
+
+ switch(c)
+ {
+ case 'i':
+ retry = atoi(optarg);
+ test_init(retry);
+ return 0;
+
+ default:
+ printf("usage: ql_sdk_api_test -i <retry count> to test init func\n");
+ printf(" ql_sdk_api_test to test sdk api\n");
+ return -1;
+ }
+ }
+ }
+
+
+ dump_modules();
+
+ while(1)
+ {
+ printf("Please enter your choice: ");
+ ret = t_get_int(&idx);
+ printf("\n");
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ continue;
+ }
+ else if(ret == 1)
+ {
+ dump_modules();
+ continue;
+ }
+
+ if(idx == -1)
+ {
+ break;
+ }
+
+ if(idx<0 || idx>=T_ARRAY_SIZE(test_modules))
+ {
+ printf("Not support idx: %d\n", idx);
+ continue;
+ }
+
+ enter_modules(test_modules[idx]);
+ }
+
+ return 0;
+}
+
diff --git a/mbtk/test/libql_lib_v2/ql_ecall_test.c b/mbtk/test/libql_lib_v2/ql_ecall_test.c
new file mode 100755
index 0000000..0ad1113
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_ecall_test.c
@@ -0,0 +1,1025 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <ctype.h>
+
+#include "ql_type.h"
+#include "ql_ms_voice.h"
+#include "ql_ecall.h"
+#include "mbtk_utils.h"
+
+typedef void (*item_handler_f)(void);
+
+typedef struct
+{
+ const char *name;
+ item_handler_f handle;
+} t_item_t;
+
+void item_ql_ecall_set_test_number(void)
+{
+ int ret = 0;
+ int sim_id;
+
+ char test_number[QL_VOICE_MAX_PHONE_NUMBER];
+
+ printf("test ql_voice_ecall_set_test_number: ");
+
+ printf("please enter test number: ");
+ char* find = NULL;
+
+ if(NULL == fgets(test_number, QL_VOICE_MAX_PHONE_NUMBER-1, stdin))
+ return;
+ find = strchr(test_number, '\n');
+ if(find)
+ {
+ *find = '\0';
+ }
+
+ printf("please enter the sim_id: ");
+
+ if(1 != scanf("%u", &sim_id))
+ return;
+ getchar();
+ printf("sim_id is %u\n", sim_id);
+
+ ret = ql_ecall_set_test_number(sim_id, test_number);
+
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+void item_ql_ecall_reset_ivs(void)
+{
+ int ret = 0;
+ int sim_id;
+
+ printf("please enter the sim_id: ");
+
+ if(1 != scanf("%u", &sim_id))
+ return;
+ getchar();
+ printf("sim_id is %u\n", sim_id);
+
+ ret = ql_ecall_reset_ivs(sim_id);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+void fast_ecall_dial(void){
+ int ret = 0, v = 0;
+ ql_voice_ecall_info_t *p_info = NULL;
+ char *find = NULL;
+ uint32_t id;
+ int sim_id;
+
+ p_info = (ql_voice_ecall_info_t *)calloc(1, sizeof(*p_info));
+ if (NULL == p_info)
+ {
+ printf("run out of memory\n");
+ return;
+ }
+
+ printf("please enter the sim_id: ");
+ if(1 != scanf("%d", &sim_id))
+ return;
+ getchar();
+
+ if(!QL_IS_SIM_VALID(sim_id))
+ {
+ printf("invalid sim_id\n");
+ free(p_info);
+ p_info = NULL;
+ return;
+ }
+
+ printf("sim_id is %d\n", sim_id);
+
+ printf("example MSD: 01 04 a9 81 d5 49 70 d6 5c 35 97 ca 04 20 c4 14 60 "
+ "0b be 5f 7e b1 4b a6 ee 10 4f c5 27 03 c1 80 q\n");
+ printf("please enter MSD(at most 140 hex), end with 'q': ");
+ while (1 == scanf("%x", &v))
+ {
+ p_info->msd[p_info->msd_len++] = v;
+ }
+ getchar(); // read `q'
+ getchar(); // read '\n'
+
+ printf("MSD ========[");
+ for(v = 0; v < p_info->msd_len; v ++)
+ {
+ printf("%02x ", p_info->msd[v]);
+ }
+ printf("]\n");
+
+ if (p_info->msd_len > QL_VOICE_MAX_ECALL_MSD)
+ {
+ printf("MSD too long\n");
+ free(p_info);
+ p_info = NULL;
+ return;
+ }
+
+ printf("please enter eCall type(1 - test, 2 - emergency, 3 - reconfig): ");
+ if(1 != scanf("%d", (int *)&p_info->type))
+ return;
+ getchar();
+
+ printf("please enter test number(emergency ecall should be empty): ");
+ find = NULL;
+ if(NULL == fgets(p_info->test_number, sizeof(p_info->test_number)-1, stdin))
+ return;
+ find = strchr(p_info->test_number, '\n');
+ if(find)
+ {
+ *find = '\0';
+ }
+
+ printf("how to trigger eCall(0 - manual, 1 - auto): ");
+ if(1 != scanf("%d", &p_info->auto_trigger))
+ return;
+ getchar();
+
+ ret = ql_ecall_dial(sim_id, p_info, &id);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok, call_id is %u\n", id);
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+
+ free(p_info);
+ p_info = NULL;
+}
+
+void item_ql_ecall_dial(void)
+{
+ printf("test ql_voice_ecall_dial: \n");
+ printf("Is fast ecall? (1 - yes, other - wrong): ");
+ int is_fast;
+ scanf("%d", &is_fast);
+ getchar();
+
+ if(is_fast == 1){
+ printf("Dialling fast ecall\n");
+ fast_ecall_dial();
+ }else{
+ printf("Wrong arguments\n");
+ }
+}
+
+void item_ql_ecall_hangup(void)
+{
+ int ret = 0;
+// int sim_id;
+
+ printf("test ql_voice_ecall_hangup: \n");
+ ret = ql_ecall_hangup();
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+void item_ql_ecall_update_msd_raw(void)
+{
+ int ret = 0, v = 0;
+ uint32_t msd_len = 0;
+ char msd[QL_VOICE_MAX_ECALL_MSD] = {0};
+
+ printf("test ql_voice_ecall_update_msd: \n");
+ printf("example MSD: 01 04 a9 81 d5 49 70 d6 5c 35 97 ca 04 20 c4 14 60 "
+ "0b be 5f 7e b1 4b a6 ee 10 4f c5 27 03 c1 80 q\n");
+ printf("please enter MSD(at most 140 hex), end with 'q': ");
+ while (1 == scanf("%x", &v))
+ {
+ if(msd_len >= QL_VOICE_MAX_ECALL_MSD)
+ {
+ printf("MSD too long\n");
+ int c;
+ while ((c = getchar()) != '\n' && c != EOF) { }
+ return;
+ }
+ else
+ {
+ msd[msd_len++] = v;
+ }
+ }
+ getchar(); // read `q'
+ getchar(); // read '\n'
+
+ ret = ql_ecall_update_msd_raw((uint8_t *)msd, msd_len);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+void item_ql_ecall_push_msd(void)
+{
+ int ret = 0;
+
+ printf("test ql_voice_ecall_push_msd: \n");
+ ret = ql_ecall_push_msd();
+ if (ret == QL_ERR_OK)
+ {
+ printf("sql_ecall_push_msd OK\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void ecall_user_ind_callback(int ind, void *userdata)
+{
+ printf("\n****** eCall indication Received ******\n");
+ printf("ecall_indication: %d - ", ind);
+
+ switch(ind){
+ case QL_ECALL_EVENT_SENDING_START:
+ printf("QL_ECALL_EVENT_SENDING_START\n");
+ break;
+ case QL_ECALL_EVENT_SENDING_MSD:
+ printf("QL_ECALL_EVENT_SENDING_MSD\n");
+ break;
+ case QL_ECALL_EVENT_LLACK_RECEIVED:
+ printf("QL_ECALL_EVENT_LLACK_RECEIVED\n");
+ break;
+ case QL_ECALL_EVENT_ALLACK_POSITIVE_RECEIVED:
+ printf("QL_ECALL_EVENT_ALLACK_POSITIVE_RECEIVED\n");
+ break;
+ case QL_ECALL_EVENT_ALLACK_CLEARDOWN_RECEIVED:
+ printf("QL_ECALL_EVENT_ALLACK_CLEARDOWN_RECEIVED\n");
+ break;
+ case QL_ECALL_EVENT_ACTIVE:
+ printf("QL_ECALL_EVENT_ACTIVE\n");
+ break;
+ case QL_ECALL_EVENT_DISCONNECTED:
+ printf("QL_ECALL_EVENT_DISCONNECTED\n");
+ break;
+ case QL_ECALL_EVENT_ABNORMAL_HANGUP:
+ printf("QL_ECALL_EVENT_ABNORMAL_HANGUP\n");
+ break;
+ case QL_ECALL_EVENT_ONLY_DEREGISTRATION:
+ printf("QL_ECALL_EVENT_ONLY_DEREGISTRATION\n");
+ break;
+ case QL_ECALL_EVENT_MAY_DEREGISTRATION:
+ printf("QL_ECALL_EVENT_MAY_DEREGISTRATION\n");
+ break;
+ case QL_ECALL_EVENT_PSAP_CALLBACK_START:
+ printf("QL_ECALL_EVENT_PSAP_CALLBACK_START\n");
+ break;
+ case QL_ECALL_EVENT_T2_TIMEOUT:
+ printf("QL_ECALL_EVENT_T2_TIMEOUT\n");
+ break;
+ case QL_ECALL_EVENT_T5_TIMEOUT:
+ printf("QL_ECALL_EVENT_T5_TIMEOUT\n");
+ break;
+ case QL_ECALL_EVENT_T6_TIMEOUT:
+ printf("QL_ECALL_EVENT_T6_TIMEOUT\n");
+ break;
+ case QL_ECALL_EVENT_T7_TIMEOUT:
+ printf("QL_ECALL_EVENT_T7_TIMEOUT\n");
+ break;
+ case QL_ECALL_EVENT_ECALL_STARTED:
+ printf("QL_ECALL_EVENT_ECALL_STARTED\n");
+ break;
+ case QL_ECALL_EVENT_INCOMING_CALL:
+ printf("QL_ECALL_EVENT_INCOMING_CALL\n");
+ break;
+ case QL_ECALL_EVENT_DIAL_DURATION_TIMEOUT:
+ printf("QL_ECALL_EVENT_DIAL_DURATION_TIMEOUT\n");
+ break;
+ case QL_ECALL_EVENT_INTERVAL_TIMEOUT:
+ printf("QL_ECALL_EVENT_INTERVAL_TIMEOUT\n");
+ break;
+ case QL_ECALL_EVENT_AUTO_ANSWER_TIMEOUT:
+ printf("QL_ECALL_EVENT_AUTO_ANSWER_TIMEOUT\n");
+ break;
+ default:
+ printf("UNKNOWN\n");
+ break;
+ }
+}
+
+void item_ql_ecall_init(void)
+{
+ int ret = 0;
+
+ printf("test ql_ecall_init: ");
+ ret = ql_ecall_init();
+ if(ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+void item_ql_ecall_deinit(void)
+{
+ int ret = 0;
+
+ printf("test ql_ecall_deinit: ");
+ ret = ql_ecall_deinit();
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+void item_ql_ecall_set_user_ind_cb(void)
+{
+ ql_ecall_set_user_ind_cb(ecall_user_ind_callback, NULL);
+}
+
+void item_ql_ecall_set_msd_version(void)
+{
+ int ret = 0;
+ uint8_t index=0;
+
+ printf("ecall MSD version(1-ASN1_ECALL_MSD_VERSION_1; 2-ASN1_ECALL_MSD_VERSION_2): \n");
+ scanf("%hhd", &index);
+ getchar();
+
+ if (1 == index)
+ {
+ ret = ql_ecall_set_msd_version(ASN1_ECALL_MSD_VERSION_1);
+ printf(" ql_ecall_get_msd_version ret = %d\n", ret);
+ }
+ else if(2 == index)
+ {
+ ret = ql_ecall_set_msd_version(ASN1_ECALL_MSD_VERSION_2);
+ printf(" ql_ecall_get_msd_version ret = %d\n", ret);
+ }
+ else
+ {
+ printf(" This version is not surport.\n");
+ }
+
+}
+
+void item_ql_ecall_get_msd_version(void)
+{
+ uint8_t msdVersion = 0;
+
+ ql_ecall_get_msd_version(&msdVersion);
+
+ if(msdVersion == ASN1_ECALL_MSD_VERSION_1)//unsupported
+ {
+ printf("MSD version is set to ASN1_ECALL_MSD_VERSION_1.\n");
+ }
+ else if (msdVersion == ASN1_ECALL_MSD_VERSION_2)//supported
+ {
+ printf("MSD version is set to ASN1_ECALL_MSD_VERSION_2.\n");
+ }
+ else
+ {
+ printf(" This version is not surport.\n");
+ }
+
+}
+
+void item_ql_ecall_set_system_type(void)
+{
+ int ret = 0;
+ uint8_t index=0;
+
+ printf("ecall system type(0-ECALL_SYSTEM_STD_PAN_EUROPEAN; 1-ECALL_SYSTEM_STD_ERA_GLONASS): \n");
+ scanf("%hhd", &index);
+ getchar();
+
+ if (0 == index)
+ {
+ ret = ql_ecall_set_system_std(ECALL_SYSTEM_STD_PAN_EUROPEAN);
+ printf(" ql_ecall_set_system_std ret = %d\n", ret);
+ }
+ else if(1 == index)
+ {
+ ret = ql_ecall_set_system_std(ECALL_SYSTEM_STD_ERA_GLONASS);
+ printf(" ql_ecall_set_system_std ret = %d\n", ret);
+ }
+ else
+ {
+ printf(" This version is not surport.\n");
+ }
+}
+
+void item_ql_ecall_get_system_type(void)
+{
+ ECALL_SYSTEM_STD_E system_std;
+ ql_ecall_get_system_std(&system_std);
+ if(system_std == ECALL_SYSTEM_STD_PAN_EUROPEAN)
+ {
+ printf("Ecall system type set to ECALL_SYSTEM_STD_PAN_EUROPEAN.\n");
+ }
+ else if (system_std == ECALL_SYSTEM_STD_ERA_GLONASS)
+ {
+ printf("Ecall system type set to ECALL_SYSTEM_STD_ERA_GLONASS.\n");
+ }
+ else
+ {
+ printf("Ecall system type set to unsupported value.\n");
+ }
+}
+
+void item_ql_ecall_set_msd_vehicle_type(void)
+{
+ int ret = 0;
+ uint8_t index=0;
+
+ printf("Please input VehicleType:\n");
+ printf("MSD_VEHICLE_PASSENGER_M1=1\n");
+ printf("MSD_VEHICLE_BUS_M2=2\n");
+ printf("MSD_VEHICLE_BUS_M3=3\n");
+ printf("MSD_VEHICLE_COMMERCIAL_N1=4\n");
+ printf("MSD_VEHICLE_HEAVY_N2=5\n");
+ printf("MSD_VEHICLE_HEAVY_N3=6\n");
+ printf("MSD_VEHICLE_MOTORCYCLE_L1E=7\n");
+ printf("MSD_VEHICLE_MOTORCYCLE_L2E=8\n");
+ printf("MSD_VEHICLE_MOTORCYCLE_L3E=9\n");
+ printf("MSD_VEHICLE_MOTORCYCLE_L4E=10\n");
+ printf("MSD_VEHICLE_MOTORCYCLE_L5E=11\n");
+ printf("MSD_VEHICLE_MOTORCYCLE_L6E=12\n");
+ printf("MSD_VEHICLE_MOTORCYCLE_L7E=13\n");
+
+ scanf("%hhd", &index);
+ getchar();
+
+ ret = ql_ecall_set_msd_vehicle_type(index);
+ printf(" ql_ecall_set_msd_vehicle_type ret = %d\n", ret);
+
+}
+
+void item_ql_ecall_get_msd_vehicle_type(void)
+{
+ uint8_t vehicleType = 0;
+ ql_ecall_get_msd_vehicle_type(&vehicleType);
+ printf("VehicalType is set to: %u\n", vehicleType);
+
+}
+
+void item_ql_ecall_set_msd_position(void)
+{
+ int ret = 0;
+ int32_t latitude, longitude, direction = 0;
+
+ printf("Please input latitude(example:+48898064):\n");
+ scanf("%d", &latitude);
+ getchar();
+
+ printf("Please input longitude(example:+2218092):\n");
+ scanf("%d", &longitude);
+ getchar();
+
+ printf("Please input direction(example:0):\n");
+ scanf("%d", &direction);
+ getchar();
+
+ ret = ql_ecall_set_msd_position(true, latitude, longitude, direction);
+ printf(" ql_ecall_set_msd_position ret = %d\n", ret);
+}
+
+void item_ql_ecall_set_msd_position1(void)
+{
+ int ret = 0;
+ int32_t latitudeDeltaN1, longitudeDeltaN1 = 0;
+
+ printf("Please input latitudeDeltaN1(-512 ~ 511):\n");
+ scanf("%d", &latitudeDeltaN1);
+ getchar();
+
+ printf("Please input longitudeDeltaN1(-512 ~ 511):\n");
+ scanf("%d", &longitudeDeltaN1);
+ getchar();
+
+ ret = ql_ecall_set_msd_position_n1(latitudeDeltaN1, longitudeDeltaN1);
+ printf(" ql_ecall_set_msd_position_n1 ret = %d\n", ret);
+}
+
+void item_ql_ecall_set_msd_position2(void)
+{
+ int ret = 0;
+ int32_t latitudeDeltaN2, longitudeDeltaN2 = 0;
+
+ printf("Please input latitudeDeltaN2(-512 ~ 511):\n");
+ scanf("%d", &latitudeDeltaN2);
+ getchar();
+
+ printf("Please input longitudeDeltaN2(-512 ~ 511):\n");
+ scanf("%d", &longitudeDeltaN2);
+ getchar();
+
+ ret = ql_ecall_set_msd_position_n2(latitudeDeltaN2, longitudeDeltaN2);
+ printf(" ql_ecall_set_msd_position_n2 ret = %d\n", ret);
+}
+
+void item_ql_ecall_set_number_of_passengers(void)
+{
+// int ret = 0;
+ uint8_t numberOfPassengers=0;
+
+ printf("Please input msd numberOfPassengers:\n");
+ if(1 != scanf("%hhd", &numberOfPassengers))
+ return;
+ getchar();
+
+ ql_ecall_set_msd_passengers_count(numberOfPassengers);
+}
+
+void item_ql_ecall_set_msd_propulsion_type(void)
+{
+// int ret = 0;
+ uint8_t propulsionType = 0;
+
+ printf("Please input vehicle propulsion type:\n");
+ printf("ECALL_MSD_PROPULSION_TYPE_GASOLINE=0x1\n");
+ printf("ECALL_MSD_PROPULSION_TYPE_DIESEL=0x2\n");
+ printf("ECALL_MSD_PROPULSION_TYPE_NATURALGAS=0x4\n");
+ printf("ECALL_MSD_PROPULSION_TYPE_PROPANE=0x8\n");
+ printf("ECALL_MSD_PROPULSION_TYPE_ELECTRIC=0x10\n");
+ printf("ECALL_MSD_PROPULSION_TYPE_HYDROGEN=0x20\n");
+ printf("ECALL_MSD_PROPULSION_TYPE_OTHER=0x40\n");
+
+ scanf("%hhx", &propulsionType);
+ getchar();
+
+ ql_ecall_set_msd_propulsion_type(propulsionType);
+}
+
+void item_ql_ecall_get_msd_propulsion_type(void)
+{
+ uint8_t propulsionType = 0;
+
+ ql_ecall_get_msd_propulsion_type(&propulsionType);
+
+ printf("PropulsionType set to: 0x%x\n", propulsionType);
+
+}
+
+void item_ql_ecall_get_msd_call_type(void)
+{
+
+ bool type;
+ ql_ecall_get_msd_call_type(&type);
+
+ printf(" item_ql_ecall_get_msd_call_type type = %s\n", type ? "Test" : "Emergency" );
+}
+
+void item_ql_ecall_set_msd_call_type(void)
+{
+ uint8_t index = 0;
+ printf("Input call type: Test(0) Emergency(1)\n");
+ scanf("%hhd", &index);
+ getchar();
+
+ ql_ecall_set_msd_call_type(index == 0);
+
+ printf(" ql_ecall_set_msd_call_type type = %d\n", index);
+}
+
+
+void item_ql_ecall_set_msd_vin(void)
+{
+ int ret = 0;
+ uint8_t index = 0;
+ msd_Vin_t vin = {0};
+ char* find = NULL;
+ char vin_str[QL_ECALL_MAX_VIN];
+
+ printf("Input: default(0) other(1)\n");
+ scanf("%hhd", &index);
+ getchar();
+ if(index)
+ {
+ printf("Please insert VIN:\n");
+ fgets(vin_str, QL_ECALL_MAX_VIN-1, stdin);
+ find = strchr(vin_str, '\n');
+ if(find)
+ {
+ *find = '\0';
+ }
+ // example 1: WM9VDSVDSYA123456
+ // example 2: 4Y1SL65848Z411439
+ // example 3: VF37BRFVE12345678
+ memcpy(&vin.isowmi, vin_str,3);
+ memcpy(&vin.isovds, (vin_str+3),6);
+ memcpy(&vin.isovisModelyear, (vin_str+9) ,1);
+ memcpy(&vin.isovisSeqPlant, (vin_str+10) ,7);
+ printf("isowmi:%s isovds:%s isovisModelyear:%s,isovisSeqPlant:%s\n",vin.isowmi,vin.isovds,vin.isovisModelyear,vin.isovisSeqPlant);
+ }
+ else
+ {
+ memcpy(&vin.isowmi,"WM9",3);
+ memcpy(&vin.isovds,"VDSVDS",6);
+ memcpy(&vin.isovisModelyear,"Y",1);
+ memcpy(&vin.isovisSeqPlant,"A123456",7);
+ printf("isowmi:%s isovds:%s isovisModelyear:%s,isovisSeqPlant:%s\n",vin.isowmi,vin.isovds,vin.isovisModelyear,vin.isovisSeqPlant);
+ }
+
+ ret = ql_ecall_set_msd_vin(vin);
+ printf(" ql_ecall_set_msd_vin ret = %d\n", ret);
+}
+
+void item_ql_ecall_get_msd_vin(void)
+{
+ int ret = 0;
+ msd_Vin_t vin;
+ char vin_str[QL_ECALL_MAX_VIN];
+
+ ret = ql_ecall_get_msd_vin(&vin);
+ if(0<strlen(vin.isowmi)&&0<strlen(vin.isovds)&&0<strlen(vin.isovisModelyear)&&0<strlen(vin.isovisSeqPlant))
+ {
+ sprintf(vin_str,"%s%s%s%s",vin.isowmi,vin.isovds,vin.isovisModelyear,vin.isovisSeqPlant);
+ }
+ else
+ {
+ printf(" vin is NULL\n");
+ return;
+ }
+ printf(" ql_ecall_get_msd_vin ret = %d\n", ret);
+
+ printf("VIN=%s\n",vin_str);
+}
+
+void item_ql_ecall_set_msd_tx_mode(void)
+{
+ int ret = 0;
+ uint8_t index = 0;
+
+ printf("Please choose MSD Tx Mode: PULL(0) PUSH(1)\n");
+ scanf("%hhd", &index);
+ getchar();
+
+ if(index == 0)
+ {
+ ret = ql_ecall_set_msd_tx_mode(QL_ECALL_TX_MODE_PULL);
+ printf(" ql_ecall_set_msd_tx_mode ret = %d\n", ret);
+ }
+ else if(index == 1)
+ {
+ ret = ql_ecall_set_msd_tx_mode(QL_ECALL_TX_MODE_PUSH);
+ printf(" ql_ecall_set_msd_tx_mode ret = %d\n", ret);
+ }
+ else
+ {
+ printf("Unsupported MSD transmission mode.\n");
+ }
+}
+
+void item_ql_ecall_get_msd_tx_mode(void)
+{
+ QL_ECALL_MSD_TX_MODE_E tx_mode;
+
+ ql_ecall_get_msd_tx_mode(&tx_mode);
+ if(tx_mode == QL_ECALL_TX_MODE_PULL)
+ {
+ printf("MSD Transmission mode is set to QL_ECALL_TX_MODE_PULL\n");
+ }
+ else if (tx_mode == QL_ECALL_TX_MODE_PUSH)
+ {
+ printf("MSD Transmission mode is set to QL_ECALL_TX_MODE_PUSH\n");
+ }
+}
+
+void item_ql_ecall_start_test(void)
+{
+ int ret = 0;
+ int sim_id;
+
+ printf("please enter the sim_id: ");
+ ret = scanf("%d", &sim_id);
+ getchar();
+
+ if(!QL_IS_SIM_VALID(sim_id))
+ {
+ printf("invalid sim_id\n");
+ return;
+ }
+
+ ret = ql_ecall_start_test(sim_id);
+ printf(" ql_ecall_start_test ret = %d\n", ret);
+}
+
+void item_ql_ecall_start_manual(void)
+{
+ int ret = 0;
+ int sim_id;
+
+ printf("please enter the sim_id: ");
+ ret = scanf("%d", &sim_id);
+ getchar();
+
+ if(!QL_IS_SIM_VALID(sim_id))
+ {
+ printf("invalid sim_id\n");
+ return;
+ }
+
+ ret = ql_ecall_start_manual(sim_id);
+ printf(" ql_ecall_start_manual ret = %d\n", ret);
+}
+
+void item_ql_ecall_start_automatic(void)
+{
+ int ret = 0;
+ int sim_id;
+
+ printf("please enter the sim_id: ");
+ ret = scanf("%d", &sim_id);
+ getchar();
+
+ if(!QL_IS_SIM_VALID(sim_id))
+ {
+ printf("invalid sim_id\n");
+ return;
+ }
+
+ ret = ql_ecall_start_automatic(sim_id);
+ printf(" ql_ecall_start_automatic ret = %d\n", ret);
+}
+
+void item_ql_ecall_terminate_nw_registration(void)
+{
+ int ret;
+
+ ret = ql_ecall_terminate_nw_registration();
+ if(ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+void item_ql_ecall_set_interval_between_attempts(void)
+{
+ uint16_t interval = 0;
+
+ printf("Please input interval between attempts in seconds:\n");
+ scanf("%hd", &interval);
+ getchar();
+
+ ql_ecall_set_interval_between_dial_attempts(interval);
+}
+
+void item_ql_ecall_get_interval_between_attempts(void)
+{
+ uint16_t interval = 0;
+ ql_ecall_get_interval_between_dial_attempts(&interval);
+
+ printf("Interval between attempts is set to %hd seconds:\n", interval);
+
+}
+
+void item_ql_ecall_update_msd (void)
+{
+ int ret = 0;
+ ret = ql_ecall_update_msd();
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+void item_ql_ecall_set_config_info(void)
+{
+ ql_ecall_config_t ecall_context_info;
+
+ printf("Whether the time of T5 timer is valid(0:no, 1:yes):\n");
+ scanf("%hhd", &ecall_context_info.t5_timeout_ms_valid);
+ getchar();
+ if(ecall_context_info.t5_timeout_ms_valid)
+ {
+ printf("please input the time of T5 timer(example:5000ms):\n");
+ scanf("%hd", &ecall_context_info.t5_timeout_ms);
+ getchar();
+ }
+
+ printf("Whether the time of T6 timer is valid(0:no, 1:yes):\n");
+ scanf("%hhd", &ecall_context_info.t6_timeout_ms_valid);
+ getchar();
+ if(ecall_context_info.t6_timeout_ms_valid)
+ {
+ printf("please input the time of T6 timer(example:5000ms):\n");
+ scanf("%hd", &ecall_context_info.t6_timeout_ms);
+ getchar();
+ }
+
+ printf("Whether the time of T7 timer is valid(0:no, 1:yes):\n");
+ scanf("%hhd", &ecall_context_info.t7_timeout_ms_valid);
+ getchar();
+ if(ecall_context_info.t7_timeout_ms_valid)
+ {
+ printf("please input the time of T7 timer(example:20000ms):\n");
+ scanf("%hd", &ecall_context_info.t7_timeout_ms);
+ getchar();
+ }
+
+ printf("Whether the time of auto answer timer is valid(0:no, 1:yes):\n");
+ scanf("%hhd", &ecall_context_info.autoAnswer_timeout_ms_valid);
+ getchar();
+ if(ecall_context_info.autoAnswer_timeout_ms_valid)
+ {
+ printf("please input the time of auto answer timer(example:3600000ms):\n");
+ scanf("%d", &ecall_context_info.autoAnswer_timeout_ms);
+ getchar();
+ }
+
+ printf("Whether the time of dialDurationTimer is valid(0:no, 1:yes):\n");
+ scanf("%hhd", &ecall_context_info.dialDurationTimer_timout_ms_valid);
+ getchar();
+ if(ecall_context_info.dialDurationTimer_timout_ms_valid)
+ {
+ printf("please input the time of dialDurationTimer(example:120000ms):\n");
+ scanf("%d", &ecall_context_info.dialDurationTimer_timout_ms);
+ getchar();
+ }
+
+ printf("(Not supported)Whether the maxDialAttempts is valid(0:no, 1:yes):\n");
+ scanf("%hhd", &ecall_context_info.maxDialAttempts_valid);
+ getchar();
+ if(ecall_context_info.maxDialAttempts_valid)
+ {
+ printf("please input maxDialAttempts:\n");
+ scanf("%d", &ecall_context_info.maxDialAttempts);
+ getchar();
+ }
+
+ printf("(Not supported)Whether the intervalBetweenAttempts is valid(0:no, 1:yes):\n");
+ scanf("%hhd", &ecall_context_info.intervalBetweenAttempts_valid);
+ getchar();
+ if(ecall_context_info.intervalBetweenAttempts_valid)
+ {
+ printf("please input intervalBetweenAttempts(example:30s):\n");
+ scanf("%hd", &ecall_context_info.intervalBetweenAttempts);
+ getchar();
+ }
+
+ printf("(Not supported)Whether the resetEcallSessionMode is valid(0:no, 1:yes):\n");
+ scanf("%hhd", &ecall_context_info.resetEcallSessionMode_valid);
+ getchar();
+ if(ecall_context_info.resetEcallSessionMode_valid)
+ {
+ printf("please input resetEcallSessionMode(example: 1,autoanswer):\n");
+ scanf("%hhd", &ecall_context_info.resetEcallSessionMode);
+ getchar();
+ }
+
+ ql_ecall_set_config_info(ecall_context_info);
+ printf("ok!\n");
+}
+
+void item_ql_ecall_get_config_info(void)
+{
+ ql_ecall_config_t ecall_context_info;
+
+ ql_ecall_get_config_info(&ecall_context_info);
+
+ printf("ok!\n");
+ printf("the time of T5 timer is %hd\n", ecall_context_info.t5_timeout_ms);
+ printf("the time of T6 timer is %hd\n", ecall_context_info.t6_timeout_ms);
+ printf("the time of T7 timer is %hd\n", ecall_context_info.t7_timeout_ms);
+ printf("the time of dialDurationTimer is %d\n", ecall_context_info.dialDurationTimer_timout_ms);
+ printf("the maximum redial attempts is %d\n", ecall_context_info.maxDialAttempts);
+ //printf("the interval value between dial attempts is %hd\n", ecall_context_info.intervalBetweenAttempts);
+}
+
+void item_ql_ecall_set_ecall_only_mode(void)
+{
+ int ret = 0;
+ int ecall_only_value = 0;
+
+ printf("ecall set ecall only mode(0:disable,1:enable): \n");
+ scanf("%d", &ecall_only_value);
+ getchar();
+
+ ret = ql_ecall_set_ecall_only_mode(ecall_only_value);
+ printf(" ql_ecall_set_ecall_only_mode ret = %d\n", ret);
+}
+
+static t_item_t ql_ecall_items[] =
+{
+ {"ql_ecall_init", item_ql_ecall_init},
+ {"ql_ecall_dial", item_ql_ecall_dial},
+ {"ql_ecall_start_test", item_ql_ecall_start_test},
+ {"ql_ecall_start_manual", item_ql_ecall_start_manual},
+ {"ql_ecall_start_automatic", item_ql_ecall_start_automatic},
+ {"ql_ecall_hangup", item_ql_ecall_hangup},
+ {"ql_ecall_set_user_ind_cb", item_ql_ecall_set_user_ind_cb},
+ {"ql_voice_ecall_set_test_number", item_ql_ecall_set_test_number},
+ {"ql_ecall_set_system_type", item_ql_ecall_set_system_type},
+ {"ql_ecall_get_system_type", item_ql_ecall_get_system_type},
+ {"ql_ecall_update_msd_raw", item_ql_ecall_update_msd_raw},
+ {"ql_ecall_push_msd", item_ql_ecall_push_msd},
+ {"ql_voice_ecall_reset_ivs", item_ql_ecall_reset_ivs},
+ {"ql_ecall_set_msd_call_type", item_ql_ecall_set_msd_call_type},
+ {"ql_ecall_get_msd_call_type", item_ql_ecall_get_msd_call_type},
+ {"ql_ecall_set_msd_vin", item_ql_ecall_set_msd_vin},
+ {"ql_ecall_get_msd_vin", item_ql_ecall_get_msd_vin},
+ {"ql_ecall_set_msd_version", item_ql_ecall_set_msd_version},
+ {"ql_ecall_get_msd_version", item_ql_ecall_get_msd_version},
+ {"ql_ecall_set_msd_tx_mode", item_ql_ecall_set_msd_tx_mode},
+ {"ql_ecall_get_msd_tx_mode", item_ql_ecall_get_msd_tx_mode},
+ {"ql_ecall_set_msd_position", item_ql_ecall_set_msd_position},
+ {"ql_ecall_set_msd_position1", item_ql_ecall_set_msd_position1},
+ {"ql_ecall_set_msd_position2", item_ql_ecall_set_msd_position2},
+ {"ql_ecall_set_msd_vehicle_type", item_ql_ecall_set_msd_vehicle_type},
+ {"ql_ecall_get_msd_vehicle_type", item_ql_ecall_get_msd_vehicle_type},
+ {"ql_ecall_set_number_of_passengers", item_ql_ecall_set_number_of_passengers},
+ {"ql_ecall_set_msd_propulsion_type", item_ql_ecall_set_msd_propulsion_type},
+ {"ql_ecall_get_msd_propulsion_type", item_ql_ecall_get_msd_propulsion_type},
+ {"ql_ecall_terminate_nw_registration", item_ql_ecall_terminate_nw_registration},
+ {"ql_ecall_set_interval_between_attempts", item_ql_ecall_set_interval_between_attempts},
+ {"ql_ecall_get_interval_between_attempts", item_ql_ecall_get_interval_between_attempts},
+ {"ql_ecall_update_msd", item_ql_ecall_update_msd},
+ {"ql_ecall_set_config_info", item_ql_ecall_set_config_info},
+ {"ql_ecall_get_config_info", item_ql_ecall_get_config_info},
+ {"ql_ecall_set_ecall_only_mode", item_ql_ecall_set_ecall_only_mode},
+ {"ql_ecall_deinit", item_ql_ecall_deinit}
+};
+
+static void help()
+{
+ int i = 0;
+ printf("Test Items:\n");
+ while(i < ARRAY_SIZE(ql_ecall_items)) {
+ printf("%d : %s\n", i, ql_ecall_items[i].name);
+ i++;
+ }
+ printf(":");
+}
+
+int main(int argc, char *argv[])
+{
+ char cmd[1024];
+ help();
+ while(1)
+ {
+ memset(cmd, 0, sizeof(cmd));
+ if(fgets(cmd, sizeof(cmd), stdin))
+ {
+ char *ptr = cmd + strlen(cmd) - 1;
+ while(ptr >= cmd && (*ptr == '\r' || *ptr == '\n'))
+ {
+ *ptr-- = '\0';
+ }
+
+ if(strlen(cmd) > 0) {
+ if(isdigit(cmd[0])) {
+ int item = atoi(cmd);
+ if(item >= 0 && item < ARRAY_SIZE(ql_ecall_items)) {
+ ql_ecall_items[item].handle();
+ }
+ }
+ else if(!strcasecmp(cmd, "h")) {
+ help();
+ }
+ else if(!strcasecmp(cmd, "q")) {
+ break;
+ }
+ }
+ else {
+ printf("\n");
+ }
+ }
+ }
+ return 0;
+}
+
diff --git a/mbtk/test/libql_lib_v2/ql_gnss_test.c b/mbtk/test/libql_lib_v2/ql_gnss_test.c
new file mode 100755
index 0000000..dc766a9
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_gnss_test.c
@@ -0,0 +1,725 @@
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @file ql_gnss_test.c
+ @brief GNSS service API
+*/
+/*-----------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ Copyright (c) 2024 mobiletek Wireless Solution, Co., Ltd. All Rights Reserved.
+ mobiletek Wireless Solution Proprietary and Confidential.
+-------------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ EDIT HISTORY
+ This section contains comments describing changes made to the file.
+ Notice that changes are listed in reverse chronological order.
+ $Header: $
+ when who what, where, why
+ -------- --------- -----------------------------------------------------------------
+ 20241022 yq.wang Created .
+-------------------------------------------------------------------------------------------------*/
+
+#include <stdio.h>
+#include <time.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "ql_test_utils.h"
+#include "ql_type.h"
+#include "ql_gnss.h"
+
+#define IS_DIGIT(x) ( ((x-'0')>=0) && ((x-'0')<=9) )
+
+
+static void gnss_ind_cb(void *msg)
+{
+ uint8_t *msg_id = NULL;
+ msg_id = msg;
+ if(*msg_id == QL_GNSS_NMEA_MSG)
+ {
+ nmea_srv_ind_msg *data = (nmea_srv_ind_msg *)msg;
+ printf("time=%d %s",data->time,data->nmea_sentence);
+ }
+ else if (*msg_id == QL_GNSS_STATUS_MSG)
+ {
+ gnss_status_ind_msg *data = (gnss_status_ind_msg *)msg;
+ switch(data->g_status)
+ {
+ case QL_GNSS_STATUS_FOTA_START:
+ printf("gnss engine fota req\n");
+ break;
+ case QL_GNSS_STATUS_FOTA_BOOT:
+ printf("gnss engine fota bootloader\n");
+ break;
+ case QL_GNSS_STATUS_FOTA_FIRM:
+ printf("gnss engine fota firmware\n");
+ break;
+ case QL_GNSS_STATUS_WORKING:
+ printf("gnss engine working\n");
+ break;
+ default:
+ break;
+ };
+ }
+ else
+ {
+ printf("Invalue msg !!!");
+ }
+}
+
+#if 0
+static void gnss_service_error_cb(int error)
+{
+ printf("===== GNSS Service Abort =====\n");
+}
+#endif
+
+static void item_ql_gnss_init(void)
+{
+ int err = QL_ERR_OK;
+ printf("Start to ql_gnss_init\n");
+ err = ql_gnss_init();
+ if(err == QL_ERR_OK)
+ {
+ printf("Successful\n");
+ }
+ else
+ {
+ printf("Failed to ql_gnss_init, err=%d\n", err);
+ }
+}
+
+
+static void item_ql_gnss_set_ind_cb(void)
+{
+ int err = QL_ERR_OK;
+
+ printf("Start to ql_gnss_set_ind_cb\n");
+ err = ql_gnss_set_ind_cb(gnss_ind_cb);
+ if(err != QL_ERR_OK)
+ {
+ printf("Failed to ql_gnss_set_ind_cb, err=%d\n", err);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+
+#if 0
+static void item_ql_gnss_set_service_error_cb(void)
+{
+ int err = QL_ERR_OK;
+ printf("Start to item_ql_gnss_set_service_error_cb\n");
+ err = ql_gnss_set_service_error_cb(gnss_service_error_cb);
+ if(err == QL_ERR_OK)
+ {
+ printf("Successful\n");
+ }
+ else
+ {
+ printf("Failed to item_ql_gnss_set_service_error_cb, err=%d\n", err);
+ }
+
+}
+#endif
+
+static void item_ql_gnss_start(void)
+{
+ int err = QL_ERR_OK;
+
+ printf("Start to ql_gnss_start\n");
+ err = ql_gnss_start();
+ if(err != QL_ERR_OK)
+ {
+ printf("Failed to start gnss , err=%d\n", err);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+
+
+static void item_ql_gnss_stop(void)
+{
+ int err = QL_ERR_OK;
+
+ printf("Start to ql_gnss_stop\n");
+ err = ql_gnss_stop();
+ if(err != QL_ERR_OK)
+ {
+ printf("Failed to stop gnss, err=%d\n", err);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+
+#if 0
+static void item_ql_gnss_get_engine_state(void)
+{
+ int err = QL_ERR_OK;
+ QL_GNSS_ENGINE_STATE_E state = 0;
+
+ printf("Start ql_gnss_get_engine_state : \n");
+ err = ql_gnss_get_engine_state(&state);
+ if(err != QL_ERR_OK)
+ {
+ printf("Get engine state faild %d\n",err);
+ }
+ else
+ {
+ if(state)
+ {
+ printf("Engine state is on\n");
+ }
+ else
+ {
+ printf("Engine state is off\n");
+ }
+ }
+}
+#endif
+
+#if 0
+static void ql_gnss_get_constellation_show(char *str_p, QL_GNSS_CONSTELLATION_MASK_E mask)
+{
+ switch (mask)
+ {
+ case GPS_ONLY:
+ snprintf(str_p, 100, "%s", "GPS");
+ break;
+ case BDS_ONLY:
+ snprintf(str_p, 100, "%s", "BDS_ONLY");
+ break;
+ case GPS_BDS:
+ snprintf(str_p, 100, "%s", "GPS+BDS");
+ break;
+ case GLONASS_ONLY:
+ snprintf(str_p, 100, "%s", "GLONASS_ONLY");
+ break;
+ case GPS_GLONASS:
+ snprintf(str_p, 100, "%s", "GPS+GLONASS");
+ break;
+ case BDS_GLONASS:
+ snprintf(str_p, 100, "%s", "BDS+GLONASS");
+ break;
+ case GPS_BDS_GLONASS:
+ snprintf(str_p, 100, "%s", "GPS+BDS+GLONASS");
+ break;
+ case GPS_SBAS_QZSS:
+ snprintf(str_p, 100, "%s", "GPS+SBAS+QZSS");
+ break;
+ case GPS_BDS_GALILEO_SBAS_QZSS:
+ snprintf(str_p, 100, "%s", "GPS+BDS+GALILEO+SBAS+QZSS");
+ break;
+ case GPS_GLONASS_GALILEO_SBAS_QZSS:
+ snprintf(str_p, 100, "%s", "GPS+GLONASS+GALILEO+SBAS+QZSS");
+ break;
+ default:
+ snprintf(str_p, 100, "%s", "error");
+ break;
+ };
+}
+
+static void item_ql_gnss_get_constellation(void)
+{
+ int err = QL_ERR_OK;
+ QL_GNSS_CONSTELLATION_MASK_E mask = 0;
+ printf("Start ql_gnss_get_constellation : \n");
+ err = ql_gnss_get_constellation(&mask);
+ if (err != QL_ERR_OK)
+ {
+ printf("Set Constellation faild %d\n", err);
+ }
+ else
+ {
+ switch (mask)
+ {
+ case GPS_SBAS_QZSS:
+ printf("GPS+SBAS+QZSS\n");
+ break;
+ case BDS_ONLY:
+ printf("BDS_ONLY\n");
+ break;
+ case GPS_BDS_GALILEO_SBAS_QZSS:
+ printf("GPS+BDS+GALILEO+SBAS+QZSS\n");
+ break;
+ case GPS_GLONASS_GALILEO_SBAS_QZSS:
+ printf("GPS+GLONASS+GALILEO+SBAS+QZSS\n");
+ break;
+ case GPS_ONLY:
+ printf("GPS_ONLY\n");
+ break;
+ case GPS_BDS:
+ printf("GPS_BDS\n");
+ break;
+ case GLONASS_ONLY:
+ printf("GLONASS_ONLY\n");
+ break;
+ case GPS_GLONASS:
+ printf("GPS+GLONASS\n");
+ break;
+ case BDS_GLONASS:
+ printf("BDS+GLONASS\n");
+ break;
+ case GPS_BDS_GLONASS:
+ printf("GPS+BDS+GLONASS\n");
+ break;
+ default:
+ break;
+ };
+ }
+}
+
+/*
+EC200 Supported constellations
+(GPS+SBAS+QZSS--0x08|BDS_ONLY--0x10|GPS+BDS+GALILEO+SBAS+QZSS--0x11|GPS+GLONASS+GALILEO+SBAS+QZSS--0x101)");
+
+AG35CET Supported constellations
+(GPS_ONLY--0x01|BDS_ONLY--0x02|GPS_BDS--0x03|GLONASS_ONLY--0x04)|GPS_GLONASS--0x05|BDS_GLONASS--0x06|GPS_BDS_GLONASS--0x07")
+
+AG35EUT Supported constellations
+(GPS_ONLY--0x01|BDS_ONLY--0x02|GPS_BDS--0x03|GLONASS_ONLY--0x04)|GPS_GLONASS--0x05|BDS_GLONASS--0x06|GPS_BDS_GLONASS--0x07|
+GALILEO_ONLY--0x08|GPS_GALILEO--0x09|BD_GALILEO--0x10|GPS_BDS_GLONASS_GALILEO--0x11")
+*/
+static void item_ql_gnss_set_constellation(void)
+{
+ int err = QL_ERR_OK;
+ uint32_t input = 0;
+ QL_GNSS_CONSTELLATION_MASK_E constellation = 0;
+ printf("Please input gnss constellation:\n");
+ scanf("%x",&input);
+ printf("input=%x\n",input);
+ constellation = (QL_GNSS_CONSTELLATION_MASK_E)input;
+ err = ql_gnss_set_constellation(constellation);
+ if(err != QL_ERR_OK)
+ {
+ printf("Failed to set gnss constellation mask:%x err=%d\n",constellation,err);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+
+static void item_ql_gnss_set_nmea_type(void)
+{
+ int err = QL_ERR_OK;
+ uint32_t input = 0;
+
+ printf("Please input nmea type bitmask:\n");
+ printf("(GST|ZDA|VTG|RMC|GSV|GSA|GLL|GGA)(HEX Base, i.e.0xff)\n");
+ scanf("%x",&input);
+ printf("input=%x\n",input);
+ err = ql_gnss_set_nmea_type(input);
+ if(err != QL_ERR_OK)
+ {
+ printf("Failed to set nmea type with type:%x: err=%d\n",input,err);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+
+static void item_ql_gnss_get_nmea_version(void)
+{
+ int err = QL_ERR_OK;
+ QL_GNSS_NMEA_VERSION_ID_E version = 0;
+
+ printf("Start to get nmea_version \n");
+ err = ql_gnss_get_nmea_version(&version);
+ if(err != QL_ERR_OK)
+ {
+ printf("Failed to get nmea_version with version:%d, err=%d\n",version, err);
+ }
+ else
+ {
+ printf("Successful\n");
+ if(QL_GNSS_NMEA_VERSION_V30 == version)
+ {
+ printf("Nmea_version is 3.0\n");
+ }
+ else if(QL_GNSS_NMEA_VERSION_V41 == version)
+ {
+ printf("Nmea_version is 4.0\n");
+ }
+ }
+
+}
+
+
+static void item_ql_gnss_set_nmea_version(void)
+{
+ int err = QL_ERR_OK;
+ uint32_t input=0;
+ QL_GNSS_NMEA_VERSION_ID_E version;
+
+ printf("Please input nmea verson : 0--nema v3.0|1--nema v4.1\n");
+ scanf("%d",&input);
+ printf("Start to set nmea_version with version:%d\n",input);
+ version = (QL_GNSS_NMEA_VERSION_ID_E)input;
+ err = ql_gnss_set_nmea_version(version);
+ if(err != QL_ERR_OK)
+ {
+ printf("Failed to set nmea_version with version:%d, err=%d\n",version, err);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+#endif
+
+static void item_ql_gnss_set_start_mode(void)
+{
+ int err = QL_ERR_OK;
+ uint32_t input=0;
+ QL_GNSS_START_MODE_E mode;
+
+ printf("Please input mode : 0--cold start|1--warm start|2--hot start\n");
+ scanf("%d",&input);
+ printf("Start to ql_set_start_mode with modem:%d\n",input);
+ mode = (QL_GNSS_START_MODE_E)input;
+ err = ql_gnss_set_start_mode(mode);
+ if(err != QL_ERR_OK)
+ {
+ printf("Failed to Start to ql_set_start_mode with modem:%d, err=%d\n",mode, err);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+
+
+static void item_ql_gnss_set_agnss_mode(void)
+{
+ int err = QL_ERR_OK;
+ uint32_t input=0;
+
+ printf("Please input mode : 0x01--GPS| 0x02--BD| 0x04--GLONASS| 0x08--GALILEO| 0x10--QZSS \n");
+ scanf("%x",&input);
+ printf("Start to ql_set_agnss_mode with modem:%x\n",input);
+ err = ql_gnss_set_agnss_mode(input);
+ if(err != QL_ERR_OK)
+ {
+ printf("Failed to Start to ql_set_agnss_mode with modem:%d, err=%d\n",input, err);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+
+}
+
+static void item_ql_gnss_inject_agnss_data(void)
+{
+ int err = QL_ERR_OK;
+
+ err = ql_gnss_inject_agnss_data();
+ if (err != QL_ERR_OK)
+ {
+ printf("Failed to inject agnss err=%d\n", err);
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+
+#if 0
+static int convertUtcTimeMsec(char *utc_str,uint64_t *msec)
+{
+ int i =0;
+ int temp =0;
+ int date[6] = {0};
+ char ch;
+ unsigned char field = 0;
+ struct tm t;
+ while(1)
+ {
+ ch = utc_str[i++];
+
+ if(IS_DIGIT(ch))
+ {
+ temp *= 10;
+ temp += ch - '0';
+ }
+ else if(ch == ' ')
+ {
+ continue;
+ }
+ else if(ch == '-' || ch == ' ' || ch == ':' || ch == '\0')
+ {
+ date[field] = temp;
+ field++;
+ temp = 0;
+
+ if(ch == '\0')
+ {
+ printf("parse char success\n");
+ break;
+ }
+ }
+ else
+ {
+ printf("ch=%c,ch=%d,invalid char\n",ch,ch);
+ return -1;
+ }
+ }
+
+ if(date[0] < 1900
+ || date[1] < 1 || date[1] > 12
+ || date[2] < 1 || date[2] > 31
+ || date[3] < 0 || date[3] > 23
+ || date[4] < 0 || date[4] > 59
+ || date[5] < 0 || date[5] > 59
+ )
+ {
+ return -1;
+ }
+
+ t.tm_sec = date[5];
+ t.tm_min = date[4];
+ t.tm_hour = date[3];
+ t.tm_mday = date[2];
+ t.tm_mon = date[1] -1;
+ t.tm_year = date[0] - 1900;
+ t.tm_isdst = 0;
+
+ *msec = (uint64_t)1000 * (uint64_t)mktime(&t);
+ return 0;
+
+}
+
+static void item_ql_gnss_inject_utc_time(void)
+{
+ int err = QL_ERR_OK;
+ int input = 0;
+ uint64_t utc_time;
+ char buff[128]={0};
+ printf("Start ql_inject_utc_time : \n");
+ printf("Please Select Time:\n1-Current System time\n2-Input Time,Format:YYYY-MM-DD hh:mm:ss\n:");
+ scanf("%d",&input);
+ if(err !=0)
+ {
+ printf("Input error\n");
+ return ;
+ }
+ switch(input)
+ {
+ case 1:
+ utc_time=(uint64_t)time(NULL)*1000;
+ system("date");
+ break;
+ case 2:
+ err = t_get_string(buff, sizeof(buff));
+ if(err !=0)
+ {
+ printf("Input error\n");
+ return ;
+ }
+ convertUtcTimeMsec(buff,&utc_time);
+ break;
+ default:
+ printf("Not select!!!\n");
+ return ;
+ }
+ err = ql_gnss_inject_utc_time(utc_time);
+ if(err != QL_ERR_OK)
+ {
+ printf("Failed to Inject Utc Time %d\n",err);
+ }
+ else
+ {
+ printf("Successful!\n");
+ }
+}
+
+
+
+
+static void item_ql_gnss_suspend(void)
+{
+ int err = QL_ERR_OK;
+
+ printf("Start to ql_gnss_suspend\n");
+ err = ql_gnss_suspend();
+ if(err != QL_ERR_OK)
+ {
+ printf("Failed to set ql_gnss_suspend\n");
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+
+
+static void item_ql_gnss_resume(void)
+{
+ int err = QL_ERR_OK;
+
+ printf("Start to ql_gnss_resume\n");
+ err = ql_gnss_resume();
+ if(err != QL_ERR_OK)
+ {
+ printf("Failed to set ql_gnss_resume\n");
+ }
+ else
+ {
+ printf("Successful\n");
+ }
+}
+#endif
+
+static void item_ql_gnss_deinit(void)
+{
+ int err = QL_ERR_OK;
+
+ printf("Start to ql_gnss_deinit\n");
+ err = ql_gnss_deinit();
+ if(err == QL_ERR_OK)
+ {
+ printf("Successful\n");
+ }
+ else
+ {
+ printf("Failed to ql_gnss_deinit, err=%d\n", err);
+ }
+}
+
+static t_item_t ql_gnss_items[] =
+{
+ {"ql_gnss_init", item_ql_gnss_init},
+ {"ql_gnss_nmea_ind_cb", item_ql_gnss_set_ind_cb},
+// {"ql_gnss_get_engine_state",item_ql_gnss_get_engine_state},
+ {"ql_gnss_start",item_ql_gnss_start},
+ {"ql_gnss_stop", item_ql_gnss_stop},
+// {"ql_gnss_get_nmea_version",item_ql_gnss_get_nmea_version},
+// {"ql_gnss_set_nmea_version",item_ql_gnss_set_nmea_version},
+// {"ql_gnss_set_nmea_type",item_ql_gnss_set_nmea_type},
+// {"ql_gnss_get_constellation",item_ql_gnss_get_constellation},
+// {"ql_gnss_set_constellation",item_ql_gnss_set_constellation},
+ {"ql_gnss_set_start_mode",item_ql_gnss_set_start_mode},
+ {"ql_gnss_set_agnss_mode",item_ql_gnss_set_agnss_mode},
+ {"ql_gnss_inject_agnss_data",item_ql_gnss_inject_agnss_data},
+// {"ql_gnss_inject_utc_time",item_ql_gnss_inject_utc_time},
+// {"ql_gnss_suspend", item_ql_gnss_suspend},
+// {"ql_gnss_resume", item_ql_gnss_resume},
+// {"ql_gnss_set_service_error_cb",item_ql_gnss_set_service_error_cb},
+ {"ql_gnss_deinit", item_ql_gnss_deinit},
+};
+
+t_module_t ql_gnss_module =
+{
+ "gnss",
+ T_ARRAY_SIZE(ql_gnss_items),
+ ql_gnss_items
+};
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a int value from stdin
+ @param[out] val, Return read data
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int t_get_int(int *val)
+{
+ int dat;
+ char *ptr_end = NULL;
+ char buf[256] = {0};
+
+ if(NULL == fgets(buf, sizeof(buf)-1, stdin))
+ {
+ return -1;
+ }
+#if 0
+ if(0 == buf[0])
+ {
+ return -1;
+ }
+#endif
+ if(buf[0] == '\n')
+ {
+ return 1;
+ }
+
+ dat = strtol(buf, &ptr_end, 10);
+ if(ptr_end!=NULL && ptr_end[0]!='\n')
+ {
+ return -1;
+ }
+
+ if(val)
+ {
+ val[0] = dat;
+ }
+
+ return 0;
+}
+
+void dump_items()
+{
+ int i;
+
+ printf("\n");
+ printf("The current module is: \n");
+
+ for(i=0; i< ql_gnss_module.item_len; i++)
+ {
+ printf("%d\t%s\n", i, ql_gnss_module.item_list[i].name);
+ }
+ printf("-1\texit\n");
+}
+
+int main(int argc, char *argv[])
+{
+ int ret;
+ int idx;
+
+ dump_items();
+
+ while(1)
+ {
+ printf("Please enter your choice: ");
+ ret = t_get_int(&idx);
+ printf("\n");
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ continue;
+ }
+ else if(ret == 1)
+ {
+ dump_items();
+ continue;
+ }
+
+ if(idx == -1)
+ {
+ break;
+ }
+
+ if(idx<0 || idx>=ql_gnss_module.item_len)
+ {
+ printf("Not support idx: %d\n", idx);
+ continue;
+ }
+
+ printf("->Item : %s\n", ql_gnss_module.item_list[idx].name);
+ ql_gnss_module.item_list[idx].handle();
+ }
+
+ return 0;
+}
+
diff --git a/mbtk/test/libql_lib_v2/ql_gpio_test.c b/mbtk/test/libql_lib_v2/ql_gpio_test.c
new file mode 100755
index 0000000..6d68052
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_gpio_test.c
@@ -0,0 +1,172 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include "ql_gpio.h"
+#include "mbtk_log.h"
+
+int gpio_g = -1;
+
+int main(int argc, char *argv[])
+{
+ char operator[10];
+ int opt;
+ int ret;
+ int gpio;
+ int direction;
+ int value;
+// int pullsel;
+
+ mbtk_log_init("radio", "GPIO_TEST");
+
+ printf("=========ql gpio main=========\n"
+ "\t0 exit\n"
+ "\t1 gpio init\n"
+ "\t2 gpio uninit\n"
+ "\t3 gpio set direction\n"
+ "\t4 gpio set level\n"
+ "\t5 gpio get level\n"
+ "operator: >> \n");
+
+ while(1)
+ {
+ memset(operator, 0, sizeof(operator));
+ if(NULL != fgets(operator, sizeof(operator), stdin))
+ break;
+ fflush(stdin);
+ opt = atoi(operator);
+ switch (opt)
+ {
+ case 0:
+ printf("main exit\n");
+ return 0;
+ case 1:
+ {
+ printf("INPUT gpio \n");
+ memset(operator, 0, sizeof(operator));
+ if(NULL == fgets(operator, sizeof(operator), stdin))
+ break;
+ fflush(stdin);
+ gpio = atoi(operator);
+ printf("gpio is %d\n", gpio);
+ ret = ql_gpio_init(gpio, 1, 1, 0);
+ if(ret != 0)
+ {
+ printf("ql_gpio_init fail\n");
+ }
+ else
+ {
+ printf("ql_gpio_init success\n");
+ gpio_g = gpio;
+ }
+ }
+ break;
+ case 2:
+ {
+ printf(">>>>>gpio uninit\n");
+ if (gpio_g != -1)
+ {
+ ret = ql_gpio_uninit(gpio_g);
+ if(ret != 0)
+ {
+ printf("ql_gpio_uninit fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("ql_gpio_uninit success\n");
+ gpio_g = -1;
+ }
+ }
+ else
+ {
+ printf(">>>>>pleas gpio init<<<<<\n");
+ }
+ }
+ break;
+ case 3:
+ {
+ printf(">>>>>Input set direction<<<<<\n");
+ memset(operator, 0, sizeof(operator));
+ if(NULL == fgets(operator, sizeof(operator), stdin))
+ break;
+ fflush(stdin);
+ direction = atoi(operator);
+ if (gpio_g != -1)
+ {
+ ret = ql_gpio_set_direction(gpio_g, direction);
+ if(ret != 0)
+ {
+ printf("ql_gpio_set_direction fail\n");
+ }
+ else
+ {
+ printf("ql_gpio_set_direction success\n");
+ }
+ }
+ else
+ {
+ printf(">>>>>pleas gpio init<<<<<\n");
+ }
+ }
+ break;
+ case 4:
+ {
+ printf(">>>>>Input set level<<<<<\n");
+ memset(operator, 0, sizeof(operator));
+ if(NULL == fgets(operator, sizeof(operator), stdin))
+ break;
+ fflush(stdin);
+ value = atoi(operator);
+ if (gpio_g != -1)
+ {
+ ret = ql_gpio_set_level(gpio_g, value);
+ if(ret < 0)
+ {
+ printf("ql_gpio_set_level fail\n");
+ }
+ else
+ {
+ printf("ql_gpio_set_level success\n");
+ }
+ }
+ else
+ {
+ printf(">>>>>pleas gpio init<<<<<\n");
+ }
+ }
+ break;
+ case 5:
+ {
+ printf(">>>>>Input get level<<<<<\n");
+ if (gpio_g != -1)
+ {
+ ret = ql_gpio_get_level(gpio_g);
+ if(ret < 0)
+ {
+ printf("ql_gpio_get_level fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("ql_gpio_get_level success\n");
+ printf("ret=%d\n", ret);
+ }
+ }
+ else
+ {
+ printf(">>>>>pleas gpio init<<<<<\n");
+ }
+ }
+ break;
+
+
+ default:
+ break;
+ }
+
+ }
+
+ return 0;
+
+}
diff --git a/mbtk/test/libql_lib_v2/ql_gpio_v2_test.c b/mbtk/test/libql_lib_v2/ql_gpio_v2_test.c
new file mode 100755
index 0000000..9f2fb4d
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_gpio_v2_test.c
@@ -0,0 +1,73 @@
+#include <stdio.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <pthread.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include "ql_gpio.h"
+
+static ENUM_PINNAME m_gpio_pin_gpio = PINNAME_GPIO_120;
+
+void callback_onAlarm(int param)
+{
+ int lvl = ql_gpio_get_level(m_gpio_pin_gpio);
+ if (lvl < 0)
+ {
+ printf("< fail to read pin level >\n");
+ return;
+ }
+ if (1 == lvl)
+ {
+ ql_gpio_set_level(m_gpio_pin_gpio, PINLEVEL_LOW);
+ printf("< Pull pin level to low >\n");
+ }else{
+ ql_gpio_set_level(m_gpio_pin_gpio, PINLEVEL_HIGH);
+ printf("< Pull pin level to high >\n");
+ }
+
+ alarm(1);
+}
+
+void exit_sig(int param)
+{
+ //Exit to release gpio
+ ql_gpio_uninit(m_gpio_pin_gpio);
+
+ exit(1);
+}
+
+int main(int argc, char* argv[])
+{
+ int iRet;
+
+ printf("< OpenLinux: GPIO example >\n");
+#if 0
+ /*
+ *Note:
+ * When using gpio configure, you need to determine whether the function of pin is gpio function.
+ * If it is not gpio function, the following gpio configure are invalid.
+ * You can use the ql_set_gpio_function to setting.
+ */
+ iRet = ql_check_pin_function_status(m_gpio_pin_gpio);
+ if(iRet == 0){
+ iRet = ql_set_gpio_function(m_gpio_pin_gpio,1);
+ printf("< Set gpio(%d) function iRet=%d status=%d>\n", m_gpio_pin_gpio,iRet,ql_check_pin_function_status(m_gpio_pin_gpio));
+ }
+#endif
+ /*
+ * Before using gpio init the application layer,you first need to determine whether it is used in the driver.
+ */
+ iRet = ql_gpio_init(m_gpio_pin_gpio, PINDIRECTION_OUT, PINLEVEL_HIGH, PINPULLSEL_DISABLE);
+ printf("< Init GPIO: pin=%d, dir=%d, level=%d, iRet=%d >\n", m_gpio_pin_gpio, PINDIRECTION_OUT, PINLEVEL_HIGH, iRet);
+
+ signal(SIGALRM, callback_onAlarm);
+ alarm(2);
+
+ signal(SIGINT, exit_sig);
+ while (1)
+ {
+ sleep(1);
+ }
+
+ return 0;
+}
diff --git a/mbtk/test/libql_lib_v2/ql_nw_test.c b/mbtk/test/libql_lib_v2/ql_nw_test.c
new file mode 100755
index 0000000..409a966
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_nw_test.c
@@ -0,0 +1,1747 @@
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @file ql_nw_test.c
+ @brief nw test module
+*/
+/*-----------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ Copyright (c) 2024 mobiletek Wireless Solution, Co., Ltd. All Rights Reserved.
+ mobiletek Wireless Solution Proprietary and Confidential.
+-------------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ EDIT HISTORY
+ This section contains comments describing changes made to the file.
+ Notice that changes are listed in reverse chronological order.
+ $Header: $
+ when who what, where, why
+ -------- --------- -----------------------------------------------------------------
+ 20241022 yq.wang Created .
+-------------------------------------------------------------------------------------------------*/
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "ql_test_utils.h"
+#include "ql_type.h"
+#include "ql_nw.h"
+
+
+#if 0
+static int internal_nw_get_nas_rat(int radio, char* buf, int buf_len);
+#endif
+static int internal_nw_get_net_status(QL_NW_NETWORK_STATUS_TYPE_E net, char* buf, int buf_len);
+static int internal_nw_get_radio_tech(QL_NW_RADIO_TECH_TYPE_E radio, char* buf, int buf_len);
+static int internal_nw_get_tech_domain(QL_NW_TECH_DOMAIN_TYPE_E domain, char* buf, int buf_len);
+static int internal_nw_get_signal_strength_level(QL_NW_SIGNAL_STRENGTH_LEVEL_E level, char* buf, int buf_len);
+static void internal_nw_get_mcc_mnc_value(char *plmn, int plmn_len, unsigned short *mcc, unsigned short *mnc);
+static void internal_nw_get_service_option(unsigned short so_mask, char *buf, int buf_len);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a uint32 value from stdin
+ @param[out] val, Return read data
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int t_get_hex(uint32_t *val)
+{
+ int dat;
+ char *ptr_end = NULL;
+ char buf[256] = {0};
+
+ if(fgets(buf, sizeof(buf)-1, stdin) == NULL)
+ {
+ return -1;
+ }
+
+ if(0 == buf[0])
+ {
+ return -1;
+ }
+
+ if(buf[0] == '\n')
+ {
+ return 1;
+ }
+
+ dat = strtol(buf, &ptr_end, 16);
+ if(ptr_end!=NULL && ptr_end[0]!='\n')
+ {
+ return -1;
+ }
+
+ if(val)
+ {
+ val[0] = dat;
+ }
+
+ return 0;
+}
+
+void nw_voice_reg_event_ind_cb(ql_nw_reg_status_info_t *ind)
+{
+ char domain_info[16] = {0};
+ char radio_info[16] = {0};
+ char svc_opt[128] = {0};
+
+ if(ind == NULL)
+ {
+ printf("recv voice reg ind event, param is null\n");
+ return;
+ }
+ printf("recv voice reg ind event, detail info:\n");
+
+ if(internal_nw_get_tech_domain(ind->tech_domain, domain_info, sizeof(domain_info)) == 0)
+ {
+ printf("\ttech_domain is unrecognized:%d, ", ind->tech_domain);
+ }
+ else
+ {
+ printf("\ttech_domain = %s, ", domain_info);
+ }
+
+ if(internal_nw_get_radio_tech(ind->radio_tech, radio_info, sizeof(radio_info)) == 0)
+ {
+ printf("radio_tech is unrecognized:%d, ", ind->radio_tech);
+ }
+ else
+ {
+ printf("radio_tech = %s, ", radio_info);
+ }
+
+ printf("roaming = %d, reg_status = %d, deny_reason = %d\n",
+ ind->roaming, ind->reg_state, ind->deny_reason);
+
+ if(QL_NW_RADIO_TECH_NR5G != ind->radio_tech)
+ {
+ printf("\tmcc=%s, mnc=%s, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d, endc_available=%d\n",
+ ind->mcc,
+ ind->mnc,
+ ind->forbidden,
+ ind->cid,
+ ind->lac,
+ ind->psc,
+ ind->tac,
+ ind->endc_available);
+
+ printf("\tinPRL=%d, css=%d, sid=%d, nid=%d, bsid=%d\n",
+ ind->inPRL,
+ ind->css,
+ ind->sid,
+ ind->nid,
+ ind->bsid);
+ }
+ else
+ {
+ printf("\tmcc=%s, mnc=%s, forbidden=%d, cid=0x%llX, pci=%d, tac=%d\n",
+ ind->mcc,
+ ind->mnc,
+ ind->forbidden,
+ ind->nr5g_cid,
+ ind->nr5g_pci,
+ ind->nr5g_tac);
+
+ internal_nw_get_service_option(ind->nr5g_svc_opt, svc_opt, sizeof(svc_opt));
+ printf("\tsvc_opt(%d)=%s\n", ind->nr5g_svc_opt, svc_opt);
+ }
+}
+
+#if 0
+void nw_data_reg_event_ind_cb(ql_nw_reg_status_info_t *ind)
+{
+ char domain_info[16] = {0};
+ char radio_info[16] = {0};
+ char svc_opt[128] = {0};
+
+ if(ind == NULL)
+ {
+ printf("recv data reg ind event, param is null\n");
+ return;
+ }
+ printf("recv data reg ind event, detail info:\n");
+
+ if(internal_nw_get_tech_domain(ind->tech_domain, domain_info, sizeof(domain_info)) == 0)
+ {
+ printf("\ttech_domain is unrecognized:%d, ", ind->tech_domain);
+ }
+ else
+ {
+ printf("\ttech_domain = %s, ", domain_info);
+ }
+
+ if(internal_nw_get_radio_tech(ind->radio_tech, radio_info, sizeof(radio_info)) == 0)
+ {
+ printf("radio_tech is unrecognized:%d, ", ind->radio_tech);
+ }
+ else
+ {
+ printf("radio_tech = %s, ", radio_info);
+ }
+
+ printf("roaming = %d, reg_status = %d, deny_reason = %d\n",
+ ind->roaming, ind->reg_state, ind->deny_reason);
+
+ if(QL_NW_RADIO_TECH_NR5G != ind->radio_tech)
+ {
+ printf("\tmcc=%s, mnc=%s, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d, endc_available=%d\n",
+ ind->mcc,
+ ind->mnc,
+ ind->forbidden,
+ ind->cid,
+ ind->lac,
+ ind->psc,
+ ind->tac,
+ ind->endc_available);
+
+ printf("\tinPRL=%d, css=%d, sid=%d, nid=%d, bsid=%d\n",
+ ind->inPRL,
+ ind->css,
+ ind->sid,
+ ind->nid,
+ ind->bsid);
+ }
+ else
+ {
+ printf("\tmcc=%s, mnc=%s, forbidden=%d, cid=0x%llX, pci=%d, tac=%d\n",
+ ind->mcc,
+ ind->mnc,
+ ind->forbidden,
+ ind->nr5g_cid,
+ ind->nr5g_pci,
+ ind->nr5g_tac);
+
+ internal_nw_get_service_option(ind->nr5g_svc_opt, svc_opt, sizeof(svc_opt));
+ printf("\tsvc_opt(%d)=%s\n", ind->nr5g_svc_opt, svc_opt);
+ }
+}
+#endif
+
+void nw_signal_strength_event_ind_cb(ql_nw_signal_strength_info_t *ind, QL_NW_SIGNAL_STRENGTH_LEVEL_E level)
+{
+ char level_info[16] = {0};
+
+ if(ind == NULL)
+ {
+ printf("recv signal strength ind event, param is null\n");
+ return;
+ }
+
+ printf("recv event indication : signal strength event\n");
+
+ if(ind->has_gsm)
+ {
+ printf("gsm_sig_info: rssi=%d\n", ind->gsm.rssi);
+ }
+
+ if(ind->has_wcdma)
+ {
+ printf("wcdma_sig_info: rssi=%d, ecio=%d\n",
+ ind->wcdma.rssi,
+ ind->wcdma.ecio);
+ }
+ if(ind->has_tdscdma)
+ {
+ printf("tdscdma_sig_info: rssi=%d, rscp=%d, ecio=%d, sinr=%d\n",
+ ind->tdscdma.rssi,
+ ind->tdscdma.rscp,
+ ind->tdscdma.ecio,
+ ind->tdscdma.sinr);
+ }
+ if(ind->has_lte)
+ {
+ printf("lte_sig_info: rssi=%d, rsrq=%d, rsrp=%d, snr=%d\n",
+ ind->lte.rssi,
+ ind->lte.rsrq,
+ ind->lte.rsrp,
+ ind->lte.snr);
+ }
+ if(ind->has_nr5g)
+ {
+ printf("nr5g_sig_info: rsrp=%hd, rsrq=%hd, snr=%hd\n",
+ ind->nr5g.rsrp,
+ ind->nr5g.rsrq,
+ ind->nr5g.snr);
+ }
+ if(ind->has_cdma)
+ {
+ printf("cdma_sig_info: rssi=%d, ecio=%d\n",
+ ind->cdma.rssi,
+ ind->cdma.ecio);
+ }
+ if(ind->has_hdr)
+ {
+ printf("hdr_sig_info: rssi=%d, ecio=%d, sinr=%d, io=%d\n",
+ ind->hdr.rssi,
+ ind->hdr.ecio,
+ ind->hdr.sinr,
+ ind->hdr.io);
+ }
+
+ if(internal_nw_get_signal_strength_level(level, level_info, sizeof(level_info)) == 0)
+ {
+ printf("signal strength level is %d, unrecognized\n", level);
+ }
+ else
+ {
+ printf("signal strength level is %s\n", level_info);
+ }
+}
+
+#if 0
+void nw_cell_access_status_event_ind_cb(QL_NW_CELL_ACCESS_STATE_TYPE_E status)
+{
+ printf("recv event indication : cell access status event\n");
+ printf("status = %d\n", status);
+}
+
+void nw_nitz_time_update_event_ind_cb(ql_nw_nitz_time_info_t *ind)
+{
+ if(ind == NULL)
+ {
+ printf("recv nitz time update ind event, param is null\n");
+ return;
+ }
+ printf("recv event indication : nitz time update event\n");
+ printf("nitz_time=%s, abs_time=%lld, leap_sec=%d\n",
+ ind->nitz_time, ind->abs_time, ind->leap_sec);
+}
+
+void nw_wea_alert_event_ind_cb(ql_nw_wea_alert_info_t *ind)
+{
+ if(ind == NULL)
+ {
+ printf("recv wea alert ind event, param is null\n");
+ return;
+ }
+
+ printf("recv event indication : wea alert event, wea_alert_info_valid:[%d]\n",
+ ind->wea_alert_info_valid);
+ if(ind->wea_alert_info_valid)
+ {
+ printf("wea alert info:[%s] \n",ind->wea_alert_info);
+ }
+}
+
+void nw_etws_alert_event_ind_cb(ql_nw_etws_alert_info_t *ind)
+{
+ if(ind == NULL)
+ {
+ printf("recv etws alert ind event, param is null\n");
+ return;
+ }
+ printf("recv event indication : etws alert event, etws_primary_info_valid:[%d] etws_secondary_info_valid:[%d]\n",
+ ind->etws_primary_info_valid, ind->etws_secondary_info_valid);
+ if(ind->etws_primary_info_valid)
+ {
+ printf("etws primary alert info:[%s] \n", ind->etws_primary_info);
+ }
+ if(ind->etws_secondary_info_valid)
+ {
+ printf("etws secondary alert info:[%s] \n",
+ ind->etws_secondary_info);
+ }
+}
+
+void nw_network_scan_async_cb(int async_id, ql_nw_scan_result_list_info_t *info)
+{
+ int i = 0;
+ char net_info[16] = {0};
+ char radio_info[16] = {0};
+
+ printf("network scan async callback, async id is %d, list_len=%d, detail info:\n", async_id, info->entry_len);
+ for(i = 0; i < info->entry_len; i++)
+ {
+ memset(net_info, 0, sizeof(net_info));
+ memset(radio_info, 0, sizeof(radio_info));
+ printf("\t[%d]: long_eons=%s, short_eons=%s, mcc=%s, mnc=%s, ",
+ i,
+ info->entry[i].operator_name.long_eons,
+ info->entry[i].operator_name.short_eons,
+ info->entry[i].operator_name.mcc,
+ info->entry[i].operator_name.mnc);
+
+
+ if(internal_nw_get_net_status(info->entry[i].network_status, net_info, sizeof(net_info)) == 0)
+ {
+ printf("unrecognized network_status:%d, ", info->entry[i].network_status);
+ }
+ else
+ {
+ printf("network_status=%s, ", net_info);
+ }
+
+ if(internal_nw_get_radio_tech(info->entry[i].rat, radio_info, sizeof(radio_info)) == 0)
+ {
+ printf("unrecognized rat:%d\n ", info->entry[i].rat);
+ }
+ else
+ {
+ printf("radio_tech=%s\n", radio_info);
+ }
+ }
+}
+#endif
+
+void nw_service_error_cb(int error)
+{
+ printf("===== NW Service Abort =====\n");
+}
+
+void item_ql_nw_init(void)
+{
+ int ret = 0;
+
+ printf("Start to ql_nw_init: ");
+ ret = ql_nw_init();
+ if(ret == QL_ERR_OK)
+ {
+ printf("nw init ok\n");
+ }
+ else
+ {
+ printf("failed, ret=%d\n", ret);
+ }
+}
+
+void item_ql_nw_deinit(void)
+{
+ int ret = 0;
+
+ printf("Start to ql_nw_deinit: ");
+ ret = ql_nw_deinit();
+ if(ret == QL_ERR_OK)
+ {
+ printf("nw deinit ok\n");
+ }
+ else
+ {
+ printf("failed, ret=%d\n", ret);
+ }
+}
+
+#if 0
+void item_ql_nw_network_scan(void)
+{
+ int ret;
+ int async_id = 0;
+
+ ret = ql_nw_network_scan(&async_id, nw_network_scan_async_cb);
+ if(ret == QL_ERR_OK)
+ {
+ printf("async network scan succeed, token id is %d\n", async_id);
+ }
+ else
+ {
+ printf("async network scan failed, token id is %d, ret=%d", async_id, ret);
+ }
+}
+#endif
+
+void item_ql_nw_set_power_mode(void)
+{
+ int ret;
+ uint32_t mode = 0;
+
+ printf("please input power mode mask hex(VOICE | SMS | SIM | NETWORK | NORMAL): ");
+ ret = t_get_hex(&mode);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ ret = ql_nw_set_power_mode(mode);
+ printf("ql_nw_set_lower_power_mode ret = %d\n", ret);
+}
+
+#if 0
+void item_ql_nw_set_pref_nwmode_roaming(void)
+{
+ int ret;
+ uint32_t mask = 0;
+ ql_nw_pref_nwmode_roaming_info_t t_info;
+
+ memset(&t_info, 0, sizeof(t_info));
+ printf("please input config mask hex(TDSCDMA | LTE | EVDO | CDMA | WCDMA | GSM): ");
+ ret = t_get_hex(&mask);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ t_info.preferred_nw_mode = mask;
+
+#if 0
+ printf("please input roaming pref(0:off 1:on): ");
+ ret = t_get_int((int *)&mask);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ t_info.preferred_roaming = mask;
+#endif
+ ret = ql_nw_set_pref_nwmode_roaming(&t_info);
+ printf("ql_nw_set_config ret = %d\n", ret);
+}
+
+void item_ql_nw_get_pref_nwmode_roaming(void)
+{
+ int ret;
+ ql_nw_pref_nwmode_roaming_info_t t_info;
+
+ memset(&t_info, 0, sizeof(t_info));
+ ret = ql_nw_get_pref_nwmode_roaming(&t_info);
+#if 0
+ printf("ql_nw_get_config ret = %d\npreferred_nw_mode=%#llx, preferred_roaming=%d\n",
+ ret, t_info.preferred_nw_mode, t_info.preferred_roaming);
+#else
+ printf("ql_nw_get_config ret = %d\npreferred_nw_mode=%#llx\n",
+ ret, t_info.preferred_nw_mode);
+#endif
+}
+
+void item_ql_nw_get_mobile_operator_name(void)
+{
+ int ret;
+ ql_nw_mobile_operator_name_info_t t_info;
+
+ memset(&t_info, 0, sizeof(t_info));
+ ret = ql_nw_get_mobile_operator_name(&t_info);
+ printf("ql_nw_get_operator_name ret = %d, long_eons=%s, short_eons=%s, mcc=%s, mnc=%s\n",
+ ret,
+ t_info.long_eons,
+ t_info.short_eons,
+ t_info.mcc,
+ t_info.mnc);
+}
+
+void item_ql_nw_get_cell_info(void)
+{
+ int i;
+ int ret;
+ unsigned short mcc;
+ unsigned short mnc;
+ ql_nw_cell_info_t t_info;
+
+ memset(&t_info, 0, sizeof(t_info));
+ ret = ql_nw_get_cell_info(&t_info);
+ printf("ql_nw_get_cell_info ret = %d, detail info:\n", ret);
+
+ if(t_info.gsm_info_valid)
+ {
+ printf("gsm cell information:\n");
+ for(i = 0; i < t_info.gsm_info_len; i++)
+ {
+ printf("\tcid=%d,plmn=0x%02x 0x%02x 0x%02x,lac=%d,arfcn=%d,bsic=%d,rssi=%d,",
+ t_info.gsm_info[i].cid,
+ t_info.gsm_info[i].plmn[0],
+ t_info.gsm_info[i].plmn[1],
+ t_info.gsm_info[i].plmn[2],
+ t_info.gsm_info[i].lac,
+ t_info.gsm_info[i].arfcn,
+ t_info.gsm_info[i].bsic,
+ t_info.gsm_info[i].rssi);
+
+ internal_nw_get_mcc_mnc_value(t_info.gsm_info[i].plmn, 3, &mcc, &mnc);
+ printf("convert plmn to mcc=%d,mnc=%02d\n", mcc, mnc);
+ }
+ }
+
+ if(t_info.umts_info_valid)
+ {
+ printf("umts cell information:\n");
+ for(i = 0; i < t_info.umts_info_len; i++)
+ {
+ printf("\tcid=%d,lcid=%d,plmn=0x%02x 0x%02x 0x%02x,lac=%d,uarfcn=%d,psc=%d,rssi=%d,",
+ t_info.umts_info[i].cid,
+ t_info.umts_info[i].lcid,
+ t_info.umts_info[i].plmn[0],
+ t_info.umts_info[i].plmn[1],
+ t_info.umts_info[i].plmn[2],
+ t_info.umts_info[i].lac,
+ t_info.umts_info[i].uarfcn,
+ t_info.umts_info[i].psc,
+ t_info.umts_info[i].rssi);
+ internal_nw_get_mcc_mnc_value(t_info.umts_info[i].plmn, 3, &mcc, &mnc);
+ printf("convert plmn to mcc=%d,mnc=%02d\n", mcc, mnc);
+ }
+ }
+
+ if(t_info.lte_info_valid)
+ {
+ printf("lte cell information:\n");
+ for(i = 0; i < t_info.lte_info_len; i++)
+ {
+ printf("\tcid=%d,plmn=0x%02x 0x%02x 0x%02x,tac=%d,pci=%d,earfcn=%d,rssi=%d,",
+ t_info.lte_info[i].cid,
+ t_info.lte_info[i].plmn[0],
+ t_info.lte_info[i].plmn[1],
+ t_info.lte_info[i].plmn[2],
+ t_info.lte_info[i].tac,
+ t_info.lte_info[i].pci,
+ t_info.lte_info[i].earfcn,
+ t_info.lte_info[i].rssi);
+ internal_nw_get_mcc_mnc_value(t_info.lte_info[i].plmn, 3, &mcc, &mnc);
+ printf("convert plmn to mcc=%d,mnc=%02d\n", mcc, mnc);
+ }
+ }
+
+ if(t_info.nr5g_info_valid)
+ {
+ printf("nr5g cell information:\n");
+ printf("\tcid=%lld,plmn=0x%02x 0x%02x 0x%02x,tac=%d,pci=%d,arfcn=%d,rsrp=%d,rsrq=%d,snr=%d,",
+ t_info.nr5g_info.cid,
+ t_info.nr5g_info.plmn[0],
+ t_info.nr5g_info.plmn[1],
+ t_info.nr5g_info.plmn[2],
+ t_info.nr5g_info.tac,
+ t_info.nr5g_info.pci,
+ t_info.nr5g_info.arfcn,
+ t_info.nr5g_info.rsrp,
+ t_info.nr5g_info.rsrq,
+ t_info.nr5g_info.snr);
+ internal_nw_get_mcc_mnc_value(t_info.nr5g_info.plmn, 3, &mcc, &mnc);
+ printf("convert plmn to mcc=%d,mnc=%02d\n", mcc, mnc);
+ }
+
+ if(t_info.cdma_info_valid)
+ {
+ printf("cdma cell information:\n");
+ printf("\tsid=%d,nid=%d,bid=%d,refpn=%d,base_lat=%d,base_long=%d,rssi=%d\n",
+ t_info.cdma_info.sid,
+ t_info.cdma_info.nid,
+ t_info.cdma_info.bid,
+ t_info.cdma_info.refpn,
+ t_info.cdma_info.base_lat,
+ t_info.cdma_info.base_long,
+ t_info.cdma_info.rssi);
+ }
+}
+#endif
+
+void item_ql_nw_get_voice_reg_status(void)
+{
+ int ret;
+ char domain_info[16] = {0};
+ char radio_info[16] = {0};
+ char svc_opt[128] = {0};
+ ql_nw_reg_status_info_t t_info;
+
+ memset(&t_info, 0, sizeof(t_info));
+ ret = ql_nw_get_voice_reg_status(&t_info);
+
+ printf("ql_nw_get_voice_reg_status ret = %d, detail info:\n", ret);
+
+ if(internal_nw_get_tech_domain(t_info.tech_domain, domain_info, sizeof(domain_info)) == 0)
+ {
+ printf("\ttech_domain is unrecognized:%d, ", t_info.tech_domain);
+ }
+ else
+ {
+ printf("\ttech_domain = %s, ", domain_info);
+ }
+
+ if(internal_nw_get_radio_tech(t_info.radio_tech, radio_info, sizeof(radio_info)) == 0)
+ {
+ printf("radio_tech is unrecognized:%d, ", t_info.radio_tech);
+ }
+ else
+ {
+ printf("radio_tech = %s, ", radio_info);
+ }
+
+ printf("roaming = %d, reg_status = %d, deny_reason = %d\n",
+ t_info.roaming, t_info.reg_state, t_info.deny_reason);
+
+ if(QL_NW_RADIO_TECH_NR5G != t_info.radio_tech)
+ {
+ printf("\tmcc=%s, mnc=%s, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d, endc_available=%d\n",
+ t_info.mcc,
+ t_info.mnc,
+ t_info.forbidden,
+ t_info.cid,
+ t_info.lac,
+ t_info.psc,
+ t_info.tac,
+ t_info.endc_available);
+
+ printf("\tinPRL=%d, css=%d, sid=%d, nid=%d, bsid=%d\n",
+ t_info.inPRL,
+ t_info.css,
+ t_info.sid,
+ t_info.nid,
+ t_info.bsid);
+ }
+ else
+ {
+ printf("\tmcc=%s, mnc=%s, forbidden=%d, cid=0x%llX, pci=%d, tac=%d\n",
+ t_info.mcc,
+ t_info.mnc,
+ t_info.forbidden,
+ t_info.nr5g_cid,
+ t_info.nr5g_pci,
+ t_info.nr5g_tac);
+
+ internal_nw_get_service_option(t_info.nr5g_svc_opt, svc_opt, sizeof(svc_opt));
+ printf("\tsvc_opt(%d)=%s\n", t_info.nr5g_svc_opt, svc_opt);
+ }
+}
+
+void item_ql_nw_get_data_reg_status(void)
+{
+ int ret;
+ char domain_info[16] = {0};
+ char radio_info[16] = {0};
+ char svc_opt[128] = {0};
+ ql_nw_reg_status_info_t t_info;
+
+ memset(&t_info, 0, sizeof(t_info));
+ ret = ql_nw_get_data_reg_status(&t_info);
+
+ printf("ql_nw_get_data_reg_status ret = %d, detail info:\n", ret);
+
+ if(internal_nw_get_tech_domain(t_info.tech_domain, domain_info, sizeof(domain_info)) == 0)
+ {
+ printf("\ttech_domain is unrecognized:%d, ", t_info.tech_domain);
+ }
+ else
+ {
+ printf("\ttech_domain = %s, ", domain_info);
+ }
+
+ if(internal_nw_get_radio_tech(t_info.radio_tech, radio_info, sizeof(radio_info)) == 0)
+ {
+ printf("radio_tech is unrecognized:%d, ", t_info.radio_tech);
+ }
+ else
+ {
+ printf("radio_tech = %s, ", radio_info);
+ }
+
+ printf("roaming = %d, reg_status = %d, deny_reason = %d\n",
+ t_info.roaming, t_info.reg_state, t_info.deny_reason);
+
+ if(QL_NW_RADIO_TECH_NR5G != t_info.radio_tech)
+ {
+ printf("\tmcc=%s, mnc=%s, forbidden=%d, cid=0x%X, lac=%d, psc=%d, endc_available=%d\n",
+ t_info.mcc,
+ t_info.mnc,
+ t_info.forbidden,
+ t_info.cid,
+ t_info.lac,
+ t_info.psc,
+ //t_info.tac, // tac not valid in item_ql_nw_get_data_reg_status ,use item_ql_nw_get_cell_info
+ t_info.endc_available);
+
+ printf("\tinPRL=%d, css=%d, sid=%d, nid=%d, bsid=%d\n",
+ t_info.inPRL,
+ t_info.css,
+ t_info.sid,
+ t_info.nid,
+ t_info.bsid);
+ }
+ else
+ {
+ printf("\tmcc=%s, mnc=%s, forbidden=%d, cid=0x%llX, pci=%d, tac=%d\n",
+ t_info.mcc,
+ t_info.mnc,
+ t_info.forbidden,
+ t_info.nr5g_cid,
+ t_info.nr5g_pci,
+ t_info.nr5g_tac);
+
+ internal_nw_get_service_option(t_info.nr5g_svc_opt, svc_opt, sizeof(svc_opt));
+ printf("\tsvc_opt(%d)=%s\n", t_info.nr5g_svc_opt, svc_opt);
+ }
+
+}
+
+void item_ql_nw_get_signal_strength(void)
+{
+ int ret;
+ char level_info[16] = {0};
+ ql_nw_signal_strength_info_t info;
+ QL_NW_SIGNAL_STRENGTH_LEVEL_E level = QL_NW_SIGNAL_STRENGTH_LEVEL_NONE;
+
+ memset(&info, 0, sizeof(info));
+ ret = ql_nw_get_signal_strength(&info, &level);
+ if (QL_ERR_OK != ret)
+ {
+ printf("failed, ret = %d\n", ret);
+ return;
+ }
+
+ if(info.has_gsm)
+ {
+ printf("gsm_sig_info: rssi=%hhd\n", info.gsm.rssi);
+ }
+
+ if(info.has_wcdma)
+ {
+ printf("wcdma_sig_info: rssi=%hhd, ecio=%hd\n",
+ info.wcdma.rssi,
+ info.wcdma.ecio);
+ }
+
+ if(info.has_tdscdma)
+ {
+ printf("tdscdma_sig_info: rssi=%hhd, rscp=%hhd, ecio=%hd, sinr=%hhd\n",
+ info.tdscdma.rssi,
+ info.tdscdma.rscp,
+ info.tdscdma.ecio,
+ info.tdscdma.sinr);
+ }
+
+ if(info.has_lte)
+ {
+ printf("lte_sig_info: rssi=%hhd, rsrq=%hhd, rsrp=%hd, snr=%hd\n",
+ info.lte.rssi,
+ info.lte.rsrq,
+ info.lte.rsrp,
+ info.lte.snr);
+ }
+
+ if(info.has_nr5g)
+ {
+ printf("nr5g_sig_info: rsrp=%hd, rsrq=%hd, snr=%hd\n",
+ info.nr5g.rsrp,
+ info.nr5g.rsrq,
+ info.nr5g.snr);
+ }
+
+ if(info.has_cdma)
+ {
+ printf("cdma_sig_info: rssi=%hhd, ecio=%hd\n",
+ info.cdma.rssi,
+ info.cdma.ecio);
+ }
+
+ if(info.has_hdr)
+ {
+ printf("hdr_sig_info: rssi=%hhd, ecio=%hd, sinr=%hd, io=%d\n",
+ info.hdr.rssi,
+ info.hdr.ecio,
+ info.hdr.sinr,
+ info.hdr.io);
+ }
+
+ if(internal_nw_get_signal_strength_level(level, level_info, sizeof(level_info)) == 0)
+ {
+ printf("signal strength level is %d, unrecognized\n", level);
+ }
+ else
+ {
+ printf("signal strength level is %s\n", level_info);
+ }
+}
+
+#if 0
+void item_ql_nw_get_cell_access_status(void)
+{
+ int ret;
+ QL_NW_CELL_ACCESS_STATE_TYPE_E e_state;
+
+ ret = ql_nw_get_cell_access_status(&e_state);
+ printf("ql_nw_get_cell_access_state ret = %d, e_state=%d\n", ret, e_state);
+}
+
+void item_ql_nw_get_nitz_time_info(void)
+{
+ int ret;
+ ql_nw_nitz_time_info_t t_info;
+
+ memset(&t_info, 0, sizeof(t_info));
+ ret = ql_nw_get_nitz_time_info(&t_info);
+ printf("ql_nw_get_nitz_time_info ret = %d\n nitz_time=%s, abs_time=%lld, leap_sec=%hhd\n",
+ ret,
+ t_info.nitz_time,
+ t_info.abs_time,
+ t_info.leap_sec);
+}
+#endif
+
+void item_ql_nw_set_voice_reg_ind_cb(void)
+{
+ int ret = 0;
+ int reg_flag = 0;
+
+ printf("please input voice reg option: (0: unreg, other: reg): ");
+ ret = t_get_int(®_flag);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ if(reg_flag)
+ {
+ ret = ql_nw_set_voice_reg_ind_cb(nw_voice_reg_event_ind_cb);
+ }
+ else
+ {
+ ret = ql_nw_set_voice_reg_ind_cb(NULL);
+ }
+ printf("ql_nw_reg_voice_reg_event ret = %d\n", ret);
+}
+
+#if 0
+void item_ql_nw_set_data_reg_ind_cb(void)
+{
+ int ret = 0;
+ int reg_flag = 0;
+
+ printf("please input data reg option: (0: unreg, other: reg): ");
+ ret = t_get_int(®_flag);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ if(reg_flag)
+ {
+ ret = ql_nw_set_data_reg_ind_cb(nw_data_reg_event_ind_cb);
+ }
+ else
+ {
+ ret = ql_nw_set_data_reg_ind_cb(NULL);
+ }
+ printf("ql_nw_reg_data_reg_event ret = %d\n", ret);
+}
+#endif
+
+void item_ql_nw_set_signal_strength_chg_ind_cb(void)
+{
+ int ret = 0;
+ int reg_flag = 0;
+
+ printf("please input signal strength change reg option: (0: unreg, other: reg): ");
+ ret = t_get_int(®_flag);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ if(reg_flag)
+ {
+ ret = ql_nw_set_signal_strength_ind_cb(nw_signal_strength_event_ind_cb);
+ }
+ else
+ {
+ ret = ql_nw_set_signal_strength_ind_cb(NULL);
+ }
+ printf("ql_nw_reg_signal_strength_chg_event ret = %d\n", ret);
+}
+
+#if 0
+void item_ql_nw_set_cell_access_status_chg_ind_cb(void)
+{
+ int ret = 0;
+ int reg_flag = 0;
+
+ printf("please input cell access status change reg option: (0: unreg, other: reg): ");
+ ret = t_get_int(®_flag);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ if(reg_flag)
+ {
+ ret = ql_nw_set_cell_access_status_ind_cb(nw_cell_access_status_event_ind_cb);
+ }
+ else
+ {
+ ret = ql_nw_set_cell_access_status_ind_cb(NULL);
+ }
+ printf("ql_nw_reg_cell_access_status_event ret = %d\n", ret);
+}
+
+void item_ql_nw_set_nitz_time_update_ind_cb(void)
+{
+ int ret = 0;
+ int reg_flag = 0;
+
+ printf("please input nitz time update reg option: (0: unreg, other: reg): ");
+ ret = t_get_int(®_flag);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ if(reg_flag)
+ {
+ ret = ql_nw_set_nitz_time_update_ind_cb(nw_nitz_time_update_event_ind_cb);
+ }
+ else
+ {
+ ret = ql_nw_set_nitz_time_update_ind_cb(NULL);
+ }
+ printf("ql_nw_reg_nitz_time_update_event ret = %d\n", ret);
+}
+
+void item_ql_nw_set_wea_alert_ind_cb(void)
+{
+ int ret = 0;
+ int reg_flag = 0;
+
+ printf("please input wea alert reg option: (0: unreg, other: reg): ");
+ ret = t_get_int(®_flag);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ if(reg_flag)
+ {
+ ret = ql_nw_set_wea_alert_ind_cb(nw_wea_alert_event_ind_cb);
+ }
+ else
+ {
+ ret = ql_nw_set_wea_alert_ind_cb(NULL);
+ }
+ printf("ql_nw_set_wea_alert_ind_cb ret = %d\n", ret);
+}
+
+void item_ql_nw_set_etws_alert_ind_cb(void)
+{
+ int ret = 0;
+ int reg_flag = 0;
+
+ printf("please input etws alert reg option: (0: unreg, other: reg): ");
+ ret = t_get_int(®_flag);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ if(reg_flag)
+ {
+ ret = ql_nw_set_etws_alert_ind_cb(nw_etws_alert_event_ind_cb);
+ }
+ else
+ {
+ ret = ql_nw_set_etws_alert_ind_cb(NULL);
+ }
+ printf("ql_nw_set_etws_alert_ind_cb ret = %d\n", ret);
+}
+#endif
+
+static void internal_nw_get_mcc_mnc_value(char *plmn, int plmn_len, unsigned short *mcc, unsigned short *mnc)
+{
+ int mcc1 = 0, mcc2 = 0, mcc3 = 0;
+ int mnc1 = 0, mnc2 = 0, mnc3 = 0;
+
+ if(plmn_len < 3 || plmn == NULL) {
+ printf("get mcc mnc from plmn fail, param is invalid\n");
+ return;
+ }
+
+ mcc1 = plmn[0] & 0X0F;
+ mcc2 = plmn[0] >> 4;
+ mcc3 = plmn[1] & 0x0F;
+
+ mnc3 = plmn[1] >> 4;
+ mnc2 = plmn[2] >> 4;
+ mnc1 = plmn[2] & 0x0F;
+
+ *mcc = mcc1 * 100 + mcc2 * 10 + mcc3;
+
+ if(0X0F == mnc3) {
+ *mnc = mnc1 * 10 + mnc2;
+ }
+ else {
+ *mnc = mnc1 * 100 + mnc2 * 10 + mnc3;
+ }
+}
+
+static int internal_nw_get_net_status(QL_NW_NETWORK_STATUS_TYPE_E net, char* buf, int buf_len)
+{
+ int ret_val = 1;
+
+ if(buf == NULL || buf_len < 2)
+ {
+ printf("param is valid\n");
+ return 0;
+ }
+
+ memset(buf, 0, buf_len);
+
+ switch(net)
+ {
+ case QL_NW_NETWORK_STATUS_NONE:
+ strncpy(buf, "NONE", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_NETWORK_STATUS_CURRENT_SERVING:
+ strncpy(buf, "CURRENT_SERVING", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_NETWORK_STATUS_PREFERRED:
+ strncpy(buf, "PREFERED", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_NETWORK_STATUS_NOT_PREFERRED:
+ strncpy(buf, "NOT_PREFERRED", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_NETWORK_STATUS_AVAILABLE:
+ strncpy(buf, "AVAILABLE", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_NETWORK_STATUS_FORBIDDEN:
+ strncpy(buf, "FORBIDDEN", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ default:
+ ret_val = 0;
+ break;
+ }
+ return ret_val;
+}
+
+#if 0
+static int internal_nw_get_nas_rat(int radio, char* buf, int buf_len)
+{
+ int ret_val = 1;
+
+ if(buf == NULL || buf_len < 2)
+ {
+ printf("param is valid\n");
+ return 0;
+ }
+
+ memset(buf, 0, buf_len);
+
+ switch(radio)
+ {
+ case 0:
+ strncpy(buf, "UNKNOWN", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case 1:
+ strncpy(buf, "GSM", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case 2:
+ strncpy(buf, "WCDMA", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case 3:
+ strncpy(buf, "TDSCDMA", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case 4:
+ strncpy(buf, "LTE", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case 5:
+ strncpy(buf, "NR5G", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case 6:
+ strncpy(buf, "CDMA", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case 7:
+ strncpy(buf, "HDR", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ default:
+ ret_val = 0;
+ break;
+ }
+ return ret_val;
+}
+#endif
+
+static int internal_nw_get_radio_tech(QL_NW_RADIO_TECH_TYPE_E radio, char* buf, int buf_len)
+{
+ int ret_val = 1;
+
+ if(buf == NULL || buf_len < 2)
+ {
+ printf("param is valid\n");
+ return 0;
+ }
+
+ memset(buf, 0, buf_len);
+
+ switch(radio)
+ {
+ case QL_NW_RADIO_TECH_TD_SCDMA:
+ strncpy(buf, "TD_SCDMA", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_GSM:
+ strncpy(buf, "GSM", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_HSPAP:
+ strncpy(buf, "HSPAP", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_LTE:
+ strncpy(buf, "LTE", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_EHRPD:
+ strncpy(buf, "EHRPD", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_EVDO_B:
+ strncpy(buf, "EVDO_B", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_HSPA:
+ strncpy(buf, "HSPA", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_HSUPA:
+ strncpy(buf, "HSUPA", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_HSDPA:
+ strncpy(buf, "HSDPA", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_EVDO_A:
+ strncpy(buf, "EVDO_A", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_EVDO_0:
+ strncpy(buf, "EVDO_0", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_1xRTT:
+ strncpy(buf, "1xRTT", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_IS95B:
+ strncpy(buf, "IS95B", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_IS95A:
+ strncpy(buf, "IS95A", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_UMTS:
+ strncpy(buf, "UMTS", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_EDGE:
+ strncpy(buf, "EDGE", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_GPRS:
+ strncpy(buf, "GPRS", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_NR5G:
+ strncpy(buf, "NR5G", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_RADIO_TECH_NONE:
+ strncpy(buf, "NONE", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ default:
+ ret_val = 0;
+ break;
+ }
+ return ret_val;
+}
+
+static int internal_nw_get_tech_domain(QL_NW_TECH_DOMAIN_TYPE_E domain, char* buf, int buf_len)
+{
+ int ret_val = 1;
+
+ if(buf == NULL || buf_len < 2)
+ {
+ printf("param is valid\n");
+ return 0;
+ }
+
+ memset(buf, 0, buf_len);
+
+ switch(domain)
+ {
+ case QL_NW_TECH_DOMAIN_NONE:
+ strncpy(buf, "NONE", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_TECH_DOMAIN_3GPP:
+ strncpy(buf, "3GPP", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_TECH_DOMAIN_3GPP2:
+ strncpy(buf, "3GPP2", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ default:
+ ret_val = 0;
+ break;
+ }
+ return ret_val;
+}
+
+static int internal_nw_get_signal_strength_level(QL_NW_SIGNAL_STRENGTH_LEVEL_E level, char* buf, int buf_len)
+{
+ int ret_val = 1;
+
+ if(buf == NULL || buf_len < 2)
+ {
+ printf("param is valid\n");
+ return 0;
+ }
+
+ memset(buf, 0, buf_len);
+
+ switch(level)
+ {
+ case QL_NW_SIGNAL_STRENGTH_LEVEL_NONE:
+ strncpy(buf, "UNKNOWN", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_SIGNAL_STRENGTH_LEVEL_POOR:
+ strncpy(buf, "POOR", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_SIGNAL_STRENGTH_LEVEL_MODERATE:
+ strncpy(buf, "MODERATE", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_SIGNAL_STRENGTH_LEVEL_GOOD:
+ strncpy(buf, "GOOD", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ case QL_NW_SIGNAL_STRENGTH_LEVEL_GREAT:
+ strncpy(buf, "GREAT", buf_len - 1);
+ buf[buf_len - 1] = '\0';
+ break;
+ default:
+ ret_val = 0;
+ break;
+ }
+ return ret_val;
+}
+
+static void internal_nw_get_service_option(unsigned short so_mask, char *buf, int buf_len)
+{
+ int remain_len = buf_len;
+
+ if(NULL == buf || buf_len < 2)
+ {
+ printf("param is valid\n");
+ return;
+ }
+ memset(buf, 0, buf_len);
+
+ if(so_mask & QL_NW_NR5G_SO_TDD)
+ {
+ if(remain_len > strlen("NR5G_TDD|") + 1)
+ {
+ strcat(buf + (buf_len - remain_len), "NR5G_TDD|");
+ remain_len = buf_len - strlen("NR5G_TDD|");
+ }
+ }
+
+ if(so_mask & QL_NW_NR5G_SO_SUB6)
+ {
+ if(remain_len > strlen("NR5G_SUB6|") + 1)
+ {
+ strcat(buf + (buf_len - remain_len), "NR5G_SUB6|");
+ remain_len = buf_len - strlen("NR5G_SUB6|");
+ }
+ }
+
+ if(so_mask & QL_NW_NR5G_SO_MMWAVE)
+ {
+ if(remain_len > strlen("NR5G_MMWAVE|") + 1)
+ {
+ strcat(buf + (buf_len - remain_len), "NR5G_MMWAVE|");
+ remain_len = buf_len - strlen("NR5G_MMWAVE|");
+ }
+ }
+
+ if(so_mask & QL_NW_NR5G_SO_NSA)
+ {
+ if(remain_len > strlen("NR5G_NSA|") + 1)
+ {
+ strcat(buf + (buf_len - remain_len), "NR5G_NSA|");
+ remain_len = buf_len - strlen("NR5G_NSA|");
+ }
+ }
+
+ if(so_mask & QL_NW_NR5G_SO_SA)
+ {
+ if(remain_len > strlen("NR5G_SA|") + 1)
+ {
+ strcat(buf + (buf_len - remain_len), "NR5G_SA|");
+ remain_len = buf_len - strlen("NR5G_SA|");
+ }
+ }
+
+ if(strlen(buf) > 0)
+ {
+ buf[strlen(buf) - 1] = '\0';
+ }
+ return;
+}
+
+#if 0
+void item_ql_nw_wea_set_config(void)
+{
+ int ret = 0;
+ int choice = 0;
+ int item = 0;
+ ql_nw_wea_config_t config = {0};
+
+ printf("test ql_nw_wea_set_config: \n");
+ printf(" 1)Presidential_alert\n");
+ printf(" 2)Extreme_alert\n");
+ printf(" 3)Severe_alert\n");
+ printf(" 4)Amber_alert\n");
+ printf(" 5)PublicSafety_alert\n");
+ printf(" 6)StateLocalTest_alert\n");
+ printf(" 7)RMT_alert\n");
+ printf(" 8)Exercise_alert\n");
+ printf(" 9)CMSPDefined_alert\n");
+ printf("10)Spanish_alert\n");
+ printf("please enter item to config: ");
+ ret = t_get_int(&choice);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ printf("\n");
+
+ switch (choice)
+ {
+ case 1:
+ item |= QL_NW_WEA_CONFIG_PRESIDENTIAL_ALERT;
+ printf("Presidential_alert: 0 - disable, 1 - enable:");
+ if(scanf("%hhu", &config.Presidential_alert) != 1)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ break;
+ case 2:
+ item |= QL_NW_WEA_CONFIG_EXTREME_ALERT;
+ printf("Extreme_alert: 0 - disable, 1 - enable:");
+ if(scanf("%hhu", &config.Extreme_alert) != 1)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ break;
+ case 3:
+ item |= QL_NW_WEA_CONFIG_SEVERE_ALERT;
+ printf("Severe_alert: 0 - disable, 1 - enable:");
+ if(scanf("%hhu", &config.Severe_alert) != 1)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ break;
+ case 4:
+ item |= QL_NW_WEA_CONFIG_AMBER_ALERT;
+ printf("Amber_alert: 0 - disable, 1 - enable:");
+ if(scanf("%hhu", &config.Amber_alert) != 1)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ break;
+ case 5:
+ item |= QL_NW_WEA_CONFIG_PUBLIC_SAFETY_ALERT;
+ printf("PublicSafety_alert: 0 - disable, 1 - enable:");
+ if(scanf("%hhu", &config.PublicSafety_alert) != 1)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ break;
+ case 6:
+ item |= QL_NW_WEA_CONFIG_STATE_LOCAL_TEST_ALERT;
+ printf("StateLocalTest_alert: 0 - disable, 1 - enable:");
+ if(scanf("%hhu", &config.StateLocalTest_alert) != 1)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ break;
+ case 7:
+ item |= QL_NW_WEA_CONFIG_RMT_ALERT;
+ printf("RMT_alert: 0 - disable, 1 - enable:");
+ if(scanf("%hhu", &config.RMT_alert) != 1)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ break;
+ case 8:
+ item |= QL_NW_WEA_CONFIG_EXERCISE_ALERT;
+ printf("Exercise_alert: 0 - disable, 1 - enable:");
+ if(scanf("%hhu", &config.Exercise_alert) != 1)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ break;
+ case 9:
+ item |= QL_NW_WEA_CONFIG_CMSP_DEFINED_ALERT;
+ printf("CMSPDefined_alert: 0 - disable, 1 - enable:");
+ if(scanf("%hhu", &config.CMSPDefined_alert) != 1)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ break;
+ case 10:
+ item |= QL_NW_WEA_CONFIG_SPANISH_ALERT;
+ printf("Spanish_alert: 0 - disable, 1 - enable:");
+ if(scanf("%hhu", &config.Spanish_alert) != 1)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+ break;
+ default:
+ printf("bad choice: %d\n", choice);
+ return;
+ }
+ ret = getchar();
+
+ ret = ql_nw_set_wea_config(item, &config);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+void item_ql_nw_wea_get_config(void)
+{
+ int ret = 0;
+ ql_nw_wea_config_t config = {0};
+
+ printf("test ql_nw_get_wea_config: \n");
+ ret = ql_nw_get_wea_config(&config);
+ if (ret == QL_ERR_OK)
+ {
+ printf("****** wea Config ******\n");
+ printf("Presidential_alert: %s\n", config.Presidential_alert ? "true" : "false");
+ printf("Extreme_alert: %s\n", config.Extreme_alert ? "true" : "false");
+ printf("Severe_alert: %s\n", config.Severe_alert ? "true" : "false");
+ printf("Amber_alert: %s\n", config.Amber_alert ? "true" : "false");
+ printf("PublicSafety_alert: %s\n", config.PublicSafety_alert ? "true" : "false");
+ printf("StateLocalTest_alert: %s\n", config.StateLocalTest_alert ? "true" : "false");
+ printf("RMT_alert: %s\n", config.RMT_alert ? "true" : "false");
+ printf("Exercise_alert: %s\n", config.Exercise_alert ? "true" : "false");
+ printf("CMSPDefined_alert: %s\n", config.CMSPDefined_alert ? "true" : "false");
+ printf("Spanish_alert: %s\n", config.Spanish_alert ? "true" : "false");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+void item_ql_nw_etws_set_config(void)
+{
+ int ret = 0;
+ int etws_enable = 0;
+
+ printf("please input etws config (0: disable, 1: enable): ");
+ ret = t_get_int(&etws_enable);
+ if(ret != 0)
+ {
+ printf("Invalid input\n");
+ return;
+ }
+
+ ret = ql_nw_set_etws_config((unsigned char)etws_enable);
+ printf("item_ql_nw_etws_set_config ret = %d\n", ret);
+}
+
+void item_ql_nw_etws_get_config(void)
+{
+ int ret = 0;
+ unsigned char etws_enable = 0;
+
+ ret = ql_nw_get_etws_config(&etws_enable);
+ printf("ql_nw_get_etws_config ret = %d \t etws_enable=%d\n",
+ ret, etws_enable);
+}
+#endif
+
+void item_ql_nw_set_service_error_cb(void)
+{
+ int ret = 0;
+
+ ret = ql_nw_set_service_error_cb(nw_service_error_cb);
+ if(ret != QL_ERR_OK)
+ {
+ printf("Failed to ql_nw_set_service_error_cb, ret=%d\n", ret);
+ }
+ else
+ {
+ printf("Sucessful\n");
+ }
+}
+
+
+static t_item_t ql_nw_items[] =
+{
+
+ {"ql_nw_init", item_ql_nw_init},
+// {"ql_nw_network_scan", item_ql_nw_network_scan},
+ {"ql_nw_set_power_mode", item_ql_nw_set_power_mode},
+// {"ql_nw_set_pref_nwmode_roaming", item_ql_nw_set_pref_nwmode_roaming},
+// {"ql_nw_get_pref_nwmode_roaming", item_ql_nw_get_pref_nwmode_roaming},
+// {"ql_nw_get_mobile_operator_name", item_ql_nw_get_mobile_operator_name},
+// {"ql_nw_get_cell_info", item_ql_nw_get_cell_info},
+ {"ql_nw_get_voice_reg_status", item_ql_nw_get_voice_reg_status},
+ {"ql_nw_get_data_reg_status", item_ql_nw_get_data_reg_status},
+ {"ql_nw_get_signal_strength", item_ql_nw_get_signal_strength},
+// {"ql_nw_get_cell_access_status", item_ql_nw_get_cell_access_status},
+// {"ql_nw_get_nitz_time_info", item_ql_nw_get_nitz_time_info},
+ {"ql_nw_set_voice_reg_ind_cb", item_ql_nw_set_voice_reg_ind_cb},
+// {"ql_nw_set_data_reg_ind_cb", item_ql_nw_set_data_reg_ind_cb},
+ {"ql_nw_set_signal_strength_chg_ind_cb", item_ql_nw_set_signal_strength_chg_ind_cb},
+// {"ql_nw_set_cell_access_status_chg_ind_cb", item_ql_nw_set_cell_access_status_chg_ind_cb},
+// {"ql_nw_set_nitz_time_update_ind_cb", item_ql_nw_set_nitz_time_update_ind_cb},
+// {"ql_nw_set_wea_alert_ind_cb", item_ql_nw_set_wea_alert_ind_cb},
+// {"ql_nw_wea_set_config", item_ql_nw_wea_set_config},
+// {"ql_nw_wea_get_config", item_ql_nw_wea_get_config},
+// {"ql_nw_set_etws_alert_ind_cb", item_ql_nw_set_etws_alert_ind_cb},
+// {"ql_nw_etws_set_config", item_ql_nw_etws_set_config},
+// {"ql_nw_etws_get_config", item_ql_nw_etws_get_config},
+ {"ql_nw_set_service_error_cb", item_ql_nw_set_service_error_cb},
+ {"ql_nw_deinit", item_ql_nw_deinit},
+};
+
+t_module_t ql_nw_module =
+{
+ "nw",
+ T_ARRAY_SIZE(ql_nw_items),
+ ql_nw_items
+};
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a int value from stdin
+ @param[out] val, Return read data
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int t_get_int(int *val)
+{
+ int dat;
+ char *ptr_end = NULL;
+ char buf[256] = {0};
+
+ if(NULL == fgets(buf, sizeof(buf)-1, stdin))
+ {
+ return -1;
+ }
+#if 0
+ if(0 == buf[0])
+ {
+ return -1;
+ }
+#endif
+ if(buf[0] == '\n')
+ {
+ return 1;
+ }
+
+ dat = strtol(buf, &ptr_end, 10);
+ if(ptr_end!=NULL && ptr_end[0]!='\n')
+ {
+ return -1;
+ }
+
+ if(val)
+ {
+ val[0] = dat;
+ }
+
+ return 0;
+}
+
+void dump_items()
+{
+ int i;
+
+ printf("\n");
+ printf("The current module is: \n");
+
+ for(i=0; i< ql_nw_module.item_len; i++)
+ {
+ printf("%d\t%s\n", i, ql_nw_module.item_list[i].name);
+ }
+ printf("-1\texit\n");
+}
+
+int main(int argc, char *argv[])
+{
+ int ret;
+ int idx;
+
+ dump_items();
+
+ while(1)
+ {
+ printf("Please enter your choice: ");
+ ret = t_get_int(&idx);
+ printf("\n");
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ continue;
+ }
+ else if(ret == 1)
+ {
+ dump_items();
+ continue;
+ }
+
+ if(idx == -1)
+ {
+ break;
+ }
+
+ if(idx<0 || idx>=ql_nw_module.item_len)
+ {
+ printf("Not support idx: %d\n", idx);
+ continue;
+ }
+
+ printf("->Item : %s\n", ql_nw_module.item_list[idx].name);
+ ql_nw_module.item_list[idx].handle();
+ }
+
+ return 0;
+}
+
diff --git a/mbtk/test/libql_lib_v2/ql_sim_test.c b/mbtk/test/libql_lib_v2/ql_sim_test.c
new file mode 100755
index 0000000..f71d93e
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_sim_test.c
@@ -0,0 +1,1886 @@
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @file ql_sim_test.h
+ @brief SIM service API
+*/
+/*-----------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ Copyright (c) 2024 mobiletek Wireless Solution, Co., Ltd. All Rights Reserved.
+ mobiletek Wireless Solution Proprietary and Confidential.
+-------------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ EDIT HISTORY
+ This section contains comments describing changes made to the file.
+ Notice that changes are listed in reverse chronological order.
+ $Header: $
+ when who what, where, why
+ -------- --------- -----------------------------------------------------------------
+ 20241022 yq.wang Created .
+-------------------------------------------------------------------------------------------------*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include "ql_type.h"
+#include "ql_sim.h"
+#include "ql_test_utils.h"
+
+
+static void item_ql_sim_init(void)
+{
+ int ret = 0;
+
+ printf("test ql_sim_init: ");
+ ret = ql_sim_init();
+ if(ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void item_ql_sim_deinit(void)
+{
+ int ret = 0;
+
+ printf("test ql_sim_deinit: ");
+ ret = ql_sim_deinit();
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void item_ql_sim_get_imsi(void)
+{
+ int ret = 0;
+ char imsi[QL_SIM_IMSI_LENGTH+1] = {0};
+ int input = 0;
+ QL_SIM_SLOT_E slot;
+ QL_SIM_APP_TYPE_E app_type;
+
+ printf("test ql_sim_get_imsi: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ printf("please enter app type(0-unknown, 1-3gpp, 2-3gpp2, 3-isim): ");
+ scanf("%d", &input);
+ getchar();
+ switch (input)
+ {
+ case 0:
+ app_type = QL_SIM_APP_TYPE_UNKNOWN;
+ break;
+ case 1:
+ app_type = QL_SIM_APP_TYPE_3GPP;
+ break;
+ case 2:
+ app_type = QL_SIM_APP_TYPE_3GPP2;
+ break;
+ case 3:
+ app_type = QL_SIM_APP_TYPE_ISIM;
+ break;
+ default:
+ printf("bad app type: %d\n", input);
+ return;
+ }
+
+ ret = ql_sim_get_imsi(slot, app_type, imsi, sizeof(imsi));
+ if (ret == QL_ERR_OK)
+ {
+ printf("IMSI: %s\n", imsi);
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void item_ql_sim_get_iccid(void)
+{
+ int ret = 0;
+ char iccid[QL_SIM_ICCID_LENGTH+1] = {0};
+ int input = 0;
+ QL_SIM_SLOT_E slot;
+
+ printf("test ql_sim_get_iccid: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ ret = ql_sim_get_iccid(slot, iccid, sizeof(iccid));
+ if (ret == QL_ERR_OK)
+ {
+ printf("ICCID: %s\n", iccid);
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void item_ql_sim_get_phone_num(void)
+{
+ int ret = 0;
+ char num[QL_SIM_PHONE_NUMBER_MAX+1] = {0};
+ int input = 0;
+ QL_SIM_SLOT_E slot;
+ QL_SIM_APP_TYPE_E app_type;
+
+ printf("test ql_sim_get_phone_num: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ printf("please enter app type(0-unknown, 1-3gpp, 2-3gpp2, 3-isim): ");
+ scanf("%d", &input);
+ getchar();
+ switch (input)
+ {
+ case 0:
+ app_type = QL_SIM_APP_TYPE_UNKNOWN;
+ break;
+ case 1:
+ app_type = QL_SIM_APP_TYPE_3GPP;
+ break;
+ case 2:
+ app_type = QL_SIM_APP_TYPE_3GPP2;
+ break;
+ case 3:
+ app_type = QL_SIM_APP_TYPE_ISIM;
+ break;
+ default:
+ printf("bad app type: %d\n", input);
+ return;
+ }
+
+ ret = ql_sim_get_phone_num(slot, app_type, num, sizeof(num));
+ if (ret == QL_ERR_OK)
+ {
+ printf("Phone number: %s\n", num);
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void print_ascii(char *prefix, char *postfix, char *ascii, int len)
+{
+ int i = 0;
+ printf("%s", prefix);
+ for (i = 0; i < len; i++)
+ {
+ putchar(ascii[i]);
+ }
+ printf("%s", postfix);
+}
+
+static void item_ql_sim_get_operators(void)
+{
+ int ret = 0;
+ ql_sim_operator_list_t list = {0};
+ int input = 0;
+ QL_SIM_SLOT_E slot;
+
+ printf("test ql_sim_get_operators: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ ret = ql_sim_get_operators(slot, &list);
+ if (ret == QL_ERR_OK)
+ {
+ if (0 == list.len)
+ {
+ printf("No operators found\n");
+ }
+ else
+ {
+ int i = 0;
+ printf("found %d opertators:\n", list.len);
+ for (i = 0; i < list.len; i++)
+ {
+ printf(" #%02d: ", i + 1);
+ print_ascii("MCC: ", "", list.operators[i].mcc, (int)sizeof(list.operators[i].mcc));
+ print_ascii(", MNC: ", "\n",list.operators[i].mnc, list.operators[i].mnc_len);
+ }
+ }
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void item_ql_sim_enable_pin(void)
+{
+ int ret = 0;
+ int len = 0;
+ char c;
+ char pin_value[QL_SIM_PIN_MAX*2] = {0};
+ int input = 0;
+ QL_SIM_SLOT_E slot;
+ QL_SIM_APP_TYPE_E app_type;
+ QL_SIM_PIN_E pin;
+
+ printf("test ql_sim_enable_pin: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ printf("please enter app type(0-unknown, 1-3gpp, 2-3gpp2, 3-isim): ");
+ scanf("%d", &input);
+ getchar();
+ switch (input)
+ {
+ case 0:
+ app_type = QL_SIM_APP_TYPE_UNKNOWN;
+ break;
+ case 1:
+ app_type = QL_SIM_APP_TYPE_3GPP;
+ break;
+ case 2:
+ app_type = QL_SIM_APP_TYPE_3GPP2;
+ break;
+ case 3:
+ app_type = QL_SIM_APP_TYPE_ISIM;
+ break;
+ default:
+ printf("bad app type: %d\n", input);
+ return;
+ }
+
+ printf("please enter pin(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ pin = QL_SIM_PIN_1;
+ }
+ else if (2 == input)
+ {
+ pin = QL_SIM_PIN_2;
+ }
+ else
+ {
+ printf("bad pin: %d\n", input);
+ return;
+ }
+
+ printf("please enter pin value(at most %d digit): ", QL_SIM_PIN_MAX);
+ if (NULL == fgets(pin_value, sizeof(pin_value), stdin))
+ {
+ printf("can not read pin value\n");
+ return;
+ }
+ len = strlen(pin_value);
+ if ('\n' == pin_value[len-1])
+ {
+ pin_value[len-1] = 0;
+ len--;
+ }
+ printf("pin value: %s\n", pin_value);
+
+ printf("proceed? [y/n]: ");
+ c = getchar();
+ if ('\n' != c)
+ {
+ getchar();
+ }
+ if ('Y' != c && 'y' != c)
+ {
+ printf("abort\n");
+ return;
+ }
+
+ ret = ql_sim_enable_pin(slot, app_type, pin, pin_value);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void item_ql_sim_disable_pin(void)
+{
+ int ret = 0;
+ int len = 0;
+ char c;
+ char pin_value[QL_SIM_PIN_MAX*2] = {0};
+ int input = 0;
+ QL_SIM_SLOT_E slot;
+ QL_SIM_APP_TYPE_E app_type;
+ QL_SIM_PIN_E pin;
+
+ printf("test ql_sim_disable_pin: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ printf("please enter app type(0-unknown, 1-3gpp, 2-3gpp2, 3-isim): ");
+ scanf("%d", &input);
+ getchar();
+ switch (input)
+ {
+ case 0:
+ app_type = QL_SIM_APP_TYPE_UNKNOWN;
+ break;
+ case 1:
+ app_type = QL_SIM_APP_TYPE_3GPP;
+ break;
+ case 2:
+ app_type = QL_SIM_APP_TYPE_3GPP2;
+ break;
+ case 3:
+ app_type = QL_SIM_APP_TYPE_ISIM;
+ break;
+ default:
+ printf("bad app type: %d\n", input);
+ return;
+ }
+
+ printf("please enter pin(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ pin = QL_SIM_PIN_1;
+ }
+ else if (2 == input)
+ {
+ pin = QL_SIM_PIN_2;
+ }
+ else
+ {
+ printf("bad pin: %d\n", input);
+ return;
+ }
+
+ printf("please enter pin value(at most %d digit): ", QL_SIM_PIN_MAX);
+ if (NULL == fgets(pin_value, sizeof(pin_value), stdin))
+ {
+ printf("can not read pin value\n");
+ return;
+ }
+ len = strlen(pin_value);
+ if ('\n' == pin_value[len-1])
+ {
+ pin_value[len-1] = 0;
+ len--;
+ }
+ printf("pin value: %s\n", pin_value);
+
+ printf("proceed? [y/n]: ");
+ c = getchar();
+ if ('\n' != c)
+ {
+ getchar();
+ }
+ if ('Y' != c && 'y' != c)
+ {
+ printf("abort\n");
+ return;
+ }
+
+ ret = ql_sim_disable_pin(slot, app_type, pin, pin_value);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void item_ql_sim_verify_pin(void)
+{
+ int ret = 0;
+ int len = 0;
+ char c;
+ char pin_value[QL_SIM_PIN_MAX*2] = {0};
+ int input = 0;
+ QL_SIM_SLOT_E slot;
+ QL_SIM_APP_TYPE_E app_type;
+ QL_SIM_PIN_E pin;
+
+ printf("test ql_sim_verify_pin: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ printf("please enter app type(0-unknown, 1-3gpp, 2-3gpp2, 3-isim): ");
+ scanf("%d", &input);
+ getchar();
+ switch (input)
+ {
+ case 0:
+ app_type = QL_SIM_APP_TYPE_UNKNOWN;
+ break;
+ case 1:
+ app_type = QL_SIM_APP_TYPE_3GPP;
+ break;
+ case 2:
+ app_type = QL_SIM_APP_TYPE_3GPP2;
+ break;
+ case 3:
+ app_type = QL_SIM_APP_TYPE_ISIM;
+ break;
+ default:
+ printf("bad app type: %d\n", input);
+ return;
+ }
+
+ printf("please enter pin(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ pin = QL_SIM_PIN_1;
+ }
+ else if (2 == input)
+ {
+ pin = QL_SIM_PIN_2;
+ }
+ else
+ {
+ printf("bad pin: %d\n", input);
+ return;
+ }
+
+ printf("please enter pin value(at most %d digit): ", QL_SIM_PIN_MAX);
+ if (NULL == fgets(pin_value, sizeof(pin_value), stdin))
+ {
+ printf("can not read pin value\n");
+ return;
+ }
+ len = strlen(pin_value);
+ if ('\n' == pin_value[len-1])
+ {
+ pin_value[len-1] = 0;
+ len--;
+ }
+ printf("pin value: %s\n", pin_value);
+
+ printf("proceed? [y/n]: ");
+ c = getchar();
+ if ('\n' != c)
+ {
+ getchar();
+ }
+ if ('Y' != c && 'y' != c)
+ {
+ printf("abort\n");
+ return;
+ }
+
+ ret = ql_sim_verify_pin(slot, app_type, pin, pin_value);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void item_ql_sim_change_pin(void)
+{
+ int ret = 0;
+ int old_len = 0;
+ int new_len = 0;
+ char c;
+ char old_pin_value[QL_SIM_PIN_MAX*2] = {0};
+ char new_pin_value[QL_SIM_PIN_MAX*2] = {0};
+ int input = 0;
+ QL_SIM_SLOT_E slot;
+ QL_SIM_APP_TYPE_E app_type;
+ QL_SIM_PIN_E pin;
+
+ printf("test ql_sim_change_pin: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ printf("please enter app type(0-unknown, 1-3gpp, 2-3gpp2, 3-isim): ");
+ scanf("%d", &input);
+ getchar();
+ switch (input)
+ {
+ case 0:
+ app_type = QL_SIM_APP_TYPE_UNKNOWN;
+ break;
+ case 1:
+ app_type = QL_SIM_APP_TYPE_3GPP;
+ break;
+ case 2:
+ app_type = QL_SIM_APP_TYPE_3GPP2;
+ break;
+ case 3:
+ app_type = QL_SIM_APP_TYPE_ISIM;
+ break;
+ default:
+ printf("bad app type: %d\n", input);
+ return;
+ }
+
+ printf("please enter pin(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ pin = QL_SIM_PIN_1;
+ }
+ else if (2 == input)
+ {
+ pin = QL_SIM_PIN_2;
+ }
+ else
+ {
+ printf("bad pin: %d\n", input);
+ return;
+ }
+
+ printf("please enter old pin value(at most %d digit): ", QL_SIM_PIN_MAX);
+ if (NULL == fgets(old_pin_value, sizeof(old_pin_value), stdin))
+ {
+ printf("can not read old pin value\n");
+ return;
+ }
+ old_len = strlen(old_pin_value);
+ if ('\n' == old_pin_value[old_len-1])
+ {
+ old_pin_value[old_len-1] = 0;
+ old_len--;
+ }
+
+ printf("please enter new pin value(at most %d digit): ", QL_SIM_PIN_MAX);
+ if (NULL == fgets(new_pin_value, sizeof(new_pin_value), stdin))
+ {
+ printf("can not read new pin value\n");
+ return;
+ }
+ new_len = strlen(new_pin_value);
+ if ('\n' == new_pin_value[new_len-1])
+ {
+ new_pin_value[new_len-1] = 0;
+ new_len--;
+ }
+ printf("old pin value: %s\n", old_pin_value);
+ printf("new pin value: %s\n", new_pin_value);
+
+ printf("proceed? [y/n]: ");
+ c = getchar();
+ if ('\n' != c)
+ {
+ getchar();
+ }
+ if ('Y' != c && 'y' != c)
+ {
+ printf("abort\n");
+ return;
+ }
+
+ ret = ql_sim_change_pin(slot, app_type, pin, old_pin_value, new_pin_value);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void item_ql_sim_unblock_pin(void)
+{
+ int ret = 0;
+ int len = 0;
+ int new_len = 0;
+ char c;
+ char puk_value[QL_SIM_PIN_MAX*2] = {0};
+ char new_pin_value[QL_SIM_PIN_MAX*2] = {0};
+ int input = 0;
+ QL_SIM_SLOT_E slot;
+ QL_SIM_APP_TYPE_E app_type;
+ QL_SIM_PIN_E pin;
+
+ printf("test ql_sim_unblock_pin: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ printf("please enter app type(0-unknown, 1-3gpp, 2-3gpp2, 3-isim): ");
+ scanf("%d", &input);
+ getchar();
+ switch (input)
+ {
+ case 0:
+ app_type = QL_SIM_APP_TYPE_UNKNOWN;
+ break;
+ case 1:
+ app_type = QL_SIM_APP_TYPE_3GPP;
+ break;
+ case 2:
+ app_type = QL_SIM_APP_TYPE_3GPP2;
+ break;
+ case 3:
+ app_type = QL_SIM_APP_TYPE_ISIM;
+ break;
+ default:
+ printf("bad app type: %d\n", input);
+ return;
+ }
+
+ printf("please enter pin(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ pin = QL_SIM_PIN_1;
+ }
+ else if (2 == input)
+ {
+ pin = QL_SIM_PIN_2;
+ }
+ else
+ {
+ printf("bad pin: %d\n", input);
+ return;
+ }
+
+ printf("please enter puk value(at most %d digit): ", QL_SIM_PIN_MAX);
+ if (NULL == fgets(puk_value, sizeof(puk_value), stdin))
+ {
+ printf("can not read old pin value\n");
+ return;
+ }
+ len = strlen(puk_value);
+ if ('\n' == puk_value[len-1])
+ {
+ puk_value[len-1] = 0;
+ len--;
+ }
+
+ printf("please enter new pin value(at most %d digit): ", QL_SIM_PIN_MAX);
+ if (NULL == fgets(new_pin_value, sizeof(new_pin_value), stdin))
+ {
+ printf("can not read new pin value\n");
+ return;
+ }
+ new_len = strlen(new_pin_value);
+ if ('\n' == new_pin_value[new_len-1])
+ {
+ new_pin_value[new_len-1] = 0;
+ new_len--;
+ }
+ printf(" puk value: %s\n", puk_value);
+ printf("new pin value: %s\n", new_pin_value);
+
+ printf("proceed? [y/n]: ");
+ c = getchar();
+ if ('\n' != c)
+ {
+ getchar();
+ }
+ if ('Y' != c && 'y' != c)
+ {
+ printf("abort\n");
+ return;
+ }
+
+ ret = ql_sim_unblock_pin(slot, app_type, pin, puk_value, new_pin_value);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static char *card_state_desc(QL_SIM_CARD_STATE_E state)
+{
+ switch (state)
+ {
+ case QL_SIM_CARD_STATE_UNKNOWN:
+ return "unknown";
+ case QL_SIM_CARD_STATE_ABSENT:
+ return "absent";
+ case QL_SIM_CARD_STATE_PRESENT:
+ return "present";
+ case QL_SIM_CARD_STATE_ERROR_UNKNOWN:
+ return "unknown error";
+ case QL_SIM_CARD_STATE_ERROR_POWER_DOWN:
+ return "power down";
+ case QL_SIM_CARD_STATE_ERROR_POLL_ERROR:
+ return "poll error";
+ case QL_SIM_CARD_STATE_ERROR_NO_ATR_RECEIVED:
+ return "failed to receive an answer to reset";
+ case QL_SIM_CARD_STATE_ERROR_VOLT_MISMATCH:
+ return "voltage mismatch";
+ case QL_SIM_CARD_STATE_ERROR_PARITY_ERROR:
+ return "parity error";
+ case QL_SIM_CARD_STATE_ERROR_SIM_TECHNICAL_PROBLEMS:
+ return "technical problems";
+ default:
+ return "N/A";
+ }
+}
+
+static char *card_type_desc(QL_SIM_CARD_TYPE_E type)
+{
+ switch (type)
+ {
+ case QL_SIM_CARD_TYPE_UNKNOWN:
+ return "unknown";
+ case QL_SIM_CARD_TYPE_ICC:
+ return "ICC";
+ case QL_SIM_CARD_TYPE_UICC:
+ return "UICC";
+ default:
+ return "N/A";
+ }
+}
+
+static char *card_subscription_desc(QL_SIM_SUBSCRIPTION_E subscription)
+{
+ switch (subscription)
+ {
+ case QL_SIM_SUBSCRIPTION_NONE:
+ return "nonprovisioning";
+ case QL_SIM_SUBSCRIPTION_PRI:
+ return "primary provisioning subscription";
+ case QL_SIM_SUBSCRIPTION_SEC:
+ return "secondary provisioning subscription";
+ default:
+ return "N/A";
+ }
+}
+
+static char *card_app_state_desc(QL_SIM_APP_STATE_E state)
+{
+ switch (state)
+ {
+ case QL_SIM_APP_STATE_UNKNOWN:
+ return "unknown";
+ case QL_SIM_APP_STATE_DETECTED:
+ return "detected";
+ case QL_SIM_APP_STATE_PIN1_REQ:
+ return "PIN1 required";
+ case QL_SIM_APP_STATE_PUK1_REQ:
+ return "PUK1 required";
+ case QL_SIM_APP_STATE_INITALIZATING:
+ return "initializing";
+ case QL_SIM_APP_STATE_PERSO_CK_REQ:
+ return "personalization control key required";
+ case QL_SIM_APP_STATE_PERSO_PUK_REQ:
+ return "personalization unblock key required";
+ case QL_SIM_APP_STATE_PERSO_PERMANENTLY_BLOCKED:
+ return "personalization is permanently blocked";
+ case QL_SIM_APP_STATE_PIN1_PERM_BLOCKED:
+ return "PIN1 is permanently blocked";
+ case QL_SIM_APP_STATE_ILLEGAL:
+ return "illegal";
+ case QL_SIM_APP_STATE_READY:
+ return "ready";
+ default:
+ return "N/A";
+ }
+}
+
+static char *card_perso_feature_desc(QL_SIM_PERSO_FEATURE_E feature)
+{
+ switch (feature)
+ {
+ case QL_SIM_PERSO_FEATURE_UNKNOWN:
+ return "unknown";
+ case QL_SIM_PERSO_FEATURE_3GPP_NETWORK:
+ return "featurization based on 3GPP MCC and MNC";
+ case QL_SIM_PERSO_FEATURE_3GPP_NETWORK_SUBSET:
+ return "featurization based on 3GPP MCC, MNC, and IMSI digits 6 and 7";
+ case QL_SIM_PERSO_FEATURE_3GPP_SERVICE_PROVIDER:
+ return "featurization based on 3GPP MCC, MNC, and GID1";
+ case QL_SIM_PERSO_FEATURE_3GPP_CORPORATE:
+ return "featurization based on 3GPP MCC, MNC, GID1, and GID2";
+ case QL_SIM_PERSO_FEATURE_3GPP_SIM:
+ return "featurization based on the 3GPP IMSI";
+ case QL_SIM_PERSO_FEATURE_3GPP2_NETWORK_TYPE_1:
+ return "featurization based on 3GPP2 MCC and MNC";
+ case QL_SIM_PERSO_FEATURE_3GPP2_NETWORK_TYPE_2:
+ return "featurization based on 3GPP2 IRM code";
+ case QL_SIM_PERSO_FEATURE_3GPP2_RUIM:
+ return "featurization based on 3GPP2 IMSI_M";
+ default:
+ return "N/A";
+ }
+}
+
+static char *card_pin_state_desc(QL_SIM_PIN_STATE_E state)
+{
+ switch (state)
+ {
+ case QL_SIM_PIN_STATE_UNKNOWN:
+ return "unknown";
+ case QL_SIM_PIN_STATE_ENABLED_NOT_VERIFIED:
+ return "PIN required, but has not been verified";
+ case QL_SIM_PIN_STATE_ENABLED_VERIFIED:
+ return "PIN required and has been verified";
+ case QL_SIM_PIN_STATE_DISABLED:
+ return "PIN not required";
+ case QL_SIM_PIN_STATE_BLOCKED:
+ return "PIN verification has failed too many times and is blocked. "
+ "Recoverable through PUK verification";
+ case QL_SIM_PIN_STATE_PERMANENTLY_BLOCKED:
+ return "PUK verification has failed too many times and is not recoverable";
+ default:
+ return "N/A";
+ }
+}
+
+
+static void item_ql_sim_get_card_info(void)
+{
+ int ret = 0;
+ ql_sim_card_info_t info = {0};
+ int input = 0;
+ QL_SIM_SLOT_E slot;
+
+ printf("test ql_sim_get_card_info: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ ret = ql_sim_get_card_info(slot, &info);
+ if (ret != QL_ERR_OK)
+ {
+ printf("failed, ret = %d\n", ret);
+ return;
+ }
+ printf("========= CARD INFO =========\n");
+ printf("state: %s\n", card_state_desc(info.state));
+ printf("type: %s\n", card_type_desc(info.type));
+ printf("3gpp:\n");
+ printf(" app state: %s\n", card_app_state_desc(info.app_3gpp.app_state));
+ printf(" PIN 1 retries: %hhu\n", info.app_3gpp.pin1_num_retries);
+ printf(" PUK 1 retries: %hhu\n", info.app_3gpp.puk1_num_retries);
+ printf(" PIN 2 retries: %hhu\n", info.app_3gpp.pin2_num_retries);
+ printf(" PUK 2 retries: %hhu\n", info.app_3gpp.puk2_num_retries);
+ printf("3gpp2:\n");
+ printf(" app state: %s\n", card_app_state_desc(info.app_3gpp2.app_state));
+ printf(" PIN 1 retries: %hhu\n", info.app_3gpp2.pin1_num_retries);
+ printf(" PUK 1 retries: %hhu\n", info.app_3gpp2.puk1_num_retries);
+ printf(" PIN 2 retries: %hhu\n", info.app_3gpp2.pin2_num_retries);
+ printf(" PUK 2 retries: %hhu\n", info.app_3gpp2.puk2_num_retries);
+ printf("isim:\n");
+ printf(" app state: %s\n", card_app_state_desc(info.app_isim.app_state));
+ printf(" PIN 1 retries: %hhu\n", info.app_isim.pin1_num_retries);
+ printf(" PUK 1 retries: %hhu\n", info.app_isim.puk1_num_retries);
+ printf(" PIN 2 retries: %hhu\n", info.app_isim.pin2_num_retries);
+ printf(" PUK 2 retries: %hhu\n", info.app_isim.puk2_num_retries);
+}
+
+#if 0
+static void item_ql_sim_read_file(void)
+{
+ int ret = 0;
+ int input = 0;
+ int len = 0;
+ QL_SIM_SLOT_E slot;
+ QL_SIM_APP_TYPE_E app_type;
+ ql_sim_file_t file = {0};
+
+ printf("test ql_sim_read_file: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ printf("please enter app type(0-unknown, 1-3gpp, 2-3gpp2, 3-isim): ");
+ scanf("%d", &input);
+ getchar();
+ switch (input)
+ {
+ case 0:
+ app_type = QL_SIM_APP_TYPE_UNKNOWN;
+ break;
+ case 1:
+ app_type = QL_SIM_APP_TYPE_3GPP;
+ break;
+ case 2:
+ app_type = QL_SIM_APP_TYPE_3GPP2;
+ break;
+ case 3:
+ app_type = QL_SIM_APP_TYPE_ISIM;
+ break;
+ default:
+ printf("bad app type: %d\n", input);
+ return;
+ }
+
+ printf("please enter file path(at most %d hex[0·9A-F], e.g 3F002FE2): ", QL_SIM_PATH_MAX);
+ if (NULL == fgets(file.path, QL_SIM_PATH_MAX, stdin))
+ {
+ printf("can not read file path\n");
+ return;
+ }
+ len = strlen(file.path);
+ if ('\n' == file.path[len-1])
+ {
+ file.path[len-1] = 0;
+ len--;
+ }
+ file.path_len = (uint32_t)len;
+
+ printf("please enter record index(0 for transparent access): ");
+ scanf("%hhu", (uint8_t *)&file.record_idx);
+ getchar();
+
+ ret = ql_sim_read_file(slot, app_type, &file);
+ if (ret == QL_ERR_OK)
+ {
+ printf("data length: %u\n", file.data_len);
+ uint32_t i = 0;
+ printf("data: ");
+ for (i = 0; i < file.data_len; i++)
+ {
+ printf("%02x ", file.data[i]);
+ }
+ printf("\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void item_ql_sim_write_file(void)
+{
+ int ret = 0;
+ int input = 0;
+ int len = 0;
+ uint8_t v;
+ QL_SIM_SLOT_E slot;
+ QL_SIM_APP_TYPE_E app_type;
+ ql_sim_file_t file = {0};
+
+ printf("test ql_sim_write_file: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ printf("please enter app type(0-unknown, 1-3gpp, 2-3gpp2, 3-isim): ");
+ scanf("%d", &input);
+ getchar();
+ switch (input)
+ {
+ case 0:
+ app_type = QL_SIM_APP_TYPE_UNKNOWN;
+ break;
+ case 1:
+ app_type = QL_SIM_APP_TYPE_3GPP;
+ break;
+ case 2:
+ app_type = QL_SIM_APP_TYPE_3GPP2;
+ break;
+ case 3:
+ app_type = QL_SIM_APP_TYPE_ISIM;
+ break;
+ default:
+ printf("bad app type: %d\n", input);
+ return;
+ }
+
+ printf("please enter file path(at most %d hex[0·9A-F], e.g 3F002FE2): ", QL_SIM_PATH_MAX);
+ if (NULL == fgets(file.path, QL_SIM_PATH_MAX, stdin))
+ {
+ printf("can not read file path\n");
+ return;
+ }
+ len = strlen(file.path);
+ if ('\n' == file.path[len-1])
+ {
+ file.path[len-1] = 0;
+ len--;
+ }
+ file.path_len = (uint32_t)len;
+
+ printf("please enter record index(0 for transparent access): ");
+ scanf("%hhu", (uint8_t *)&file.record_idx);
+ getchar();
+
+ printf("please enter data(hex, end with `q'): ");
+ while (1 == scanf("%hhx", &v))
+ {
+ file.data[file.data_len++] = v;
+ }
+ getchar(); // read `q'
+ getchar(); // read '\n'
+
+ printf("please enter data offset: ");
+ scanf("%hu", &file.offset);
+ getchar();
+
+ ret = ql_sim_write_file(slot, app_type, &file);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static char *file_type_desc(QL_SIM_FILE_TYPE_E type)
+{
+ switch (type)
+ {
+ case QL_SIM_FILE_TYPE_UNKNOWN:
+ return "unknown";
+ case QL_SIM_FILE_TYPE_TRANSPARENT:
+ return "transparent";
+ case QL_SIM_FILE_TYPE_CYCLIC:
+ return "cyclic";
+ case QL_SIM_FILE_TYPE_LINEAR_FIXED:
+ return "linear fixed";
+ default:
+ return "N/A";
+ }
+}
+
+static void item_ql_sim_get_file_info(void)
+{
+ int ret = 0;
+ int input = 0;
+ int len = 0;
+ QL_SIM_SLOT_E slot;
+ QL_SIM_APP_TYPE_E app_type;
+ ql_sim_file_info_t info = {0};
+
+ printf("test ql_sim_get_file_info: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ printf("please enter app type(0-unknown, 1-3gpp, 2-3gpp2, 3-isim): ");
+ scanf("%d", &input);
+ getchar();
+ switch (input)
+ {
+ case 0:
+ app_type = QL_SIM_APP_TYPE_UNKNOWN;
+ break;
+ case 1:
+ app_type = QL_SIM_APP_TYPE_3GPP;
+ break;
+ case 2:
+ app_type = QL_SIM_APP_TYPE_3GPP2;
+ break;
+ case 3:
+ app_type = QL_SIM_APP_TYPE_ISIM;
+ break;
+ default:
+ printf("bad app type: %d\n", input);
+ return;
+ }
+
+ printf("please enter file path(at most %d hex[0·9A-F], e.g 3F002FE2): ", QL_SIM_PATH_MAX);
+ if (NULL == fgets(info.path, QL_SIM_PATH_MAX, stdin))
+ {
+ printf("can not read file path\n");
+ return;
+ }
+ len = strlen(info.path);
+ if ('\n' == info.path[len-1])
+ {
+ info.path[len-1] = 0;
+ len--;
+ }
+ info.path_len = (uint32_t)len;
+
+ ret = ql_sim_get_file_info(slot, app_type, &info);
+ if (ret == QL_ERR_OK)
+ {
+ printf("========= FILE INFO =========\n");
+ printf("path: %s\n", info.path);
+ printf("type: %s\n", file_type_desc(info.file_type));
+ printf("file size: %hu\n", info.file_size);
+ printf("record size: %hu\n", info.record_size);
+ printf("record count: %hu\n", info.record_count);
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void item_ql_sim_read_phone_book(void)
+{
+ int ret = 0;
+ int input = 0;
+ QL_SIM_SLOT_E slot;
+ QL_SIM_APP_TYPE_E app_type;
+ uint8_t record_idx = 0;
+ ql_sim_phone_book_record_t record;
+
+ memset(&record,0,sizeof(ql_sim_phone_book_record_t));
+ printf("test ql_sim_read_phone_book: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ printf("please enter app type(0-unknown, 1-3gpp, 2-3gpp2, 3-isim): ");
+ scanf("%d", &input);
+ getchar();
+ switch (input)
+ {
+ case 0:
+ app_type = QL_SIM_APP_TYPE_UNKNOWN;
+ break;
+ case 1:
+ app_type = QL_SIM_APP_TYPE_3GPP;
+ break;
+ case 2:
+ app_type = QL_SIM_APP_TYPE_3GPP2;
+ break;
+ case 3:
+ app_type = QL_SIM_APP_TYPE_ISIM;
+ break;
+ default:
+ printf("bad app type: %d\n", input);
+ return;
+ }
+
+ printf("please enter record index: ");
+ scanf("%hhu", &record_idx);
+ getchar();
+
+
+ ret = ql_sim_read_phone_book(slot, app_type, QL_SIM_PB_DEFAULT_PATH, record_idx, &record);
+ if (ret == QL_ERR_OK)
+ {
+ printf("Name: %s\n", record.name);
+ printf("Number: %s\n", record.number);
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void item_ql_sim_write_phone_book(void)
+{
+ int ret = 0;
+ int input = 0;
+ int len = 0;
+ QL_SIM_SLOT_E slot;
+ QL_SIM_APP_TYPE_E app_type;
+ uint8_t record_idx = 0;
+ ql_sim_phone_book_record_t record;
+
+ memset(&record,0,sizeof(ql_sim_phone_book_record_t));
+ printf("test ql_sim_write_phone_book: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ printf("please enter app type(0-unknown, 1-3gpp, 2-3gpp2, 3-isim): ");
+ scanf("%d", &input);
+ getchar();
+ switch (input)
+ {
+ case 0:
+ app_type = QL_SIM_APP_TYPE_UNKNOWN;
+ break;
+ case 1:
+ app_type = QL_SIM_APP_TYPE_3GPP;
+ break;
+ case 2:
+ app_type = QL_SIM_APP_TYPE_3GPP2;
+ break;
+ case 3:
+ app_type = QL_SIM_APP_TYPE_ISIM;
+ break;
+ default:
+ printf("bad app type: %d\n", input);
+ return;
+ }
+
+ printf("please enter record index: ");
+ scanf("%hhu", &record_idx);
+ getchar();
+
+ printf("please enter name(at most %d chars): ", QL_SIM_PHONE_BOOK_NAME_MAX - 1);
+ if (NULL == fgets(record.name, QL_SIM_PHONE_BOOK_NAME_MAX, stdin))
+ {
+ printf("\nname will be set to 0\n");
+ }
+ else
+ {
+ len = strlen(record.name);
+ if ('\n' == record.name[len-1])
+ {
+ record.name[len-1] = 0;
+ }
+ }
+
+
+ printf("please enter number(at most %d digits): ", QL_SIM_PHONE_BOOK_NUMBER_MAX - 1);
+ if (NULL == fgets(record.number, QL_SIM_PHONE_BOOK_NUMBER_MAX, stdin))
+ {
+ printf("\nnumber will be set to 0\n");
+ }
+ else
+ {
+ len = strlen(record.number);
+ if ('\n' == record.number[len-1])
+ {
+ record.number[len-1] = 0;
+ }
+ }
+
+ ret = ql_sim_write_phone_book(slot, app_type, QL_SIM_PB_DEFAULT_PATH, record_idx, &record);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void item_ql_sim_open_logical_channel(void)
+{
+ int ret = 0;
+ int input = 0;
+ QL_SIM_SLOT_E slot;
+ uint8_t channel_id = 0;
+
+ printf("test ql_sim_open_logical_channel: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ ret = ql_sim_open_logical_channel(slot, &channel_id);
+ if (ret == QL_ERR_OK)
+ {
+ printf("channel id: %hhu\n", channel_id);
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void item_ql_sim_close_logical_channel(void)
+{
+ int ret = 0;
+ int input = 0;
+ QL_SIM_SLOT_E slot;
+ uint8_t channel_id = 0;
+
+ printf("test ql_sim_close_logical_channel: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+
+ printf("please enter channel id: ");
+ scanf("%hhu", &channel_id);
+ getchar();
+
+ ret = ql_sim_close_logical_channel(slot, channel_id);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+static void item_ql_sim_send_apdu(void)
+{
+ int ret = 0;
+ int input = 0;
+ uint8_t v = 0;
+ QL_SIM_SLOT_E slot;
+ ql_sim_apdu_t *p_apdu = NULL;
+ uint8_t channel_id = 0;
+
+ printf("test ql_sim_send_apdu: \n");
+
+ p_apdu = calloc(1, sizeof(*p_apdu));
+ if (NULL == p_apdu)
+ {
+ printf("run out of memory\n");
+ return;
+ }
+
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ slot = QL_SIM_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ slot = QL_SIM_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ free(p_apdu);
+ p_apdu = NULL;
+ return;
+ }
+
+ printf("please enter channel id: ");
+ scanf("%hhu", &channel_id);
+ getchar();
+
+ printf("please enter apdu data(hex, end with `q'): ");
+ while (1 == scanf("%hhx", &v))
+ {
+ p_apdu->req_apdu[p_apdu->req_apdu_len++] = v;
+ }
+ getchar(); // read `q'
+ getchar(); // read '\n'
+
+ ret = ql_sim_send_apdu(slot, channel_id, p_apdu);
+ if (ret == QL_ERR_OK)
+ {
+ uint32_t i = 0;
+ printf("repsonse apdu: ");
+ for (i = 0; i < p_apdu->resp_apdu_len; i++)
+ {
+ printf("%c", p_apdu->resp_apdu[i]);
+ }
+ printf("\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+ free(p_apdu);
+ p_apdu = NULL;
+}
+#endif
+
+static void sim_card_status_cb(int slot, ql_sim_card_info_t *p_info)
+{
+ printf("========= CARD STATUS =========\n");
+ switch (slot)
+ {
+ case 0:
+ printf("slot: invalid\n");
+ break;
+ case 1:
+ printf("slot: 1\n");
+ break;
+ case 2:
+ printf("slot: 2\n");
+ break;
+ }
+
+ if (NULL == p_info)
+ {
+ printf("status: unavailable\n");
+ return;
+ }
+
+ printf("state: %s\n", card_state_desc(p_info->state));
+ printf("type: %s\n", card_type_desc(p_info->type));
+ printf("3gpp:\n");
+ printf(" app state: %s\n", card_app_state_desc(p_info->app_3gpp.app_state));
+ printf(" PIN 1 retries: %hhu\n", p_info->app_3gpp.pin1_num_retries);
+ printf(" PUK 1 retries: %hhu\n", p_info->app_3gpp.puk1_num_retries);
+ printf(" PIN 2 retries: %hhu\n", p_info->app_3gpp.pin2_num_retries);
+ printf(" PUK 2 retries: %hhu\n", p_info->app_3gpp.puk2_num_retries);
+ printf("3gpp2:\n");
+ printf(" app state: %s\n", card_app_state_desc(p_info->app_3gpp2.app_state));
+ printf(" PIN 1 retries: %hhu\n", p_info->app_3gpp2.pin1_num_retries);
+ printf(" PUK 1 retries: %hhu\n", p_info->app_3gpp2.puk1_num_retries);
+ printf(" PIN 2 retries: %hhu\n", p_info->app_3gpp2.pin2_num_retries);
+ printf(" PUK 2 retries: %hhu\n", p_info->app_3gpp2.puk2_num_retries);
+ printf("isim:\n");
+ printf(" app state: %s\n", card_app_state_desc(p_info->app_isim.app_state));
+ printf(" PIN 1 retries: %hhu\n", p_info->app_isim.pin1_num_retries);
+ printf(" PUK 1 retries: %hhu\n", p_info->app_isim.puk1_num_retries);
+ printf(" PIN 2 retries: %hhu\n", p_info->app_isim.pin2_num_retries);
+ printf(" PUK 2 retries: %hhu\n", p_info->app_isim.puk2_num_retries);
+}
+
+static void item_ql_sim_set_card_status_cb(void)
+{
+ int ret = 0;
+
+ printf("test ql_sim_set_card_status_cb: ");
+ ret = ql_sim_set_card_status_cb((ql_sim_card_status_cb_f)sim_card_status_cb);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+void sim_servicie_error_cb(int error)
+{
+ printf("===== SIM Service Abort =====\n");
+}
+
+void item_ql_sim_set_service_error_cb(void)
+{
+ int ret = 0;
+ printf("test ql_sim_set_service_error_cb: \n");
+
+ ret = ql_sim_set_service_error_cb(sim_servicie_error_cb);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+#if 0
+void item_ql_sim_switch_slot(void)
+{
+ int ret = 0;
+ int input = 0;
+ QL_SIM_PHY_SLOT_E phy_slot = 0;
+ printf("test item_ql_sim_switch_slot: \n");
+ printf("please enter slot(1 or 2): ");
+ scanf("%d", &input);
+ getchar();
+ if (1 == input)
+ {
+ phy_slot = QL_SIM_PHY_SLOT_1;
+ }
+ else if (2 == input)
+ {
+ phy_slot = QL_SIM_PHY_SLOT_2;
+ }
+ else
+ {
+ printf("bad slot: %d\n", input);
+ return;
+ }
+ ret = ql_sim_switch_slot(QL_SIM_SLOT_1, phy_slot);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+}
+
+void item_ql_sim_get_active_slots(void)
+{
+ int ret = 0;
+ ql_sim_active_slots_t *p_active_slots = (ql_sim_active_slots_t *)malloc(sizeof(ql_sim_active_slots_t));
+ if (p_active_slots == NULL) {
+ printf("Memory allocation failed.\n");
+ return -1;
+ }
+ p_active_slots->active_slots_len = 0;
+ p_active_slots->active_slots[0] = 0;
+ printf("test item_ql_sim_get_active_slots: \n");
+ ret = ql_sim_get_active_slots(p_active_slots);
+ if (ret == QL_ERR_OK)
+ {
+ printf("ok\n");
+ printf("p_active_slots(QL_SIM_PHY_SLOT_1/2 = B01/B02) = %X \n",p_active_slots->active_slots[0]);
+ }
+ else
+ {
+ printf("failed, ret = %d\n", ret);
+ }
+ free(p_active_slots);
+}
+#endif
+
+static t_item_t ql_sim_items[] =
+{
+ {"ql_sim_init", item_ql_sim_init},
+ {"ql_sim_get_imsi", item_ql_sim_get_imsi},
+ {"ql_sim_get_iccid", item_ql_sim_get_iccid},
+ {"ql_sim_get_phone_num", item_ql_sim_get_phone_num},
+ {"ql_sim_get_operators", item_ql_sim_get_operators},
+ {"ql_sim_enable_pin", item_ql_sim_enable_pin},
+ {"ql_sim_disable_pin", item_ql_sim_disable_pin},
+ {"ql_sim_verify_pin", item_ql_sim_verify_pin},
+ {"ql_sim_change_pin", item_ql_sim_change_pin},
+ {"ql_sim_unblock_pin", item_ql_sim_unblock_pin},
+ {"ql_sim_get_card_info", item_ql_sim_get_card_info},
+// {"ql_sim_read_file", item_ql_sim_read_file},
+// {"ql_sim_write_file", item_ql_sim_write_file},
+// {"ql_sim_get_file_info", item_ql_sim_get_file_info},
+// {"ql_sim_read_phone_book", item_ql_sim_read_phone_book},
+// {"ql_sim_write_phone_book", item_ql_sim_write_phone_book},
+// {"ql_sim_open_logical_channel", item_ql_sim_open_logical_channel},
+// {"ql_sim_close_logical_channel", item_ql_sim_close_logical_channel},
+// {"ql_sim_send_apdu", item_ql_sim_send_apdu},
+ {"ql_sim_set_card_status_cb", item_ql_sim_set_card_status_cb},
+ {"ql_sim_set_service_error_cb", item_ql_sim_set_service_error_cb},
+// {"ql_sim_switch_slot", item_ql_sim_switch_slot},
+// {"ql_sim_get_active_slots", item_ql_sim_get_active_slots},
+ {"ql_sim_deinit", item_ql_sim_deinit},
+};
+
+t_module_t ql_sim_module =
+{
+ "sim",
+ T_ARRAY_SIZE(ql_sim_items),
+ ql_sim_items
+};
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a int value from stdin
+ @param[out] val, Return read data
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int t_get_int(int *val)
+{
+ int dat;
+ char *ptr_end = NULL;
+ char buf[256] = {0};
+
+ if(NULL == fgets(buf, sizeof(buf)-1, stdin))
+ {
+ return -1;
+ }
+#if 0
+ if(0 == buf[0])
+ {
+ return -1;
+ }
+#endif
+ if(buf[0] == '\n')
+ {
+ return 1;
+ }
+
+ dat = strtol(buf, &ptr_end, 10);
+ if(ptr_end!=NULL && ptr_end[0]!='\n')
+ {
+ return -1;
+ }
+
+ if(val)
+ {
+ val[0] = dat;
+ }
+
+ return 0;
+}
+
+void dump_items()
+{
+ int i;
+
+ printf("\n");
+ printf("The current module is: \n");
+
+ for(i=0; i< ql_sim_module.item_len; i++)
+ {
+ printf("%d\t%s\n", i, ql_sim_module.item_list[i].name);
+ }
+ printf("-1\texit\n");
+}
+
+int main(int argc, char *argv[])
+{
+ int ret;
+ int idx;
+
+ dump_items();
+
+ while(1)
+ {
+ printf("Please enter your choice: ");
+ ret = t_get_int(&idx);
+ printf("\n");
+ if(ret < 0)
+ {
+ printf("Invalid input\n");
+ continue;
+ }
+ else if(ret == 1)
+ {
+ dump_items();
+ continue;
+ }
+
+ if(idx == -1)
+ {
+ break;
+ }
+
+ if(idx<0 || idx>=ql_sim_module.item_len)
+ {
+ printf("Not support idx: %d\n", idx);
+ continue;
+ }
+
+ printf("->Item : %s\n", ql_sim_module.item_list[idx].name);
+ ql_sim_module.item_list[idx].handle();
+ }
+
+ return 0;
+}
+
+
+
diff --git a/mbtk/test/libql_lib_v2/ql_sleep_wakelock_test.c b/mbtk/test/libql_lib_v2/ql_sleep_wakelock_test.c
new file mode 100755
index 0000000..0303c72
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_sleep_wakelock_test.c
@@ -0,0 +1,157 @@
+#include "ql_sleep_wakelock.h"
+#include "ql_lpm.h"
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stddef.h>
+#include "mbtk_type.h"
+#include "mbtk_log.h"
+
+static void ql_lpm_handler(ql_lpm_edge_t edge_state)
+{
+ printf("this is ql_lpm_handler, edge_state=%d\n", edge_state);
+}
+
+int main(int argc, char *argv[])
+{
+ char operator[10];
+ int opt;
+ int lv_voll = 0;
+ int fd_t;
+ mbtk_log_init("radio", "SLEEP_TEST");
+
+ printf("=========ql sleep main=========\n"
+ "\t0 exit\n"
+ "\t1 autosuspend enable\n"
+ "\t2 wakelock create\n"
+ "\t3 wakelock lock\n"
+ "\t4 wakelock unlock\n"
+ "\t5 wakelock destroy\n"
+ "\t6 lpm init\n"
+ "\t7 lpm deinit\n"
+ "operator: >> \n");
+
+ while(1)
+ {
+ fgets(operator, sizeof(operator), stdin);
+ fflush(stdin);
+ opt = atoi(operator);
+ switch (opt)
+ {
+ case 0:
+ printf("main exit\n");
+ return 0;
+ case 1:
+ {
+ printf(">>>>>Input 0 or 1<<<<<\n");
+ char tmp_en[4]={0};
+ memset(tmp_en, 0x00, sizeof(tmp_en));
+ fgets(tmp_en, sizeof(tmp_en)-1, stdin);
+ fflush(stdin);
+
+ if (tmp_en[0] == '0' || tmp_en[0] == '1')
+ ql_autosleep_enable(tmp_en[0]);
+ else
+ printf(">>>>>re Input 0 or 1 error<<<<<\n");
+ }
+ break;
+ case 2:
+ {
+ printf(">>>>>Input name<<<<<\n");
+ char t_name[64]={0};
+ int len_name;
+ char tmp_c[64]={0};
+ memset(tmp_c, 0x00, sizeof(tmp_c));
+ fgets(tmp_c, sizeof(tmp_c)-1, stdin);
+ fflush(stdin);
+ len_name = strlen(tmp_c)-1;
+ strncpy(t_name, tmp_c, len_name);
+ printf(">>>>>name=[%s] name_len=[%d]<<<<<\n",t_name, len_name);
+
+ fd_t = ql_slp_wakelock_create(t_name, len_name);
+ if (fd_t == -1)
+ {
+ printf(">>>>>Output error =[%d]<<<<<\n",fd_t);
+ }
+ else
+ {
+ printf(">>>>>Output ID NUM =[%d]<<<<<\n",fd_t);
+ }
+ }
+ break;
+ case 3:
+ {
+ printf(">>>>>Input ID NUM<<<<<\n");
+ char tmp_l[127]={0};
+ fgets(tmp_l, sizeof(tmp_l), stdin);
+ fflush(stdin);
+ fd_t = atoi(tmp_l);
+ fd_t = ql_slp_wakelock_lock(fd_t);
+ if (fd_t == -1)
+ {
+ printf(">>>>>Output error =[%d]<<<<<\n",fd_t);
+ }
+ else
+ {
+ printf(">>>>>Output succuess<<<<<\n");
+ }
+ }
+ break;
+ case 4:
+ {
+ printf(">>>>>Input ID NUM<<<<<\n");
+ char tmp_ul[127]={0};
+ memset(tmp_ul, 0x00, sizeof(tmp_ul));
+ fgets(tmp_ul, sizeof(tmp_ul)-1, stdin);
+ fflush(stdin);
+ fd_t = atoi(tmp_ul);
+ fd_t = ql_slp_wakelock_unlock(fd_t);
+ if (fd_t == -1)
+ {
+ printf(">>>>>Output error =[%d]<<<<<\n",fd_t);
+ }
+ else
+ {
+ printf(">>>>>Output succuess<<<<<\n");
+ }
+ }
+ break;
+ case 5:
+ {
+ printf(">>>>>Input ID NUM<<<<<\n");
+ char tmp_d[127]={0};
+ memset(tmp_d, 0x00, sizeof(tmp_d));
+ fgets(tmp_d, sizeof(tmp_d)-1, stdin);
+ fflush(stdin);
+ fd_t = atoi(tmp_d);
+ fd_t = ql_slp_wakelock_destroy(fd_t);
+ if (fd_t == -1)
+ {
+ printf(">>>>>Output error =[%d]<<<<<\n",fd_t);
+ }
+ else
+ {
+ printf(">>>>>Output succuess<<<<<\n");
+ }
+ }
+ break;
+ case 6:
+ {
+ int ret;
+ ret = ql_lpm_init(ql_lpm_handler);
+ printf("ql lpm init, ret: %d\n", ret);
+ }
+ break;
+ case 7:
+ ql_lpm_deinit();
+ break;
+
+ default:
+ break;
+ }
+
+ }
+
+ return 0;
+}
+
diff --git a/mbtk/test/libql_lib_v2/ql_sms_test.c b/mbtk/test/libql_lib_v2/ql_sms_test.c
new file mode 100755
index 0000000..1ebdde2
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_sms_test.c
@@ -0,0 +1,162 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include "ql_sms.h"
+#include "mbtk_log.h"
+
+
+
+void sms_msg_recv_cb(ql_sms_msg_t *p_msg, ql_sms_timestamp_t *timestamp,
+ ql_sms_user_data_head_t *head)
+{
+ printf("sms_msg_recv_cb succeess!\n");
+ printf("format: %d, addr:%s, content_size:%d, content:%s\n", p_msg->format, p_msg->addr, p_msg->content_size, p_msg->content);
+ printf("timestamp: %d-%d-%d %d:%d:%d\n", timestamp->year, timestamp->month, timestamp->day, timestamp->hours, timestamp->minutes, timestamp->seconds);
+}
+
+void sms_servicie_error_cb(int error)
+{
+ printf("===== SMS Service Abort =====\n");
+}
+
+void sms_msg_async_cb_f(int id, int result)
+{
+ printf("===== sms_msg_recv_cb =====\n");
+}
+
+
+
+
+int main(int argc, char *argv[])
+{
+ char operator[10];
+ int opt;
+ int ret;
+// int sms;
+// int direction;
+// int value;
+// int pullsel;
+
+ mbtk_log_init("radio", "SMS_TEST");
+
+ printf("=========ql sms main=========\n"
+ "\t0 exit\n"
+ "\t1 sms init\n"
+ "\t2 sms deinit\n"
+ "\t3 sms set msg recv cb\n"
+ "\t4 sms set ser error cb\n"
+ "\t5 sms send msg async\n"
+ "operator: >> \n");
+
+ while(1)
+ {
+ memset(operator, 0, sizeof(operator));
+ if(NULL == fgets(operator, sizeof(operator), stdin))
+ break;
+ fflush(stdin);
+ opt = atoi(operator);
+ switch (opt)
+ {
+ case 0:
+ printf("main exit\n");
+ return 0;
+ case 1:
+ {
+ printf(">>>>>sms init\n");
+ ret = ql_sms_init();
+ if(ret != 0)
+ {
+ printf("ql_sms_init fail\n");
+ }
+ else
+ {
+ printf("ql_sms_init success\n");
+ }
+ }
+ break;
+ case 2:
+ {
+ printf(">>>>>sms uninit\n");
+
+ ret = ql_sms_deinit();
+ if(ret != 0)
+ {
+ printf("ql_sms_uninit fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("ql_sms_uninit success\n");
+
+ }
+ }
+ break;
+ case 3:
+ {
+ printf(">>>>>Input set recv cb<<<<<\n");
+
+ ret = ql_sms_set_msg_recv_cb(sms_msg_recv_cb);
+ if(ret != 0)
+ {
+ printf("ql_sms_set_msg_recv_cb fail\n");
+ }
+ else
+ {
+ printf("ql_sms_set_msg_recv_cb success\n");
+ }
+
+ }
+ break;
+ case 4:
+ {
+ printf(">>>>>Input set ser cb<<<<<\n");
+
+ ret = ql_sms_set_service_error_cb(sms_servicie_error_cb);
+ if(ret < 0)
+ {
+ printf("ql_sms_set_service_error_cb fail\n");
+ }
+ else
+ {
+ printf("ql_sms_set_service_error_cb success\n");
+ }
+
+ }
+ break;
+ case 5:
+ {
+ printf(">>>>>Input send msg<<<<<\n");
+
+ ql_sms_msg_t sms_msg = {0};
+ int id = 0;
+ char addr[128] = "19130850401";
+ char content[128] = "hello";
+ sms_msg.format = 1;
+ memcpy(sms_msg.addr, addr, strlen(addr));
+ sms_msg.content_size = strlen(content);
+ memcpy(sms_msg.content, content, strlen(content));
+
+
+ ret = ql_sms_send_msg_async(&sms_msg, &id, sms_msg_async_cb_f);
+ if(ret < 0)
+ {
+ printf("ql_sms_send_msg_async fail\n");
+ }
+ else
+ {
+ printf("ql_sms_send_msg_async success\n");
+ }
+ }
+ break;
+
+
+ default:
+ break;
+ }
+
+ }
+
+ return 0;
+
+}
diff --git a/mbtk/test/libql_lib_v2/ql_test_abfota.c b/mbtk/test/libql_lib_v2/ql_test_abfota.c
new file mode 100755
index 0000000..04ef676
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_test_abfota.c
@@ -0,0 +1,570 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <unistd.h>
+#include <time.h>
+#include <errno.h>
+#include <pthread.h>
+#include "ql_fota_api.h"
+#include "fota_info.h"
+#include "ql_fota.h"
+//#include "ql_fota_log.h"
+#include "ql_absys_api.h"
+//#include "test_utils.h"
+
+
+typedef void (*item_handler_f)(void);
+typedef int (*init_handler_f)(void);
+typedef int (*deinit_handler_f)(void);
+
+
+#define T_ARRAY_SIZE(items) (sizeof(items)/sizeof(items[0]))
+
+typedef struct
+{
+ const char *name;
+ item_handler_f handle;
+} t_item_t;
+
+typedef struct
+{
+ const char *name;
+ int item_len;
+ t_item_t *item_list;
+} t_module_t;
+
+typedef struct
+{
+ const char *name;
+ init_handler_f init_handle;
+ deinit_handler_f deinit_handle;
+} t_init_t;
+
+int t_get_int(int *val);
+int t_get_hex(uint32_t *val);
+int t_get_char(int *val);
+int t_get_string(char *str_buf, int str_len);
+int t_get_int_list(int *dat_buf, int *dat_len);
+int t_get_float_list(float *dat_buf, int *dat_len);
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a int value from stdin
+ @param[out] val, Return read data
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int t_get_int(int *val)
+{
+ int dat;
+ char *ptr_end = NULL;
+ char buf[256] = {0};
+
+ if(NULL == fgets(buf, sizeof(buf)-1, stdin))
+ {
+ return -1;
+ }
+
+ if(0 == buf[0])
+ {
+ return -1;
+ }
+
+ if(buf[0] == '\n')
+ {
+ return 1;
+ }
+
+ dat = strtol(buf, &ptr_end, 10);
+ if(ptr_end!=NULL && ptr_end[0]!='\n')
+ {
+ return -1;
+ }
+
+ if(val)
+ {
+ val[0] = dat;
+ }
+
+ return 0;
+}
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a uint32 value from stdin
+ @param[out] val, Return read data
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int t_get_hex(uint32_t *val)
+{
+ int dat;
+ char *ptr_end = NULL;
+ char buf[256] = {0};
+
+ if(fgets(buf, sizeof(buf)-1, stdin) == NULL)
+ {
+ return -1;
+ }
+
+ if(0 == buf[0])
+ {
+ return -1;
+ }
+
+ if(buf[0] == '\n')
+ {
+ return 1;
+ }
+
+ dat = strtol(buf, &ptr_end, 16);
+ if(ptr_end!=NULL && ptr_end[0]!='\n')
+ {
+ return -1;
+ }
+
+ if(val)
+ {
+ val[0] = dat;
+ }
+
+ return 0;
+}
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a char value from stdin
+ @param[out] val, Return read data
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int t_get_char(int *val)
+{
+ char buf[256] = {0};
+
+ if(fgets(buf, sizeof(buf)-1, stdin) == NULL)
+ {
+ return -1;
+ }
+
+ if(0 == buf[0])
+ {
+ return -1;
+ }
+
+ if(buf[0] == '\n')
+ {
+ return 1;
+ }
+
+ if(buf[1]!='\n')
+ {
+ return -1;
+ }
+
+ if(val)
+ {
+ val[0] = buf[0];
+ }
+
+ return 0;
+}
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a string value from stdin
+ @param[out] val, Return read data
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int t_get_string(char *str_buf, int str_len)
+{
+ char *ptr;
+ char buf[256] = {0};
+
+ if(fgets(buf, sizeof(buf)-1, stdin) == NULL)
+ {
+ return -1;
+ }
+
+ if(0 == buf[0])
+ {
+ return -1;
+ }
+
+ if(buf[0] == '\n')
+ {
+ return 1;
+ }
+
+ ptr = strchr(buf, '\n');
+ if(ptr)
+ {
+ ptr[0] = 0;
+ }
+
+ strncpy(str_buf, buf, str_len-1);
+
+ return 0;
+}
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a list of int values from stdin
+ @param[out] val, Return read datas
+ @param[out&in] val, Input buffer length, output the number of read
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int t_get_int_list(int *dat_buf, int *dat_len)
+{
+ int idx = 0;
+ int len;
+ int dat;
+ char *ptr, *ptr_save;
+ char *ptr_end;
+ char buf[256] = {0};
+
+ if(!dat_buf || !dat_len)
+ {
+ return -1;
+ }
+
+ len = dat_len[0];
+
+ if(fgets(buf, sizeof(buf)-1, stdin) == NULL)
+ {
+ return -1;
+ }
+
+ if(0 == buf[0])
+ {
+ return -1;
+ }
+
+ if(buf[0] == '\n')
+ {
+ return 1;
+ }
+
+ for(ptr=strtok_r(buf, ",.: \t\r\n", &ptr_save);
+ ptr!=NULL;
+ ptr=strtok_r(NULL, ",.: \t\r\n", &ptr_save))
+ {
+ dat = strtol(ptr, &ptr_end, 10);
+ if(ptr_end!=NULL && ptr_end[0]!=0)
+ {
+ return -1;
+ }
+ if(idx >= len)
+ {
+ return 0;
+ }
+
+ dat_buf[idx] = dat;
+ idx++;
+ }
+
+ dat_len[0] = idx;
+ return 0;
+}
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a list of float values from stdin
+ @param[out] val, Return read datas
+ @param[out&in] val, Input buffer length, output the number of read
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int t_get_float_list(float *dat_buf, int *dat_len)
+{
+ int idx = 0;
+ int len;
+ float dat;
+ char *ptr, *ptr_save;
+ char *ptr_end;
+ char buf[256] = {0};
+
+ if(!dat_buf || !dat_len)
+ {
+ return -1;
+ }
+
+ len = dat_len[0];
+
+ if(fgets(buf, sizeof(buf)-1, stdin) == NULL)
+ {
+ return -1;
+ }
+
+ if(0 == buf[0])
+ {
+ return -1;
+ }
+
+ if(buf[0] == '\n')
+ {
+ return 1;
+ }
+
+ for(ptr=strtok_r(buf, ",: \t\r\n", &ptr_save);
+ ptr!=NULL;
+ ptr=strtok_r(NULL, ",: \t\r\n", &ptr_save))
+ {
+ dat = strtof(ptr, &ptr_end);
+ if(ptr_end!=NULL && ptr_end[0]!=0)
+ {
+ return -1;
+ }
+ if(idx >= len)
+ {
+ return 0;
+ }
+
+ dat_buf[idx] = dat;
+ idx++;
+ }
+
+ dat_len[0] = idx;
+ return 0;
+}
+#if 0
+#define DEBUG_INFO
+#ifdef DEBUG_INFO
+#define LOG_DBG(fmt, ...) printf("[DBG][%s_%d][%ld] "fmt"\n", __FUNCTION__, __LINE__, time(NULL), ##__VA_ARGS__)
+#else
+#define LOG_DBG(fmt, ...)
+#endif
+#define LOG_ERR(fmt, ...) printf("[DBG][%s_%d][%ld] "fmt"\n", __FUNCTION__, __LINE__, time(NULL), ##__VA_ARGS__)
+#endif
+
+#define ITEM_NUM (sizeof(g_items)/sizeof(g_items[0]))
+
+void test_ota_api_start(void);
+void test_get_fota_upgrade_info(void);
+void test_ql_absys_switch(void);
+void test_ql_absys_get_cur_active_part(void);
+void test_ql_absys_sync(void);
+void test_ql_absys_getstatus(void);
+void test_ql_fota_fw_write_by_url(void);
+
+t_item_t g_items[] = {
+ {"API : ql_abfota_start_update", test_ota_api_start},
+ {"API : ql_abfota_get_update_status", test_get_fota_upgrade_info},
+ {"API : ql_absys_switch", test_ql_absys_switch},
+ {"API : ql_absys_sync", test_ql_absys_sync},
+ {"API : ql_absys_get_cur_active_part", test_ql_absys_get_cur_active_part},
+ {"API : ql_absys_getstatus", test_ql_absys_getstatus}
+};
+
+void dump_items(void)
+{
+ int i;
+
+ printf("\n");
+
+ for(i=0; i<ITEM_NUM; i++)
+ {
+ printf("%d\t%s\n", i, g_items[i].name);
+ }
+ printf("-1\texit\n");
+}
+
+int main(int argc, const char **argv)
+{
+ int ret = -1;
+ int idx = 0;
+
+ printf("Quectel OTA API test sample, version : v0.0.1\n");
+
+ dump_items();
+
+ while(1) {
+ printf("Please enter your choice: ");
+ ret = t_get_int(&idx);
+ printf("\n");
+ if(ret < 0) {
+ printf("Invalid input\n");
+ continue;
+ } else if(ret == 1) {
+ dump_items();
+ continue;
+ }
+
+ if(idx == -1) {
+ break;
+ }
+
+ if(idx<0 || idx>=ITEM_NUM) {
+ printf("Not support idx: %d\n", idx);
+ continue;
+ }
+
+ g_items[idx].handle();
+ }
+ return 0;
+}
+
+void test_ota_api_start(void)
+{
+ char package_file[128] = {0};
+ int ret = -1;
+
+ printf("please input the fota fbf package file dir: \n");
+ printf("eg: /user_data/\n");
+ //fota包同时已经放入该路径下
+ memset(package_file, 0x0, sizeof(package_file));
+ scanf("%s", package_file);
+ fflush(stdin);
+ ret = t_get_string((char*)package_file, sizeof(package_file));
+ if (ret < 0 || package_file[0] == 0) {
+ printf("Invalid package file\n");
+ return;
+ }
+
+ ret = ql_abfota_start_update((char*)package_file);
+
+ if (ret != 0) {
+ printf("run ql_abfota_start_update failed, api return: %d\n", ret);
+ return;
+ }
+
+ printf("Update in-active partition SUCCEED\n");
+ return;
+}
+
+void test_ql_absys_getstatus(void)
+{
+ int status = 0;
+// char stat_buf[16] = {0};
+ sysstatus_t sys_state;
+ status = ql_absys_getstatus(&sys_state);
+ if (status < 0) {
+ printf("failed to get absys status!!!\n");
+ return;
+ }
+
+ if (sys_state.is_damaged == 0)
+ {
+ printf("absys partition status : succeed\n");
+ }
+ else
+ {
+ printf("absys partition status : damaged\n");
+ printf("absys partition damaged position : %s\n", sys_state.damaged_partname);
+ printf("absys needsync!!!\n");
+ }
+ return;
+}
+
+
+void test_get_fota_upgrade_info(void)
+{
+ int ret = -1;
+ char stat_buf[16] = {0};
+ update_info_t update_info;
+ ret = ql_abfota_get_update_status(&update_info);
+ if ( ret != 0) {
+ printf("run ql_abfota_start_update failed, api return: %d\n", ret);
+ return;
+ }
+
+ memset(stat_buf, 0, sizeof(stat_buf));
+
+ switch (update_info.ota_state) {
+ case SUCCEED:
+ strncpy(stat_buf, "SUCCEED", strlen("SUCCEED")+1);
+ break;
+ case UPDATE:
+ strncpy(stat_buf, "UPDATE", strlen("UPDATE")+1);
+ break;
+ case BACKUP:
+ strncpy(stat_buf, "BACKUP", strlen("BACKUP")+1);
+ break;
+ case FAILED:
+ strncpy(stat_buf, "FAILED", strlen("FAILED")+1);
+ break;
+ case WRITEDONE:
+ strncpy(stat_buf, "WRITEDONE", strlen("WRITEDONE")+1);
+ break;
+ case NEEDSYNC:
+ strncpy(stat_buf, "NEEDSYNC", strlen("NEEDSYNC")+1);
+ break;
+ case UNKNOWN_STATUS:
+ default:
+ strncpy(stat_buf, "UNKNOWN_STATUS", strlen("UNKNOWN_STATUS")+1);
+ break;
+ }
+
+ printf("Current fota progress: %d\n", update_info.percentage);
+ printf("Current fota state: %s\n", stat_buf);
+ printf("Current fota exit code: %d\n", update_info.exit_code);
+
+ return;
+}
+
+void test_ql_absys_switch(void)
+{
+ int ret = -1;
+ ret = ql_absys_switch();
+ if (ret != 0) {
+ printf("run ql_absys_switch failed, api return: %d\n", ret);
+ return;
+ }
+
+ printf("It is okay to swith AB part to run\n");
+ sleep(1);
+
+ system("reboot");
+ return;
+}
+
+
+void test_ql_absys_sync(void)
+{
+ int ret = -1;
+
+ ret = ql_absys_sync();
+ if (ret != 0) {
+ printf("run ql_absys_sync failed, api return: %d\n", ret);
+ return;
+ }
+
+ printf("do AB sync succeed\n");
+ return;
+}
+
+
+void test_ql_absys_get_cur_active_part(void)
+{
+ int ret = -1;
+ absystem_t cur_system;
+
+ ret = ql_absys_get_cur_active_part(&cur_system);
+ if (ret != 0) {
+ printf("run ql_absys_get_cur_active_part failed, api return: %d\n", ret);
+ return;
+ }
+
+ printf("Current active part is %c\n", (cur_system ? 'B': 'A'));
+ return;
+}
\ No newline at end of file
diff --git a/mbtk/test/libql_lib_v2/ql_test_utils.h b/mbtk/test/libql_lib_v2/ql_test_utils.h
new file mode 100755
index 0000000..2f6aa93
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_test_utils.h
@@ -0,0 +1,140 @@
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @file ql_test_utils.h
+ @brief Test related interface definition
+*/
+/*-----------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ Copyright (c) 2018 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
+ Quectel Wireless Solution Proprietary and Confidential.
+-------------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ EDIT HISTORY
+ This section contains comments describing changes made to the file.
+ Notice that changes are listed in reverse chronological order.
+ $Header: $
+ when who what, where, why
+ -------- --- ----------------------------------------------------------
+ 20190508 tyler.kuang Created .
+-------------------------------------------------------------------------------------------------*/
+
+#ifndef __TEST_UTILS_H__
+#define __TEST_UTILS_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+typedef void (*item_handler_f)(void);
+typedef int (*init_handler_f)(void);
+typedef int (*deinit_handler_f)(void);
+
+
+#define T_ARRAY_SIZE(items) (sizeof(items)/sizeof(items[0]))
+
+typedef struct
+{
+ const char *name;
+ item_handler_f handle;
+} t_item_t;
+
+typedef struct
+{
+ const char *name;
+ int item_len;
+ t_item_t *item_list;
+} t_module_t;
+
+typedef struct
+{
+ const char *name;
+ init_handler_f init_handle;
+ deinit_handler_f deinit_handle;
+} t_init_t;
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a int value from stdin
+ @param[out] val, Return read data
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int t_get_int(int *val);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a uint32 value from stdin
+ @param[out] val, Return read data
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+//int t_get_hex(uint32_t *val);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a char value from stdin
+ @param[out] val, Return read data
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+//int t_get_char(int *val);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a string value from stdin
+ @param[out] val, Return read data
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+//int t_get_string(char *str_buf, int str_len);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a list of int values from stdin
+ @param[out] val, Return read datas
+ @param[out&in] val, Input buffer length, output the number of read
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+//int t_get_int_list(int *dat_buf, int *dat_len);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief Read a list of float values from stdin
+ @param[out] val, Return read datas
+ @param[out&in] val, Input buffer length, output the number of read
+ @return
+ 0 - successful
+ 1 - read an enter
+ -1 - invalid input
+ */
+/*-----------------------------------------------------------------------------------------------*/
+//int t_get_float_list(float *dat_buf, int *dat_len);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/mbtk/test/libql_lib_v2/ql_voice_test.c b/mbtk/test/libql_lib_v2/ql_voice_test.c
new file mode 100755
index 0000000..61a6cc3
--- /dev/null
+++ b/mbtk/test/libql_lib_v2/ql_voice_test.c
@@ -0,0 +1,236 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include "ql_voice.h"
+
+
+
+void voice_call_cb(ql_voice_record_array_t *p_arr)
+{
+
+ printf("len1-voice_call_cb-id:%d, number:%s, state:%d, tech:%d, dir:%d, end_reason:%d\n", p_arr->records[0].id, p_arr->records[0].number, p_arr->records[0].state, p_arr->records[0].tech,
+ p_arr->records[0].dir, p_arr->records[0].end_reason);
+ if(2 == p_arr->len)
+ {
+ printf("len2-id:%d, number:%s, state:%d, tech:%d, dir:%d, end_reason:%d\n", p_arr->records[1].id, p_arr->records[1].number, p_arr->records[1].state, p_arr->records[1].tech,
+ p_arr->records[1].dir, p_arr->records[1].end_reason);
+ }
+}
+
+void voice_servicie_error_cb(int error)
+{
+ printf("===== voice Service Abort =====\n");
+}
+
+
+
+
+
+
+int main(int argc, char *argv[])
+{
+ char operator[10];
+ int opt;
+ int ret;
+ int voice;
+ int direction;
+ int value;
+ int pullsel;
+
+ mbtk_log_init("radio", "voice_TEST");
+
+ printf("=========ql voice main=========\n"
+ "\t0 exit\n"
+ "\t1 voice init\n"
+ "\t2 voice deinit\n"
+ "\t3 voice set call cb\n"
+ "\t4 voice set ser error cb\n"
+ "\t5 voice dial\n"
+ "\t6 voice hangup all\n"
+ "\t7 voice answer\n"
+ "\t8 voice get records\n"
+ "\t9 voice send dtmf char\n"
+ "operator: >> \n");
+
+ while(1)
+ {
+ memset(operator, 0, sizeof(operator));
+ fgets(operator, sizeof(operator), stdin);
+ fflush(stdin);
+ opt = atoi(operator);
+ switch (opt)
+ {
+ case 0:
+ printf("main exit\n");
+ return 0;
+ case 1:
+ {
+ printf(">>>>>voice init\n");
+ ret = ql_voice_init();
+ if(ret != 0)
+ {
+ printf("ql_voice_init fail\n");
+ }
+ else
+ {
+ printf("ql_voice_init success\n");
+ }
+ }
+ break;
+ case 2:
+ {
+ printf(">>>>>voice uninit\n");
+
+ ret = ql_voice_deinit();
+ if(ret != 0)
+ {
+ printf("ql_voice_uninit fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("ql_voice_uninit success\n");
+
+ }
+ }
+ break;
+ case 3:
+ {
+ printf(">>>>>Input set recv cb<<<<<\n");
+
+ ret = ql_voice_set_call_cb(voice_call_cb);
+ if(ret != 0)
+ {
+ printf("ql_voice_set_msg_recv_cb fail\n");
+ }
+ else
+ {
+ printf("ql_voice_set_msg_recv_cb success\n");
+ }
+
+ }
+ break;
+ case 4:
+ {
+ printf(">>>>>Input set ser cb<<<<<\n");
+
+ ret = ql_voice_set_service_error_cb(voice_servicie_error_cb);
+ if(ret < 0)
+ {
+ printf("ql_voice_set_service_error_cb fail\n");
+ }
+ else
+ {
+ printf("ql_voice_set_service_error_cb success\n");
+ }
+
+ }
+ break;
+ case 5:
+ {
+ printf(">>>>>Input ql_voice_dial<<<<<\n");
+
+ uint32_t id = 0;
+ ret = ql_voice_dial("13388257090", 11, &id);
+ printf("id:%d", id);
+ if(ret < 0)
+ {
+ printf("ql_voice_dial fail\n");
+ }
+ else
+ {
+ printf("ql_voice_dial success\n");
+ }
+ }
+ break;
+ case 6:
+ {
+ printf(">>>>>Input ql_voice_hangup_all<<<<<\n");
+
+ int id = 0;
+ ret = ql_voice_hangup_all();
+ if(ret < 0)
+ {
+ printf("ql_voice_hangup_all fail\n");
+ }
+ else
+ {
+ printf("ql_voice_hangup_all success\n");
+ }
+ }
+ break;
+ case 7:
+ {
+ printf(">>>>>Input ql_voice_answer<<<<<\n");
+
+ int id = 0;
+ ret = ql_voice_answer(1);
+ if(ret < 0)
+ {
+ printf("ql_voice_answer fail\n");
+ }
+ else
+ {
+ printf("ql_voice_answer success\n");
+ }
+ }
+ break;
+ case 8:
+ {
+ printf(">>>>>Input ql_voice_get_records<<<<<\n");
+
+ ql_voice_record_array_t arr;
+ ret = ql_voice_get_records(&arr);
+ printf("len1-id:%d, number:%s, state:%d, tech:%d, dir:%d, end_reason:%d\n", arr.records[0].id, arr.records[0].number, arr.records[0].state, arr.records[0].tech,
+ arr.records[0].dir, arr.records[0].end_reason);
+ if(2 == arr.len)
+ {
+ printf("len2-id:%d, number:%s, state:%d, tech:%d, dir:%d, end_reason:%d\n", arr.records[1].id, arr.records[1].number, arr.records[1].state, arr.records[1].tech,
+ arr.records[1].dir, arr.records[1].end_reason);
+ }
+
+ if(ret < 0)
+ {
+ printf("ql_voice_get_records fail\n");
+ }
+ else
+ {
+ printf("ql_voice_get_records success\n");
+ }
+ }
+ break;
+ case 9:
+ {
+ printf(">>>>>Input ql_voice_send_dtmf_char<<<<<\n");
+
+
+ char inputChar;
+
+ printf("Enter set dtmf\n");
+ scanf(" %c", &inputChar);
+ printf("inputChar is %c\n", inputChar);
+
+ ret = ql_voice_send_dtmf_char(1, inputChar);
+ if(ret < 0)
+ {
+ printf("ql_voice_send_dtmf_char fail\n");
+ }
+ else
+ {
+ printf("ql_voice_send_dtmf_char success\n");
+ }
+ }
+ break;
+
+
+
+ default:
+ break;
+ }
+
+ }
+
+ return 0;
+
+}
diff --git a/mbtk/test/others/Makefile b/mbtk/test/others/Makefile
new file mode 100755
index 0000000..e6071fb
--- /dev/null
+++ b/mbtk/test/others/Makefile
@@ -0,0 +1,34 @@
+BUILD_ROOT = $(shell pwd)/../..
+include $(BUILD_ROOT)/Make.defines
+
+INC_DIR +=
+
+LIB_DIR +=
+
+LIBS += -lmbtk_lib -laudio-apu -lcutils -ltinyalsa -lacm -lubus -lubox
+
+CFLAGS = $(CFLAGS_TEST)
+
+DEFINE +=
+
+LOCAL_SRC_FILES = $(wildcard *.c) $(wildcard *.cpp)
+
+$(info LOCAL_SRC_FILES = $(LOCAL_SRC_FILES))
+
+OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(LOCAL_SRC_FILES)))
+BINS = $(patsubst %.o,%,$(OBJS))
+
+all: $(BINS)
+
+$(BINS):$(OBJS)
+ @echo " BIN $@"
+ $(CC) $(CFLAGS) $(LIB_DIR) $(LIBS) $@.o -o $(OUT_DIR)/bin/$@
+
+%.o:%.c
+ $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
+
+%.o:%.cpp
+ $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
+
+clean:
+ rm -f $(OBJS)
diff --git a/mbtk/test/others/fb_demo.c b/mbtk/test/others/fb_demo.c
new file mode 100755
index 0000000..e160edf
--- /dev/null
+++ b/mbtk/test/others/fb_demo.c
@@ -0,0 +1,83 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#include "mbtk_log.h"
+#include "mbtk_type.h"
+
+// RGB565
+#define COLOR_BLACK 0x0000
+#define COLOR_WRITE 0xFFFF
+#define DEV_FB_PATH "/dev/fb0"
+#define SCREEN_WIDTH 320
+#define SCREEN_HEIGTH 240
+
+typedef struct {
+ int left;
+ int top;
+ int width;
+ int heigth;
+} rect_t;
+
+static uint16 fb_buffer[SCREEN_WIDTH * SCREEN_HEIGTH];
+
+static int fb_refresh(int fd)
+{
+ rect_t rect;
+ rect.width = SCREEN_WIDTH / 2;
+ rect.heigth = SCREEN_HEIGTH / 2;
+ rect.left = (SCREEN_WIDTH - rect.width) / 2;
+ rect.top = (SCREEN_HEIGTH - rect.heigth) / 2;
+ // Fill in buffer.
+ int x,y;
+ for(y = 0; y < SCREEN_HEIGTH; y++) {
+ for(x = 0; x < SCREEN_WIDTH; x++) {
+ if(x >= rect.left && x <= rect.left + rect.width
+ && y >= rect.top && y <= rect.top + rect.heigth)
+ {
+ fb_buffer[x * SCREEN_HEIGTH + y] = COLOR_WRITE;
+ } else {
+ fb_buffer[x * SCREEN_HEIGTH + y] = COLOR_BLACK;
+ }
+ }
+ }
+
+ int len = write(fd, fb_buffer, sizeof(fb_buffer));
+ LOGD("Write : %d/%d", len, sizeof(fb_buffer));
+ // Write buffer to framebuffer.
+ if(sizeof(fb_buffer) != len) {
+ LOGE("Write fail:%d", errno);
+ return -1;
+ }
+
+ return 0;
+}
+
+int main(int argc, char *argv[]) {
+ if(access(DEV_FB_PATH, F_OK) != 0) {
+ LOGE("no %s, quit.", DEV_FB_PATH);
+ return -1;
+ }
+
+ int fb_fd = open(DEV_FB_PATH, O_RDWR);
+ if(fb_fd < 0) {
+ LOGE("open() fail:%d", errno);
+ return -1;
+ }
+
+ // Fresh framebuffer
+ while(1) {
+ if(fb_refresh(fb_fd)) {
+ break;
+ }
+
+ usleep(33); // 1000 / 30
+ }
+
+ LOGD("Exit");
+ return 0;
+}
+
+
diff --git a/mbtk/test/others/framebuffer_demo.c b/mbtk/test/others/framebuffer_demo.c
new file mode 100755
index 0000000..bc35a07
--- /dev/null
+++ b/mbtk/test/others/framebuffer_demo.c
@@ -0,0 +1,285 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+#include <linux/fb.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <sys/mman.h>
+#include <math.h>
+
+#include "mbtk_utils.h"
+
+/**< \brief 根据实际情况修改,此处为unsigned short是565的屏,根据程序打印出的
+ bits_per_pixel的值可以判断出输出格式是565还是888 */
+// typedef unsigned int color_t;
+typedef unsigned short color_t;
+/**< \brief 定义每个像素点对应的位数,如果是565的屏则为16,如果是888的屏则为32 */
+// #define BITS_PER_PIXEL 32
+#define BITS_PER_PIXEL 16
+
+static struct fb_var_screeninfo __g_vinfo; /* 显示信息 */
+color_t *__gp_frame; /* 虚拟屏幕首地址 */
+
+#pragma pack(2)
+typedef unsigned short WORD;
+typedef unsigned char BYTE;
+typedef unsigned int DWORD;
+typedef int LONG;
+
+typedef struct tagBITMAPFILEHEADER
+{
+ WORD bfType; // 位图文件的类型,必须为BM
+ DWORD bfSize; // 位图文件的大小,以字节为单位
+ WORD bfReserved1; // 位图文件保留字,必须为0
+ WORD bfReserved2; // 位图文件保留字,必须为0
+ DWORD bfOffBits; // 位图数据的起始位置,以相对于位图
+ // 文件头的偏移量表示,以字节为单位
+} BITMAPFILEHEADER;
+
+typedef struct tagBITMAPINFOHEADER
+{
+ DWORD biSize; // 本结构所占用字节数
+ LONG biWidth; // 位图的宽度,以像素为单位
+ LONG biHeight; // 位图的高度,以像素为单位
+ WORD biPlanes; // 目标设备的级别,必须为1
+ WORD biBitCount;// 每个像素所需的位数,必须是1(双色),
+ // 4(16色),8(256色)或24(真彩色)之一
+ DWORD biCompression; // 位图压缩类型,必须是 0(不压缩),
+ // 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一
+ DWORD biSizeImage; // 位图的大小,以字节为单位
+ LONG biXPelsPerMeter; // 位图水平分辨率,每米像素数
+ LONG biYPelsPerMeter; // 位图垂直分辨率,每米像素数
+ DWORD biClrUsed;// 位图实际使用的颜色表中的颜色数
+ DWORD biClrImportant;// 位图显示过程中重要的颜色数
+} BITMAPINFOHEADER;
+#pragma pack(0)
+
+typedef WORD (*bmp_xx_to_16)(char *);
+
+//画点
+void draw_point(int x, int y, color_t color)
+{
+ color_t *p = __gp_frame;
+
+ p += __g_vinfo.xres * y + x;
+ *p = color;
+}
+
+WORD bmp_24_to_16(char *input)
+{
+ /* 如果使用的bmp图片的颜色深度是24位,适用于888的屏,但如果一定要在565的屏
+ 上显示,则取红色的高5位,绿色的高6位和蓝色的高5位,拼成16位的数据
+ 进行显示。这样做并不是最好的办法,更好的方法是将需要丢失的部分数
+ 据进行进位或舍去。
+ */
+ WORD c;
+ char b, g, r;
+ r = *input >> 3;
+ input++;
+ g = *input >> 2;
+ input++;
+ b = *input >> 3;
+
+ c = (b << 11) | (g << 5) | r;
+
+ return c;
+}
+
+WORD bmp_16_to_16(char *input)
+{
+ WORD c;
+
+ c = *input;
+ input++;
+ c = (c << 8) | *input;
+ c = ((c >> 8) & 0x00ff) | ((c & 0x00ff) << 8);
+
+ return c;
+}
+
+//功能:在指定坐标显示指定BPM24位图
+//参数:(x , y)坐标
+// pic:24位BMP图像
+void Show_BMP(int x , int y , const char *pic)
+{
+ int fd = 0;
+ color_t c;
+ BITMAPFILEHEADER filehead;
+ BITMAPINFOHEADER infohead;
+ int i,j;
+ unsigned char pixel_byte;
+ unsigned char *p = NULL , *p_data = NULL;
+ int width_error = 0;
+ short* t_data = NULL;
+ bmp_xx_to_16 transform_func = NULL;
+ int index = 0;
+
+ printf("%s: %s\n", __FUNCTION__, pic);
+ fd = open(pic , O_RDONLY);
+ if(fd == -1) {
+ printf("fail to open\n");
+ return;
+ }
+
+ mbtk_read(fd , &filehead , sizeof(filehead));
+ mbtk_read(fd , &infohead , sizeof(infohead));
+ printf("bfType: 0x%x, bfSize: %d, bfOffBits: 0x%x\n", filehead.bfType, filehead.bfSize, filehead.bfOffBits);
+
+ printf("biSize: %d, biWidth: %d, biHeight: %d\n", infohead.biSize, infohead.biWidth, infohead.biHeight);
+ printf("biPlanes: %d, biBitCount: %d, biCompression: %d\n", infohead.biPlanes, infohead.biBitCount, infohead.biCompression);
+ printf("biSizeImage: %d, biXPelsPerMeter: %d, biYPelsPerMeter: %d\n", infohead.biSizeImage, infohead.biXPelsPerMeter, infohead.biYPelsPerMeter);
+
+ width_error = (4 - infohead.biWidth * 3 % 4) % 4;
+ pixel_byte = infohead.biBitCount / 8;
+
+ if (16 == infohead.biBitCount) {
+ transform_func = bmp_16_to_16;
+ } else if (24 == infohead.biBitCount) {
+ transform_func = bmp_24_to_16;
+ } else {
+ printf("Not Suppurt %d bmp\n", infohead.biBitCount);
+ close(fd);
+ return;
+ }
+
+ t_data = malloc(__g_vinfo.xres_virtual * __g_vinfo.yres_virtual * __g_vinfo.bits_per_pixel / 8);
+
+ if(t_data == NULL) {
+ perror("fail to malloc");
+ }
+
+ p_data = malloc(infohead.biSizeImage);
+ if(p_data == NULL) {
+ perror("fail to malloc");
+ }
+
+ printf("biSizeImage:%d, width_error: %d\n", infohead.biSizeImage, width_error);
+ mbtk_read(fd , p_data , infohead.biSizeImage);
+ p = p_data;
+
+ int ret;
+ char data[100] = {0};
+ int debug_fd = open("/data/debug_fb", O_RDWR|O_CREAT|O_TRUNC, 0644);
+ if (debug_fd < 0) {
+ printf("debug_fb open error\n");
+ return;
+ }
+ printf("height:%d, width:%d\n", infohead.biHeight, infohead.biWidth);
+ for(j = infohead.biHeight - 1; j >= 0; j--) {
+ for(i = 0; i < infohead.biWidth; i++) {
+ c = transform_func((char*)p);
+ // c = *p;
+ p += pixel_byte;
+ // c = ((c >> 8) & 0x00ff) | ((c & 0x00ff) << 8);
+ t_data[__g_vinfo.xres * (y + j) + (x + i)] = c;
+ // draw_point(x + i, y + j, c);
+ index++;
+
+ sprintf(data, "index:%d, i:%d, j:%d\n", index, i, j);
+ ret = write(debug_fd, data, strlen(data));
+ if (ret < 0) {
+ printf("%s write error\n", __FUNCTION__);
+ }
+ }
+ p += width_error;
+ }
+ close(debug_fd);
+ printf("%s: %d\n", __FUNCTION__, infohead.biHeight * infohead.biWidth * __g_vinfo.bits_per_pixel / 8);
+ memcpy(__gp_frame, t_data,
+ infohead.biHeight * infohead.biWidth * __g_vinfo.bits_per_pixel / 8);
+ printf("%s: %d\n", __FUNCTION__, index);
+ free(p_data);
+ free(t_data);
+ close(fd);
+}
+
+/**
+ * \brief 填充整屏
+ */
+void full_screen (color_t color)
+{
+ int i;
+ color_t *p = __gp_frame;
+
+ for (i = 0; i < __g_vinfo.xres_virtual * __g_vinfo.yres_virtual; i++) {
+ *p++ = color;
+ }
+}
+
+/**
+ * \brief 清屏
+ */
+void clear()
+{
+ full_screen(0);
+}
+
+/* framebuffer初始化 */
+int framebuffer_init (void)
+{
+ int fd = 0;
+
+ fd = open("/dev/fb0", O_RDWR);
+ if (fd == -1) {
+ perror("fail to open /dev/fb0\n");
+ return -1;
+ }
+
+ /* 获取显示信息 */
+ ioctl(fd, FBIOGET_VSCREENINFO, &__g_vinfo); /* 获取显示信息 */
+ printf("bits_per_pixel = %d\n", __g_vinfo.bits_per_pixel); /* 得到一个像素点对应的位数 */
+ printf("xres_virtual = %d\n", __g_vinfo.xres_virtual); /* 打印虚拟屏幕列数 */
+ printf("yres_virtual = %d\n", __g_vinfo.yres_virtual); /* 打印虚拟屏幕行数 */
+ printf("xres = %d\n", __g_vinfo.xres); /* 打印屏幕列数 */
+ printf("yres = %d\n", __g_vinfo.yres); /* 打印屏幕行数 */
+
+ int len = __g_vinfo.xres_virtual * __g_vinfo.yres_virtual * __g_vinfo.bits_per_pixel / 8; /* 映射区大小 */
+
+ printf("fb size = %d\n", len);
+ __gp_frame = mmap(NULL, /* 映射区的开始地址,为NULL表示由系统决定映射区的起始地址 */
+ len,
+ PROT_WRITE | PROT_READ, /* 内存保护标志(可读可写) */
+ MAP_SHARED, /* 映射对象类型(与其他进程共享) */
+ fd, /* 有效的文件描述符 */
+ 0); /* 被映射内容的偏移量 */
+ if (__gp_frame == NULL) {
+ perror("fail to mmap\n");
+ return -1;
+ }
+
+ return fd;
+}
+
+
+int main(int argc, const char *argv[])
+{
+ int fd;
+
+ if (argc < 2) {
+ printf("%s \" img \"", argv[0]);
+ exit(1);
+ }
+
+ fd = framebuffer_init();
+ if (fd < 0) {
+ printf("framebuffer_init error\n");
+ return 0;
+ }
+
+ printf("framebuffer_init Success.\n");
+ /* 清屏 */
+ clear();
+
+ printf("clear Success.\n");
+
+ // full_screen(0xF800); // 显示红色
+
+ Show_BMP(0 , 0 , argv[1]);
+
+ close(fd);
+
+ return 0;
+}
diff --git a/mbtk/test/others/fs_full.c b/mbtk/test/others/fs_full.c
new file mode 100755
index 0000000..cb53e49
--- /dev/null
+++ b/mbtk/test/others/fs_full.c
@@ -0,0 +1,27 @@
+#include <stdio.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+
+#define BUFF_SIZE 4096
+
+int main(int argc, char *argv[])
+{
+ int fd = open("/test.data", O_WRONLY | O_CREAT | O_APPEND, 0666);
+ if(fd < 0) {
+ printf("open() fail:%d", errno);
+ return -1;
+ }
+
+ char buff[BUFF_SIZE];
+ while(1) {
+ if(write(fd, buff, BUFF_SIZE) < 0) {
+ printf("write() fail:%d", errno);
+ break;
+ }
+ }
+
+ close(fd);
+ return 0;
+}
+
diff --git a/mbtk/test/others/iconv_demo.cc b/mbtk/test/others/iconv_demo.cc
new file mode 100755
index 0000000..de95454
--- /dev/null
+++ b/mbtk/test/others/iconv_demo.cc
@@ -0,0 +1,204 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <iconv.h>
+#include <errno.h>
+#include <stddef.h>
+
+struct outbuf
+{
+ struct outbuf *next;
+ char *outptr;
+ size_t outbytesleft;
+ char buf[256];
+};
+
+char *eazyiconv(const char *to, const char *from,
+ char *str, size_t str_blen, size_t str_elemsize, size_t out_tailzero_blen, size_t *out_size,
+ const char *replchr)
+{
+ char *retstr = NULL;
+ struct outbuf *outhead = NULL;
+ struct outbuf *outtail = NULL;
+ struct outbuf *outiter = NULL;
+ iconv_t cd = NULL;
+ char *inptr = str;
+ size_t inbytesleft = str_blen;
+ int retval = 0;
+ int err = 0;
+ size_t blocksize = 0;
+ size_t totalsize = 0;
+ char *retiter = NULL;
+ unsigned int chrval = 0;
+ iconv_t cdreplchr = NULL;
+ char replchrfmtbuf[256] = "";
+ char replchrbuf[256] = "";
+ char *replchrfmtptr = replchrfmtbuf;
+ size_t replchrfmtleft = sizeof replchrfmtbuf;
+ char *replchrptr = replchrbuf;
+ size_t replchrleft = sizeof replchrbuf;
+ int replchr_blen = 0;
+
+ cd = iconv_open(to, from);
+ if (cd == (iconv_t)-1)
+ {
+ goto noclean;
+ }
+
+ outhead = outtail = calloc(1, sizeof(struct outbuf));
+ if (outtail == NULL)
+ {
+ goto clean_cd;
+ }
+ outtail->next = NULL;
+ outtail->outptr = outtail->buf;
+ outtail->outbytesleft = sizeof outtail->buf;
+ memset(outtail->buf, 0, sizeof outtail->buf);
+
+ while (1)
+ {
+ retval = iconv(cd, &inptr, &inbytesleft, &outtail->outptr, &outtail->outbytesleft);
+ if (retval == -1)
+ err = errno;
+ else
+ err = 0;
+ switch (err)
+ {
+ case 0:
+ outiter = calloc(1, sizeof(struct outbuf));
+ if (outiter == NULL)
+ {
+ goto clean_outbufs;
+ }
+ if (inptr == NULL) // succeeded cleanup iconv
+ {
+ goto succeeded;
+ }
+ else // fully succeeded iconv
+ {
+ inptr = NULL; // do cleanup iconv
+ inbytesleft = 0;
+ }
+ break;
+ case EINVAL: // incomplete tail sequence
+ case EILSEQ: // invalid sequence
+ chrval = 0;
+ memcpy(&chrval, inptr, str_elemsize > sizeof chrval ? sizeof chrval : str_elemsize);
+ snprintf(replchrfmtbuf, sizeof replchrfmtbuf, replchr, chrval);
+ inptr += str_elemsize;
+ inbytesleft -= str_elemsize;
+
+ cdreplchr = iconv_open(to, "UTF-8");
+ if (cdreplchr == (iconv_t)-1)
+ {
+ goto clean_outbufs;
+ }
+ replchrfmtptr = replchrfmtbuf;
+ replchrfmtleft = strlen(replchrfmtbuf);
+ replchrptr = replchrbuf;
+ replchrleft = sizeof replchrbuf;
+ iconv(cdreplchr, &replchrfmtptr, &replchrfmtleft, &replchrptr, &replchrleft);
+ iconv(cdreplchr, NULL, NULL, &replchrptr, &replchrleft);
+ iconv_close(cdreplchr);
+ replchr_blen = replchrptr - replchrbuf;
+
+ if (outtail->outbytesleft < replchr_blen)
+ {
+ outiter = calloc(1, sizeof(struct outbuf));
+ if (outiter == NULL)
+ {
+ goto clean_outbufs;
+ }
+ outtail->next = outiter;
+ outtail = outiter;
+ outtail->next = NULL;
+ outtail->outptr = outtail->buf;
+ outtail->outbytesleft = sizeof outtail->buf;
+ memset(outtail->buf, 0, sizeof outtail->buf);
+ }
+ memcpy(outtail->outptr, replchrbuf, replchr_blen);
+ outtail->outptr += replchr_blen;
+ outtail->outbytesleft -= replchr_blen;
+ break;
+ case E2BIG: // no enough space
+ outiter = calloc(1, sizeof(struct outbuf));
+ if (outiter == NULL)
+ {
+ goto clean_outbufs;
+ }
+ outtail->next = outiter;
+ outtail = outiter;
+ outtail->next = NULL;
+ outtail->outptr = outtail->buf;
+ outtail->outbytesleft = sizeof outtail->buf;
+ memset(outtail->buf, 0, sizeof outtail->buf);
+ break;
+ default:
+ break;
+ }
+ }
+
+succeeded:
+ totalsize = 0;
+ for (outiter = outhead; outiter != NULL; outiter = outiter->next)
+ {
+ blocksize = outiter->outptr - outiter->buf;
+ totalsize += blocksize;
+ }
+ retstr = calloc(totalsize + out_tailzero_blen, 1);
+ if (retstr == NULL)
+ {
+ goto clean_outbufs;
+ }
+ retiter = retstr;
+ for (outiter = outhead; outiter != NULL; outiter = outiter->next)
+ {
+ blocksize = outiter->outptr - outiter->buf;
+ memcpy(retiter, outiter->buf, blocksize);
+ retiter += blocksize;
+ }
+ memset(retiter, 0, out_tailzero_blen);
+ *out_size = totalsize;
+
+clean_outbufs:
+ while (outhead != NULL)
+ {
+ outiter = outhead;
+ outhead = outhead->next;
+ free(outiter);
+ }
+ outtail = NULL;
+clean_cd:
+ iconv_close(cd);
+noclean:
+ return retstr;
+}
+
+int main(int argc, char **argv)
+{
+ if (argc < 7)
+ {
+ printf("usage: eiconv_test from_charset from_elemsize to_charset to_elemsize from_file to_file (no utf-16/32)\n");
+ return 0;
+ }
+ FILE *from_file = fopen(argv[5], "rb");
+ fseek(from_file, 0, SEEK_END);
+ off_t fsize = ftell(from_file);
+ fseek(from_file, 0, SEEK_SET);
+ char *from_str = malloc(fsize + 1);
+ fread(from_str, 1, fsize, from_file);
+ fclose(from_file);
+
+ size_t out_size = 0;
+ char *to_str = eazyiconv(argv[3], argv[1],
+ from_str, fsize, atoi(argv[2]), atoi(argv[4]), &out_size,
+ "<0x%02X>");
+
+ FILE *to_file = fopen(argv[6], "wb");
+ fwrite(to_str, 1, out_size, to_file);
+ free(to_str);
+ fclose(to_file);
+ return 0;
+}
+
+
diff --git a/mbtk/test/others/mbtk_debug_test.c b/mbtk/test/others/mbtk_debug_test.c
new file mode 100755
index 0000000..39c8105
--- /dev/null
+++ b/mbtk/test/others/mbtk_debug_test.c
@@ -0,0 +1,55 @@
+#include <stdio.h>
+#include <pthread.h>
+
+#include "mbtk_log.h"
+#include "mbtk_utils.h"
+
+
+void test3()
+{
+ printf("%s start\n", __FUNCTION__);
+ char *ptr = (char*)10;
+ *ptr = 'a';
+ printf("%s end\n", __FUNCTION__);
+}
+
+void test2()
+{
+ printf("%s start\n", __FUNCTION__);
+ mbtk_get_kernel_cmdline(NULL, 1024);
+ // test3();
+ printf("%s end\n", __FUNCTION__);
+}
+
+void test1()
+{
+ printf("%s start\n", __FUNCTION__);
+ test2();
+ printf("%s end\n", __FUNCTION__);
+}
+
+void* thread_function(void* arg) {
+ // 模拟一个导致SIGSEGV的操作
+ int* invalid_pointer = NULL;
+ *invalid_pointer = 0; // 尝试写入一个无效的指针,将触发SIGSEGV
+ return NULL;
+}
+
+int main(int argc, char *argv[])
+{
+
+#ifdef MBTK_DUMP_SUPPORT
+ mbtk_debug_open(NULL, TRUE);
+#endif
+
+ test1();
+
+ pthread_t thread;
+ pthread_create(&thread, NULL, &thread_function, NULL);
+ pthread_join(thread, NULL);
+
+ printf("Exit.\n");
+
+ return 0;
+}
+
diff --git a/mbtk/test/others/mbtk_gnss_cli.c b/mbtk/test/others/mbtk_gnss_cli.c
new file mode 100755
index 0000000..825d501
--- /dev/null
+++ b/mbtk/test/others/mbtk_gnss_cli.c
@@ -0,0 +1,181 @@
+/*
+* gnss_ipc.c
+*
+* MBTK GNSS IPC service source.
+*
+*/
+/******************************************************************************
+
+ EDIT HISTORY FOR FILE
+
+ WHEN WHO WHAT,WHERE,WHY
+-------- -------- -------------------------------------------------------
+2024/6/15 LiuBin Initial version
+
+******************************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <netinet/in.h>
+#include <pthread.h>
+#include <sys/epoll.h>
+
+#include "mbtk_log.h"
+#include "mbtk_type.h"
+#include "mbtk_gnss.h"
+#include "mbtk_utils.h"
+
+#define GNSS_SOCK_PATH "/tmp/mbtk_gnss_sock"
+
+static int sock_listen_fd = -1;
+
+typedef enum {
+ GNSS_CMD_INIT = 0,
+ GNSS_CMD_DEINIT,
+ GNSS_CMD_SETTING,
+ GNSS_CMD_DL
+} gnss_cmd_enum;
+
+static void help()
+{
+ printf("gnss_cli gnss_init <0-15>\n");
+ printf("gnss_cli gnss_deinit\n");
+ printf("gnss_cli gnss_setting cmd\n");
+ printf("gnss_cli gnss_dl fw_name\n");
+}
+
+static int cmd_process(gnss_cmd_enum cmd, void *arg)
+{
+ if(sock_listen_fd < 0) {
+ sock_listen_fd = socket(AF_LOCAL, SOCK_STREAM, 0);
+ if(sock_listen_fd < 0)
+ {
+ printf("socket() fail[%d].\n", errno);
+ return -1;
+ }
+
+ struct sockaddr_un cli_addr;
+ memset(&cli_addr, 0, sizeof(cli_addr));
+ cli_addr.sun_family = AF_LOCAL;
+ strcpy(cli_addr.sun_path, GNSS_SOCK_PATH);
+ if(connect(sock_listen_fd, (struct sockaddr *)&cli_addr, sizeof(cli_addr)))
+ {
+ printf("connect() fail[%d].\n", errno);
+ close(sock_listen_fd);
+ sock_listen_fd = -1;
+ return -1;
+ }
+ }
+
+ char buff[100] = {0};
+ if(cmd == GNSS_CMD_INIT) {
+ if(arg) {
+ int type = atoi((char*)arg);
+ sprintf(buff, "gnss_init:%d", type);
+ } else {
+ return -1;
+ }
+ } else if(cmd == GNSS_CMD_DEINIT) {
+ sprintf(buff, "gnss_deinit");
+ } else if(cmd == GNSS_CMD_SETTING) {
+ sprintf(buff, "gnss_setting:%s", (char*)arg);
+ } else if(cmd == GNSS_CMD_DL) {
+ sprintf(buff, "gnss_dl:%s", (char*)arg);
+ } else {
+ printf("Unknown cmd.\n");
+ return -1;
+ }
+
+ mbtk_write(sock_listen_fd, buff, strlen(buff));
+
+ int len = 0;
+ char *rsp = NULL;
+ while(1) {
+ memset(buff, 0, sizeof(buff));
+ len = read(sock_listen_fd, buff, sizeof(buff));
+ if(len > 0) {
+ rsp = buff;
+ if(rsp[len - 1] == MBTK_IND_END_FLAG) {
+ rsp[len - 1] = '\0';
+ }
+ if(rsp[0] == MBTK_IND_START_FLAG) {
+ rsp++;
+ }
+ printf("RSP : %s\n", rsp);
+ if(cmd == GNSS_CMD_INIT) {
+ if(memcmp(rsp, "gnss_init", 9) == 0) {
+ return atoi(rsp + 10);
+ } else {
+ printf("gnss_init response error.\n");
+ return -1;
+ }
+ } else if(cmd == GNSS_CMD_DEINIT) {
+ if(memcmp(rsp, "gnss_deinit", 11) == 0) {
+ return atoi(rsp + 12);
+ } else {
+ printf("gnss_deinit response error.\n");
+ return -1;
+ }
+ } else if(cmd == GNSS_CMD_SETTING) {
+ if(memcmp(rsp, "gnss_setting", 12) == 0) {
+ return atoi(rsp + 13);
+ } else {
+ printf("gnss_setting response error.\n");
+ return -1;
+ }
+ } else if(cmd == GNSS_CMD_DL) {
+ if(memcmp(rsp, "gnss_dl", 7) == 0) {
+ return atoi(rsp + 8);
+ } else {
+ printf("gnss_dl response error.\n");
+ return -1;
+ }
+ } else {
+ printf("Unknown response.\n");
+ return -1;
+ }
+ } else if(len == 0) {
+ printf("RSP is null.\n");
+ return -1;
+ } else {
+ printf("read = %d:errno = %d\n", len, errno);
+ }
+ }
+}
+
+int main(int argc, char *argv[])
+{
+ int ret = 0;
+ if(argc == 2) {
+ if(strcmp(argv[1], "gnss_deinit")) {
+ help();
+ return -1;
+ }
+
+ ret = cmd_process(GNSS_CMD_DEINIT, NULL);
+ } else if(argc == 3) {
+ if(strcmp(argv[1], "gnss_init") == 0) {
+ ret = cmd_process(GNSS_CMD_INIT, argv[2]);
+ } else if(strcmp(argv[1], "gnss_setting") == 0) {
+ ret = cmd_process(GNSS_CMD_SETTING, argv[2]);
+ } else if(strcmp(argv[1], "gnss_dl") == 0) {
+ ret = cmd_process(GNSS_CMD_DL, argv[2]);
+ } else {
+ help();
+ return -1;
+ }
+ } else {
+ help();
+ return -1;
+ }
+
+ // printf("Error:%s\n", strerror(EBADF));
+
+ printf("Result : %d\n", ret);
+ return 0;
+}
+
diff --git a/mbtk/test/others/mbtk_mbedtls_demo.c b/mbtk/test/others/mbtk_mbedtls_demo.c
new file mode 100755
index 0000000..45909ae
--- /dev/null
+++ b/mbtk/test/others/mbtk_mbedtls_demo.c
@@ -0,0 +1,162 @@
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @file NULL
+ @brief libmbedtls.so.3.6.2 function test
+*/
+/*-----------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ Copyright (c) 2024 mobiletek Wireless Solution, Co., Ltd. All Rights Reserved.
+ mobiletek Wireless Solution Proprietary and Confidential.
+-------------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ EDIT HISTORY
+ This section contains comments describing changes made to the file.
+ Notice that changes are listed in reverse chronological order.
+ $Header: $
+ when who what, where, why
+ -------- --------- -----------------------------------------------------------------
+ 20241022 yq.wang Created .
+-------------------------------------------------------------------------------------------------*/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdbool.h>
+#include <arpa/inet.h>
+#include <sys/socket.h>
+
+#ifdef MBTK_MBEDTLS_V3_6_2_SUPPORT
+#include "mbtk_mbedtls.h"
+
+#define BUFFER_SIZE 1024
+
+static int tcp_connect_init(int *client_fd, int port, char *ip)
+{
+ int ret = -1;
+ struct sockaddr_in server_addr;
+
+ if(port < 1 || port > 65535)
+ {
+ printf("[%s] Invalid port number\n", __func__);
+ goto error;
+ }
+
+ *client_fd = socket(AF_INET, SOCK_STREAM, 0);
+ if(*client_fd < 0)
+ {
+ printf("[%s] socket creation failed\n", __func__);
+ goto error;
+ }
+
+ server_addr.sin_family = AF_INET;
+ server_addr.sin_port = htons(port);
+ ret = inet_pton(AF_INET, ip, &server_addr.sin_addr);
+ if(ret <= 0)
+ {
+ perror("invalid address");
+ goto error;
+ }
+
+ ret = connect(*client_fd, (struct sockaddr *)&server_addr, sizeof(server_addr));
+ if(ret< 0)
+ {
+ perror("connection failed");
+ goto error;
+ }
+
+ printf("[%s] Connected to %s:%d\n", __func__, ip, port);
+ return 0;
+error:
+ if(*client_fd >= 0)
+ {
+ close(*client_fd);
+ *client_fd = -1;
+ }
+ return -1;
+}
+
+int main(int argc, char *argv[])
+{
+ if(argc != 3)
+ {
+ printf("Usage: %s <IP> <PORT>\n", argv[0]);
+ exit(EXIT_FAILURE);
+ }
+
+ int ret = -1;
+ int client_fd = -1;
+ ssize_t bytes_recv = 0;
+ char buffer[BUFFER_SIZE] = {0};
+ mbtk_mbedtls_ssl_result_e mbtk_ssl_ret = MBTK_MBEDTLS_SSL_RESULT_SUCCESS;
+ mbtk_mbedtls_ssl_info_s inter_info = {0};
+ mbtk_mbedtls_ssl_options_s opt = {0};
+
+ ret = tcp_connect_init(&client_fd, atoi(argv[2]), argv[1]);
+ if(ret < 0)
+ {
+ printf("tcp_connect_init() fail\n");
+ exit(EXIT_FAILURE);
+ }
+
+ mbtk_mbedtls_ssl_options_default(&opt);
+ opt.load_cert = true;
+ opt.ca_file = "/ca.crt";
+ opt.crt_file = "/client.crt";
+ opt.key_file = "/client.key";
+ opt.auth_mode = MBTK_MBEDTLS_SSL_VERIFY_REQUIRED;
+ opt.allowed_mds |= MBTK_MBEDTLS_SSL_MD_SHA1;
+ memset(&inter_info, 0x00, sizeof(mbtk_mbedtls_ssl_info_s));
+ mbtk_ssl_ret = mbtk_mbedtls_ssl_init(client_fd, &opt, &inter_info);
+ if(mbtk_ssl_ret != MBTK_MBEDTLS_SSL_RESULT_SUCCESS)
+ {
+ printf("mbtk_mbedtls_ssl_init() fail\n");
+ close(client_fd);
+ client_fd = -1;
+ exit(EXIT_FAILURE);
+ }
+
+ while(1)
+ {
+ printf("Enter message: \n");
+ fgets(buffer, BUFFER_SIZE, stdin);
+
+ if(memcmp(buffer, "exit", 4) == 0)
+ {
+ printf("process exit\n");
+ break;
+ }
+
+ ret = mbtk_mbedtls_ssl_write(inter_info.ssl, (const unsigned char*)buffer, strlen(buffer));
+ if(ret < 0)
+ {
+ perror("send failed");
+ break;
+ }
+
+ bytes_recv = mbtk_mbedtls_ssl_read(inter_info.ssl, (unsigned char*)buffer, BUFFER_SIZE-1);
+ if (bytes_recv <= 0)
+ {
+ bytes_recv == 0 ? printf("Connection closed\n") : perror("recv failed");
+ break;
+ }
+ buffer[bytes_recv] = '\0';
+ printf("Server response: %s\n", buffer);
+ }
+
+ mbtk_mbedtls_ssl_deinit(&inter_info);
+ close(client_fd);
+ client_fd = -1;
+
+ return 0;
+}
+
+#else
+int main(int argc, char *argv[])
+{
+ printf("No support polarssl.\n");
+ return 0;
+}
+#endif
+
diff --git a/mbtk/test/others/mbtk_mdio_demo.c b/mbtk/test/others/mbtk_mdio_demo.c
new file mode 100755
index 0000000..1a129fb
--- /dev/null
+++ b/mbtk/test/others/mbtk_mdio_demo.c
@@ -0,0 +1,201 @@
+
+//mdio eth0 1 读取phy寄存器1的数值
+//mdio eth0 0 0x1120 将0x1120写入 phy寄存器1
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <linux/mii.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/ioctl.h>
+#include <net/if.h>
+#include <linux/sockios.h>
+#include <linux/types.h>
+#include <netinet/in.h>
+#include <unistd.h>
+#include <string.h>
+
+
+#define reteck(ret) \
+ if(ret < 0){ \
+ printf("%m! \"%s\" : line: %d\n", __func__, __LINE__); \
+ goto lab; \
+ }
+
+#define help() \
+ printf("For example:\n"); \
+ printf("mbtk_mdio_demo eth0\n"); \
+ exit(0);
+
+int sockfd;
+
+int main(int argc, char *argv[])
+{
+ int err, value;
+ int cmdIdx = 0;
+ int ret = 0;
+ int i = 0;
+ char operator[10];
+ int opt = 0;
+
+ struct mii_ioctl_data *mii = NULL;
+ struct ifreq ifr;
+
+ if(argc == 1 || !strcmp(argv[1], "-h")){
+ help();
+ }
+
+ memset(&ifr, 0, sizeof(ifr));
+ strncpy(ifr.ifr_name, argv[1], IFNAMSIZ - 1);
+
+ sockfd = socket(PF_LOCAL, SOCK_DGRAM, 0);
+ reteck(sockfd);
+
+ //get phy address in smi bus
+ ret = ioctl(sockfd, SIOCGMIIPHY, &ifr);
+ reteck(ret);
+
+ mii = (struct mii_ioctl_data*)&ifr.ifr_data;
+
+ while(1)
+ {
+
+ printf("=========EX:Jl3103========\n"
+ "\t 0: Set the slave mode\n"
+ "\t 1: Set the master mode\n"
+ "\t 2: indicates setting SQI value view mode\n"
+ "\t 3: Set the VCT value view mode\n"
+ "\t 4: Get slave/master mode\n"
+ "\t 5 EXIT \n"
+ "=========================\n");
+
+ fflush(stdin);
+ fgets(operator, sizeof(operator), stdin);
+ opt = atoi(operator);
+
+ switch(opt)
+ {
+ case 0://"Set the slave mode"
+ {
+ int val = 0;
+ mii->reg_num = 0x0834;
+ ret = ioctl(sockfd, SIOCGMIIREG, &ifr);
+ reteck(ret);
+
+ printf("read phy addr: 0x%x reg: 0x%x value : 0x%x\n", mii->phy_id, mii->reg_num, mii->val_out);
+ val = mii->val_out;
+
+ mii->reg_num = 0x0834;
+ mii->val_in = val & 0xBFFF;// set bit[14] = 0
+
+ ret = ioctl(sockfd, SIOCSMIIREG, &ifr);
+ reteck(ret);
+
+ printf("write phy addr: 0x%x reg: 0x%x value : 0x%x\n", mii->phy_id, mii->reg_num, mii->val_in);
+
+ break;
+ }
+ case 1://"Set the master mode"
+ {
+ int val = 0;
+ mii->reg_num = 0x0834;
+ ret = ioctl(sockfd, SIOCGMIIREG, &ifr);
+ reteck(ret);
+
+ printf("read phy addr: 0x%x reg: 0x%x value : 0x%x\n", mii->phy_id, mii->reg_num, mii->val_out);
+ val = mii->val_out;
+
+ mii->reg_num = 0x0834;
+ mii->val_in = val | 0x4000;//set bit[14] = 1
+
+ ret = ioctl(sockfd, SIOCSMIIREG, &ifr);
+ reteck(ret);
+
+ printf("write phy addr: 0x%x reg: 0x%x value : 0x%x\n", mii->phy_id, mii->reg_num, mii->val_in);
+ break;
+ }
+ case 2://"indicates setting SQI value view mode\"
+ {
+ mii->reg_num = 0x8B10;
+
+ ret = ioctl(sockfd, SIOCGMIIREG, &ifr);
+ reteck(ret);
+
+ printf("read phy addr: 0x%x reg: 0x%x value : 0x%x\n", mii->phy_id, mii->reg_num, mii->val_out);
+ printf("[Jl3103] SQI is 0x%x\n", mii->val_out);
+ break;
+ }
+ case 3://"Set the VCT value view mode"
+ {
+ mii->reg_num = 0x8B00;
+ ret = ioctl(sockfd, SIOCGMIIREG, &ifr);
+ reteck(ret);
+
+ printf("read phy addr: 0x%x reg: 0x%x value : 0x%x\n", mii->phy_id, mii->reg_num, mii->val_out);
+
+ //--TDR Enable
+ mii->reg_num = 0x8B00;
+ mii->val_in = 0x4000;
+
+ ret = ioctl(sockfd, SIOCSMIIREG, &ifr);
+ reteck(ret);
+
+ printf("write phy addr: 0x%x reg: 0x%x value : 0x%x\n", mii->phy_id, mii->reg_num, mii->val_in);
+ usleep(200000);
+ //--TDR Start
+ mii->reg_num = 0x8B00;
+ mii->val_in = 0x5000;
+
+ ret = ioctl(sockfd, SIOCSMIIREG, &ifr);
+ reteck(ret);
+
+ printf("write phy addr: 0x%x reg: 0x%x value : 0x%x\n", mii->phy_id, mii->reg_num, mii->val_in);
+ usleep(20000);
+ //--Read VCT
+ mii->reg_num = 0x8B02;
+ ret = ioctl(sockfd, SIOCGMIIREG, &ifr);
+ reteck(ret);
+
+ printf("read phy addr: 0x%x reg: 0x%x value : 0x%x\n", mii->phy_id, mii->reg_num, mii->val_out);
+ printf("[Jl3103] Open status: %s - Short status: %s\n", (mii->val_out & 0x0002) ? "Open" : "Normal", (mii->val_out & 0x0001) ? "Short" : "Normal");
+
+ mii->reg_num = 0x8B01;
+ ret = ioctl(sockfd, SIOCGMIIREG, &ifr);
+ reteck(ret);
+
+ printf("read phy addr: 0x%x reg: 0x%x value : 0x%x\n", mii->phy_id, mii->reg_num, mii->val_out);
+ printf("[Jl3103] Distance status is 0x%x\n", mii->val_out % 0x200);//bits[9:0]
+ //--TDR Disable
+ mii->reg_num = 0x8B00;
+ mii->val_in = 0;
+
+ ret = ioctl(sockfd, SIOCSMIIREG, &ifr);
+ reteck(ret);
+
+ printf("write phy addr: 0x%x reg: 0x%x value : 0x%x\n", mii->phy_id, mii->reg_num, mii->val_in);
+ break;
+ }
+ case 4://4: Get slave/master mode
+ {
+ int val = 0;
+ mii->reg_num = 0x0834;
+ ret = ioctl(sockfd, SIOCGMIIREG, &ifr);
+ reteck(ret);
+
+ printf("read phy addr: 0x%x reg: 0x%x value : 0x%x\n", mii->phy_id, mii->reg_num, mii->val_out);
+ printf("[Jl3103] mode: %s\n", (mii->val_out & 0x4000) ? "master" : "slave");
+ break;
+ }
+ default://EXIT
+ {
+ printf("break\n");
+ close(sockfd);
+ return 0;
+ }
+ }
+ }
+lab:
+ close(sockfd);
+ return 0;
+}
\ No newline at end of file
diff --git a/mbtk/test/others/mbtk_openssl_demo.c b/mbtk/test/others/mbtk_openssl_demo.c
new file mode 100755
index 0000000..08ff7b8
--- /dev/null
+++ b/mbtk/test/others/mbtk_openssl_demo.c
@@ -0,0 +1,190 @@
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @file NULL
+ @brief libssl.so.3 function test
+*/
+/*-----------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ Copyright (c) 2024 mobiletek Wireless Solution, Co., Ltd. All Rights Reserved.
+ mobiletek Wireless Solution Proprietary and Confidential.
+-------------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ EDIT HISTORY
+ This section contains comments describing changes made to the file.
+ Notice that changes are listed in reverse chronological order.
+ $Header: $
+ when who what, where, why
+ -------- --------- -----------------------------------------------------------------
+ 20250409 yq.wang Created .
+-------------------------------------------------------------------------------------------------*/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#ifdef MBTK_OPENSSL_V3_0_0_SUPPORT
+#include "mbtk_openssl.h"
+
+#define BUFFER_SIZE 1024
+
+void* recv_thread(void *arg)
+{
+ mbtk_openssl_info_s *inter_info = (mbtk_openssl_info_s *)(intptr_t)arg;
+ char buffer[BUFFER_SIZE + 1] = {0};
+
+ while(1)
+ {
+ memset(buffer, 0x00, BUFFER_SIZE + 1);
+ ssize_t len = mbtk_openssl_read(inter_info->ssl, buffer, BUFFER_SIZE);
+ if(len <= 0)
+ {
+ if(len == 0)
+ {
+ printf("Connection closed by server\n");
+ }
+ else
+ {
+ printf("mbtk_openssl_read() fail.[%d]\n", len);
+ }
+ break;
+ }
+ buffer[len] = '\0';
+ printf("\nReceived: %s\n", buffer);
+ }
+
+ return NULL;
+}
+
+static int tcp_connect_init(int *client_fd, int port, char *ip)
+{
+ int ret = -1;
+ struct sockaddr_in server_addr;
+
+ if(port < 1 || port > 65535)
+ {
+ printf("[%s] Invalid port number\n", __func__);
+ goto error;
+ }
+
+ *client_fd = socket(AF_INET, SOCK_STREAM, 0);
+ if(*client_fd < 0)
+ {
+ printf("[%s] socket creation failed\n", __func__);
+ goto error;
+ }
+
+ server_addr.sin_family = AF_INET;
+ server_addr.sin_port = htons(port);
+ ret = inet_pton(AF_INET, ip, &server_addr.sin_addr);
+ if(ret <= 0)
+ {
+ perror("invalid address");
+ goto error;
+ }
+
+ ret = connect(*client_fd, (struct sockaddr *)&server_addr, sizeof(server_addr));
+ if(ret< 0)
+ {
+ perror("connection failed");
+ goto error;
+ }
+
+ printf("[%s] Connected to %s:%d\n", __func__, ip, port);
+ return 0;
+error:
+ if(*client_fd >= 0)
+ {
+ close(*client_fd);
+ *client_fd = -1;
+ }
+ return -1;
+}
+
+int main(int argc, char *argv[])
+{
+ if(argc != 3)
+ {
+ printf("Usage: %s <IP> <PORT>\n", argv[0]);
+ exit(EXIT_FAILURE);
+ }
+
+ int ret = -1;
+ int client_fd = -1;
+ ssize_t bytes_recv = 0;
+ char buffer[BUFFER_SIZE + 1] = {0};
+ mbtk_openssl_result_e mbtk_ret = MBTK_OPENSSL_RESULT_SUCCESS;
+ mbtk_openssl_info_s inter_info = {0};
+ mbtk_openssl_options_s opt = {0};
+
+ pthread_t tid;
+
+ ret = tcp_connect_init(&client_fd, atoi(argv[2]), argv[1]);
+ if(ret < 0)
+ {
+ printf("tcp_connect_init() fail\n");
+ exit(EXIT_FAILURE);
+ }
+
+ mbtk_openssl_options_default(&opt);
+ opt.load_cert = true;
+ opt.ca_file = "/ca.crt";
+ opt.crt_file = "/client.crt";
+ opt.key_file = "/client.key";
+ opt.safety_level = MBTK_OPENSSL_SAFETY_LEVEL_0;//Use level 0 for testing only
+ mbtk_ret = mbtk_openssl_init(client_fd, &opt, &inter_info);
+ if(mbtk_ret != MBTK_OPENSSL_RESULT_SUCCESS)
+ {
+ printf("mbtk_openssl_init() fail\n");
+ close(client_fd);
+ client_fd =-1;
+ exit(EXIT_FAILURE);
+ }
+
+ ret = pthread_create(&tid, NULL, recv_thread, (void*)(intptr_t)&inter_info);
+ if(ret != 0)
+ {
+ perror("thread creation failed");
+ close(client_fd);
+ client_fd = -1;
+ exit(EXIT_FAILURE);
+ }
+
+ while(1)
+ {
+ printf("Enter message: \n");
+ memset(buffer, 0x00, BUFFER_SIZE);
+ fgets(buffer, BUFFER_SIZE, stdin);
+
+ if(memcmp(buffer, "exit", 4) == 0)
+ {
+ printf("process exit\n");
+ break;
+ }
+
+ ret = mbtk_openssl_write(inter_info.ssl, buffer, strlen(buffer));
+ if(ret < 0)
+ {
+ printf("mbtk_openssl_write() fail.[%d]\n", ret);
+ break;
+ }
+ }
+
+ mbtk_openssl_deinit(&inter_info);
+ close(client_fd);
+ client_fd = -1;
+
+ return 0;
+}
+#else
+int main(int argc, char *argv[])
+{
+ printf("No support openssl.\n");
+ return 0;
+}
+#endif
\ No newline at end of file
diff --git a/mbtk/test/others/mbtk_rtp_udp_cli.c b/mbtk/test/others/mbtk_rtp_udp_cli.c
new file mode 100755
index 0000000..92c19cf
--- /dev/null
+++ b/mbtk/test/others/mbtk_rtp_udp_cli.c
@@ -0,0 +1,373 @@
+#include <stdio.h>
+#include <errno.h>
+#include <pthread.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <netinet/in.h>
+#include <sys/epoll.h>
+#include <arpa/inet.h>
+#include <sys/ioctl.h>
+#include <signal.h>
+#include <stdbool.h>
+#include <sys/stat.h>
+
+//#include "mbtk_log.h"
+//#include "mbtk_utils.h"
+// #include "audio_if_api.h"
+//#include "mbtk_audio2.h"
+
+#define RTP_UDP_SER_PORT_DEFAULT 53248
+#define RTP_UDP_CLI_PORT_DEFAULT 55555
+
+
+#define BUFF_SIZE 4096
+
+#define ID_RIFF 0x46464952
+#define ID_WAVE 0x45564157
+#define ID_FMT 0x20746d66
+#define ID_DATA 0x61746164
+#define FORMAT_PCM 1
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifndef UNUSED
+#define UNUSED(a) (void)(a)
+#endif
+
+typedef unsigned int uint32; /* Unsigned 32 bit value */
+
+struct riff_wave_header {
+ unsigned int riff_id;
+ unsigned int riff_sz;
+ unsigned int wave_id;
+};
+
+struct chunk_header {
+ unsigned int id;
+ unsigned int sz;
+};
+
+struct chunk_fmt {
+ unsigned short audio_format;
+ unsigned short num_channels;
+ unsigned int sample_rate;
+ unsigned int byte_rate;
+ unsigned short block_align;
+ unsigned short bits_per_sample;
+};
+
+struct wav_header {
+ unsigned int riff_id;
+ unsigned int riff_sz;
+ unsigned int riff_fmt;
+ unsigned int fmt_id;
+ unsigned int fmt_sz;
+ unsigned short audio_format;
+ unsigned short num_channels;
+ unsigned int sample_rate;
+ unsigned int byte_rate;
+ unsigned short block_align;
+ unsigned short bits_per_sample;
+ unsigned int data_id;
+ unsigned int data_sz;
+};
+
+
+#define PCM_WB_BUF_SIZE 640
+#define PCM_NARROW_BUF_SIZE 320
+
+static int record_fd = -1;
+static int send_fd = -1;
+static bool running = FALSE;
+
+
+static void voip_playback_run(void *arg)
+{
+ int rc, len, fd, frames = 0;
+ int pack_size = 320;
+ //char buf[MBTK_PCM_WB_BUF_SIZE];
+ char buf[BUFF_SIZE];
+ char *path = "/data/voip_playback.wav";
+ struct stat st;
+ struct riff_wave_header riff_wave_header;
+ struct chunk_header chunk_header;
+ struct chunk_fmt chunk_fmt = {0};
+ unsigned int more_chunks = 1;
+ uint32 header[4];
+
+ if(send_fd < 0) {
+ printf("Client socket not open.");
+ return;
+ }
+
+ /* Check and open source file */
+ if (access(path, F_OK) || stat(path, &st)) {
+ printf("%s: error reading from file %s\n", __FUNCTION__, path);
+ return;
+ }
+
+ if (!st.st_size) {
+ printf("%s: empty file %s\n", __FUNCTION__, path);
+ return;
+ }
+
+ fd = open(path, O_RDONLY);
+ if (fd < 0) {
+ printf("%s: error opening file %s\n", __FUNCTION__, path);
+ return;
+ }
+
+ lseek(fd, sizeof(struct wav_header), SEEK_SET);
+ uint32 sequence = 1;
+ uint32 timestamp = 0;
+ while (running) {
+ /* Playback loop */
+ memset(buf, 0x00, sizeof(buf));
+ len = read(fd, buf + 16, pack_size);
+ if (len == -1) {
+ printf("%s: error reading from file\n", __FUNCTION__);
+ break;
+ }
+
+ if (len == 0) {
+ /* reached EOF */
+ printf("%s: nothing to read\n", __FUNCTION__);
+ break;
+ }
+
+
+ header[0] = htonl(((uint32_t) 2 << 30) | ((uint32_t) 1 << 24) | ((uint32_t) 0x60 << 16) | ((uint32_t) sequence));
+ header[1] = htonl(timestamp);
+ header[2] = htonl(0xFFFF0000);
+ header[3] = htonl(0xFFFF0000);
+ memcpy(buf, &header, sizeof(header));
+
+ if((rc = sendto(send_fd, buf, len + 16, 0, NULL, 0)) < len + 16) {
+ printf("Send data fail: %d/%d\n", rc, len);
+ break;
+ } else {
+ printf("SEND : %d / %d\n", rc, len);
+ }
+
+ sequence++;
+ timestamp += len / 2;
+
+ ++frames;
+ //printf("%s: No.%d frame playback[len - %d]\n", __FUNCTION__, ++frames, len);
+ usleep(21000);
+ }
+
+ printf("playback_thread exit.\n");
+}
+
+static void sig_handler(int sig)
+{
+ running = FALSE;
+
+ printf("Success exit by signal...\n");
+
+ sleep(1);
+
+ exit(0);
+}
+
+static int rtp_udp_ser_open(const char *local_addr, int local_port)
+{
+ // No set local addr.
+ UNUSED(local_addr);
+
+ int fd = socket(AF_INET, SOCK_DGRAM, 0);
+ if(fd < 0){
+ printf("socket() fail.[%d]\n", errno);
+ return -1;
+ }
+
+ struct sockaddr_in servaddr;
+ memset(&servaddr, 0, sizeof(servaddr));
+ servaddr.sin_family = AF_INET;
+ servaddr.sin_port = htons(local_port);
+ servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
+
+ if (bind(fd, (struct sockaddr *)&servaddr, sizeof(struct sockaddr_in)) < 0) {
+ printf("bind() failed: %d\n", errno);
+ goto result_fail_with_close;
+ }
+
+ return fd;
+result_fail_with_close:
+ close(fd);
+ fd = -1;
+ printf("mbtk_sock_open() end:fail\n");
+ return -1;
+}
+
+static int rtp_udp_cli_open(const char *remote_addr, int remote_port)
+{
+ struct sockaddr_in dst_sa4, src_sa4;
+ if (inet_pton(AF_INET, "0.0.0.0", &src_sa4.sin_addr) > 0) {
+ src_sa4.sin_family = AF_INET;
+ src_sa4.sin_port = htons(0);
+ memset(&src_sa4.sin_zero, 0, sizeof(src_sa4.sin_zero));
+ } else {
+ printf("Set src addr fail.\n");
+ return -1;
+ }
+
+ if (inet_pton(AF_INET, remote_addr, &dst_sa4.sin_addr) > 0) {
+ dst_sa4.sin_family = AF_INET;
+ dst_sa4.sin_port = htons(remote_port);
+ memset(&dst_sa4.sin_zero, 0, sizeof(dst_sa4.sin_zero));
+ } else {
+ printf("Set dst addr fail.\n");
+ return -1;
+ }
+
+ int fd = socket(AF_INET, SOCK_DGRAM, 0);
+ if(fd < 0){
+ printf("socket() fail.[%d]\n", errno);
+ return -1;
+ }
+
+ if (bind(fd, (struct sockaddr*) &src_sa4, sizeof(src_sa4)) < 0) {
+ printf("bind() failed: %d\n", errno);
+ goto result_fail_with_close;
+ }
+
+ if (connect(fd, (struct sockaddr*) &dst_sa4, sizeof(dst_sa4)) < 0) {
+ printf("connect() failed: %d\n", errno);
+ goto result_fail_with_close;
+ }
+
+#if 0
+ if(socket_noblock(fd)) {
+ goto result_fail_with_close;
+ }
+#endif
+
+ return fd;
+result_fail_with_close:
+ close(fd);
+ fd = -1;
+ printf("mbtk_sock_open() end:fail\n");
+ return -1;
+}
+
+int main(int argc, char *argv[])
+{
+ if(argc != 2) {
+ printf("mbtk_rtp_udp_cli <IP>\n");
+ return -1;
+ }
+
+ // mbtk_log_init("radio", "RTP_TEST");
+
+ signal(SIGINT, sig_handler);
+ signal(SIGTERM, sig_handler);
+
+
+ int ser_fd = rtp_udp_ser_open(NULL, RTP_UDP_SER_PORT_DEFAULT);
+ if(ser_fd < 0) {
+ printf("rtp_udp_ser_open() fail.\n");
+ return -1;
+ }
+
+ send_fd = rtp_udp_cli_open(argv[1], RTP_UDP_CLI_PORT_DEFAULT);
+ if(send_fd < 0) {
+ printf("rtp_udp_cli_open() fail.\n");
+ // return -1;
+ }
+
+ struct wav_header header;
+ int rc = 0;
+ char *path = "/data/voip_record.wav";
+
+ header.riff_id = ID_RIFF;
+ header.riff_sz = 0;
+ header.riff_fmt = ID_WAVE;
+ header.fmt_id = ID_FMT;
+ header.fmt_sz = 16;
+ header.audio_format = 1; //FORMAT_PCM;
+ header.num_channels = 1; //Modem ONLY support mono recording
+ header.sample_rate = 8000;
+ header.bits_per_sample = 16; //PCM_SAMPLEBITS_S16_LE;
+ header.byte_rate = (header.bits_per_sample / 8) * header.num_channels * header.sample_rate;
+ header.block_align = header.num_channels * (header.bits_per_sample / 8);
+ header.data_id = ID_DATA;
+
+ record_fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+ if (record_fd < 0) {
+ printf("%s: error opening file %s!\n", __FUNCTION__, path);
+ return -1;
+ }
+
+ lseek(record_fd, 0, SEEK_SET);
+ write(record_fd, &header, sizeof(struct wav_header));
+
+ //leave enough room for header
+ lseek(record_fd, sizeof(struct wav_header), SEEK_SET);
+
+ char buff[2048];
+ int len_recv;
+ int len_send;
+ running = TRUE;
+ bool is_first = TRUE;
+ while(running) {
+ len_recv = recvfrom(ser_fd, buff, sizeof(buff), 0, NULL, NULL);
+ if(len_recv < 0) {
+ printf("recvfrom() ret is %d,errno - %d\n", len_recv, errno);
+ continue;
+ } else if(len_recv == 0) {
+ printf("ret is 0\n");
+ } else if(len_recv > 16){
+ printf("RECV:len - %d\n", len_recv);
+ write(record_fd, buff + 16, len_recv - 16);
+
+ if(is_first) {
+ pthread_t playabck_thread/*, record_thread*/;
+ rc = pthread_create(&playabck_thread, NULL, (void *)&voip_playback_run, NULL);
+ if (rc < 0) {
+ printf("error creating thread_start!");
+ break;
+ }
+ is_first = FALSE;
+ }
+
+#if 0
+ if(cli_fd < 0) {
+ cli_fd = rtp_udp_cli_open(argv[1], RTP_UDP_CLI_PORT_DEFAULT);
+ if(cli_fd < 0) {
+ printf("rtp_udp_cli_open() fail.\n");
+ // return -1;
+ } else {
+ printf("rtp_udp_cli_open() success.\n");
+ }
+ }
+
+ if(cli_fd > 0) {
+ len_send = sendto(cli_fd, buff, len_recv, 0, NULL, 0);
+ printf("SEND : %d / %d\n", len_send, len_recv);
+ }
+#endif
+ } else {
+ printf("RTP Header error.\n");
+ }
+ }
+
+ close(record_fd);
+
+ close(ser_fd);
+
+ return 0;
+}
+
+
diff --git a/mbtk/test/others/mbtk_spi_write.c b/mbtk/test/others/mbtk_spi_write.c
new file mode 100755
index 0000000..be15742
--- /dev/null
+++ b/mbtk/test/others/mbtk_spi_write.c
@@ -0,0 +1,320 @@
+#include <stdint.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <getopt.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <linux/types.h>
+#include <linux/spi/spidev.h>
+
+#define SPI_DEBUG 1
+#define DEBUG_SWITCH 1 /* 打开调试信息打印功能 */
+#define ERR_DEBUG_SWITCH 1 /* 打印错误信息打印功能 */
+
+/**
+* 简单打印调试信息
+*/
+#if DEBUG_SWITCH
+#define pr_debug(fmt,args...) printf(fmt, ##args)
+#else
+#define pr_debug(fmt,args...) /*do nothing */
+#endif
+
+/**
+* 错误信息打印
+* 自动打印发生错误时代码所在的位置
+*/
+#if ERR_DEBUG_SWITCH
+#define pr_err(fmt,args...) printf("\nError:\nFile:<%s> Fun:[%s] Line:%d\n "fmt, __FILE__, __FUNCTION__, __LINE__, ##args)
+#else
+#define pr_err(fmt,args...) /*do nothing */
+#endif
+
+
+/*
+* 说明:SPI通讯实现
+* 方式一: 同时发送与接收实现函数: SPI_Transfer()
+* 方式二:发送与接收分开来实现
+* SPI_Write() 只发送
+* SPI_Read() 只接收
+* 两种方式不同之处:方式一,在发的过程中也在接收,第二种方式,收与发单独进行
+* Created on: 2013-5-28
+* Author: lzy
+*/
+static char device[64] = {0};
+static uint8_t mode = 0; /* SPI通信使用全双工,设置CPOL=0,CPHA=0。 */
+static uint8_t bits = 8; /* 8bits读写,MSB first。*/
+static uint32_t speed = 12 * 1000 * 1000;/* 设置12M传输速度 */
+static uint16_t delay = 0;
+static int g_SPI_Fd = 0;
+
+static void pabort(const char *s)
+{
+ perror(s);
+ abort();
+}
+
+/**
+* 功 能:同步数据传输
+* 入口参数 :
+* TxBuf -> 发送数据首地址
+* len -> 交换数据的长度
+* 出口参数:
+* RxBuf -> 接收数据缓冲区
+* 返回值:0 成功
+* 开发人员:Lzy 2013-5-22
+*/
+int SPI_Transfer(const uint8_t *TxBuf, uint8_t *RxBuf, int len)
+{
+ int ret;
+ int fd = g_SPI_Fd;
+
+ struct spi_ioc_transfer tr = {
+ .tx_buf = (unsigned long) TxBuf,
+ .rx_buf = (unsigned long) RxBuf,
+ .len = len,
+ .delay_usecs = delay,
+ };
+
+ ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr);
+ if (ret < 1)
+ pr_err("can't send spi message");
+ else
+ {
+#if SPI_DEBUG
+ int i;
+ pr_debug("\nmbtk: send spi message Succeed");
+ pr_debug("\nmbtk: SPI Send [Len:%d]: ", len);
+ for (i = 0; i < len; i++)
+ {
+ if (i % 8 == 0)
+ printf("\n\t");
+ printf("0x%02X ", TxBuf[i]);
+ }
+ printf("\n");
+
+ pr_debug("mbtk: SPI Receive [len:%d]:", len);
+ for (i = 0; i < len; i++)
+ {
+ if (i % 8 == 0)
+ printf("\n\t");
+ printf("0x%02X ", RxBuf[i]);
+ }
+ printf("\n");
+#endif
+ }
+ return ret;
+}
+
+/**
+* 功 能:发送数据
+* 入口参数 :
+* TxBuf -> 发送数据首地址
+* len -> 发送与长度
+*返回值:0 成功
+* 开发人员:Lzy 2013-5-22
+*/
+int SPI_Write(uint8_t *TxBuf, int len)
+{
+ int ret;
+ int fd = g_SPI_Fd;
+
+ ret = write(fd, TxBuf, len);
+ if (ret < 0)
+ pr_err("SPI Write error\n");
+ else
+ {
+#if SPI_DEBUG
+ int i;
+ pr_debug("\nSPI Write [Len:%d]: ", len);
+ for (i = 0; i < len; i++)
+ {
+ if (i % 8 == 0)
+ printf("\n\t");
+ printf("0x%02X ", TxBuf[i]);
+ }
+ printf("\n");
+
+#endif
+ }
+
+ return ret;
+}
+
+/**
+* 功 能:接收数据
+* 出口参数:
+* RxBuf -> 接收数据缓冲区
+* rtn -> 接收到的长度
+* 返回值:>=0 成功
+* 开发人员:Lzy 2013-5-22
+*/
+int SPI_Read(uint8_t *RxBuf, int len)
+{
+ int ret;
+ int fd = g_SPI_Fd;
+ ret = read(fd, RxBuf, len);
+ if (ret < 0)
+ pr_err("SPI Read error\n");
+ else
+ {
+#if SPI_DEBUG
+ int i;
+ pr_debug("SPI Read [len:%d]:", len);
+ for (i = 0; i < len; i++)
+ {
+ if (i % 8 == 0)
+ printf("\n\t");
+ printf("0x%02X ", RxBuf[i]);
+ }
+ printf("\n");
+#endif
+ }
+
+ return ret;
+}
+
+/**
+* 功 能:打开设备 并初始化设备
+* 入口参数 :
+* 出口参数:
+* 返回值:0 表示已打开 0XF1 表示SPI已打开 其它出错
+* 开发人员:Lzy 2013-5-22
+*/
+int SPI_Open(void)
+{
+ int fd;
+ int ret = 0;
+
+ if (g_SPI_Fd != 0) /* 设备已打开 */
+ return 0xF1;
+
+ fd = open(device, O_RDWR);
+ if (fd < 0)
+ pabort("can't open device");
+ else
+ pr_debug("SPI - Open Succeed. Start Init SPI...\n");
+
+ g_SPI_Fd = fd;
+ /*
+ * spi mode
+ */
+ ret = ioctl(fd, SPI_IOC_WR_MODE, &mode);
+ if (ret == -1)
+ pabort("can't set spi mode");
+
+ ret = ioctl(fd, SPI_IOC_RD_MODE, &mode);
+ if (ret == -1)
+ pabort("can't get spi mode");
+
+ /*
+ * bits per word
+ */
+ ret = ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
+ if (ret == -1)
+ pabort("can't set bits per word");
+
+ ret = ioctl(fd, SPI_IOC_RD_BITS_PER_WORD, &bits);
+ if (ret == -1)
+ pabort("can't get bits per word");
+
+ /*
+ * max speed hz
+ */
+ ret = ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed);
+ if (ret == -1)
+ pabort("can't set max speed hz");
+
+ ret = ioctl(fd, SPI_IOC_RD_MAX_SPEED_HZ, &speed);
+ if (ret == -1)
+ pabort("can't get max speed hz");
+
+ pr_debug("spi mode: %d\n", mode);
+ pr_debug("bits per word: %d\n", bits);
+ pr_debug("max speed: %d KHz (%d MHz)\n", speed / 1000, speed / 1000 / 1000);
+
+ return ret;
+}
+
+/**
+* 功 能:关闭SPI模块
+*/
+int SPI_Close(void)
+{
+ int fd = g_SPI_Fd;
+
+ if (fd == 0) /* SPI是否已经打开*/
+ return 0;
+ close(fd);
+ g_SPI_Fd = 0;
+
+ return 0;
+}
+
+/**
+* 功 能:自发自收测试程序
+* 接收到的数据与发送的数据如果不一样 ,则失败
+* 说明:
+* 在硬件上需要把输入与输出引脚短跑
+* 开发人员:Lzy 2013-5-22
+*/
+int SPI_LookBackTest(void)
+{
+ int ret, i;
+ const int BufSize = 16;
+ uint8_t tx[BufSize], rx[BufSize];
+
+ bzero(rx, sizeof(rx));
+ for (i = 0; i < BufSize; i++)
+ tx[i] = i;
+
+ pr_debug("\nSPI - LookBack Mode Test...\n");
+ ret = SPI_Transfer(tx, rx, BufSize);
+ if (ret > 1)
+ {
+ ret = memcmp(tx, rx, BufSize);
+ if (ret != 0)
+ {
+ pr_err("LookBack Mode Test error\n");
+// pabort("error");
+ }
+ else
+ pr_debug("SPI - LookBack Mode OK\n");
+ }
+
+ return ret;
+}
+
+int main(int argc, char *argv[])
+{
+ int ret = 0;
+
+ if(argc == 2)
+ {
+ memset(device, 0x0, 64);
+ memcpy(device, argv[1], strlen(argv[1]));
+ printf("device: %s\n", device);
+ }
+ else
+ {
+ printf("format: mbtk_spi_write <dev>\n");
+ return -1;
+ }
+ ret = SPI_Open();
+ if (ret)
+ return ret;
+
+ SPI_LookBackTest();
+
+// unsigned char buf[10];
+// SPI_Write(buf, 10);
+// SPI_Read(buf, 10);
+
+ SPI_Close();
+
+return 0;
+}
+
diff --git a/mbtk/test/others/partition_write_demo.c b/mbtk/test/others/partition_write_demo.c
new file mode 100755
index 0000000..5edfa2d
--- /dev/null
+++ b/mbtk/test/others/partition_write_demo.c
@@ -0,0 +1,56 @@
+#include <stdio.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+int main(int argc, char *argv[])
+{
+
+#if 1
+ // 100K
+ char buffer[102400];
+ long len = -1;
+ long count = 0;
+ int fd = open("/etc/file.temp", O_CREAT | O_WRONLY | O_TRUNC, 0666);
+ if(fd < 0) {
+ printf("Open file error:%d\n", errno);
+ return -1;
+ }
+
+ while((len = write(fd, buffer, sizeof(buffer))) > 0){
+ count += len;
+ printf("write : %ld\n", count);
+ //usleep(1000);
+ }
+
+ printf("Write complete,len = %ld, errno = %d\n", len, errno);
+
+ close(fd);
+#else
+ // 100K
+ int buffer = 1;
+ long len = -1;
+ long count = 0;
+
+ FILE *file = fopen("/etc/file.temp", "w");
+ if(file == NULL) {
+ printf("Open file error:%d\n", errno);
+ return -1;
+ }
+
+ while((len = fwrite(&buffer, sizeof(int), 1,file)) > 0){
+ buffer++;
+
+ // printf("write : %d\n", buffer);
+ //usleep(1000);
+ }
+
+ printf("Write complete,len = %d, errno = %d\n", len, errno);
+
+ fclose(file);
+#endif
+ return 0;
+}
+
diff --git a/mbtk/test/others/polarssl_demo.c b/mbtk/test/others/polarssl_demo.c
new file mode 100755
index 0000000..1405fdb
--- /dev/null
+++ b/mbtk/test/others/polarssl_demo.c
@@ -0,0 +1,488 @@
+#include <stdio.h>
+
+#ifdef MBTK_POLARSSL_SUPPORT
+#include "mbtk_log.h"
+#include "ql/ql_mcm_sim.h"
+#include <sys/socket.h>
+#include <polarssl/net.h>
+#include <polarssl/ssl.h>
+#include <polarssl/entropy.h>
+#include <polarssl/ctr_drbg.h>
+#include <polarssl/certs.h>
+#include <polarssl/x509.h>
+#include <polarssl/error.h>
+#include <polarssl/debug.h>
+#include <polarssl/config.h>
+
+#define DFL_SERVER_NAME "asr"
+#define DFL_SERVER_ADDR NULL
+#define DFL_SERVER_PORT 4433
+#define DFL_REQUEST_PAGE "/"
+#define DFL_REQUEST_SIZE -1
+#define DFL_DEBUG_LEVEL 0
+#define DFL_NBIO 0
+#define DFL_CA_FILE "/ca.crt"
+#define DFL_CA_PATH "/ca.crt"
+#define DFL_CRT_FILE "/client.crt"
+#define DFL_KEY_FILE "/client.key"
+#define DFL_PSK ""
+#define DFL_PSK_IDENTITY "Client_identity"
+#define DFL_FORCE_CIPHER 0
+#define DFL_RENEGOTIATION SSL_RENEGOTIATION_DISABLED
+#define DFL_ALLOW_LEGACY SSL_LEGACY_NO_RENEGOTIATION
+#define DFL_RENEGOTIATE 0
+#define DFL_EXCHANGES 1
+#define DFL_MIN_VERSION SSL_MINOR_VERSION_3
+#define DFL_MAX_VERSION SSL_MINOR_VERSION_3
+#define DFL_AUTH_MODE SSL_VERIFY_REQUIRED
+#define DFL_MFL_CODE SSL_MAX_FRAG_LEN_NONE
+#define DFL_TRUNC_HMAC 0
+#define DFL_RECONNECT 0
+#define DFL_RECO_DELAY 0
+#define DFL_TICKETS SSL_SESSION_TICKETS_ENABLED
+#define DFL_ALPN_STRING NULL
+
+#define GET_REQUEST "GET %s HTTP/1.0\r\nExtra-header: "
+#define GET_REQUEST_END "\r\n\r\n"
+
+#define CA_CERT \
+"-----BEGIN CERTIFICATE-----\r\n" \
+"MIIDKjCCAhICCQCOewfZiRCiNjANBgkqhkiG9w0BAQUFADBXMQswCQYDVQQGEwJD\r\n" \
+"TjEQMA4GA1UECBMHU2lDaHVhbjEVMBMGA1UEChMMTU9CSUxFVEVLLkNBMQswCQYD\r\n" \
+"VQQLEwJJVDESMBAGA1UEAxMJTU9CSUxFVEVLMB4XDTE4MDkxODA4MDUzMloXDTMz\r\n" \
+"MDkxOTA4MDUzMlowVzELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB1NpQ2h1YW4xFTAT\r\n" \
+"BgNVBAoTDE1PQklMRVRFSy5DQTELMAkGA1UECxMCSVQxEjAQBgNVBAMTCU1PQklM\r\n" \
+"RVRFSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOkdYJF1h1xjKbY0\r\n" \
+"ipbl88G653PiCh8ZMjmIUYeiDKC8+0wtXZtHvQIl6AncOzBy9XHVOctbKn34exC8\r\n" \
+"SEotMuo2T49vs9VtE8GYu2pOrf3m42NpLRnYAxfm9qw53CMHx+Jn7Oa9fnxa8haA\r\n" \
+"pRc2BTVadWGoS8EEwoZFk0eNb7Z2Gc7U0c+GhISI4oVTTocGvGgMzkvduu5JJbbc\r\n" \
+"BOcNFrii9sRO9vtOYQtqOEg01Uum2Dwp/o2bDLXNJEqAIh4WACiM4iPmmlRHWT2y\r\n" \
+"NjQ3vcbEdrFwbHRtO46+Vw54HnSyCoFb3uCHMNMvXObZ/8AU9E3Cgat4j0sgEeB0\r\n" \
+"hqA4MiMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAtEAjf0CjsLgG9ROdmp1qXYft\r\n" \
+"+ndIT5l82KRK57ZQsfdFbnJOvALeF/ICKU0M2TXgJNiGOA5RxDi00YYdMbOIPwVZ\r\n" \
+"JH4b87J/LYdLAGf+Q+kVI6gWH3hPm4Jzfzq/40KVrf3mpa54yWz6ZYtwfxBjrMgr\r\n" \
+"IVe0O5SIJ99lsddgzgUkqYN2vWJW2zZ50xuXOAyo+pOnjzX0wuOcaBT3JCHWJRAb\r\n" \
+"VhJCf9JbswDgnddJerqFtB8pnpAOdGokLCOoM06q3s3P9mhGX+72HXdX7G8CSAuG\r\n" \
+"PVCGf6RaF0/G4B9R1c3du3lZRlQWfx2pxyU0LS86iFQFWqzqcWEXIcULVdcErQ==\r\n" \
+"-----END CERTIFICATE-----\r\n"
+
+const char ca1_cert[]= CA_CERT;
+
+
+struct options
+{
+ const char *server_name; /* hostname of the server (client only) */
+ const char *server_addr; /* address of the server (client only) */
+ int server_port; /* port on which the ssl service runs */
+ int debug_level; /* level of debugging */
+ int nbio; /* should I/O be blocking? */
+ const char *request_page; /* page on server to request */
+ int request_size; /* pad request with header to requested size */
+ const char *ca_file; /* the file with the CA certificate(s) */
+ const char *ca_path; /* the path with the CA certificate(s) reside */
+ const char *crt_file; /* the file with the client certificate */
+ const char *key_file; /* the file with the client key */
+ const char *psk; /* the pre-shared key */
+ const char *psk_identity; /* the pre-shared key identity */
+ int force_ciphersuite[2]; /* protocol/ciphersuite to use, or all */
+ int renegotiation; /* enable / disable renegotiation */
+ int allow_legacy; /* allow legacy renegotiation */
+ int renegotiate; /* attempt renegotiation? */
+ int renego_delay; /* delay before enforcing renegotiation */
+ int exchanges; /* number of data exchanges */
+ int min_version; /* minimum protocol version accepted */
+ int max_version; /* maximum protocol version accepted */
+ int auth_mode; /* verify mode for connection */
+ unsigned char mfl_code; /* code for maximum fragment length */
+ int trunc_hmac; /* negotiate truncated hmac or not */
+ int reconnect; /* attempt to resume session */
+ int reco_delay; /* delay in seconds before resuming session */
+ int tickets; /* enable / disable session tickets */
+ const char *alpn_string; /* ALPN supported protocols */
+} opt;
+
+
+static sim_client_handle_type cli_handle;
+int server_fd = -1;
+
+static void my_debug( void *ctx, int level, const char *str )
+{
+ ((void) level);
+
+ fprintf( (FILE *) ctx, "%s", str );
+ fflush( (FILE *) ctx );
+}
+
+
+static int ssl_client_init()
+{
+ int ret = 0, len, tail_len, i, written, frags;
+ unsigned char buf[SSL_MAX_CONTENT_LEN + 1];
+ const char *pers = "ssl_client";
+
+ entropy_context entropy;
+ ctr_drbg_context ctr_drbg;
+ ssl_context ssl;
+ ssl_session saved_session;
+ x509_crt cacert;
+ x509_crt clicert;
+ pk_context pkey;
+
+ memset( &ssl, 0, sizeof( ssl_context ) );
+ memset( &saved_session, 0, sizeof( ssl_session ) );
+ x509_crt_init( &cacert );
+ x509_crt_init( &clicert );
+ pk_init( &pkey );
+
+ fflush( stdout );
+
+ /*
+ * 0. Initialize the RNG and the session data
+ */
+
+ entropy_init( &entropy );
+ if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
+ (const unsigned char *) pers,
+ strlen( pers ) ) ) != 0 )
+ {
+ printf( " failed\n ! ctr_drbg_init returned -0x%x\n", -ret );
+ goto exit;
+ }
+
+ printf( " ok\n" );
+
+ /*
+ * 1.1. Load the trusted CA
+ */
+ //ret = x509_crt_parse(&cacert,ca1_cert,strlen(ca1_cert));
+ ret = x509_crt_parse_file( &cacert, opt.ca_path );
+ if( ret < 0 )
+ {
+ printf( " failed\n ! ca x509_crt_parse returned -0x%x\n\n", -ret );
+ goto exit;
+ }
+ printf( " ok\n" );
+
+ /*
+ * 1.2. Load own certificate and private key
+ *
+ * (can be skipped if client authentication is not required)
+ */
+
+ ret = x509_crt_parse_file( &clicert, opt.crt_file );
+ if( ret != 0 )
+ {
+ printf( " failed\n ! crt x509_crt_parse returned -0x%x\n\n", -ret );
+ goto exit;
+ }
+
+ ret = pk_parse_keyfile( &pkey, opt.key_file, NULL);
+ if( ret != 0 )
+ {
+ printf( " failed\n ! key x509_crt_parse returned -0x%x\n\n", -ret );
+ goto exit;
+ }
+
+ printf( " ok\n" );
+
+ /*
+ * 2. Setup stuff
+ */
+ printf( " . Setting up the SSL/TLS structure..." );
+ fflush( stdout );
+
+ if( ( ret = ssl_init( &ssl ) ) != 0 )
+ {
+ printf( " failed\n ! ssl_init returned -0x%x\n\n", -ret );
+ goto exit;
+ }
+
+ ssl_set_endpoint( &ssl, SSL_IS_CLIENT );
+ ssl_set_authmode( &ssl, opt.auth_mode );
+
+ ssl_set_rng( &ssl, ctr_drbg_random, &ctr_drbg );
+ ssl_set_dbg( &ssl, my_debug, stdout );
+
+ ssl_set_bio( &ssl, net_recv, &server_fd, net_send, &server_fd );
+
+ ssl_set_renegotiation( &ssl, opt.renegotiation );
+ ssl_legacy_renegotiation( &ssl, opt.allow_legacy );
+
+ ssl_set_ca_chain( &ssl, &cacert, NULL, NULL );
+
+ if( ( ret = ssl_set_own_cert( &ssl, &clicert, &pkey ) ) != 0 )
+ {
+ printf( " failed\n ! ssl_set_own_cert returned %d\n\n", ret );
+ goto exit;
+ }
+ if( opt.min_version != -1 )
+ ssl_set_min_version( &ssl, SSL_MAJOR_VERSION_3, opt.min_version );
+ if( opt.max_version != -1 )
+ ssl_set_max_version( &ssl, SSL_MAJOR_VERSION_3, opt.max_version );
+ printf( " ok\n" );
+ /*
+ * 3. Handshake
+ */
+ printf( " . Performing the SSL/TLS handshake..." );
+ fflush( stdout );
+
+ while( ( ret = ssl_handshake( &ssl ) ) != 0 )
+ {
+ if( ret != POLARSSL_ERR_NET_WANT_READ && ret != POLARSSL_ERR_NET_WANT_WRITE )
+ {
+ printf( " failed\n ! ssl_handshake returned -0x%x\n", -ret );
+ if( ret == POLARSSL_ERR_X509_CERT_VERIFY_FAILED )
+ printf(
+ " Unable to verify the server's certificate. "
+ "Either it is invalid,\n"
+ " or you didn't set ca_file or ca_path "
+ "to an appropriate value.\n"
+ " Alternatively, you may want to use "
+ "auth_mode=optional for testing purposes.\n" );
+ printf( "\n" );
+ goto exit;
+ }
+ }
+
+ printf( " ok\n [ Protocol is %s ]\n [ Ciphersuite is %s ]\n",
+ ssl_get_version( &ssl ), ssl_get_ciphersuite( &ssl ) );
+
+ /*
+ * 4. Verify the server certificate
+ */
+ printf( " . Verifying peer X.509 certificate..." );
+
+ if( ( ret = ssl_get_verify_result( &ssl ) ) != 0 )
+ {
+ printf( " failed\n" );
+
+ if( ( ret & BADCERT_EXPIRED ) != 0 )
+ printf( " ! server certificate has expired\n" );
+
+ if( ( ret & BADCERT_REVOKED ) != 0 )
+ printf( " ! server certificate has been revoked\n" );
+
+ if( ( ret & BADCERT_CN_MISMATCH ) != 0 )
+ printf( " ! CN mismatch (expected CN=%s)\n", opt.server_name );
+
+ if( ( ret & BADCERT_NOT_TRUSTED ) != 0 )
+ printf( " ! self-signed or not signed by a trusted CA\n" );
+
+ printf( "\n" );
+ }
+ else
+ printf( " ok\n" );
+
+ if( ssl_get_peer_cert( &ssl ) != NULL )
+ {
+ printf( " . Peer certificate information ...\n" );
+ x509_crt_info( (char *) buf, sizeof( buf ) - 1, " ",
+ ssl_get_peer_cert( &ssl ) );
+ printf( "%s\n", buf );
+ }
+ /*
+ * 5. Write the GET request
+ */
+ printf( " > Write to server:" );
+ fflush( stdout );
+
+ len = snprintf( (char *) buf, sizeof(buf) - 1, GET_REQUEST,
+ opt.request_page );
+ tail_len = strlen( GET_REQUEST_END );
+
+ /* Add padding to GET request to reach opt.request_size in length */
+ if( opt.request_size != DFL_REQUEST_SIZE &&
+ len + tail_len < opt.request_size )
+ {
+ memset( buf + len, 'A', opt.request_size - len - tail_len );
+ len += opt.request_size - len - tail_len;
+ }
+
+ strncpy( (char *) buf + len, GET_REQUEST_END, sizeof(buf) - len - 1 );
+ len += tail_len;
+
+ /* Truncate if request size is smaller than the "natural" size */
+ if( opt.request_size != DFL_REQUEST_SIZE &&
+ len > opt.request_size )
+ {
+ len = opt.request_size;
+
+ /* Still end with \r\n unless that's really not possible */
+ if( len >= 2 ) buf[len - 2] = '\r';
+ if( len >= 1 ) buf[len - 1] = '\n';
+ }
+
+ for( written = 0, frags = 0; written < len; written += ret, frags++ )
+ {
+ while( ( ret = ssl_write( &ssl, buf + written, len - written ) ) <= 0 )
+ {
+ if( ret != POLARSSL_ERR_NET_WANT_READ && ret != POLARSSL_ERR_NET_WANT_WRITE )
+ {
+ printf( " failed\n ! ssl_write returned -0x%x\n\n", -ret );
+ goto exit;
+ }
+ }
+ }
+
+ buf[written] = '\0';
+ printf( " %d bytes written in %d fragments\n\n%s\n", written, frags, (char *) buf );
+
+ /*
+ * 6. Read the HTTP response
+ */
+ printf( " < Read from server:" );
+ fflush( stdout );
+
+ do
+ {
+ len = sizeof( buf ) - 1;
+ memset( buf, 0, sizeof( buf ) );
+ ret = ssl_read( &ssl, buf, len );
+
+ if( ret == POLARSSL_ERR_NET_WANT_READ ||
+ ret == POLARSSL_ERR_NET_WANT_WRITE )
+ continue;
+
+ if( ret <= 0 )
+ {
+ switch( ret )
+ {
+ case POLARSSL_ERR_SSL_PEER_CLOSE_NOTIFY:
+ printf( " connection was closed gracefully\n" );
+ ret = 0;
+ goto close_notify;
+
+ case 0:
+ case POLARSSL_ERR_NET_CONN_RESET:
+ printf( " connection was reset by peer\n" );
+ ret = 0;
+ goto exit;
+
+ default:
+ printf( " ssl_read returned -0x%x\n", -ret );
+ goto exit;
+ }
+ }
+
+ len = ret;
+ buf[len] = '\0';
+ printf( " %d bytes read\n\n%s", len, (char *) buf );
+
+ /* End of message should be detected according to the syntax of the
+ * application protocol (eg HTTP), just use a dummy test here. */
+ if( ret > 0 && buf[len-1] == '\n' )
+ {
+ ret = 0;
+ break;
+ }
+ }
+ while( 1 );
+
+ /*
+ * 7. Done, cleanly close the connection
+ */
+close_notify:
+ printf( " . Closing the connection..." );
+
+ while( ( ret = ssl_close_notify( &ssl ) ) < 0 )
+ {
+ if( ret == POLARSSL_ERR_NET_CONN_RESET )
+ {
+ printf( " ok (already closed by peer)\n" );
+ ret = 0;
+ goto exit;
+ }
+
+ if( ret != POLARSSL_ERR_NET_WANT_READ &&
+ ret != POLARSSL_ERR_NET_WANT_WRITE )
+ {
+ printf( " failed\n ! ssl_close_notify returned %d\n\n", ret );
+ goto exit;
+ }
+ }
+
+ printf( " ok\n" );
+exit:
+ if( server_fd )
+ net_close( server_fd );
+
+ x509_crt_free( &clicert );
+ x509_crt_free( &cacert );
+ pk_free( &pkey );
+ ssl_session_free( &saved_session );
+ ssl_free( &ssl );
+ ctr_drbg_free( &ctr_drbg );
+ entropy_free( &entropy );
+
+ printf( " ok end\n" );
+ return 0;
+}
+
+int main(int argc, char *argv[])
+{
+ printf("Start!\n");
+
+ opt.server_name = DFL_SERVER_NAME;
+ opt.server_addr = DFL_SERVER_ADDR;
+ opt.server_port = DFL_SERVER_PORT;
+ opt.debug_level = DFL_DEBUG_LEVEL;
+ opt.nbio = DFL_NBIO;
+ opt.request_page = DFL_REQUEST_PAGE;
+ opt.request_size = DFL_REQUEST_SIZE;
+ opt.ca_file = DFL_CA_FILE;
+ opt.ca_path = DFL_CA_PATH;
+ opt.crt_file = DFL_CRT_FILE;
+ opt.key_file = DFL_KEY_FILE;
+ opt.psk = DFL_PSK;
+ opt.psk_identity = DFL_PSK_IDENTITY;
+ opt.force_ciphersuite[0]= DFL_FORCE_CIPHER;
+ opt.renegotiation = DFL_RENEGOTIATION;
+ opt.allow_legacy = DFL_ALLOW_LEGACY;
+ opt.renegotiate = DFL_RENEGOTIATE;
+ opt.exchanges = DFL_EXCHANGES;
+ opt.min_version = DFL_MIN_VERSION;
+ opt.max_version = DFL_MAX_VERSION;
+ opt.auth_mode = DFL_AUTH_MODE;
+ opt.mfl_code = DFL_MFL_CODE;
+ opt.trunc_hmac = DFL_TRUNC_HMAC;
+ opt.reconnect = DFL_RECONNECT;
+ opt.reco_delay = DFL_RECO_DELAY;
+ opt.tickets = DFL_TICKETS;
+ opt.alpn_string = DFL_ALPN_STRING;
+
+
+ if(argc < 3)
+ {
+ printf("input error \n example: mbtk_test ip prot\n");
+ return -1;
+ }
+ opt.server_addr = argv[1];
+ opt.server_port = atoi(argv[2]);
+
+ int ret = -1;
+ if( ( ret = net_connect( &server_fd, opt.server_addr,
+ opt.server_port ) ) != 0 )
+ {
+ printf( " failed\n ! net_connect returned -0x%x\n\n", -ret );
+ return -1;
+ }
+
+ ret = net_set_nonblock( server_fd );
+ if( ret != 0 )
+ {
+ printf( " failed\n ! net_set_(non)block() returned -0x%x\n\n", -ret );
+ return -1;
+ }
+ printf( " ok\n" );
+ ret = ssl_client_init();
+ printf("ret is %d\n",ret);
+ printf("End!\n");
+ return 0;
+}
+#else
+int main(int argc, char *argv[])
+{
+ printf("No support polarssl.\n");
+ return 0;
+}
+#endif
\ No newline at end of file
diff --git a/mbtk/test/others/proc_demo.c b/mbtk/test/others/proc_demo.c
new file mode 100755
index 0000000..929984c
--- /dev/null
+++ b/mbtk/test/others/proc_demo.c
@@ -0,0 +1,42 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int pub_int_d = 4;
+char *str = "abc";
+int bss_1;
+
+//int bss_1;
+//static int static_bss_2;
+
+void test(int c)
+{
+// int d = 10;
+ //printf("函数参数:test_c = %p, 局部变量:d = %p\n", &c, &d);
+}
+
+int main(int argc, char *argv[])
+{
+ printf("[栈]函数参数:argc = %p, argv = %p\n", &argc, argv);
+
+ int int_a;
+ static int static_int_b;
+ char *temp_malloc = (char*)malloc(10);
+ const char temp[10];
+
+ printf("[栈]局部变量:int_a[%d] = %p, [BSS]局部静态变量:static_int_b[%d] = %p\n", int_a, &int_a, static_int_b, &static_int_b);
+ printf("[DATA]全局变量:pub_int_d[%d] = %p\n", pub_int_d, &pub_int_d);
+ printf("常量:str = %p, 堆空间:temp_malloc = %p\n", str, temp_malloc);
+ printf("函数:test_func = %p\n", test);
+ printf("const_str = %p, &(temp[3]) = %p\n", temp, &(temp[3]));
+ printf("BSS : %d, %p\n", bss_1, &bss_1);
+
+ test(5);
+
+ while(1) {
+ sleep(24 * 60 * 60);
+ }
+
+ return 0;
+}
+
diff --git a/mbtk/test/others/touch_ev_demo.c b/mbtk/test/others/touch_ev_demo.c
new file mode 100755
index 0000000..133384b
--- /dev/null
+++ b/mbtk/test/others/touch_ev_demo.c
@@ -0,0 +1,376 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <sys/select.h>
+#include <sys/time.h>
+#include <errno.h>
+#include <linux/input.h>
+#include <unistd.h>
+#include <linux/fb.h>
+#include <sys/mman.h>
+#include <time.h>
+#include <pthread.h>
+#include <sys/poll.h>
+#include <dirent.h>
+#include <stdbool.h>
+
+// #include "mbtk_log.h"
+
+#ifndef TRUE
+#define TRUE 1 /* Boolean true value. */
+#endif
+
+#ifndef true
+#define true 1 /* Boolean true value. */
+#endif
+
+#ifndef FALSE
+#define FALSE 0 /* Boolean false value. */
+#endif
+
+#ifndef false
+#define false 0 /* Boolean false value. */
+#endif
+
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+
+#ifndef null
+#define null 0
+#endif
+
+#define LOGI printf
+#define LOGE printf
+
+/**
+ * Compiler-digit : 16
+ * char : 1 (%c)
+ * char* : 2
+ * short int : 2
+ * int : 2 (%d)
+ * unsigned int : 2 (%u)
+ * float : 4 (%f)
+ * double : 8 (%f)
+ * long : 4
+ * unsigned long : 4
+ * long long : 8
+ * unsigned long long : 8
+ *
+ *
+ * Compiler-digit : 32
+ * char : 1
+ * char* : 4
+ * short int : 2
+ * int : 4
+ * unsigned int : 4
+ * float : 4
+ * double : 8
+ * long : 4
+ * unsigned long : 4
+ * long long : 8
+ * unsigned long long : 8
+ *
+ *
+ * Compiler-digit : 64
+ * char : 1
+ * char* : 8
+ * short int : 2
+ * int : 4
+ * unsigned int : 4
+ * float : 4
+ * double : 8
+ * long : 8
+ * unsigned long : 8
+ * long long : 8
+ * unsigned long long : 8
+ */
+typedef unsigned char boolean; /* Boolean value type. */
+// typedef unsigned char bool; /* Boolean value type. */
+typedef unsigned long long uint64; /* Unsigned 64 bit value */
+typedef unsigned long long uint64_t; /* Unsigned 64 bit value */
+typedef unsigned int uint32; /* Unsigned 32 bit value */
+typedef unsigned int uint32_t; /* Unsigned 32 bit value */
+typedef unsigned short uint16; /* Unsigned 16 bit value */
+typedef unsigned short uint16_t;
+typedef unsigned char uint8; /* Unsigned 8 bit value */
+typedef unsigned char uint8_t;
+typedef signed long long int64; /* Signed 64 bit value */
+typedef signed long long sint64; /* Signed 64 bit value */
+typedef signed int int32; /* Signed 32 bit value */
+typedef signed int sint32; /* Signed 32 bit value */
+typedef signed short int16; /* Signed 16 bit value */
+typedef signed short sint16; /* Signed 16 bit value */
+typedef signed char int8; /* Signed 8 bit value */
+typedef signed char sint8; /* Signed 8 bit value */
+typedef unsigned char byte; /* byte type */
+
+//#include "mbtk_type.h"
+//#include "mbtk_log.h"
+
+typedef int (*ev_callback)(int fd, uint32_t epevents, void *data);
+
+typedef enum {
+ ACTION_DOWN,
+ ACTION_MOVE,
+ ACTION_UP,
+ ACTION_CANCEL
+} touch_event_action_enum;
+
+typedef struct {
+ touch_event_action_enum action;
+ int x;
+ int y;
+} touch_event;
+
+static int move_x;
+static touch_event event_pre;
+static bool action_down_get = false;
+static bool action_touched = false;
+
+#define MAX_DEVICES 16
+#define MAX_MISC_FDS 16
+
+#define BITS_PER_LONG (sizeof(unsigned long) * 8)
+#define BITS_TO_LONGS(x) (((x) + BITS_PER_LONG - 1) / BITS_PER_LONG)
+
+#define test_bit(bit, array) \
+ ((array)[(bit)/BITS_PER_LONG] & (1 << ((bit) % BITS_PER_LONG)))
+
+struct fd_info {
+ ev_callback cb;
+ void *data;
+};
+
+static struct pollfd ev_fds[MAX_DEVICES + MAX_MISC_FDS];
+static struct fd_info ev_fdinfo[MAX_DEVICES + MAX_MISC_FDS];
+
+static unsigned ev_count = 0;
+static unsigned ev_dev_count = 0;
+static unsigned ev_misc_count = 0;
+
+int ev_get_input(int fd, short revents, struct input_event *ev);
+bool event_process(struct input_event ev);
+
+int ev_cb(int fd, uint32_t epevents, void *data)
+{
+ struct input_event ev;
+
+ int retval = ev_get_input(fd, epevents, &ev);
+ if(retval < 0) return -1;
+
+ if(!event_process(ev)) return 0;
+
+ return 0;
+}
+
+int ev_init(void *data)
+{
+ DIR *dir;
+ struct dirent *de;
+ int fd;
+
+ dir = opendir("/dev/input");
+ if(dir != 0) {
+ while((de = readdir(dir))) {
+ unsigned long ev_bits[BITS_TO_LONGS(EV_MAX)];
+
+// fprintf(stderr,"/dev/input/%s\n", de->d_name);
+ if(strncmp(de->d_name,"event",5)) continue;
+ fd = openat(dirfd(dir), de->d_name, O_RDONLY);
+ if(fd < 0) continue;
+
+ /* read the evbits of the input device */
+ if (ioctl(fd, EVIOCGBIT(0, sizeof(ev_bits)), ev_bits) < 0) {
+ close(fd);
+ continue;
+ }
+
+ /* TODO: add ability to specify event masks. For now, just assume
+ * that only EV_KEY and EV_REL event types are ever needed. */
+ if (!test_bit(EV_KEY, ev_bits) && !test_bit(EV_REL, ev_bits)) {
+ close(fd);
+ continue;
+ }
+
+ ev_fds[ev_count].fd = fd;
+ ev_fds[ev_count].events = POLLIN;
+ ev_fdinfo[ev_count].cb = ev_cb;
+ ev_fdinfo[ev_count].data = data;
+ ev_count++;
+ ev_dev_count++;
+ if(ev_dev_count == MAX_DEVICES) break;
+ }
+ }
+
+ return 0;
+}
+
+void ev_exit(void)
+{
+ while (ev_count > 0) {
+ close(ev_fds[--ev_count].fd);
+ }
+ ev_misc_count = 0;
+ ev_dev_count = 0;
+}
+
+int ev_wait(int timeout)
+{
+ int r;
+
+ r = poll(ev_fds, ev_count, timeout);
+ if (r <= 0)
+ return -1;
+ return 0;
+}
+
+void ev_dispatch(void)
+{
+ unsigned n;
+// int ret;
+
+ for (n = 0; n < ev_count; n++) {
+ ev_callback cb = ev_fdinfo[n].cb;
+ if (cb && (ev_fds[n].revents & ev_fds[n].events))
+ cb(ev_fds[n].fd, ev_fds[n].revents, ev_fdinfo[n].data);
+ }
+}
+
+int ev_get_input(int fd, short revents, struct input_event *ev)
+{
+ int r;
+
+ if (revents & POLLIN) {
+ r = read(fd, ev, sizeof(*ev));
+ if (r == sizeof(*ev))
+ return 0;
+ }
+ return -1;
+}
+
+bool event_process(struct input_event ev)
+{
+ LOGI("Event:%d,%d,%d\n", ev.type, ev.code, ev.value);
+
+// if(ev.type != EV_KEY){
+// return false;
+// }
+
+ bool is_touch = true;
+ // Touch Down/Up
+ if(ev.type == EV_KEY && ev.code == BTN_TOUCH) {
+ if(!!ev.value) { // Down
+ action_down_get = true;
+ action_touched = true;
+ }
+ else // UP
+ {
+ action_down_get = false;
+ action_touched = false;
+ }
+ } else if(ev.type == EV_ABS) { // Touch move
+ if(!action_touched) // No down
+ return false;
+ } else if(ev.type != EV_KEY) {
+ return false;
+ } else {
+ is_touch = false;
+ }
+
+ if (!is_touch && ev.value < 2){ // 2 is long press events
+ int down = !!ev.value;
+ if (down){
+ LOGI("LongPress : DOWN.");
+ //if(!l->onKeyDown(ev.type, ev.code)) return false;
+ }else{
+ //if(!l->onKeyUp(ev.type, ev.code)) return false;
+ LOGI("LongPress : UP.");
+ }
+ } else if (is_touch) {
+ touch_event m_event;
+ if(ev.type == EV_ABS) { // Move
+ if(ev.code == KEY_SLASH) { // X
+ move_x = ev.value;
+ } else if(ev.code == KEY_RIGHTSHIFT) { // Y
+ if(action_down_get)
+ {
+ m_event.action = ACTION_DOWN;
+ action_down_get = false;
+ } else {
+ m_event.action = ACTION_MOVE;
+ }
+ m_event.x = move_x;
+ m_event.y = ev.value;
+
+ if(event_pre.x != m_event.x
+ || event_pre.y != m_event.y)
+ {
+ event_pre.x = m_event.x;
+ event_pre.y = m_event.y;
+ #ifdef MBTK_TP_RESIZE_SUPPORT
+ point_resize(getScreenWidth(),
+ getScreenHeight(),
+ mStatusBar->isVisibility() ? mStatusBar->getHeight() : 0,
+ &m_event);
+ #endif
+ LOGI("Window onTouchEvent action:%d (%d,%d) -> (%d,%d)",
+ m_event.action, event_pre.x, event_pre.y, m_event.x, m_event.y);
+
+ }
+ } else {
+ // Do nothing
+ }
+ } else if(!action_down_get){ // UP
+ m_event.action = ACTION_UP;
+ m_event.x = event_pre.x;
+ m_event.y = event_pre.y;
+
+ #ifdef MBTK_TP_RESIZE_SUPPORT
+ point_resize(getScreenWidth(),
+ getScreenHeight(),
+ mStatusBar->isVisibility() ? mStatusBar->getHeight() : 0,
+ &m_event);
+ #endif
+
+ LOGI("Window onTouchEvent action:%d (%d,%d) -> (%d,%d)",
+ m_event.action, event_pre.x, event_pre.y, m_event.x, m_event.y);
+
+ } else {
+ // Do nothing
+ }
+ } else {
+ // Do nothing
+ }
+
+ //invalidate();
+
+ return true;
+}
+
+int main(int argc, char *argv[])
+{
+ // mbtk_log_init(NULL, "MBTK_EVENT");
+
+ if(ev_init(NULL)) {
+ LOGE("ev_init() fail.");
+ return -1;
+ }
+
+ LOGI("event getting...");
+ while(1) {
+ if(!ev_wait(-1))
+ ev_dispatch();
+ }
+
+ LOGI("exit!!!");
+ return 0;
+}
diff --git a/mbtk/test/others/uart_read_demo.c b/mbtk/test/others/uart_read_demo.c
new file mode 100755
index 0000000..1b7eea4
--- /dev/null
+++ b/mbtk/test/others/uart_read_demo.c
@@ -0,0 +1,185 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <termios.h>
+#include <string.h>
+
+#include "mbtk_type.h"
+#include "mbtk_log.h"
+
+#define DATABITS CS8
+#define STOPBITS 0
+#define PARITYON 0
+#define PARITY 0
+
+int uart_baud_get(int baud)
+{
+ int rate = 0;
+ switch(baud)
+ {
+ case 300:
+ rate = B300;
+ break;
+ case 600:
+ rate = B600;
+ break;
+ case 1200:
+ rate = B1200;
+ break;
+ case 2400:
+ rate = B2400;
+ break;
+ case 4800:
+ rate = B4800;
+ break;
+ case 9600:
+ rate = B9600;
+ break;
+ case 19200:
+ rate = B19200;
+ break;
+ case 38400:
+ rate = B38400;
+ break;
+ case 57600:
+ rate = B57600;
+ break;
+ case 115200:
+ rate = B115200;
+ break;
+ case 230400:
+ rate = B230400;
+ break;
+ case 460800:
+ rate = B460800;
+ break;
+ case 921600:
+ rate = B921600;
+ break;
+ case 1500000:
+ rate = B1500000;
+ break;
+ case 2000000:
+ rate = B2000000;
+ break;
+ case 3000000:
+ rate = B3000000;
+ break;
+ case 4000000:
+ rate = B4000000;
+ break;
+ default:
+ rate = B115200;
+ break;
+ }
+
+ return rate;
+}
+
+int gnss_port_open(const char *dev, int flag, int baud, bool tty)
+{
+
+ int fd = -1;
+ if((fd = open(dev, flag)) < 0)
+ {
+ printf("Open %s fail errno = [%d].\n", dev, errno);
+ return -1;
+ }
+
+ printf("Open %s success.\n", dev);
+ if (tty)
+ {
+ int rate = uart_baud_get(baud);
+ /* set newtio */
+ struct termios newtio;
+ memset(&newtio, 0, sizeof(newtio));
+ //(void)fcntl(fd, F_SETFL, 0);
+ /* no flow control for uart by default */
+ newtio.c_cflag = rate | DATABITS | STOPBITS | PARITYON | PARITY | CLOCAL | CREAD;
+ newtio.c_iflag = IGNPAR;
+ //newtio.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
+ newtio.c_oflag = 0;
+ newtio.c_lflag = 0; /* disable ECHO, ICANON, etc... */
+
+ newtio.c_cc[VERASE] = 0x8; /* del */
+ newtio.c_cc[VEOF] = 4; /* Ctrl-d */
+ newtio.c_cc[VMIN] = 1; /* blocking read until 1 character arrives */
+ newtio.c_cc[VEOL] = 0xD; /* '\0' */
+
+ tcflush(fd, TCIOFLUSH);
+ tcsetattr(fd, TCSANOW, &newtio);
+ }
+
+ return fd;
+}
+
+int main(int argc, char *argv[])
+{
+ if(argc != 2) {
+ printf("%s <dev>\n", argv[1]);
+ return -1;
+ }
+
+ int fd = gnss_port_open(argv[1], O_RDWR | O_NONBLOCK | O_NOCTTY, 115200, TRUE);
+ if(fd < 0) {
+ printf("gnss_port_open(%s) fail:%d\n", argv[1], errno);
+ return -1;
+ }
+
+ char buff[1024];
+ int len, ret;
+ fd_set fdr;
+ FD_ZERO(&fdr);
+ FD_SET(fd, &fdr);
+
+ while(1) {
+ ret = select(fd + 1, &fdr, NULL, 0, NULL);
+ if (ret < 0)
+ {
+ if (errno == EINTR)
+ {
+ continue;
+ }
+ printf("select error, errno = %d (%s)\n", errno, strerror(errno));
+ break;
+ }
+ else if (ret == 0)
+ {
+ printf("select ret == 0\n");
+ break;
+ }
+
+ if (FD_ISSET(fd, &fdr))
+ {
+ memset(buff, 0, sizeof(buff));
+ len = read(fd, buff, sizeof(buff));
+ if(len > 0) {
+
+
+ } else if(len ==0 ){
+ printf("Read end : len = 0\n");
+ break;
+ } else {
+ if(EAGAIN == errno) {
+ usleep(50000);
+ continue;
+ } else {
+ printf("Read ret = -1 ,errno = %d\n", errno);
+ break;
+ }
+ }
+ }
+ else
+ {
+ printf("Unknown select event.\n");
+ continue;
+ }
+ }
+
+ printf("exit.\n");
+ return 0;
+}
+
+
diff --git a/mbtk/test/others/ubus_demo.c b/mbtk/test/others/ubus_demo.c
new file mode 100755
index 0000000..4806be3
--- /dev/null
+++ b/mbtk/test/others/ubus_demo.c
@@ -0,0 +1,79 @@
+#include <unistd.h>
+
+#include <libubox/blobmsg_json.h>
+#include "libubus.h"
+#include "mbtk_audio.h"
+
+void receive_call_result_data(struct ubus_request *req, int type, struct blob_attr *msg)
+{
+ printf("receive_call_result_data()\n");
+ if (!msg)
+ return;
+
+ printf("len - %d,data - %s\n", msg->id_len, msg->data);
+}
+
+
+int main(int argc, char *argv[])
+{
+#if 1
+ if(argc != 3) {
+ printf("ubus_demo switch/mode 0/1/-2/2\n");
+ return -1;
+ }
+ char *type = NULL;
+ int value = atoi(argv[2]);
+ if(!strcmp(argv[1], "switch")) {
+ type = "switch_pcm";
+ if(value != 0 && value != 1) {
+ printf("ubus_demo switch/mode 0/1/-2/2\n");
+ return -1;
+ }
+ } else if(!strcmp(argv[1], "mode")) {
+ type = "audio_mode_set";
+ if(value != -2 && value != 2) {
+ printf("ubus_demo switch/mode 0/1/-2/2\n");
+ return -1;
+ }
+ } else {
+ printf("ubus_demo switch/mode 0/1/-2/2\n");
+ return -1;
+ }
+
+ static struct ubus_context *ctx;
+ ctx = ubus_connect(NULL);
+ if (!ctx) {
+ printf("Failed to connect to ubus\n");
+ return -1;
+ }
+
+ static struct blob_buf b;
+ uint32_t id;
+ int ret;
+ ret = ubus_lookup_id(ctx, "audio_if", &id);
+ if (ret) {
+ printf("ubus_lookup_id() fail.\n");
+ return ret;
+ }
+
+
+
+ blob_buf_init(&b, 0);
+ blobmsg_add_u32(&b, "param0", value);
+ if((ret = ubus_invoke(ctx, id, type, b.head, NULL/*receive_call_result_data*/, NULL, 0)) != UBUS_STATUS_OK) {
+ printf("ubus_invoke fail:%d.\n", ret);
+ } else {
+ printf("ubus_invoke success.\n");
+ }
+#else
+
+ int handler = 0;
+ mbtk_audio_ubus_client_init(&handler, NULL);
+
+ mbtk_audio_switch_pcm(1);
+ mbtk_audio_mode_set(2);
+
+#endif
+
+ return 0;
+}
diff --git a/mbtk/test/others/usb_check.c b/mbtk/test/others/usb_check.c
new file mode 100755
index 0000000..7a8fc43
--- /dev/null
+++ b/mbtk/test/others/usb_check.c
@@ -0,0 +1,39 @@
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <fcntl.h>
+#include <string.h>
+
+#include "mbtk_utils.h"
+
+static int running = 0;
+
+static void sig_handler(int sig)
+{
+ printf("Signal : %d\n", sig);
+ running = 0;
+}
+
+
+int main(int argc, char *argv[])
+{
+ int fd = open("/tmp/usb.info", O_CREAT | O_WRONLY, 0666);
+ signal(SIGINT, sig_handler);
+ signal(SIGTERM, sig_handler);
+ if(fd > 0) {
+ char buff[1024];
+ running = 1;
+ while(running){
+ memset(buff, 0, 1024);
+ if(mbtk_cmd_line("cat /sys/class/android_usb/android0/state", buff, 1024)) {
+ mbtk_write(fd, buff, strlen(buff));
+ mbtk_write(fd, "\n", 1);
+ }
+ sleep(1);
+ }
+ close(fd);
+ }
+ return 0;
+}
+