diff --git a/HAL/src/eoss3_hal_audio.c b/HAL/src/eoss3_hal_audio.c index 9f57af19..31fa0b3d 100644 --- a/HAL/src/eoss3_hal_audio.c +++ b/HAL/src/eoss3_hal_audio.c @@ -294,7 +294,9 @@ void post_first_pdm_dma_after_lpsd() } uint8_t *p_dest = (uint8_t *)o_hal_info.pdata_block_prev + offsetof(QAI_DataBlock_t, p_data); voice_dmac_dst_set_addr0((int32_t)p_dest); - o_hal_info.pdata_block_prev->dbHeader.Tstart = xTaskGetTickCountFromISR();//g_seqNumber++; + //o_hal_info.pdata_block_prev->dbHeader.Tstart = xTaskGetTickCountFromISR();//g_seqNumber++; + //Note: This is not called by any ISR + o_hal_info.pdata_block_prev->dbHeader.Tstart = xTaskGetTickCount(); } static void SetVoiceDmacConfig(bool fUsingLeftChannel, bool fUsingRightChannel, bool fUsingDualBuffers) diff --git a/Libraries/Audio/src/ql_audio.c b/Libraries/Audio/src/ql_audio.c index d2e53596..bd1efa4a 100644 --- a/Libraries/Audio/src/ql_audio.c +++ b/Libraries/Audio/src/ql_audio.c @@ -242,5 +242,10 @@ void QL_Audio_Voice_Stop(void) HAL_Audio_Stop(&gPdmConnector, &Audio_Config_Local); } +void QL_Audio_Voice_Start(void) +{ + //S3x_Clk_Enable(S3X_LPSD); + HAL_Audio_Start(&gPdmConnector, 0, true, &Audio_Config_Local); +} diff --git a/Libraries/Power/src/s3x_clock.c b/Libraries/Power/src/s3x_clock.c index d45f9df8..c583abbf 100644 --- a/Libraries/Power/src/s3x_clock.c +++ b/Libraries/Power/src/s3x_clock.c @@ -235,7 +235,7 @@ void s3x_clkd_update_all_src_div(UINT32_t rate, UINT32_t mode) /* temp bumpup CPU to finish faster*/ if (S3clk[i].clkd_id == CLK_C10) { - HAL_GPIO_Write(GPIO_1, 0); + //HAL_GPIO_Write(GPIO_1, 0); div_reg = CRU_RVAL(0); CRU_WVAL(0, 0); } diff --git a/Libraries/Power/src/s3x_dfs.c b/Libraries/Power/src/s3x_dfs.c index bbea240a..98a2db12 100644 --- a/Libraries/Power/src/s3x_dfs.c +++ b/Libraries/Power/src/s3x_dfs.c @@ -142,7 +142,7 @@ int S3x_Set_Policy(uint8_t policy, uint32_t src, uint32_t* pcruval) S3x_Policy_Node dfs_policy = dfs_node[policy]; max = SIZEOF_ARRAY(dfs_policy.clk_domain); for(i = 0; i < max ; i++){ - if (i == 1) HAL_GPIO_Write(GPIO_1, 0); + //if (i == 1) HAL_GPIO_Write(GPIO_1, 0); clkd = S3x_Id_To_Domain(dfs_policy.clk_domain[clkd_index[i]]); ret = s3x_update_clk_rate(clkd, dfs_policy.rate[clkd_index[i]], src, pcruval); //TIM 24 if (pcruval) CRU_WVAL(0x000, *pcruval); //TIM 24 @@ -317,7 +317,7 @@ uint32_t DFS_FreqCPUSleep(void) { void DFS_SwitchToSleepPolicy(void) { uint32_t cruReg0x000SleepVal; - + policyBeforeSleep = policyCurrent; policyDuringSleep = (dfs_node[policyCurrent].policySleep == 0xFF) ? policyCurrent : dfs_node[policyCurrent].policySleep; @@ -336,7 +336,7 @@ void DFS_SwitchToSleepPolicy(void) //S3x_Reduce_Hsosc(policyMaxrate, acruval2, &icruval2); S3x_Reduce_Hsosc(policyMaxrate); } - HAL_GPIO_Write(GPIO_1, 1); + //HAL_GPIO_Write(GPIO_1, 1); } void DFS_RestoreFromSleep(void) @@ -452,3 +452,9 @@ void s3x_disable_dfs(void) { s3x_dfs_enable = DFS_DIS; } +void print_dfs_policies(void) +{ + printf("DFS:%d,%d,%d:", policyCurrent, policyBeforeSleep, policyDuringSleep); + //printf(":%d,%d::", policyMaxrate, dfs_min_policy); + printf(":%d::", s3x_dfs_enable); +} diff --git a/Tasks/I2S/src/ql_i2sTxTask.c b/Tasks/I2S/src/ql_i2sTxTask.c index a6f48e20..18aa8fa6 100644 --- a/Tasks/I2S/src/ql_i2sTxTask.c +++ b/Tasks/I2S/src/ql_i2sTxTask.c @@ -68,7 +68,11 @@ //Single DMA Buffer size is directly related to the number of I2S interrupts //Intention is to minimize the number of interrupts to as low as possible //The minimum #interrupts (=66) are for 15ms DataBlock, with mono channel at 16K rate +#if (FEATURE_I2S_MASTER_DATA == 1) +#define I2S_MIN_DATA_BLOCK_BYTES (15*48*2) //in bytes 15ms mono, 16bit @48K sample buffer +#else #define I2S_MIN_DATA_BLOCK_BYTES (15*16*2) //in bytes 15ms mono @16K sample buffer +#endif //This will be size of one DMA buffer needed to keep 66 interrupts per second //Note: DMA size must be multple of words @@ -294,9 +298,9 @@ static int fill_i2s_DMA_buf_mono_16K(int buf_index, int offset, QAI_DataBlock_t static int fill_i2s_DMA_buf(int buf_index, int offset, QAI_DataBlock_t *pIn) { int filled; -#if I2S_INTP_FACTOR == 3 +#if (I2S_INTP_FACTOR == 3) -#if I2S_CHANNEL_COUNT == 2 +#if (I2S_CHANNEL_COUNT == 2) filled = fill_i2s_DMA_buf_stereo_48K(buf_index, offset, pIn); #else filled = fill_i2s_DMA_buf_mono_48K(buf_index, offset, pIn); @@ -304,7 +308,7 @@ static int fill_i2s_DMA_buf(int buf_index, int offset, QAI_DataBlock_t *pIn) #else //16K channels -#if I2S_CHANNEL_COUNT == 2 +#if (I2S_CHANNEL_COUNT == 2) filled = fill_i2s_DMA_buf_stereo_16K(buf_index, offset, pIn); #else filled = fill_i2s_DMA_buf_mono_16K(buf_index, offset, pIn); @@ -313,6 +317,29 @@ static int fill_i2s_DMA_buf(int buf_index, int offset, QAI_DataBlock_t *pIn) #endif // I2S_INTP_FACTOR return filled; } +#if (FEATURE_I2S_MASTER_DATA == 1) +/* The left and right channels are copied interleaved for DMA +* Note: The loop uses the Stereo element count in the Data Block +*/ +static int fill_i2s_DMA_buf_stereo_48K_32bit(uint8_t buf_index, int offset, QAI_DataBlock_t *pIn, int datablock_count) +{ + int16_t *left = (int16_t *)&pIn->p_data; //interleaved left and right samples + + int16_t *stereo = (int16_t *)&i2sDMABuffers[I2S_SINGLE_DMA_SIZE*buf_index + (offset/4)]; + for(int i =0; i < pIn->dbHeader.numDataElements; i++) + { + *stereo++ = (int32_t)*left++; //first left + *stereo++ = (int32_t)*left++; + } + + int bytes_copied = pIn->dbHeader.numDataElements*4;//4 since explicitly copying 2 16bit samples + configASSERT(bytes_copied == (I2S_SINGLE_DMA_SIZE * sizeof(uint32_t)/datablock_count)); + + return pIn->dbHeader.numDataElements*pIn->dbHeader.dataElementSize; +} +#endif + + /* set the ISR for I2S transmit mode * Need to handle 4 cases for stereo or mono, 16K or 48K I2S bus rate */ @@ -340,15 +367,19 @@ static void setup_i2s_tx(void) #endif +#if (FEATURE_I2S_MASTER_DATA == 1) + p_i2s_cfg.i2s_wd_clk = 32; +#endif + /* setup the config and register ISR callback */ ret_val = HAL_I2S_Init(I2S_SLAVE_ASSP_TX, &p_i2s_cfg, I2S_SDMA_callback); printf("ret_val=%x, HAL_SUCCESS=%x\n", ret_val, HAL_I2S_SUCCESS); configASSERT(ret_val == HAL_I2S_SUCCESS) -#if ENABLE_I2S_48K_TRANSMIT == 1 +#if (ENABLE_I2S_48K_TRANSMIT == 1) int output_blk_size = 0; -#if ENABLE_I2S_STEREO_TRANSMIT == 1 +#if (ENABLE_I2S_STEREO_TRANSMIT == 1) //init stereo interpolator from 16K to 48K output_blk_size = init_interpolate_by_3_stereo(); @@ -450,6 +481,13 @@ void i2sTaskHandler(void *pParameter) BaseType_t qret; QAI_DataBlock_t *pIn; int queue_count; + int datablock_count; + +#if (FEATURE_I2S_MASTER_DATA == 1) + datablock_count = 3*I2S_CHANNEL_COUNT; //since 48K = 3*16Khz +#else + datablock_count = I2S_CHANNEL_COUNT; //since 16Khz +#endif init_i2s_buffers(); setup_i2s_tx(); @@ -474,7 +512,7 @@ void i2sTaskHandler(void *pParameter) /* check how many data blocks are waiting in the Queue */ queue_count = uxQueueMessagesWaiting(I2SDataQ); /* need 1 or 2 Data Blocks to create one DMA buffer */ - if(queue_count < I2S_CHANNEL_COUNT) + if(queue_count < datablock_count) { vTaskDelay(3);//it may take upto 7.5ms for next datablock continue; @@ -506,20 +544,30 @@ void i2sTaskHandler(void *pParameter) continue; } int offset = 0; - for(int i= 0;i < I2S_CHANNEL_COUNT; i++) + for(int i= 0;i < datablock_count; i++) { /* get a data blk from queue first */ qret = xQueueReceive(I2SDataQ, &pIn, 0); configASSERT(qret == pdTRUE); +#if (FEATURE_I2S_MASTER_DATA == 1) + /* fill partial/full DMA buffer at 48KHz, 32bit samples*/ + offset += fill_i2s_DMA_buf_stereo_48K_32bit(i2s_buf_wr_index, offset, pIn, datablock_count); +#else /* fill partial/full DMA buffer */ offset += fill_i2s_DMA_buf(i2s_buf_wr_index, offset, pIn); +#endif /* if in the queue, the usecount must greater than 0 */ if(pIn->dbHeader.numUseCount > 0) datablk_mgr_release_generic(pIn); } +#if (FEATURE_I2S_MASTER_DATA == 1) +extern int fill_i2s_queue(void); + fill_i2s_queue(); +#endif + /* set state to filled */ set_i2s_buf_state(i2s_buf_wr_index++); if(i2s_buf_wr_index >= I2S_DMA_BUFFER_COUNT) diff --git a/freertos_gateware/inc/eoss3_hal_fpga_FLL.h b/freertos_gateware/inc/eoss3_hal_fpga_FLL.h index a45d3671..d810c402 100644 --- a/freertos_gateware/inc/eoss3_hal_fpga_FLL.h +++ b/freertos_gateware/inc/eoss3_hal_fpga_FLL.h @@ -41,14 +41,16 @@ typedef struct /* Note : These are added for Debug purposes only. Code should not depend on * them, since they may be removed any time */ +#if 0 __IO uint32_t WORD_COUNT_DIFF; /* 0x0C = difference between local and master word counts */ __IO uint32_t LSB_WORD_COUNTS; /* 0x10 = LSB bits of {Local[15:0]:Master[15:0]} word counts */ __IO uint32_t LOCAL_WORD_COUNT; /* 0x14 = Continuos count of Local Clks divided byt 64 = Local Word Count*/ __IO uint32_t MASTER_WORD_COUNT; /* 0x18 = Continuos count of Master Clks divided byt 64 = Master Word Count*/ __IO uint32_t MASTER_SAMPLE_COUNT; /* 0x1C = Master sample count at the given instance */ - +#endif } FPGA_FLL_TypeDef; + #define FB_FLL_BASE (FPGA_PERIPH_BASE+0x1000) #define FB_FLL ((FPGA_FLL_TypeDef *)FB_FLL_BASE) diff --git a/freertos_gateware/inc/eoss3_hal_fpga_decimation_fir.h b/freertos_gateware/inc/eoss3_hal_fpga_decimation_fir.h new file mode 100644 index 00000000..8f67f20d --- /dev/null +++ b/freertos_gateware/inc/eoss3_hal_fpga_decimation_fir.h @@ -0,0 +1,65 @@ +/*========================================================== + * Copyright 2021 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : eoss3_hal_fpga_decimation_fir.h + * Purpose: This file contains FIR functions for Rx data in fpga. + * + *=========================================================*/ +#include "Fw_global_config.h" + + +#ifndef __EOSS3_HAL_FB_DECIMATION_FIR_H_ +#define __EOSS3_HAL_FB_DECIMATION_FIR_H_ + +#include "eoss3_dev.h" + +#define FB_DECIMATION_FIR_REG_OFFSET (FPGA_PERIPH_BASE + 0x4000 + 0x1000) +#define FB_DECIMATION_FIR_SDMA_BASE (FPGA_PERIPH_BASE + 0x4000) +#define FB_FIR_SDMA ((FIR_SDMA_TypeDef *) FB_DECIMATION_FIR_SDMA_BASE) + +typedef struct +{ + __IO uint32_t FIR_IER; /*0x00 I2S Enable Register */ + __IO uint32_t FIR_ACSLIPR; /*0x04 ACSLIP Reset (deprecated)*/ + __IO uint32_t FIR_ISR; /*0x08 Interrupt Status Register */ + __IO uint32_t FIR_IEN; /*0x0C Interrupt Enable Register */ + __IO uint32_t FIR_DFSTS; /*0x10 Decimation FIFO Status Register */ + __IO uint32_t FIR_DFDREG; /*0x14 Decimation Data Register */ + __IO uint32_t FIR_ACSLIP; /*0x18 ACSLIP Register (deprecated) */ + __IO uint32_t FIR_DFRST; /*0x1C Decimation FIFO Reset Register */ + __IO uint32_t FIR_DER; /*0x20 DMA Enable Register */ + __IO uint32_t FIR_DSR; /*0x24 DMA Status Register */ + __IO uint32_t FIR_DCNT; /*0x28 DMA Count Register */ + __IO uint32_t FIR_ACSLTMR; /*0x2C ACSLIP Timer (deprecated) */ + __IO uint32_t FIR_FDCR; /*0x30 FIR Decimation Control Register */ + __IO uint32_t FIR_FDSR; /*0x34 FIR Decimation Status Register */ + + __IO uint32_t FIR_RSRVD1; /*0x38 Reserved 1 */ + __IO uint32_t FIR_RSRVD2; /*0x3c Reserved 2 */ + __IO uint32_t FIR_FIFO; /*0x40 FIR FIFO Status Register */ + +} FIR_SDMA_TypeDef; + +extern void HAL_FIR_Decimation_FB_SDMA_Config(void); + +extern uint8_t is_fir_fb_slave_dma_done_intr_set(void); +extern void fir_fb_slave_rx_dma_done_clear(void); +extern void fir_fb_slave_rx_dma_en(void); +extern void HAL_FIR_Decimation_Stop (void); + +#endif //__EOSS3_HAL_FB_DECIMATION_FIR_H_ \ No newline at end of file diff --git a/freertos_gateware/inc/eoss3_hal_fpga_i2s_slave.h b/freertos_gateware/inc/eoss3_hal_fpga_i2s_slave.h new file mode 100644 index 00000000..7f06096d --- /dev/null +++ b/freertos_gateware/inc/eoss3_hal_fpga_i2s_slave.h @@ -0,0 +1,64 @@ +/*========================================================== + * Copyright 2021 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : eoss3_hal_fpga_i2s_slave.h + * Purpose: This file contains API declaration for I2S Slave + * Rx implemented in fpga. + * + *=========================================================*/ +#include "Fw_global_config.h" + + +#ifndef __EOSS3_HAL_FB_I2S_SLAVE_H_ +#define __EOSS3_HAL_FB_I2S_SLAVE_H_ + +#include "eoss3_dev.h" + +#define FB_I2S_SDMA_BASE (FPGA_PERIPH_BASE + 0x2000) +#define FB_I2S_REG_OFFSET (FPGA_PERIPH_BASE + 0x2000 + 0x1000) +#define FB_I2S_SDMA ((I2S_SDMA_TypeDef *) FB_I2S_REG_OFFSET) + +typedef struct +{ + __IO uint32_t I2S_IER; /*0x00 I2S Enable Register */ + __IO uint32_t I2S_ACSLIPR; /*0x04 ACSLIP Reset (deprecated)*/ + __IO uint32_t I2S_ISR; /*0x08 Interrupt Status Register */ + __IO uint32_t I2S_IEN; /*0x0C Interrupt Enable Register */ + __IO uint32_t I2S_DFSTS; /*0x10 Decimation FIFO Status Register */ + __IO uint32_t I2S_DFDREG; /*0x14 Decimation Data Register */ +#if 0 + __IO uint32_t I2S_ACSLIP; /*0x18 ACSLIP Register (deprecated) */ + __IO uint32_t I2S_DFRST; /*0x1C Decimation FIFO Reset Register */ + __IO uint32_t I2S_DER; /*0x20 DMA Enable Register */ + __IO uint32_t I2S_DSR; /*0x24 DMA Status Register */ + __IO uint32_t I2S_DCNT; /*0x28 DMA Count Register */ + __IO uint32_t I2S_ACSLTMR; /*0x2C ACSLIP Timer (deprecated) */ + __IO uint32_t I2S_FDCR; /*0x30 FIR Decimation Control Register */ + __IO uint32_t I2S_FDSR; /*0x34 FIR Decimation Status Register */ +#endif +} I2S_SDMA_TypeDef; + + +extern void eoss3_hal_fabric_i2s_slave_clks_disable(); +extern void eoss3_hal_fabric_i2s_slave_clks_enable(); + +extern void HAL_FB_I2SRx_Ref_input_DmaStart(void); +extern void HAL_FB_I2SRx_Ref_input_DmaNext(void); + + +#endif //__EOSS3_HAL_FB_I2S_SLAVE_H_ \ No newline at end of file diff --git a/freertos_gateware/src/eoss3_hal_fpga_FLL.c b/freertos_gateware/src/eoss3_hal_fpga_FLL.c index 09d0dbb0..9290c4dd 100644 --- a/freertos_gateware/src/eoss3_hal_fpga_FLL.c +++ b/freertos_gateware/src/eoss3_hal_fpga_FLL.c @@ -104,13 +104,15 @@ void HAL_FB_FLL_Disable(void) { #endif FB_FLL->CNTRL_REG = 0; +#if (AEC_ENABLED == 0) S3x_Clk_Disable(S3X_FB_21_CLK); S3x_Clk_Disable(S3X_FB_16_CLK); +#endif dac_end = get_hsosc_dac(); disable_hsosc_dac_debug(); -#if 1 //enable for debug +#if 0 //enable for debug //convert to KHz(1024Hz) int dac_start_hz = (dac_start +3)*32; int dac_end_hz = (dac_end +3)*32; @@ -152,11 +154,13 @@ void HAL_FB_FLL_Init(HAL_FBISRfunction slow_down_fn, HAL_FBISRfunction speed_up_ slow_down_fn = slow_down_ISR; if(speed_up_fn == 0) speed_up_fn = speed_up_ISR; - + +#if (AEC_ENABLED == 0) // set the Local clk rate and wishbone clock rate S3x_Clk_Set_Rate(S3X_FB_21_CLK, FLL_I2S_LOCAL_CLK); //for 16K sample rate = 2*32*16K = 1024000 S3x_Clk_Set_Rate(S3X_FB_16_CLK, FLL_I2S_LOCAL_CLK); //since no data transfer, keep it low - +#endif + // set the time counts to default HAL_FB_FLL_Set_Sample_Time(FLL_SAMPLE_TIME_DEFAULT); HAL_FB_FLL_Set_Gap_Time(FLL_GAP_TIME_DEFAULT); @@ -178,10 +182,10 @@ void HAL_FB_FLL_Init(HAL_FBISRfunction slow_down_fn, HAL_FBISRfunction speed_up_ FB_ConfigureInterrupt(FB_INTERRUPT_1, FB_INTERRUPT_TYPE_EDGE, FB_INTERRUPT_POL_LEVEL_HIGH, FB_INTERRUPT_DEST_AP_DISBLE, FB_INTERRUPT_DEST_M4_ENABLE); - +#if (AEC_ENABLED == 0) //Enable the FPGA interrupts NVIC_EnableIRQ(FbMsg_IRQn); - +#endif //Enable the FLL by default //HAL_FB_FLL_Enable(); @@ -196,7 +200,7 @@ void set_hsosc_dac(int bits) AIP->OSC_CTRL_4 = 0x30; //enable write int count =0; AIP->OSC_CTRL_6 = 0x0; //clk low - bits = bits & 0x1FF; //only 9bits + bits = bits; // & 0x1FF; //only 9bits while(count != 12) { AIP->OSC_CTRL_5 = (bits >> (11-count)) & 0x1; //sdi bit - MSB first @@ -230,7 +234,7 @@ int get_hsosc_dac(void) //AIP->OSC_CTRL_4 = 0x00; //reset AIP->OSC_CTRL_4 = 0x08; //reserved //printf("OSC_DAC = 0x%8x \n", bits); - return bits & 0x1ff; + return bits; // & 0x1ff; } void enable_hsosc_dac_debug(void) { @@ -247,6 +251,13 @@ void disable_hsosc_dac_debug(void) int check_fll_drift(int dac_bits) { int drift = abs(dac_bits - dac_start); + //if the drift is a lot change the dac_start + if(drift > (8*MAX_FLL_DAC_DRIFT)) + { + //dac_start = get_hsosc_dac(); + dac_start = dac_bits; + return 1; + } if(drift < MAX_FLL_DAC_DRIFT) return 0; else @@ -264,7 +275,7 @@ void slow_down_ISR(void) return; } - bits2 = (bits - 1) & 0x1FF; + bits2 = (bits - 1); // & 0x1FF; if(bits2 < bits) { set_hsosc_dac(bits2); @@ -287,7 +298,7 @@ void speed_up_ISR(void) return; } - bits2 = (bits + 1) & 0x1FF; + bits2 = (bits + 1);// & 0x1FF; if(bits2 > bits) { set_hsosc_dac(bits2); diff --git a/freertos_gateware/src/eoss3_hal_fpga_decimation_fir.c b/freertos_gateware/src/eoss3_hal_fpga_decimation_fir.c new file mode 100644 index 00000000..b386d4be --- /dev/null +++ b/freertos_gateware/src/eoss3_hal_fpga_decimation_fir.c @@ -0,0 +1,244 @@ +/*========================================================== + * Copyright 2021 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : eoss3_hal_fpga_decimation_fir.c + * Purpose: This file contains FIR functions for Rx data in fpga. + * + *=========================================================*/ +#include "Fw_global_config.h" + +#include +#include + +#ifdef ENABLE_FB_FIR_DECIMATION_RX + +#include "eoss3_hal_i2s.h" +#include "eoss3_hal_fpga_decimation_fir.h" +#include "eoss3_hal_gpio.h" +#include "s3x_clock.h" + +//#define FIR_RX_SINGLE_DMA_SIZE (240) // ??? + +//bit fields for IER Reg +#define FIR_IER_REG_COEF_READ_ACCESS (0x1 << 3) + +//bit fields for ISR Reg +#define FIR_ISR_REG_DMA_DONE (0x1 << 0) + +//bit fields for IEN Reg +#define FIR_IEN_REG_DMA_DONE_ENABLE (0x1 << 0) + +//bit fields for DFSTS Reg +#define FIR_DFSTS_REG_FIFO_LEVEL_MASK (0x0FFFF) +#define FIR_DFSTS_REG_FIFO_EMPTY_MASK (0x10000) +#define FIR_DFSTS_REG_FIFO_FULL_MASK (0x20000) + +//bit fields for DFDREG Reg +#define FIR_DFDREG_REG_EVEN_DATA_MASK (0x0000FFFF) +#define FIR_DFDREG_REG_ODD_DATA_MASK (0xFFFF0000) + +//bit fields for DER Reg +#define FIR_DER_REG_DMA_ENABLE (0x1 << 0) + +//bit fields for DSR Reg +#define FIR_DSR_REG_DMA_STS_BUSY (0x1 << 0) +#define FIR_DSR_REG_DMA_STS_DONE (0x1 << 1) +#define FIR_DSR_REG_DMA_STS_ACTIVE (0x1 << 2) +#define FIR_DSR_REG_DMA_STS_REQUEST (0x1 << 3) + +//bit fields for DCNT Reg +#define FIR_DCNT_REG_DMA_COUNT_MASK (0x01FF) + +//bit fields for FDCR Reg +#define FIR_FDCR_REG_DECIMATION_ENABLE (0x1 << 0) +#define FIR_FDCR_REG_DECIMATION_INT_ENABLE (0x1 << 1) + +//bit fields for FDSR Reg +#define FIR_FDSR_REG_DECIMATION_ENABLE (0x1 << 0) + +#define FB_DECIM_FIR_COEF_RAM_BASE ((void*)(FB_DECIMATION_FIR_REG_OFFSET)) +#define FB_DECIM_FIR_COEF_RAM_LENGTH_BYTES (0x800) +#define FB_DECIM_FIR_121_TAP_FILTER_SIZE (121) + +static short FB_Coef_48K_to16K[121] = { + 0, -2, -3, -1, 3, 7, 5, -3, -12, -12, 0, 16, 22, 8, -18, -34, -23, 13, 47, 44, //1-20 + 0, -55, -72, -26, 54, 102, 66, -38, -128, -119, 0, 142, 183, 65, -134, -247, -158, 90, 302, 279, //21 -40 + 0, -330, -423, -150, 311, 579, 374, -216, -736, -696, 0, 878, 1178, 443, -993, -2045, -1513, 1067, 4945, 8433, //41-60 + 9831, //61 = Center Tap + 8433, 4945, 1067, -1513, -2045, -993, 443, 1178, 878, 0, -696, -736, -216, 374, 579, 311, -150, -423, -330, 0,//62-81 + 279, 302, 90, -158, -247, -134, 65, 183, 142, 0, -119, -128, -38, 66, 102, 54, -26, -72, -55, 0, //82-101 + 44, 47, 13, -23, -34, -18, 8, 22, 16, 0, -12, -12, -3, 5, 7, 3, -1, -3, -2, // 0, //102 - 121 +}; + +#if 0 +//IER Reg functions +__STATIC_INLINE void fir_fb_slave_predeci_write_access_en(void) +{ + FB_FIR_SDMA->FIR_IER |= FIR_IER_REG_COEF_READ_ACCESS; +} +__STATIC_INLINE void fir_fb_slave_predeci_write_access_dis(void) +{ + FB_FIR_SDMA->FIR_IER &= ~FIR_IER_REG_COEF_READ_ACCESS; +} +#endif +//ISR Reg functions +//__STATIC_INLINE +uint8_t is_fir_fb_slave_dma_done_intr_set(void) +{ + return (FB_FIR_SDMA->FIR_ISR & FIR_ISR_REG_DMA_DONE); +} +__STATIC_INLINE void fir_fb_slave_rx_isr_clear(void) +{ + FB_FIR_SDMA->FIR_ISR = 0; +} +//__STATIC_INLINE +void fir_fb_slave_rx_dma_done_clear(void) +{ + FB_FIR_SDMA->FIR_ISR &= ~FIR_ISR_REG_DMA_DONE; +} +//DCNT Reg functions +__STATIC_INLINE void fir_fb_slave_rx_dmacount(void) +{ + //FB_FIR_SDMA->FIR_DCNT = FIR_RX_SINGLE_DMA_SIZE *2; + //FB_FIR_SDMA->FIR_DCNT = FIR_RX_SINGLE_DMA_SIZE; + FB_FIR_SDMA->FIR_DCNT = get_i2s_fb_dma_count(); +} +//DER Reg functions +//__STATIC_INLINE +void fir_fb_slave_rx_dma_en(void) +{ + FB_FIR_SDMA->FIR_DER = FIR_DER_REG_DMA_ENABLE; +} +//IEN Reg functions +__STATIC_INLINE void fir_fb_slave_rx_dma_done_en(void) +{ + FB_FIR_SDMA->FIR_IEN |= FIR_IEN_REG_DMA_DONE_ENABLE; +} +__STATIC_INLINE void fir_fb_slave_rx_dma_done_dis(void) +{ + FB_FIR_SDMA->FIR_IEN &= ~FIR_IEN_REG_DMA_DONE_ENABLE; +} +//DFRST Reg functions +__STATIC_INLINE void fir_fb_slave_fir_decimation_fifo_reset(void) +{ + FB_FIR_SDMA->FIR_DFRST = 0x1; +} +//FDCR Reg functions +__STATIC_INLINE void fir_fb_slave_fir_decimation_en(void) +{ + FB_FIR_SDMA->FIR_FDCR |= FIR_FDCR_REG_DECIMATION_ENABLE; +} +__STATIC_INLINE void fir_fb_slave_fir_decimation_dis(void) +{ + FB_FIR_SDMA->FIR_FDCR &= ~FIR_FDCR_REG_DECIMATION_ENABLE; +} + + +static void Init_Decimation_Coef_RAM(void) +{ + uint32_t *pdest = FB_DECIM_FIR_COEF_RAM_BASE; + short *psrc = FB_Coef_48K_to16K; + short i = 0; + //can write only 32bit words + for(i = 0; i < FB_DECIM_FIR_121_TAP_FILTER_SIZE; i++) + { +#if 0 //just for test, make all coefs 0 except for center tap + if(i == 61) + *pdest = 0x4000; //1 in 2.14 format + else + *pdest = 0; +#else + *pdest = *psrc; +#endif + psrc++; + pdest++; + } + //Set remaining FIR coefficient RAM to zeros + for(;i < (FB_DECIM_FIR_COEF_RAM_LENGTH_BYTES/4); i++) + { + *pdest++ = 0; + } + return; +} +static void HAL_FIR_Slave_FB_SDMA_Config(void) +{ + //check if correct I2S IP is loaded into FPGA + //HAL_FIR_Slave_FB_ip_check(); + + //Load FIR Cofficient RAM with coefficient data + Init_Decimation_Coef_RAM(); + + //Set SDMA count to 15*16 size + fir_fb_slave_rx_dmacount(); + + //Clear the Interrupt status register + fir_fb_slave_rx_isr_clear(); + + //Enable all the I2S Slave Rx interrupts + fir_fb_slave_rx_dma_done_en(); + + // Enable I2S Slave Rx Fabric SDMA + fir_fb_slave_rx_dma_en(); + + fir_fb_slave_fir_decimation_fifo_reset(); + + //Enabling Fabric I2S slave Rx FIR decimation block + fir_fb_slave_fir_decimation_en(); + + return; +} + +//need an extern to config +void HAL_FIR_Decimation_FB_SDMA_Config(void) +{ + HAL_FIR_Slave_FB_SDMA_Config(); +} + +//start FIR Decimation +uint32_t HAL_FIR_Decimation_Start (void) +{ + HAL_FIR_Decimation_FB_SDMA_Config(); + + return HAL_I2S_SUCCESS; +} +//stop FIR decimation +void HAL_FIR_Decimation_Stop (void) +{ + fir_fb_slave_rx_dma_done_clear(); +#if 0 + fir_fb_slave_rx_dma_done_dis(); + + fir_fb_slave_fir_decimation_dis(); +#endif + fir_fb_slave_fir_decimation_fifo_reset(); + + return; +} +//init FIR decimation +uint32_t HAL_FIR_Decimation_Init (void) +{ + return HAL_I2S_SUCCESS; +} +// uninit FIR deciimation +void HAL_FIR_Decimation_Uninit(void) +{ + return; +} + + +#endif /* ENABLE_FB_FIR_DECIMATION_RX */ diff --git a/freertos_gateware/src/eoss3_hal_fpga_i2s_slave.c b/freertos_gateware/src/eoss3_hal_fpga_i2s_slave.c new file mode 100644 index 00000000..a3cd4281 --- /dev/null +++ b/freertos_gateware/src/eoss3_hal_fpga_i2s_slave.c @@ -0,0 +1,603 @@ +/*========================================================== + * Copyright 2021 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : eoss3_hal_fpga_i2s_slave.h + * Purpose: This file contains functions for I2S Slave + * Rx implemented in fpga. + * + *=========================================================*/ +#include "Fw_global_config.h" + +#include +#include + +#include "common.h" + +#ifdef ENABLE_I2S_SLAVE_FB_RX + +#include "eoss3_hal_i2s.h" +#include "eoss3_hal_fpga_i2s_slave.h" +#include "eoss3_hal_fpga_decimation_fir.h" +#include "eoss3_hal_gpio.h" +#include "s3x_clock.h" + +//set this to 1 when FIR Decimation is enabled +#define FIR_DECIM_ENABLED (1) + +//pre-decimation RAM at 48KHz +#define FB_I2S_SLAVE_PRE_DECI_RAM_BASE ((void*)(FB_I2S_SDMA_BASE)) +#define FB_I2S_SLAVE_PRE_DECI_RAM_LENGTH_BYTES (0x800) + +//bit fields for IER Reg +#define I2S_IER_REG_I2S_ENABLE (0x1 << 0) +#define I2S_IER_REG_48KRAM_WRITE_ACCESS (0x1 << 1) + +//bit fields for ISR Reg +#define I2S_ISR_REG_I2S_DISCONNECT (0x1 << 3) +#define I2S_ISR_REG_I2S_CONNECT (0x1 << 5) + +//bit fields for IEN Reg +#define I2S_IEN_REG_I2S_DISCONNECT_ENABLE (0x1 << 3) +#define I2S_IEN_REG_I2S_CONNECT_ENABLE (0x1 << 5) + + +//I2S Rx buffers +#define I2S_RX_SINGLE_DMA_SIZE ((15*16*2)/4) //15ms @16Khz in 32bit words +#define I2S_RX_DMA_BUFFER_COUNT (10) //(4) + +static uint32_t i2sRxDMABuffers[I2S_RX_SINGLE_DMA_SIZE*I2S_RX_DMA_BUFFER_COUNT]; +static uint32_t i2sRxDMA_Timestamps[I2S_RX_DMA_BUFFER_COUNT]; + +uint8_t i2s_rx_buf_rd_index; +uint8_t i2s_rx_buf_wr_index; +static uint8_t i2s_rx_sdma_start; + +static uint32_t i2s_rx_start_time_ms; + +uint32_t i2s_rx_enabled = 0; +static uint32_t i2s_rx_enabled_2 = 0; + +static I2S_Config_t i2s_slave_fb_rx; + + +//IER Reg functions +__STATIC_INLINE void i2s_fb_slave_rx_i2s_en(void) +{ + FB_I2S_SDMA->I2S_IER |= I2S_IER_REG_I2S_ENABLE; +} +__STATIC_INLINE void i2s_fb_slave_rx_i2s_dis(void) +{ + FB_I2S_SDMA->I2S_IER &= ~I2S_IER_REG_I2S_ENABLE; +} +__STATIC_INLINE void i2s_fb_slave_predeci_write_access_en(void) +{ + FB_I2S_SDMA->I2S_IER |= I2S_IER_REG_48KRAM_WRITE_ACCESS; +} +__STATIC_INLINE void i2s_fb_slave_predeci_write_access_dis(void) +{ + FB_I2S_SDMA->I2S_IER &= ~I2S_IER_REG_48KRAM_WRITE_ACCESS; +} +//ISR Reg functions +__STATIC_INLINE uint8_t is_i2s_fb_slave_i2s_connect_intr_set(void) +{ + return (FB_I2S_SDMA->I2S_ISR & I2S_ISR_REG_I2S_CONNECT); +} +__STATIC_INLINE void i2s_fb_slave_rx_isr_clear(void) +{ + FB_I2S_SDMA->I2S_ISR = 0; +} +__STATIC_INLINE void i2s_fb_slave_rx_i2s_disconnect_clear(void) +{ + FB_I2S_SDMA->I2S_ISR &= ~I2S_ISR_REG_I2S_DISCONNECT; +} +#if 1 +__STATIC_INLINE void i2s_fb_slave_rx_i2s_connect_clear(void) +{ + FB_I2S_SDMA->I2S_ISR &= ~I2S_ISR_REG_I2S_CONNECT; +} +#endif +__STATIC_INLINE uint8_t is_i2s_fb_slave_i2s_disconnect_intr_set(void) +{ + return (FB_I2S_SDMA->I2S_ISR & I2S_ISR_REG_I2S_DISCONNECT); +} +//IEN Reg functions +__STATIC_INLINE void i2s_fb_slave_rx_i2s_disconnect_en(void) +{ + FB_I2S_SDMA->I2S_IEN |= I2S_IEN_REG_I2S_DISCONNECT_ENABLE; +} +__STATIC_INLINE void i2s_fb_slave_rx_i2s_disconnect_dis(void) +{ + FB_I2S_SDMA->I2S_IEN &= ~I2S_IEN_REG_I2S_DISCONNECT_ENABLE; +} +__STATIC_INLINE int is_i2s_fb_slave_rx_i2s_disconnect_dis(void) +{ + return (FB_I2S_SDMA->I2S_IEN & I2S_IEN_REG_I2S_DISCONNECT_ENABLE); +} + +__STATIC_INLINE void i2s_fb_slave_rx_i2s_connect_en(void) +{ + FB_I2S_SDMA->I2S_IEN |= I2S_IEN_REG_I2S_CONNECT_ENABLE; +} +__STATIC_INLINE void i2s_fb_slave_rx_i2s_connect_dis(void) +{ + FB_I2S_SDMA->I2S_IEN &= ~I2S_IEN_REG_I2S_CONNECT_ENABLE; +} +__STATIC_INLINE int is_i2s_fb_slave_rx_i2s_connect_en(void) +{ + return (FB_I2S_SDMA->I2S_IEN & I2S_IEN_REG_I2S_CONNECT_ENABLE); +} + +int get_i2s_fb_dma_count(void) +{ + return I2S_RX_SINGLE_DMA_SIZE*2; +} + +void enable_i2s_disconnect(void) +{ + i2s_fb_slave_rx_i2s_disconnect_en(); +} + +// clear the buffers and reset the state +static void init_i2s_rx_buffers(void) +{ + memset(i2sRxDMABuffers, 0, sizeof(i2sRxDMABuffers)); + memset(i2sRxDMA_Timestamps, 0, sizeof(i2sRxDMA_Timestamps)); + + i2s_rx_buf_rd_index = 0; + i2s_rx_buf_wr_index = 0; + + i2s_rx_sdma_start = 0; + + return; +} + +static void set_i2s_start_time(uint32_t ticks_ms) +{ + i2s_rx_start_time_ms = ticks_ms; +} + +uint32_t get_i2s_start_time(void ) +{ + return i2s_rx_start_time_ms; +} + +void HAL_I2S_Slave_FB_ip_check(void) +{ + uint32_t *ip_id = (uint32_t *)FPGA_PERIPH_BASE; + printf("FPGA IP ID 0x%08X \n", *ip_id); + ip_id++; + printf("FPGA IP Rev 0x%08X \n", *ip_id); + +} +//restart the Data bus +static void Reset_48K_Data_RAM(void) +{ + uint32_t *pdest = (uint32_t *)FB_I2S_SLAVE_PRE_DECI_RAM_BASE; + + //First need enable write access + i2s_fb_slave_predeci_write_access_en(); + //can write only 32bit words + for(int i = 0; i < (FB_I2S_SLAVE_PRE_DECI_RAM_LENGTH_BYTES/4); i++) + { + *pdest++ = 0; + } + i2s_fb_slave_predeci_write_access_dis(); + return; +} +static void HAL_I2S_Slave_FB_SDMA_Config(void) //uint32_t frame_size) +{ + //check if correct I2S IP is loaded into FPGA +// HAL_I2S_Slave_FB_ip_check(); + + //Reset I2S_48KHz RAM to zero before start + Reset_48K_Data_RAM(); + + //Clear the Interrupt status register + i2s_fb_slave_rx_isr_clear(); + + //Enable all the I2S Slave Rx interrupts + //i2s_fb_slave_rx_i2s_disconnect_en(); + i2s_fb_slave_rx_i2s_disconnect_dis(); + + i2s_fb_slave_rx_i2s_connect_en(); + + //Finally Enable I2S slave Rx + i2s_fb_slave_rx_i2s_en(); + + //reset the start time + set_i2s_start_time(0); + + return; +} + +static void HAL_I2S_FB_Enable_SDMA_Intr(void) +{ + //NVIC_SetPriority(FbMsg_IRQn, 6); + NVIC_ClearPendingIRQ(FbMsg_IRQn); +// NVIC_EnableIRQ(FbMsg_IRQn); +} + +static void HAL_I2S_FB_Disable_SDMA_Intr( void ) +{ + NVIC_ClearPendingIRQ(FbMsg_IRQn); + NVIC_DisableIRQ(FbMsg_IRQn); +} + +#define I2S_SDMA_WORD_SRC_DST_SIZE (0x2) /* Word 32 bit*/ +#define I2S_SDMA_WORD_SRC_INC (0x3) /* No Increment */ +#define I2S_SDMA_WORD_DST_INC (0x2) /* Destination increment */ +#define I2S_SDMA_CYCLE_CTRL (0x1) /* Basic cycle control */ + +void HAL_I2S_Slave_FB_SDMA_Rx(uint32_t *input, int numSamples) +{ + int ch = i2s_slave_fb_rx.sdma_used ; + int32_t *destAddr = (int32_t *)input; + int32_t numWords = numSamples/2; + + uint32_t R_power = SDMA_SRAM_R_POWER_512; + int n_minus_1 = (numWords - 1); /* total # of DMA transfers */ + + destAddr += (numWords - 1); +#if (FIR_DECIM_ENABLED == 1) + int32_t *pSrc = (int32_t *)&FB_FIR_SDMA->FIR_DFDREG; +#else //this should be used if all are together + int32_t *pSrc = (int32_t *)&FB_I2S_SDMA->I2S_DFDREG; +#endif + SDMA_SRAM_TAB[ch].SRC_DATA_END_PTR = (uint32_t)pSrc; + SDMA_SRAM_TAB[ch].DST_DATA_END_PTR = (uint32_t)destAddr; + + SDMA_SRAM_TAB[ch].CH_CFG = ((I2S_SDMA_WORD_DST_INC << 30) | + (I2S_SDMA_WORD_SRC_DST_SIZE << 28) | + (I2S_SDMA_WORD_SRC_INC << 26) | + (I2S_SDMA_WORD_SRC_DST_SIZE << 24) | + (R_power) | + (n_minus_1 << 4) | + (I2S_SDMA_CYCLE_CTRL << 0)); + SDMA->CHNL_ENABLE_SET |= 1 << ch; + SDMA->DMA_CFG = SDMA_DMA_CFG_MASTER_ENABLE; + SDMA->CTRL_BASE_PTR = SDMA_SRAM_BASE; + + //SDMA->DMA_CFG = 0; +} +extern void cb_notify_i2sRx_disable_intr_from_FPGA_ISR(void); + +static int fir_enabled = 0; +void HAL_I2S_Slave_FB_ISR_Handler(void) +{ + + i2s_rx_enabled++; + +#if (FIR_DECIM_ENABLED == 1) + + // Check interrupt status for DMA transfer Done + if(is_fir_fb_slave_dma_done_intr_set()) + { + // Clear the DMA Done interrupt + fir_fb_slave_rx_dma_done_clear(); + + HAL_FB_I2SRx_Ref_input_DmaNext(); + + fir_fb_slave_rx_dma_en();//I2S_SLAVE_FB_RX_DER_EN); + + if(i2s_rx_enabled == 4) + fir_enabled = 1; + else + fir_enabled++; + + } + +#endif + + //check if I2S is disconnected + if(is_i2s_fb_slave_i2s_disconnect_intr_set()) + { + //clear it and send a message + i2s_fb_slave_rx_i2s_disconnect_clear(); + + //disable further interrupts + i2s_fb_slave_rx_i2s_disconnect_dis(); + + //send the interrupt that I2S is disconnected + cb_notify_i2sRx_disable_intr_from_FPGA_ISR(); + } + + //check if I2S is connected + //if(is_i2s_fb_slave_rx_i2s_connect_en()) + { + if(is_i2s_fb_slave_i2s_connect_intr_set()) + { + //clear the interrupt and disable further interrupts + i2s_fb_slave_rx_i2s_connect_clear(); + + //disable further interrupts + i2s_fb_slave_rx_i2s_connect_dis(); + + //set the first I2S sample Rx time + set_i2s_start_time(xTaskGetTickCount()); + } + } + //check if i2s is disconnected +/* if(is_i2s_fb_slave_rx_i2s_disconnect_dis()) + { + //disable it and send a message + i2s_fb_slave_rx_i2s_disconnect_dis(); + + //send the message I2S is disabled + //cb_notify_i2sRx_disable_intr_from_FPGA_ISR(); + } +*/ + NVIC_ClearPendingIRQ(FbMsg_IRQn); + +} +#if 0 +void HAL_I2S_Slave_FB_SDMA_stop(void) +{ + HAL_I2S_Stop(I2S_SLAVE_FABRIC_RX); +} +#endif +static void HAL_I2S_Slave_FB_ConfigureInterrupt(void) +{ + /* Configure interrupt for I2S RX */ + FB_RegisterISR(FB_INTERRUPT_2, HAL_I2S_Slave_FB_ISR_Handler); + FB_ConfigureInterrupt(FB_INTERRUPT_2, FB_INTERRUPT_TYPE_LEVEL, + FB_INTERRUPT_POL_LEVEL_HIGH, + FB_INTERRUPT_DEST_AP_DISBLE, FB_INTERRUPT_DEST_M4_ENABLE); + +#if 0 //only one interrrupt is used for all I2S status + /* Configure interrupt for DMA STOP when clock line is low */ + FB_RegisterISR(FB_INTERRUPT_3, HAL_I2S_Slave_FB_SDMA_stop); + FB_ConfigureInterrupt(FB_INTERRUPT_3, FB_INTERRUPT_TYPE_LEVEL, + FB_INTERRUPT_POL_LEVEL_HIGH, + FB_INTERRUPT_DEST_AP_DISBLE, FB_INTERRUPT_DEST_M4_ENABLE); +#endif +} + +/* Start I2S Fabric Slave Rx */ +static uint32_t HAL_I2S_Slave_FB_Rx_Start (uint32_t *p_rx_buffer, uint32_t *p_tx_buffer, uint16_t buffer_size) +{ + configASSERT(p_rx_buffer); + configASSERT(buffer_size == I2S_RX_SINGLE_DMA_SIZE); + + + if(i2s_rx_sdma_start) + return HAL_I2S_SUCCESS; + + i2s_rx_sdma_start = 1; + init_i2s_rx_buffers(); + + if (buffer_size <= 0) + return HAL_I2S_RX_ERROR; + + /* Wakeup SDMA domain */ + PMU->MISC_SW_WU |= PMU_MISC_SW_WU_SDMA_WU; + + HAL_I2S_Slave_FB_SDMA_Rx((uint32_t*)&i2sRxDMABuffers[0], I2S_RX_SINGLE_DMA_SIZE*2); + + +#if (FIR_DECIM_ENABLED == 1) + //config FIR Decimation IP + HAL_FIR_Decimation_FB_SDMA_Config(); +#endif + + // Start the I2S RX DMA + HAL_I2S_Slave_FB_SDMA_Config(); + HAL_I2S_FB_Enable_SDMA_Intr(); + + //enable I2S again ??? + //i2s_fb_slave_rx_i2s_en(); + + return HAL_I2S_SUCCESS; +} + + +static void HAL_I2S_Slave_FB_Rx_Stop (void) +{ +#if (FIR_DECIM_ENABLED == 1) + //first stop FIR decimation + HAL_FIR_Decimation_Stop(); +#endif + + i2s_fb_slave_rx_i2s_disconnect_clear(); + i2s_fb_slave_rx_i2s_disconnect_dis(); + + i2s_fb_slave_rx_i2s_dis(); + + eoss3_hal_fabric_i2s_slave_clks_disable(); + + HAL_I2S_FB_Disable_SDMA_Intr(); + + i2s_rx_sdma_start = 0; + + i2s_rx_enabled = 0; + return; +} + +// Initialize I2S Fabric +static uint32_t HAL_I2S_Slave_FB_Init (I2S_Config_t *p_i2s_cfg, HAL_I2S_Cb_Handler_t handler) +{ + i2s_rx_enabled = 0; + + // Check for the validity of I2S configuration + if (p_i2s_cfg == NULL) + { + printf("HAL FB I2S Configuration are not valid \n"); + return HAL_I2S_BAD_PARAMETER; + } + + //Check the validity as well as save the I2S Configuration + if (p_i2s_cfg->ch_sel == I2S_CHANNELS_STEREO) + i2s_slave_fb_rx.ch_sel = I2S_CHANNELS_STEREO; + else if (p_i2s_cfg->ch_sel == I2S_CHANNELS_MONO) + i2s_slave_fb_rx.ch_sel = I2S_CHANNELS_MONO; + else + { + printf("HAL FB I2S Wrong Channel Select %d \n", p_i2s_cfg->ch_sel); + return HAL_I2S_BAD_PARAMETER; + } + + if(p_i2s_cfg->ch_sel == I2S_CHANNELS_MONO) + { + if(p_i2s_cfg->mono_sel > I2S_CHANNEL_MONO_RIGHT) + { + printf("[I2S]Wrong Mono channel %d\n", p_i2s_cfg->mono_sel); + return HAL_I2S_BAD_PARAMETER; + } + } + + i2s_slave_fb_rx.mono_sel = p_i2s_cfg->mono_sel; + i2s_slave_fb_rx.sdma_used = p_i2s_cfg->sdma_used; + + HAL_I2S_Slave_FB_ConfigureInterrupt(); + + return HAL_I2S_SUCCESS; +} + +// Uninitialize I2S Master +static void HAL_I2S_Slave_FB_Uninit(void) +{ + //Note: this function does not do anything + + //FB_UnRegisterISR(FB_INTERRUPT_2,NULL); + //FB_UnRegisterISR(FB_INTERRUPT_3,NULL); + return; +} + +uint32_t HAL_I2S_Slave_FB_Register(void) +{ + uint32_t ret_val = HAL_I2S_SUCCESS; + + I2S_Drv_t i2s_drv_fn; + uint8_t i2s_id = I2S_SLAVE_FABRIC_RX; + + i2s_drv_fn.initfn = HAL_I2S_Slave_FB_Init; + i2s_drv_fn.bufferfn = HAL_I2S_Slave_FB_Rx_Start; + i2s_drv_fn.stopfn = HAL_I2S_Slave_FB_Rx_Stop; + i2s_drv_fn.un_initfn = HAL_I2S_Slave_FB_Uninit; + + // Register to I2S Driver + ret_val = HAL_I2S_Register_Driver(i2s_id, i2s_drv_fn); + if (ret_val != HAL_I2S_SUCCESS) + printf("HAL FB RX I2S Driver Registration Failed \n"); + + return ret_val; +} + +static void Enable_SDMA_clk(void) +{ + S3x_Clk_Enable (S3X_SDMA_CLK); + S3x_Clk_Enable (S3X_SDMA_SRAM_CLK); +} + +static void Disable_SDMA_clk(void) +{ + S3x_Clk_Disable (S3X_SDMA_SRAM_CLK); + S3x_Clk_Disable (S3X_SDMA_CLK); +} + +static void Enable_FB_clk(void) +{ + S3x_Clk_Enable(S3X_FB_21_CLK); + S3x_Clk_Enable(S3X_FB_16_CLK); +} + +static void Disable_FB_clk(void) +{ + S3x_Clk_Disable(S3X_FB_21_CLK); + S3x_Clk_Disable(S3X_FB_16_CLK); +} +static void Set_FB_clk(void) +{ + S3x_Clk_Set_Rate(S3X_FB_21_CLK, 3*1024*1000); //for 16K sample rate = 2*32*16K = 1024000 + S3x_Clk_Set_Rate(S3X_FB_16_CLK, 1*6*1024*1000); //for FIR decimation at 16Khz +} +void eoss3_hal_fabric_i2s_slave_clks_enable() +{ + Set_FB_clk(); + Enable_FB_clk(); + Enable_SDMA_clk(); +#if 0 + printf("S3X_FB_21_CLK = %d, ", S3x_Clk_Get_Rate(S3X_FB_21_CLK)); + printf("S3X_FB_16_CLK = %d \n", S3x_Clk_Get_Rate(S3X_FB_16_CLK)); +#endif +} + +void eoss3_hal_fabric_i2s_slave_clks_disable() +{ + Disable_FB_clk(); + Disable_SDMA_clk(); +} + + +void HAL_FB_I2SRx_Ref_input_DmaStart(void) +{ + HAL_I2S_TX_RX_Buffer(I2S_SLAVE_FABRIC_RX, (uint32_t*)&i2sRxDMABuffers[0], NULL, I2S_RX_SINGLE_DMA_SIZE); +} +void HAL_FB_I2SRx_Ref_input_DmaNext(void) +{ + //store the Time stamp when the buffer is (filled) received + //i2sRxDMA_Timestamps[i2s_rx_buf_wr_index] = xTaskGetTickCount(); + i2sRxDMA_Timestamps[i2s_rx_buf_wr_index] = xTaskGetTickCountFromISR(); + + //set the next buffer to fill + i2s_rx_buf_wr_index++; + if(i2s_rx_buf_wr_index >= I2S_RX_DMA_BUFFER_COUNT) + i2s_rx_buf_wr_index = 0; + HAL_I2S_Slave_FB_SDMA_Rx((uint32_t*)&i2sRxDMABuffers[I2S_RX_SINGLE_DMA_SIZE*i2s_rx_buf_wr_index], + I2S_RX_SINGLE_DMA_SIZE*2); +} + +void reset_aec_counts(void) { + i2s_rx_buf_wr_index = 0; + i2s_rx_buf_rd_index = 0; +} + +uint32_t aec_echo_time; +int aec_enabled = 0; +//this assumes that I2S data is already on +uint16_t *get_aec_signal(int aec_ref_state) +{ + + if(i2s_rx_enabled == 0) { + //aec_enabled = 0; + return 0; + } + if (aec_enabled == 0) { + if(i2s_rx_buf_wr_index >= 5) { + aec_enabled = 1; + i2s_rx_buf_rd_index = i2s_rx_buf_wr_index -5; + } + } + + if(aec_enabled == 0) + return 0; + + uint32_t *signal = (uint32_t*)&i2sRxDMABuffers[I2S_RX_SINGLE_DMA_SIZE*i2s_rx_buf_rd_index]; + aec_echo_time = i2sRxDMA_Timestamps[i2s_rx_buf_rd_index]; + + i2s_rx_buf_rd_index++; + if(i2s_rx_buf_rd_index >= I2S_RX_DMA_BUFFER_COUNT) + i2s_rx_buf_rd_index = 0; + + return (uint16_t *)signal; +} +uint32_t get_aec_time(void) +{ + return i2sRxDMA_Timestamps[i2s_rx_buf_rd_index]; +} + +#endif /* ENABLE_I2S_SLAVE_FB_RX */ diff --git a/qf_vr_apps/qf_vr_aec_app/ESP32_Wifi/Esp32_Flashing.pdf b/qf_vr_apps/qf_vr_aec_app/ESP32_Wifi/Esp32_Flashing.pdf new file mode 100644 index 00000000..2bc0bd28 Binary files /dev/null and b/qf_vr_apps/qf_vr_aec_app/ESP32_Wifi/Esp32_Flashing.pdf differ diff --git a/qf_vr_apps/qf_vr_aec_app/ESP32_Wifi/Readme.txt b/qf_vr_apps/qf_vr_aec_app/ESP32_Wifi/Readme.txt new file mode 100644 index 00000000..d8992a69 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/ESP32_Wifi/Readme.txt @@ -0,0 +1,59 @@ + +1. Flash the ESP32 binary "qf_wifi_server_06_18_2021.bin" + +2. Open the COM port associated with ESP32 in TeraTerm. + Note: Make sure you select "CR" under Setup->Terminal->Transmit + +Note: To use it along with the Python Client first get the Server + IP address from ESP32. + +3. Then set Wifi network + using the command "wifi-set". You can use "wifi-get" to find + the credentials any time. + + For example: + + wifi-set myssid mypassword 3333 + + where + -myssid is your wifi network id + -mypassword is your wifi network passphrase + -3333 is Server port number that the Python client needs + to connect to + Note: Port number (3333) may be default + +4. Disconnect and reconnect. (If ESP32 does not reset, open and + close the Teraterm). You should see messages similar to the + following from ESP32 + + I (890) wifi:AP's beacon interval = 102400 us, DTIM period = 3 + Waiting for AP connection... 1 seconds + I (2210) [app_main]: SYSTEM_EVENT_STA_GOT_IP6 + I (2210) [app_main]: IPv6: FE80::2662:ABFF:FED1:B408 + Waiting for AP connection... 2 seconds + I (2700) [app_main]: Connected to AP + I (2700) [app_main]: Socket created + I (2700) [app_main]: Socket binded + I (2700) [app_main]: Socket listening + I (2710) event: sta ip: 192.168.1.5, mask: 255.255.255.0, gw: 192.168.1.1 + I (2710) [app_main]: SYSTEM_EVENT_STA_GOT_IP + + The important messages are "Connected to AP", "Socket listening" + along with "IP address for the Server". You need to supply it + when running the Python script. + +6. Run the Python script for Client, "wifi_audio_client.py" from + Tools/wifiaudio. (Type "wifi_audio_client.py --help" to get info + on running the script.) + +7. You should see "Socket accepted" message in ESP32 terminal + +8. Then load the QF with any binary,(using J-link or any other Debugger) + and stream the Audio upto 3 channels. + Note: There is a default binary loaded by ESP32 firmware every time it + is reset, which recognises and sends "only alexa" phrase in 3 channels. + +9. If there is problem setting the Wifi credentials, then + erase the flash for easy typing. (else you may see disconnection messages). + But "wifi-set" command will overwrite everytime it is called. + diff --git a/qf_vr_apps/qf_vr_aec_app/ESP32_Wifi/bootloader.bin b/qf_vr_apps/qf_vr_aec_app/ESP32_Wifi/bootloader.bin new file mode 100644 index 00000000..9bd683b7 Binary files /dev/null and b/qf_vr_apps/qf_vr_aec_app/ESP32_Wifi/bootloader.bin differ diff --git a/qf_vr_apps/qf_vr_aec_app/ESP32_Wifi/partitions_4mb_flash.bin b/qf_vr_apps/qf_vr_aec_app/ESP32_Wifi/partitions_4mb_flash.bin new file mode 100644 index 00000000..3749df03 Binary files /dev/null and b/qf_vr_apps/qf_vr_aec_app/ESP32_Wifi/partitions_4mb_flash.bin differ diff --git a/qf_vr_apps/qf_vr_aec_app/ESP32_Wifi/qf_wifi_server_06_18_2021.bin b/qf_vr_apps/qf_vr_aec_app/ESP32_Wifi/qf_wifi_server_06_18_2021.bin new file mode 100644 index 00000000..1abbf26a Binary files /dev/null and b/qf_vr_apps/qf_vr_aec_app/ESP32_Wifi/qf_wifi_server_06_18_2021.bin differ diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/EclipseReadme.txt b/qf_vr_apps/qf_vr_aec_app/GCC_Project/EclipseReadme.txt new file mode 100644 index 00000000..dafdeb3c --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/EclipseReadme.txt @@ -0,0 +1,155 @@ +This is EclipseReadme.txt file for creating and building qorc-sdk Projects using +GCC Tools and the provided Makefiles using Eclipse IDE. + +This document describes creating an Eclipse project for builiding "only" using +the provided makefiles and debugging using J-Link. + +See the "Docs/QuickAI-Eclipse-IDE.docx" for more detailed description of setting +up and using Eclipse Tools with qorc-sdk projects as well as creating new projects +without any makefiles. + + +Overview: +======== + +This document details the installation procedure to setup an Eclipse IDE based +development environment for qorc-sdk projects and provides instructions for migrating +existing Makefile projects to Eclipse IDE environment. + +Requirements: +============= + +The following software tools and plug-ins are needed in order to setup the +Eclipse IDE environment + +- ARM GCC toolchain available for download from + - https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads/ +- GNU Make program Version 3.81 available for download from + - https://sourceforge.net/projects/gnuwin32/files/make/3.81 +- Eclipse IDE available for download from + - http://www.eclipse.org/downloads/ +- ARM Cross Compiler plug-in and J-Link debugger plug-in for Eclipse available from + - http://gnu-mcu-eclipse.netlify.com/v4-neon-updates + +Tools installation: +=================== + +1. ARM GCC toolchain installation + Download and install GNU ARM embedded toolchain from + https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads/ + +2. GNU make program installation + Download the GNU make utility from + https://sourceforge.net/projects/gnuwin32/files/make/3.81 + Install to the folder C:\GnuWin32\ + + Note: + Please make sure the PATH contains "C:\GnuWin32\bin" as the first "make utility". + Other versions of Make may "not work" with the Makefiles provided. + +3. Install Eclipse IDE for C/C++ Developers + Download Eclipse Photon and install Eclipse IDE for C/C++ Developers + -Install to the folder C:\Eclipse\cpp-photon + Download Eclipse Photon from http://www.eclipse.org/downloads/ + For 64-bit Windows use the link: + (https://www.eclipse.org/downloads/download.php?file=/oomph/epp/photon/R/eclipse-inst-win64.exe) + +4. Install J-Link debugger and ARM Cross Compiler plug-ins + Start the Eclipse IDE, from the Eclipse main menu, select Help -> Install New Software + Add GNU ARM Eclipse plug-in site: + http://gnu-mcu-eclipse.netlify.com/v4-neon-updates + + Select the following plug-ins to install + GNU MCU C/C++ ARM Cross Compiler + GNU MCU C/C++ J-Link Debugging + + Follow the instructions to install the plug-ins. + The installer warns about the unsigned content installation, accept and continue. + +Setup Eclipse for Cross ARM GCC and GNU Make build tools: +========================================================= + + Open Eclipse IDE, on the main menu select Window -> Preferences + On the "Preferences" dialog box, navigate to MCU -> "Global Build Tools Path" + - Enter Build tools folder location as "C:\GnuWin32\bin" as setup above in + the installation procedures. + +Convert an existing Makefile GCC_Project to an Eclipse project: +=============================================================== + +To convert an existing Makefile based project to the Eclipse IDE environment +and reuse these existing Makefiles for build, follow the below procedure. + +1. Open Eclipse IDE. + You can choose to create workspace as the C:\Eclipse\cpp-photon\workspace +2. Select File -> New -> Project + (If this is fresh installation, select "Import a project with a working Makefile") +3. From the New Project Wizard dialog box, + Select "Makefile project with existing code" and click Next. + On the next screen, + - Select "ARM Cross GCC" in the Toolchain for Indexer Settings window pane, + - Specify the Project Name ("YourProject") as the "Project Name" text box + of the "New Project" dialog box + - Create a new folder named "Eclipse_Make_Project" in "App/YourProject/GCC_Project" folder + and specify this folder location to save eclipse project settings in the + "Existing Code Location" text box of the "New Project" diaglog box, and + - Click Finish +4. Add files and folder to the Eclipse Virtual filesystem + Drag and drop the folder QL-EOSS3-SW/BSP to the newly created project + On the "File and Folder Operation" dialog box, choose + - Link to files and recreate folder structure with virtual folders and + - Check the Create link locations relative to PROJECT_LOC + Similarly drag and drop other folders: + FReeRTOSv8_2_2, HAL, Libraries, and Tasks + Create Virtual Folder named "App". + On the Eclipse IDE, select , Click on File -> New -> Folder + On the "New Folder" dialog box, specify the folder name as "App", + click the "Advanced" tab and select the radio button "Folder is not + located in the file system (Virtual Folder)" and click Finish + Create Virtual folder named "YourProject" + Drag and drop from your "App/YourProject" the following folders: + GCC_Project/, src/, and inc/ folders to the newly created + "App/YourProject" virtual folder. + +Build setup: +============ + + In the Eclipse IDE, select the project to build + In the Eclipse IDE's main menu: + - Select Project -> Properties + - Select C/C++ Build from the left pane of the "Properties for " + dialog box. + On the "Builder Settings" tab + - unselect "Use default build command" + - Enter the following in the Build command box: + make -C ${workspace_loc:/${ProjName}}/../ + Click on sub -option "Settings" under "C/C++ Build" + Select "Toolchains" Tab and pull-down Name option and select + "GNU Tools for ARM Embedded Processors (arm-none-eabi-gcc)" + - Select the Environment from the C/C++ Build + - Double-click on the PATH environment variable + - Add the folder C:\GnuWin32\bin to the PATH environment variable + - Add the folder where the ARM GCC toolchain is installed to the PATH + environment variable (for example, C:\Program Files (x86)\GNU Tools ARM Embedded\7 2017-q4-major\bin) + - Select Project -> "Build Project" + - Add the 3 output files from GCC_project/output/bin folder to the virtual folder GCC_project/output/bin + (else the you would not be able select the project in the next step) + +Setup the debug environment for SEGGER JLink debugging: +======================================================= + + On the main menu, Click Run -> Debug Configurations + Select "GDB SEGGER J-Link Debugging", and then click on "New launch configuration" + (the top left most icon with only a "+" in the corner) + On the "Main" tab + - Select the project name "YourProject" + - Specify the C/C++ Application + Click on Search Project and select "YourProject.out" + (Note: "YourProject.out" will not show up in search unless you Build the project successfuly) + + On the "Debugger" tab set the "Device Name" to "Cortext-M4" + On the "Startup" tab, + - set "Initial Reset and Halt" type as 0, + - Check the "RAM application (reload after reach reset/restart)" + - Uncheck "Pre-run/Restart reset" + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/Makefile b/qf_vr_apps/qf_vr_aec_app/GCC_Project/Makefile new file mode 100644 index 00000000..51ab4aa9 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/Makefile @@ -0,0 +1,155 @@ +# +# Makefile for Quick-AI SDK +# + +include config.mk + +VPATH:=$(OUTPUT_PATH) + +all: _makedirs_ external_srcs Appdir AMAZON Consilient + -${HIDE}$(RM) $(OUTPUT_PATH)$(DIR_SEP)bin$(DIR_SEP)$(OUTPUT_FILE).* + make -f makefiles/Makefile_output + @echo Copy output files ... + ${HIDE}$(CP) $(OUTPUT_PATH)$(DIR_SEP)$(OUTPUT_FILE).bin $(OUTPUT_PATH)$(DIR_SEP)bin + ${HIDE}$(CP) $(OUTPUT_PATH)$(DIR_SEP)$(OUTPUT_FILE).map $(OUTPUT_PATH)$(DIR_SEP)bin + ${HIDE}$(CP) $(OUTPUT_PATH)$(DIR_SEP)$(OUTPUT_FILE).elf $(OUTPUT_PATH)$(DIR_SEP)bin + + +.PHONY: _makedirs_ +_makedirs_: + @echo Trying to create output folders if do not exist ... + -$(MKDIR) $(OUTPUT_PATH) + -$(MKDIR) $(DEPEND_PATH) + -$(MKDIR) $(OUTPUT_PATH)$(DIR_SEP)bin + @echo Starting Build ... + +.PHONY: external_srcs +external_srcs: Startup HAL FreeRTOS Libraries BSP fsm DatablockProcessor Control Gateware + @echo "External sources built" + +.PHONY: Appdir +Appdir: + make -f makefiles/Makefile_Appdir +clean_Appdir: + make -f makefiles/Makefile_Appdir clean + +CLEAN_TARGET += Appdir + +.PHONY:Startup +Startup: + make -f makefiles/Makefile_Startup +clean_Startup: + make -f makefiles/Makefile_Startup clean + +CLEAN_TARGET += Startup + +.PHONY:HAL +HAL: + make -f makefiles/Makefile_HAL +clean_HAL: + make -f makefiles/Makefile_HAL clean + +CLEAN_TARGET += HAL + +FreeRTOS: + make -f makefiles/Makefile_FreeRTOS +clean_FreeRTOS: + make -f makefiles/Makefile_FreeRTOS clean + +CLEAN_TARGET += FreeRTOS + +.PHONY:BSP +BSP: + make -f makefiles/Makefile_quickfeather_BOARD +clean_BSP: + make -f makefiles/Makefile_quickfeather_BOARD clean + +CLEAN_TARGET += BSP + +.PHONY: AMAZON +AMAZON: + make -f makefiles/Makefile_Amazon +clean_AMAZON: + make -f makefiles/Makefile_Amazon clean + +CLEAN_TARGET += AMAZON + +.PHONY:DSPC +DSPC: + make -f makefiles/Makefile_DSPC +clean_DSPC: + make -f makefiles/Makefile_DSPC clean + +CLEAN_TARGET += DSPC + +.PHONY:DSPC_Schematics +DSPC_Schematics: + make -f makefiles/Makefile_DSPC_Schematics +clean_DSPC_Schematics: + make -f makefiles/Makefile_DSPC_Schematics clean + +CLEAN_TARGET += DSPC_Schematics + +.PHONY:Consilient +Consilient: + make -f makefiles/Makefile_Consilient +clean_Consilient: + make -f makefiles/Makefile_Consilient clean + +CLEAN_TARGET += Consilient + +.PHONY:Libraries +Libraries: + make -f makefiles/Makefile_Libraries +clean_Libraries: + make -f makefiles/Makefile_Libraries clean + +CLEAN_TARGET += Libraries + +.PHONY:DatablockProcessor +DatablockProcessor: + make -f makefiles/Makefile_DatablockProcessor +clean_DatablockProcessor: + make -f makefiles/Makefile_DatablockProcessor clean + +CLEAN_TARGET += DatablockProcessor + +.PHONY:fsm +fsm: + make -f makefiles/Makefile_fsm +clean_fsm: + make -f makefiles/Makefile_fsm clean + +CLEAN_TARGET += fsm + +.PHONY:Control +Control: + make -f makefiles/Makefile_Control +clean_Control: + make -f makefiles/Makefile_Control clean + +CLEAN_TARGET += Control + +.PHONY:Gateware +Gateware: + make -f makefiles/Makefile_freertos_gateware +clean_Gateware: + make -f makefiles/Makefile_freertos_gateware clean + +CLEAN_TARGET += Gateware + + +DELETEME= +DELETEME += $(wildcard $(OUTPUT_PATH)$(DIR_SEP)bin$(DIR_SEP)$(OUTPUT_FILE).*) +DELETEME += $(wildcard $(OUTPUT_PATH)$(DIR_SEP)*.o) +DELETEME += $(wildcard $(DEPEND_PATH)$(DIR_SEP)*.d) +DELETEME := $(strip $(DELETEME)) +# Clean +clean: $(CLEAN_TARGET:%=clean_%) + make -f makefiles/Makefile_output clean +ifneq (,$(DELETEME)) + -$(HIDE)$(RM) $(DELETEME) +endif + + + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/Readme.txt b/qf_vr_apps/qf_vr_aec_app/GCC_Project/Readme.txt new file mode 100644 index 00000000..f2ca4208 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/Readme.txt @@ -0,0 +1,62 @@ +This is Readme.txt file for creating and building qorc-sdk Projects using +open-source GCC Tools and the provided Makefiles. + +Requirements: + +The following open-source tools are needed in order to build using Makefiles. + +- ARM GCC toolchain available for download from + - https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads/ +- GNU Make program Version 3.81 available for download from + - https://sourceforge.net/projects/gnuwin32/files/make/3.81 + +Overview: + +The following is a brief description of Makefile Architecture used for qorc-sdk. + + There are 2 configuration setup files and a main Makefile under GCC_Project directory. + + 1. config.mk - selects the operating system environment to use, "Windows" or "Linux" + -set BUILD_SYS=WINCMD - for Windows or comment it out for Linux + Note: + On Windows 10, there may be a problem to "auto-detect" the ARM Gnu Embedded Tool + Chain path. Then explicit set the TC_PATH to where the ARM GCC tools are installed. + - + 2. config-GCC.mk - sets the GCC compiler options, source directories and "output file" + + 3. Makefile - This is the main Makefile which calls the sub makefiles to build + + makefiles/ folder - There are separate makefiles for each directory that needs to be + included in the given project. Each of the makefile starts with Makefile_ and ends + with the Directory name (for example Makefile_HAL) + All the makefiles are exactly the same except for *_SRCS and *_DIR. + (The Makefile_Libraries is one of the exceptions and builds all the Libraries.) + + Makefile_common - is common to all the makefiles and "should not be changed". + + 4. output/ folder - all the output is placed in this directory + depend/ - all the depdencies created by the Make are placed in this folder + bin/ - the final output is copied to this folder if the build is succesful + + +Adding New makefiles: + - in config-GCC.mk + -add the "export YOURTEST_DIR" to point to your directory,for example, "YourTest" + -append the include path to INCLUDE_DIRS if there are include folders + - make a copy of one of the makefiles in the makefiles/ folder and rename it to + reflect the name of the folder you want to include (for example Makefile_YourTest) + - change the all *_DIR references to YOURTEST_DIR and *_SRCS to YOURTEST_SRCS + - in the main Makefile + - add a new Target to the line starting with " $(OUTPUT_FILE).o: " + - create build commands for the new Target as .PHONY objects point to your new makefile + +Building: + Make sure "C:\GnuWin32\bin" is the first in the Path and TC_PATH is properly set. + - At the command prompt just type "make" to build all + - Type "make clean" to delete all the object files and output built + - type "make target" to selectively build a Target (for example, "make HAL") + - type "make clean_target" to selectilve clean a Target (for example, "make clean_HAL") + + On a successfull build, output/bin will contain + - *.bin, *.out, *.map files + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/config-GCC.mk b/qf_vr_apps/qf_vr_aec_app/GCC_Project/config-GCC.mk new file mode 100644 index 00000000..6eba4162 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/config-GCC.mk @@ -0,0 +1,120 @@ +# +# Symbiflow options for QORC SDK +# +export RTL_TOP_MODULE= + +# +# GCC Configuration options for QORC SDK +# + +DASH_G=-gdwarf-4 +DASH_O=-Os + +#Assembler flags +export AS_FLAGS= -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 $(DASH_O) -fmessage-length=0 \ + -fsigned-char -ffunction-sections -fdata-sections $(DASH_G) -MMD -MP + +#Preprocessor macros + +export MACROS=-D__FPU_USED=1 \ + -D__M4_DEBUG \ + -D__EOSS3_CHIP \ + -D__RTOS \ + -D__GNU_SOURCE \ + -D_DEFAULT_SOURCE \ + -DARM_MATH_CM4 \ + -DFFE_NEWARCH \ + -DARM_MATH_MATRIX_CHECK \ + -DARM_MATH_ROUNDING \ + -D__FPU_PRESENT \ + -DconfigUSE_STATS_FORMATTING_FUNCTIONS \ + -DconfigUSE_TRACE_FACILITY \ + -D$(TOOLCHAIN) \ + -DNDEBUG\ + -DGCC_MAKE + +export OPT_FLAGS=-fmerge-constants -fomit-frame-pointer -fcrossjumping -fexpensive-optimizations -ftoplevel-reorder +export LIBCMSIS_GCC_DIR=$(PROJ_ROOT)$(DIR_SEP)Libraries$(DIR_SEP)CMSIS_5$(DIR_SEP)CMSIS$(DIR_SEP)DSP$(DIR_SEP)Lib$(DIR_SEP)GCC +export LIBAWWE_DIR=$(PROJ_ROOT)$(DIR_SEP)Licensed3rdParty$(DIR_SEP)amazon$(DIR_SEP)lib +export LIBAEC_DIR=$(PROJ_ROOT)$(DIR_SEP)Licensed3rdParty$(DIR_SEP)consilient$(DIR_SEP)aec$(DIR_SEP)lib + +export INCLUDE_DIRS=-I"$(PROJ_DIR)" \ + -I"$(APP_DIR)/inc" \ + -I"$(APP_DIR)/fsm" \ + -I"$(PROJ_ROOT)/BSP/quickfeather/inc" \ + -I"$(PROJ_ROOT)/HAL/inc" \ + -I"$(PROJ_ROOT)/freertos_gateware/inc" \ + -I"$(PROJ_ROOT)/FreeRTOS/include" \ + -I"$(PROJ_ROOT)/FreeRTOS/portable/GCC/ARM_CM4F_quicklogic_s3XX" \ + -I"$(PROJ_ROOT)/Licensed3rdParty/amazon/inc" \ + -I"$(PROJ_ROOT)/Licensed3rdParty/consilient" \ + -I"$(PROJ_ROOT)/Licensed3rdParty/consilient/aec/inc" \ + -I"$(PROJ_ROOT)/Libraries/Audio/inc" \ + -I"$(PROJ_ROOT)/Libraries/CMSIS_5/CMSIS/Core/Include" \ + -I"$(PROJ_ROOT)/Libraries/CMSIS_5/CMSIS/DSP/Include" \ + -I"$(PROJ_ROOT)/Libraries/CMSIS_5/CMSIS/NN/Include" \ + -I"$(PROJ_ROOT)/Libraries/Power/inc" \ + -I"$(PROJ_ROOT)/Libraries/Utils/inc" \ + -I"$(PROJ_ROOT)/Libraries/cli/inc" \ + -I"$(PROJ_ROOT)/Libraries/DatablockManager/inc" \ + -I"$(PROJ_ROOT)/Libraries/D2HProtocol/inc" \ + -I"$(PROJ_ROOT)/Libraries/FPGA/inc" \ + -I"$(PROJ_ROOT)/Tasks/Control/inc" \ + -I"$(PROJ_ROOT)/Tasks/DatablockProcessor/inc" \ + + +# C compiler flags +export CFLAGS= $(MACROS) \ + -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 \ + $(DASH_O) $(OPT_FLAGS) -fmessage-length=0 -lm \ + -fsigned-char -ffunction-sections -fdata-sections $(DASH_G) -std=c99 -MMD -MD -MP + + +export LD_FLAGS_1= -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 \ + $(DASH_O) $(OPT_FLAGS) -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections \ + $(DASH_G) -T "$(PROJ_DIR)/quickfeather.ld" -Xlinker --gc-sections -Wall -Werror \ + -Wl,--fatal-warnings -Wl,--print-memory-usage -Wl,-Map,"$(OUTPUT_PATH)/$(OUTPUT_FILE).map" \ + --specs=nano.specs -u _printf_float --specs=nosys.specs -Wl,--no-wchar-size-warning \ + -o "$(OUTPUT_PATH)/$(OUTPUT_FILE).elf" \ + -L$(LIBAWWE_DIR) -lpryon_lite-U -lpryon_lite-PRL1000 \ + -L$(LIBAEC_DIR) -laec \ + -L$(LIBCMSIS_GCC_DIR) -lm -larm_cortexM4lf_math +# To enable pryon_lite-PRL1000 library, delete the top line, uncomment the following two lines \ +# Order of the lines is important, first include pryon_lite library, then math library \ +# Additionally, enable the AMAZON_DIR symbol export defined below +# -L$(LIBAWWE_DIR) -lpryon_lite-U -lpryon_lite-PRL1000 \ +# -L$(LIBAEC_DIR) -laec +# -L$(LIBCMSIS_GCC_DIR) -lm -larm_cortexM4lf_math + + +export ELF2BIN_OPTIONS=-O binary + +# +# Export the files and Directories that work for both Windows and Linux +# The DIR_SEP is needed only for OS specific command, whereas make can deal with any +# +export COMMON_STUB =$(PROJ_DIR)$(DIR_SEP)makefiles$(DIR_SEP)Makefile_common + +export MAIN_DIR = $(APP_DIR)$(DIR_SEP)src +export FSM_DIR = $(APP_DIR)$(DIR_SEP)fsm + +export QUICKFEATHER_DIR = $(PROJ_ROOT)$(DIR_SEP)BSP$(DIR_SEP)quickfeather$(DIR_SEP)src +export HAL_DIR = $(PROJ_ROOT)$(DIR_SEP)HAL$(DIR_SEP)src +export FREERTOS_DIR = $(PROJ_ROOT)$(DIR_SEP)FreeRTOS +export FREERTOS_GATEWARE_DIR = $(PROJ_ROOT)$(DIR_SEP)freertos_gateware$(DIR_SEP)src + +export LIB_DIR = $(PROJ_ROOT)$(DIR_SEP)Libraries +# Enable the below line to link with pryon_lite +export AMAZON_DIR = $(PROJ_ROOT)$(DIR_SEP)Licensed3rdParty$(DIR_SEP)amazon$(DIR_SEP)src +export CONSILIENT_DIR = $(PROJ_ROOT)$(DIR_SEP)Licensed3rdParty$(DIR_SEP)consilient$(DIR_SEP)aec$(DIR_SEP)src +export AUDIO_DIR = $(LIB_DIR)$(DIR_SEP)Audio$(DIR_SEP)src +export CLI_DIR = $(LIB_DIR)$(DIR_SEP)cli$(DIR_SEP)src +export POWER_DIR = $(LIB_DIR)$(DIR_SEP)Power$(DIR_SEP)src +export UTILS_DIR = $(LIB_DIR)$(DIR_SEP)Utils$(DIR_SEP)src +export DBM_DIR = $(LIB_DIR)$(DIR_SEP)DatablockManager$(DIR_SEP)src +export D2H_DIR = $(LIB_DIR)$(DIR_SEP)D2HProtocol$(DIR_SEP)src +export CMSIS_DIR = $(LIB_DIR)$(DIR_SEP)CMSIS_5$(DIR_SEP)CMSIS$(DIR_SEP)NN$(DIR_SEP)Source +export FPGA_DIR = $(LIB_DIR)$(DIR_SEP)FPGA$(DIR_SEP)src + +export DBP_DIR = $(PROJ_ROOT)$(DIR_SEP)Tasks$(DIR_SEP)DatablockProcessor$(DIR_SEP)src +export CONTROL_DIR = $(PROJ_ROOT)$(DIR_SEP)Tasks$(DIR_SEP)Control$(DIR_SEP)src diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/config.mk b/qf_vr_apps/qf_vr_aec_app/GCC_Project/config.mk new file mode 100644 index 00000000..1fcc5ac5 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/config.mk @@ -0,0 +1,182 @@ +# +# Environment Configuration options for qorc-sdk +# + +# By default, many commands are hidden +# To enable VERBOSE mode, there are TWO options +# both are enabled via the command line: +# Option 1: "make HIDE=" +# Option 2: "make v=1" +HIDE ?=@ +ifeq (x"${v}",x"1") +override HIDE= +endif + +export HIDE +# send the "v=" to sub-makefiles. +ifeq (x"${HIDE}",x"") +v=1 +export v +endif + +# Set the build environment - WINCMD for Windows +# For Linux, comment this line out + +# Auto-Detect Windows vrs Linux +# Note: $(SHELL) on windows is not always "cmd.exe" +# But - on windows the variables ProgramFiles and APPDATA exist +# so if ether exist (ie: non-blank) then we are on windows. +ifneq (,${ProgramFiles}${APPDATA}) +$(info "shell Windows cmd.exe") +#SHELL :=cmd.exe +DEVNUL := NUL +WHICH := where +BUILD_SYS=WINCMD +else +$(info "shell Bash") +SHELL=bash +DEVNUL := /dev/null +WHICH := which +endif + +_tmp_=$(findstring /cygdrive,${PATH}) +# Exclude CYGWIN Make it is not compatible. +ifeq (/cygdrive,${_tmp_}) +# CelerisStudioIDE installs Cygwin Make in your path +# And... Numerous other IDEs also use Cygwin Make +# it is not compatible with this, so stop here. +$(error This makefile does not work with CYGWIN make) +endif + +#Set the toolchain (IAR/GCC) +export TOOLCHAIN=GCC + +ifeq ($(TOOLCHAIN),IAR) +$(info Building using $(TOOLCHAIN) Toolchain) +include config-IAR.mk +else ifeq ($(TOOLCHAIN),GCC) +$(info Building using $(TOOLCHAIN) Toolchain) +include config-GCC.mk +else +$(error Invalid Toolchain $(TOOLCHAIN)) +exit +endif + +################ Windows ################### +ifeq ($(BUILD_SYS),WINCMD) +################ +$(info Building on Windows $(BUILD_SYS)) + +export DIR_SEP=\\ + +#Configuration options for GNU Win32 GCC Toolchain +export MKDIR=mkdir +export RM=del /S /Q +export LS=dir +export CP=copy +export MV=move +export ECHO=echo +#export PROJ_DIR=$(shell $(ECHO) %cd%) +# GNU make - abspath results in forward slashes +_tmp=$(abspath .) +# We require DOS style slashes, convert +_tmp2=$(subst /,\,${_tmp}) +# Resolve this once, now, thus we assign with := not = +export PROJ_DIR := ${_tmp2} + +$(info PROJ_DIR = ${PROJ_DIR}) +export PROJ_ROOT=$(PROJ_DIR)\..\..\.. +export OUTPUT_PATH=output +export DEPEND_PATH=output\depend +#COMPILER_LIBS_PATH=C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.4\arm\CMSIS\Lib\IAR + +export APP_DIR = $(subst \GCC_Project,,${PROJ_DIR}) +TMPVAR = $(subst \, ,${APP_DIR}) +PROJ_NAME=$(word $(words ${TMPVAR}),${TMPVAR}) +export PROJ_NAME + +ifndef QORC_TC_PATH +FIND_TOOL_DIR := $(shell where arm-none-eabi-gcc) +ifndef FIND_TOOL_DIR +$(info using recursive search) +FIND_TOOL_DIR := $(shell where /r c:\progra~2 arm-none-eabi-gcc) +endif +endif #QORC_TC_PATH + +ifdef FIND_TOOL_DIR +export QORC_TC_PATH = $(subst \arm-none-eabi-gcc.exe,,$(FIND_TOOL_DIR)) +endif + +#Override with your own tool direcoty +#export QORC_TC_PATH=C:\Program Files (x86)\GNU Tools ARM Embedded\7 2017-q4-major\bin +ifndef QORC_TC_PATH +$(info ###### ERROR - QORC_TC_PATH is not defined in config.mk #########) +exit +endif + +export NM="$(QORC_TC_PATH)\arm-none-eabi-nm" +export LD="$(QORC_TC_PATH)\arm-none-eabi-gcc" +export AS="$(QORC_TC_PATH)\arm-none-eabi-gcc" -c +export CC="$(QORC_TC_PATH)\arm-none-eabi-gcc" -c +export ELF2BIN="$(QORC_TC_PATH)\arm-none-eabi-objcopy" +################ +else +################ Linux ################### +$(info Using Linux GNU GCC Toolchain) + +export DIR_SEP=/ + +#Configuration options for GNU Linux GCC Toolchain +export MKDIR=mkdir -p +export RM=-rm -f +export RMDIR=-rm -rf +export LS=ls +export CP=cp +export MV=mv +export ECHO=echo +export PROJ_DIR=$(shell pwd) +export PROJ_ROOT=$(PROJ_DIR)/../../.. +export OUTPUT_PATH=$(PROJ_DIR)/output +export DEPEND_PATH=$(PROJ_DIR)/output/depend + +export APP_DIR = $(subst /GCC_Project,,${PROJ_DIR}) +TMPVAR = $(subst ${DIR_SEP}, ,${APP_DIR}) +PROJ_NAME=$(word $(words ${TMPVAR}),${TMPVAR}) +export PROJ_NAME + +ifndef QORC_TC_PATH +FIND_TOOL_DIR := $(subst arm-none-eabi-gcc: ,,$(shell which arm-none-eabi-gcc)) +export QORC_TC_PATH = $(subst /arm-none-eabi-gcc,,$(FIND_TOOL_DIR)) +endif #QORC_TC_PATH + +# Allow TOOL to be provided on the command line +# ie; make -f Makefile QORC_TC_PATH=/some/path/ + +ifndef QORC_TC_PATH +#Override with your own tool directory +#use full path. do not use ~/ as a relative path +#export QORC_TC_PATH="~/arm-gnu/gcc-arm-none-eabi-7-2017-q4-major/bin" <<<=== will not work +#export QORC_TC_PATH="/home/user_name/arm-gnu/gcc-arm-none-eabi-7-2017-q4-major/bin" <<<=== works +#export QORC_TC_PATH=/usr/local/gcc-arm-none-eabi-7-2017-q4-major/bin +endif + +ifndef QORC_TC_PATH +$(info ###### ERROR - QORC_TC_PATH is not defined in config.mk #########) +exit +endif +export NM="$(QORC_TC_PATH)/arm-none-eabi-nm" +export LD="$(QORC_TC_PATH)/arm-none-eabi-gcc" +export AS="$(QORC_TC_PATH)/arm-none-eabi-gcc" -c +export CC="$(QORC_TC_PATH)/arm-none-eabi-gcc" -c +export ELF2BIN="$(QORC_TC_PATH)/arm-none-eabi-objcopy" +################ +endif +################ + +$(info PROJ_NAME = ${PROJ_NAME}) + +#Ouput binary name +export OUTPUT_FILE=${PROJ_NAME} + +#Libraries to include +export LIBS= diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Amazon b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Amazon new file mode 100644 index 00000000..be09c4d3 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Amazon @@ -0,0 +1,11 @@ + +AMAZON_SRCS:=$(wildcard $(AMAZON_DIR)/*.c) + +filters= + +SRCS:=$(filter-out $(filters),$(notdir $(AMAZON_SRCS))) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(AMAZON_DIR) + +include $(COMMON_STUB) + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Appdir b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Appdir new file mode 100644 index 00000000..9156cd52 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Appdir @@ -0,0 +1,15 @@ + +MAIN_SRCS:=$(wildcard $(MAIN_DIR)/*.c) + +#$(info MAIN_PATTERN $(MAIN_DIR)/*.c) +#$(info MAIN_SRCS $(MAIN_SRCS)) +#$(info MAIN_DIR $(MAIN_DIR)) +#$(info MAIN_SRCS $(MAIN_SRCS)) + +SRCS:=$(notdir $(MAIN_SRCS)) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(MAIN_DIR) + +include $(COMMON_STUB) + + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Audio b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Audio new file mode 100644 index 00000000..e1503a6b --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Audio @@ -0,0 +1,13 @@ + +AUDIO_SRCS:=$(wildcard $(AUDIO_DIR)/*.c) + +filters=ql_i2stx_pe.c ql_voice_hearable_protocol.c audio_encode_opus.c \ + dummyaudiope.c ql_audio_process.c ql_audio_stream.c stereo2mono.c \ + ql_audio_preproc.c + +SRCS:=$(filter-out $(filters),$(notdir $(AUDIO_SRCS))) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(AUDIO_DIR) + +include $(COMMON_STUB) + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_CMSIS b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_CMSIS new file mode 100644 index 00000000..08db2760 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_CMSIS @@ -0,0 +1,9 @@ +export NN_1_DIR = $(CMSIS_DIR)$(DIR_SEP)ActivationFunctions +CMSIS_SRCS:=$(NN_1_DIR)/arm_nn_activations_q15.c $(NN_1_DIR)/arm_relu_q15.c + +SRCS:=$(notdir $(CMSIS_SRCS)) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(NN_1_DIR) + + +include $(COMMON_STUB) diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_CMSIS_2 b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_CMSIS_2 new file mode 100644 index 00000000..8e978e0a --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_CMSIS_2 @@ -0,0 +1,12 @@ + +export NN_2_DIR = $(CMSIS_DIR)$(DIR_SEP)FullyConnectedFunctions +CMSIS_SRCS:=$(NN_2_DIR)/arm_fully_connected_mat_q7_vec_q15_opt.c + + +SRCS:=$(notdir $(CMSIS_SRCS)) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(NN_2_DIR) + + +include $(COMMON_STUB) + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_CMSIS_3 b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_CMSIS_3 new file mode 100644 index 00000000..e9d537ac --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_CMSIS_3 @@ -0,0 +1,11 @@ + +export NN_3_DIR = $(CMSIS_DIR)$(DIR_SEP)NNSupportFunctions +CMSIS_SRCS:=$(NN_3_DIR)/NNSupportFunctions/arm_nntables.c + +SRCS:=$(notdir $(CMSIS_SRCS)) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(NN_3_DIR) + + +include $(COMMON_STUB) + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Consilient b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Consilient new file mode 100644 index 00000000..84219935 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Consilient @@ -0,0 +1,11 @@ + +CONSILIENT_SRCS:=$(wildcard $(CONSILIENT_DIR)/*.c) + +filters= + +SRCS:=$(filter-out $(filters),$(notdir $(CONSILIENT_SRCS))) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(CONSILIENT_DIR) + +include $(COMMON_STUB) + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Control b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Control new file mode 100644 index 00000000..3b7c9a08 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Control @@ -0,0 +1,9 @@ + +CONTROL_SRCS:=$(wildcard $(CONTROL_DIR)/*.c) + +SRCS:=$(notdir $(CONTROL_SRCS)) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(CONTROL_DIR) + +include $(COMMON_STUB) + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_D2HProtocol b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_D2HProtocol new file mode 100644 index 00000000..c5314353 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_D2HProtocol @@ -0,0 +1,9 @@ + +D2H_SRCS:=$(wildcard $(D2H_DIR)/*.c ) + +SRCS:=$(notdir $(D2H_SRCS)) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(D2H_DIR) + +include $(COMMON_STUB) + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_DSPC b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_DSPC new file mode 100644 index 00000000..20b5d5f5 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_DSPC @@ -0,0 +1,11 @@ + +DSPC_SRCS:=$(wildcard $(DSPC_DIR)/*.c) + +filters=ControlDriver.c GPIO.c + +SRCS:=$(filter-out $(filters), $(notdir $(DSPC_SRCS))) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(DSPC_DIR) + +include $(COMMON_STUB) + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_DSPC_Schematics b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_DSPC_Schematics new file mode 100644 index 00000000..53c0a8c8 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_DSPC_Schematics @@ -0,0 +1,11 @@ + +DSPC_SCHEMATICS_SRCS:=$(wildcard $(DSPC_SCHEMATICS_DIR)/*.c) + +filters= + +SRCS:=$(filter-out $(filters), $(notdir $(DSPC_SCHEMATICS_SRCS))) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(DSPC_SCHEMATICS_DIR) + +include $(COMMON_STUB) + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_DatablockManager b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_DatablockManager new file mode 100644 index 00000000..0244ce16 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_DatablockManager @@ -0,0 +1,9 @@ + +DBM_SRCS:=$(wildcard $(DBM_DIR)/*.c ) + +SRCS:=$(notdir $(DBM_SRCS)) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(DBM_DIR) + +include $(COMMON_STUB) + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_DatablockProcessor b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_DatablockProcessor new file mode 100644 index 00000000..cd50ddc6 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_DatablockProcessor @@ -0,0 +1,9 @@ + +DBP_SRCS:=$(wildcard $(DBP_DIR)/*.c) + +SRCS:=$(notdir $(DBP_SRCS)) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(DBP_DIR) + +include $(COMMON_STUB) + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_FPGA b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_FPGA new file mode 100644 index 00000000..029e9d91 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_FPGA @@ -0,0 +1,12 @@ + +FPGA_SRCS:=$(wildcard $(FPGA_DIR)/*.c ) + +filters= + + +SRCS:=$(filter-out $(filters),$(notdir $(FPGA_SRCS))) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(FPGA_DIR) + +include $(COMMON_STUB) + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_FreeRTOS b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_FreeRTOS new file mode 100644 index 00000000..a486a52b --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_FreeRTOS @@ -0,0 +1,51 @@ +FREERTOS_SRCS:=$(wildcard $(FREERTOS_DIR)/*.c ) + +SRCS:=$(notdir $(FREERTOS_SRCS)) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(FREERTOS_DIR) + +D_FILES:=$(addprefix $(DEPEND_PATH)$(DIR_SEP),$(SRCS:.c=.d)) +O_FILES:=$(addprefix $(OUTPUT_PATH)$(DIR_SEP),$(SRCS:.c=.o)) + +D_FILES += $(DEPEND_PATH)$(DIR_SEP)port.d $(DEPEND_PATH)$(DIR_SEP)heap_4.d +O_FILES += $(OUTPUT_PATH)$(DIR_SEP)port.o $(OUTPUT_PATH)$(DIR_SEP)heap_4.o + + +DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPEND_PATH)/$*.d +DEPFLAGS_2 = -MT $@ -MMD -MP -MF $(DEPEND_PATH)/port.d +DEPFLAGS_3 = -MT $@ -MMD -MP -MF $(DEPEND_PATH)/heap_4.d + +POSTCOMPILE = @$(CP) $(DEPEND_PATH)/$*.Td $(DEPEND_PATH)/$*.d +POSTCOMPILE_4 = del $(DEPEND_PATH)/$*.Td + + +all:$(OBJS) $(OUTPUT_PATH)/port.o $(OUTPUT_PATH)/heap_4.o + +%.o:%.c +$(OUTPUT_PATH)/%.o:$(SRC_PATH)/%.c $(DEPEND_PATH)/%.d + @echo Compile: $< + $(HIDE)$(CC) $< $(CFLAGS) $(DEPFLAGS) $(INCLUDE_DIRS) -o $@ + + +$(OUTPUT_PATH)/port.o: $(SRC_PATH)/portable/GCC/ARM_CM4F_quicklogic_s3XX/port.c $(DEPEND_PATH)/port.d + @echo Compile: $< + $(HIDE)$(CC) $(SRC_PATH)/portable/GCC/ARM_CM4F_quicklogic_s3XX/port.c $(CFLAGS) $(DEPFLAGS_2) $(INCLUDE_DIRS) -o $@ + + +$(OUTPUT_PATH)/heap_4.o: $(SRC_PATH)/portable/MemMang/heap_4.c $(DEPEND_PATH)/heap_4.d + @echo Compile: $< + $(HIDE)$(CC) $(SRC_PATH)/portable/MemMang/heap_4.c $(CFLAGS) $(DEPFLAGS_3) $(INCLUDE_DIRS) -o $@ + + +-include $(D_FILES) + +$(DEPEND_PATH)/%.d: ; +.PRECIOUS: $(DEPEND_PATH)/%.d + +DELETE_ME=$(D_FILES) $(O_FILES) +clean: + @echo Cleaning ... +ifneq (,${DELETE_ME}) + -$(HIDE)$(RM) $(DELETE_ME) +endif + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_HAL b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_HAL new file mode 100644 index 00000000..12f47a3e --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_HAL @@ -0,0 +1,12 @@ + +HAL_SRCS:=$(wildcard $(HAL_DIR)/*.c) + +filters=eoss3_hal_fpga_adc.c +SRCS:=$(filter-out $(filters), $(notdir $(HAL_SRCS))) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(HAL_DIR) + +include $(COMMON_STUB) + + + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Libraries b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Libraries new file mode 100644 index 00000000..fef027f9 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Libraries @@ -0,0 +1,45 @@ +# -*- mode: Makefile -*- + +all: POWER CMSIS UTILS DATABLOCKMANAGER D2HPROTOCOL AUDIO FPGA + + +.PHONY: POWER +POWER: + make -f makefiles/Makefile_Power + +.PHONY: CMSIS +CMSIS: + make -f makefiles/Makefile_CMSIS + make -f makefiles/Makefile_CMSIS_2 + make -f makefiles/Makefile_CMSIS_3 + +.PHONY: UTILS +UTILS: + make -f makefiles/Makefile_Utils + +.PHONY: DATABLOCKMANAGER +DATABLOCKMANAGER: + make -f makefiles/Makefile_DatablockManager + +.PHONY: D2HPROTOCOL +D2HPROTOCOL: + make -f makefiles/Makefile_D2HProtocol + +.PHONY: AUDIO +AUDIO: + make -f makefiles/Makefile_Audio + +.PHONY: FPGA +FPGA: + make -f makefiles/Makefile_FPGA + +clean: + make -f makefiles/Makefile_Power clean + make -f makefiles/Makefile_Utils clean + make -f makefiles/Makefile_CMSIS clean + make -f makefiles/Makefile_CMSIS_2 clean + make -f makefiles/Makefile_CMSIS_3 clean + make -f makefiles/Makefile_DatablockManager clean + make -f makefiles/Makefile_D2HProtocol clean + make -f makefiles/Makefile_Audio clean + make -f makefiles/Makefile_FPGA clean diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Power b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Power new file mode 100644 index 00000000..2b93cc21 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Power @@ -0,0 +1,12 @@ + +POWER_SRCS:=$(wildcard $(POWER_DIR)/*.c ) + +filters=hearable_pwrcfg.c s3x_pwrcfg_prototype.c + + +SRCS:=$(filter-out $(filters),$(notdir $(POWER_SRCS))) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(POWER_DIR) + +include $(COMMON_STUB) + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Startup b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Startup new file mode 100644 index 00000000..0f11025a --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Startup @@ -0,0 +1,28 @@ +SRCS:=startup_EOSS3B_GCC.c vectors_CM4F_gcc.c +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(PROJ_ROOT)$(DIR_SEP)HAL$(DIR_SEP)startup + +D_FILES:=$(addprefix $(DEPEND_PATH)$(DIR_SEP),$(SRCS:.c=.d)) +O_FILES:=$(addprefix $(OUTPUT_PATH)$(DIR_SEP),$(SRCS:.c=.o)) + +DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPEND_PATH)/$*.d + + +all: $(OBJS) + +%.o:%.c +$(OUTPUT_PATH)/%.o:$(SRC_PATH)/%.c $(DEPEND_PATH)/%.d + @echo Compile: $< + $(HIDE)$(CC) $< $(CFLAGS) $(DEPFLAGS) $(INCLUDE_DIRS) -o $@ + +-include $(D_FILES)) + +$(DEPEND_PATH)/%.d: ; +.PRECIOUS: $(DEPEND_PATH)/%.d + +DELETEME=${D_FILES} ${O_FILES} +clean: + @echo Clean ... +ifneq (,${DELETEME}) + -$(HIDE)$(RM) $(DELETEME) +endif diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Utils b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Utils new file mode 100644 index 00000000..7cd0bf38 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_Utils @@ -0,0 +1,9 @@ + +UTILS_SRCS:=$(wildcard $(UTILS_DIR)/*.c ) + +SRCS:=$(filter-out micro_tick64.c, $(notdir $(UTILS_SRCS))) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(UTILS_DIR) + +include $(COMMON_STUB) + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_common b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_common new file mode 100644 index 00000000..d851ea6d --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_common @@ -0,0 +1,40 @@ +# -*- mode: Makefile -*- +# This is the common stub to be includeed in each make file + +D_FILES:=$(addprefix $(DEPEND_PATH)$(DIR_SEP),$(SRCS:.c=.d)) +O_FILES:=$(addprefix $(OUTPUT_PATH)$(DIR_SEP),$(SRCS:.c=.o)) +R_FILES:=$(addprefix $(MAIN_FPGA_RTL_DIR)$(DIR_SEP),$(FPGA_RTL_SRCS)) + +DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPEND_PATH)/$*.d + +all: $(OBJS) + + +#$(info QLFS SOURCE: ${SRCS}) +#$(info QLFS OBJS: ${OBJS}) +#$(info SRC_PATH: ${SRC_PATH}) + + +%.o: %.c +$(OUTPUT_PATH)/%.o: $(SRC_PATH)/%.c $(DEPEND_PATH)/%.d + $(HIDE)echo Compile $< + $(HIDE)$(CC) $< $(CFLAGS) $(DEPFLAGS) $(INCLUDE_DIRS) -o $@ + +-include $(D_FILES)) + + +$(DEPEND_PATH)/%.d: ; +.PRECIOUS: $(DEPEND_PATH)/%.d + +DELETEME=$(D_FILES) $(O_FILES) +clean: + @echo Cleaning ... +ifneq (,${DELETEME}) + -$(HIDE)$(RM) $(D_FILES) + -$(HIDE)$(RM) $(O_FILES) +ifneq (,${FPGA_RTL_OBJ}) + -$(HIDE)$(RM) $(MAIN_FPGA_RTL_DIR)/$(FPGA_RTL_OBJ) +endif + -$(HIDE)$(RMDIR) $(MAIN_FPGA_RTL_DIR)/build +endif + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_freertos_gateware b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_freertos_gateware new file mode 100644 index 00000000..ce7fd8a3 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_freertos_gateware @@ -0,0 +1,10 @@ +FREERTOS_GATEWARE_SRCS :=$(wildcard $(FREERTOS_GATEWARE_DIR)/*.c) + +filters=eoss3_hal_fpga_ad7476.c eoss3_hal_fpga_clk_sync.c eoss3_hal_fpga_gpio.c \ + eoss3_hal_fpga_ltc1859.c eoss3_hal_fpga_sdma.c eoss3_hal_fpga_uart.c \ + eoss3_hal_fpga_usbserial.c +SRCS:=$(filter-out $(filters), $(notdir $(FREERTOS_GATEWARE_SRCS))) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(FREERTOS_GATEWARE_DIR) + +include $(COMMON_STUB) diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_fsm b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_fsm new file mode 100644 index 00000000..3116b0c3 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_fsm @@ -0,0 +1,11 @@ +FSM_SRCS:=$(wildcard $(FSM_DIR)/*.c) + +filters=fsm.c + +SRCS:=$(filter-out $(filters),$(notdir $(FSM_SRCS))) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(FSM_DIR) + +include $(COMMON_STUB) + + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_output b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_output new file mode 100644 index 00000000..8a9a8af2 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_output @@ -0,0 +1,21 @@ +#OUT_SRCS:=$(wildcard $(OUTPUT_PATH)/*.o ) + +all: $(OUTPUT_PATH)/*.o + @echo Linking ... + $(HIDE)$(LD) -z muldefs $(OUTPUT_PATH)$(DIR_SEP)*.o $(LD_FLAGS_1) $(LIBS) $(LD_FLAGS_2) + @echo Convert ELF to BIN + $(HIDE)$(ELF2BIN) $(ELF2BIN_OPTIONS) $(OUTPUT_PATH)$(DIR_SEP)$(OUTPUT_FILE).elf $(OUTPUT_PATH)$(DIR_SEP)$(OUTPUT_FILE).bin + @echo Create text symbol table. + $(HIDE)$(NM) $(OUTPUT_PATH)${DIR_SEP}$(OUTPUT_FILE).elf > $(OUTPUT_PATH)${DIR_SEP}$(OUTPUT_FILE).sym.txt + +DELETEME= +DELETEME+= $(wildcard $(OUTPUT_PATH)$(DIR_SEP)$(OUTPUT_FILE).bin) +DELETEME+= $(wildcard $(OUTPUT_PATH)$(DIR_SEP)$(OUTPUT_FILE).elf) +DELETEME+= $(wildcard $(OUTPUT_PATH)$(DIR_SEP)$(OUTPUT_FILE).map) +DELETEME+= $(wildcard $(OUTPUT_PATH)$(DIR_SEP)$(OUTPUT_FILE).sym.txt) +DELETEME := $(strip ${DELETEME}) +clean: + @echo Cleaning ... +ifneq (,${DELETEME}) + -$(HIDE)$(RM) $(DELETEME) +endif diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_quickfeather_BOARD b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_quickfeather_BOARD new file mode 100644 index 00000000..89d802b0 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/makefiles/Makefile_quickfeather_BOARD @@ -0,0 +1,11 @@ + +QUICKFEATHER_SRCS:=$(wildcard $(QUICKFEATHER_DIR)/*.c) + +filters=qf_hardwaresetup.c + +SRCS:=$(filter-out $(filters),$(notdir $(QUICKFEATHER_SRCS))) +OBJS:=$(addprefix $(OUTPUT_PATH)/,$(SRCS:.c=.o)) +SRC_PATH:= $(QUICKFEATHER_DIR) + +include $(COMMON_STUB) + diff --git a/qf_vr_apps/qf_vr_aec_app/GCC_Project/quickfeather.ld b/qf_vr_apps/qf_vr_aec_app/GCC_Project/quickfeather.ld new file mode 100644 index 00000000..dfa3d7f0 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/GCC_Project/quickfeather.ld @@ -0,0 +1,178 @@ +OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") +/* Internal Memory Map*/ +ENTRY(Reset_Handler) +/*this is used at multiple locations in the ld file. So change it here only and not directly in the memory section.*/ +_ram1_start = 0x2003FFFF; +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00043FFF + RAM1 (rwx) : ORIGIN = 0x20044000, LENGTH = 0x00008000 + ram (rwx) : ORIGIN = 0x2004C000, LENGTH = 0x0002FE00 + HWA (rw) : ORIGIN = 0x2007BE00, LENGTH = 0x00000100 + spiram (rw) : ORIGIN = 0x2007C000, LENGTH = 0x00000C00 +} + +SECTIONS +{ + .text : + { + KEEP(*(.isr_vector)) + *(.text*) + + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + *(.rodata*) + + KEEP(*(.eh_fram e*)) + } > rom + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > rom + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + __exidx_end = .; + __etext = .; + + /* _sidata is used in coide startup code */ + _sidata = __etext; + + + .data : + { + __data_start__ = .; + + /* _sdata is used in coide startup code */ + _sdata = __data_start__; + + *(vtable) + *(.data*) + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + KEEP(*(.jcr*)) + . = ALIGN(4); + /* All data end */ + __data_end__ = .; + + /* _edata is used in coide startup code */ + _edata = __data_end__; + } > ram AT > rom + + .Hardware (NOLOAD) : + { + __hwa_start__ = .; /* create symbol for start of section */ + *(*HWA*) /* keep my variable even if not referenced */ + __hwa_end__ = .; /* create symbol for end of section */ + } > HWA + .AUD_DMA_BUFF_LOCATION _ram1_start (NOLOAD) : + { + . = ALIGN(4); + KEEP(*(.AUD_DMA_BUFF_LOCATION)) /* keep it even if not referenced */ + } > RAM1 + .bss : + { + . = ALIGN(4); + __bss_start__ = .; + _sbss = __bss_start__; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + _ebss = __bss_end__; + } > ram + + .rtos : + { + . = ALIGN(4); + __rtos_start__ = .; + *(.rtos*) + . = ALIGN(4); + __rtos_end__ = .; + _ertos = __rtos_end__; + } > ram + +/* SPI shared addresses are fixed: */ + .HOST_SPI_TX_LOCATION 0x2007c000 (NOLOAD) : + { + . = ALIGN(4); + KEEP(*(.HOST_SPI_TX_LOCATION)) /* keep it even if not referenced */ + } > spiram + + .BLE_SPI_TX_LOCATION 0x2007c400 (NOLOAD) : + { + . = ALIGN(4); + KEEP(*(.BLE_SPI_TX_LOCATION)) /* keep it even if not referenced */ + } > spiram + .BLE_SPI_RX_LOCATION 0x2007c800 (NOLOAD) : + { + . = ALIGN(4); + KEEP(*(.BLE_SPI_RX_LOCATION)) /* keep it even if not referenced */ + } > spiram + .heap (COPY): + { + __end__ = .; + _end = __end__; + end = __end__; + __HeapBase = _end; + KEEP(*(.heap)) + __HeapLimit = .; + } > ram + + /* .stack_dummy section doesn't contains any symbols. It is only + * used for linker to calculate size of stack sections, and assign + * values to stack symbols later */ + .co_stack (NOLOAD): + { + . = ALIGN(8); + *(.co_stack .co_stack.*) + } > ram + + /* Set stack top to end of ram , and stack limit move down by + * size of stack_dummy section */ + STACK_SIZE = 3K; + __StackTop = ORIGIN(ram ) + LENGTH(ram ); + __StackLimit = __StackTop - STACK_SIZE; + PROVIDE(__stack = __StackTop); + + /* Check if data + heap + stack exceeds ram limit */ + ASSERT(__StackLimit >= __HeapLimit, "region ram overflowed with stack") +} diff --git a/qf_vr_apps/qf_vr_aec_app/README.rst b/qf_vr_apps/qf_vr_aec_app/README.rst new file mode 100644 index 00000000..bb31a844 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/README.rst @@ -0,0 +1,83 @@ +Voice recognition with AEC example application +============================================== + +The purpose of this application is to provide a software framework to +easily plug-in a 3rd party Achostic Echo Canceller and Voice Recognition +engine for keyword detection. The example application waits for Audio +data to be played on Speaker and tries to do Keyword detection. +The Audio data that is being played on the Speaker is estimated by +the reference signal over I2S peripheral and removed from the signal +given to VR Engine using AEC Algorithm. + +This application project should be used with a HUZZAH32 binary on a +QF-DUO board. + +The Application: +---------------- + +Generally the Application will have a Host Processor along with the Device +Processor (ie S3). Device Processor (S3) will be monitoring the Devices like +Microphone, Accelerometer, Gyroscope etc. When a voice command like "Alexa" +is said, S3 recognizes that and immediately wakes up the Host processor. + +The Alexa phrase is recognized by Amazons Voice Recognition Engine (in the +example project) which takes ~28MHz on S3 processor. Once the Host processor +is woken up by S3, the Audio data is transmitted over SPI (for example) using +D2H Protocol from S3 to Host. Also, after the first recognition of "Alexa", +the VR Engine is turned off, which reduces the MHz needed by the S3. + +The current AEC project allows Host to play Music or Audio on its own I2S +peripheral, which will be picked up by the PDM Microphone connected to S3. +Since Host is up and running during this time, S3 need not worry about the +power while Host is playing the Audio. While the Host is playing the Audio, +the User may want to give an Alexa command. Since the playing of the Audio +can be loud, S3 may not be able to recognize the Alexa command. + +To reduce the "noise" due to this play but recognize the Alexa phrase, S3 +needs to run the AEC algorithm on the PDM signal before passing it to VR +Engine. This is achieved through some Hardware and Software. + +The Hardware: +------------- + +The Audio data that is played by the Host on the Speaker needs to be obtained +by S3. So, it is sent to S3 over I2S (only 3 Pins) and a GPIO pin to indicate +it is valid. The I2S should connect CLK, WCLK, DIN. The GPIO pin can be any pin. + +The Software: +------------- + +S3 grabs the Audio data when the GPIO pin says it is valid, and uses it +to estimate the value picked up by the PDM microphone. It is done by the AEC +software which takes ~51MHz. The estimate is subtracted from the PDM input +and the VR Engine is fed with that. + +Since AEC and VR Engine together (51MHz + 28MHz) along with the other Interrupt +processing (~5MHz) exceeds the S3 processor capacity of 80MHz, "VR Engine is +disabled" when I2S data from Host is valid. + +The AEC algorithm starts when GPIO pin from Host goes up. It stays high +as long as there is some Audio data on I2S line. + +The delay between the PDM data and I2S reference data should be less than 32ms +due to the AEC Algorithm used in the Example. Since the DataBlock of size 15ms +are used, the delay varies and should be within 32ms. + +(Note that I2S Data from Host can be made to be 5ms instead of 15ms to increase +the accuracy of delay by reducing the size of I2S SDMA buffers.) + + +HUZZAH32 Software: +------------------ + +The software on Huzzah32 (ie ESP32 processor with Wi-Fi) will send 30sec of +a song on I2S and will wait 2 minutes. This repeats continuously. + +Everytime I2S data is sent, it is played on the UDA1334, which converts I2S data +to be played on the Speaker. By increasing the Speaker Volume, the data picked up +by S3 PDM can increased. + + + + + diff --git a/qf_vr_apps/qf_vr_aec_app/fsm/FSMstates.csv b/qf_vr_apps/qf_vr_aec_app/fsm/FSMstates.csv new file mode 100644 index 00000000..db98261b --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/fsm/FSMstates.csv @@ -0,0 +1,36 @@ +System State,Events,Expected Next State,Guards,,,,,,,,,Actions,,,,,,,, +,,,DFS,VR,AudioHW,PTT_Switch,Mute_Switch,LPSD,CircularBuffer,HIF,D2H,DFS,VR,AudioHW,PTT_Switch,Mute_Switch,LPSD,CircularBuffer,HIF,D2H +STREAMING_VR,,,NODE4,STOPPED,STREAMING,DONT_CARE,DONT_CARE,DONT_CARE,OUTQING,STARTED,STARTED,NODE4,STOPPED,STREAMING,DONT_CARE,DONT_CARE,DONT_CARE,OUTQING,STARTED,STARTED +,HOST_PROCESS_OFF,STREAMING_STOPPING,,,,,,,,,,,,,,,,STOP,,BEGIN_STOPPING +,LPSD_ON,--,,,,,,,,,,,,,,,STATE_ON,,, +,LPSD_OFF,--,,,,,,,,,,,,,,,STATE_OFF,,, +,HOST_PROCESS_ON,--,,,,,,,,,,,,,,,,,, +STREAMING_STOPPING,,,NODE4,STOPPED,STREAMING,DONT_CARE,DONT_CARE,DONT_CARE,STOPPED,STARTED,STOPPING,NODE4,STOPPED,STREAMING,DONT_CARE,DONT_CARE,DONT_CARE,STOPPED,STARTED,STOPPING +,HIF_EOT,WAIT_ON_KWD,,,,,,LPSD_ON,,,,MIN_NODE4,START,,,,,START_SAVING,STOP,FINISH_STOPPING +,HIF_EOT,WAIT_ON_LPSD,,,,,,LPSD_OFF,,,,MIN_NODE3,STOP,START_SAVING,,,,START_SAVING,STOP,FINISH_STOPPING +,LPSD_ON,--,,,,,,,,,,,,,,,START_ON,,, +,LPSD_OFF,--,,,,,,,,,,,,,,,START_OFF,,, +,HOST_PROCESS_ON,--,,,,,,,,,,,,,,,,,, +WAKING_HOST,,,NODE4,STOPPED,STREAMING,DONT_CARE,DONT_CARE,DONT_CARE,SAVING,STARTED,STOPPED,NODE4,STOPPED,STREAMING,DONT_CARE,DONT_CARE,DONT_CARE,SAVING,STARTED,STOPPED +,HOST_READY_TO_RECEIVE,STREAMING_VR,,,,,,,,,,,,,,,,START_OUTQ,,START +,LPSD_ON,--,,,,,,,,,,,,,,,START_ON,,, +,LPSD_OFF,--,,,,,,,,,,,,,,,START_OFF,,, +,HOST_PROCESS_ON,--,,,,,,,,,,,,,,,,,, +WAIT_ON_KWD,,,NODE4,STARTED,STREAMING,DONT_CARE,DONT_CARE,DONT_CARE,SAVING,STOPPED,STOPPED,NODE4,STARTED,STREAMING,DONT_CARE,DONT_CARE,DONT_CARE,SAVING,STOPPED,STOPPED +,VR_TRIGGER,WAKING_HOST,,,,,,,,,,,STOP,,,,,,START, +,HOST_PROCESS_ON,WAKING_HOST,,,,,,,,,,,STOP,,,,,,START, +,LPSD_OFF,WAIT_ON_LPSD,,,,,,,,,,MIN_NODE3,STOP ,START_SAVING,,,START_OFF,START_SAVING,, +,LPSD_ON,--,,,,,,,,,,,,,,,,,, +,HOST_MUTE_ON,CONFIGURED,,,,,,,,,,MIN_NODE0,STOP,STOP,,,STOP,STOP,, +WAIT_ON_LPSD,,,NODE3,STOPPED,SAVING,DONT_CARE,DONT_CARE,DONT_CARE,SAVING,STOPPED,STOPPED,NODE3,STOPPED,SAVING,DONT_CARE,DONT_CARE,DONT_CARE,SAVING,STOPPED,STOPPED +,LPSD_ON,WAIT_ON_KWD,,,,,,,,,,MIN_NODE4,START,START_STREAMING,,,START_ON,,, +,HOST_PROCESS_ON,WAKING_HOST,,,,,,,,,,MIN_NODE4,STOP,START_STREAMING,,,START_ON,,START, +,HOST_PROCESS_OFF,--,,,,,,,,,,,,,,,,,, +,LPSD_OFF,--,,,,,,,,,,,,,,,START_OFF,,, +,HOST_MUTE_ON,CONFIGURED,,,,,,,,,,MIN_NODE0,STOP,STOP,,,STOP,STOP,, +CONFIGURED,,,DONT_CARE,STOPPED,STOPPED,DONT_CARE,DONT_CARE,STOPPED,STOPPED,STOPPED,STOPPED,DONT_CARE,STOPPED,STOPPED,DONT_CARE,DONT_CARE,STOPPED,STOPPED,STOPPED,STOPPED +,START,,,,,,,,,,,MIN_NODE3,,START_SAVING,,,START_OFF,START_SAVING,, +,HOST_MUTE_OFF,,,,,,,,,,,MIN_NODE3,,,,,,,, +INITIAL,,,UNCONFIG,UNCONFIG,UNCONFIG,UNCONFIG,UNCONFIG,UNCONFIG,UNCONFIG,UNCONFIG,UNCONFIG,UNCONFIG,UNCONFIG,UNCONFIG,UNCONFIG,UNCONFIG,UNCONFIG,UNCONFIG,UNCONFIG,UNCONFIG +,CONFIG,,,,,,,,,,,CONFIG,CONFIG,CONFIG,CONFIG,CONFIG,CONFIG,CONFIG,CONFIG,CONFIG +//END OF TABLE,,,,,,,,,,,,,,,,,,,, diff --git a/qf_vr_apps/qf_vr_aec_app/fsm/FSMstates.xlsx b/qf_vr_apps/qf_vr_aec_app/fsm/FSMstates.xlsx new file mode 100644 index 00000000..fdafc301 Binary files /dev/null and b/qf_vr_apps/qf_vr_aec_app/fsm/FSMstates.xlsx differ diff --git a/qf_vr_apps/qf_vr_aec_app/fsm/RCEvents.txt b/qf_vr_apps/qf_vr_aec_app/fsm/RCEvents.txt new file mode 100644 index 00000000..a97a1fe4 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/fsm/RCEvents.txt @@ -0,0 +1,9 @@ +EVENT,CONFIG +EVENT,START +EVENT,LPSD_ON +EVENT,VR_TRIGGER +EVENT,HOST_READY_TO_RECEIVE +EVENT,HOST_PROCESS_OFF +EVENT,HIF_EOT +EVENT,LPSD_OFF + diff --git a/qf_vr_apps/qf_vr_aec_app/fsm/RCProcessCharacteristics.txt b/qf_vr_apps/qf_vr_aec_app/fsm/RCProcessCharacteristics.txt new file mode 100644 index 00000000..a010b8df --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/fsm/RCProcessCharacteristics.txt @@ -0,0 +1,89 @@ +//Process,Type,Action/Interrupt,Call/Event,NextState/NextState,Comments,Issues +Process: DFS +Action: CONFIG => NODE0 +Action: MIN_NODE0 => NODE0 +Action: MIN_NODE1 => NODE1 +Action: MIN_NODE2 => NODE2 +Action: MIN_NODE3 => NODE3 +Action: MIN_NODE4 => NODE4 +Action: MIN_NODE5 => NODE5 +Action: MIN_NODE6 => NODE6 +Action: MIN_NODE7 => NODE7 + +Process: PTT_Switch +Action: CONFIG => STOPPED + +Process: Mute_Switch +Action: CONFIG => STOPPED + + +Process: VM1010 +Action: CONFIG=>STOPPED +Action: STOP => STOPPED +Action: START_NORMAL => NORMAL +Action: START_WOS => WOS +Event: WOS + +Process: VM3011 +Action: CONFIG=>STOPPED +Action: STOP => STOPPED +Action: START_NORMAL => NORMAL +Action: START_WOS => WOS +Event: WOS + +Process: WOS_Timer +Action: CONFIG => STOPPED, +Action: STOP => STOPPED +Action: START => STARTED +Event: WOS_TIMER + +Process: AudioHW +Action: CONFIG => STOPPED, +Action: STOP => STOPPED +Action: START_SAVING => SAVING +Action: START_STREAMING => STREAMING + +Process: LPSD +Action: CONFIG => STOPPED +Action: STOP => STOPPED +Action: START_OFF => LPSD_OFF +Action: START_ON => LPSD_ON +Action: STATE_OFF => LPSD_OFF +Action: STATE_ON => LPSD_ON +Event: LPSD_ON +Event: LPSD_OFF + +Process: CircularBuffer +Action: CONFIG => STOPPED, +Action: STOP => STOPPED +Action: START_SAVING => SAVING +Action: START_OUTQ => OUTQING + + +Process: VR +Action: CONFIG => STOPPED, +Action: STOP => STOPPED +Action: START => STARTED +Event: VR_TRIGGER + +Process: HIF +Action: CONFIG => STOPPED, +Action: STOP => STOPPED +Action: START => STARTED +Event: HOST_READY_TO_RECEIVE +Event: HOST_PROCESS_OFF +Event: HOST_PROCESS_ON +Event: HOST_MUTE_OFF +Event: HOST_MUTE_ON +Event: HIF_EOT + +Process: Opus +Action: CONFIG => STOPPED, +Action: STOP => STOPPED +Action: START => STARTED + +Process: D2H +Action: CONFIG => STOPPED, +Action: FINISH_STOPPING => STOPPED +Action: BEGIN_STOPPING => STOPPING +Action: START => STARTED diff --git a/qf_vr_apps/qf_vr_aec_app/fsm/fsm.h b/qf_vr_apps/qf_vr_aec_app/fsm/fsm.h new file mode 100644 index 00000000..9a05427e --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/fsm/fsm.h @@ -0,0 +1,73 @@ +/* Defines for FSM Control */ +#ifndef FSM_H_ +#define FSM_H_ +/* States */ +enum process_state { + PSTATE_UNCONFIG = 0, + PSTATE_UNKNOWN, + PSTATE_DONT_CARE, + PSTATE_STOPPING, + PSTATE_OUTQING, + PSTATE_LPSD_ON, + PSTATE_LPSD_OFF, + PSTATE_STREAMING, + PSTATE_SAVING, + PSTATE_STARTED, + PSTATE_WOS, + PSTATE_NORMAL, + PSTATE_STOPPED, + PSTATE_NODE7, + PSTATE_NODE6, + PSTATE_NODE5, + PSTATE_NODE4, + PSTATE_NODE3, + PSTATE_NODE2, + PSTATE_NODE1, + PSTATE_NODE0, +}; + +/* Events */ +enum control_event { + CEVENT_CONFIG = 0, + CEVENT_START, + CEVENT_HIF_EOT, + CEVENT_HOST_MUTE_ON, + CEVENT_HOST_MUTE_OFF, + CEVENT_HOST_PROCESS_ON, + CEVENT_HOST_PROCESS_OFF, + CEVENT_HOST_READY_TO_RECEIVE, + CEVENT_VR_TRIGGER, + CEVENT_LPSD_OFF, + CEVENT_LPSD_ON, + CEVENT_WOS_TIMER, + CEVENT_WOS, +}; + +/* Actions */ +enum process_action { + PACTION_NULL = 0, + PACTION_BEGIN_STOPPING, + PACTION_FINISH_STOPPING, + PACTION_START_OUTQ, + PACTION_STATE_ON, + PACTION_STATE_OFF, + PACTION_START_ON, + PACTION_START_OFF, + PACTION_START_STREAMING, + PACTION_START_SAVING, + PACTION_START, + PACTION_START_WOS, + PACTION_START_NORMAL, + PACTION_STOP, + PACTION_MIN_NODE7, + PACTION_MIN_NODE6, + PACTION_MIN_NODE5, + PACTION_MIN_NODE4, + PACTION_MIN_NODE3, + PACTION_MIN_NODE2, + PACTION_MIN_NODE1, + PACTION_MIN_NODE0, + PACTION_CONFIG, +}; + +#endif //FSM_H_ diff --git a/qf_vr_apps/qf_vr_aec_app/fsm/fsm_cli_table.c b/qf_vr_apps/qf_vr_aec_app/fsm/fsm_cli_table.c new file mode 100644 index 00000000..d6463d77 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/fsm/fsm_cli_table.c @@ -0,0 +1,22 @@ +/* FSM sub menu that defines all control events */ +#include "Fw_global_config.h" +#include "ql_controlTask.h" +#include "cli.h" + +void cli_fsm_event(const struct cli_cmd_entry *pEntry); + +const struct cli_cmd_entry fsm_menu[] = { + CLI_CMD_WITH_ARG( "start", cli_fsm_event, CEVENT_START, "sends START event" ), + CLI_CMD_WITH_ARG( "hif_eot", cli_fsm_event, CEVENT_HIF_EOT, "sends HIF_EOT event" ), + CLI_CMD_WITH_ARG( "host_mute_on", cli_fsm_event, CEVENT_HOST_MUTE_ON, "sends HOST_MUTE_ON event" ), + CLI_CMD_WITH_ARG( "host_mute_off", cli_fsm_event, CEVENT_HOST_MUTE_OFF, "sends HOST_MUTE_OFF event" ), + CLI_CMD_WITH_ARG( "host_process_on", cli_fsm_event, CEVENT_HOST_PROCESS_ON, "sends HOST_PROCESS_ON event" ), + CLI_CMD_WITH_ARG( "host_process_off", cli_fsm_event, CEVENT_HOST_PROCESS_OFF, "sends HOST_PROCESS_OFF event" ), + CLI_CMD_WITH_ARG( "host_ready_to_receive", cli_fsm_event, CEVENT_HOST_READY_TO_RECEIVE, "sends HOST_READY_TO_RECEIVE event" ), + CLI_CMD_WITH_ARG( "vr_trigger", cli_fsm_event, CEVENT_VR_TRIGGER, "sends VR_TRIGGER event" ), + CLI_CMD_WITH_ARG( "lpsd_off", cli_fsm_event, CEVENT_LPSD_OFF, "sends LPSD_OFF event" ), + CLI_CMD_WITH_ARG( "lpsd_on", cli_fsm_event, CEVENT_LPSD_ON, "sends LPSD_ON event" ), + CLI_CMD_WITH_ARG( "wos_timer", cli_fsm_event, CEVENT_WOS_TIMER, "sends WOS_TIMER event" ), + CLI_CMD_WITH_ARG( "wos", cli_fsm_event, CEVENT_WOS, "sends WOS event" ), + CLI_CMD_TERMINATE() +}; diff --git a/qf_vr_apps/qf_vr_aec_app/fsm/fsm_tables.h b/qf_vr_apps/qf_vr_aec_app/fsm/fsm_tables.h new file mode 100644 index 00000000..51ad51ec --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/fsm/fsm_tables.h @@ -0,0 +1,215 @@ +/* State Machine Description */ +/* Created from state file: 'FSMstates.csv' */ +/* In a separate file for ease of creation. Should only be included in ql_controlTask.c */ +#include "ql_controlDefines.h" +#if KPROCESS < 9 +#error KPROCESS < 9 +#endif +#if KSTATES < 34 +#error KSTATES < 34 +#endif +#define KPROCESSACTUAL 9 +#define KSTATESACTUAL 34 + +// DFS VR AudioHW PTT_Switch Mute_Switch LPSD CircularBuffer HIF D2H +struct GSMrow afsmrow[KSTATES] = { + + {true, "STREAMING_VR" , 0 ,{ PSTATE_NODE4 ,PSTATE_STOPPED ,PSTATE_STREAMING ,PSTATE_DONT_CARE ,PSTATE_DONT_CARE ,PSTATE_DONT_CARE ,PSTATE_OUTQING ,PSTATE_STARTED ,PSTATE_STARTED ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_HOST_PROCESS_OFF,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,PACTION_STOP ,0 ,PACTION_BEGIN_STOPPING,}}, + {false, "" , CEVENT_LPSD_ON ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,0 ,0 ,0 ,0 ,PACTION_STATE_ON ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_LPSD_OFF ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,0 ,0 ,0 ,0 ,PACTION_STATE_OFF ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_HOST_PROCESS_ON,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}}, + {true, "STREAMING_STOPPING", 0 ,{ PSTATE_NODE4 ,PSTATE_STOPPED ,PSTATE_STREAMING ,PSTATE_DONT_CARE ,PSTATE_DONT_CARE ,PSTATE_DONT_CARE ,PSTATE_STOPPED ,PSTATE_STARTED ,PSTATE_STOPPING ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_HIF_EOT ,{ 0 ,0 ,0 ,0 ,0 ,PSTATE_LPSD_ON ,0 ,0 ,0 ,}, + { PACTION_MIN_NODE4 ,PACTION_START ,0 ,0 ,0 ,0 ,PACTION_START_SAVING,PACTION_STOP ,PACTION_FINISH_STOPPING,}}, + {false, "" , CEVENT_HIF_EOT ,{ 0 ,0 ,0 ,0 ,0 ,PSTATE_LPSD_OFF ,0 ,0 ,0 ,}, + { PACTION_MIN_NODE3 ,PACTION_STOP ,PACTION_START_SAVING,0 ,0 ,0 ,PACTION_START_SAVING,PACTION_STOP ,PACTION_FINISH_STOPPING,}}, + {false, "" , CEVENT_LPSD_ON ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,0 ,0 ,0 ,0 ,PACTION_START_ON ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_LPSD_OFF ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,0 ,0 ,0 ,0 ,PACTION_START_OFF ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_HOST_PROCESS_ON,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}}, + {true, "WAKING_HOST" , 0 ,{ PSTATE_NODE4 ,PSTATE_STOPPED ,PSTATE_STREAMING ,PSTATE_DONT_CARE ,PSTATE_DONT_CARE ,PSTATE_DONT_CARE ,PSTATE_SAVING ,PSTATE_STARTED ,PSTATE_STOPPED ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_HOST_READY_TO_RECEIVE,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,PACTION_START_OUTQ ,0 ,PACTION_START ,}}, + {false, "" , CEVENT_LPSD_ON ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,0 ,0 ,0 ,0 ,PACTION_START_ON ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_LPSD_OFF ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,0 ,0 ,0 ,0 ,PACTION_START_OFF ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_HOST_PROCESS_ON,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}}, + {true, "WAIT_ON_KWD" , 0 ,{ PSTATE_NODE4 ,PSTATE_STARTED ,PSTATE_STREAMING ,PSTATE_DONT_CARE ,PSTATE_DONT_CARE ,PSTATE_DONT_CARE ,PSTATE_SAVING ,PSTATE_STOPPED ,PSTATE_STOPPED ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_VR_TRIGGER ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,PACTION_STOP ,0 ,0 ,0 ,0 ,0 ,PACTION_START ,0 ,}}, + {false, "" , CEVENT_HOST_PROCESS_ON,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,PACTION_STOP ,0 ,0 ,0 ,0 ,0 ,PACTION_START ,0 ,}}, + {false, "" , CEVENT_LPSD_OFF ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { PACTION_MIN_NODE3 ,PACTION_STOP ,PACTION_START_SAVING,0 ,0 ,PACTION_START_OFF ,PACTION_START_SAVING,0 ,0 ,}}, + {false, "" , CEVENT_LPSD_ON ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_HOST_MUTE_ON ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { PACTION_MIN_NODE0 ,PACTION_STOP ,PACTION_STOP ,0 ,0 ,PACTION_STOP ,PACTION_STOP ,0 ,0 ,}}, + {true, "WAIT_ON_LPSD" , 0 ,{ PSTATE_NODE3 ,PSTATE_STOPPED ,PSTATE_SAVING ,PSTATE_DONT_CARE ,PSTATE_DONT_CARE ,PSTATE_DONT_CARE ,PSTATE_SAVING ,PSTATE_STOPPED ,PSTATE_STOPPED ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_LPSD_ON ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { PACTION_MIN_NODE4 ,PACTION_START ,PACTION_START_STREAMING,0 ,0 ,PACTION_START_ON ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_HOST_PROCESS_ON,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { PACTION_MIN_NODE4 ,PACTION_STOP ,PACTION_START_STREAMING,0 ,0 ,PACTION_START_ON ,0 ,PACTION_START ,0 ,}}, + {false, "" , CEVENT_HOST_PROCESS_OFF,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_LPSD_OFF ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,0 ,0 ,0 ,0 ,PACTION_START_OFF ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_HOST_MUTE_ON ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { PACTION_MIN_NODE0 ,PACTION_STOP ,PACTION_STOP ,0 ,0 ,PACTION_STOP ,PACTION_STOP ,0 ,0 ,}}, + {true, "CONFIGURED" , 0 ,{ PSTATE_DONT_CARE ,PSTATE_STOPPED ,PSTATE_STOPPED ,PSTATE_DONT_CARE ,PSTATE_DONT_CARE ,PSTATE_STOPPED ,PSTATE_STOPPED ,PSTATE_STOPPED ,PSTATE_STOPPED ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_START ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { PACTION_MIN_NODE3 ,0 ,PACTION_START_SAVING,0 ,0 ,PACTION_START_OFF ,PACTION_START_SAVING,0 ,0 ,}}, + {false, "" , CEVENT_HOST_MUTE_OFF ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { PACTION_MIN_NODE3 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}}, + {true, "INITIAL" , 0 ,{ PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}}, + {false, "" , CEVENT_CONFIG ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { PACTION_CONFIG ,PACTION_CONFIG ,PACTION_CONFIG ,PACTION_CONFIG ,PACTION_CONFIG ,PACTION_CONFIG ,PACTION_CONFIG ,PACTION_CONFIG ,PACTION_CONFIG ,}}, + {true, "//ENDOFTABLE" , 0 ,{ 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}} +}; + +struct GSMrow currentState = + + {true, "INITIAL" , 0 ,{ PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,PSTATE_UNCONFIG ,}, + { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,}} +; +extern enum process_state LPSD_State; + +enum process_state DFS_FSMAction(enum process_action, void*); +extern int DFS_FSMConfigData; +enum process_state VR_FSMAction(enum process_action, void*); +extern int VR_FSMConfigData; +enum process_state AudioHW_FSMAction(enum process_action, void*); +extern int AudioHW_FSMConfigData; +enum process_state PTT_Switch_FSMAction(enum process_action, void*); +extern int PTT_Switch_FSMConfigData; +enum process_state Mute_Switch_FSMAction(enum process_action, void*); +extern int Mute_Switch_FSMConfigData; +enum process_state LPSD_FSMAction(enum process_action, void*); +extern int LPSD_FSMConfigData; +enum process_state CircularBuffer_FSMAction(enum process_action, void*); +extern int CircularBuffer_FSMConfigData; +enum process_state HIF_FSMAction(enum process_action, void*); +extern int HIF_FSMConfigData; +enum process_state D2H_FSMAction(enum process_action, void*); +extern int D2H_FSMConfigData; + +struct ProcessActions apaction[KPROCESSACTUAL] = { + { DFS_FSMAction, (void*)&DFS_FSMConfigData}, + { VR_FSMAction, (void*)&VR_FSMConfigData}, + { AudioHW_FSMAction, (void*)&AudioHW_FSMConfigData}, + { PTT_Switch_FSMAction, (void*)&PTT_Switch_FSMConfigData}, + { Mute_Switch_FSMAction, (void*)&Mute_Switch_FSMConfigData}, + { LPSD_FSMAction, (void*)&LPSD_FSMConfigData}, + { CircularBuffer_FSMAction, (void*)&CircularBuffer_FSMConfigData}, + { HIF_FSMAction, (void*)&HIF_FSMConfigData}, + { D2H_FSMAction, (void*)&D2H_FSMConfigData}, +}; + +char* apsFromProcess[] = { + "DFS", + "VR", + "AudioHW", + "PTT_Switch", + "Mute_Switch", + "LPSD", + "CircularBuffer", + "HIF", + "D2H", +}; + +char* apsFromFSMS[] = { + "UNCONFIG", + "CONFIG", + "NULL", + "INITIAL", + "CONFIGURED", + "WAIT_ON_LPSD", + "WAIT_ON_KWD", + "WAKING_HOST", + "STREAMING_STOPPING", + "STREAMING_VR", +}; + +char* apsFromPS[] = { + "UNCONFIG", + "UNKNOWN", + "DONT_CARE", + "STOPPING", + "OUTQING", + "LPSD_ON", + "LPSD_OFF", + "STREAMING", + "SAVING", + "STARTED", + "WOS", + "NORMAL", + "STOPPED", + "NODE7", + "NODE6", + "NODE5", + "NODE4", + "NODE3", + "NODE2", + "NODE1", + "NODE0", +}; + +char* apsFromCE[] = { + "CONFIG", + "START", + "HIF_EOT", + "HOST_MUTE_ON", + "HOST_MUTE_OFF", + "HOST_PROCESS_ON", + "HOST_PROCESS_OFF", + "HOST_READY_TO_RECEIVE", + "VR_TRIGGER", + "LPSD_OFF", + "LPSD_ON", + "WOS_TIMER", + "WOS", +}; + +char* apsFromPA[] = { + "NULL", + "BEGIN_STOPPING", + "FINISH_STOPPING", + "START_OUTQ", + "STATE_ON", + "STATE_OFF", + "START_ON", + "START_OFF", + "START_STREAMING", + "START_SAVING", + "START", + "START_WOS", + "START_NORMAL", + "STOP", + "MIN_NODE7", + "MIN_NODE6", + "MIN_NODE5", + "MIN_NODE4", + "MIN_NODE3", + "MIN_NODE2", + "MIN_NODE1", + "MIN_NODE0", + "CONFIG", +}; + diff --git a/qf_vr_apps/qf_vr_aec_app/fsm/fsmgen.bat b/qf_vr_apps/qf_vr_aec_app/fsm/fsmgen.bat new file mode 100644 index 00000000..07868f08 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/fsm/fsmgen.bat @@ -0,0 +1,13 @@ +@echo off +@echo Converts FSMstates.xlsx state table to C source code +@echo using Process/Actions/Events defined in RCProcessCharacteristics.txt file. +@echo Also, simulates the state transitions specificied in RCEvents.txt file. + +REM first convert FSMstates.xlsx to FSMstates.csv +cscript xls2csv.vbs + +REM Simulates the Remote Control State machine +.\..\..\..\Tools\fsmgen\x64\Release\fsmgen.exe --state-machine FSMstates.csv --device-description RCProcessCharacteristics.txt --simulation-script RCEvents.txt + +REM Rename fsm.c source file to fsm_tables.h +move fsm.c fsm_tables.h diff --git a/qf_vr_apps/qf_vr_aec_app/fsm/xls2csv.vbs b/qf_vr_apps/qf_vr_aec_app/fsm/xls2csv.vbs new file mode 100644 index 00000000..eada7ae3 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/fsm/xls2csv.vbs @@ -0,0 +1,19 @@ +Set objShell = CreateObject("WScript.Shell") +Dim curDir +curDir = objShell.CurrentDirectory + +Dim oExcel +Set oExcel = CreateObject("Excel.Application") +Dim oBook +Set oBook = oExcel.Workbooks.Open(curDir & "\FSMstates.xlsx") + +Dim filesys +Set filesys = CreateObject("Scripting.FileSystemObject") +If filesys.FileExists(curDir & "\FSMstates.csv") Then +filesys.DeleteFile curDir & "\FSMstates.csv" +End If + +oBook.SaveAs curDir & "\FSMstates.csv", 6 +oBook.Close False +oExcel.Quit +WScript.Echo "Conversion from FSMstates.xlsx to FSMstates.csv - Done" diff --git a/qf_vr_apps/qf_vr_aec_app/inc/AEC_FPGA_sepmodules_spde_2021_05_18b.h b/qf_vr_apps/qf_vr_aec_app/inc/AEC_FPGA_sepmodules_spde_2021_05_18b.h new file mode 100644 index 00000000..007f54b0 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/AEC_FPGA_sepmodules_spde_2021_05_18b.h @@ -0,0 +1,1903 @@ +// generated on 2021/05/18 21:20 : convert_fbcfg_to_cpuwrites.pl /cygdrive/c/Work/QORC/I2S_rx/module_separation_spde_dbg_2021.05.18/S3_AEC/build_spde/spde/ShiftRegPattern.qlal4s3b.top +const uint32_t axFPGABitStream[] = { + 0x00002800, 0x00000468, 0x00000450, 0x0000c014, 0x00003000, 0x0000c823, 0x00002240, 0x0000141a, 0x00005310, 0x00000509, + 0x00002001, 0x000088c8, 0x00003020, 0x00000406, 0x00004190, 0x000080a3, 0x00000a00, 0x0000940a, 0x00000700, 0x00000091, + 0x00004a8d, 0x00000800, 0x00000008, 0x00000050, 0x00008912, 0x00007004, 0x0000092a, 0x00009088, 0x00008116, 0x00004211, + 0x000024c8, 0x00008001, 0x00000a3a, 0x0000a002, 0x00004001, 0x00004ca4, 0x00003003, 0x00008220, 0x00000c02, 0x0000a209, + 0x000014c0, 0x000088b0, 0x00002021, 0x00000408, 0x00009414, 0x2c280080, 0x20481000, 0x94520102, 0x50140020, 0x49240804, + 0x2aa80080, 0xa00a0000, 0x90120000, 0x55540004, 0x43840080, 0x22880600, 0xa82a0002, 0x84420000, 0x45444241, 0x73941000, + 0x0aa00000, 0x88220040, 0xa44a2010, 0x15500060, 0x13900100, 0x4aa40000, 0x28282000, 0x24480440, 0x94523004, 0x50140000, + 0x48240060, 0x2aa90000, 0xa00a2201, 0x90120000, 0x54540000, 0x42851104, 0x22890000, 0xb82a0400, 0x84420040, 0x44440004, + 0x5a950000, 0x02a10080, 0x88220040, 0xa44a0010, 0x14501000, 0x12910000, 0x4aa54100, 0x28280208, 0x24480040, 0x94520000, + 0x00000000, 0x00008000, 0x00002000, 0x00000200, 0x00000080, 0x00000008, 0x00000100, 0x00008000, 0x00000000, 0x00004040, + 0x00001024, 0x00000000, 0x00000000, 0x00008110, 0x00000804, 0x00000000, 0x00002004, 0x00000020, 0x00000000, 0x00004000, + 0x00001002, 0x00000000, 0x00000201, 0x00000420, 0x00004000, 0x00000081, 0x00000000, 0x00000000, 0x00000460, 0x00000000, + 0x00000000, 0x08000020, 0x00004000, 0x00000080, 0x00000118, 0x00002300, 0x00000050, 0x00000000, 0x00000000, 0x00004100, + 0x00000004, 0x00000004, 0x00000000, 0x00008a00, 0x00012002, 0x00000010, 0x0000528e, 0x00000028, 0x00008802, 0x00002541, + 0x00004090, 0x00001001, 0x08000824, 0x00000208, 0x00002400, 0x00008852, 0x00000005, 0x00004100, 0x00002aa8, 0x00001012, + 0x00008000, 0x00004108, 0x00000601, 0x000000a8, 0x0000a844, 0x00000040, 0x00000500, 0x00009082, 0x00002800, 0x0000c032, + 0x0000060c, 0x00000110, 0x00005000, 0x00000885, 0x00000448, 0x00002200, 0x00009902, 0x00004004, 0x00000820, 0x00001201, + 0x00009092, 0x00000000, 0x0000454c, 0x00002201, 0x00000080, 0x00000822, 0x00004400, 0x00000140, 0x0000109b, 0x00000820, + 0x00044000, 0x96828ec0, 0x00288002, 0x81020110, 0x2ec01821, 0x01140290, 0x02800101, 0x54603868, 0x000a444c, 0x04400000, + 0xb930b002, 0x02044001, 0x08200900, 0x50983014, 0x04020220, 0x10100410, 0xe14c8082, 0x0a001041, 0x20082120, 0xc0a68a80, + 0x14104008, 0x41040144, 0x82c28480, 0x28000020, 0x80028000, 0x06e91cd8, 0x10000101, 0x02916202, 0x4c641c74, 0xa00080c0, + 0x04402000, 0x003a1818, 0x42810c02, 0x08204100, 0x301c000d, 0x84400200, 0x10101062, 0x600ea598, 0x20a02008, 0x00080080, + 0xca07ca03, 0x40504004, 0x00040020, 0x96820653, 0x80280002, 0x00000000, 0x92921446, 0x88200808, 0x41020000, 0x06c826f2, + 0x11905000, 0x02008011, 0x6c640004, 0x24482748, 0x00000080, 0x99328822, 0x42240831, 0x08004100, 0x30980204, 0x80028008, + 0x00101490, 0x654c600e, 0x028820c9, 0x20000100, 0xd8264a02, 0x04540414, 0x01004000, 0x92821263, 0x8822a002, 0x00000920, + 0x66c90209, 0x12111380, 0x00800011, 0x4c644000, 0x24082000, 0x00400040, 0x9832042e, 0x4a25c020, 0x00001100, 0x30980215, + 0x94022080, 0x00108800, 0x604c5542, 0x02810088, 0x20082010, 0xc8260a25, 0x04400040, 0x40044104, 0x92931490, 0x08228000, + 0x40042408, 0x34100060, 0x00200028, 0x00024804, 0x28081002, 0x01105004, 0x82808500, 0x50042291, 0x00088400, 0x04402000, + 0xa102000a, 0x02040281, 0x08200144, 0x40804020, 0x00128c42, 0x10000000, 0x85400000, 0x02000021, 0x20081180, 0x08a0021c, + 0x44100410, 0x00042840, 0x10404004, 0x08000820, 0x00021000, 0x2028200a, 0x10009010, 0x82914100, 0x40040005, 0x20000202, + 0x04408088, 0x800a2000, 0x42014044, 0x08200580, 0x00840820, 0x84000040, 0x10108003, 0x00421600, 0x00800030, 0x20080300, + 0x0a210889, 0x00401440, 0x0004a000, 0x14100000, 0x00200008, 0x00000010, 0x40545404, 0x08000002, 0x00000000, 0x302a2828, + 0x0000c000, 0x81000010, 0x52941001, 0x00000304, 0x80000088, 0x254aa002, 0x02004005, 0x00000640, 0x48a400a0, 0x00000000, + 0x00000d00, 0x94528012, 0x00801041, 0x01000300, 0x2a280880, 0x00100058, 0x00002400, 0x54445020, 0x00202000, 0x00000824, + 0x280a8008, 0x00100000, 0x80004102, 0x52851294, 0x8000a008, 0x00000000, 0x244a0441, 0x02010002, 0x40044100, 0x00a00824, + 0x0c008283, 0x00000000, 0x90520150, 0x00011084, 0x00000000, 0x2aa82e09, 0x00000000, 0x00001040, 0x54540434, 0x08004020, + 0x00000070, 0x0414540c, 0x00200000, 0x00000000, 0xd80a2828, 0x00108090, 0x01000100, 0x32841007, 0x20080208, 0x00000000, + 0xc542e400, 0x02040001, 0x00004140, 0x48a008a6, 0x00020210, 0x00000002, 0x8550b040, 0x02000001, 0x00000700, 0x38a80880, + 0x04103048, 0x00000400, 0x50444020, 0x08000014, 0x00002022, 0x202a0888, 0x10000000, 0x40108110, 0x82851280, 0x20000004, + 0x00002001, 0x844a4408, 0x42010040, 0x0000c102, 0x00a40885, 0x8c008000, 0x00000220, 0x10520142, 0x00801404, 0x00000089, + 0x2a292a10, 0x00400020, 0x00000440, 0x54145000, 0x00200000, 0x00000010, 0x40140800, 0x08200820, 0x00004088, 0x900a1002, + 0x1010d000, 0x01000110, 0x62842005, 0x20082088, 0x00000400, 0x85428202, 0x42040045, 0x00004100, 0x08a00a00, 0x80028022, + 0x00000000, 0x15500180, 0x028012c1, 0x00000430, 0x28282808, 0x04500040, 0x00000000, 0x50044400, 0x08200826, 0x00008000, + 0xa00a1058, 0x10101201, 0x00004150, 0x42852004, 0x2008a008, 0x80000080, 0x04420400, 0x420500e4, 0x00004100, 0x00a00a13, + 0x8c028002, 0x00000000, 0x10500500, 0x02811281, 0x00000030, 0x28280840, 0x04402458, 0x00000000, 0x50144004, 0x08200822, + 0x00000010, 0x50145c66, 0x08200008, 0x00000200, 0xa00a2822, 0x1010c200, 0x01000100, 0x42841095, 0x20080008, 0x00000020, + 0x8542b012, 0x42044421, 0x00000040, 0x08a03a84, 0x80020000, 0x00000540, 0x1550c00e, 0x02801011, 0x00000120, 0x28286a82, + 0x04500008, 0x00000440, 0x50044001, 0x0820a000, 0x00000100, 0xa00a1a3e, 0x10104011, 0x00000500, 0x42851204, 0x20088800, + 0x00002080, 0x8442104a, 0x42050000, 0x00000520, 0x08a06a05, 0x04020080, 0x80000002, 0x1050a040, 0x02811000, 0x00000190, + 0x28280e2b, 0x04402000, 0x00000000, 0x5014c6c4, 0x08200000, 0x20000000, 0x5454c6c0, 0x08000018, 0x00002104, 0x202a8c63, + 0x00000010, 0x81000100, 0x52945c61, 0x00000008, 0x00008286, 0xa54a2900, 0x02000201, 0x000044c0, 0x48a4083c, 0x00000000, + 0x00000400, 0x94529052, 0x00800001, 0x01000980, 0xaa28a22c, 0x10100400, 0x00001140, 0x4444c296, 0x00000008, 0x00000020, + 0xa82aac01, 0x40100206, 0x00000110, 0x12851021, 0x80008080, 0x00002000, 0x244a4d38, 0x02014000, 0x40040047, 0x08a018a8, + 0x84001650, 0x00008000, 0x1052400a, 0x00000800, 0x00000180, 0x2aa9e225, 0x00000018, 0x00001100, 0x14544447, 0x00002000, + 0x00002004, 0xd6868c00, 0x20280800, 0x01000102, 0x8ec22731, 0x40040011, 0x01008008, 0x1ef05e40, 0x000a008e, 0x80008000, + 0x3d702970, 0x02840c01, 0x00004004, 0x78380030, 0x04409200, 0x00000080, 0xf11e640a, 0x0a200241, 0x0000219a, 0x608e4024, + 0x14000000, 0x01005544, 0x82d60a92, 0x28080020, 0x00008002, 0x46e32d88, 0x40040204, 0x80100091, 0x1ee11c00, 0xa0022440, + 0x00000000, 0x1c785938, 0x4281c800, 0x000000a0, 0x383c0016, 0x04408001, 0x00000212, 0xf01e400c, 0x08a014a0, 0x00000b08, + 0xe20fa045, 0x10500010, 0x000001c4, 0xc6870402, 0x0028a020, 0x42044048, 0x96c22482, 0x20080008, 0x850220b0, 0x0fe00806, + 0x50040301, 0x0a801090, 0x0c70c000, 0x04020008, 0xb040a446, 0x09381100, 0x02800a85, 0x28204028, 0x501c0000, 0x04400400, + 0x40109014, 0xe00e0046, 0x08200001, 0x81082100, 0xd2868aaa, 0x10000000, 0x41845004, 0xa6d28451, 0x20080108, 0x80428a22, + 0x0ee12141, 0x02004000, 0x00b118d0, 0x5c600220, 0x80020004, 0x04500441, 0x283ca108, 0x4a814802, 0x00280029, 0x101c108c, + 0x04400642, 0x90141010, 0x600e8100, 0x08202a09, 0x000a0000, 0xc28740a0, 0x10100052, 0x42051080, 0xa6c30600, 0x00082000, + 0x00040284, 0x30001450, 0x28282228, 0xc0028c42, 0x01000000, 0x40141145, 0x128002a0, 0x00004010, 0x240aa408, 0x80401012, + 0x01000100, 0x42840041, 0x08206a28, 0x00001004, 0x844200c8, 0x10105014, 0x01008002, 0x0aa02881, 0x2008072a, 0x00000000, + 0x14401540, 0x40040204, 0x00100010, 0x28282808, 0x00020002, 0x00004020, 0x12105104, 0x80818231, 0x40000000, 0xa00a0000, + 0x04402452, 0x10048188, 0x0a854201, 0x40202828, 0x20000084, 0x04420400, 0x1010d014, 0x80002002, 0x0aa10800, 0x2008a1ab, + 0x00000240, 0x14501000, 0x00044295, 0x00000440, 0x08288000, 0x40044064, 0x14400400, 0x00080000, 0x80028812, 0x09200128, + 0x60040211, 0x02802084, 0x10105020, 0x80020400, 0x0440800a, 0x21082100, 0x02800841, 0x082040a4, 0x40042000, 0x04401200, + 0x90100010, 0x00028042, 0x08200001, 0x21080308, 0x02800ca0, 0x10004000, 0x40043444, 0x04500010, 0x20088000, 0x8002002a, + 0x08202900, 0x02040294, 0x00914001, 0x50001000, 0x00020402, 0x0440a048, 0xa0080100, 0x02814804, 0x48200021, 0x00042080, + 0x84409600, 0x10100016, 0x00020100, 0x08202841, 0x20080088, 0x02810200, 0x10104020, 0x40040000, 0x044094c5, 0x00082000, + 0x50041098, 0x08008c20, 0x28280800, 0x0002802e, 0x01006180, 0x12141011, 0x00800880, 0x80004604, 0x040a0400, 0xa0403040, + 0x5100800a, 0x4a840021, 0x00206000, 0x20000004, 0x14021100, 0x80100094, 0x01008b42, 0x0a802081, 0x20084200, 0x00400c00, + 0x14400478, 0x00040284, 0x00301002, 0x28200000, 0x0002c0c0, 0x40002b20, 0x42011000, 0x10900031, 0x8008402a, 0x84080400, + 0x204032c4, 0x0004812a, 0x48850020, 0x00205200, 0x00020085, 0x90429810, 0x00104000, 0x02000006, 0x22a10c00, 0x000801c2, + 0x04000201, 0x0450400a, 0x40040241, 0x08002420, 0x08280020, 0x62044000, 0x14402640, 0x00080000, 0x84028862, 0x29200100, + 0x02040211, 0x18806080, 0x40101008, 0x24020000, 0x10408060, 0x0108210c, 0x8a800001, 0x60204086, 0x00040400, 0x94402a00, + 0x40100020, 0x0002c502, 0x08203001, 0xa1080218, 0x028000e0, 0x10000000, 0x40849f54, 0x04500080, 0x20080002, 0x0042e020, + 0x88200900, 0x12050209, 0x00b00010, 0x00001880, 0x24020400, 0x00502004, 0x4008c108, 0x0a814002, 0x80280201, 0x400408e4, + 0x14408400, 0x00140002, 0x80020000, 0x08202861, 0x000a0198, 0x02811200, 0x30100000, 0x02051204, 0x04400450, 0x0008200a, + 0x44040000, 0x10004082, 0x20080100, 0x88020000, 0x01209c74, 0x42040083, 0x00800050, 0x10107208, 0x04020440, 0x00400110, + 0x2108200c, 0x0a040801, 0x00200100, 0xc000c026, 0x1440101a, 0x0010c000, 0x818226c0, 0x08200005, 0x20080302, 0x028088a0, + 0x04006000, 0x40440448, 0x00101211, 0x20080008, 0x80220100, 0x1800a964, 0x02150006, 0x00801230, 0x50000481, 0x84020000, + 0x00480010, 0x2000ed4a, 0x4a800004, 0x00246010, 0x00000aa0, 0x14402010, 0x00120006, 0x8001c401, 0x08a00200, 0x02080180, + 0x0001b069, 0x10104000, 0x64040500, 0x00409854, 0x002808a1, 0x20040040, 0x04401414, 0x00084000, 0x60028820, 0x8920230b, + 0x10005011, 0x00800000, 0x02100a24, 0x00020082, 0xe0402008, 0x050c1810, 0x02800341, 0x4020c804, 0x08041430, 0x00400000, + 0x80101440, 0x0002818a, 0x08200011, 0x11080080, 0x26802a0e, 0x00000460, 0x00040000, 0x04504004, 0x20081020, 0xd0020008, + 0x08200d11, 0x12041001, 0x00910004, 0x4000e252, 0x20028002, 0x00402008, 0x040815d0, 0x4a814001, 0x00200200, 0x8004080c, + 0x14401400, 0x001080a0, 0x8002211a, 0x08000820, 0x00080001, 0x028142c4, 0x10102040, 0x20044008, 0x04601616, 0x20080000, + 0x40040000, 0x82820ed0, 0x1828c820, 0x21021000, 0x07c005c9, 0x00142013, 0xd0801280, 0x0e600800, 0x200a200c, 0x80400440, + 0x1d305800, 0x42840325, 0x00204082, 0x38188810, 0x84420000, 0x00100002, 0x710c941c, 0x0aa00381, 0x00080800, 0xe006c06a, + 0x04502000, 0x11040100, 0xc28204c4, 0x28280002, 0x80025030, 0x06c18d40, 0x02140214, 0x50810008, 0x0c603801, 0x800a0048, + 0x20402080, 0x1c30d522, 0x0a850021, 0x00200284, 0x70185808, 0x94420002, 0x00109040, 0x600c4014, 0x0aa10c89, 0x00080322, + 0xc0064002, 0x34502400, 0x00040150, 0xc2838085, 0x08284002, 0x40045002, 0x86c28c04, 0x10088002, 0x81020020, 0x2ee00b08, + 0x00042211, 0x40800040, 0x197010a4, 0x0202800a, 0x80404000, 0x3d382040, 0x02804721, 0x00200080, 0x781c1804, 0x04400008, + 0x00100040, 0xf00ea002, 0x08202031, 0x01080708, 0xe2861880, 0x00100410, 0x51040040, 0x86c2d001, 0x20082002, 0x8002012c, + 0x0ee18901, 0x00044000, 0x40900604, 0x1c6110f0, 0x8202a442, 0x00400800, 0x30380119, 0x0e810801, 0x40204220, 0x301c2094, + 0x14400442, 0x80108008, 0x600e0010, 0x08201a20, 0x00080180, 0xe2870009, 0x10108004, 0x00040002, 0xc6c32650, 0x00084028, + 0x40006808, 0x04400400, 0x100aa000, 0x20000124, 0x09200818, 0x02840011, 0xc0004404, 0x10101002, 0x04420002, 0x80000388, + 0x21082400, 0x0aa4c1c1, 0x00000004, 0x40000800, 0x04400660, 0x80000000, 0x1002c012, 0x08282809, 0x01801100, 0x22100284, + 0x00141000, 0x50000440, 0x04400020, 0xa00a8a00, 0x000000ac, 0x08204110, 0x02850080, 0x40100006, 0x10007010, 0x04422008, + 0x00000043, 0x28080300, 0x4aa10200, 0x8000c801, 0x00040404, 0x14501480, 0x00008002, 0x80022060, 0x08280890, 0x00010100, + 0x0280020d, 0x70140010, 0x00002000, 0x04400460, 0x000a2020, 0x40000840, 0x14400000, 0x000a1832, 0xa0000000, 0x0920c000, + 0x12843109, 0x40000010, 0x04104080, 0x24420000, 0x80002224, 0x01080058, 0x4aa08406, 0x00004020, 0x00040201, 0x9450a180, + 0x00000012, 0x00020c40, 0x08280281, 0x01000100, 0x22801800, 0x40140060, 0x10004004, 0x0440240a, 0xa00a0020, 0x00001810, + 0x0820230a, 0x02859011, 0x10100000, 0x00000004, 0x24424240, 0x00000008, 0x4008a080, 0x8aa14000, 0x40000106, 0x00040480, + 0x94508200, 0x00000001, 0x00020822, 0x08281040, 0x20000700, 0x02810091, 0x10140c00, 0x40000060, 0x0440200c, 0x000a4812, + 0x08000400, 0x24500014, 0x80028c42, 0x10001000, 0x09284228, 0x02801921, 0x20002010, 0x10100200, 0x04447090, 0x4000002c, + 0x200a0800, 0x08206008, 0x81008006, 0x42040541, 0x00104004, 0x10809282, 0x84020820, 0x000884c3, 0x01400300, 0x2a800112, + 0x000406a0, 0x40200800, 0x14406048, 0x00121c70, 0x00000000, 0x28200104, 0x02813821, 0x00180008, 0x9000c012, 0x44403018, + 0x00040004, 0x20080280, 0x0820a84c, 0xc0020502, 0x00844000, 0x1010c086, 0x02011201, 0x80420030, 0x2008c682, 0x04000141, + 0x02a10008, 0x000426c1, 0x08004820, 0x04500006, 0x80021470, 0x40200020, 0x14504000, 0x00020044, 0x00000000, 0x29280000, + 0x02800000, 0x10000020, 0x80100000, 0x04400100, 0x60040010, 0x00081000, 0x08200000, 0xc0020000, 0x02040000, 0x81100000, + 0x10800000, 0x00420200, 0x24080000, 0x01000000, 0x02800100, 0x00040a00, 0x08200020, 0x14500000, 0x40020618, 0x80000000, + 0x28280200, 0x02810030, 0x10100000, 0x00040000, 0x04400400, 0x40000010, 0xa0080000, 0x48200040, 0x00020000, 0x00040008, + 0x10100020, 0x82810000, 0x04420000, 0x00080000, 0x00000000, 0x02810102, 0x20248280, 0x48000004, 0x14400000, 0x00020400, + 0x00000840, 0x00000400, 0x00000000, 0x00000000, 0x000040a0, 0x00002000, 0x00000440, 0x00000000, 0x00000200, 0x00000000, + 0x00000090, 0x00000060, 0x20000000, 0x00000050, 0x00000210, 0x00000080, 0x00004004, 0x00000000, 0x00000650, 0x00000084, + 0x00000008, 0x00000000, 0x100080c3, 0x00008000, 0x0000010c, 0x20006020, 0x00000210, 0x00000400, 0x00000004, 0x00000040, + 0x00000221, 0x00001400, 0x0000a000, 0x00008882, 0x00000000, 0x00001000, 0x40000008, 0x00002800, 0x00000000, 0x00000058, + 0x00000000, 0x00000000, 0x00008000, 0x00800284, 0x00000001, 0x00002004, 0x0000a28a, 0x00005412, 0x00008100, 0x00001d55, + 0x00008a8b, 0x00003008, 0x00000832, 0x0080d4c4, 0x00004101, 0x0000200d, 0x0000ae0a, 0x00004102, 0x0000b40c, 0x00004985, + 0x00009023, 0x00002808, 0x0000b4ea, 0x80000100, 0x8000c011, 0x00005025, 0x00002900, 0x00001400, 0x00002040, 0x00004002, + 0x00001cc5, 0x00000903, 0x0000b088, 0x00008962, 0x10005080, 0x00006004, 0x00000b19, 0x000000aa, 0x00000100, 0x00007215, + 0x00004544, 0x00000a11, 0x000080e6, 0x00001502, 0x0000a200, 0x00005485, 0x00004831, 0x00002d68, 0x00000000, 0x00003058, + 0x28280c08, 0xa6ca1068, 0x94522690, 0x51141866, 0x4fe40208, 0x3aa880a1, 0xa00a0a1a, 0x9c721000, 0x45545000, 0x43044649, + 0x3ab80005, 0x882a8080, 0x8442c06c, 0x755c0040, 0x53945020, 0x0aa02016, 0xe82e80c0, 0x244aa002, 0x15500148, 0x53960221, + 0x4aa40a95, 0x29282020, 0xa6ca0cc0, 0x8052a018, 0x54141020, 0x4ee50814, 0x02a92908, 0xa80a80b0, 0x9c72a10a, 0x64545011, + 0x42850a44, 0x3ab90008, 0x882a0008, 0x84420000, 0x745c0000, 0x1a914281, 0x02a59005, 0xec2e0880, 0xa04a3042, 0x14500040, + 0xd2970620, 0x4aa54b95, 0x28280000, 0xa64b0400, 0x94528052, 0x0c280000, 0x30480000, 0x04520000, 0x90140000, 0x09246400, + 0x6aa90004, 0x000a0000, 0x10128000, 0xc1d40000, 0x27050000, 0x42891000, 0x8c2a2200, 0x40420402, 0x05440400, 0x53950000, + 0x0aa10100, 0x80220400, 0xa44a0800, 0x15d01000, 0x13110480, 0x4aa51000, 0x24284008, 0x20480000, 0x14520044, 0x50144000, + 0x48244000, 0xaba90400, 0x200a1200, 0x11120400, 0xd4d40000, 0x42050180, 0x23091200, 0xacaa8000, 0x01420840, 0x44440000, + 0x5a950c40, 0x03210200, 0x80a22000, 0xa54a0400, 0x14d08088, 0x12110001, 0x4ba53000, 0x24280000, 0x20480060, 0xd4526600, + 0x00000000, 0x00008000, 0x0000c000, 0x40000000, 0x80000010, 0x00000100, 0x00000040, 0x00000c04, 0x00002112, 0x00000180, + 0x00002820, 0x00000002, 0x80001900, 0x20000000, 0x00000a81, 0x00000001, 0x08004000, 0x00000230, 0x00000000, 0x00000104, + 0x00000000, 0x08000100, 0x00008201, 0x00001100, 0x00000402, 0x00000240, 0x00000002, 0x00000001, 0x00000800, 0x00000004, + 0x00004000, 0x00002401, 0x00002082, 0x00008422, 0x00004104, 0x20000110, 0x00000020, 0x48004026, 0x00000000, 0x00000110, + 0x00000004, 0x00008008, 0x08000000, 0x0000080a, 0x00001000, 0x00000018, 0x00001006, 0x00000002, 0x00008920, 0x040020c1, + 0x00001080, 0x20000101, 0x0000403c, 0x10000248, 0x00002002, 0x00008010, 0x200040a5, 0x00000100, 0x00002618, 0x00008802, + 0x00000410, 0x0000114c, 0x00000081, 0x00000008, 0x8000ca22, 0x00004450, 0x00002000, 0x00001002, 0x80000820, 0x0100a006, + 0x00000189, 0x00005080, 0x00000011, 0x08000060, 0x0000804c, 0x00000200, 0x00002132, 0x10004424, 0x00000800, 0x00003219, + 0x800010c2, 0x00008410, 0x20000108, 0x00000209, 0x00000080, 0x00004822, 0x80000400, 0x80003100, 0x000080d1, 0x0000c820, + 0x00041000, 0xc282ac50, 0x0828c020, 0x8102080a, 0x02c10741, 0x31141000, 0x02810091, 0x0c602264, 0xc00a2040, 0x24400000, + 0x1930d008, 0x42050502, 0x08204000, 0x1018022d, 0x80c20880, 0x10101402, 0x650cc004, 0x0aa12011, 0x20080380, 0x40068848, + 0x14500004, 0x01044400, 0xc28312e0, 0x08280008, 0x80020000, 0x06c10a32, 0x31140001, 0x0281a114, 0x04601880, 0x400a0600, + 0x24402042, 0x09304808, 0xc2054024, 0x08208100, 0x10180200, 0x00420401, 0x90109880, 0x058c0152, 0x02a10008, 0x20082000, + 0x48064a81, 0x14500460, 0x01040100, 0x42830295, 0x28280002, 0x40045444, 0x84820282, 0xa8280820, 0x01028188, 0x06412012, + 0x11940210, 0x42010001, 0x08601c04, 0x840a0500, 0x004020c8, 0x3930c812, 0x02850880, 0x08200330, 0x50185005, 0x00423010, + 0x90100008, 0x650ca042, 0x2a210209, 0x00080180, 0x40860c24, 0x10500010, 0x41042540, 0x0682d003, 0x88288002, 0x00022901, + 0x2341006c, 0x10940310, 0x42010081, 0x08605000, 0x800aa044, 0x04400000, 0x3130103a, 0x02850a84, 0x08200500, 0x50184039, + 0x00422010, 0x10108400, 0xe50c6106, 0x02212080, 0x20081000, 0x08860a45, 0x5050400e, 0x01041460, 0x06838002, 0x20280010, + 0x00040000, 0x06000040, 0x28280000, 0x0002082c, 0x80802002, 0x51141000, 0x0201c110, 0x04000005, 0xa00a8082, 0x04c00208, + 0x01002100, 0x02854204, 0x48200000, 0x20000cc1, 0x04420000, 0x90108020, 0x01001012, 0x0a210940, 0x20882600, 0x80000083, + 0x50500408, 0x00040040, 0x04015030, 0x08280824, 0x01020000, 0xa480a08a, 0x51141004, 0x02010100, 0x04800031, 0xa40a0280, + 0x00404008, 0x0900a040, 0x0a850405, 0x40204180, 0x00000002, 0xa4420000, 0x10100800, 0x01008222, 0x02211870, 0x20080709, + 0x48802080, 0x1050d010, 0xc0040040, 0x04000400, 0xa028a80c, 0x00001000, 0x04046418, 0x4828202c, 0x00000000, 0xa0028800, + 0x10144210, 0x01001102, 0x02010005, 0x208a2088, 0x00000000, 0xc1400460, 0x02058080, 0x44004100, 0x08a00a27, 0x80420002, + 0x00000400, 0x11108040, 0x0ea01011, 0x00004180, 0x00092a00, 0x10500018, 0xa0004400, 0x44041064, 0x08280008, 0x20000020, + 0x00020c00, 0x90148000, 0x01004350, 0x02013406, 0x008a0088, 0x40002001, 0x21400400, 0x020540c0, 0xc4001102, 0x00208024, + 0x80420a01, 0x08808402, 0x10100148, 0x0ea10010, 0x010010a1, 0x20082a08, 0x10500400, 0x00000000, 0x04041050, 0x60280020, + 0x00000040, 0x44048410, 0x28281024, 0x00006000, 0x00020888, 0x10148000, 0xc1001100, 0x02810293, 0xa00a0008, 0x00006000, + 0x05400044, 0x02850000, 0x4000c402, 0x08200905, 0x80428200, 0x00000082, 0x15100160, 0x0aa11491, 0x00000020, 0x00080a00, + 0x30500010, 0x00002400, 0x44041048, 0x08280004, 0x00004008, 0x20020820, 0x90140000, 0x4100a152, 0x02011280, 0x808a4008, + 0x00002001, 0x25400006, 0x02858040, 0x40000704, 0x08204021, 0x80428002, 0x00000080, 0x15100d00, 0x02a11280, 0x00000000, + 0xa8082071, 0x10500408, 0x00000810, 0x44040040, 0x20285004, 0x00000040, 0x04044814, 0x68289a20, 0x00000008, 0x80022002, + 0x10141110, 0x41000000, 0x02010205, 0xa08a4400, 0x00002008, 0x014080c2, 0x06850084, 0x40000100, 0x08204a09, 0x8042a422, + 0x20000000, 0x15101100, 0x0aa140b1, 0x40000200, 0x20082840, 0x10505448, 0x00000010, 0x04040004, 0x08a80820, 0x4000a000, + 0x20020000, 0x10141213, 0xc1000188, 0x02810000, 0x800aa00c, 0x00000040, 0x21404402, 0x06850004, 0x40004110, 0x08200aa1, + 0x80420012, 0x00008400, 0x15100140, 0x02a10081, 0x40000200, 0x28085800, 0x10502000, 0x00000048, 0x04044636, 0x60280800, + 0x00000028, 0x00040c12, 0x28284004, 0x00000808, 0x80023260, 0x10949002, 0x41010110, 0x02000405, 0xa00a2088, 0x00000600, + 0x0140c000, 0x42854010, 0x00000100, 0x0c201a47, 0x80420022, 0x00000400, 0x1510b0c8, 0x2aa12210, 0x00004180, 0x00080801, + 0x5050001c, 0x00000102, 0x040496e1, 0x88286000, 0x00000100, 0x20028caa, 0x10140000, 0x41000110, 0x02811c81, 0xa00a8004, + 0x00002200, 0x0140400a, 0x42850044, 0x00000400, 0x0c205a09, 0x80421020, 0x00008500, 0x151000c2, 0x02a10000, 0x00000180, + 0x28082a19, 0x50500040, 0x00000400, 0x0404c020, 0xa8280020, 0x00001040, 0x84040484, 0x6828c032, 0x00000900, 0x80022509, + 0x10141084, 0x41010000, 0x02804871, 0x800a0200, 0x2000a008, 0x09401c22, 0x06850001, 0x00004040, 0x482001b4, 0x00420002, + 0x80000240, 0x15108c14, 0x0a201021, 0x00800180, 0x2009aa06, 0x10500008, 0x04001400, 0x80054050, 0x48288006, 0x01000008, + 0x20820a61, 0x90140204, 0x41000110, 0x02817021, 0x800a20c2, 0x20000400, 0x0d409938, 0x028540a4, 0x00000200, 0x48202001, + 0x00420000, 0x80008000, 0x14107d5e, 0x02210280, 0x01800800, 0x2808a027, 0x10500418, 0x04000100, 0xc00450c5, 0x20280000, + 0x00000048, 0x0686b892, 0x68288028, 0x01004906, 0x86c320c1, 0x10141005, 0x01010010, 0x0ee04a60, 0x240a0000, 0x00002108, + 0xd1708482, 0x02054801, 0x40000160, 0x38b82094, 0x80421200, 0x04008012, 0x511c0400, 0x0aa102c0, 0x00002908, 0xa00e4023, + 0x14500400, 0x01005004, 0x420600d2, 0x28280800, 0x00000002, 0x864383e9, 0x10140010, 0x01004080, 0x0ee13020, 0x440a2045, + 0x80000600, 0x31701908, 0x0a050a04, 0x40800000, 0x3038c013, 0x84420080, 0x00009010, 0x701c002a, 0x03a10009, 0x08002380, + 0xa00e0c62, 0x14500000, 0x01000100, 0x428704c1, 0x20280810, 0x04045404, 0x82820000, 0x28280200, 0x81020072, 0x07c12a08, + 0x10158415, 0x02800180, 0x4c601400, 0x040a0002, 0xa040ee58, 0x09300020, 0x02850001, 0x48200220, 0x00184984, 0x00429002, + 0x94100010, 0x610c2040, 0x0a200525, 0x00880802, 0x60070280, 0x50500048, 0x0104f500, 0x86830011, 0x28280004, 0x8002892a, + 0x07c10100, 0x12142004, 0x00810001, 0x4c605e50, 0x200a0002, 0x844000a0, 0x0930a118, 0x02054c00, 0x00a00264, 0x50181009, + 0x04420000, 0x10105456, 0x880cc184, 0x02210200, 0x2908a003, 0xc08608a0, 0x10500058, 0x41044484, 0x86031002, 0xa0280020, + 0x40040884, 0x04004448, 0x08280800, 0x00028042, 0xa1002038, 0x10150184, 0x02001221, 0x40004010, 0x840a0400, 0x00c03058, + 0x21000100, 0x42058281, 0x08a0682a, 0x00001004, 0x00420450, 0x1010500c, 0x81008102, 0x2a212800, 0x040882aa, 0x80800005, + 0x10500110, 0x440410c0, 0x00004404, 0x8828a220, 0x0102040a, 0x01000800, 0x12944500, 0x20010ab5, 0x40001000, 0x800a0000, + 0x24403052, 0x00000108, 0x5a850000, 0x0020ec09, 0x00000084, 0x00428642, 0x91101034, 0x21002000, 0x42210880, 0x2c88810a, + 0x00006201, 0x14504400, 0x000402d1, 0x40000020, 0x20282000, 0x42840004, 0x00000060, 0x88280000, 0x04428040, 0x01003828, + 0x10950005, 0x2a201180, 0x00004012, 0x200a0400, 0x5450804a, 0x11003210, 0x02050801, 0xb8280080, 0x40004104, 0x84429008, + 0x50940002, 0x01004770, 0x0aa02221, 0xa00a0880, 0x00018000, 0x15500000, 0x42841408, 0x00000054, 0x08280008, 0x8442e000, + 0x21000922, 0x12141080, 0x08a10011, 0x00004000, 0x000aa406, 0x14500248, 0xe1000100, 0x02054800, 0x68280208, 0x20802005, + 0x80421000, 0x54140040, 0x000081a2, 0x0aa12081, 0xa10a0018, 0x00008e04, 0x50500000, 0x06858404, 0x00000260, 0x2828d808, + 0x400400d4, 0x04009c00, 0x28280080, 0x80028820, 0x01004000, 0x12150209, 0x00807932, 0x40000000, 0x240a8424, 0x80403010, + 0x0100008a, 0x0a850865, 0x40204008, 0x20000200, 0x90421080, 0x04100116, 0x01008100, 0x0aa120c0, 0x00088c0a, 0x20000205, + 0x10501544, 0x400400a0, 0x04000012, 0x28284022, 0x00028440, 0x81002b00, 0x12151201, 0x00800090, 0x4000400c, 0x040a0008, + 0x80401040, 0x2100ad00, 0x0a050003, 0x40a02024, 0x00004000, 0x94429892, 0x0010420c, 0x01000000, 0x22a12040, 0x08088582, + 0x00000221, 0x10504448, 0x40040285, 0x04800800, 0x20280210, 0x42040004, 0x00002420, 0x28282002, 0x84024200, 0x01001830, + 0x12151005, 0x00000408, 0x4400c090, 0x248a0400, 0x8040a16a, 0x01000200, 0x0a850111, 0x40204200, 0x000000a4, 0x90429000, + 0x00100010, 0x01000d46, 0x0aa00001, 0x24080a88, 0x00010022, 0x14505500, 0x40040004, 0x00002050, 0x28280020, 0x0402040a, + 0x81008900, 0x12150200, 0x00800091, 0x40003000, 0x000a200a, 0x80404004, 0x25008140, 0x0a0540a0, 0x40a00000, 0x00000405, + 0x90421000, 0x00100810, 0x00008242, 0x22a12481, 0x05080100, 0x0000022a, 0x14508400, 0x48040204, 0x00008840, 0x28a81020, + 0x42042248, 0x00001202, 0x28280820, 0x84024100, 0x050020de, 0x12158001, 0x00801000, 0x40004a10, 0x200a0080, 0x80400148, + 0x05003c06, 0x0a850025, 0x40202208, 0x0000c890, 0x90420008, 0x0410810a, 0x01005410, 0x0aa10180, 0x20080a00, 0x0000e061, + 0x14500000, 0x4004c708, 0x000000d5, 0x28288802, 0x04020508, 0x81001560, 0x12150010, 0x00800200, 0x400070a0, 0x040a2402, + 0x80400010, 0x2000811d, 0x0a050084, 0x40a04008, 0x00000a70, 0x94421000, 0x01108040, 0x00006113, 0x22a10280, 0x09080000, + 0x00000c21, 0x14500000, 0x00040600, 0x40003058, 0x28280800, 0x40040000, 0x06005c0c, 0x08280000, 0x80020838, 0x01000403, + 0x10151381, 0x00802014, 0x62008040, 0x200a604a, 0x00400400, 0x0d000000, 0x02054081, 0x40200804, 0x8800b220, 0x80428110, + 0x00100440, 0x11802102, 0x0aa02001, 0x40080000, 0xa4011aa8, 0x10505000, 0x00040040, 0x44010604, 0x08280010, 0x81020028, + 0x01808983, 0x12141000, 0x00812010, 0x60004ec4, 0x000a0041, 0x0440040a, 0x21003120, 0x0a050000, 0x40200a01, 0x8000f00c, + 0xb4420020, 0x00100042, 0x00809494, 0x42a12901, 0x09080000, 0x20004284, 0x10500000, 0x00040148, 0x440004a3, 0x20284030, + 0x40040400, 0x808200e4, 0x08288012, 0x01020100, 0x03c14861, 0x50150015, 0x00800300, 0xaa607068, 0xa00a0080, 0x04403000, + 0x11300058, 0x02858801, 0x40204400, 0x3818212e, 0x84420082, 0x00100040, 0x710cd218, 0x0aa10600, 0x00080980, 0x20060003, + 0x14500454, 0x01040100, 0xc282222a, 0x08286020, 0x00021000, 0x27418b42, 0x52140001, 0x00011010, 0x8c600ca8, 0x000a0008, + 0x00407000, 0x3db01354, 0x8285c822, 0x40200405, 0x10183098, 0x90428212, 0x04101000, 0x290c6400, 0x0aa10008, 0x00082381, + 0xe0068042, 0x14500c40, 0x01041120, 0xc2034207, 0x28282000, 0x04048040, 0x02821604, 0x08284022, 0x8102a000, 0x65410888, + 0x50144401, 0x00801004, 0x0a600910, 0x200a2088, 0x00410020, 0x9d300202, 0x020510c1, 0x40205420, 0x38988804, 0x84420312, + 0x00100440, 0x510c8000, 0x0aa01101, 0x00080080, 0xa0072a24, 0x10501014, 0x05040400, 0x0282c049, 0x28280000, 0x80020129, + 0x46c12900, 0x52149013, 0x00810240, 0x08600084, 0x010a4048, 0x00402402, 0xb5300900, 0x02054004, 0x48200801, 0x309880a0, + 0x90420010, 0x04109200, 0x600c000a, 0x0aa10c48, 0x01084100, 0xa0062281, 0x10504420, 0x05049004, 0x42830050, 0x20280008, + 0x80000000, 0x04000470, 0x082a2020, 0x0200020c, 0xa1805800, 0x52150103, 0x0000d204, 0x00800490, 0x204a2008, 0x00000002, + 0x81008c00, 0x0a250801, 0x440040d0, 0x00800004, 0x90520462, 0x20002300, 0x01008000, 0x2ea9002c, 0x40001190, 0x0000a201, + 0x50541000, 0x00000400, 0x04010844, 0x282a0000, 0x0100a028, 0x81004c10, 0x52155000, 0x00000012, 0x00800280, 0x004a800e, + 0x00002121, 0xa9000100, 0x02250204, 0x44000840, 0x00804481, 0x90520420, 0x08008000, 0x00001056, 0x2fa92000, 0x00000128, + 0x40000285, 0x10541444, 0x00000800, 0x44004000, 0xa02a0080, 0x00000c00, 0x0400300a, 0x082ac010, 0x20000820, 0x8100200e, + 0x12150211, 0x00000100, 0x40801000, 0x204a0004, 0x00006408, 0x01000082, 0x0e250044, 0x40008100, 0x80004201, 0x90528880, + 0x04000022, 0x01800100, 0x2aa816c1, 0x00000000, 0x00014810, 0x50540060, 0x80000000, 0x0400749c, 0x082a0820, 0x00000080, + 0x81008108, 0x12152002, 0x20001201, 0x40800014, 0x004a2000, 0x00004000, 0x21000488, 0x06258820, 0x40004106, 0x80000040, + 0x9c528202, 0x00001081, 0x00800040, 0x22a90480, 0x01002300, 0x08000811, 0x10540020, 0x00000440, 0x44000018, 0xa02a0020, + 0x00000004, 0x14102048, 0x08225cc0, 0x00000110, 0x81080120, 0x321128a9, 0x04000012, 0x40849040, 0x24487018, 0x00000004, + 0x00020260, 0x8824200a, 0x41008004, 0x02014430, 0x9092418c, 0x00008201, 0x01400802, 0x22898702, 0x04000040, 0x08203191, + 0x404406e0, 0x00000800, 0x1410c00c, 0x08220c50, 0x00001000, 0x81082120, 0x32110830, 0x04001009, 0x4084c0a6, 0x00481018, + 0x04000000, 0x20022620, 0x8824a008, 0x41000106, 0x020140d0, 0x9092c006, 0x00000201, 0x00400c2c, 0x2289920a, 0x05000141, + 0x00200090, 0x004402e1, 0x88000c02, 0x54102000, 0x80221c50, 0x00000000, 0x10100000, 0x0c222200, 0x00004080, 0xe1080000, + 0x12110400, 0x00000200, 0x00840800, 0x44480010, 0x20000000, 0x80020080, 0x68240000, 0x01008400, 0x02810040, 0x50122010, + 0x80000088, 0x01400000, 0xa2080000, 0x04800090, 0x08210120, 0x00c40200, 0x04000000, 0x10100008, 0x0c220200, 0x00000000, + 0xc1080000, 0x12110404, 0x20008200, 0x04840410, 0x40480000, 0x20000100, 0x80020008, 0x60240000, 0x01000028, 0x06814000, + 0x50120000, 0x80000020, 0x08404000, 0xa2090080, 0x05800020, 0x00200030, 0x04c402c8, 0x08000020, 0xd0100000, 0x0c220640, + 0x00000000, 0x00001002, 0x00008000, 0x00000000, 0x00000370, 0x80005080, 0x0000c400, 0x00008100, 0x00800400, 0x00001800, + 0x00002200, 0x00000010, 0x00000000, 0x00004404, 0x00000000, 0x04000000, 0x00008000, 0x00001040, 0x00000448, 0x00000a00, + 0x00002040, 0x00000100, 0x00002081, 0x40000040, 0x0000010c, 0x00004080, 0x00001080, 0x00000800, 0x00008880, 0x00000400, + 0x00004011, 0x00002080, 0x00000000, 0x00002440, 0x000010c0, 0x08000008, 0x00000004, 0x00000010, 0x00000008, 0x0000d080, + 0x00001000, 0x00000000, 0x00000000, 0x00008040, 0x00000000, 0x02000000, 0x00008c68, 0x00000410, 0x00001046, 0x00002809, + 0x00000027, 0x00002808, 0x04000030, 0x00000086, 0x40000345, 0x00005009, 0x0000880a, 0x00002060, 0x00001102, 0x000053a1, + 0x00000807, 0x00006224, 0x0000ac02, 0x00000100, 0x4000d007, 0x0000049d, 0x80004800, 0x00010422, 0x8000d010, 0x01001802, + 0x00000271, 0x00002123, 0x00002008, 0x00000140, 0x10005006, 0x00000244, 0x00001811, 0x00008a02, 0x80008004, 0x00002102, + 0x00004e01, 0x00001113, 0x0000aa00, 0x00002542, 0x00000600, 0x00008007, 0x00004905, 0x00002900, 0x00003481, 0x8000c01e, + 0x0c280820, 0xb2ca0040, 0xc4528410, 0x11144116, 0x0fe50020, 0x6aa90a03, 0x200a10a0, 0x18720000, 0xd55485d0, 0x03050001, + 0x3ab92a81, 0xac2a206a, 0xc0420000, 0x315c8040, 0x53955011, 0x8aa100a5, 0x682e0400, 0xa44a1042, 0x11508080, 0x97970301, + 0x48a50021, 0x2b286820, 0x36ca0000, 0x0452145a, 0x18141020, 0x46e52014, 0xaba94989, 0x200a3000, 0x19724112, 0xc4d40414, + 0x42055044, 0x3b398200, 0xacaa002a, 0x01429042, 0x745c0104, 0x52951094, 0x83a14222, 0x602e0c80, 0xad4a0048, 0x14d09490, + 0xd2170810, 0x49a50200, 0x2b280800, 0x36cb0078, 0x40529406, 0x0c080080, 0x00681000, 0x14522000, 0x90140000, 0x09248a04, + 0x2aa96100, 0xb00a0000, 0xc4122812, 0x11944000, 0x01450200, 0x62898008, 0x282a0400, 0x44420002, 0x05040104, 0x5bf50080, + 0x02810b02, 0x00220800, 0xac4a0004, 0x13902000, 0x11510400, 0x4aa50090, 0x04280608, 0x28480040, 0x94524100, 0x58340000, + 0x00040a00, 0x2b298202, 0xb08a0000, 0x81120000, 0x04d40a00, 0x12050001, 0x23093109, 0x280a0800, 0x41620400, 0x04c44400, + 0x52150000, 0x0b210801, 0x00020000, 0xa56a2000, 0x14d00222, 0x12010041, 0x43b53000, 0x2008c08c, 0x24680000, 0xd4524000, + 0x00000000, 0x00008408, 0x00000040, 0x40001000, 0x00000008, 0x00000000, 0x00000008, 0x02000000, 0x08001004, 0x00000100, + 0x90001004, 0x00004000, 0x00000000, 0x00005800, 0x00002600, 0x80000000, 0x0000c000, 0x00000030, 0x00000140, 0x04000808, + 0x00009000, 0x20000100, 0x00000205, 0x00002000, 0x00008004, 0x00000080, 0x40000020, 0x00000048, 0x40008000, 0x00000000, + 0x00000080, 0x80000020, 0x04002080, 0x00000000, 0x00000010, 0x00000341, 0x00000008, 0x2000c004, 0x08000020, 0x00000100, + 0x08000100, 0x00008001, 0x00000002, 0x08000400, 0x00002000, 0x00000004, 0x00001282, 0x20002820, 0x00000000, 0x000005d9, + 0x40001290, 0x00008003, 0x00004464, 0x0400204a, 0x00000000, 0x00000430, 0x0000c125, 0x00000200, 0x20000018, 0x80008012, + 0x00001000, 0x40002dc8, 0x00000289, 0x40002000, 0x00004826, 0x00004440, 0x00000000, 0x80009092, 0x00000802, 0x01000024, + 0x04002449, 0x00009214, 0x00000180, 0x00004421, 0x00002048, 0x40000402, 0x00008910, 0x00804025, 0x00000a80, 0x00002008, + 0x80009002, 0x00000010, 0x80002540, 0x00800289, 0x00000000, 0x00004806, 0x00004440, 0x80002100, 0x028012b1, 0x00008824, + 0x40042000, 0x82829c40, 0x08284000, 0x81028010, 0x06c10e6b, 0x31144000, 0x02810091, 0x00603064, 0xc00a8102, 0x20402200, + 0x09300418, 0x40850080, 0x04200020, 0x1218715d, 0x00420202, 0x98100800, 0x250c8108, 0x0aa10611, 0x00083008, 0xa00608c6, + 0x14504000, 0x41040104, 0x02831670, 0x28280000, 0x00020000, 0x82c108a8, 0x11142003, 0x02818304, 0x4c6010b0, 0x204a0040, + 0x04000400, 0x1930f838, 0xc0850802, 0x08000104, 0x32384088, 0x00021211, 0x90400022, 0x450cc100, 0x02112441, 0x20880288, + 0xc826c800, 0x14500000, 0x41040140, 0x000306b5, 0x28280002, 0x00040052, 0x04c24600, 0xa828b002, 0x01020184, 0x00410928, + 0x51940200, 0x02010091, 0x08601c04, 0x000a8442, 0x00006000, 0xb1500028, 0x04a50900, 0x00004200, 0x52180005, 0x88021082, + 0x10108020, 0x650c0544, 0x00e12211, 0x08080080, 0xa2064820, 0x10100004, 0x01440048, 0x46828493, 0xa028c020, 0x08020801, + 0x06411648, 0x53942084, 0x00010143, 0x08605810, 0x240a0600, 0x00000002, 0x8170a008, 0x08050001, 0x40204b84, 0x32982070, + 0x00020000, 0x10400012, 0xe10ca50c, 0x00911001, 0x200822c0, 0x8e260804, 0x14100026, 0x41440002, 0x0283d458, 0xa0080000, + 0x00042000, 0xc4404000, 0x28282084, 0x80020820, 0x02808008, 0x53141004, 0x00814102, 0x04000211, 0x244a008a, 0x00002000, + 0x89209d00, 0x08854204, 0x42200040, 0x200008a1, 0x80428002, 0x10102040, 0x05000000, 0x08210900, 0x40881690, 0x22000021, + 0x50101048, 0x80442000, 0x04010400, 0x20282800, 0x89024124, 0x00800018, 0x51144004, 0x02811110, 0x00008602, 0x200a0000, + 0x00400089, 0x89002042, 0x04250284, 0x02004500, 0x48809001, 0x80020440, 0x10408002, 0x05000830, 0x08910201, 0x20081100, + 0x420028a0, 0x54100040, 0x80440408, 0x00201010, 0x2008282c, 0x00400000, 0x06040444, 0x48282010, 0x00004000, 0x24029828, + 0x90140000, 0x01000112, 0x40011005, 0x008a0082, 0x22008208, 0x01406400, 0x42050040, 0x84000080, 0x08804105, 0x00220622, + 0x00008800, 0x91504040, 0x00801001, 0x00000100, 0x2629aab0, 0x18100008, 0x00000400, 0x04445054, 0x60280000, 0x08000800, + 0x0002a02a, 0x90140004, 0x01000100, 0x02015211, 0x208a8088, 0x00002000, 0x55400440, 0x02050002, 0xc0000100, 0x00004024, + 0x04020a81, 0x00a00002, 0x98508110, 0x00211441, 0x01000080, 0x22880a20, 0x14102008, 0x08400040, 0x00045414, 0x60080000, + 0x20000040, 0x44440410, 0x28281004, 0x00000000, 0x0002a828, 0xd0140010, 0x01000106, 0x02811281, 0x000a4000, 0x20000000, + 0x85402008, 0x40850040, 0x00004504, 0x02009203, 0x08020822, 0x00201080, 0x9110a050, 0x04810481, 0x00000100, 0x22480a20, + 0x10102008, 0x08600410, 0x44040044, 0x20284100, 0x08001000, 0x00020a28, 0xd0142000, 0x01008100, 0x04015016, 0x208a02c2, + 0x02002001, 0x85400d08, 0x00050000, 0x40008004, 0x0aa040a0, 0x00428800, 0x00000040, 0x91100313, 0x00011000, 0x00000488, + 0x2ea80a21, 0x14102000, 0x00400040, 0x00045410, 0x20088004, 0x04000040, 0x00441004, 0x68284820, 0x00008100, 0x80020118, + 0x50141202, 0x01000090, 0x00012005, 0x028a200a, 0x20000000, 0x81404040, 0x44854004, 0x00000100, 0x02208c21, 0x00028202, + 0x08000000, 0x95101590, 0x00c12081, 0x00000000, 0x22080a40, 0x14308448, 0x00400000, 0x08044034, 0x60280822, 0x00000000, + 0x8802b048, 0x50140291, 0x01001000, 0x02810100, 0x200a0408, 0x00002002, 0x8140d004, 0x00054045, 0x442001a0, 0x02800800, + 0x00028202, 0x0c000000, 0x91100110, 0x00410489, 0x40007000, 0x2a880a40, 0x10101400, 0x00600040, 0x04044030, 0x60080804, + 0x00400000, 0x0404d482, 0x28280000, 0x00000200, 0x00020d7a, 0xd0148010, 0x01011000, 0x02002405, 0x04ca0400, 0x2000a280, + 0x8100580a, 0x40a50000, 0x00000040, 0x0200403d, 0x08021002, 0x80000100, 0x15108fd8, 0x08a10200, 0x00004000, 0x22482881, + 0x14500008, 0x00008000, 0x40041667, 0xa8280000, 0x00004000, 0x0402a8b3, 0x50140084, 0x01000000, 0x02015539, 0x20ca0000, + 0x00000200, 0x8500a028, 0x00050041, 0x40000184, 0x0a805c32, 0x80220000, 0x00400002, 0x1510a614, 0x00812201, 0x00001184, + 0x2a280840, 0x54500000, 0x00000008, 0x0004d472, 0xa0080226, 0x00001000, 0x40440654, 0x2a280000, 0x00004008, 0x0002a8a1, + 0xd4140082, 0x01010000, 0x02401875, 0x208a0302, 0x00006000, 0x81400038, 0x04850101, 0x40004640, 0x0220a8a4, 0x80420002, + 0x20008440, 0x1d105114, 0x08a00001, 0x42000280, 0x2009282e, 0x50500010, 0x00001100, 0x060544c4, 0x20288000, 0x09000008, + 0x80022c22, 0x50141000, 0x01000100, 0x02410854, 0x288ae280, 0x00000000, 0x8960011b, 0x44250401, 0x00100044, 0x12806a88, + 0x00020000, 0x80000422, 0x1810c158, 0x00011809, 0x07800280, 0x2868a002, 0x14101050, 0x00400100, 0xc20404a5, 0x28084000, + 0x04001000, 0xc0862412, 0x28280000, 0x0100c106, 0x82c30c61, 0x12141101, 0x01010218, 0x4ca06c60, 0x800a0406, 0x200020c0, + 0x19308918, 0x40450001, 0x060000a4, 0x38b84218, 0x00021002, 0x04000010, 0xd15ca948, 0x02810400, 0x002088a8, 0xa80e0203, + 0x10502440, 0x01000000, 0xc4864096, 0x20281008, 0x08000822, 0x82c32501, 0x12140080, 0x0100d001, 0x04a10c34, 0x640a2040, + 0x80000400, 0x11501b3a, 0x00854001, 0x40000224, 0x2a288008, 0x00021880, 0x04000002, 0xf15ca008, 0x0a010e08, 0x00202111, + 0xa08e80e6, 0x14100000, 0x01400544, 0x40871091, 0x20280020, 0x44044044, 0x82c28480, 0x08281200, 0x0102800a, 0x23c128a0, + 0x50150011, 0x82801180, 0x0c604204, 0x840a0002, 0x20402040, 0x19309008, 0x00854185, 0x4a200428, 0x10181000, 0x0002aa02, + 0x14105400, 0xa14c0040, 0x00000a01, 0x20a82118, 0x8a0740a0, 0x5010c010, 0x01441584, 0x04030041, 0x20288820, 0x0802018a, + 0x03c12300, 0x90141000, 0x00010ad0, 0x4ee04004, 0x200a8001, 0x84402040, 0x1930010a, 0x00a50801, 0x4000042c, 0x32184090, + 0x00020240, 0x14108404, 0xa84c0106, 0x020108a0, 0x21081208, 0x48866011, 0x10701050, 0x0104c086, 0x44030400, 0x20080208, + 0x00040294, 0x40000440, 0x88280000, 0x0002044a, 0x21006a20, 0x10150084, 0x42008821, 0x00005210, 0x840a0102, 0x00c03470, + 0x21008008, 0x00850001, 0x08206828, 0x60000004, 0x000204c2, 0x9650d114, 0x41004200, 0x000101a0, 0x2228a20e, 0x08800001, + 0x14100100, 0x40044ad0, 0x80400400, 0xaa082202, 0x0102844c, 0x05201820, 0x12944311, 0x00010020, 0x40001004, 0xa00a0000, + 0x04401490, 0x0100a148, 0x40050280, 0x0080682e, 0x00001000, 0x00228402, 0x9e101015, 0x01400000, 0x00010801, 0x22a8a1a2, + 0x08000240, 0x10101410, 0x4404428d, 0x02c00040, 0x28282000, 0x02c41000, 0x04000440, 0x08280000, 0x8442c01a, 0x01002924, + 0x10951201, 0x2a200010, 0x00004080, 0x204a0444, 0x54102000, 0x81008008, 0x42254905, 0x28080220, 0x00000082, 0x84421002, + 0x50948000, 0x01000044, 0x02a02401, 0xa00a0108, 0x000102b0, 0x19505000, 0x06840400, 0x00008840, 0x20080000, 0xc4628016, + 0x09002960, 0x10140200, 0x0aa10091, 0x0000100c, 0x204a0400, 0x5410c002, 0x81002108, 0x02050801, 0x28280224, 0x40806040, + 0x84421000, 0x50148412, 0x000041c0, 0x00a12821, 0xa10a0080, 0x02000200, 0x5c105010, 0x02c50044, 0x00000408, 0xa0080000, + 0x40044282, 0x04400444, 0x08281810, 0x80028002, 0x25000120, 0x52150201, 0x00800840, 0x00007018, 0x840a2408, 0x20400094, + 0x01000140, 0x40850203, 0x0220600c, 0x00008880, 0x10021030, 0x0c10800e, 0x81400000, 0x008100c0, 0x6028052a, 0x0a002201, + 0x10100950, 0x40440684, 0x04800002, 0x20281028, 0x0c026c40, 0x81000602, 0x12150200, 0x008058a1, 0x40008114, 0x200a2400, + 0x80400048, 0x05000002, 0x08850924, 0x4220c008, 0x00000081, 0x10029000, 0x04104214, 0xc1400042, 0x28012c20, 0x0008c102, + 0x82a00281, 0x14104050, 0xc044028d, 0x00001400, 0x20080000, 0x02440200, 0x00001cf8, 0x4828a008, 0x84020102, 0x21000920, + 0x52150241, 0x00800014, 0x00405000, 0x840a0c02, 0x20402040, 0x01200088, 0x48850a25, 0x00204010, 0x00008180, 0x10021002, + 0x02108010, 0x81000040, 0x02c02c05, 0x20080108, 0x0c0102a0, 0x10104100, 0x42240604, 0x04401040, 0x20080000, 0x0002041a, + 0x89200920, 0x10150200, 0x0800b081, 0x40000014, 0x248aa400, 0x80404000, 0x0b00010a, 0x08850841, 0x40200014, 0x00004280, + 0x10020040, 0x0210801a, 0x80401120, 0x24012821, 0x03080484, 0x00800200, 0x14304008, 0x4a040240, 0x00400400, 0x28088002, + 0x40440000, 0x06004834, 0x08280220, 0x80020248, 0x21003902, 0x52159091, 0x04800220, 0x00004000, 0x840a0002, 0x20400800, + 0x0100a40c, 0x48850001, 0x02204904, 0x000020c0, 0x10028012, 0x04101220, 0x81400500, 0x02810a00, 0x20280080, 0x08004049, + 0x14100412, 0x42049000, 0x004060e5, 0x20088002, 0x08020080, 0x81202969, 0x12151001, 0x00800000, 0x40000814, 0x240a8000, + 0x804020b0, 0x01004b4a, 0x00851000, 0x40200404, 0x0a007aa0, 0x10020000, 0x04108002, 0x80401545, 0x28010001, 0x03080090, + 0x00a02220, 0x10100402, 0x02040048, 0x4440c806, 0x20080820, 0x40041000, 0x2400c440, 0x08282004, 0x00020810, 0x210004ab, + 0x1415c005, 0x00800010, 0x82001420, 0x004a80c0, 0x24002708, 0x49001032, 0x40050001, 0x0a000100, 0xa000522c, 0x00020400, + 0x001000c2, 0x91a0f810, 0x00800101, 0x44082800, 0x2a418284, 0x10504000, 0x00041150, 0x04210628, 0x2028000c, 0x89022920, + 0x41000102, 0x16144090, 0x00c18204, 0x40001461, 0x280a2000, 0x0000000a, 0x01200510, 0x040500c4, 0x4820c200, 0x80500009, + 0x10020402, 0x00100820, 0x82c0f010, 0x40010200, 0x01282940, 0x268080a9, 0x14101040, 0x00440510, 0x88004281, 0x20280004, + 0x40040008, 0x80c206c2, 0x08282818, 0x81020000, 0x23c1c423, 0x50150101, 0x02801000, 0x08204ab0, 0x000a2008, 0x20000000, + 0x95101516, 0x4025c845, 0x02000200, 0x18d82000, 0x00021480, 0x04508000, 0xf10c4036, 0x028120c0, 0x08088300, 0xa0268829, + 0x10100040, 0x05445510, 0xc2820282, 0x20080824, 0x00222000, 0x0bc10500, 0x10144002, 0x42819000, 0x842002b9, 0x204a0048, + 0x04000406, 0x11103110, 0x0a25c080, 0x40000000, 0xb088221d, 0x10028400, 0x00500860, 0xa50c5012, 0x02212188, 0x00080201, + 0xe0868802, 0x18501000, 0x05040030, 0x428346c0, 0x28082002, 0x44449000, 0x82820440, 0x0828a000, 0x81024820, 0x0501019e, + 0x30144005, 0x00800210, 0x4c601040, 0x000a84c0, 0xa0410800, 0x1310202a, 0x44050021, 0x02204900, 0x1898000c, 0x00028602, + 0x005010d0, 0xd10c0008, 0x04800109, 0x0a080880, 0x60270222, 0x14104000, 0x01042410, 0xc2c28045, 0x28080008, 0x80021303, + 0x04a12960, 0x1014c080, 0x40811204, 0x0a600450, 0xa10a0c01, 0x00000822, 0x1d102108, 0x0ac50080, 0x40008804, 0x10185061, + 0x10020600, 0x00503012, 0xe42c8104, 0x00210041, 0x03080880, 0x20866204, 0x18101000, 0x01040118, 0xc6c30462, 0x20084004, + 0x00002000, 0x44400454, 0x282a6000, 0x80000800, 0x0380902a, 0x10150041, 0x00004014, 0x40801480, 0x800a0000, 0x22408100, + 0x0920220a, 0x44050281, 0x08000040, 0x00a04504, 0x32120002, 0x24008820, 0x81402100, 0x20890e00, 0x08001030, 0x022060c5, + 0x10141014, 0x40400000, 0x04010448, 0xa02a2808, 0x09008000, 0x01404020, 0x52950000, 0x04001004, 0x00000313, 0xa00a8082, + 0x00404040, 0x01202108, 0x04a50005, 0x48000000, 0x20004480, 0x12120030, 0x0040080a, 0x84008240, 0x20091021, 0x41000f88, + 0x82800000, 0x14341400, 0x00402014, 0x08000040, 0x600a0000, 0x00000000, 0x44400000, 0x082a0830, 0xa0001100, 0x0100c20a, + 0x10150011, 0x00003180, 0x00800200, 0x020a2040, 0x2000400c, 0x41008002, 0xc2054020, 0x04000404, 0x00601110, 0x14d20282, + 0x08001011, 0x81008840, 0x28a80480, 0x00002300, 0x02010801, 0x10144448, 0x40400020, 0x04000010, 0xa02a0020, 0x08001802, + 0x01008184, 0x10950000, 0x00002018, 0x40001005, 0x220a4008, 0x00002280, 0x85000400, 0x00050802, 0x4000c020, 0x0a400245, + 0x10d28180, 0x00001002, 0x80200010, 0x28090689, 0x01002140, 0x06a00000, 0x14140840, 0x00400420, 0x00008005, 0x600a5832, + 0x00400c20, 0x54100048, 0x08220c50, 0x80001020, 0x21480200, 0x10112821, 0x02001108, 0x00848212, 0x40087018, 0x24400084, + 0x00020800, 0xc004a008, 0x09000106, 0x00214660, 0x1092c086, 0x02000001, 0x81400810, 0x2489800a, 0x00000540, 0x822013a1, + 0x08040680, 0x40000840, 0x1450e010, 0x80220c40, 0x0a001022, 0x21080104, 0x12911a28, 0x00002000, 0x40048011, 0x20083054, + 0x00404000, 0x04020088, 0x8024600e, 0x41008800, 0x00010421, 0x1892c384, 0x02000010, 0x8000000e, 0x204980c2, 0x05003501, + 0x02800200, 0x040406e1, 0x08600808, 0x10104000, 0x40028442, 0x04000000, 0x70100012, 0x0c620004, 0x80000180, 0x01080000, + 0x30110000, 0x00000020, 0x40840000, 0x20081080, 0x00000010, 0x02420208, 0x20040000, 0xc1000000, 0x04a10000, 0x50120014, + 0x82000000, 0x09400004, 0xa2088000, 0x04800000, 0x00210080, 0x0e840010, 0x00400000, 0x10100010, 0x8c424080, 0x00202100, + 0x61080004, 0x1ab18422, 0x00000000, 0x04440048, 0x60080050, 0x00400000, 0x04020080, 0x40040000, 0x81000002, 0x00010000, + 0x58120600, 0x82a00000, 0x04000020, 0xa0490000, 0x03800000, 0x00002100, 0x02848000, 0x0c200400, 0x10500000, 0x04620400, + 0x04400800, 0x00008048, 0x00000082, 0x00004040, 0x00008400, 0x80000244, 0x00000082, 0x00000000, 0x02000060, 0x00000100, + 0x00000000, 0x04001420, 0x00000006, 0x00000028, 0x08000140, 0x00000000, 0x04400400, 0x00000008, 0x00000000, 0x00208140, + 0x00002000, 0x00400002, 0x00000001, 0x00000200, 0x00200000, 0x00004010, 0x000000c0, 0x00004500, 0x00000800, 0x00000602, + 0x00000081, 0x00001100, 0x20000020, 0x00001008, 0x00204004, 0x08003000, 0x00000080, 0x00000400, 0x00000000, 0x0a009000, + 0x00200484, 0x00000000, 0x00400080, 0x00000004, 0x00000280, 0x00002024, 0x02002600, 0x00001400, 0x00009810, 0x00800121, + 0x04006809, 0x00002000, 0x04001c5a, 0x0000c504, 0x00004201, 0x000020b5, 0x0000a84a, 0x00404000, 0x0000b590, 0x00005a01, + 0x00008283, 0x00006028, 0x00003ac2, 0x00000710, 0x00005007, 0x0000482d, 0x00000920, 0x80011448, 0x04008442, 0x01001824, + 0x00000281, 0x04002b09, 0x80002000, 0x00001030, 0x00008004, 0x1020500c, 0x0000aa30, 0x00002c03, 0x00008140, 0x00000058, + 0x00000895, 0x00004322, 0x0000e841, 0x0000030a, 0x00000051, 0x00004212, 0x00007861, 0x0020092c, 0x0200a04b, 0x00009010, + 0x0a284220, 0xa08a0c18, 0x50520400, 0x95241004, 0x0b550010, 0x6a292825, 0x208a1002, 0xd8720010, 0x11d44004, 0x45051409, + 0x3ab90285, 0xa82a2002, 0x40020800, 0xb51c4404, 0x13f50045, 0x42019811, 0xe8ae0000, 0xa00a0412, 0x1510c000, 0xd3d70241, + 0x4a850129, 0x29284000, 0x268a1000, 0x50526054, 0x98141010, 0x42c50000, 0x2b290925, 0x208a0208, 0x99321114, 0x44d44000, + 0x42050409, 0xbb99a284, 0x0c0a2800, 0x81428108, 0x745c0404, 0x52950081, 0x03219284, 0xe0ae0000, 0x25421826, 0x94588008, + 0xd0970001, 0x4b850811, 0x29080008, 0xa48b0c40, 0xd052101c, 0x20080044, 0x2c680000, 0x94120040, 0x5064c002, 0x41140820, + 0x2aa94188, 0x200a0200, 0x10022080, 0xd1140130, 0x61850200, 0x8209a040, 0x00aa0408, 0x20420220, 0xc1440002, 0x51850000, + 0x02310120, 0x80820040, 0x94621000, 0x01180108, 0x17c10080, 0x4ab50000, 0x88088000, 0x04680020, 0xd4120000, 0x18440800, + 0x00144008, 0x2b890400, 0x202a8482, 0x11102000, 0x54140040, 0x60c51290, 0x83094141, 0x208a0400, 0x01600020, 0x40040000, + 0x12a50270, 0x43110809, 0x88c20000, 0x85322040, 0x20480050, 0x06810604, 0x53a10020, 0x28044080, 0x24602000, 0x945a0040, + 0x00002000, 0x00002200, 0x00001000, 0x00000100, 0x88000000, 0x00008000, 0x00000008, 0x00100000, 0x00408802, 0x00004140, + 0x00000000, 0x04000000, 0x00008000, 0x00003100, 0x06004080, 0x00000082, 0x2800400c, 0x20000220, 0x00002800, 0x20000c04, + 0x00009296, 0x00002800, 0x00000741, 0x00000488, 0x00000100, 0x0020a022, 0x80000000, 0x00000000, 0x02028802, 0x00000000, + 0x00000000, 0x00000002, 0x04000000, 0x00020002, 0x00005010, 0x00404100, 0x00000002, 0x00000000, 0x00000400, 0x10000100, + 0x08000180, 0x00000204, 0x00083020, 0x00008200, 0x00000000, 0x00000000, 0x00009882, 0x00000820, 0x00002000, 0x000086c3, + 0x0400101c, 0x00000301, 0x002044c0, 0x04002008, 0x02008000, 0x00201872, 0x08000405, 0x00004100, 0x00000218, 0x08008880, + 0x00001032, 0x00002540, 0x000000a1, 0x00000208, 0x40000800, 0x00002400, 0x00005044, 0x22000012, 0x00008002, 0x01000828, + 0x404022c1, 0x00000290, 0x00001101, 0x08004064, 0x80002448, 0x00000002, 0x00309930, 0x08004005, 0x00000220, 0x20002008, + 0x84000c00, 0x08008002, 0x000071c0, 0x00002281, 0x00000010, 0x0000c80a, 0x00104414, 0x00000140, 0x000000a3, 0x0000882a, + 0x40042844, 0x928216a2, 0x08288002, 0x01024920, 0x02c105c1, 0x13101080, 0xc0810011, 0x2c442408, 0x204a0044, 0x00002200, + 0x9910c80a, 0x04a50400, 0x4a000804, 0x301851b9, 0x80029200, 0x10100000, 0x454c004e, 0x02812609, 0x20280110, 0x8806c086, + 0x14504804, 0x41040100, 0x008314f2, 0x88200000, 0x000a0822, 0x268121c1, 0x5114100c, 0x02010001, 0x04e0c410, 0x840a0008, + 0x20008282, 0x19402440, 0x48050805, 0x00a00180, 0x12186008, 0x00120220, 0x14400012, 0xe10cc548, 0x02810001, 0x00003208, + 0xe82e88a0, 0x00500040, 0x45040500, 0x92830087, 0x08280008, 0x04000000, 0x92c29444, 0xa0280000, 0x09060020, 0x06412a00, + 0x41109204, 0x10814013, 0x04640068, 0x000a0d88, 0x22008020, 0x11503012, 0x80804820, 0x44000104, 0x023d20c1, 0x08128212, + 0x10000000, 0xe54c0400, 0x20891041, 0x02200180, 0x88060a20, 0x10100040, 0x41043008, 0x06c20611, 0x00008820, 0x802a400c, + 0x2dc12600, 0x52140102, 0x00811215, 0x04404840, 0x204a00a8, 0x00000042, 0x0830b020, 0x44250025, 0x09804b10, 0xa2080400, + 0x10029492, 0x80400000, 0x65142104, 0x00010009, 0x00886280, 0x8a260864, 0x14500010, 0x21040404, 0xc2035240, 0x80088008, + 0x00002040, 0x04400404, 0x60282800, 0x80024000, 0x0890802a, 0x01105000, 0x42810010, 0x18040305, 0x040a8008, 0x80402000, + 0x29200180, 0x48800224, 0x02204000, 0x10050cc3, 0x00028000, 0x90102000, 0x01400142, 0x00814890, 0x06280600, 0x48003001, + 0x3010106c, 0xc0040400, 0x04418010, 0x20002020, 0x012a4000, 0x08000808, 0xd1945010, 0x00018102, 0x00200205, 0x820aa00a, + 0x04000000, 0x30400090, 0x48054285, 0x13200540, 0x00100000, 0x80020862, 0x00588000, 0x11801000, 0x20a90411, 0x40000320, + 0x06002888, 0x40501052, 0x04040000, 0x18000404, 0x20022008, 0x44002008, 0x10141404, 0x00080008, 0x08204020, 0xa0022812, + 0x10000014, 0x01149000, 0x42814281, 0x800a0100, 0x20000000, 0x0540244a, 0x02800000, 0x40000004, 0x0005c181, 0x88020a20, + 0x00200000, 0x05108042, 0x10e00421, 0x02001180, 0x08092210, 0x30000408, 0x00400000, 0x04145854, 0x48280000, 0x00000908, + 0x22022022, 0x50148000, 0x81000100, 0x02815095, 0x000a0200, 0x0000080a, 0xa040a400, 0x42850041, 0x05000104, 0x08205080, + 0x04428a20, 0x80000042, 0x10000100, 0x081100b9, 0x01800000, 0x22201e00, 0x00480400, 0x00008000, 0x14143040, 0x40200030, + 0x00002000, 0x10440400, 0x28381030, 0x0000480c, 0x80022002, 0x00108010, 0x41001004, 0x12814281, 0x000a0100, 0x20000008, + 0x01042042, 0x40808000, 0x06401600, 0xa80540a5, 0x04220d00, 0x80008002, 0x01501010, 0x10810001, 0x02000900, 0x082802c0, + 0x30100008, 0x00002020, 0x04440440, 0x40001008, 0x00280820, 0xa8024216, 0x5014a000, 0x01000110, 0x00011081, 0x0a0a0200, + 0x00800000, 0x2400e00e, 0x40050001, 0x01c04100, 0x820024c4, 0x00029800, 0x88600022, 0x05000710, 0x10910001, 0x000000c0, + 0x2a280a08, 0x10400400, 0x00002060, 0x04840010, 0xc8101024, 0x00001020, 0x14640000, 0x22284820, 0x48100000, 0x00028102, + 0x00100210, 0x81000080, 0x10813009, 0x040e2400, 0x6220800c, 0x01404022, 0x00800044, 0x80000100, 0x40254a81, 0x08029002, + 0x82000020, 0x05100548, 0x10812239, 0x08000080, 0x02408800, 0x30000400, 0x04080042, 0x00640014, 0x401048a0, 0x00200000, + 0xa8021000, 0x50148212, 0x01083180, 0x02814009, 0x000a2008, 0x00000006, 0x2c400040, 0xc0054021, 0x01000504, 0x02208800, + 0x08028200, 0x20000012, 0x85900180, 0x10c11221, 0x00080080, 0x2a000c48, 0x04602400, 0x10001006, 0x00044041, 0x4080082a, + 0x00000040, 0x50400402, 0x20388000, 0x08000920, 0x84021682, 0x00000200, 0x01111150, 0x12846c29, 0x200a0088, 0x0000a000, + 0x45401406, 0x00840000, 0x02004144, 0xc8210281, 0x80128020, 0x00000800, 0x15403442, 0x028100a8, 0x00000114, 0x08202a01, + 0x34584000, 0x00000100, 0x40041455, 0x08000000, 0x00080808, 0x20222421, 0xd0141002, 0x01000100, 0x02a1c2f5, 0x804a0448, + 0x00000000, 0x2400a010, 0x40051001, 0x01800100, 0x0a005016, 0x00020020, 0x80600002, 0x1510ea88, 0x00810011, 0x00001700, + 0x0a2848c4, 0x0440003c, 0x20002440, 0x50005200, 0x0816800a, 0x04200040, 0x1004d690, 0x28280008, 0x00000824, 0x80822143, + 0x10109000, 0x41010010, 0x06840085, 0x004a0000, 0x2000e200, 0x01000858, 0xc4804503, 0x00000204, 0x083520b8, 0x00028840, + 0x00000000, 0x97504006, 0x40881211, 0x02002500, 0x080148a2, 0x90100040, 0x00200000, 0x66c7d60c, 0x80200000, 0x01080920, + 0x2cc2a0da, 0x52940004, 0x01401100, 0x00014c91, 0x040a0608, 0x20008040, 0x00202922, 0x58450005, 0x01a00000, 0x92004a08, + 0x80120000, 0x00400062, 0x50089594, 0x02092881, 0x01000200, 0x0ca08022, 0x00400000, 0x04000508, 0x7000d0d4, 0x822c0000, + 0x40400200, 0x84869406, 0x80284810, 0x01008020, 0x3a430643, 0x00040009, 0x11011310, 0x4af06ca4, 0x000a2000, 0x2000040a, + 0x9d101830, 0x00e1c305, 0x40000000, 0x3a0c10c8, 0x04428860, 0x80000410, 0x310c200a, 0x08910380, 0x0200a00a, 0x602e9821, + 0x10100440, 0x05001004, 0xc0448202, 0x20004800, 0x00280100, 0x0a032179, 0x50149000, 0x81000011, 0x0e810222, 0x200a2040, + 0x00000018, 0x05104996, 0xc2c5cc05, 0x00000020, 0x28382098, 0x00128200, 0x80401416, 0x15040008, 0x00a10a41, 0x02002120, + 0xc806c084, 0x20500000, 0x0108014c, 0xd403d612, 0x000c0020, 0x4204000c, 0x84c20450, 0x80188008, 0x01221120, 0x2f816980, + 0x00051001, 0x0a900812, 0x14400204, 0x600a4000, 0x000080c0, 0x99002008, 0x00a10183, 0x44444e20, 0x12180004, 0x00020040, + 0xd8109012, 0x410c4000, 0x08c00001, 0x260825a8, 0x80270a04, 0x10100002, 0x410404d0, 0x84c31105, 0x20000020, 0x042ac802, + 0x0f812388, 0x52040014, 0x809152a1, 0x04200c00, 0x000a0000, 0x0440a460, 0xb920110a, 0x42050885, 0x00000020, 0x10184200, + 0x0ca20002, 0x90509010, 0x600c6504, 0x00a10881, 0x23082048, 0xc0060220, 0x00400040, 0x49044480, 0x96831090, 0x20100001, + 0x400452c0, 0x00400610, 0x12082000, 0x84028c62, 0x29200000, 0x00054104, 0x028002b1, 0x10301008, 0x044a000a, 0x40003450, + 0xa1208100, 0x00810801, 0x0020008c, 0x4a046000, 0x80420402, 0x10001074, 0x01008300, 0x0e990808, 0x2000a202, 0x400000a1, + 0x10101100, 0x40444284, 0x06200440, 0x00202010, 0x810a8468, 0x09400800, 0x72844306, 0x000100a1, 0x08501050, 0x00428008, + 0x04081050, 0xa1002500, 0x40050005, 0x00a06828, 0x20000082, 0x02021440, 0x08400004, 0x81108202, 0x14010811, 0x2080238a, + 0x02000020, 0x14381404, 0x40444281, 0x08000050, 0x08080002, 0x06844040, 0x00700090, 0x00280000, 0x2442ac06, 0x09000120, + 0x00501009, 0x88a100c0, 0x10000210, 0x000a0404, 0x36500040, 0x41046008, 0x40858187, 0x28080220, 0x80004810, 0x04321040, + 0x50040010, 0xa3408006, 0x08a02001, 0xa00a0508, 0x02014aa0, 0x11404000, 0x42941010, 0x040004c0, 0xa0000000, 0x0442a826, + 0x08280500, 0x5114020c, 0x0aa14001, 0x00001010, 0x80020408, 0x145080c0, 0x21082102, 0x40050a25, 0x28280000, 0x00805080, + 0x80120000, 0x52040012, 0x00409500, 0x02290841, 0xa9020088, 0x04800222, 0x50000040, 0x06850000, 0x00403410, 0xa0006804, + 0x42000096, 0x04000c40, 0x00281820, 0x080280c0, 0x21004108, 0x82110291, 0x08801842, 0x10046004, 0x0c0aa040, 0x20400008, + 0xc1101002, 0x40810a01, 0x0024601c, 0x2a000480, 0x10021020, 0x8010c114, 0x01000006, 0x008104c0, 0x26080100, 0x08600221, + 0x10004150, 0x4404028c, 0x00402c00, 0x20180028, 0x04229440, 0x89000902, 0x52151200, 0x008008a1, 0x00002014, 0x040a4400, + 0x0040204a, 0xa1100100, 0x4805c805, 0x02200008, 0x00002088, 0x04429222, 0x80904010, 0x11002004, 0x28a10401, 0x000881a2, + 0x0200624c, 0x04504800, 0x40040644, 0x10000012, 0x202a0000, 0x44000040, 0x80407400, 0x00180204, 0x8c02a832, 0x23240100, + 0x02010001, 0x00841098, 0x18500204, 0x040a0000, 0x20400000, 0x41006418, 0x088100e7, 0x40008000, 0x82344000, 0x10020310, + 0x00000008, 0x81008802, 0x02d04001, 0x20280508, 0x04011ae2, 0x10004100, 0xc6442200, 0x08101444, 0x20000200, 0x08028c30, + 0x81a00100, 0x500d1288, 0x00900001, 0x00002012, 0x04020408, 0x0068e000, 0xa3000806, 0x40050855, 0x00200020, 0x00004280, + 0x12821000, 0x00100102, 0x88008450, 0x04012821, 0x03c80188, 0x00000200, 0x18008442, 0x02640204, 0x64121010, 0x20000000, + 0x54040200, 0x0840f410, 0x0008080a, 0x8c020020, 0x21202104, 0x00050401, 0x00804400, 0x10109ab4, 0x042a0000, 0x28400030, + 0xc3002848, 0x48810001, 0x0020040c, 0x0204ca2a, 0x1402a000, 0x80100100, 0x01003482, 0x00810318, 0x22080000, 0x006048e1, + 0x10102040, 0x4c448012, 0x00000405, 0x20004000, 0x080a0562, 0x01201d01, 0xd2051010, 0x00900000, 0x0000ae09, 0x04020008, + 0x00082000, 0xa00045a6, 0x42450005, 0x00000000, 0x0000daf0, 0x94020000, 0x09f00002, 0x41009448, 0x28010011, 0x02882180, + 0x00000228, 0x00100444, 0x42640000, 0x04001a10, 0x00080020, 0x00004440, 0x0c001080, 0x08080000, 0x00120902, 0x21a08269, + 0x00152001, 0x0a801110, 0x94004080, 0x004a0000, 0x2000240c, 0xc1208302, 0x148500c5, 0x40204800, 0x2a001000, 0x04120020, + 0x80009002, 0x01000710, 0x188000e1, 0x02482200, 0x20218804, 0x10004400, 0x00040108, 0x444300d4, 0x08001000, 0x81028800, + 0x013023ea, 0x50144200, 0x00811010, 0x2a680065, 0x000a2000, 0x04400400, 0xa1009188, 0x40850081, 0x08204240, 0x10000026, + 0x10121402, 0x80008800, 0x06084100, 0x08890071, 0x01000a80, 0x02402008, 0x00504010, 0x00041140, 0x64208485, 0xa022000a, + 0x54440000, 0x029202ee, 0x20089020, 0x81220000, 0x0d410a53, 0x00017111, 0x00840220, 0x101000a8, 0x000a2008, 0xe2400002, + 0x01101c14, 0x04814a41, 0x00048000, 0x5a08201c, 0x042211a2, 0x00500004, 0xe10c8444, 0x18a12800, 0x00000190, 0xe2060205, + 0x10480000, 0x05044560, 0x4290800a, 0x00008822, 0x00221010, 0x0f490185, 0xf2040000, 0x00110200, 0x040034b9, 0x00020040, + 0x0000000e, 0xbd987530, 0x40454001, 0x0220220c, 0x2098a008, 0x18028000, 0x00101820, 0xa1444486, 0x00212211, 0x020809c0, + 0xe4864008, 0x1c000000, 0x01444500, 0xc2910263, 0x00009800, 0x08040000, 0xc2d28404, 0xb8280000, 0x01029822, 0x03c10500, + 0x00013211, 0x00944448, 0x5a600000, 0x000a0800, 0x20400086, 0x1110a528, 0xc4a10841, 0x00000004, 0x2a0c4200, 0x84029020, + 0x005000c8, 0x210c6512, 0x12880801, 0x00000200, 0xa8072080, 0x14200008, 0x01440040, 0xc2921635, 0x20208000, 0x88024a20, + 0x07c92148, 0x50844083, 0x02011200, 0x04700850, 0x8042000a, 0x0008a000, 0x31100504, 0x40050825, 0x02200210, 0x34884040, + 0x90021440, 0x00100082, 0x0844a000, 0x02010021, 0x05a80980, 0xa8062216, 0x00000010, 0x05041004, 0xc2d3c4c8, 0x08008028, + 0x08044800, 0x44400400, 0x203a8808, 0x80000000, 0x0d0000a0, 0x00911011, 0x00040000, 0x10002002, 0x040a4186, 0xa0400000, + 0x43002208, 0x48a10005, 0x00000400, 0x1214c060, 0x14028e50, 0x80401100, 0x01100082, 0x68810000, 0x02002120, 0x40080289, + 0x50048000, 0x00200814, 0x045104c0, 0x00024108, 0x01200820, 0x09081100, 0x50152481, 0x02009002, 0xa0804014, 0x000a0042, + 0x80000200, 0x21402d08, 0x40058201, 0x04000084, 0x00b05020, 0x18020000, 0x8408001a, 0x42509840, 0x01810001, 0x20000f00, + 0x02080088, 0x4864a030, 0x00004440, 0x04100000, 0x2000202e, 0x10000004, 0x04441450, 0x402a0020, 0x08000102, 0x01008808, + 0xd0950001, 0x06002210, 0x20005180, 0x000a2004, 0x28000408, 0x85408000, 0x02810022, 0x40004940, 0x00041004, 0x14621280, + 0x80008001, 0x09100012, 0x288027c0, 0x02000000, 0x0029482b, 0x50144440, 0x00000000, 0x04400014, 0x28028820, 0x00201000, + 0x0100010a, 0x501d0001, 0x80002010, 0x00001080, 0x080a6004, 0x00000248, 0x23c08000, 0xc2050400, 0x08004802, 0x04200305, + 0x04028002, 0x80400080, 0x00800420, 0x08b103d1, 0x31000000, 0x42003020, 0x50540c40, 0x00000004, 0x04085018, 0x00088000, + 0x00440400, 0x50101040, 0x08020c70, 0x80000006, 0x2128c208, 0x008128b1, 0x10000100, 0x02101000, 0x44083054, 0x20644000, + 0x00028a08, 0x80202008, 0x01004002, 0x40850404, 0x12025104, 0x00008283, 0x8d100820, 0x20818302, 0x024004c0, 0x08082119, + 0x40244ea0, 0x00400040, 0x14100004, 0x80020c62, 0x08001010, 0x01280008, 0x301108f1, 0x02003000, 0x40848244, 0x00081050, + 0x04206108, 0x28420000, 0x4024200a, 0x8000c914, 0x00810401, 0x01024284, 0x8a008000, 0x20500022, 0x04018443, 0x01800100, + 0x12083290, 0x406442a0, 0x08000800, 0x2410044e, 0x18001450, 0x08400000, 0x60104000, 0x84420140, 0x18000000, 0x012c0010, + 0x3ca18040, 0x00100000, 0x42000100, 0x30180040, 0x00440000, 0x00020000, 0xa0240022, 0x41008280, 0x04810000, 0xd2060010, + 0x00000000, 0x09180608, 0xa0801108, 0x04400000, 0x02098340, 0x46240008, 0x08400000, 0x10100020, 0x8c420600, 0x00000010, + 0x01284284, 0x18218000, 0x22100000, 0x40842000, 0x00100280, 0x24080000, 0x004220c0, 0xe02c0410, 0x00000000, 0x00813400, + 0x11020000, 0x02000040, 0x88500000, 0x84010002, 0x03800000, 0x00082100, 0x02842241, 0x08600000, 0x24100000, 0x0c400004, + 0x04000004, 0x001080a0, 0x40001004, 0x00000080, 0x00004100, 0x00000002, 0x00400660, 0x00000800, 0x02005420, 0x00004220, + 0x00002040, 0x00000810, 0x00040000, 0x00000020, 0x00204440, 0x00000884, 0x00000000, 0x08004000, 0x00208000, 0x00004010, + 0x04004000, 0x00008f02, 0x00000091, 0x0000900a, 0x00000100, 0x00000400, 0x00000a02, 0x00000080, 0x00000c20, 0x00800000, + 0x00000828, 0x00004300, 0x00401000, 0x00808002, 0x00000220, 0x00000010, 0x00004000, 0x10404a08, 0x00900060, 0x02801400, + 0x00084004, 0x00000000, 0x00400000, 0x00006010, 0x000000c0, 0x00000440, 0x02002a12, 0x0000c40a, 0x00101820, 0x0080040d, + 0x00002801, 0x00002098, 0x00001000, 0x0400800e, 0x40400195, 0x00209009, 0x14002000, 0x10000404, 0x0000739a, 0x10101101, + 0x00008003, 0x20402824, 0x40002042, 0x00000010, 0x90001487, 0x00000825, 0x000020c0, 0x00012000, 0x00404060, 0x45301004, + 0x04000829, 0x00003101, 0x00200008, 0x08009116, 0x00104410, 0x00200005, 0x10008001, 0x24202862, 0x0000410c, 0x00000088, + 0x80001805, 0x08008183, 0x00082404, 0x08000190, 0x00008009, 0x800482a2, 0x00005810, 0x0820094c, 0x00008621, 0x82001408, + 0x08082800, 0xa0ea0420, 0x94020056, 0x09641420, 0x73454800, 0x0a29a8a7, 0xa0920400, 0x1c2a3000, 0xd114c650, 0x01850009, + 0x2a990280, 0x882a0043, 0xa0420d02, 0x65180000, 0x4bc54211, 0x82810a02, 0x00060041, 0x940a8412, 0x21902680, 0x43770001, + 0x6a8508a1, 0x0d680808, 0xa28a0000, 0x90121040, 0x10048002, 0x4ac52000, 0xab890929, 0x00121012, 0xf56a6108, 0x14040611, + 0x424500c8, 0x2b192080, 0x880a0202, 0x81022108, 0x705c0400, 0x068502a8, 0x4333d802, 0x60240220, 0x9502a012, 0x24400241, + 0x50231c00, 0x4b9500b5, 0x25082800, 0xa08b2008, 0x54521050, 0x08000204, 0x006000c8, 0x20583100, 0x04164200, 0x19200100, + 0x28a90200, 0x10120004, 0x000e0018, 0xd1900020, 0x61015080, 0x00850004, 0x282a6000, 0x4402000c, 0x85040000, 0x43c11000, + 0x8a950120, 0x04020000, 0xb86a1020, 0x01900008, 0x17410000, 0x4ab12000, 0x240c4024, 0x28600440, 0x905c2000, 0x54025104, + 0x0a300830, 0x6bad8200, 0x20020000, 0x911a0002, 0x50541004, 0x06810100, 0x43054001, 0xa08a0000, 0x89260000, 0x40008005, + 0x1a850000, 0x01110051, 0x00a20c80, 0x814a0000, 0x10d01008, 0x16010000, 0x4b398000, 0x2ce40008, 0x00080040, 0x94520000, + 0x20084000, 0x14008200, 0x00000000, 0x40008010, 0x00040000, 0x42000008, 0xa0000000, 0x00000100, 0x04000002, 0x02000100, + 0x10082010, 0x00008000, 0x00009020, 0x00200000, 0x000004c4, 0x00000080, 0x0000c808, 0x00000000, 0x00000140, 0x80000100, + 0x00000212, 0x00001000, 0x00000281, 0x00000418, 0x00000000, 0x00004000, 0x00000004, 0x00000080, 0x08008400, 0x00000020, + 0x00000004, 0x08080010, 0x00408800, 0x00000462, 0x00207040, 0x04000104, 0x00000000, 0x86000004, 0x08000000, 0x20000100, + 0x00004180, 0x00004200, 0x00000000, 0x00008620, 0x00000004, 0x00000000, 0x02004002, 0x80000810, 0x00000004, 0x000005e9, + 0x04009210, 0x00006003, 0x0c0008c0, 0x0040000c, 0x0000a040, 0x80101820, 0x00400525, 0x02000800, 0x0000621a, 0x20008012, + 0x10000080, 0x40002504, 0x00000201, 0x000000a0, 0x0000d84c, 0x00004440, 0x00002104, 0x00008002, 0x0000080a, 0x01000020, + 0x008036d1, 0x00001100, 0x80000210, 0x0000c844, 0x0000248a, 0x00000041, 0x30109920, 0x00000000, 0x04004201, 0x00000014, + 0x40008000, 0x00400882, 0x00046568, 0x00000281, 0x00003030, 0x80000806, 0x00004450, 0x00000108, 0x00021087, 0x20002820, + 0x04001000, 0x80922680, 0x18200006, 0x01028120, 0xa2c90859, 0x51101000, 0x00810081, 0x02646930, 0x2008a440, 0x04020204, + 0x89200818, 0x48850002, 0x00604000, 0x12181105, 0x001212a2, 0x90008800, 0x254c2404, 0x02a92109, 0x00000050, 0x68064a80, + 0x00400064, 0x05040100, 0xd2931680, 0x0808c030, 0x00220000, 0x24412d40, 0x11101219, 0x80050082, 0x44e00800, 0x04080004, + 0x22400048, 0x81227820, 0x0825c026, 0x40000300, 0x32180c08, 0x84529083, 0x10800010, 0x61086540, 0x22812209, 0x00080080, + 0x48264800, 0x50400020, 0x05000044, 0x82950400, 0x80229030, 0x50040000, 0x02d20422, 0x88008020, 0x01226882, 0x06490608, + 0x01001090, 0x02810445, 0x38744100, 0x00000000, 0x00028642, 0xf9682028, 0x48805800, 0x04200104, 0x021d0239, 0x10000000, + 0x00029000, 0xe550048a, 0x20214951, 0x00880080, 0x4202820c, 0x44042050, 0x01400420, 0x1a129007, 0x80004008, 0x00220020, + 0x0f41aa83, 0x20880080, 0x02010351, 0x1c701404, 0x204c846a, 0x04000000, 0xc0126010, 0x00050800, 0x090001a1, 0x70186214, + 0x10400010, 0x0220000a, 0xe1828504, 0x04891241, 0x001020a0, 0x8222080c, 0x14440004, 0x21100100, 0x4a8354c0, 0x0800202a, + 0x00006448, 0xc4448800, 0x28020020, 0x80000000, 0x00a0880c, 0x13844000, 0x00010092, 0x44183005, 0x04402202, 0x20020108, + 0x01088140, 0x40a00680, 0x88004020, 0x12052005, 0x84000440, 0x10120802, 0x014c8100, 0x00011000, 0x20880280, 0x8a040833, + 0x10101448, 0x00642000, 0xc4010010, 0x80222800, 0x01004126, 0x28800008, 0x03080014, 0x00851100, 0x1010c000, 0x00082208, + 0x48020081, 0x24600042, 0x48850204, 0x01204100, 0x82008ca1, 0x00400400, 0x90008042, 0x011e1010, 0x04010281, 0x00280100, + 0x02800820, 0x3000200a, 0x4c548450, 0x80000002, 0x20082008, 0x00480000, 0x50144420, 0x08080004, 0x80200800, 0x0002802a, + 0x50100000, 0x01001000, 0x22816111, 0x80060008, 0x2000a082, 0x05080204, 0x40100440, 0x00040004, 0x2ae14101, 0x00000280, + 0x80428800, 0x05101422, 0x00000091, 0x10800100, 0x2a212a40, 0x04480028, 0x40100000, 0x10005440, 0x20840020, 0x08200000, + 0x800aa816, 0x00041008, 0x41100110, 0x10814281, 0x82008004, 0x00000000, 0x24082008, 0x10430442, 0x09001304, 0x40844800, + 0x00000083, 0x80020020, 0x12709140, 0x00a10211, 0x07040080, 0x6800ac08, 0x54581420, 0x00000000, 0x00004245, 0x08002028, + 0x00000000, 0x0454104c, 0x28002000, 0x00204820, 0x900a8018, 0x50001014, 0x01000002, 0x02150101, 0x00808200, 0x04004040, + 0xa148208a, 0x00800404, 0x00020080, 0x4a254801, 0x00400002, 0x00028120, 0x85100250, 0x10211821, 0x00800100, 0x22082680, + 0x40000008, 0x04401040, 0x08148600, 0x00084004, 0x90200090, 0x28020820, 0x0080b000, 0x01000100, 0x5011409e, 0x00080a00, + 0x22040001, 0x80022408, 0x04850001, 0x41008142, 0x0a604a04, 0x84008020, 0x00000000, 0x11123182, 0x00010270, 0x02400400, + 0x08a82081, 0x10400008, 0x60104040, 0x04040c00, 0x80001810, 0x04000004, 0x00444040, 0xd0109820, 0x08200080, 0x00082102, + 0x30001290, 0x0102040c, 0x46110001, 0x00800008, 0x00002002, 0x214c4400, 0x04028060, 0x00004004, 0xca050101, 0x80808212, + 0x300208c8, 0x05300100, 0x02211209, 0x00800080, 0x68406c00, 0x00080424, 0x00401050, 0x14004000, 0x0000000a, 0x40240020, + 0x0812a800, 0xa0001081, 0x05800110, 0x50190204, 0x000c200a, 0x20028000, 0x02004440, 0xc00540a4, 0x05400301, 0x02200010, + 0x00008808, 0x24000002, 0x99921550, 0x00014281, 0x00804008, 0x2a400800, 0x00483410, 0x14008040, 0x40304024, 0x00040808, + 0x14400040, 0x00140404, 0x08220000, 0x40000000, 0x00088a69, 0x00801002, 0xb1010014, 0x001460e1, 0x42082140, 0x00028202, + 0xa5000028, 0x40805004, 0x00400400, 0x0a2520b1, 0x80020012, 0x00008900, 0x15003600, 0x22f94100, 0x00002000, 0x00008ac5, + 0x00440000, 0x00000008, 0x5c1015e3, 0x8808480c, 0x00200100, 0x20422072, 0x00808000, 0x11000500, 0x021112b5, 0x00088040, + 0x60040828, 0x84427100, 0x50050000, 0x01004605, 0x02001822, 0x0ce28002, 0x80000090, 0x11000444, 0x22010001, 0x001013a4, + 0x08a00808, 0x54400010, 0x00182000, 0x000056c6, 0x0004a008, 0x80004000, 0x46708682, 0x08000008, 0x00202120, 0x140a0c00, + 0x00001012, 0x81118000, 0x30c40b05, 0x02400000, 0x200a6082, 0xcd208858, 0x00800201, 0x00040124, 0x42215488, 0x08100802, + 0x80028450, 0x05480004, 0x00201801, 0x10800180, 0xaa050222, 0x00003040, 0x04480004, 0x52130418, 0x802e2008, 0x01000822, + 0x2c804601, 0x10008000, 0x01140110, 0x42c152c1, 0x20000008, 0x08000000, 0x805a2516, 0x04a58240, 0x01100001, 0x7a086084, + 0x80409800, 0x00020422, 0x00080108, 0x00810041, 0x11100010, 0x6e2c8a82, 0x10440048, 0x00002100, 0x46024425, 0x0002303a, + 0x00000088, 0x4082cc02, 0x080c0024, 0x0120001a, 0x02c13dc1, 0xd0121011, 0x21018204, 0x0a2408e0, 0xa0004400, 0x00800040, + 0x115ab828, 0x02050105, 0x44004002, 0x30b80018, 0x18000002, 0x04029220, 0xc1540c90, 0x080909c0, 0x00802208, 0x22220005, + 0x14100444, 0x014041a0, 0xc0848212, 0x00002000, 0x20089120, 0x8a2109c1, 0x00160000, 0x4180121b, 0x1a210864, 0x04000000, + 0x000a60c8, 0x21609520, 0x00850a00, 0xc2000027, 0x00204090, 0x08001400, 0x00000012, 0xd506c000, 0x08310041, 0x00c82ba8, + 0x82020006, 0x30400000, 0x45000580, 0x809180d2, 0x282c4020, 0x40440004, 0x04820440, 0x88080818, 0x01228140, 0x07c12220, + 0x40015111, 0x188000a2, 0x24700004, 0x000c2040, 0x02400612, 0xa9228108, 0x42014211, 0x04000028, 0x189c1084, 0x04000000, + 0x80222854, 0x3158850a, 0x00804001, 0xa0081082, 0x4a236a20, 0x10005002, 0x01440048, 0x86830415, 0xc0302080, 0x00080242, + 0x2b410928, 0x12040000, 0x0081c4a5, 0x00721210, 0x00000000, 0x20480040, 0x4120291a, 0x80078804, 0x44a01489, 0x12106000, + 0x00100040, 0xd8409634, 0x200a2106, 0x02010000, 0x21808002, 0x44060aa9, 0x00208000, 0x0dc87044, 0xc2110610, 0x300ca000, + 0x021462c0, 0x46000600, 0x0820a008, 0x20020c60, 0x81000002, 0x00011014, 0x028802a1, 0x10100000, 0x20048102, 0x80483410, + 0x41024008, 0x42050021, 0x042028cc, 0x00804100, 0xb8128610, 0x00005006, 0x45400040, 0x08010a08, 0x2024a102, 0x02800081, + 0x10080120, 0x40044684, 0x04400040, 0x00181022, 0x25020048, 0x89a08810, 0x00041595, 0x16110820, 0x08006000, 0xa0002008, + 0x44808650, 0x01180100, 0x080300a3, 0x02442808, 0x40004204, 0x802a8002, 0x00d05054, 0x15040000, 0x082102a0, 0xa208810b, + 0x00800c00, 0x14003440, 0x40840285, 0x00520010, 0x2020200a, 0x02844244, 0x04600080, 0x28001010, 0xd44a8822, 0x01202100, + 0x50844211, 0x0a211000, 0x0010048c, 0x00000400, 0x34500000, 0x0108a00a, 0x42b34b81, 0x280c0060, 0x80000004, 0x0000a002, + 0x54144000, 0x81020004, 0x08282ce1, 0xa0820118, 0x02419200, 0x01404040, 0x42840404, 0x14101000, 0x00000030, 0x84620402, + 0x0c002900, 0x01988210, 0x0a251009, 0x30000000, 0x004ac488, 0x14102000, 0x69000104, 0x42010804, 0x28280061, 0xa004408a, + 0x04401010, 0x5006840a, 0x80800300, 0x288102c1, 0x811a0008, 0x02206800, 0x10404440, 0x42850024, 0x04001011, 0x00080800, + 0x50044002, 0x84401448, 0x00280000, 0x88028056, 0x21000920, 0x02111281, 0x18840838, 0x00002044, 0x2c400000, 0x10002058, + 0x510a4000, 0x0a010405, 0x4020002a, 0x8084c080, 0x10001040, 0x00028316, 0x81440800, 0x0a012400, 0x24980902, 0x802002a5, + 0x40000100, 0x02448248, 0x04000414, 0x20008000, 0x00201042, 0x99184920, 0x02052208, 0x00821031, 0x10100000, 0x80080c40, + 0x10425094, 0x7100210a, 0x08050000, 0x0000c018, 0x44000004, 0x80009000, 0x0270621d, 0x45820ca2, 0x20816004, 0x100803ce, + 0x82004001, 0x00004c20, 0x4c040001, 0x00f01050, 0x10080000, 0x424000c4, 0x20040c10, 0x00000200, 0x08328a22, 0x31007108, + 0x02091211, 0x10800400, 0xc0100004, 0x240c0480, 0x0040a000, 0x0102402a, 0x08010801, 0xe0240100, 0x108040c4, 0x10009002, + 0xc0102000, 0x23020634, 0x02c40081, 0x20080108, 0x0c212260, 0x00044140, 0xc0000a00, 0x04401610, 0x18182820, 0x00228004, + 0x81000108, 0x42010210, 0x08100083, 0x34001000, 0x0400400c, 0x28c80000, 0x81242102, 0x08030a04, 0x40200021, 0x0084e4c0, + 0x10029040, 0x00180012, 0x86400000, 0x00012c01, 0x03800308, 0x00048082, 0x04640000, 0x020800c4, 0x38104430, 0x08000001, + 0x44404080, 0x00088880, 0x000a8108, 0x0c300824, 0xa1003413, 0x02010111, 0x00840000, 0x10101284, 0x80080000, 0x60601000, + 0x0102e008, 0x42010471, 0x04244104, 0x00800a9a, 0x14009012, 0x08100008, 0x81420000, 0x20816008, 0x00080180, 0x02208661, + 0x18000042, 0x44000400, 0x00444813, 0x20020006, 0x04200d20, 0x09189280, 0x02055180, 0x10900010, 0x80002648, 0x04002049, + 0x204a0000, 0xc1001416, 0x08210000, 0x02002000, 0x4004c884, 0x10028060, 0x00501502, 0x84800201, 0x20810201, 0x01080180, + 0x02020818, 0x50400400, 0x04004100, 0x0830a074, 0x20820820, 0x40000040, 0x1c405410, 0x0800002a, 0x02202000, 0x211488c0, + 0x50110001, 0x00001014, 0x844e0820, 0x00400480, 0x2200e308, 0x098a1842, 0x56010101, 0x00000200, 0x88b47804, 0x10100020, + 0x04024402, 0x814081d0, 0x00081881, 0x00800200, 0xc2216000, 0x40500420, 0x00040108, 0x2c0110c4, 0x00004830, 0xa1200000, + 0x1980254b, 0x00800201, 0x00091004, 0x12528030, 0x00404000, 0x24062080, 0x50088828, 0x08010166, 0x02044480, 0xc0101209, + 0x90021402, 0x01108000, 0x24a40940, 0x20210810, 0x01000201, 0x02c020a8, 0x08404010, 0x040c1040, 0x40120686, 0x00000002, + 0x40100420, 0x928282d0, 0x20081800, 0x89020002, 0x05e126e5, 0x00815081, 0x10100308, 0x48248830, 0x2008204c, 0x02408400, + 0x05120812, 0x02254005, 0x80800200, 0x68080838, 0x80020100, 0x04509080, 0x41082006, 0x18810700, 0x0200a050, 0x202e888f, + 0x04000004, 0x11140140, 0x02c256a0, 0x20020000, 0x8c200810, 0x47498562, 0x00104010, 0x12810200, 0x08243068, 0xa0000080, + 0x40081419, 0x0550b834, 0x48074140, 0x02200004, 0x30880aab, 0x10000000, 0x80100000, 0x4142a046, 0x02010090, 0x00880500, + 0xec20b20f, 0x44100040, 0x01041520, 0x92410a85, 0x0822c000, 0x44440000, 0x10821410, 0xa02a000c, 0x01000820, 0x0dc14002, + 0x00010111, 0x00803600, 0x18748004, 0x00004080, 0xc208a448, 0x39721002, 0x04014101, 0x60a40224, 0x28081000, 0x00008042, + 0xc0101c10, 0x13060080, 0x2a000020, 0x04680180, 0x00832201, 0x00044858, 0x15501400, 0x40828001, 0x88000902, 0x002200a4, + 0x27c9a009, 0x12004104, 0x00911010, 0x48240200, 0x00080008, 0x00400002, 0x3130a481, 0x0c230100, 0xc20002a0, 0x201c6045, + 0x10108400, 0x00021012, 0xe0c40808, 0x00810a21, 0x03080180, 0x04222048, 0x00140404, 0x09409010, 0x76030040, 0x00084020, + 0x00000040, 0x64447010, 0x18182008, 0x00200824, 0x01020002, 0x70015015, 0x00000000, 0x80108080, 0x06008508, 0x20c02000, + 0x010e0340, 0x42010281, 0x00a04004, 0x98040822, 0x00008002, 0x10520000, 0xc1001000, 0x08010b60, 0x00800000, 0x262c0499, + 0x80001010, 0x44402440, 0x12150000, 0x0000200c, 0x09284020, 0x01028800, 0x00014100, 0xc2001002, 0x30d40e15, 0x0008000a, + 0x88000080, 0x2140a000, 0x44070381, 0x02000040, 0x10205424, 0x10000040, 0x04808402, 0x88424900, 0x00812a01, 0x61040090, + 0x02185008, 0x00501020, 0x04240000, 0x18000444, 0x00000810, 0x00184400, 0xd040004a, 0x0a021134, 0x22200000, 0x010c880a, + 0x90810001, 0x000420d0, 0x42101200, 0x00004004, 0x00020520, 0xa1082048, 0x06418026, 0x00200100, 0x40046000, 0x0cc00280, + 0x0002100b, 0x81108950, 0x18204480, 0x40806200, 0x02010809, 0x00184024, 0x00440002, 0x24000440, 0x00081010, 0x30200a00, + 0x4900802a, 0x40010010, 0x80002080, 0x10121201, 0x008c2000, 0x0202414c, 0xa5400000, 0x02a58002, 0x40004414, 0x00000221, + 0x84400192, 0x08001000, 0x10028800, 0x08110201, 0x01a00540, 0x220808a8, 0x80400040, 0x04002402, 0x50100010, 0x08805000, + 0x24600840, 0x40041018, 0x98100c60, 0x00200000, 0x01020086, 0x1201a821, 0x24981018, 0x00000300, 0x2000101c, 0x40444400, + 0x040820c2, 0x8002a02c, 0x41344000, 0x0a010311, 0x8080c094, 0x301a0002, 0x05000840, 0x00418082, 0x00800500, 0x22283309, + 0x0c0002a4, 0x00000c40, 0xc0444002, 0x08000452, 0x10301800, 0x010a8128, 0x00011820, 0x22102000, 0x94844211, 0x40001010, + 0x2008200c, 0x00408080, 0x8000200a, 0x05024104, 0x40250661, 0x00924084, 0x82088000, 0x18000802, 0x04419182, 0x01080641, + 0x2a802038, 0x044406c1, 0x80208800, 0x00000000, 0x1000cc50, 0x04000000, 0x50000200, 0x04400080, 0x08100000, 0x01200000, + 0x28210002, 0x00180000, 0xd0024100, 0x10100290, 0x000c0140, 0x22a00000, 0x200e0000, 0x89004000, 0x44410000, 0x50860000, + 0x82000000, 0x01200080, 0xa2d21014, 0x04000040, 0x00090000, 0x06e00280, 0x48000000, 0x10040000, 0x8c620408, 0x00100000, + 0x03080000, 0x08310010, 0x30400080, 0x00840050, 0x30100000, 0x44082020, 0x02400280, 0x20086040, 0xc0160002, 0x018104a0, + 0x40360060, 0x82002000, 0x18400448, 0xa6030800, 0x01880000, 0x00000500, 0x42840001, 0x08600020, 0x14000412, 0x04724080, + 0x40000840, 0x10042002, 0x00041004, 0x00280018, 0x00080000, 0x00020280, 0x00000400, 0x00000042, 0x04801000, 0x00000020, + 0x10005080, 0x20400000, 0x00000040, 0x20001c00, 0x00080000, 0x000a0100, 0x0000a600, 0x00000000, 0x0000000a, 0x00208200, + 0x20000000, 0x00406000, 0x000085a1, 0x40044000, 0x00200104, 0x04080000, 0x00024000, 0x00100000, 0x40000000, 0x32000000, + 0x00020411, 0x44201010, 0x00004000, 0x00001000, 0x00000800, 0x40040200, 0x00000000, 0x04400224, 0x00000108, 0x00000200, + 0x00200081, 0x20000000, 0x04400200, 0x00100000, 0x40042000, 0x00804000, 0x80828428, 0x80108052, 0x00005520, 0x00006f41, + 0x80400825, 0x04c0a008, 0x02001830, 0x90208004, 0x00000405, 0x04002a18, 0x0010842b, 0x0000a904, 0x0810224a, 0x040040a5, + 0x00001011, 0x0000480a, 0x00088060, 0x04002581, 0x90005136, 0x0000080d, 0x00000000, 0x80013a40, 0x00000852, 0x01508020, + 0x00403ec9, 0x00008327, 0x00000008, 0x0c20fd20, 0x00040246, 0x0800108c, 0x10100901, 0x00208002, 0x08000d0c, 0x2008a018, + 0x08000105, 0x10005093, 0x0000c000, 0x0800a002, 0x00001010, 0x0014d856, 0x180440ac, 0x00002140, 0x0a800a09, 0x04001446, + 0x082008c8, 0x06400420, 0x20428040, 0x55100010, 0x4f850920, 0x2821e001, 0x32080082, 0x08161002, 0x41105144, 0x61494285, + 0x0a850201, 0x882a2082, 0x80048044, 0x51424040, 0x53855391, 0x82b18a27, 0x6c240800, 0xb042a060, 0x01100010, 0x43c70200, + 0x08990808, 0x4f240000, 0x22820058, 0x90189000, 0x1c020830, 0x40810004, 0xaba56382, 0x00000028, 0x91081012, 0x00d04240, + 0x00090419, 0x2385a200, 0xa00a00a2, 0xc546a544, 0x10c00400, 0x060140c0, 0x03b02a82, 0xe02f4060, 0xa11a8400, 0x10c01610, + 0xc60310c0, 0x43090ab4, 0x01806021, 0xa0232440, 0x10080400, 0x284c0000, 0x00289004, 0x04502200, 0xc0320702, 0x29000000, + 0x0a2d0000, 0x80982800, 0x10060000, 0xc5900000, 0x73090010, 0x00813020, 0x200a8508, 0x08620800, 0xc5400400, 0x53050000, + 0x08b30000, 0x80000008, 0xac780400, 0x01c20044, 0x13010080, 0x4ab10004, 0x200c6c00, 0x00480000, 0x90542404, 0x10020000, + 0x4a301000, 0x09270809, 0xb2988000, 0x81020800, 0x14500004, 0x40810180, 0x210d0000, 0xa80a0008, 0x81420800, 0x40040200, + 0x52a50020, 0x09830000, 0x80000000, 0x81700000, 0x14420000, 0x12810000, 0x43990000, 0x04440008, 0x00281008, 0x90508010, + 0x00000004, 0x30000010, 0x00000088, 0x00045000, 0x00000000, 0x00020228, 0x00000004, 0x00000c38, 0x00008000, 0x00400d00, + 0x00000008, 0x90000000, 0x04800032, 0x00043000, 0x00000000, 0x00002080, 0x02000000, 0x00001002, 0x10000508, 0x0400c101, + 0x000012b1, 0x00000100, 0x04000020, 0x400040c1, 0x04080102, 0x00000081, 0x20000000, 0x00000000, 0x00000000, 0x0004b100, + 0x00004024, 0x02000800, 0x00000001, 0x00200002, 0x00006000, 0x0000110d, 0x02180011, 0x00008000, 0x04002800, 0x2020010b, + 0x00000100, 0x20000002, 0x00000800, 0x08008082, 0x04004000, 0x00004020, 0x06021002, 0x00008820, 0x10000006, 0x000024d1, + 0x44001100, 0x20000211, 0x082040c8, 0x00002004, 0x00000048, 0x00008412, 0x00044025, 0x02000300, 0x20080808, 0x00008082, + 0x00000000, 0x00045544, 0x40000289, 0x00000020, 0x80000812, 0x00002440, 0x08200004, 0x0202d212, 0x2000002a, 0x01000800, + 0x00002640, 0x0000d190, 0x00000201, 0x40000464, 0x02002408, 0x00000002, 0x08101050, 0x00804024, 0x04000100, 0x20009291, + 0x04409802, 0x00000440, 0x0004010c, 0x08002281, 0x00080010, 0x4000c82c, 0x08000440, 0x00000100, 0x00001205, 0x22004820, + 0x28040004, 0x80904cc2, 0x08220010, 0x11000128, 0xa2c91f81, 0x41102012, 0x10818281, 0x06405060, 0x20080040, 0x00440408, + 0x0d322004, 0x4aa50000, 0x00000900, 0x9010c087, 0x80020010, 0x00000622, 0x25588144, 0x02811001, 0x10200208, 0x680e4880, + 0x50446024, 0x05000000, 0x80911440, 0x08208830, 0xa0020000, 0x04c90483, 0x11104008, 0x02810304, 0x4c643470, 0x240800c0, + 0x80400409, 0x1122a030, 0x40054804, 0x00000120, 0x10b8121b, 0x8e100082, 0x10429440, 0x61002104, 0x22092010, 0x00800280, + 0x88060809, 0x00404040, 0x01240500, 0x84938027, 0x88200010, 0x54080420, 0x80909040, 0x80000202, 0x01022820, 0x2a690000, + 0x53148280, 0x00810411, 0x0860190c, 0x00402400, 0x00000048, 0xad0a4922, 0x00811800, 0x4024c004, 0x0a1822b9, 0x80001000, + 0x1000a000, 0x250e054a, 0x02496001, 0x20b002b0, 0xc0068804, 0x54000000, 0x0100c008, 0x8ad50443, 0x00021228, 0x08202100, + 0x02c90b54, 0x03804201, 0xb0018082, 0x40341814, 0x00400040, 0x0400200a, 0x281a0000, 0x8021c004, 0x01000520, 0x500c0881, + 0x90000010, 0x0a900642, 0x61068100, 0x06615008, 0x20082081, 0xc0824224, 0x04400046, 0x49000c00, 0x90911000, 0x0022c08a, + 0x40040000, 0x0652101c, 0x08002020, 0x80024800, 0x20a88048, 0x41945014, 0x10010102, 0x00000081, 0x06008000, 0x00080200, + 0xa1322448, 0x0a010b92, 0x40405004, 0x30240001, 0x10908400, 0x00000000, 0xc5421162, 0x22010080, 0x00a80010, 0x08002a23, + 0x10001010, 0x00040440, 0x0442008c, 0x80082000, 0x41224820, 0x0c100008, 0x61005000, 0x10850110, 0x0c508203, 0x2200800e, + 0x80420080, 0x00283440, 0x08010381, 0x05004000, 0x60140024, 0x86a28442, 0x00500808, 0x11081010, 0x02810800, 0x00080180, + 0x0804a221, 0x50441410, 0x24020048, 0x00304000, 0x20000820, 0x00000000, 0x50005444, 0x08080010, 0x00202020, 0xa4020802, + 0x00018108, 0x01140010, 0x16805285, 0x80002002, 0x20000008, 0x41488040, 0x16024000, 0x40040780, 0x08a10005, 0x80420002, + 0x00000c20, 0x05009150, 0x02b10201, 0x10000080, 0x28080808, 0x00004020, 0x04002100, 0x10441440, 0x28200034, 0x40180000, + 0x00008800, 0x00140008, 0x11822004, 0x82011193, 0x84022200, 0x20000008, 0x4008cc40, 0x52854000, 0x01000104, 0x00402203, + 0x006000a0, 0x08000040, 0x94129912, 0x00010080, 0x0b000000, 0x00a82e21, 0x14100048, 0x20000400, 0x42441200, 0x082a4014, + 0x00100440, 0x44045004, 0x00008008, 0x08000012, 0xb0282a20, 0x00150000, 0x11020000, 0x02005011, 0x00800208, 0x80002182, + 0x614a8044, 0x02840004, 0x4c000400, 0x00214a01, 0x80000120, 0x00101482, 0x05428150, 0x10010021, 0x00802200, 0x2a000082, + 0x00200400, 0x00488808, 0x44144050, 0x00000804, 0x00201008, 0x980a0020, 0x00802004, 0x3100c102, 0x00151091, 0x62000000, + 0x04002200, 0x000a844a, 0x00414804, 0x41000180, 0x80a40201, 0x8c002020, 0x00000000, 0x03429552, 0x02210000, 0x10900000, + 0x080022a9, 0x30480040, 0x04004402, 0x40101814, 0x00240000, 0x00000014, 0x4c204800, 0x10000820, 0x00000000, 0x8a3c1002, + 0x00111010, 0x1100a188, 0x62064005, 0x00802200, 0x00000008, 0x25481440, 0x00040020, 0x40004106, 0x88338001, 0x80800a10, + 0x00008082, 0x13120540, 0x00413889, 0x06804200, 0x28080000, 0x04108440, 0x00400020, 0x40244094, 0x00001a20, 0x10208000, + 0xa8082002, 0x00005080, 0x51020158, 0x00110204, 0x20000048, 0x00000001, 0x06cea000, 0x80014400, 0x03000100, 0x408402a7, + 0x90008812, 0x20000400, 0x09221100, 0x005142c9, 0x04800000, 0x22000800, 0x0048a444, 0x08000010, 0x44200021, 0x00244820, + 0x00100420, 0x42001a42, 0x08240000, 0x10006020, 0x20080854, 0xd0948000, 0x01430112, 0x0000500d, 0x22480ca2, 0x00002228, + 0x81020040, 0x44000004, 0x00000380, 0x0225e829, 0x80820000, 0x08000000, 0x1540d452, 0x02910200, 0x00000100, 0x00082889, + 0x14600000, 0x00000000, 0x28105571, 0x82240024, 0x48002900, 0x00088000, 0x14024042, 0x21900100, 0x0205109c, 0x00400200, + 0x20082009, 0x40028950, 0x00014400, 0x05000814, 0xca84020b, 0x84220002, 0x00008020, 0x11400094, 0x02b10000, 0x20041184, + 0x08084e4b, 0x00402040, 0x14000400, 0x4210c224, 0x08240080, 0x04000000, 0xc040c4d4, 0x00100002, 0x08042120, 0xb0280c89, + 0x00160000, 0x01010100, 0x108096d1, 0x02202004, 0x00000008, 0xe96a4852, 0x06a04101, 0x40040000, 0x00019614, 0x80009802, + 0x08080420, 0x155220cc, 0x22010911, 0x00240080, 0x88882224, 0x50001014, 0x84000008, 0x00514442, 0x08040020, 0x01200000, + 0x00482e8b, 0x80028010, 0x31005000, 0x02150f24, 0x20802000, 0x80000089, 0x486a1020, 0x40054506, 0x05008240, 0x00b010a0, + 0x82101842, 0x00000000, 0x0802a509, 0x32290020, 0x01c00280, 0x8c002011, 0x1440404c, 0x40000d00, 0x00920010, 0x00043000, + 0x00400004, 0x14868858, 0x28020002, 0x01008920, 0x04e92009, 0x00104305, 0x91010010, 0x4e041c40, 0x80020008, 0x0080a4c0, + 0x31581812, 0x06250901, 0x40004024, 0x30881288, 0x98508450, 0x00001000, 0x6106000a, 0x06090280, 0x00800128, 0x60226005, + 0x00041000, 0x01104494, 0x5cc28842, 0x20000020, 0x00288002, 0x0a8329c0, 0x80940200, 0x51001018, 0x0e610084, 0x040a200b, + 0x8000c040, 0x31500400, 0x02814100, 0x40040021, 0x3808320c, 0x80601010, 0x00028002, 0x411c4cc4, 0x22010201, 0x14200100, + 0x488240a0, 0x00580c40, 0x15004100, 0xc001a219, 0x800ca800, 0x060c0000, 0x90800440, 0x08380020, 0x81028016, 0x27c16cc8, + 0x10010001, 0x0a104284, 0x44401010, 0x80020100, 0x008c8042, 0x39202008, 0x00054401, 0x0c402320, 0x52900094, 0x80200002, + 0x10004c04, 0x415a9040, 0x0a800101, 0x2400209a, 0x40278a20, 0x00480010, 0x43100104, 0x94811441, 0x00240000, 0x80088100, + 0x0bc14a29, 0x20840214, 0x02034483, 0x1c703060, 0x600a0902, 0x80402410, 0x09201828, 0x0805c100, 0x0420006d, 0x52180080, + 0x80420042, 0x10003a10, 0x24988508, 0x08010020, 0x03a82889, 0x80048200, 0x00400000, 0x210000c4, 0xc4015412, 0x90302000, + 0x68046684, 0x00420042, 0xa8080898, 0x10208240, 0x01000120, 0x00112010, 0x08860023, 0x5a201080, 0x800ae022, 0x00401678, + 0x21000104, 0x461100a5, 0x00202808, 0x000c4000, 0x00c00200, 0x98129016, 0x01002544, 0x0a014828, 0x04088202, 0xa0a00081, + 0x00004500, 0x00503284, 0x14000040, 0xa0002018, 0x412e8460, 0x09000802, 0x04101500, 0x10014aa5, 0x00040010, 0x40c08000, + 0xa6001018, 0x01082000, 0x42014045, 0x00262ca8, 0x20800002, 0x00408300, 0xd8125044, 0x05000002, 0x008109a8, 0x2008a216, + 0x42000401, 0x00100004, 0x0c601681, 0x00040040, 0x0a082090, 0x02d04414, 0x14000240, 0x2a000020, 0xc4468008, 0x01200802, + 0x40840211, 0x18214184, 0x00183000, 0x00002008, 0x16528040, 0xa1080400, 0x02810803, 0x682c0020, 0x00006284, 0x00021000, + 0x40540512, 0x81008140, 0x0e012001, 0x80aa0280, 0x10000002, 0x11100810, 0x62840008, 0x04400660, 0x00080080, 0xa442802a, + 0x08207804, 0x51000210, 0x08b54001, 0x02001184, 0x0000040a, 0x101aa040, 0xa5000010, 0x00214800, 0x68480121, 0x00040214, + 0x04001082, 0x42140000, 0x90c28500, 0x6a252020, 0x810a0090, 0x00800241, 0x0400581a, 0x52950440, 0x00400004, 0x00002000, + 0x42405004, 0x04008c60, 0x08080000, 0x00028802, 0x11200128, 0x22111205, 0x108048a0, 0xc0042010, 0x84080400, 0x30403010, + 0x0100000a, 0x0a058a45, 0x00220008, 0x40804080, 0x30408100, 0x20100046, 0x85063020, 0x02096700, 0x0880809a, 0x00200001, + 0x00004004, 0x00060030, 0x34401c40, 0x02100000, 0x40288c00, 0x8900212a, 0x00050080, 0x10821021, 0x22104010, 0x24020044, + 0x80400212, 0x51182008, 0x02010204, 0x40200009, 0x0004c4a0, 0x80400000, 0x00104d14, 0x0982c046, 0x06010300, 0x18800028, + 0x000a1881, 0x00704040, 0x74060084, 0x00802400, 0x000a0008, 0x44000004, 0x00000450, 0x18322220, 0x84040080, 0x01084d08, + 0x00010013, 0x14800000, 0x6850d204, 0x00402408, 0x00048040, 0x272a0082, 0x80211b01, 0x40040020, 0x20006084, 0x94801002, + 0x08120010, 0x03008000, 0x22800701, 0x00080080, 0x00450060, 0x04645c0a, 0x48002000, 0x90000051, 0x00020084, 0x08008020, + 0x8330090a, 0x22014410, 0x08183081, 0x10040204, 0x440a0008, 0x20e00040, 0x01002100, 0x40054000, 0x00a08423, 0x8810028c, + 0x10101042, 0x00000000, 0x82028d00, 0x60012210, 0x01040088, 0x06c00801, 0x18005022, 0x462c0040, 0x00400410, 0x00302005, + 0x00004440, 0x54000012, 0x282c00a0, 0x82020040, 0x0100190a, 0x02010211, 0x0080c404, 0x50103080, 0x84040400, 0x00002028, + 0x21088002, 0x40010015, 0x02460040, 0x08804aa8, 0x90501000, 0x44220102, 0x01008110, 0x02810000, 0x28080280, 0x0020c469, + 0x40401004, 0x04042940, 0x10000400, 0x00008800, 0x081a4562, 0x812021d8, 0x06050280, 0x08901000, 0x70000851, 0x280a0020, + 0x80402008, 0x01005816, 0x00054100, 0x00200045, 0x44008e90, 0x10401060, 0x48908000, 0x86020512, 0x22090008, 0x01204082, + 0x00800221, 0x00146040, 0x04000402, 0x4a409814, 0x10280002, 0x02241020, 0x9e006040, 0x280a8002, 0xc4000900, 0x05202275, + 0x10011101, 0x00800084, 0x40104878, 0x2002000a, 0x02000000, 0x095caa40, 0x040500a1, 0x40202104, 0x88905e10, 0x80408000, + 0x00100440, 0x5302100e, 0x04000319, 0x02802000, 0x082100a4, 0x04080400, 0x00501810, 0x7000c242, 0x0204000c, 0x81020800, + 0x29208223, 0x00002000, 0x10110011, 0x02085704, 0xe0002080, 0x00808000, 0x010c012a, 0x00010e41, 0x48600080, 0x24067004, + 0x90480020, 0x00100002, 0x0682a048, 0x28010cb0, 0x03088300, 0x0080b00d, 0x80000004, 0x04441140, 0x40220680, 0x00280800, + 0x0400008c, 0x00d21652, 0x30280800, 0x81028020, 0x09c10281, 0x00950089, 0x08007312, 0x10200824, 0x00002000, 0x424a8400, + 0xb1001018, 0x00810041, 0x0420210a, 0x5a0c580c, 0x00100092, 0x10029060, 0xa50c4604, 0x08692080, 0x00800100, 0xe202422b, + 0x50500000, 0x01040490, 0x04830840, 0x00201022, 0x080ae008, 0xa1c108c5, 0x42001111, 0x00950200, 0x146048c0, 0x0000004c, + 0x04480402, 0xb9123110, 0x00210205, 0x00044800, 0x52009018, 0x000004b2, 0x80901000, 0x294ea044, 0x02810300, 0x00080000, + 0x7c222083, 0x00500410, 0x01045128, 0xd4810a41, 0x80028000, 0x50441030, 0x8290c4c0, 0xa0080004, 0x09220020, 0x05412840, + 0x00018481, 0x10900510, 0x0024100a, 0x00480004, 0x6200604a, 0x89100b20, 0x44230881, 0x00048020, 0x28884404, 0x02020000, + 0x80101642, 0x71048100, 0x22400a01, 0x00000090, 0xc4818024, 0x18242400, 0x05001140, 0xc2d8c00b, 0x8802082c, 0x00288100, + 0x27410712, 0x10901001, 0x02010080, 0x08206030, 0x004e2000, 0x20008008, 0xc9100346, 0x4c054e21, 0x00a00084, 0x22182000, + 0x14108002, 0x00001000, 0xe0464148, 0x00090c30, 0x09800084, 0xc220c209, 0x04142044, 0x01801400, 0xe2c14080, 0x18000000, + 0x100c1400, 0x00124044, 0x20082100, 0x08028020, 0x81200800, 0x00114007, 0x10000118, 0x02001080, 0x00402000, 0x40860240, + 0xa128000a, 0x18a54021, 0x40000680, 0x16008004, 0x94102412, 0x00000140, 0x01028900, 0x00611880, 0x08800200, 0x22002001, + 0x10001028, 0x00000000, 0x444d0650, 0x20122820, 0x0120c004, 0x89880000, 0x00011005, 0x1080000a, 0x02504190, 0x24068002, + 0x00002228, 0xc1680500, 0x400140a0, 0x10800204, 0x0a240041, 0x80000040, 0x00000c10, 0x104a8002, 0x06310120, 0x21000080, + 0x088e3a01, 0x40501040, 0x0400040e, 0x10000010, 0x88204008, 0x40342844, 0x04000000, 0x28001010, 0x10080800, 0x83206020, + 0x00939009, 0x10400100, 0x4c0040d6, 0x00060048, 0x00000000, 0x23482200, 0x80050000, 0x4020c106, 0x060004b0, 0x8c808200, + 0x00400011, 0x01023d0a, 0x1a100048, 0x00800000, 0x00210aa1, 0x040a0040, 0x00100404, 0x20406080, 0x000e0000, 0x50201810, + 0x09000022, 0x02052209, 0x50008010, 0xa0101404, 0x20804000, 0x00000980, 0x05082008, 0x00038064, 0x80404802, 0x40a40501, + 0x80400080, 0x0c009202, 0x12120040, 0x08810480, 0x03000118, 0x00000201, 0x00402c00, 0x44080020, 0x30248044, 0x00200810, + 0x04200400, 0x00140048, 0x10208c70, 0x40021000, 0xa9886004, 0x10811839, 0x00000100, 0x42100402, 0x20441018, 0x00006044, + 0x00080280, 0x8820e40e, 0x41160100, 0x04011020, 0x9290c286, 0x000a0011, 0x05000800, 0x0001838a, 0x024c0440, 0x28801125, + 0x00600280, 0x04020c40, 0x4004e004, 0x10020640, 0x08109810, 0xa12000a2, 0x00813828, 0x10180090, 0x06004004, 0x40003010, + 0x20040100, 0x9048024b, 0x00062c38, 0x4500c004, 0x02210000, 0x00804184, 0x00008203, 0x98420140, 0x0011b603, 0x05800000, + 0x22080090, 0x042402a1, 0x08000800, 0x4042c448, 0x10201450, 0x80602010, 0x301c0000, 0x44400000, 0x08200040, 0x85000040, + 0x08210200, 0x200a0000, 0x12140000, 0x70180010, 0x00000020, 0x80800008, 0x20080000, 0x01060080, 0x46410000, 0x40860000, + 0x80000000, 0x09286000, 0x80820080, 0x06480c00, 0x30110300, 0x06e00000, 0x08040002, 0x40000000, 0x14620480, 0x08100000, + 0xa1000001, 0x18312460, 0x00880004, 0x42000000, 0x14100080, 0x200c0000, 0x88400000, 0x200800c8, 0x00060800, 0x42214000, + 0x41141208, 0x80820000, 0x18400004, 0xa4034200, 0x03800140, 0x00280000, 0x02800080, 0x08000000, 0x14404042, 0x0c400400, + 0x04400000, 0x10000080, 0x2000e002, 0x00200200, 0x00080090, 0x00024000, 0x00008000, 0x00041020, 0x10000100, 0x00080004, + 0x84020900, 0x00400000, 0x00008482, 0x00000208, 0x04200000, 0x80000214, 0x00008004, 0x10102000, 0x00800100, 0x80008080, + 0x02080000, 0x00002000, 0x00000101, 0x40808000, 0x00000104, 0x00004010, 0x04000080, 0x84000000, 0x00000420, 0x10000300, + 0x00020400, 0x00002201, 0x0a402000, 0x00000000, 0x00008100, 0x00002801, 0x00000029, 0x00002000, 0x00000800, 0x0a20008c, + 0x00204200, 0x02088000, 0x90001220, 0x02000000, 0x04000000, 0x00800c80, 0x0002926a, 0x00080010, 0x00400504, 0x02801d2d, + 0x00402881, 0x04e0002a, 0x0200a854, 0x00805042, 0x00004681, 0x0a003011, 0x0020a222, 0x80184848, 0x08002554, 0x0004d921, + 0x02000003, 0x00000428, 0x0020104a, 0x04000050, 0x00005013, 0x20044aa9, 0xc0200024, 0x20012c58, 0x02041042, 0x03005000, + 0x00440a28, 0x40008b00, 0x00a2200b, 0x00089854, 0x06005052, 0x00244105, 0x00001828, 0x00028022, 0x00080402, 0x04041414, + 0x080440c0, 0x10008116, 0x008800e0, 0x00128402, 0x14043410, 0x80001103, 0x0000083d, 0x00002100, 0x00002e91, 0x000a8006, + 0x28009012, 0x02a04004, 0x84160820, 0x51000288, 0x69158002, 0x08011010, 0xa2080444, 0x18320080, 0xc1502008, 0x41018822, + 0x30b50040, 0x0c004004, 0x20041090, 0x714a0020, 0x53818002, 0x00112048, 0x60860110, 0xac480280, 0x01424024, 0x53170008, + 0x08a10440, 0x01008012, 0x0c420004, 0x14580820, 0x98222089, 0x00918002, 0x2b091010, 0x20100444, 0x99600081, 0x40542008, + 0x40818822, 0x31990040, 0xa4004004, 0x01201091, 0xf05a0020, 0x42a18002, 0x03112048, 0xe0060110, 0xa5400281, 0x00484024, + 0x40930008, 0x49810440, 0x29048012, 0x24e30004, 0x90140820, 0x0a4c4808, 0x20201400, 0x80480404, 0x48124810, 0x41201028, + 0x282da021, 0x829a0082, 0x10000010, 0x8d564414, 0x43814041, 0x000d0105, 0xa0aa8212, 0x0840004e, 0x41428040, 0x5b955080, + 0x02238013, 0x80a00a00, 0xa042b442, 0x01580000, 0x1b910491, 0x02a90081, 0x24240004, 0x00480010, 0x14500040, 0x18161830, + 0x40204100, 0x09250a04, 0x80821010, 0x011ca102, 0x50124010, 0x42c10401, 0x210d2905, 0xa08a828a, 0x05408500, 0x40464204, + 0x42a14481, 0x1b050005, 0x80820a20, 0x8572b012, 0x00480000, 0x02810c81, 0x03b940ac, 0x00002000, 0x04688400, 0x80502050, + 0x20102224, 0x00000040, 0x10000208, 0x00048100, 0x10000100, 0x00004000, 0x00001400, 0x00000000, 0x10000100, 0x00000088, + 0x22000000, 0x10003000, 0x04000400, 0x00040900, 0x00000420, 0x04000080, 0x00000000, 0x00000008, 0x00000000, 0x00002340, + 0x00008028, 0x00004200, 0x20001c20, 0x4000000a, 0x00088004, 0x20000000, 0x00000000, 0x00008027, 0x80000008, 0x040002c0, + 0x00005000, 0x12000000, 0x00000020, 0x88200042, 0x20000000, 0x00100010, 0x00000000, 0x00000002, 0x08000508, 0x00000000, + 0x00001200, 0x00000000, 0x00040020, 0x00001800, 0x30000000, 0x00008010, 0x04802090, 0x04000042, 0x00000200, 0x00000084, + 0x00000040, 0x20000a48, 0x0000a020, 0x40001002, 0x00002200, 0x081008a0, 0x00000020, 0x80000000, 0x04084808, 0x00000301, + 0x00000004, 0x08000024, 0x00000000, 0x14000110, 0x80040004, 0x00000802, 0x48001000, 0x020022c1, 0x00000400, 0x81004100, + 0x00002000, 0x000000c8, 0x20000000, 0x16200820, 0x00000000, 0x00000000, 0x00001038, 0x00002000, 0x00001800, 0x00000048, + 0x00000100, 0x040098a0, 0x00000004, 0x00000040, 0x30004000, 0x00020114, 0x1c000242, 0x68000041, 0x02000082, 0x00000200, + 0x44004408, 0x92121056, 0x80208820, 0x09062002, 0x06c90409, 0x51140000, 0x22815001, 0x04600894, 0x20482148, 0x80008200, + 0x01220002, 0x40250c05, 0x04004100, 0x3a9032b0, 0x80008002, 0x10120000, 0x654c6558, 0x02891881, 0x20002200, 0x48024000, + 0x0410045c, 0x51600120, 0x8083d002, 0x08200020, 0x00060802, 0x86c92689, 0x13141000, 0x00010091, 0x68c0c544, 0x20080008, + 0x04002600, 0x89308042, 0x40074000, 0x00e00125, 0x12182a10, 0x8c129002, 0x10000090, 0x610c6148, 0x02c90280, 0x00000409, + 0xe824a800, 0x40440440, 0x05000120, 0x90931011, 0x00204000, 0x40000400, 0x90500090, 0x0802500a, 0x81200904, 0x02892021, + 0x43000090, 0x10110001, 0x28e09060, 0x04040608, 0x20002100, 0x913a4946, 0x4805c020, 0x00400000, 0x20980005, 0x10108000, + 0x80201a00, 0x674e649e, 0x20010309, 0x00200000, 0x828e40c6, 0x00144830, 0x55002004, 0x884314c0, 0x80028000, 0x08200820, + 0x068920c1, 0x31140090, 0x4281010b, 0x00605604, 0x20400440, 0x00000000, 0x9408a01a, 0x08270004, 0x01000101, 0x42184080, + 0x10100210, 0x00020c00, 0xe1c4a166, 0x20012008, 0x00a81281, 0x0e020002, 0x04000c24, 0x41045100, 0x90c10050, 0x08120020, + 0x40001040, 0x04d6820a, 0x00000000, 0x00000082, 0xa86a8978, 0x41801200, 0x00114011, 0x16002004, 0x00400008, 0x840480a0, + 0x29083052, 0x48050120, 0x00224404, 0x12801091, 0x00029818, 0x90000002, 0x01000640, 0x00012001, 0x60d80100, 0x06200a80, + 0x40400000, 0x0800800a, 0x16845565, 0x00000b02, 0x011a8018, 0x08600020, 0x11840385, 0xa2110010, 0x00007840, 0x4c000000, + 0x20600000, 0x881aa02a, 0x00050c20, 0x41800141, 0x3a007014, 0x04000008, 0x002290c2, 0x81580318, 0x00014401, 0x70880080, + 0x8a040204, 0x0020c400, 0x04561868, 0x5200a092, 0x20008a02, 0x08140010, 0x52404440, 0x00282824, 0x08000208, 0x04000400, + 0x42114014, 0x01008002, 0xb0861481, 0x800a8102, 0x20002200, 0x05000048, 0x40810600, 0x00000004, 0x02446181, 0x00400000, + 0x8c008800, 0x11321072, 0x00210420, 0x00800988, 0x2a088201, 0x50000010, 0x00402440, 0x04145000, 0x20282008, 0x08000204, + 0x80000c20, 0x50000000, 0x01129112, 0x06854005, 0x8002a00a, 0x00080200, 0x24401980, 0x00814285, 0x01040040, 0x42000400, + 0x0c228c40, 0x00000002, 0x90101130, 0x02210820, 0x01004201, 0x28c02088, 0x44581040, 0x00000000, 0x00044414, 0x08002001, + 0x00401c00, 0x54200008, 0x00040014, 0x20004800, 0x88282028, 0x40010080, 0x0112d012, 0x10800905, 0x00000008, 0x82000000, + 0x210e2642, 0x4205c100, 0x04400200, 0x00a00085, 0x00008800, 0x08000400, 0x81420162, 0x06011291, 0x30202000, 0x08980028, + 0x00100400, 0x40000010, 0x04405844, 0x10000800, 0x00240020, 0x880aa002, 0x10100010, 0x01000000, 0x628150ad, 0x20000040, + 0x00000100, 0x804ca20a, 0x40070420, 0x01804105, 0x04000800, 0x04200202, 0x08028000, 0x835001c0, 0x10011080, 0x02800401, + 0x28202a38, 0x00080400, 0x00004040, 0x54440010, 0x00080020, 0x00402400, 0x54040008, 0x00020004, 0x00200800, 0x88104020, + 0x60011000, 0x01102002, 0x1288839d, 0x00446000, 0x00000008, 0x210a0142, 0x48050000, 0x0010c420, 0x86000085, 0x00100800, + 0x10202200, 0x85829142, 0x20010201, 0x02000400, 0x00c86090, 0x04200020, 0x00100000, 0x08441c5c, 0x48000200, 0x10222820, + 0xa0804008, 0x10100010, 0x01008102, 0x42895085, 0x00040200, 0x20200008, 0x8048a440, 0x40050902, 0x01020281, 0x0420400c, + 0x00800000, 0x28020020, 0x83508102, 0x00010400, 0x108018c1, 0x2e082218, 0x00000020, 0x44200400, 0x00440050, 0x10103028, + 0x04004800, 0x50200050, 0x20208924, 0x08000000, 0x80083408, 0x40031012, 0x11000000, 0x02100305, 0x04882088, 0xa0004020, + 0x01060002, 0x40610804, 0x00044540, 0x028082a1, 0x88008002, 0x00020000, 0x15401400, 0x22910081, 0x00000304, 0x08002070, + 0x043c0448, 0x50400010, 0x00000801, 0x08204826, 0x20001000, 0x8408a088, 0x00921280, 0x11000110, 0x42010045, 0x20040800, + 0x00406000, 0x8408000a, 0x00074000, 0x41200445, 0x02008220, 0x88908882, 0x10020100, 0x41401504, 0x0a810091, 0x04040200, + 0x20200860, 0x40482008, 0x04000400, 0x10004351, 0x002e0804, 0x00429440, 0xd2200894, 0x88044000, 0x00300800, 0x048a20ea, + 0x50051000, 0x01104100, 0x2a2080b5, 0x00c00408, 0x80000200, 0x390a2852, 0x44014800, 0x00000110, 0x22a4928d, 0x1002a420, + 0x88000000, 0x0558110e, 0x00090218, 0x00000020, 0x2a8480c3, 0x00502000, 0x90000000, 0x04a61c46, 0x80004010, 0x41000000, + 0x0828aa28, 0x00060292, 0x01100400, 0x7a815101, 0x00400000, 0x200a0008, 0x8c00a406, 0x40251004, 0x01800901, 0x10105250, + 0x18000020, 0x04000080, 0x824ae042, 0x20193310, 0x018004a1, 0x4a200804, 0x04000444, 0x0040000a, 0x5006c010, 0x08000000, + 0x00000010, 0x44d44602, 0x00000000, 0x0128080c, 0xaa412321, 0x40111206, 0x01068010, 0x16c04c41, 0x20020408, 0x00002082, + 0x81789000, 0x40050281, 0x06004140, 0x18280004, 0x00408860, 0x80000400, 0x61865012, 0x10110101, 0x24000000, 0xc2a20a88, + 0x50081000, 0x05002104, 0x0a4184f0, 0x000e4000, 0x08302920, 0x82410443, 0x10044004, 0x21008108, 0x06711030, 0x80882208, + 0x40000081, 0x31528c30, 0x02050142, 0x04000004, 0x60a86081, 0x00020420, 0x08000a00, 0x8554910a, 0x10090050, 0x08800081, + 0xa222ea02, 0x00040010, 0x55000040, 0x82d154ac, 0x20002020, 0x50040004, 0x84529002, 0x00002800, 0x0108c102, 0x8de105b1, + 0x50010009, 0x22861090, 0x04504000, 0x0002020e, 0x00082000, 0x21200000, 0xc085ca01, 0x08400404, 0x36302050, 0x80028100, + 0x101000b6, 0x650c4004, 0x08c10340, 0x20001400, 0x42204883, 0x14004008, 0x035c2194, 0x80838462, 0xa0000000, 0x0020a020, + 0x4f811881, 0x40180308, 0x10030013, 0x0a401040, 0x80c0200c, 0x240c0480, 0x01325000, 0x48010900, 0x22240042, 0x1090c21d, + 0x00129080, 0x80000022, 0x6008641c, 0x000100a9, 0x1dc02300, 0xe2208840, 0x00040450, 0x45080104, 0x90539201, 0x00004820, + 0x50404640, 0x06800210, 0x20340080, 0x880aa20a, 0x01000824, 0x40011041, 0x10940044, 0x08004610, 0x040a01a2, 0x22400440, + 0x9910a808, 0x40010281, 0x02201820, 0x008c4104, 0x00401040, 0x9802c414, 0x0100010a, 0x04010001, 0x20b02000, 0x8a0402a0, + 0x10485010, 0x04040484, 0x00100a49, 0x02200820, 0x61022000, 0x09000108, 0x400c4002, 0x82810091, 0x14309804, 0xa00a0200, + 0x0400a40a, 0x01000040, 0x0a010000, 0x40600a28, 0x00844085, 0xa0000500, 0x00129014, 0x15000102, 0x20e10000, 0x080840c9, + 0x02022200, 0x00400010, 0x540040e0, 0x02141c06, 0x00002000, 0x42900284, 0x34000440, 0x08080008, 0xa4628c42, 0x01001030, + 0x40154110, 0x0aa00aa1, 0x10003004, 0x20002000, 0x94529458, 0x01080130, 0x40010087, 0x2a8c6028, 0x00000a08, 0x04100442, + 0x40245014, 0x81028000, 0x00010000, 0x980aa30a, 0x02c00881, 0x01169500, 0x62804284, 0x04600070, 0x00002080, 0x94488f4a, + 0x08220120, 0x11004004, 0x4ab10a31, 0x20001080, 0x00048020, 0x14521850, 0xa9082508, 0x02050201, 0x28283888, 0x40004026, + 0x00c00042, 0x50044014, 0x84028000, 0x00010b00, 0xa93ea42a, 0x02801085, 0x10101010, 0x06c54685, 0x000000c0, 0x00228000, + 0x600440c4, 0x00502010, 0x00200000, 0x80028002, 0x3b003920, 0x42090209, 0x00941094, 0x10204000, 0x00020c0a, 0x00402040, + 0xa5088000, 0x48055281, 0x00200000, 0x02800004, 0x10429140, 0x80002000, 0x05000922, 0x00010211, 0x0218000c, 0x00a02ca0, + 0x10405400, 0x22040004, 0x0c000050, 0x00300800, 0x44008022, 0x09400400, 0xd205504c, 0x00922011, 0x20080680, 0xa0002000, + 0x00408162, 0x110a0008, 0x4a050010, 0x00002200, 0x04a86505, 0x14001082, 0x00120850, 0x81048120, 0x20012008, 0x08c00003, + 0x022006a0, 0x04000c56, 0x100c0000, 0x00d01000, 0x08000800, 0x40044004, 0x80208450, 0x9a129000, 0x04200040, 0x21080820, + 0x42811209, 0x10002980, 0x00504012, 0x0000a402, 0x00081058, 0x21441804, 0xca130901, 0x20006028, 0x0484008c, 0x90000200, + 0x04600000, 0x2102810a, 0x08013648, 0x02108000, 0x20a480b1, 0x40000d40, 0x000c0214, 0x04408200, 0x10324028, 0x08008d42, + 0x01401100, 0x801d3280, 0x00a04021, 0x70000010, 0x04200406, 0x22081058, 0x01002800, 0x88a10124, 0x02008008, 0x40464a81, + 0x90021000, 0x00100014, 0x04008442, 0x28890100, 0x01400881, 0x02002220, 0x44200010, 0x0004068c, 0x004052c0, 0x18200000, + 0x500c1444, 0x04100028, 0x08000000, 0x80024d02, 0x2120a528, 0x42090201, 0x10041094, 0x04904400, 0x0c42040a, 0x20082000, + 0x81000020, 0x48210161, 0x00004000, 0x20848804, 0x8000b2c0, 0x02000010, 0x05126102, 0x20290201, 0x02404808, 0x90800480, + 0x14005110, 0x40060604, 0x08502060, 0x00000080, 0x00222222, 0x89008900, 0x00950000, 0x00000091, 0x32081208, 0xe4000c00, + 0x00082040, 0x0142502e, 0x08010100, 0x02000020, 0x4084c085, 0x80020600, 0x00700010, 0x0500f902, 0x00810020, 0x080c0001, + 0x12200ac8, 0x04000000, 0x50101600, 0x20402040, 0x00204008, 0x400600c0, 0x0c100420, 0x08000022, 0x002a4880, 0x31803010, + 0x44019141, 0x80800034, 0x10144088, 0x00000c00, 0x20600208, 0x8f08a010, 0x40010001, 0x00245808, 0x00820046, 0x08400020, + 0x00108300, 0x930215d2, 0x00010a00, 0x00088004, 0x26a000a1, 0x08042408, 0x80001100, 0x44c00057, 0x02000002, 0x81202420, + 0x19184900, 0x50008200, 0x08130000, 0x200014dc, 0x00800020, 0x20402002, 0x073e4009, 0x08250000, 0x00007450, 0xe29080a5, + 0x00002000, 0x0002c108, 0x94081b12, 0x20890208, 0x0110a081, 0xc2400c60, 0x4040c000, 0x04040440, 0x0a309006, 0x00200002, + 0x40180010, 0x00c002c6, 0x10280000, 0xa1020000, 0x0b411a2b, 0x40112001, 0x10001004, 0x00a482f0, 0x20006100, 0x86480412, + 0x11028048, 0x40850981, 0x02200004, 0x18184230, 0x84108000, 0x00020400, 0x510c1016, 0x0a2100c1, 0x00c82100, 0x40020202, + 0x00401020, 0x25040040, 0x50114c0c, 0x00280000, 0x88028808, 0x278104f1, 0x42000000, 0x00815013, 0x1c542080, 0x8048a004, + 0x0002034a, 0x39000510, 0x44050285, 0x00000800, 0x18084028, 0x82d01002, 0x10000040, 0x61268414, 0x02810100, 0x00080209, + 0x04224086, 0x00001454, 0x01102900, 0xbcc34021, 0x48028800, 0x44444424, 0x82a01208, 0x90128810, 0x2d000102, 0x03e10469, + 0x50890011, 0x00104a04, 0x0e2438a0, 0x004a0008, 0x80002112, 0x3d309070, 0x40a14025, 0x20000000, 0x200c2508, 0x08420a80, + 0x92100000, 0x410cd012, 0x20092148, 0x02800280, 0x84028403, 0x44001060, 0x01440d00, 0x9ab14006, 0x880a8820, 0x00002102, + 0x23e106d1, 0x02905091, 0x10210200, 0x08640928, 0xa0000048, 0x00489404, 0x59102030, 0x06030a20, 0x40000105, 0x281c408a, + 0x10820040, 0xc0201002, 0x6014e018, 0x04412080, 0x03000101, 0xa0a68e02, 0x040c0000, 0x01004100, 0xcac104eb, 0x10001020, + 0x08000404, 0x10569002, 0x00080000, 0x00004032, 0x09200808, 0x60816091, 0x82100044, 0x10029100, 0x00000248, 0xa0002002, + 0x010c8000, 0x48c500a1, 0x02024000, 0x14201414, 0x04000910, 0x80000600, 0x1112910a, 0x0a290241, 0x00440008, 0x60806884, + 0x00101020, 0x00024400, 0x044482c1, 0x2020a018, 0x91000020, 0x49080806, 0x10911290, 0x00024101, 0x40040000, 0xa2408000, + 0x00000002, 0x012a354c, 0x000500a0, 0x00004011, 0x44000004, 0x06d01410, 0x08028200, 0x80280906, 0x00010000, 0x038802c1, + 0x50200804, 0x2c041410, 0x4012406c, 0x00402000, 0x88000020, 0x10000c08, 0x20404000, 0x20002084, 0x00048202, 0x892a0820, + 0x4681001d, 0x00101000, 0x10000400, 0x8004000a, 0x00002140, 0x21484b80, 0x4407c281, 0x02000000, 0x00000424, 0x08808400, + 0xa0500800, 0x15222002, 0x08010841, 0x00201130, 0x02880288, 0x20403010, 0x10004000, 0x04000440, 0x40208000, 0x28080024, + 0x05140800, 0x1017101e, 0x00004001, 0x82802440, 0x00020402, 0x20400188, 0xc1082300, 0x04058040, 0x40804800, 0x10003024, + 0x02200283, 0x14028000, 0x88400000, 0x08210800, 0x01804581, 0x02183250, 0x10000410, 0x04000040, 0x20504028, 0x880c2228, + 0x28202800, 0x04040040, 0x08321834, 0x10000002, 0x0100e088, 0x00011081, 0xa0c80010, 0x50140104, 0x24006240, 0x02080008, + 0x00008000, 0xc0020426, 0x01000000, 0x00f54100, 0x8a000a80, 0x00008001, 0x15521006, 0x00890100, 0x020006c0, 0x28000031, + 0x00000444, 0x00606808, 0x14041010, 0x88108820, 0x40000000, 0x01200000, 0x30010080, 0x041a2309, 0x42041012, 0x00c06008, + 0x00080844, 0x20000402, 0x40028000, 0x81200104, 0x04054001, 0x00920a80, 0x0a000002, 0x94008530, 0x02410240, 0x01082001, + 0x008018a8, 0x28040000, 0x00608000, 0x04000444, 0x80200810, 0x08400020, 0x1004b040, 0x04720c40, 0x08000032, 0x0180c00c, + 0x282128a1, 0x12081010, 0xc4140000, 0x10187010, 0x0800012c, 0x20a08e40, 0xe008600c, 0x05060802, 0x00510001, 0x80044104, + 0x02a20282, 0x19108120, 0x808b8643, 0x0640008c, 0x20001110, 0x02e00ee4, 0x0c004000, 0x10162000, 0x84608c50, 0x08021000, + 0x610001a0, 0x08210820, 0x12183008, 0x00040052, 0x10503014, 0x60084048, 0x00800681, 0x600a2008, 0x8004c102, 0x04210004, + 0x4b844097, 0x80009200, 0x00020c20, 0xb6938383, 0x01484040, 0x00002004, 0x02800aa1, 0x4864044a, 0x04000004, 0x8c501c40, + 0x00400080, 0x80840010, 0x04040000, 0x08000000, 0x00002180, 0x02000226, 0x00100000, 0x00040140, 0x08000000, 0x00000300, + 0x00020000, 0x04800400, 0x00004000, 0x00000008, 0x00020214, 0x00400100, 0x00080004, 0x00000000, 0x0c000000, 0x00002030, + 0x40004080, 0x10002008, 0x10000000, 0x00000000, 0x00100000, 0x00000100, 0x00050000, 0x00000000, 0x00000000, 0x08008a80, + 0x40000000, 0x14400400, 0x00200048, 0x04420600, 0x08000000, 0x00200028, 0x00010202, 0x00000400, 0x50000000, 0x00900802, + 0x00040100, 0x00002290, 0x00400000, 0x00002100, 0x04040400, 0x04000000, 0x12220002, 0x00006100, 0x00601040, 0x04000028, + 0x00000080, 0x00081000, 0x00220804, 0x00900000, 0x00040400, 0x92001000, 0x00480200, 0x00048010, 0xb0200400, 0x00002000, + 0x00040080, 0x00804020, 0x00108000, 0x00001000, 0x00801000, 0x0a000000, 0x04000902, 0x00800405, 0x00040112, 0x01800000, + 0x08000020, 0x84a20000, 0x00080002, 0x00400008, 0x02000100, 0x0000600c, 0x00a00180, 0x00100020, 0x1000a002, 0x28503400, + 0x06000900, 0x00801000, 0x08000000, 0x04004008, 0x000000c0, 0x00000022, 0x00008000, 0x00104020, 0x00008480, 0x00401000, + 0x00004004, 0x08000ee8, 0xa01a9004, 0x51100c02, 0x43410651, 0x282f4801, 0xa080a000, 0x1040443a, 0xd5009010, 0x634900c9, + 0x00116095, 0x2020884a, 0x08002124, 0x45081042, 0x438150a1, 0x9a138a01, 0x6024250a, 0xb44a085a, 0x01000580, 0xc357ca43, + 0x00a50201, 0x21280004, 0xaa41b2e8, 0xc05a8040, 0x04005c00, 0x52614651, 0x2308a2bd, 0x28003800, 0x95360430, 0x50104046, + 0x00891001, 0x2b051831, 0xa00a8802, 0x81040004, 0x40084310, 0x509540c1, 0x03020015, 0xa02ca0ac, 0x81423150, 0x24488400, + 0xd2030201, 0x4bbd1801, 0x2100084c, 0xaeab0201, 0xd000401c, 0x901202a0, 0x40040010, 0x08001000, 0x22884446, 0x80024100, + 0x1000a023, 0x44443800, 0x00800004, 0x20004090, 0x88221041, 0x00400001, 0x0000a000, 0x12900448, 0x00200184, 0x00000019, + 0x20481004, 0x01100000, 0x02000042, 0x48247540, 0x20081211, 0x04000a05, 0x90124880, 0x40040048, 0x08001004, 0x20890000, + 0x80020020, 0x100028a0, 0x4444000a, 0x00808002, 0x20001404, 0x80220041, 0x00400809, 0x4000e000, 0x00910422, 0x00200440, + 0x000011a4, 0x24480290, 0x00100040, 0x02002002, 0xc0245158, 0x00080231, 0x04001281, 0x90120008, 0x40040c08, 0x08008010, + 0x68082040, 0x30680400, 0x44542300, 0x98128000, 0x01200a24, 0xe82f0000, 0x22880298, 0x10100002, 0xc9160900, 0x01810424, + 0x600f4282, 0xa0280020, 0x48448002, 0x01420000, 0x51852860, 0x88030002, 0x00808000, 0xa4504004, 0x174a0018, 0x11810002, + 0x6ab58100, 0x00480002, 0x0c200400, 0x34582010, 0x1026d05a, 0x48100000, 0x2b2c0100, 0xb011b200, 0x01080010, 0x54160230, + 0x42800000, 0x230f2044, 0xa8080200, 0x0504000c, 0x80024101, 0x40c50000, 0x03130800, 0x80000420, 0xa5480004, 0x00120080, + 0x12c00000, 0x0b914800, 0x60081000, 0x04080044, 0x14520000, 0x00000804, 0x04008008, 0x00000080, 0x00000010, 0x000010c8, + 0x00000400, 0x00000000, 0x00000040, 0x02408000, 0x04002200, 0x00800118, 0x10000000, 0x00000000, 0x02004800, 0x00104700, + 0x00200081, 0x02000208, 0x08008c20, 0x00000080, 0x00000020, 0x00000000, 0x00002128, 0x02000000, 0xc0000101, 0x02000c00, + 0x00004240, 0x00020005, 0x00800000, 0x00004840, 0x00000100, 0x00414180, 0x00001010, 0x00000082, 0x00408000, 0x02002800, + 0x00000200, 0x18008001, 0x00204002, 0x10008800, 0x00200000, 0x00018502, 0x00042000, 0x00200020, 0x00402286, 0x00000000, + 0x10001004, 0x00820012, 0x00000020, 0x00000000, 0x00400809, 0x00001180, 0x00000203, 0x0020a434, 0x10002440, 0x00004008, + 0x00009802, 0x00104005, 0x06000900, 0x80001030, 0x04000090, 0x00009602, 0x20002140, 0x00200281, 0x00000008, 0x80000824, + 0x00000440, 0x00002000, 0x00029290, 0x00000802, 0x01004024, 0x04402589, 0x00000010, 0x00008001, 0x00201604, 0x00000080, + 0x80006048, 0x08808122, 0x00204004, 0x00000480, 0x60081a19, 0x04009402, 0x00a00020, 0x48042148, 0x00000201, 0x04000018, + 0x000000a4, 0x00002c40, 0x08001104, 0x02808011, 0x0000c820, 0x00000020, 0xc2140c54, 0x18004008, 0x81200800, 0x268b0723, + 0x1300a000, 0x00015001, 0x445008b4, 0x20880008, 0x80022000, 0x0d240230, 0x40458001, 0x00004540, 0x3ab83086, 0x90128020, + 0x00001840, 0x414c420e, 0x26892001, 0x00000510, 0x400602a2, 0x08400040, 0x45000408, 0x90b11a02, 0x0804c804, 0x00280020, + 0xa0812413, 0x01064109, 0x02110000, 0x5c401494, 0x248a224a, 0x00000000, 0x11701510, 0x40250820, 0x0000c000, 0x9a102205, + 0x90920000, 0x04000002, 0x21488188, 0x02813040, 0x00000088, 0xe82e8e37, 0x00440000, 0x41004440, 0x94138006, 0x08202000, + 0x00000400, 0x06d0c252, 0x8000890a, 0x01062080, 0x2ce10020, 0x01804350, 0x02090001, 0x54301444, 0x00480400, 0x040600c0, + 0x3910a10a, 0x00010821, 0x00240200, 0xe000409c, 0x80020002, 0x1a803400, 0x41088050, 0x06090009, 0x20500384, 0xc8a2a820, + 0x44044044, 0x01000510, 0x90511001, 0x802200a0, 0x0000a90a, 0x2a800080, 0x01091380, 0x02000000, 0x50100074, 0x040e4400, + 0x00800849, 0xb020a022, 0x08c10000, 0x01040aa0, 0x6238401d, 0x00120010, 0x80008102, 0x650c3100, 0x200144c0, 0x10c02809, + 0xc22e4220, 0x40004004, 0x1d040400, 0x02511150, 0xa0002002, 0x5c000000, 0x80520094, 0x08222808, 0x00085000, 0x22008022, + 0x91100014, 0x00011001, 0x0ac00180, 0x0400800a, 0x80400a00, 0x612c6000, 0x08214081, 0x00800000, 0x501e0c44, 0x82021742, + 0x10008020, 0x25040000, 0x0a010821, 0x00800390, 0x007c6000, 0x00000000, 0x64408008, 0x10925440, 0x0004203c, 0x09090800, + 0x24608242, 0x13965004, 0x80410110, 0x40200801, 0x08428008, 0x04082002, 0xa80002c0, 0x09914205, 0x00240500, 0x52000080, + 0x00128840, 0x04000020, 0x91001406, 0x00210928, 0x28000010, 0x02c82281, 0x04001000, 0x40440050, 0x80120484, 0x00024820, + 0x70440000, 0x04104474, 0x20080020, 0x08200000, 0x80002808, 0x00915000, 0x01028001, 0x10040312, 0xc0020000, 0x00402008, + 0x23081086, 0x00818001, 0x04000100, 0x422444e4, 0x14409800, 0x08020010, 0x81100242, 0x08810281, 0x02000100, 0x00080408, + 0x24300050, 0x00000400, 0x52403820, 0x20240804, 0x00002020, 0x0808c002, 0x50100008, 0x81000000, 0x00871391, 0x00080000, + 0xa4008008, 0x02426006, 0x00000400, 0x018051c0, 0x42250a05, 0x08420402, 0x00001000, 0x80008130, 0x1a0900c8, 0x05800000, + 0x00100201, 0x10700060, 0x20000400, 0x04843a05, 0x00006000, 0x14004440, 0x40583014, 0x08240200, 0x00000020, 0x20000808, + 0x10055000, 0x81022001, 0x42188016, 0x00002000, 0x800a0188, 0x25c01200, 0x00010203, 0x0804c544, 0x408008a0, 0x80221000, + 0x0400000a, 0x0300a010, 0x12510601, 0x08000960, 0x00a80088, 0x00000400, 0x24406040, 0x10101004, 0x08040200, 0x40000030, + 0xa0220882, 0x00040090, 0x01010100, 0x5698f209, 0x00000000, 0x00000004, 0xa408a428, 0x00c30082, 0x01044904, 0x4a200261, + 0x00420000, 0x00008002, 0x81100100, 0x00090408, 0x108030c0, 0x2e200a11, 0x04000010, 0x10000400, 0x40501064, 0x00000000, + 0x00000000, 0x007c4810, 0x580088a6, 0x00000000, 0x20222000, 0x90050001, 0x01800180, 0x4218101c, 0x00082400, 0x00000200, + 0x2500400a, 0x8a010245, 0x00640100, 0x4002d088, 0x90021822, 0x00808000, 0x05400050, 0x00110409, 0x00800380, 0x02084820, + 0x20408440, 0x04200000, 0x58103084, 0x00040900, 0x08024022, 0x8020a010, 0x00080008, 0x01004110, 0x72101205, 0x00040048, + 0x00c90800, 0x2000a092, 0x00000824, 0x05064480, 0xc2200211, 0x00038002, 0x00800500, 0x9d101140, 0x00490019, 0x00800080, + 0x22002200, 0x00000440, 0x0c400020, 0x40204810, 0x18002824, 0x10000400, 0x44708852, 0x88244008, 0x00000800, 0x200022a2, + 0x00039001, 0x03040000, 0x50180314, 0x208800c0, 0x0042202a, 0x0500c000, 0x80014001, 0x42040500, 0x08200a24, 0x90129000, + 0x00800000, 0x01040482, 0x04090181, 0x02800010, 0x20602a60, 0x04060044, 0x08400408, 0x50005100, 0x00100802, 0x08200020, + 0x20022018, 0x8015c010, 0x01000400, 0x52881105, 0x200a2200, 0x00400080, 0x84000448, 0x42854020, 0x01000180, 0x00008207, + 0x88003c10, 0x14200002, 0x01428048, 0x02980088, 0x08000300, 0x00210023, 0x00400000, 0x24004900, 0x1000a452, 0x40042086, + 0x14403000, 0x08124044, 0x00020008, 0x00040102, 0x2ca0ac61, 0x80010215, 0x11041100, 0x40384ce0, 0x0288000a, 0x80008000, + 0x2d602850, 0x00010901, 0x00024000, 0x409c2614, 0x98301050, 0x00020080, 0x2348c526, 0x2e810201, 0x00000008, 0x802c00a6, + 0x00403040, 0x00000c00, 0x8480c013, 0x082a0800, 0x41842024, 0x30108649, 0x80441002, 0x01000104, 0x5a504a71, 0x00a20080, + 0x0009a008, 0xa4701502, 0x00a10240, 0x01040001, 0x5218502c, 0x04520840, 0x08000082, 0x9004e514, 0x00090228, 0x21801880, + 0x8a22e005, 0x44041040, 0x00000400, 0x82520215, 0x80000808, 0x00000404, 0x8280008a, 0x480c0020, 0x31005800, 0x0263a089, + 0x90910201, 0x41000082, 0x0e445450, 0x00080104, 0x80022448, 0x31500032, 0x4e050185, 0x00200800, 0x3000d028, 0x90001002, + 0x00808010, 0x45522204, 0x00210041, 0x00000180, 0x62804622, 0x50001048, 0x0d182500, 0x02474a05, 0x20080800, 0x08008038, + 0x86210501, 0x10802002, 0x41020801, 0x06155450, 0x04002404, 0x000a02c8, 0xb9001810, 0x00004202, 0x02450804, 0x60a0a089, + 0x18000102, 0x00029030, 0xe1582408, 0x08080201, 0x00812148, 0x6624c082, 0x10101060, 0x05400100, 0x4085cc02, 0x08280038, + 0x40004044, 0x80400400, 0x00200800, 0xb906040a, 0x03811120, 0x10812415, 0x42009200, 0x045c0000, 0x20084802, 0x80408408, + 0x192021c0, 0x00031201, 0x040440a4, 0x50100800, 0x80129040, 0x18204012, 0x47880508, 0x02210201, 0x0088080a, 0x684600a4, + 0x10403000, 0x4510c0c0, 0x80070490, 0x00000020, 0x88428806, 0x03a90388, 0x20001240, 0x40914095, 0x16442000, 0x04008808, + 0xa00a2400, 0x09200122, 0x00400004, 0x42050048, 0x109058a1, 0x80028400, 0x18200010, 0x44580306, 0x00010020, 0x2188a08b, + 0xc2061244, 0x00200400, 0x49445844, 0x94810010, 0x08180208, 0x40040284, 0x04828040, 0x800a0000, 0x24208562, 0x09000a08, + 0x10555111, 0x400000a4, 0x02002000, 0x0080a000, 0x8408124a, 0x21100000, 0x42034001, 0x08402e28, 0x00240194, 0x00c00000, + 0x90125054, 0x25008002, 0x02a10d81, 0x2008a20a, 0x88000000, 0x10009500, 0x40d40296, 0x04000060, 0x22006100, 0x81228442, + 0x0d080820, 0x1010511c, 0x48800a21, 0x08240000, 0x00010002, 0x86400050, 0x21082188, 0x40008081, 0x02226428, 0x20850004, + 0x00000200, 0x20005856, 0x8d468000, 0x00000080, 0x1018872a, 0x02810801, 0x34340010, 0x48406685, 0x02001040, 0x2028a808, + 0x4ec82844, 0x00000200, 0x28000008, 0x94428000, 0x01287960, 0x50110003, 0x0aa01080, 0x00004030, 0x00200404, 0x3040a000, + 0x850e0a08, 0x02850201, 0x60284080, 0x00002066, 0x00009000, 0x50540102, 0x89024800, 0x020d2251, 0xa0220900, 0x048004a0, + 0x15141040, 0x4280040c, 0x08404000, 0x08220002, 0x84408020, 0x00000910, 0x11090200, 0x2aa00891, 0x00107028, 0xe00e0004, + 0x00102048, 0x01400100, 0x10050a02, 0x2e280020, 0x4000c495, 0x00009012, 0xc0164000, 0x14c04540, 0x00a00000, 0xa10b0088, + 0x0a002221, 0x00000000, 0x46d30444, 0x00000801, 0x000a0898, 0x40045480, 0x0c4008e8, 0x1a000002, 0xa022a860, 0x05000100, + 0x00091011, 0x100008a0, 0x0a144648, 0x00022448, 0x40c81000, 0x21008106, 0x00010801, 0x8020602c, 0x640c0010, 0x90421010, + 0x0a100006, 0x0580c2c0, 0x02012381, 0x20088002, 0x08804408, 0x10605830, 0x400486c4, 0x04800000, 0xa0300800, 0x044204c2, + 0x08082128, 0x02c11210, 0x001000a0, 0x10048004, 0x04082440, 0xc1420010, 0x2110412b, 0x08000020, 0x0224e00c, 0x40880001, + 0x90032480, 0x0010a006, 0x05400a04, 0x228102c0, 0x0028011a, 0x00001001, 0x04400400, 0x40840080, 0x08102860, 0x0008400a, + 0x44444848, 0x90002400, 0x00009000, 0x88020004, 0x01200928, 0x32112215, 0x00081000, 0x00004002, 0xe44c0000, 0x0020a080, + 0x01801048, 0x08230903, 0x40844080, 0x02000604, 0x14009002, 0x80120000, 0x01002420, 0x00010309, 0x20c80010, 0x4a2408e0, + 0x10405044, 0x44042200, 0x80020400, 0x00000a10, 0x08c28020, 0x85300048, 0x72011202, 0x00902015, 0x00084900, 0x24000400, + 0x005820c8, 0x81240002, 0x08060a00, 0x40104020, 0x02808115, 0x00109002, 0x00010010, 0x90620580, 0x02004200, 0x018d0088, + 0x04000041, 0x20200400, 0x5e422050, 0x00040820, 0x00180208, 0x104404c0, 0x00000206, 0x02200000, 0xa8820000, 0x050038aa, + 0x125911d5, 0x40400200, 0x0004c020, 0x20022c00, 0x80808000, 0x0548002a, 0x00010041, 0x400440a0, 0x0aa01204, 0x10000058, + 0x8012810a, 0x05001c00, 0x08810201, 0x22080900, 0x004020ac, 0x40209000, 0x06800442, 0x02400091, 0x28000004, 0x102c8540, + 0x81104928, 0x12011280, 0x40220024, 0x00946033, 0x24000000, 0x80422c18, 0x01080102, 0x18240a00, 0x40011040, 0x0280c08c, + 0x00000020, 0x00105006, 0x80428419, 0x20002000, 0x01a90100, 0x160042cd, 0x10004400, 0x40440080, 0x0c908976, 0x88089088, + 0x00004000, 0x20629044, 0x00800820, 0x8a0a0100, 0x5120060b, 0x10110005, 0x0080e100, 0x22041210, 0x08200000, 0x00020088, + 0x6d482c12, 0x02210145, 0x0000ca00, 0xc81c20a0, 0x00028002, 0x80100000, 0x358c1444, 0x20290101, 0x02002280, 0x08c0081a, + 0x10045420, 0x02800100, 0x44500050, 0x00a00002, 0x8d020824, 0x01400701, 0x1280a208, 0x00214091, 0x247c1440, 0x08002000, + 0x08088004, 0x61001158, 0x02000201, 0x04244406, 0xc8c20800, 0x100200b0, 0x80088440, 0x20510102, 0x000500a0, 0x01882a00, + 0x2600900b, 0x18020010, 0x04440040, 0x00204405, 0x080a1808, 0x00240800, 0x140016a0, 0x0000c002, 0x21200828, 0x890b0741, + 0x00010005, 0x00041080, 0x56902830, 0x20000048, 0x00482412, 0x91125200, 0x40850921, 0x0420408c, 0x32008008, 0x00000200, + 0x80000000, 0x5952955a, 0x00012089, 0x04800020, 0xa2020a02, 0x10001044, 0x056c4000, 0x08010681, 0x8802a830, 0x20600000, + 0x43190743, 0x40114011, 0x00800208, 0x10001824, 0xa0080048, 0x00441080, 0x07123110, 0x02244625, 0x40008800, 0x30892002, + 0x90009002, 0x00500400, 0x490200c8, 0x02a00210, 0x0c090180, 0xc000600b, 0x40000040, 0x01044d20, 0xb6410007, 0x8028002a, + 0x44404440, 0x10800002, 0x88220120, 0x21041000, 0x05490800, 0x00819105, 0x10042000, 0x4030401a, 0x00488282, 0x26102838, + 0x91020410, 0x00010001, 0x48244110, 0x22082844, 0x00909000, 0x00020280, 0xd50c2462, 0x0281021d, 0x20402104, 0x80268880, + 0x54401440, 0x0b844010, 0x00898122, 0x00100108, 0xa0020024, 0x0de0a900, 0x42000003, 0x00910040, 0x14085090, 0x84000000, + 0x3054984c, 0x110a2320, 0x40004021, 0x08201002, 0x20850e0c, 0x00500010, 0x12021482, 0xc00c8044, 0x002041a8, 0x03082000, + 0xc4830a01, 0x24448010, 0x43005440, 0x1a910000, 0x0008020e, 0x04044404, 0xc0400000, 0x08002028, 0x20000000, 0x932a8880, + 0x50015003, 0x00000540, 0x02540010, 0x04020004, 0x00108450, 0xa1b82388, 0x08010281, 0x00441002, 0x50104024, 0x96129c00, + 0x00000000, 0x21a04002, 0x02810861, 0x40000300, 0x08404098, 0x50781054, 0x04002400, 0x22000000, 0x00040000, 0x2b0940aa, + 0x01220900, 0x40000001, 0x80800084, 0x1a11b210, 0x80208000, 0x18261008, 0x21486102, 0x062000c0, 0x10044400, 0x40800014, + 0x00020440, 0x0841aa02, 0x90000021, 0x06090888, 0x01801110, 0x28300201, 0x00001020, 0x04500404, 0x9004e040, 0x40082038, + 0x04008820, 0x10480440, 0x8a001002, 0x40044830, 0x01202008, 0x100d0101, 0x60801000, 0x00128010, 0x00002288, 0x0a504014, + 0x21080040, 0x04034000, 0x80248802, 0x42800405, 0x98421100, 0x040002a2, 0x01008450, 0x00312089, 0x0a000100, 0x20800a20, + 0x10000000, 0x84400040, 0x001c0400, 0x60080036, 0x08001800, 0x01224000, 0x80040309, 0x50402010, 0x0011d400, 0x00800000, + 0x12003404, 0x21080088, 0x02928006, 0x00540840, 0xc42040a0, 0x00038103, 0x00401200, 0x8c100100, 0x1a090408, 0x01a400c4, + 0x00002211, 0x40000840, 0x34000020, 0x00400480, 0x00184006, 0x00424060, 0x4000b408, 0x10000460, 0x00340890, 0x89820044, + 0x00012939, 0x34081000, 0x0a148082, 0x00007008, 0x40980014, 0xa0020240, 0x0004240e, 0x05008000, 0x40414081, 0x1090d306, + 0x02020000, 0x89200878, 0x0441a703, 0x00800000, 0x0a200180, 0x440802a0, 0x00020800, 0x2040844a, 0x80040c70, 0x10301000, + 0x0902c144, 0x00081829, 0x20102002, 0x12810010, 0x200c4018, 0x50003044, 0x00028280, 0x8464602e, 0x01000000, 0x42890c00, + 0x00024184, 0x28100201, 0x90409102, 0x0409868a, 0x03800041, 0x28002810, 0x04440681, 0x40200060, 0x10021000, 0x08100640, + 0x04600008, 0x50001000, 0x04600000, 0x00102040, 0x890e0000, 0x08b10000, 0x30000400, 0x06000080, 0x10040288, 0x60180000, + 0x80420000, 0x200c0048, 0x41000000, 0x06010010, 0x50040004, 0x80802202, 0x09220100, 0x84030410, 0x20d08400, 0x82088106, + 0x4e800000, 0x00640040, 0x00000000, 0x8c700000, 0x12000000, 0x018a2020, 0x18300e02, 0x20000000, 0x080110c0, 0x04140100, + 0x70000010, 0x028a0201, 0x202c0060, 0xc1000000, 0x00510404, 0x409400a0, 0x82020000, 0x18000022, 0x80ca0010, 0x07010000, + 0x20000110, 0x06c12000, 0x48200020, 0x90040000, 0x04400000, 0x00080020, 0x00000202, 0x00040080, 0x00204000, 0x20000000, + 0x00000900, 0x80002000, 0x02040000, 0x08208000, 0x20080034, 0x00008b00, 0x00400000, 0x80000000, 0x04000220, 0x00000080, + 0x00028080, 0x00604860, 0x00002100, 0x40800200, 0x00200000, 0x20001088, 0x00022104, 0x00500090, 0x02000008, 0x00200154, + 0x00000100, 0x80000000, 0x00102020, 0x00000020, 0x00018000, 0x220808a0, 0x80002080, 0x24000000, 0x00010000, 0x08800000, + 0x00000010, 0x10202180, 0x00000800, 0x10000000, 0x00054500, 0x00008286, 0x00044080, 0x0c00010a, 0x00800000, 0x0001100a, + 0x04200c80, 0x00080048, 0x00800410, 0x00809116, 0x06040e21, 0x0060e22f, 0x00001010, 0x00000964, 0x00904442, 0x02005001, + 0x0a803019, 0x80302482, 0x00004924, 0x0010b44a, 0x00385011, 0x28000801, 0x00140004, 0x0000000a, 0x82021080, 0x00084041, + 0x00024831, 0x00000200, 0x00800e21, 0x0044b000, 0x01015402, 0x00000a85, 0x0242c009, 0x00080018, 0x00200c02, 0x00005644, + 0x00244005, 0x4080111a, 0x0018a008, 0x00008d02, 0x0c087258, 0x00404805, 0x00081001, 0x0800c24c, 0x0014b402, 0x00000048, + 0xc4001001, 0x00c00821, 0x00080a04, 0x020084d1, 0x0002e400, 0x2a400c00, 0xa2022028, 0x54501450, 0x91120030, 0x09010900, + 0x488b2829, 0x00001000, 0x305a8002, 0xd5405010, 0x010101cd, 0x50250201, 0x200a2020, 0x4c048000, 0x33424480, 0x51854a00, + 0x80011012, 0x42888000, 0x3c000440, 0x05480512, 0x11151021, 0x48812011, 0x03040208, 0x8c210500, 0x34089054, 0xd8121520, + 0x64040000, 0x09292800, 0x20800222, 0x15401010, 0xd4561105, 0x0080020c, 0x1b020001, 0x00602804, 0x01040042, 0xf0028104, + 0x42150880, 0x83030000, 0x60800d82, 0x85680000, 0x2042121b, 0x12920080, 0x0b2168b5, 0x61200200, 0x200a0408, 0x9050c456, + 0x24000000, 0x206000c0, 0x44004000, 0x00748000, 0x09044000, 0x48098002, 0x22ba2200, 0x1000001c, 0x51560320, 0x018d0400, + 0x40016080, 0x800a0008, 0x60000914, 0x01860002, 0x01250040, 0x528100a0, 0x80020020, 0x94629004, 0x01582000, 0x13810000, + 0x42290882, 0x08804804, 0x04600020, 0x145c4200, 0x00220882, 0x68000410, 0x8b210108, 0x3080c080, 0x01180000, 0x90140000, + 0x040d0550, 0x23011000, 0x880a8002, 0x21444020, 0xc0020040, 0x48a50221, 0x03114010, 0x80a00261, 0xa5128000, 0x00002040, + 0x02010000, 0x03a90000, 0x44200000, 0x00501a20, 0x94462001, 0x00000000, 0x18000202, 0x80000000, 0x00001206, 0x100004c0, + 0x80000004, 0x00000080, 0x00000000, 0x82000000, 0x04000000, 0x00008010, 0x02001442, 0x8c000000, 0x08000008, 0x06002105, + 0x00000001, 0x00004000, 0x00000200, 0x24000848, 0x08008380, 0x20020000, 0x00040000, 0x200000c3, 0x40002000, 0x00100008, + 0x10084040, 0x00000005, 0x00022000, 0x00000828, 0x00400002, 0x02008080, 0x00002220, 0x04004080, 0x00200408, 0x02002000, + 0x04001508, 0x10408000, 0x0006400c, 0x18000000, 0x08480100, 0x14808400, 0x2000100a, 0x00000042, 0x08000080, 0x00000000, + 0x00001448, 0x0000a010, 0x00180002, 0x00820120, 0x2440e809, 0x00000010, 0x00001301, 0x00004cc4, 0x00002000, 0x00000008, + 0x20108c20, 0x00c04a85, 0x00000142, 0x00201020, 0x00088002, 0x00500010, 0x20002548, 0x00002281, 0x08001000, 0x4000482c, + 0x00000440, 0x00100004, 0x02009010, 0x80004020, 0x01002800, 0x00400203, 0x00044018, 0x00008100, 0x480014c5, 0x00020008, + 0x40808200, 0x00302852, 0x00004804, 0x00800400, 0x201813b1, 0x00000002, 0x00400440, 0x4000a110, 0x00000280, 0x00000809, + 0xc0005004, 0x00000010, 0x00103120, 0xa2848440, 0x00080002, 0x00482400, 0xd2921230, 0x88000024, 0x01228908, 0x22012581, + 0x03900280, 0x100d0003, 0x4c605474, 0x20000400, 0x80080002, 0x1d22a058, 0x4a050b01, 0x00200020, 0x30d0401c, 0x80020092, + 0x00001000, 0x550c8400, 0x029902c1, 0x20200100, 0x88448802, 0x0454203c, 0x41004000, 0x908314c2, 0x082a8000, 0x0000000a, + 0x26810c60, 0x13810281, 0x80140004, 0x44607510, 0xa0082448, 0x00020000, 0x1d000002, 0x42010000, 0x0020c020, 0x18443085, + 0x00128a00, 0x80801110, 0x21082106, 0x02812048, 0x10080400, 0x0c668a81, 0x14000020, 0x61400540, 0x00139003, 0x08028024, + 0x04008040, 0x90520092, 0x00029800, 0x09040024, 0xa6696208, 0x11001000, 0x00050201, 0x46d00016, 0x040849c8, 0x00002000, + 0x39528420, 0x822500a1, 0x08000806, 0x60104200, 0x90103102, 0x00c00000, 0x6506a458, 0x2001028d, 0x02800100, 0xc8026824, + 0x40004000, 0x016c0004, 0x94119751, 0x00280802, 0x08008100, 0x220302a9, 0x01102100, 0x82011000, 0x58e00ad1, 0x80080004, + 0x0404e448, 0x20600802, 0x00020020, 0x09044005, 0x50000198, 0x02031210, 0x80208800, 0x31d40502, 0x26080001, 0x00810080, + 0x88206a44, 0x40444464, 0x05000008, 0x02130010, 0x90001800, 0x60000018, 0x04904004, 0x00202028, 0x08020800, 0x300c0040, + 0x81009014, 0x02950000, 0x58004283, 0x00400002, 0x00002108, 0x252a8c40, 0x0a010005, 0x80045080, 0x50000900, 0x00a80040, + 0x90408200, 0x011a4532, 0x00010a21, 0x06081080, 0x00842008, 0x00201400, 0x60000040, 0x1e420000, 0x801a2018, 0x01840824, + 0x0c204000, 0x2340d004, 0x00050113, 0x54100020, 0x84c2a002, 0x00080000, 0x280016a8, 0x0a250201, 0x018000c0, 0x60184104, + 0x90000442, 0x00100800, 0x414ac038, 0x02002aa0, 0x00091100, 0x6ca40003, 0x10001010, 0x04040008, 0x80d004c0, 0x00206a20, + 0x08100040, 0x50040404, 0x20004800, 0x00203000, 0x8882003a, 0x00058100, 0x01101000, 0x12084215, 0xe0020008, 0x00080080, + 0x05c0b442, 0x42810301, 0x00040000, 0x00004004, 0x00200880, 0x00000022, 0x9d529410, 0x028103c1, 0x00002000, 0x28200800, + 0x04480020, 0x00140408, 0x40005044, 0x28000820, 0x10202000, 0x80008010, 0x400c4018, 0x01821000, 0x12110007, 0x00000080, + 0xa0088308, 0x00422510, 0x42800002, 0x05004004, 0x080508e1, 0x00408200, 0x90020400, 0x04200102, 0x00001010, 0x03a00080, + 0x28110a49, 0x04080020, 0x00402440, 0x40045014, 0x08300000, 0x00080400, 0x1e704064, 0x40200010, 0x08000020, 0xa00c1800, + 0x0001a000, 0x01040010, 0x52b2508f, 0x00000108, 0x80000000, 0x214aa740, 0x0a050003, 0x00000000, 0x44004284, 0x80201802, + 0x00c00000, 0x05128470, 0x10010301, 0x02800008, 0x080020a0, 0x000c0000, 0x20600004, 0x14000c50, 0x00a00000, 0x48004000, + 0xa0121822, 0x00100010, 0x0104a040, 0x528910a8, 0x80080208, 0x04002105, 0x3000c002, 0x00150000, 0x01804714, 0x486200c1, + 0x00000800, 0x80008402, 0x13521120, 0x00004050, 0x00012021, 0x2ea00280, 0x00028c40, 0x00008000, 0x04481008, 0x40004004, + 0x04004400, 0x10741014, 0xc0000820, 0x0800000a, 0x002aa000, 0x20010090, 0x01001000, 0x12944005, 0x04002348, 0x00000020, + 0xe14a8100, 0x00054625, 0x02800002, 0x48000800, 0x04608000, 0x80000000, 0x011204c6, 0x00011181, 0x12802a14, 0x68080000, + 0x00000468, 0x04608100, 0x50144011, 0x00200822, 0x00001004, 0x88020000, 0x20108250, 0x41080108, 0x12013005, 0x00082008, + 0x00008000, 0xa48444c2, 0x000201a0, 0x01044004, 0x40680201, 0x8282a802, 0x00000000, 0x09010150, 0x02903280, 0x14410800, + 0x20200423, 0x00484050, 0x0c000408, 0x00001004, 0x50040220, 0x04000000, 0x102056d4, 0x00240000, 0x40000800, 0x8800a5aa, + 0x201b0000, 0x11840400, 0x40005051, 0x22080200, 0x80000080, 0x0542b44c, 0x40050281, 0x00204100, 0x00002816, 0x80421020, + 0x08900002, 0x0700e458, 0x30210281, 0x00800100, 0x0a08a822, 0x00400008, 0x04000000, 0x50005650, 0x08020006, 0x00240100, + 0x20188e20, 0x90114008, 0x01000000, 0x40803295, 0xa2080100, 0x00008040, 0x0404340a, 0x40714814, 0x01060000, 0x080013a1, + 0x90020008, 0x04008440, 0x03c02016, 0x02012108, 0x00101201, 0x28804084, 0x506c0414, 0x00004020, 0x040018c0, 0x00280000, + 0x00001050, 0xd0f2c406, 0x08020002, 0x00002128, 0x20288a41, 0x90410000, 0x01001100, 0x48104831, 0x02008280, 0x00280002, + 0x25c6291c, 0x00050e01, 0x000000c0, 0xc010502c, 0x18200052, 0x00400400, 0xc78e9100, 0x029100a1, 0x20080000, 0x08004a00, + 0x44002008, 0x80600010, 0x120244c6, 0x00200000, 0x09141000, 0x24c208a1, 0x80018201, 0x01c02006, 0x58185d18, 0x80488002, + 0x02002088, 0x20040c20, 0x04250340, 0x01000020, 0x40124805, 0x04128000, 0x88000090, 0x02c4150a, 0x02080041, 0x11810000, + 0x28222aa8, 0x90040040, 0x04400100, 0x80004413, 0x48821004, 0x00000040, 0x06409004, 0x00040010, 0x29188822, 0x86a32009, + 0x00011111, 0x41004284, 0x16700440, 0x80c22400, 0x00040048, 0x3d180810, 0x00050a05, 0x08000020, 0x72a8d102, 0x04000000, + 0x80000082, 0x3152b008, 0x000104c1, 0x02000918, 0xa0866200, 0x00080060, 0x19700100, 0x4481d402, 0x200c0830, 0x0000800c, + 0x8a212003, 0x00120300, 0x41001080, 0x16204471, 0x04882000, 0x20030448, 0x99640804, 0x00008306, 0x02044000, 0x78811800, + 0x00220022, 0x80408400, 0x651861dd, 0x12a00200, 0x00011009, 0x400c6084, 0x04105040, 0x21000d24, 0x5a478090, 0xa0008800, + 0x4044069c, 0x84820882, 0x00102000, 0xa1028268, 0x0b291c80, 0x00914201, 0x40001024, 0x16200832, 0x24068502, 0x00002080, + 0x19080168, 0x00010a01, 0x00640080, 0xda904014, 0x80020042, 0x10100430, 0x21488100, 0x00015221, 0x0628200a, 0x28860880, + 0x00009000, 0x11504050, 0xc4030484, 0x00200001, 0x00060ce0, 0xaf412000, 0x00104010, 0x4200808b, 0x144c1000, 0x00800906, + 0x20410210, 0x99083408, 0x00060001, 0x4400c9e8, 0x1a21000c, 0x80001000, 0x00120252, 0x04888100, 0x02a10401, 0x31400888, + 0x480e8220, 0x04440000, 0x41802040, 0x10034612, 0x20108020, 0x42184884, 0x04400440, 0x88002900, 0x20268060, 0x05c00002, + 0x00050105, 0x42880830, 0x10105008, 0x040a8008, 0x00401650, 0x21202080, 0xc2051081, 0x00002b2e, 0x00804000, 0x04000000, + 0x98225454, 0x01408002, 0x00810901, 0x0210a2a2, 0x00000000, 0x00000110, 0x703c0284, 0x0c400448, 0x00002008, 0x81024442, + 0x09209820, 0x20001404, 0x58890ab1, 0x00144100, 0x08400008, 0x060a3032, 0xa1208040, 0x40100180, 0x0204680d, 0x20110600, + 0x0000a440, 0x18b05024, 0xc1020102, 0x0a600880, 0x2080a21a, 0x84010001, 0x00100420, 0x40484285, 0x86800050, 0x30002008, + 0x42844044, 0x04000200, 0x20281010, 0x0c428020, 0x01000940, 0x40012281, 0x8a70000c, 0x10005012, 0x0040a400, 0x349a0042, + 0x81040008, 0x00a10801, 0x68080020, 0x0204418c, 0x24403000, 0x50040410, 0x81128206, 0x00212301, 0xaa820080, 0x0008004e, + 0x91504000, 0x42840050, 0x04000e20, 0x02021904, 0x04e88022, 0x08002248, 0x53010000, 0xa8b41001, 0x00004190, 0xa40a2400, + 0x1050004c, 0x01000210, 0x0001cb00, 0x2aa80092, 0x40040024, 0x00021000, 0xd0148052, 0x04400001, 0x0a000509, 0xa10b0000, + 0x00802282, 0x00004c40, 0x56951004, 0x00600031, 0x20280800, 0x42242484, 0x06104040, 0x00000000, 0xa8220052, 0x010019a0, + 0x00090009, 0x401430b4, 0x1880c000, 0x04008440, 0x02482218, 0x21000822, 0x08110021, 0x00060008, 0xc2804004, 0x10180082, + 0x80202f10, 0x41468000, 0x00812141, 0x26085a02, 0x400000a0, 0x08605108, 0x14140080, 0x40800440, 0xa0000012, 0x08600040, + 0x0102092c, 0x02090010, 0x088000a0, 0x1034b044, 0x00000008, 0x40406850, 0xa1080701, 0x0a240800, 0x0402c02c, 0x40090002, + 0x90809080, 0x20560015, 0x0104034a, 0x28a82400, 0x0601000b, 0x000002a4, 0x00408400, 0x44841204, 0x10000850, 0x20200000, + 0xc0004050, 0x04800c00, 0x0032000a, 0xa0448120, 0x09081804, 0x02011201, 0x00100084, 0x10002010, 0x24042520, 0x80d8c000, + 0x41000048, 0x48030203, 0x028c0080, 0x20004924, 0x94200410, 0x00560000, 0x01008042, 0x08092101, 0x22800280, 0x40201002, + 0x00040100, 0xc040107c, 0x04104c00, 0x10a00000, 0x0002a820, 0x8908010a, 0x36951200, 0x00000080, 0x00004010, 0x64080000, + 0x0040a049, 0x81201006, 0x08020020, 0x40244610, 0x02800005, 0x0053b000, 0x80080152, 0x14000880, 0x22810400, 0x01080108, + 0x00002aa3, 0x00204440, 0x4c840204, 0x00400090, 0x30300000, 0x00280040, 0x04500004, 0x00002000, 0x800a0028, 0x29205812, + 0x00010111, 0x40841200, 0x12108844, 0x2002a080, 0x00400002, 0x01085008, 0x48054045, 0x04203000, 0x82802430, 0x9000904a, + 0x00020904, 0x01404290, 0x02010329, 0x0c900000, 0x20282484, 0x40021000, 0x10500080, 0x0400ce41, 0x20208080, 0x00060180, + 0x09002b7e, 0x12100480, 0x00081001, 0x80804810, 0x60002402, 0x000f0208, 0x85000044, 0x08000004, 0x427c6000, 0x00019108, + 0x10401000, 0x80902020, 0x0502ca93, 0x20210100, 0x00880280, 0x0a004c61, 0x04000444, 0x40003008, 0x10424010, 0xa0020800, + 0x40040810, 0x2062868a, 0x00004020, 0x88002000, 0x11308f41, 0x04011089, 0x40824010, 0x381c0602, 0x20400004, 0x8200a008, + 0x05080412, 0x00010041, 0x40200900, 0x029642a4, 0x08000050, 0x00100400, 0x914a810e, 0x60092821, 0x88800280, 0x06009008, + 0x00000014, 0x00020140, 0x46644402, 0x00020000, 0x85200820, 0x1990100b, 0x00507200, 0x00888094, 0x30040420, 0x2008010a, + 0x00112040, 0xc7400531, 0x18200000, 0x00000a84, 0x608fc001, 0x02120040, 0x90408422, 0x44001114, 0x02040208, 0x01802001, + 0x00230880, 0x08400420, 0x040c4100, 0x30808243, 0x08002032, 0x00340424, 0x060002c0, 0x18001002, 0x21226000, 0x03c18c71, + 0x40890001, 0x80104000, 0x16641218, 0x200001c8, 0x000a8000, 0x99703024, 0x06a10823, 0x00040400, 0x58084284, 0x00120540, + 0x10401002, 0xa504a010, 0x0a810081, 0x00002108, 0xa02c8222, 0x10400040, 0x01000104, 0x04014e80, 0x80200832, 0x48009000, + 0x031f04c8, 0x70014011, 0x00902224, 0x0c641d80, 0x00000040, 0x20080400, 0x0f12a908, 0x88844820, 0x00600002, 0x5200000c, + 0x14008082, 0x00131000, 0xa1004651, 0x08492001, 0x02000102, 0xe08402ae, 0x40044400, 0x11e00144, 0x86010a03, 0x80201000, + 0x5450c452, 0x02822000, 0x802a0904, 0x0140a028, 0x09c10200, 0x00110083, 0x00005500, 0x38e40210, 0x4008006c, 0x02128400, + 0xb9302000, 0x40050021, 0x04080000, 0x20486086, 0x88200042, 0x04060f00, 0x53849000, 0x004123b1, 0x20180008, 0x02a04804, + 0x54040010, 0x09000004, 0x80d14443, 0x08000122, 0x80222800, 0x03499009, 0x22800000, 0x10011280, 0x40704050, 0x04400103, + 0x0004000c, 0x311aa550, 0x08001820, 0x40245285, 0xa2082010, 0x90008010, 0x04911000, 0x600e014e, 0x00800a20, 0x01092088, + 0x22408401, 0x04200450, 0x59041004, 0x00c10000, 0x00122080, 0x00100448, 0x00040004, 0x00088018, 0x6a020020, 0x81201802, + 0x44010001, 0x02104044, 0x10043a10, 0x80800188, 0x20028442, 0x05082900, 0x08410211, 0x00040020, 0x52204004, 0x84000002, + 0x20c81408, 0x01128984, 0x180162c1, 0x40800800, 0x020c0010, 0x50201020, 0x00404018, 0x24120440, 0x0024000c, 0x01800822, + 0x0d0a2100, 0x60114000, 0x00040080, 0x9e009034, 0x80088008, 0x00800001, 0x29022640, 0x08000283, 0x00804904, 0x46740020, + 0x00028402, 0x90011000, 0x04502000, 0x00000108, 0x21a900f0, 0xca022201, 0x00045450, 0x04108800, 0x90400000, 0x6a208000, + 0x10004000, 0x04000048, 0x40121020, 0x08008810, 0x012c208a, 0x80011011, 0x60140100, 0x10000280, 0x00004040, 0x2400240c, + 0x03c88002, 0x02030004, 0x00044100, 0xc08012b1, 0x88600008, 0x00108802, 0x05020010, 0x08011601, 0x32880140, 0x00020080, + 0xc0044804, 0x00000460, 0x0460b008, 0x22180800, 0x00200210, 0x9900802a, 0x00101010, 0x40002000, 0x10834100, 0x000a2204, + 0x806000a0, 0x23040449, 0x04008024, 0x00000102, 0x42044200, 0x00630881, 0x80008002, 0x08801010, 0x083004c0, 0x35010300, + 0x02884001, 0x54500020, 0x00066808, 0x00001450, 0x00200802, 0x04204800, 0x80402408, 0x18100c64, 0x40221010, 0x81040002, + 0x00190921, 0x22003018, 0x14008280, 0x0088301c, 0x40044400, 0x24400802, 0x40042008, 0x8112c000, 0x082112c5, 0x1000c914, + 0x82800000, 0x01520022, 0x06818103, 0x000026c0, 0x28081100, 0x406402c0, 0x04000c24, 0x0000000a, 0x88100c60, 0x10001010, + 0x0120c380, 0x02013828, 0x208800d0, 0x10120002, 0x20005018, 0x40440204, 0x8008a441, 0x00006808, 0x40060116, 0x14200000, + 0x01014006, 0x82908281, 0x18420460, 0x0681a102, 0x21040289, 0x08281012, 0x00000aa1, 0x40440440, 0x04000000, 0x10000470, + 0x04480000, 0x80040000, 0x0e400200, 0x10324090, 0xc1000000, 0x08b10040, 0x30080040, 0x00040100, 0x12180000, 0x68001002, + 0x84200184, 0x60080040, 0x01068018, 0x00610000, 0x52840000, 0x000a0020, 0x89104000, 0x82430004, 0x04000000, 0x00a80000, + 0xe2c40200, 0x0c000800, 0x80100000, 0x0c400000, 0x12200000, 0x018a0800, 0x08a04000, 0x30110080, 0x82000000, 0x10140010, + 0x68200200, 0x000a2400, 0xa0080000, 0x40000000, 0x06440408, 0xc1850020, 0x00020200, 0x09301000, 0x800b2800, 0x26400100, + 0x10800020, 0x06c11001, 0x48200020, 0x80120008, 0x14400000, 0x00402048, 0x0000a002, 0x04000000, 0x02100000, 0x00000208, + 0x04806500, 0x00100010, 0x02000800, 0x10000000, 0x20884000, 0x02002022, 0x20000200, 0x00004000, 0x00040188, 0x00082200, + 0x80001100, 0x00400008, 0x10000120, 0x00a01010, 0x20001004, 0x20000028, 0x00402100, 0x10028001, 0x00800080, 0x00007114, + 0x00000000, 0x00050424, 0x00108400, 0x00000822, 0x10010100, 0x00088001, 0x80020802, 0x00001000, 0x00501800, 0x00802000, + 0x40000180, 0x00010880, 0x00402002, 0x00084019, 0x10411086, 0x04008100, 0x10000000, 0x00008000, 0x00100000, 0x04800000, + 0x04000020, 0x000a0c80, 0x00109458, 0x00000926, 0x00001005, 0x00008a21, 0x0004308a, 0x00008424, 0x00404210, 0x000004c9, + 0x00041011, 0x0008a800, 0x00000420, 0x1c000406, 0x00004845, 0x20240091, 0x4000a202, 0x0210ac42, 0x00200088, 0x0000c643, + 0x08024991, 0x00000044, 0x02300630, 0x88003448, 0x01048002, 0x04200061, 0x00020b09, 0x80202012, 0x0c609008, 0x00005084, + 0x00004048, 0x000001b5, 0x10012208, 0x10000564, 0x8008c002, 0x12044255, 0x08808001, 0x0004000c, 0x08108460, 0x80840600, + 0xc0004040, 0x008a6a9c, 0x00000140, 0x00040e83, 0x8000b452, 0x08042080, 0x20a00000, 0xd0001610, 0x11660850, 0x29c50008, + 0x4829a087, 0x80020800, 0x7c6a0004, 0x85101292, 0x43014041, 0x10910301, 0x80020802, 0x4c608040, 0xa1d21084, 0x03014900, + 0x50939001, 0x0a040002, 0x04020140, 0x85480000, 0x51050a20, 0x42998380, 0x09042008, 0x24092448, 0x04408000, 0x40121020, + 0x70410004, 0x0b886800, 0x20000080, 0xd1085004, 0x00960000, 0x46400055, 0x23146000, 0x0ca8a08a, 0x21000102, 0x64462040, + 0x00314701, 0x83020000, 0x60280001, 0x25028402, 0x00000140, 0x02200130, 0x0b116280, 0x69240008, 0x26490c60, 0x50400400, + 0x60200802, 0x24400040, 0x00544000, 0xd8208200, 0x01004000, 0x0aad0300, 0x20122008, 0x00021000, 0x51142100, 0x25c10004, + 0x400c8088, 0xa00b2410, 0x04060021, 0xc1804100, 0x43250614, 0x8a000220, 0x08070000, 0x84223800, 0x11408410, 0x07810082, + 0x42a51000, 0x80000800, 0x2c280020, 0x14540000, 0x80000c14, 0x50000408, 0x2b218121, 0xa00a0202, 0x11020112, 0x54100020, + 0x02c90180, 0x23950001, 0x800a0000, 0x81440044, 0x4082c000, 0x40158080, 0x02211000, 0x80020000, 0x85560010, 0x0400148c, + 0x02d11a01, 0x2b2d0001, 0x08800004, 0x84402005, 0x14529202, 0x08000000, 0x000884a0, 0x0000000c, 0x20022002, 0x041004a0, + 0xc0001000, 0x00080030, 0x00000000, 0x0000cc20, 0x02000020, 0x10001000, 0x00800008, 0x00600000, 0x00000008, 0x00000042, + 0x00100000, 0x00c00488, 0x00004026, 0x00180009, 0x00000040, 0x38004011, 0x00080004, 0x00401190, 0x40000003, 0x0a004140, + 0x00480041, 0x00000000, 0x00000008, 0x00108000, 0x08002000, 0x00001608, 0x00001010, 0x04000200, 0x08000c00, 0x00000038, + 0x06000000, 0x00000836, 0x00200084, 0x00000a60, 0x00082000, 0x0000c000, 0x00000002, 0x40000000, 0x00000002, 0x20080098, + 0x00000000, 0x00000004, 0x10000022, 0x04000910, 0x00002049, 0x0040d000, 0x10000315, 0x08200440, 0x80002088, 0x00008400, + 0x00100800, 0x02004043, 0x00000984, 0x08002210, 0x00088022, 0x14400440, 0x40003110, 0x20000209, 0x00002000, 0x801040a4, + 0x00020000, 0x00000050, 0x0100de02, 0x02008000, 0x01100824, 0x00222388, 0x04000001, 0x00841086, 0x00044c50, 0x8000a008, + 0x40000000, 0x00000b62, 0x30204c24, 0x00000001, 0x00001080, 0x01009200, 0x08400012, 0x50006548, 0x38800280, 0x00000000, + 0x80022009, 0x10000000, 0x00200d44, 0x02808030, 0x0004f820, 0x00440008, 0x96825452, 0x00208000, 0x49000100, 0x22812eab, + 0x93980090, 0x00031105, 0x44444060, 0x20400000, 0x00080000, 0x8920a208, 0x44254061, 0x00820486, 0x30101b10, 0x88021010, + 0x02408440, 0x35080002, 0x02910081, 0x20000108, 0x48248a00, 0x04004004, 0x00480460, 0x5097b092, 0x80200000, 0x0808000a, + 0x20832821, 0x10000381, 0x03158010, 0x44e05464, 0x20080440, 0x80002000, 0x0d60110a, 0x4a060000, 0x00018a04, 0x30986091, + 0x80028020, 0x14000040, 0x21280102, 0x02c10000, 0x28103811, 0x400c4680, 0x04445400, 0x11100100, 0x402300fb, 0x00080002, + 0x14084450, 0x42129200, 0x88000800, 0x01220024, 0x22410140, 0x01104200, 0x02050087, 0x1c28b418, 0x44000c40, 0x00c80808, + 0xa902a120, 0x08014815, 0x02200000, 0x601c20aa, 0x00400200, 0x1092044a, 0xa500e004, 0x20813009, 0x00000190, 0xc2004224, + 0x40040c42, 0x0c404014, 0x92bb1001, 0x08020a22, 0x80000300, 0x22e9a488, 0x01001050, 0x02010201, 0x58700180, 0x00088800, + 0x04c4002e, 0xb8206900, 0x02000010, 0x08010040, 0x40a64eac, 0x10428012, 0x81100001, 0x61042140, 0x2209360d, 0x08000020, + 0x44a40880, 0x00000044, 0x41404000, 0x96919410, 0x00220200, 0x10000000, 0x88cc0080, 0x00024828, 0xa8200004, 0x0000b002, + 0x111c4004, 0x02411110, 0x40000001, 0x008a8202, 0x04402488, 0xb1201000, 0x00110185, 0x42800000, 0x18044a40, 0x10308440, + 0x00400020, 0xc10e1012, 0x00890821, 0x22000380, 0x04240008, 0x00441450, 0x49002100, 0x04004000, 0x00000808, 0x01020020, + 0x38382006, 0x04911014, 0x82000000, 0x5004c101, 0x05408002, 0x00082288, 0xa1100000, 0x02224485, 0x00840040, 0x70190800, + 0x08100462, 0x00428100, 0x81080308, 0x0a015830, 0x10880284, 0x84202003, 0x40008058, 0x24505400, 0x00020004, 0x88080828, + 0x20500800, 0x40241454, 0x28080000, 0x00804000, 0x0422282a, 0x1001d010, 0xc1100084, 0x00840001, 0x80082008, 0x04000100, + 0x23008342, 0x02850021, 0x08004484, 0x40620200, 0x00020800, 0x90008442, 0x05401100, 0x00310091, 0x02000000, 0x28880a20, + 0x00102004, 0x04000448, 0x00441010, 0x08280000, 0x50000000, 0x8002e828, 0x40140000, 0x21001100, 0x12804097, 0xa002a008, + 0x00080000, 0x04010342, 0x02810000, 0x09201604, 0x404440a1, 0x00000000, 0x80000800, 0x14029042, 0x02d00310, 0x01210020, + 0x20080481, 0x0c004000, 0x00002040, 0x00400c18, 0x38040004, 0x04000440, 0x00501014, 0x00004000, 0x40240a00, 0xb8022028, + 0x10114000, 0x01040102, 0x42089291, 0x00000000, 0x00880002, 0xa100206c, 0x44034420, 0x00c40084, 0x08008301, 0x00200002, + 0x00420c50, 0x87109100, 0x10810081, 0x02000000, 0x08086a00, 0x00020000, 0x0040044a, 0x743010a4, 0x00044020, 0x00208010, + 0xa80a280a, 0x00000001, 0x01000010, 0x56915200, 0x00040008, 0x20020100, 0x0008a5c6, 0x02000000, 0x05440000, 0xc8a04005, + 0x00038000, 0x00001280, 0x8140286a, 0x02110390, 0x1c000801, 0x00a00400, 0x04021400, 0x20582068, 0x50044010, 0x00000004, + 0x04000008, 0x40005454, 0x10240a20, 0x0800008a, 0x2098a400, 0x90010000, 0x01001314, 0x00120081, 0x42000000, 0x00022008, + 0x25ccc400, 0x80015804, 0x40000140, 0x02040233, 0x00a00000, 0x08000002, 0x950290d0, 0x08810281, 0x02400100, 0x00102c08, + 0x00200060, 0x20400000, 0x54085411, 0x00000824, 0x08140100, 0xa0a2a082, 0x00001000, 0x01190300, 0x5240409c, 0x00080008, + 0x00402001, 0x20840002, 0x82000640, 0x01044004, 0x440a80a1, 0x00221902, 0x20810040, 0x8900c504, 0x16010281, 0x00400010, + 0x20902000, 0x14100048, 0x08600400, 0x400c1830, 0x00204000, 0x14200000, 0x00405816, 0x80220180, 0x080c0800, 0x2010a02a, + 0x40911050, 0x01000004, 0x120402e1, 0x08080100, 0x00000000, 0xa500e018, 0x40434440, 0x02240184, 0x0080320b, 0x88028802, + 0x00400460, 0x05001014, 0x10910109, 0x02000220, 0x28202882, 0x04488000, 0x00040440, 0x5010d214, 0x08200000, 0x00000800, + 0xa400202b, 0x00128010, 0x11000140, 0x42085285, 0x24882820, 0x00030000, 0x80140d3a, 0x42400044, 0x01000200, 0x0884e081, + 0x80030008, 0x10208820, 0x01101452, 0x22000100, 0x00010001, 0x0ce82282, 0x00000c08, 0x04400000, 0x50008274, 0x80044821, + 0x10401448, 0x8480c020, 0x0000281e, 0x40240000, 0x28030121, 0x1411c000, 0x81000000, 0x04ac1e15, 0x20002088, 0x02080000, + 0xdd020c02, 0x00054001, 0x004083c4, 0x50300800, 0x18001020, 0x00028002, 0x87906148, 0x02810081, 0x00040410, 0x08400a2c, + 0x40083400, 0x20400140, 0x16320000, 0x00064004, 0x01000010, 0x2828ae60, 0x10014083, 0x81100110, 0x42041408, 0x00208440, + 0x00800202, 0x242a310c, 0x02444a80, 0x01010000, 0xd0801014, 0x0c228060, 0x80000002, 0x501c0101, 0x03400610, 0x00801000, + 0x2025c88d, 0x04002000, 0x00180100, 0xd8c244e2, 0x000c1000, 0x04004804, 0x02428012, 0x00000020, 0x49248100, 0x22481c01, + 0x82170219, 0x11002082, 0x00401c24, 0x00000100, 0xa0880408, 0x45726020, 0x00014005, 0x00800160, 0x620c980a, 0x08208002, + 0x00020280, 0xf14c4440, 0x289101a1, 0x06003010, 0xc02aca00, 0x10104410, 0x05400048, 0xc0859005, 0x00000800, 0x88008020, + 0x02630102, 0x00044008, 0x41001290, 0x3e992401, 0x00000000, 0x0000040a, 0xbc0a3904, 0x03618844, 0x08040000, 0x60904200, + 0x10028002, 0x801014a0, 0x0540600d, 0x02a10091, 0x00082108, 0xc0028a60, 0x40400000, 0x050001d4, 0x3a118400, 0x200c4820, + 0x48082404, 0x04c60040, 0x80123a90, 0x01008002, 0x2be90120, 0x02014201, 0x08b01008, 0x544400d4, 0x20000000, 0x00180440, + 0x1d60210a, 0x00054811, 0xc0a02020, 0x32128014, 0x04000080, 0x8804c002, 0x214a0358, 0x00910405, 0x30080882, 0x4a243228, + 0x10005000, 0x41400000, 0x86070542, 0x00202020, 0x001a010e, 0x8b010a11, 0x02804540, 0x60118024, 0x14441070, 0x000a0a01, + 0x84409080, 0x28202408, 0x03840280, 0x40002962, 0x30305015, 0x0403a040, 0x88000010, 0x20580102, 0x02010600, 0x3188d0a4, + 0x4824000b, 0x00000c00, 0x45403010, 0x80130046, 0x20008280, 0x504402c4, 0x00000400, 0x00202000, 0x0802cc60, 0x8108020a, + 0x44855144, 0x12000a31, 0x20300000, 0x0c088408, 0x80401012, 0x210220c0, 0x00114081, 0x00a42a2c, 0x4a000100, 0x800a2400, + 0x10007014, 0x01408002, 0x02090841, 0x0090a12a, 0x04200280, 0x90000140, 0x60045694, 0x0c500200, 0x00002000, 0x812008c2, + 0x08800128, 0x12195014, 0x480200a1, 0x21808200, 0x0002800a, 0x24481450, 0x80042000, 0x42010801, 0x290423ac, 0x00804000, + 0x80608400, 0x10125056, 0x45000000, 0x22800900, 0x0001a20b, 0x080000a0, 0x80001050, 0x40444685, 0x16380000, 0x08082008, + 0x46844444, 0x10100000, 0x28003810, 0x84620000, 0x010000a0, 0x10115203, 0x48a40188, 0x02088014, 0x80420402, 0x34108040, + 0x01082808, 0x40015801, 0x28280324, 0x02840000, 0x00001080, 0x50160010, 0x85008542, 0x08452081, 0xa22a000c, 0x00800a02, + 0x01405000, 0x42940440, 0x040000a4, 0x20002010, 0x84408028, 0x1c6a0900, 0x43004202, 0x18a40081, 0x00101014, 0x2c200400, + 0x10130062, 0x00082008, 0x13500010, 0x20280124, 0xc805c000, 0x00008048, 0x50040010, 0x80c20a83, 0x02002301, 0x85320880, + 0x00811420, 0x3c004000, 0x42c9001c, 0x00140441, 0x00201000, 0x02884694, 0x82449800, 0x00200802, 0xa4008440, 0x09082020, + 0x12054201, 0x00a20000, 0x0010101c, 0x04002500, 0xc0500040, 0x210a808a, 0x08014101, 0x40202204, 0x00040820, 0x12000002, + 0x00940000, 0xc142c5d0, 0x00812081, 0x2208000a, 0x0c221a20, 0x10401102, 0x46008444, 0x00804010, 0x00202080, 0x20140002, + 0x090208a0, 0x02010088, 0xc0b84041, 0x10049630, 0x0002000c, 0x00080102, 0xa040a040, 0x0b810100, 0x00000008, 0x44044484, + 0x14082201, 0x00108030, 0x80661842, 0x23a90100, 0x00008601, 0x08028080, 0x00104068, 0x50000810, 0x04402400, 0xa8880024, + 0x04004046, 0x68202c00, 0x00281000, 0x9052000a, 0x09008930, 0x02010601, 0x00800080, 0x30503014, 0x40000000, 0x304c4000, + 0x8100300a, 0x08214101, 0x04100204, 0x4206a4c0, 0x94401000, 0x00020000, 0x01888962, 0x00012081, 0x02804008, 0x00100630, + 0x00245100, 0x40480d40, 0xac000000, 0x181a0234, 0x00008008, 0x81210900, 0x32000200, 0x08802021, 0x00101092, 0x44040000, + 0x20614040, 0x0008340c, 0xcb220080, 0x00048101, 0x00904826, 0x10018000, 0x80100210, 0x00020106, 0x02004080, 0x014e1208, + 0x2c812c43, 0x00200000, 0x004404a4, 0x04000041, 0x00220010, 0x44002200, 0x00600600, 0x00205814, 0x80000540, 0x291c80e0, + 0x06054101, 0x00820018, 0x10103082, 0x04000040, 0x704a0018, 0x01002206, 0xc8814011, 0x00001620, 0x0204800c, 0x901a1910, + 0x04200002, 0x014085c0, 0x0021020c, 0x20888080, 0x02000805, 0x5000a000, 0x04440442, 0x08000020, 0x8000680c, 0x08020120, + 0x20301213, 0x12190450, 0x40800a00, 0x05049000, 0x04088040, 0x200005b2, 0x8100680d, 0x42430100, 0x10044004, 0x20000000, + 0x8cb28000, 0x00001800, 0x114026b3, 0x22202320, 0x80080080, 0x08814841, 0x04440004, 0x40000098, 0x000294c2, 0x30000020, + 0x04442440, 0x88801880, 0x00006000, 0x88228008, 0x31190a33, 0x12010201, 0x00001080, 0x4c304c70, 0x0048a504, 0x08200002, + 0x31840828, 0x44034941, 0x008c0204, 0x92000010, 0xa8220402, 0x100480c0, 0x41542028, 0x20810081, 0x42001120, 0x04200218, + 0x90122804, 0x000004c0, 0x0c4e1001, 0x40206022, 0x89820008, 0x01408910, 0x06184201, 0x00000000, 0x30c41890, 0x08000404, + 0x08490008, 0xe000a050, 0x13a00122, 0x0c010800, 0x4006529d, 0x00021010, 0x00108000, 0x9448010a, 0x02a10028, 0x81082201, + 0x08000cc4, 0xa4000040, 0x00440510, 0xc0100204, 0x80000002, 0x40043004, 0x16120042, 0x2802c002, 0x01000800, 0x03e027f1, + 0x00051281, 0xd8100020, 0x00084818, 0x80020000, 0x22802440, 0x0518002c, 0x00054023, 0x02000a04, 0x40e0a190, 0x0c000000, + 0x80109010, 0x3102200a, 0x00010180, 0x20c00448, 0x02248221, 0x00402000, 0x15080c54, 0x0a810003, 0x00005000, 0xe0360442, + 0x0a088d21, 0x52002080, 0x00850015, 0x00301048, 0x80000008, 0x21504240, 0x051aa002, 0x4a040804, 0x00a00421, 0x00094208, + 0x80400180, 0x14100010, 0x6106940a, 0x020001c1, 0x0008000a, 0x4083a200, 0x60700410, 0x0d000b44, 0x12858022, 0x00201800, + 0x48008004, 0x10d24640, 0xa0209810, 0x05022000, 0x0bcd0020, 0x00910013, 0x0000020c, 0x1e2051c0, 0xe0000008, 0x000e8000, + 0x11102410, 0x04215841, 0x42001304, 0x08c40082, 0x04100018, 0x00429022, 0xf1044100, 0x02092841, 0x00000000, 0x608406ac, + 0x44144400, 0x11601140, 0x08838210, 0x880208a4, 0x00000388, 0x03e18140, 0x62810000, 0x101c2006, 0x0c201e10, 0xa408c0a1, + 0x00000000, 0x19522408, 0x02000100, 0x40240057, 0x00017aa0, 0x00c08000, 0x80020050, 0x6c043102, 0x02004208, 0x019b0c20, + 0xd0020085, 0x00040002, 0x41002454, 0xae701200, 0x08004001, 0x04000404, 0x80506040, 0x1828a18a, 0x00000030, 0x41000800, + 0x30010211, 0xc2500000, 0x00825080, 0x84020028, 0x00282104, 0x21040502, 0x40618041, 0x00100204, 0x10844800, 0x040200e0, + 0x0a409402, 0x81080000, 0x180120b0, 0x22000900, 0x80b20203, 0x04005054, 0x00440408, 0x12080000, 0x00102028, 0x69080000, + 0x04228800, 0x42844101, 0x00100002, 0x90411214, 0x80082000, 0x01000002, 0x21028088, 0x028017d0, 0x08040024, 0x64484000, + 0x14000c42, 0x80211010, 0x01128001, 0x0a090908, 0x00402200, 0x20800081, 0x54141020, 0x00400044, 0x00220400, 0x00022090, + 0x00082840, 0x04545018, 0x00000020, 0x00280800, 0x59000008, 0x50813003, 0x20048010, 0x80120580, 0x02002004, 0x00084a08, + 0xa1420440, 0x40018006, 0x04204000, 0x2a0c0321, 0x84c28082, 0x00000000, 0x01000c44, 0x08890301, 0x12004090, 0x00101808, + 0x30004020, 0x80500000, 0x04242440, 0x20001012, 0x00000804, 0x4922a028, 0x82081010, 0x40000081, 0x10100200, 0x000c400c, + 0x80402900, 0x25810022, 0x02030424, 0x0000c140, 0x40a40200, 0x18400801, 0x80009082, 0x04020010, 0x0ab104c4, 0x01000100, + 0x20044201, 0x04082440, 0x10500820, 0x00810018, 0x40000802, 0x00000020, 0x1210404c, 0x00008460, 0x08001812, 0x41240000, + 0x14911831, 0x22082008, 0xc0024484, 0x00001018, 0x00042120, 0x280a0200, 0x0044200a, 0xc5008004, 0x08a144e0, 0x02004114, + 0x90009201, 0x01120902, 0x04018642, 0x22c00080, 0x00280121, 0x484046c0, 0x04000800, 0x00102008, 0x08020c44, 0x10241030, + 0x80088000, 0x03100920, 0x20003019, 0x100502c2, 0x00403010, 0x6000440c, 0x04a88040, 0x00062028, 0x81204106, 0x5a910200, + 0x80004006, 0x00020081, 0x00489800, 0x07008102, 0x008006c1, 0x30310012, 0x44044ee1, 0x08080000, 0x10403008, 0x08300c40, + 0x08000000, 0x34100000, 0x84600000, 0x08000100, 0x41008000, 0x0a290200, 0x30100000, 0x00820000, 0x70100000, 0x00440000, + 0x04080100, 0x28080000, 0x8106000c, 0x42810008, 0x40248000, 0x80020420, 0x01000104, 0x80470100, 0x24009000, 0x52900100, + 0x46a00000, 0x08000000, 0x804a0000, 0x84400200, 0x18100100, 0x01660001, 0x1a3002a2, 0x20080000, 0x00010000, 0x101c0480, + 0x60000100, 0x00820000, 0xa81c0838, 0x51000000, 0x06410010, 0x40040000, 0x00800804, 0x80220020, 0x92c20000, 0x05010080, + 0x20180200, 0x0cc50004, 0x80200000, 0x00000000, 0x04720000, 0x00000000, 0x00000022, 0x00002200, 0x00801000, 0x04280184, + 0x0000a402, 0x00000048, 0x00002024, 0x00000140, 0x02080a00, 0x00021002, 0x00402020, 0x00040c40, 0x00000010, 0x00140280, + 0x80a02800, 0x0020c008, 0x02000020, 0x20000022, 0x00200004, 0x42081202, 0x00400000, 0x00100811, 0x00004000, 0x00000210, + 0x04200040, 0x00210000, 0x00008000, 0x00040820, 0x14800202, 0x00090015, 0x00009220, 0x00000000, 0x04040004, 0x0051010b, + 0x08048480, 0x04000211, 0x0000008c, 0x10000440, 0x00004054, 0x12201000, 0x00088100, 0x00004808, 0x00402000, 0x40048240, + 0x00802c00, 0x049280c8, 0x02005412, 0x00000044, 0x00140a71, 0x000040b9, 0x84221800, 0x00408810, 0x08145402, 0x0040408d, + 0x50302211, 0x00088080, 0x04104002, 0x94083100, 0x40005055, 0x00000283, 0x00000800, 0x40002458, 0x02400440, 0x0000c291, + 0x00004809, 0x200025c4, 0x2200a0aa, 0x00809406, 0x01481040, 0x00940ca0, 0x0080690d, 0x00402008, 0x00009514, 0x00205040, + 0x40004000, 0x00022808, 0x18612083, 0x0000c440, 0x00003040, 0x60205200, 0x00180122, 0x48406000, 0x2004b901, 0x8004040a, + 0x00400031, 0x00002800, 0x00a003a0, 0x009094d3, 0x1000040e, 0x00202264, 0xa8480400, 0x18461410, 0xd5004014, 0x0b414000, + 0x6281a82d, 0x20003298, 0x903a8000, 0x55000342, 0x01814011, 0x2a050289, 0xa0802820, 0x48200040, 0x21420100, 0x03815884, + 0x18010000, 0x200a0802, 0x9c520140, 0x05890680, 0x81160121, 0x18814880, 0x01040428, 0x0c292800, 0x14005449, 0xc8069830, + 0x52014004, 0x2b002280, 0xb0121003, 0x8d0a0004, 0x4050d080, 0x02004401, 0x2ba40204, 0xa0080020, 0x01000840, 0xc08a46c5, + 0x02004000, 0x13030004, 0xa0800d22, 0x052a9012, 0x04100000, 0xc0931011, 0x4b052025, 0x210000a0, 0x2e030400, 0x840a8000, + 0x06000008, 0x08600a02, 0x00580040, 0x98208080, 0x01000120, 0x282b0002, 0x00100000, 0x10080000, 0x51505400, 0x07852080, + 0x42030000, 0x20080004, 0x0c668400, 0xc4000000, 0x01550041, 0x0a830030, 0x00208000, 0x90029418, 0x05002000, 0x13410000, + 0x4ab12200, 0x00280001, 0x28400210, 0x14580002, 0x08120000, 0x10240000, 0x2a290120, 0xb0828810, 0x41180000, 0x00962200, + 0x52050100, 0x03090000, 0x28020081, 0x000c800a, 0x00420100, 0x0a851000, 0x43210010, 0x8c020009, 0x81520104, 0x14c42204, + 0x12010000, 0x03a54800, 0x00400208, 0x0c000300, 0x08521050, 0x00080010, 0x00002080, 0x00040008, 0x40120002, 0x04041c40, + 0x02000000, 0x20000000, 0x00000c24, 0x08000000, 0x00000100, 0x20089016, 0x00000008, 0x01004000, 0x0020220a, 0x00000400, + 0x00000000, 0x04004189, 0x00000226, 0x00100040, 0x00808010, 0x00000002, 0x20001144, 0x04000000, 0x40000084, 0x00040100, + 0x00000408, 0x40000000, 0x00002008, 0x88000420, 0x00000942, 0x00000018, 0x00009020, 0x80202402, 0xc0000000, 0x00002000, + 0x00080828, 0x00900000, 0x0020c3c0, 0x00040000, 0x28004048, 0x20000482, 0x00000000, 0x40280000, 0x320808c1, 0x40012000, + 0x40001040, 0x00008020, 0x30000800, 0x00000122, 0x0040a209, 0x00000100, 0xc0801291, 0x00044044, 0x00022008, 0x80000000, + 0x80108c22, 0x00000265, 0x00804000, 0x10801190, 0x42008002, 0x10000810, 0xc0482540, 0x08040281, 0x20003008, 0x40084804, + 0x00000460, 0x01044010, 0x00809006, 0x02000022, 0x01008800, 0x814002c9, 0x00001000, 0x00002280, 0x04004151, 0x04002040, + 0x0000040c, 0x20408810, 0x004041a4, 0x04800801, 0x21001212, 0x04008002, 0x10001000, 0x00002540, 0x00000280, 0x00080010, + 0x80028801, 0x00002400, 0x00104008, 0x00809062, 0x0000880e, 0x00146014, 0xc28a1442, 0x00228022, 0x09000100, 0x02812949, + 0x91140280, 0x00811011, 0x64684444, 0x220a0400, 0x00400000, 0x9920a028, 0x08250a42, 0x44000020, 0x22184185, 0x80500010, + 0x00821002, 0x3500c548, 0x02012001, 0x20880200, 0x80260884, 0x04404004, 0x08000008, 0xd01396f2, 0x88208000, 0x00000020, + 0x268f28c9, 0x11900301, 0x02050014, 0x40605482, 0x20080402, 0x04402000, 0x99328878, 0x48240800, 0x00800024, 0x12114019, + 0x80421380, 0x00000000, 0x7518850e, 0x22892000, 0x00000081, 0x40204a50, 0x1050006c, 0x45000100, 0x88029610, 0x28200000, + 0x08248000, 0x84c00404, 0x08204080, 0x01000000, 0x00419a2a, 0x01082010, 0xb0934201, 0x44601184, 0x044a0860, 0x0204240a, + 0xa1109800, 0x00014010, 0x08040124, 0x42880291, 0x00003008, 0x10328800, 0xa5082542, 0x00010209, 0x20400830, 0xc2aa4080, + 0x48408004, 0x05000050, 0x90837401, 0x88020800, 0x00040302, 0x26390028, 0x03018090, 0x00040341, 0x50b03804, 0x00400008, + 0x04000400, 0xa03ae000, 0x00040182, 0x09800060, 0x62097204, 0x10100010, 0x00002803, 0xa5668540, 0x00880009, 0x080010a0, + 0x62232204, 0x4444c000, 0x01000044, 0x80001c12, 0xa00800a8, 0x64006008, 0x08420040, 0x92202218, 0x288a1824, 0x04000082, + 0x03805000, 0x10018000, 0x00100111, 0x0042a04a, 0x20000284, 0xd90c0500, 0x44010280, 0x08004804, 0x30841021, 0x12420400, + 0x80008002, 0x41341114, 0x248908a0, 0x02002240, 0x08040003, 0x00640010, 0x00000548, 0x54101000, 0x02002020, 0x01024804, + 0x28e88402, 0x01000014, 0x84051100, 0x58504209, 0x04802020, 0x0248004a, 0xb8028480, 0x00005205, 0x01840180, 0x58100800, + 0x10610000, 0x82108040, 0x050a4432, 0x00000281, 0x00840100, 0x8229100a, 0x00540840, 0x28002420, 0x04021001, 0x020a0810, + 0x20400048, 0x50141400, 0x20080004, 0x02204010, 0x88022c28, 0x40110010, 0x11809102, 0x00000285, 0x80040000, 0x00280008, + 0x2742e400, 0x00810242, 0x40000000, 0x00344125, 0x08408080, 0x80020400, 0x13000842, 0x02810301, 0x00000030, 0x24381888, + 0x00000000, 0x04400000, 0x48103454, 0x20080000, 0x00242000, 0x9802482a, 0x40000000, 0x01108014, 0x10045081, 0x80080200, + 0x02802100, 0x2003840a, 0x04410140, 0x01044004, 0x4aa00821, 0x80408282, 0x00020000, 0x44000510, 0x1a110000, 0x01800081, + 0x20203a60, 0x10100000, 0x00080000, 0x04405458, 0x08040000, 0x44200448, 0x00401004, 0x00204000, 0x28000000, 0x0004083a, + 0x00012004, 0x911e8010, 0x4a001001, 0x20004080, 0x00000300, 0x85c8a42a, 0x00014300, 0x00040040, 0x42a2002d, 0x00000800, + 0x00020010, 0x8d1080c2, 0x18010701, 0x00600080, 0x22803828, 0x00400000, 0x00080002, 0x14100440, 0x08040014, 0x40000020, + 0xa02af808, 0x00000000, 0x01000004, 0x52115312, 0x00020000, 0x00040080, 0xa488a409, 0x00040000, 0x09c00846, 0x42214081, + 0x00400040, 0x80000322, 0x05028518, 0x10902020, 0x00000000, 0x22011281, 0x10400000, 0x40080848, 0x0ca1d410, 0x200c0000, + 0x04000000, 0xe0201000, 0x18000802, 0x00144024, 0x8020a000, 0x00090094, 0x31121100, 0x02844209, 0x00080408, 0x20002000, + 0x45008042, 0x80070104, 0x08404000, 0x42202801, 0x80828202, 0x000000b0, 0x01501040, 0x14210781, 0x00800000, 0x22082800, + 0x08000440, 0x00100008, 0x54445020, 0x0020032c, 0x08000010, 0xa40aa882, 0x00041280, 0x01010004, 0x58104011, 0x02002108, + 0x00800000, 0x24488500, 0x008400e0, 0x01004004, 0xc2020003, 0x00008202, 0x00030800, 0x8d301500, 0x008002d0, 0x10400001, + 0x2a090800, 0x0000640c, 0x00600042, 0x14041030, 0x00200828, 0x04008042, 0x00001600, 0x48220020, 0x20040004, 0x80102b4a, + 0x00119080, 0x13080010, 0x40840801, 0x242a0200, 0x00000800, 0x8140e00e, 0x00251640, 0x40000000, 0x0a8050a5, 0x80020900, + 0x00000000, 0x0550d442, 0x10010014, 0x02800100, 0x2000aa81, 0x00480002, 0x04000008, 0x58205471, 0x08040086, 0x00280820, + 0x2010a408, 0x10100011, 0x81030004, 0x42805240, 0x20080100, 0x80042080, 0x04409468, 0x40844980, 0x01000000, 0x1a03122f, + 0x80220010, 0x10000000, 0x0500b406, 0x22914101, 0x00402080, 0x08000a42, 0x044c8040, 0x10000008, 0x403016b4, 0x2020c008, + 0x00000400, 0x404400d0, 0x80204000, 0x20002104, 0x181a1da9, 0x00010002, 0x0190c010, 0x504014e1, 0x0208a200, 0x28000004, + 0x85440418, 0x48014301, 0x00040040, 0x12a20896, 0x00400020, 0x000a1002, 0xc510a108, 0x12810c01, 0x00000240, 0x800860b4, + 0x44400008, 0x20001100, 0x98a2c454, 0x00040800, 0x0100002a, 0xa8b88241, 0x00004000, 0x03020010, 0x50103d20, 0x00008280, + 0x00810001, 0xa86e281e, 0x00040604, 0x05000140, 0x4a316890, 0x00400000, 0x00000422, 0xd4969111, 0x00800000, 0x010108e0, + 0x82046205, 0x40580000, 0x04000158, 0xaa205401, 0x18040004, 0x00080084, 0x1ed60450, 0x00200000, 0x4908d100, 0x06c12ca3, + 0xd0810109, 0x21120200, 0x0e0410d0, 0x20086408, 0x00008000, 0x95720804, 0x00010801, 0x02a44042, 0x6018110c, 0x08401080, + 0x00028622, 0xa1142008, 0x102902c0, 0x08000108, 0x66866031, 0x00501410, 0x11000800, 0x06054044, 0x80200020, 0x48000800, + 0x02410203, 0x40010000, 0x21028010, 0x16f875cc, 0x04022400, 0x00040201, 0x31581808, 0x82040246, 0x00208120, 0x60087898, + 0x18801402, 0x00410000, 0xa10aa001, 0x00b00201, 0x0e000190, 0x60034060, 0x00504000, 0x0100308c, 0x448b8e42, 0x00000010, + 0x4400540c, 0x90468010, 0x88280000, 0x01008028, 0x21912b00, 0x00811051, 0x10124086, 0x06640400, 0x64080022, 0x00402220, + 0x19328408, 0x40014111, 0xa800002c, 0x021400c0, 0x0080a002, 0x14320800, 0xa1400200, 0x00010701, 0x0020309a, 0x228c0864, + 0x04408000, 0x58141044, 0x80030483, 0x00080a00, 0x0022c10a, 0x8f8101f0, 0x52014400, 0x28a02285, 0x00701010, 0xa4008400, + 0x00482058, 0x09360100, 0x42040a00, 0x00000021, 0x00104086, 0x80021000, 0x08314400, 0x60848142, 0x00804014, 0x3503200a, + 0x0a448281, 0x00400800, 0x450c4070, 0x90a31400, 0x00100020, 0x600442c4, 0x04500002, 0x00202228, 0x000a8442, 0x0d000800, + 0x60014004, 0x822018b1, 0x10940a00, 0x04000100, 0x80081458, 0x21422102, 0x00018005, 0x48a42a88, 0x12004000, 0x80400460, + 0x10105014, 0x450e8102, 0x00a10200, 0x0200a00a, 0x400000a1, 0x00500140, 0x7d0cd790, 0x00800800, 0x0028200c, 0x89008460, + 0x01420800, 0x42004114, 0x30040a23, 0x04101000, 0x000a802a, 0x00c114d0, 0xa1002000, 0x00000001, 0x5ca02b2c, 0x200d4000, + 0x020000c0, 0x90525416, 0x01008008, 0x042108a0, 0x2008a30b, 0x0a800000, 0x04540052, 0x00004285, 0x10001500, 0x22002888, + 0x42881044, 0x02400490, 0x30a20000, 0x8c448008, 0x01186820, 0x10511203, 0x4aa44084, 0x00000010, 0x80000500, 0x34101042, + 0x0108b008, 0x02850985, 0x20680230, 0x48024000, 0x04421002, 0xd0140010, 0x01008104, 0x0a016a01, 0xa08a0088, 0x00000462, + 0x11564440, 0x42800004, 0x04200000, 0x28000012, 0x84428068, 0x00201900, 0x018c4280, 0x4a211001, 0x10102814, 0x00008400, + 0xb4122020, 0x01080048, 0x02800b12, 0x206c0005, 0x48004000, 0x00011000, 0x444c0430, 0x900280c2, 0x20280000, 0x81920980, + 0x42012225, 0x00524000, 0x5a81005c, 0x04001401, 0x08000000, 0x40004044, 0x1430a400, 0x08001000, 0xa202000a, 0x01242930, + 0x02010681, 0x10908010, 0x080c1820, 0x24000000, 0xc0404000, 0x010aa80c, 0x08010041, 0x40200422, 0x020c4204, 0xb0821000, + 0x04000180, 0x01008952, 0x00210200, 0x2888080a, 0x825004a1, 0x00004500, 0x50040084, 0x06403040, 0x08280000, 0x0002a42a, + 0x21100810, 0x92014000, 0x00a000d1, 0x00141104, 0x0c08a400, 0x60400250, 0x1102100a, 0x0a010800, 0x20242124, 0xc0004000, + 0x80000001, 0x00920492, 0x11009340, 0x20006000, 0x0482000a, 0x8a6102a1, 0x00000800, 0x40440204, 0x14081450, 0x00200000, + 0x00405044, 0x10100420, 0x02280002, 0x8c020010, 0x01000820, 0x30110209, 0x00800190, 0x0600b004, 0x60080000, 0x10540040, + 0x0102e408, 0x08010003, 0x04040200, 0xc20049a4, 0x10003002, 0x00a20050, 0x8548c100, 0x40012601, 0x001800a8, 0x02800000, + 0x48600900, 0x24141402, 0x00804040, 0x88220000, 0x04008026, 0x15802d18, 0x22004200, 0x00980080, 0x10001014, 0xc00a8421, + 0x00512040, 0x2904000a, 0x02000800, 0x40291024, 0x04044280, 0x00001100, 0x08160400, 0x84808057, 0x28000100, 0x01c90888, + 0x12020221, 0x14601000, 0x40862242, 0x80004404, 0x88120200, 0x00004002, 0x54600c50, 0x08000800, 0x802a8060, 0x21043182, + 0x50010041, 0x00900030, 0x0004524c, 0x24000040, 0x10480010, 0x03223488, 0x80250015, 0x00001800, 0x4880c022, 0x10000010, + 0x00100100, 0x8302968a, 0x00090128, 0x20000284, 0x06c00041, 0x08200000, 0x10441600, 0x44006bc0, 0x08210004, 0x00000908, + 0x811001b0, 0x420080c0, 0x20ce0032, 0x10113804, 0x04000041, 0x00401a00, 0x2108601a, 0x02000804, 0x40240120, 0xa802c488, + 0x10400010, 0x80930006, 0x0008a249, 0x00801000, 0x05092389, 0x2a000420, 0x04608400, 0x40040050, 0x10004804, 0x00080002, + 0x40400044, 0x10300290, 0x08222008, 0x80000100, 0x05804a21, 0x00410303, 0x10109004, 0x220c0410, 0x08080402, 0xa0c060c0, + 0x4d028028, 0x100100a1, 0x00904104, 0x7a040a18, 0x80000000, 0x00160042, 0x0124a504, 0x02810221, 0x48083008, 0x3460c092, + 0x84401404, 0x12040840, 0x0212c001, 0x48000002, 0xa5222420, 0x01480a11, 0x0010d209, 0x00810000, 0x12040590, 0x0000a000, + 0x00000042, 0x6528052c, 0x08040020, 0x10200a84, 0xc0d26011, 0x04000002, 0x00000410, 0xc2138000, 0x12882348, 0x01010800, + 0x28645087, 0x00001024, 0x02044110, 0x544184c1, 0x0a822800, 0x401404c0, 0x848a0282, 0xa0008006, 0x09020000, 0x032918b1, + 0x10911099, 0x02002004, 0x00604e20, 0xe0040102, 0x0448a400, 0x01120078, 0x42054801, 0x08200028, 0x0008329c, 0x00000002, + 0x14900150, 0xa142d404, 0x20012280, 0x00880120, 0x0a06080b, 0x04141040, 0x11200104, 0x80404403, 0x60080000, 0x00020078, + 0x8b210881, 0x52808010, 0x00101201, 0x0c246c86, 0xa40a0000, 0x00012100, 0x11101148, 0x40010400, 0x0264000c, 0x0088c00a, + 0x80020aa1, 0x00100400, 0x2944c146, 0x08201090, 0x14880020, 0xe201020b, 0x44407840, 0x01000004, 0x10100681, 0x20208010, + 0x04004010, 0x02d00440, 0x00000028, 0x01261004, 0xab498a42, 0x40012091, 0x00040004, 0x1af01300, 0x0000600a, 0x00400000, + 0x31089040, 0x048102a1, 0x40060004, 0x88004c00, 0x02021100, 0x84340050, 0x3140a402, 0x00090321, 0x2000088c, 0xca822000, + 0x40105400, 0x11400000, 0x84a100c0, 0xa0248010, 0x0802210a, 0x03c10e24, 0x42090005, 0x100003d0, 0x0c301020, 0x00028000, + 0x20c8444a, 0x15242130, 0x80000000, 0x48291aa5, 0x00844000, 0x04001000, 0x90100402, 0x22428048, 0x00010010, 0x010809ac, + 0x62808201, 0x00347004, 0x45c00040, 0x88818412, 0xb0000000, 0x00100040, 0x00420400, 0x10200000, 0x00002000, 0x298cc824, + 0x02014015, 0x10820000, 0x8010120a, 0xe00c8000, 0x0402058a, 0x01402000, 0x00010161, 0x00040004, 0x5a004a00, 0x249000c0, + 0x00020000, 0xc1608112, 0x28251e00, 0x10000088, 0x02880001, 0x40545430, 0x14008040, 0x00002000, 0x280a820c, 0x01000000, + 0x85200820, 0x40014043, 0x02002010, 0x10d41000, 0x800a8302, 0x00000884, 0x21502108, 0x00050680, 0x12000064, 0x64906800, + 0x04200040, 0x80020402, 0x085c8101, 0x40200830, 0x21802281, 0x92071000, 0x08405054, 0x10000008, 0x461e0500, 0x88002008, + 0x04404004, 0xa80c8010, 0x00001002, 0x08200920, 0x51002400, 0x000f9089, 0x74000110, 0x80100240, 0x240a0000, 0x02006004, + 0x81900808, 0x00018000, 0x02004042, 0x48d40c24, 0x90288300, 0x000a0093, 0x01500048, 0x00810400, 0x08241100, 0x2600e281, + 0x00180840, 0x4040402c, 0x06041400, 0x00000030, 0x002a0800, 0x1900800a, 0x80003000, 0x00000001, 0x30900194, 0x404d6408, + 0x8a000200, 0x21000000, 0x0404c046, 0x02000010, 0x400b0300, 0x00009083, 0x88002020, 0x04f20800, 0x00200781, 0x09800040, + 0x12096010, 0x20000400, 0x00000824, 0x04500058, 0x00085820, 0x08004c24, 0x04082040, 0x58000472, 0x00161800, 0x01208000, + 0x261908b1, 0x10003108, 0x80040600, 0x40007414, 0x28000008, 0x80e80000, 0x40042028, 0x01028112, 0x0ea14a44, 0x00104004, + 0x90028093, 0x01002000, 0x2041a102, 0x068006c0, 0x00081101, 0x442046e0, 0x08000800, 0x0042000a, 0x00208440, 0x18121812, + 0x810c0024, 0x22801821, 0x00102018, 0x10040200, 0x0400301c, 0x40094540, 0x20400080, 0x8000200e, 0x0102c820, 0x48240100, + 0x92025084, 0x00818201, 0x00100102, 0x2241a0c2, 0x05000601, 0x00800010, 0x000002a5, 0x08600c00, 0x44080048, 0x00300440, + 0x00002048, 0x04400000, 0x1c508400, 0x002200a0, 0x210c0000, 0x08310000, 0x00400010, 0x90008004, 0x10140080, 0x64000008, + 0x02c80000, 0x200e0048, 0xc1000000, 0x08010004, 0xc0040082, 0x02a00000, 0x01420000, 0x82830900, 0x04100090, 0x58000800, + 0x42a08000, 0x04402800, 0x20080001, 0x04520004, 0x100002a0, 0x09240000, 0x18310060, 0x22080410, 0x80800001, 0x30140294, + 0x40280008, 0x00400000, 0x28280049, 0xc1020000, 0x04840008, 0xc0040900, 0x02030000, 0x00508010, 0xa4028008, 0x03810304, + 0x10000000, 0x0ea90000, 0x00400000, 0x40164000, 0x94408042, 0x00080000, 0x00202082, 0x20800210, 0x00001000, 0x00080200, + 0x44000484, 0x80000008, 0x00000820, 0x00000012, 0x02800000, 0x00208002, 0x08001000, 0x40401420, 0x00142008, 0x00000000, + 0x00800002, 0x00000400, 0x00000000, 0x00008000, 0x02000404, 0x00000024, 0x00000000, 0x04002180, 0x00040000, 0x00000500, + 0x248c0000, 0x80420000, 0x00000080, 0x00000800, 0x04000102, 0x00010004, 0x00100810, 0x00001200, 0x00248000, 0x00c02000, + 0x00000080, 0x00a00020, 0x00202000, 0x08082000, 0x04440040, 0x00004000, 0x00008104, 0x00082000, 0x00000008, 0x00002601, + 0x00100820, 0x80008408, 0x80005044, 0x48c40902, 0x12020151, 0x00046829, 0x00a89202, 0x00202040, 0x84005740, 0x00084101, + 0x08022ab5, 0x00002800, 0x00088000, 0x00404500, 0x44205375, 0x80140881, 0x0000c22c, 0x00043042, 0x00000048, 0x01044313, + 0x80005281, 0xc0180068, 0x00828600, 0x8200d058, 0x0b001812, 0x00104405, 0x02002b08, 0x0024b002, 0x0000c068, 0x40001440, + 0x4a144001, 0x00082120, 0x0040a4a6, 0x10000800, 0x04105516, 0x02005241, 0x00100280, 0x60544c2f, 0x84000042, 0x00021490, + 0x12200013, 0x80041aa1, 0x04000168, 0x02808c82, 0x00001010, 0x6c000080, 0x024a1400, 0x1c020440, 0x01008000, 0x01710924, + 0x22018a28, 0x20100009, 0x1c021800, 0x51541450, 0x01054301, 0x72112209, 0xa0a0a828, 0x04020400, 0xb1084084, 0x0b814344, + 0x10019a30, 0x6a2a0800, 0xb4428462, 0x05980110, 0x00730300, 0x1e850225, 0x210000c8, 0x38610400, 0x004a9040, 0x40004012, + 0x50210800, 0x09810981, 0x30002202, 0x0d781010, 0x80c254d4, 0x10002209, 0x33010211, 0xa88aa048, 0x05008402, 0xe00a0441, + 0x58054084, 0x83030910, 0x00080962, 0x13002008, 0x20000010, 0x40831200, 0x49910880, 0x29200001, 0xa0412400, 0x145a8414, + 0x48280802, 0x24400028, 0x56522014, 0x00000090, 0x09300002, 0x28ac6080, 0xa2134000, 0x10088012, 0xc1520080, 0x43050004, + 0x02091002, 0xac820000, 0xc00c8043, 0x04020500, 0x5be50000, 0x02010081, 0x08820002, 0x806a3000, 0x25000448, 0x03410080, + 0x6a854810, 0x0c002030, 0x80482008, 0x24500400, 0x10260000, 0x08000400, 0x292c8024, 0xa28b0100, 0x81020000, 0x54d50000, + 0x60004104, 0x028c0000, 0xa02b00a0, 0x81000000, 0x40464304, 0x4c850000, 0x02a01021, 0x80030080, 0x8d029402, 0x04d90100, + 0x02100081, 0x03a94038, 0x20042800, 0x00400000, 0x44581000, 0x00002050, 0x00000280, 0x00084100, 0x10040002, 0x00001440, + 0x00000000, 0x00000000, 0x00002020, 0x10000104, 0x00a00000, 0x20000030, 0x00200000, 0x01000080, 0x00002008, 0x00000000, + 0x00100000, 0x8000000c, 0x00100000, 0x10000000, 0x00b20001, 0x00008000, 0x00081100, 0x00000a00, 0x00000004, 0x00000120, + 0x00002049, 0x00001000, 0x00104008, 0x10008820, 0x00000002, 0x03000000, 0x00001002, 0x00000000, 0x06400800, 0x00002010, + 0x21000000, 0x00008000, 0x00006004, 0x30400200, 0x00000040, 0x00008406, 0x10000004, 0x08000200, 0x002083e0, 0x30000002, + 0x00000008, 0x00849014, 0x00004800, 0x80000028, 0x00002203, 0x40008110, 0x00001201, 0x08000444, 0x04040000, 0x00002488, + 0x10004840, 0x00404203, 0x00000984, 0x00009010, 0x00000020, 0x00008002, 0x00006140, 0x04003209, 0x00000c10, 0x000040a6, + 0x90000440, 0x01200000, 0x00009093, 0x10000800, 0xc1006024, 0x04100288, 0x40405192, 0x00008205, 0x00600440, 0x08000008, + 0x00000400, 0x00002922, 0x00008804, 0x080040e0, 0x00081209, 0x10108402, 0x00000010, 0x00001148, 0x00202a01, 0x00000088, + 0x88064000, 0x00000440, 0x40004020, 0x06001013, 0x00000820, 0x04140400, 0xd0021210, 0x00228002, 0x8900000c, 0x26c92b61, + 0x01101000, 0x12010201, 0x44e004b4, 0x200e0040, 0x0000c408, 0x89102822, 0x4c050a24, 0x00404100, 0x32b81081, 0x84029000, + 0x00100010, 0x714c4402, 0x08810a81, 0x02080100, 0x4024006c, 0x04406404, 0x60000000, 0x12978252, 0x08220802, 0x80008000, + 0x22893221, 0x11114209, 0x02840010, 0x04001d80, 0x2008a444, 0x44000000, 0x99320828, 0x08c44026, 0x40000880, 0x12110211, + 0x10220510, 0x80009000, 0x654c210e, 0x02a12888, 0x20100021, 0x40004240, 0x04480400, 0x01000100, 0x9897d2d1, 0x40208024, + 0x00000400, 0x9aa28050, 0x88000020, 0x01006008, 0x22639880, 0x53900180, 0x00010203, 0x00485054, 0x044c2008, 0x00000400, + 0xa1128102, 0x00051200, 0x00000840, 0x620040b5, 0x0032201a, 0x08000000, 0xd1ccb048, 0x2c090201, 0x00000d80, 0xc2864020, + 0x04009402, 0x0120200c, 0x90d341d1, 0xc8048820, 0x00020182, 0x06280048, 0x23810500, 0x00000205, 0x50743070, 0x00008000, + 0x00406448, 0xb1080192, 0x48201004, 0x04044020, 0x12021800, 0x00003408, 0x00800211, 0xf50781c2, 0x00d84800, 0x000000a0, + 0x2a072205, 0x4004440c, 0x01400000, 0x06201052, 0x882a0002, 0x0014204e, 0x4c001090, 0x00002808, 0x00004120, 0x38a80000, + 0x05104000, 0x00811012, 0xd0028a85, 0x020e0008, 0x00002100, 0xbd200440, 0x00210280, 0x10148004, 0x40c04823, 0x160a0500, + 0x88008042, 0x21400000, 0x0a1902a4, 0x20001910, 0x00a00009, 0x40040040, 0x04002000, 0x12501414, 0x08020028, 0x81004000, + 0x20a90802, 0x01004010, 0x00042200, 0x54119001, 0x0e400002, 0x00000104, 0xa98a24c8, 0x00904280, 0x00048104, 0x60010821, + 0x8a108440, 0x10000002, 0x016a0000, 0x24a000b0, 0x40010100, 0x0200b203, 0x08040850, 0x04400408, 0xc01a1000, 0x00a00800, + 0x0c400400, 0x00005010, 0x60080000, 0x0810200c, 0x00268c22, 0x00010100, 0xc1000000, 0x14345215, 0x08000000, 0x00820008, + 0x2748a482, 0x82050210, 0x00004140, 0x408008a5, 0x88208052, 0x00000000, 0x11421000, 0x02910201, 0x04000d00, 0x202020a0, + 0x00500000, 0x00000408, 0x5c0c1050, 0x00002000, 0x08204804, 0x000a8028, 0x40501000, 0x80000002, 0x32000091, 0x0188200c, + 0x80218100, 0x24064600, 0x00800006, 0x41044140, 0x02500a01, 0x840b0402, 0x00608060, 0x08100180, 0x03010000, 0x00a000b0, + 0x10081209, 0x04000400, 0x20102000, 0x08445854, 0x60000020, 0x00100400, 0x54040004, 0x00200000, 0x08000000, 0x20020820, + 0x00058000, 0x01102000, 0xd288125b, 0x0008e180, 0x00000008, 0xa1020406, 0x00014200, 0x40040100, 0x066008ed, 0x04428000, + 0x08000000, 0x81901456, 0x18010201, 0x00802980, 0x02080000, 0x24000000, 0x00200448, 0x50404021, 0x08309800, 0x00000000, + 0xa00c003e, 0x00003000, 0x01020190, 0x50150000, 0x00002000, 0x20800208, 0x820a4407, 0x04040000, 0x01404100, 0x4a018a55, + 0x00000420, 0x00808000, 0x956201d2, 0x00800000, 0x000000a0, 0xaa113209, 0x00000400, 0x00404040, 0x143d1814, 0x4020a028, + 0x00000004, 0x14501010, 0x80000820, 0x4028400a, 0x2806a000, 0x00110010, 0x01005100, 0x12000284, 0x04820409, 0x40040000, + 0x2148a042, 0x00810200, 0xc0040104, 0x020048a1, 0x00000000, 0x8c008002, 0x01220050, 0x10015681, 0x00100900, 0x42ca0028, + 0x2020a444, 0x44500000, 0x08045210, 0x180008a2, 0x00082000, 0x80220008, 0x2000c084, 0x00100010, 0x52801301, 0x0104a008, + 0x20090000, 0x80420452, 0x04004004, 0x01800100, 0x42250a01, 0x080080b2, 0x30000000, 0x85025540, 0x00000080, 0x00100a01, + 0x2ae12004, 0x00500468, 0x00080000, 0x14045010, 0x40000824, 0x80202400, 0x10005212, 0x42340000, 0x0808000c, 0x2000ace0, + 0x10171002, 0x83000100, 0x40804a14, 0x202824c9, 0x08008000, 0x05401802, 0x40154214, 0x80000100, 0x0a8238b1, 0x90028002, + 0x00200400, 0x01001048, 0x20910310, 0x02000880, 0x04482021, 0x00401400, 0x00140008, 0x1c20c156, 0x48200800, 0x00080102, + 0x200084e1, 0x10145010, 0x03000004, 0x80032b69, 0x68c88040, 0x04202080, 0x8000180a, 0x40040c04, 0x09000180, 0x02024221, + 0x80620400, 0x00088000, 0x15911042, 0x02810110, 0x000000a0, 0x08086a09, 0xa4620400, 0x00000002, 0x50001150, 0x08240024, + 0x00100400, 0x1c068080, 0x08804004, 0x00000100, 0xa0a8aa2b, 0x00534004, 0x01440180, 0x52801630, 0x00080009, 0x0000a042, + 0xb1600020, 0x08050201, 0x04004580, 0x42b20804, 0x04020060, 0x00001400, 0xa140a112, 0x02010201, 0x00080820, 0x10b46086, + 0x70001400, 0x04004008, 0x09d20044, 0x2a048800, 0x01000010, 0x04690222, 0x80000000, 0x01043000, 0x56924799, 0x00200004, + 0x00010040, 0xb84aa42a, 0x0c804104, 0x41040200, 0x02093088, 0x10000c40, 0x00208020, 0x8456211f, 0x41a01221, 0x02040000, + 0x6801a882, 0x00085418, 0x85400000, 0x409682c1, 0x8020202c, 0x14006060, 0x40008410, 0x000c0000, 0x0100b024, 0xae210f89, + 0x00130203, 0x51000000, 0x0c041470, 0x008a2008, 0x06400480, 0x21004824, 0x00050201, 0x8200c962, 0x78a8201c, 0x00420000, + 0x00001080, 0xd10ca40a, 0x04010250, 0x002021a8, 0xa2980805, 0x04101400, 0x180040c4, 0x80418280, 0x280c0810, 0x40008422, + 0x82a00248, 0x00012004, 0x00000001, 0x50565430, 0x00820100, 0x83000698, 0x2058a820, 0x02804101, 0x04040262, 0x71311894, + 0x08000002, 0x00000010, 0x9152c00c, 0x20800440, 0x08201388, 0x06014805, 0x40181400, 0x10402064, 0x06010202, 0x002c0000, + 0x10e40080, 0x84020046, 0x80080380, 0x0142000a, 0x6bb18920, 0x10010205, 0x00a00080, 0x44503810, 0x20020000, 0x06108002, + 0x093c6548, 0xc0014201, 0x0a4c1000, 0x30900004, 0x00008040, 0x10320cb2, 0xe1001100, 0x06810205, 0x2042082a, 0xc0040082, + 0x08400000, 0x50886010, 0x84a31442, 0x00000808, 0x04648446, 0xab912021, 0x10094200, 0x00b20881, 0x04401150, 0x00020004, + 0xa6442000, 0x4838855a, 0x4a004001, 0x01210a0c, 0x10140008, 0x84809440, 0x000400b2, 0x704a2000, 0x008001a0, 0x21180002, + 0x42012a01, 0x0840d458, 0x05240004, 0x90028101, 0x4000a808, 0x40000684, 0x02c00000, 0x10282028, 0x08048442, 0x21000840, + 0x00054304, 0xc29208a1, 0x10001010, 0x00028002, 0x80083058, 0x35400010, 0x00010b01, 0x02002428, 0x48a44004, 0x80400482, + 0x1010d014, 0x01020040, 0x00010380, 0x24a0c80a, 0x02082021, 0x04105140, 0x59440794, 0x00000000, 0x28282920, 0x8100844a, + 0x00020000, 0x02004100, 0x10900aa5, 0x00241010, 0x6802a808, 0x85411052, 0x00080000, 0x01844105, 0x40212428, 0x00080000, + 0x20000480, 0x1a14da14, 0x81460142, 0x04810a00, 0x2028a00a, 0x820600a1, 0x00101400, 0x50044285, 0x0c400040, 0x0808a0b8, + 0x46901404, 0x00004000, 0x28000000, 0x84688002, 0x01022928, 0x40510211, 0x1aa01080, 0x00200000, 0x840c2040, 0x3050800e, + 0x01004400, 0x02051a81, 0x68a84024, 0x00020000, 0x000a1000, 0xd45c0110, 0x0100c402, 0x08212241, 0xa20a0928, 0x00808080, + 0x11025040, 0x46800414, 0x00540001, 0x00080808, 0x8c420482, 0x00608520, 0x01003200, 0x4ab10081, 0x30044014, 0x80020402, + 0x14501040, 0x2008a008, 0x02811101, 0x280c2024, 0x41004880, 0x00003400, 0xd4340012, 0x00428300, 0x00a02060, 0xa1030808, + 0x02000283, 0x14005450, 0x4acd0004, 0x00900000, 0x22220028, 0x10a04484, 0x0440a800, 0x000a0010, 0x80649402, 0x2d0008a8, + 0x02152201, 0x00a00100, 0x18001414, 0x00022400, 0x4050804a, 0x21084190, 0x08050a01, 0x06284020, 0xc0800004, 0x90000000, + 0x00000010, 0x0106b08a, 0x00010700, 0x20620860, 0x06900089, 0x0408c414, 0x40c41040, 0x0a002000, 0xb000080a, 0x0842a040, + 0x053001a0, 0x021d0200, 0x10200081, 0x40801870, 0x04422400, 0x90184044, 0x30000808, 0x0a201303, 0x00014020, 0x4004881c, + 0x15401400, 0x00048004, 0x81820086, 0x28004000, 0x002803ca, 0x02910011, 0x00400c20, 0x50002056, 0x04058000, 0x80080020, + 0x64042004, 0x00621400, 0x00000000, 0xa4324000, 0x19000920, 0x12990201, 0x00008080, 0x0000381a, 0x60402404, 0x0004004a, + 0x810ac020, 0x00010a01, 0x42204120, 0x04040004, 0x10001040, 0x08940000, 0x85428486, 0x00010b21, 0x20080008, 0x0aa02092, + 0x40005440, 0x04440014, 0x10000000, 0x08000808, 0x00120000, 0x00280020, 0x82010080, 0x00900002, 0x7000f110, 0x20002444, + 0x81400201, 0x000c800a, 0x0a000881, 0x04224224, 0x41140000, 0x14023040, 0x0081811a, 0x80000500, 0x20990020, 0x01420208, + 0x02002081, 0x08641c50, 0x00010000, 0x04000004, 0x10000228, 0x10044048, 0x04400424, 0x02000002, 0x40228860, 0x2b103058, + 0x10191185, 0x80800820, 0x42000270, 0x2c002040, 0x00400010, 0x010e4c08, 0x08a512a1, 0x4200400c, 0x80009012, 0x14080800, + 0x80100504, 0x010a9012, 0x00012208, 0x28008100, 0x02c800c5, 0x04040404, 0x10600010, 0x00908961, 0x28000880, 0x00028100, + 0xc1a05029, 0x52012650, 0x00c00002, 0x001c1101, 0x200a2000, 0x00101080, 0x0100c46c, 0x82800024, 0x00613900, 0x44044082, + 0x14100010, 0x08088000, 0x80421303, 0x21040000, 0x00a88000, 0x0a014ecd, 0x00409400, 0x50140000, 0x04006060, 0x00000000, + 0x52801030, 0x04000286, 0x00008008, 0x00220502, 0x0d906e21, 0x00110011, 0x84201000, 0x30c84200, 0x00020584, 0x0638800a, + 0x71442040, 0x00150305, 0x18200000, 0xc0006028, 0x20008080, 0x00020040, 0x83904c02, 0x02811301, 0x30282090, 0x84404800, + 0x04000068, 0x0a841000, 0x52400606, 0x0000c830, 0x85202408, 0x29110200, 0x02000000, 0x10a01110, 0x441e0407, 0x00004080, + 0x20000200, 0x0c4ba45a, 0x40140a81, 0x08204004, 0x81080120, 0x94000040, 0x20100002, 0x02c3b400, 0x02000390, 0x01000800, + 0xc0852023, 0x2410544c, 0x020c0100, 0x58e00081, 0x00220820, 0x04040610, 0x80d00204, 0xa0001000, 0x09020000, 0x11690f63, + 0x40011005, 0x1020a098, 0x02340e20, 0x00000000, 0x20506408, 0x0d8a8062, 0x4a014301, 0x80800020, 0x0034189c, 0x00028400, + 0x90500000, 0x6504010a, 0x00211290, 0x00080048, 0x6a86a807, 0x10000010, 0x015404c0, 0xc40312a1, 0x88284826, 0x20020000, + 0x0640a701, 0x12151080, 0x41a00208, 0x08200c15, 0x20000040, 0x004a6000, 0x11201c38, 0x8600c203, 0x00050020, 0x70a00914, + 0x00028002, 0x10140090, 0xcd401400, 0x00810000, 0x080803c0, 0x2222a023, 0x40500400, 0x010440d4, 0x9603980a, 0x80008020, + 0x00400010, 0x00207480, 0x28200000, 0xc5020000, 0x010d8828, 0x50012301, 0x02104080, 0x08601056, 0x20000008, 0x00cc2000, + 0x15021450, 0x00010201, 0x4024c0a2, 0xa8102804, 0x82800100, 0x00120040, 0x6548a406, 0x10014211, 0x00880128, 0xaa027880, + 0x50400000, 0x05004406, 0x00a70040, 0x00001900, 0xa8120018, 0x07a0a062, 0x02000201, 0x00990000, 0x5c645114, 0x00082080, + 0x04000000, 0xb102844a, 0x08000004, 0x00204801, 0x60c41328, 0x100010c0, 0x00028010, 0xc2154406, 0x04000180, 0x21c10800, + 0x8a2c0225, 0x10003400, 0x41400118, 0x048100c4, 0x280c0023, 0x08020012, 0x24940400, 0x22021000, 0x0020210c, 0x0948c820, + 0xc2014205, 0x00800000, 0x10141012, 0x0008810a, 0x00400080, 0x2d222500, 0x002102c1, 0xd0840000, 0x08004824, 0x00001040, + 0x82400010, 0x01068002, 0x042106a0, 0x00140108, 0x1a800801, 0x14044400, 0x20501000, 0x40082040, 0x800a2818, 0x21008082, + 0x09210124, 0x02050005, 0x00100000, 0x50805010, 0x8000a022, 0x002a0280, 0x25000408, 0x42340045, 0x10514380, 0x08880020, + 0x10103000, 0x20008050, 0x844a0d0a, 0x018828a8, 0x40000000, 0x0a234201, 0x00141010, 0x20400000, 0x86020644, 0xa0204020, + 0x44000400, 0x08148040, 0x00205830, 0x82000080, 0x3988a008, 0x00850313, 0x00101000, 0x16020004, 0x40006000, 0x00080088, + 0xa1020c00, 0x0051c002, 0x46040024, 0x00280ac0, 0x04500102, 0x08828001, 0x81000410, 0x08010200, 0x102011c0, 0x42882001, + 0x44004860, 0x80100100, 0x2040841c, 0x2a281000, 0x00000820, 0x11060000, 0x00401311, 0x8004a008, 0x121000c6, 0x40004008, + 0x88422000, 0x21898400, 0x02004000, 0x44040902, 0x00810064, 0x08408083, 0x04202200, 0x90120000, 0x08801410, 0x01000140, + 0x02210a81, 0x20046060, 0x00500400, 0x0408100c, 0x40200012, 0x00240860, 0xc0586408, 0x80000c40, 0x10001030, 0x0d288004, + 0x00110b29, 0x20803010, 0x10024042, 0x00043018, 0x40000044, 0x260a8480, 0xc000200c, 0x01004022, 0x00450a00, 0x92024104, + 0x00808083, 0x09201408, 0x06018386, 0x00c80048, 0x08102915, 0x00400080, 0x20200060, 0x04045406, 0x90120440, 0x08200830, + 0x40002002, 0x20190a39, 0x00001000, 0x5180c104, 0x260c1050, 0x00000000, 0x00422488, 0x8000a008, 0x01004006, 0x40240820, + 0x1283c184, 0x88000213, 0x05000400, 0x22418182, 0x00000249, 0x08b01020, 0x44002a81, 0x00080440, 0x00400000, 0x18000440, + 0x04600048, 0x00140000, 0x04600000, 0x10000034, 0x090a8000, 0x1a210000, 0xa0900500, 0x00040881, 0x10100060, 0x60480008, + 0x04020002, 0x20081040, 0xc1000000, 0x08050000, 0x40040004, 0x82980000, 0x05228820, 0x800b0000, 0x02c00000, 0x18000200, + 0x22800004, 0x04600040, 0x00800000, 0x84600014, 0x10110021, 0x49040000, 0x3a200000, 0x00180000, 0x00820000, 0x30150000, + 0x40080300, 0x00000000, 0x600c0840, 0x81020000, 0x04e00000, 0x50042000, 0x8a030008, 0x00000020, 0x8043200b, 0x07800000, + 0x003c0000, 0x46c10000, 0x08000000, 0xa0040000, 0x94400000, 0x00000082, 0x02080080, 0x00004002, 0x00400000, 0x00104001, + 0x40008000, 0x00200000, 0x80220084, 0x0000a100, 0x00000104, 0x00000020, 0x00000000, 0x80000002, 0x00800110, 0x00302000, + 0x00800000, 0x00400000, 0x00000000, 0x400c0000, 0x00000102, 0x60004000, 0x05002108, 0x204002a1, 0x00040000, 0x80000900, + 0x00000000, 0x00000000, 0x0c200000, 0x00000000, 0x00000830, 0x00000000, 0x20080820, 0x00101210, 0x00100000, 0x00000019, + 0x00000000, 0x00000000, 0x04000444, 0x00005000, 0x00100000, 0x00408006, 0x20080000, 0x00840000, 0x14000180, 0x88008202, + 0x00402c00, 0x80809220, 0x40002458, 0x00001100, 0x00090ec0, 0x80002a2e, 0x02002000, 0x04005018, 0x02800412, 0x00105201, + 0x02000a11, 0x0000a8a8, 0x08408404, 0x10105488, 0x90001351, 0x00004aa3, 0x20246400, 0x4000a042, 0x001015d9, 0x0100c000, + 0x00001a31, 0x00180880, 0x8008a400, 0x0200d448, 0x01021012, 0x24a046c4, 0x00002ba9, 0x0200b012, 0x00800548, 0x0400d4c6, + 0x0214400d, 0x10002000, 0x0440a08b, 0x00008520, 0x81805446, 0x240a5284, 0x28848bb2, 0x02482000, 0x40048900, 0x000004d1, + 0x04005210, 0x02004ba5, 0x01002048, 0x0080ac2b, 0x04041410, 0x2c040060, 0x00222c00, 0xb4148442, 0x01021800, 0x1fe40000, + 0x2880aba8, 0x30130003, 0x08482014, 0x51441410, 0x25090309, 0x58350201, 0xa4aa2888, 0x0004c502, 0x654a0400, 0x4b054bc1, + 0x020382a2, 0x08000000, 0x96028540, 0x21c004c0, 0x86031300, 0x1cb102b4, 0x08242800, 0x00030400, 0x50400451, 0x10101802, + 0x4a400030, 0x010c6aaf, 0x809b1000, 0xb9600002, 0x50471514, 0x40006281, 0x0ba00281, 0xa82ba828, 0x00000504, 0x50460640, + 0x52114195, 0x01200a01, 0x880188a0, 0x81228442, 0x30093488, 0xd2920051, 0x49210ba1, 0x00204820, 0x024b00c0, 0x20505450, + 0x06ec1000, 0x00180008, 0x92440210, 0x14020014, 0x08004020, 0x2b2d0000, 0xa09a4008, 0x00009000, 0xd5060100, 0x63012084, + 0x02890000, 0xa42a8022, 0x80040050, 0x40420000, 0x43a11000, 0x18870011, 0x88200820, 0x84120000, 0x15c02008, 0x03210001, + 0x6a110801, 0x0ca81128, 0x00182204, 0x94440008, 0x50220000, 0x48000100, 0x0fad0400, 0x001a4000, 0x91040010, 0x50c28000, + 0x6211010c, 0x020c0000, 0xa40b0002, 0x89008042, 0x04064000, 0x5ac11000, 0x82240000, 0x04810006, 0x99400000, 0x001a0100, + 0x06510000, 0x43a40000, 0x0c210004, 0x00402008, 0x50108002, 0x48000000, 0x00000080, 0x00000000, 0x40004100, 0x00200440, + 0x40000004, 0x00000000, 0x10000822, 0x00000000, 0x00800040, 0x10001000, 0x00004010, 0x00400000, 0x2000200c, 0x00100004, + 0x02000000, 0x00004004, 0x00400002, 0x20081010, 0x00008002, 0x00040000, 0x00000000, 0x004040c0, 0x00004000, 0x00100100, + 0x00008040, 0x00008000, 0x80000008, 0x00000820, 0x00002000, 0x01000040, 0x00000000, 0x00200000, 0x40000000, 0x00002008, + 0x20100020, 0x00000000, 0x40020000, 0x00004010, 0x08000200, 0x10808002, 0x20003000, 0x00080008, 0x00000402, 0x00880005, + 0x00000000, 0x20009016, 0x0000c820, 0x00000002, 0x00002289, 0x00101110, 0x00000205, 0x00000440, 0x0810600a, 0x00000440, + 0x004489a0, 0x00004205, 0x08000880, 0x01101000, 0x04008402, 0x00000030, 0x00002148, 0x00001281, 0x00000000, 0x00044824, + 0x00002440, 0x10001000, 0x0282801a, 0x20004820, 0x01008006, 0x00412289, 0x20000010, 0x20001285, 0x04204540, 0x0c002000, + 0x00000448, 0x18809932, 0x00404005, 0x00000000, 0x00181ab0, 0x01009442, 0x00000000, 0x00082118, 0x00200281, 0x00002000, + 0x2004482c, 0x00001444, 0x00000100, 0x0202c210, 0x20000820, 0x40400000, 0x80821640, 0x88220000, 0x1100890a, 0x26cd23f1, + 0x51044000, 0x02110281, 0x04e01c10, 0x200a0046, 0x00402400, 0x09300138, 0xc0250a24, 0x0c008001, 0x12886098, 0x90420402, + 0x00009000, 0x651c2114, 0x00810241, 0x2a000080, 0xc022600a, 0x04444424, 0x41080840, 0x90118280, 0x08288002, 0x00000020, + 0x22823c11, 0x11000288, 0x82111111, 0x40444c40, 0x20480008, 0x04020400, 0x01b0b956, 0xc2850021, 0x00000804, 0x10006280, + 0x00020410, 0x9c201000, 0x21448106, 0x02890041, 0x00000008, 0xc8322a82, 0x24405420, 0x41040140, 0x90110094, 0x08088002, + 0x20404006, 0x86808450, 0x00000080, 0x01000802, 0x3e2b3028, 0x83900180, 0x10018205, 0x00201050, 0x04400002, 0x4000c440, + 0x292c2808, 0x08251204, 0x80004081, 0x728a1020, 0x00121512, 0x10008800, 0xc5040100, 0x00212249, 0x08480080, 0x42860824, + 0x40408400, 0x21005102, 0x14110045, 0x880e0030, 0x00000100, 0x23610b82, 0x40001048, 0x0201c281, 0x18302014, 0x84008040, + 0x00080400, 0x20d4212a, 0x0a010805, 0x41200020, 0x300e4290, 0x14020400, 0x00101010, 0x81c4e10a, 0x00012049, 0x22884000, + 0x00040aa0, 0x04049440, 0x09200004, 0x9251c210, 0x800a0000, 0x00002410, 0x440e1804, 0x00000828, 0x20220000, 0x18c82400, + 0x01944010, 0x82019102, 0x54400201, 0x8802202a, 0x00400000, 0x310884c4, 0x44054280, 0x08000105, 0x00900020, 0x02420442, + 0x80081800, 0x21208118, 0x26394220, 0x10000008, 0x00802881, 0xc0441440, 0x08020010, 0x06004000, 0x10800008, 0x09100024, + 0x24202802, 0x03920004, 0x10010010, 0xc44cd201, 0x00402028, 0x800a0180, 0x28208542, 0x40214201, 0x09801004, 0x04140888, + 0x80128402, 0x02000040, 0x21481130, 0x24090001, 0x128000a4, 0xc0202a00, 0x48120450, 0x04000008, 0x10c20007, 0x00288020, + 0x04000068, 0x40501400, 0x30000000, 0x00204814, 0x080ca020, 0x00014000, 0xc116010e, 0x10801291, 0x00020002, 0x80000008, + 0x2708a500, 0x02110200, 0x00004041, 0x48c40004, 0x00600402, 0x00128800, 0x910001a0, 0x0a8112c1, 0x00000800, 0x24002038, + 0x04100410, 0x00481000, 0xc0244044, 0x28200800, 0x00080000, 0x9080a020, 0x00100008, 0x41021006, 0x12854111, 0x200a0080, + 0x00002008, 0x90408602, 0x02050001, 0x05000140, 0x480042a4, 0x80300400, 0x00820800, 0x50408002, 0x008101c1, 0x03201810, + 0x24000208, 0x10480420, 0x00102040, 0x0c045000, 0x40000000, 0x10402000, 0x4020585c, 0x00048000, 0x00000820, 0xa8282008, + 0x10150004, 0x01020052, 0x42001201, 0x0082800a, 0x000001a0, 0xa1086400, 0x00450204, 0x48005011, 0x06800860, 0x00200502, + 0x80008080, 0x15121140, 0x00010211, 0x086000ac, 0x02882000, 0x20400400, 0x00000000, 0x14044850, 0xc8080020, 0x00201804, + 0x2010a008, 0x40000010, 0x01021102, 0x10150001, 0x00000004, 0x80080280, 0x2280e44a, 0x40810005, 0x01400100, 0x06266a80, + 0x00420400, 0x04000020, 0x99008042, 0x00210101, 0x02801000, 0x001802b0, 0x24000c00, 0x08002000, 0x50440058, 0x08080800, + 0x00304000, 0x14001014, 0x00240820, 0x00000000, 0x680aa00a, 0x00114010, 0x11001100, 0x82000280, 0x008c004b, 0x04002004, + 0x61408500, 0x40814204, 0x80060081, 0x02000820, 0x88200402, 0x04088000, 0x11424150, 0x00010289, 0x08981000, 0x02002800, + 0x20200440, 0x40001000, 0x04444034, 0x18000801, 0x00b00020, 0x000a2008, 0x22008010, 0x81100002, 0x10055285, 0x00080140, + 0x48802028, 0x24400412, 0x00014821, 0x01020010, 0xc084828c, 0x02400402, 0x88000100, 0x1132a050, 0x00011385, 0x26000000, + 0x0880080c, 0x04482460, 0x00200000, 0x10044010, 0x40201824, 0x04000004, 0x00045ed0, 0x48200000, 0x80000800, 0x2008a062, + 0x00135480, 0x13000004, 0x00800a38, 0x400c2103, 0x04000000, 0x21401d08, 0x00050a44, 0x400000a1, 0xaa02c008, 0x00e22402, + 0x80002010, 0x1500804c, 0x22911b00, 0x08200080, 0x8004202b, 0x04480400, 0x00001004, 0xd0920052, 0x08004020, 0x80240108, + 0x2400a842, 0x00021000, 0x11180000, 0x008142f5, 0x28080100, 0x46000040, 0x0046a50a, 0x02850005, 0x89004000, 0x402002a0, + 0x80029410, 0x04000800, 0x1110014a, 0x02a10809, 0x20000000, 0x084002a0, 0x004a2400, 0x04004000, 0x50140256, 0x20280000, + 0x10441000, 0x80028442, 0x00200008, 0x00804900, 0xe85a02a3, 0x00052000, 0x01908184, 0x58205610, 0x26000003, 0x00000000, + 0x0158a518, 0x40050225, 0x00104040, 0x8aaa0880, 0x80428412, 0x00000000, 0x45041000, 0x20110a01, 0x1a0001c8, 0x0088c000, + 0x00402424, 0x04000140, 0x02309280, 0x002c2018, 0x41004000, 0x38010ea1, 0x0002c010, 0x81501002, 0x52850e81, 0x00002106, + 0x800a0008, 0x20609c40, 0x02810201, 0x45000180, 0x08245804, 0x000a0420, 0x84009000, 0x50404012, 0x00190161, 0x03800808, + 0xa800e282, 0x04000454, 0x00000100, 0x52769081, 0x0800400a, 0x00584004, 0x16a08242, 0x200c2010, 0x01008022, 0x4e210a89, + 0x10130301, 0x81000010, 0x04445cc0, 0x4082040a, 0x22000004, 0x9d68b920, 0x02a50201, 0x00004860, 0x5800101c, 0x000214c2, + 0x84008010, 0x21102008, 0x10410200, 0x00202100, 0x628240a1, 0x00400408, 0x09180144, 0x44019a12, 0x20004020, 0x08248902, + 0x924a26c1, 0x10045010, 0x01000081, 0x06b10548, 0x80000402, 0x0000024c, 0x7558a820, 0x48030285, 0x00000100, 0x32b47830, + 0x90420400, 0x00000000, 0x211ce01a, 0x00010301, 0x04003000, 0x4aacc0ec, 0x40004440, 0x11000904, 0xa4c19200, 0x00002810, + 0x648454c0, 0x90100000, 0x20282028, 0x09028906, 0x01810100, 0x40150641, 0x80000084, 0x10405010, 0x20008422, 0x06c00058, + 0x19382010, 0x02030a05, 0x48044000, 0xb0100180, 0x80d22422, 0x14249004, 0x610c0140, 0x0a014a31, 0x80000088, 0xc08e0004, + 0x10400440, 0x61002090, 0x84214005, 0x20003880, 0x88068062, 0x03380108, 0x42040200, 0x001108a1, 0x10005010, 0x200a040a, + 0x04008010, 0x01b02004, 0x08010201, 0x406829ec, 0xb2844000, 0x00400440, 0xc4101004, 0x70068002, 0x00010031, 0x2b0a2900, + 0xc0a20280, 0x0400041a, 0x11c40084, 0x808350c3, 0x00300008, 0x100c1284, 0x00420400, 0x00182800, 0xc402845a, 0x09200020, + 0x10010215, 0x22000820, 0x00945000, 0x44020502, 0x000010d0, 0xa108a008, 0x00810301, 0x006068ac, 0x48040000, 0x02021402, + 0x5010c054, 0x81000000, 0x00410384, 0xa408a02a, 0x0aa08001, 0x10401512, 0x44044284, 0x00820840, 0x20282000, 0x81908442, + 0x09410820, 0x14164100, 0x02811abd, 0x04600000, 0x08000402, 0x44401050, 0x2908a008, 0x98030001, 0x00202aa8, 0x400c4004, + 0x00400540, 0x16824014, 0x81089106, 0x00910801, 0xa200a22a, 0x08240080, 0x00501400, 0x540842c5, 0x02000010, 0x08008020, + 0x42c45004, 0x0c000080, 0x08882018, 0x04620802, 0x05000120, 0x00010200, 0xdab48080, 0x24005014, 0x08020402, 0x34100040, + 0x8108a009, 0x40c54a01, 0x2a080004, 0x00200000, 0x040a94d2, 0xd0140120, 0x01000100, 0x00612201, 0xa2028008, 0x00800080, + 0x05400440, 0x428c0024, 0x08005800, 0x98002808, 0x04608032, 0x00180100, 0x01040200, 0x58215091, 0x20120824, 0x0000044a, + 0x36da0000, 0x0100b010, 0x40010001, 0xa8284184, 0x02840808, 0x84029400, 0x50144070, 0x00000302, 0x00292029, 0x83c20800, + 0x00000280, 0x08104400, 0x62850044, 0x04401000, 0x20080830, 0x00a05084, 0x16400450, 0xa0000000, 0x02228462, 0x09500880, + 0x12154289, 0x00a02830, 0x00281000, 0x8008050e, 0x00420010, 0x65002040, 0x4a010a25, 0x0004c008, 0x00000190, 0x10a21402, + 0x00148014, 0x81000000, 0x08092340, 0xa0800080, 0x06600029, 0x50000c04, 0x00040080, 0x06401040, 0x28002020, 0x002a0842, + 0x01104010, 0xd215001c, 0x000010a1, 0x00008000, 0x04084502, 0x00500210, 0x21802008, 0x08238825, 0x001800c8, 0xc2044000, + 0x10503400, 0xc4000304, 0x0182800a, 0x20012001, 0x00a20358, 0x0a088084, 0x04404c04, 0x52840030, 0x00000042, 0x80021000, + 0x00001000, 0x04104400, 0x08200000, 0x84848c02, 0x51082520, 0x00030241, 0x30900084, 0x42005018, 0x24040442, 0x00100000, + 0x8108b108, 0x0a030201, 0x40644024, 0x00800080, 0x00000442, 0x00528810, 0x91000000, 0x0c010b29, 0x200a0000, 0x02a01080, + 0x80504440, 0x14040014, 0x80003000, 0x28022000, 0x0000882a, 0x41200000, 0x82094200, 0x00301091, 0x10800100, 0x642c8408, + 0x00400020, 0x81022044, 0x00050b03, 0x00a00034, 0x42004008, 0x90001410, 0x0c040080, 0x00028142, 0x28112001, 0x03880208, + 0x004000a0, 0x14404400, 0x40240044, 0x00101800, 0x0020003a, 0x00061400, 0x94008060, 0x28084080, 0xc4020404, 0x0130082a, + 0x00111181, 0x10a00000, 0x0000a010, 0x24000002, 0x024a3200, 0xc114cc6c, 0x0a210205, 0x40044800, 0x000000a0, 0x1002a40a, + 0x04000100, 0x81d01100, 0x08814201, 0x20080080, 0x0204a05c, 0x10000400, 0x04548010, 0x40205863, 0x08002824, 0x00220100, + 0x0108000a, 0xa2850200, 0x00008000, 0x101010d1, 0x60480800, 0x00100900, 0x0100654c, 0x18034025, 0x04000000, 0xc2ac8802, + 0xb0001440, 0x00104000, 0x01028292, 0x24014009, 0x02880100, 0x08642a80, 0x04400400, 0x50140000, 0x000250e0, 0x0020000c, + 0x42043050, 0x1c000202, 0x22000820, 0x00322108, 0x89404303, 0x1411c011, 0x00800000, 0x02081ce4, 0x0800000a, 0x00408200, + 0xe50c2450, 0x58014201, 0x00300184, 0x00061820, 0x00021452, 0x90008000, 0x0380200c, 0x42810381, 0x00180000, 0x24604822, + 0x14002448, 0x02000110, 0x0a400280, 0xe8805000, 0x05220020, 0x019daec7, 0x14000318, 0x00415000, 0x02100425, 0x2000004a, + 0x00888000, 0x44143490, 0x00010201, 0x08600884, 0xc2965120, 0x10408400, 0x81001000, 0x00122156, 0x40010a01, 0x23888020, + 0x84204082, 0x00100458, 0x00443100, 0x4c808205, 0x00200802, 0x14003800, 0x40c40680, 0x20386004, 0x89020870, 0x03018783, + 0x00010009, 0x00900030, 0x54641c20, 0x00000046, 0xa608c288, 0x09222400, 0x00a50a21, 0x00400108, 0x7808501c, 0x00000402, + 0x06021080, 0xb14c8010, 0x00310208, 0x00800140, 0x6a020083, 0x00483424, 0x15040040, 0x00030a02, 0x68384010, 0x80000800, + 0x0342056b, 0x0210a000, 0x10851210, 0x4c000c21, 0x2000c084, 0x04400008, 0x092a3450, 0x00250b81, 0xc2004000, 0x10001026, + 0x00900410, 0x00028000, 0xbd0c000e, 0x22c91141, 0x08200202, 0x40028084, 0x1440240c, 0x01140040, 0xc20108b3, 0x00000020, + 0x00440052, 0x02200400, 0x38000806, 0x81021008, 0x45714060, 0x00096201, 0x12000180, 0x48349014, 0x200a8402, 0x00c00000, + 0x89203018, 0x04010345, 0x48244080, 0x20800800, 0x82103462, 0x00008000, 0x514e2104, 0x04010218, 0x20080080, 0x4aa26801, + 0x00100420, 0x11445000, 0x460300d1, 0x08000026, 0x00002100, 0xa7690a80, 0x02020201, 0x0091d080, 0x5c240118, 0x00080442, + 0x00400000, 0x3132202c, 0x08010201, 0x06048080, 0xd0204014, 0x80020510, 0x10801020, 0x0444a842, 0x00014901, 0x01186028, + 0x82860282, 0x1c000410, 0x61445000, 0x02238140, 0x08000004, 0x00201008, 0x44120444, 0x1088400a, 0x80002820, 0x09a20000, + 0x30114201, 0x44008104, 0x00441010, 0x80000482, 0x04008008, 0x33da2100, 0x40a10285, 0x00044040, 0x08000820, 0x00001412, + 0x84008040, 0x03420100, 0x00014a01, 0x08900084, 0x920c2008, 0x40748400, 0x20000000, 0x84804064, 0x280a0022, 0x01200018, + 0x91003800, 0x00010005, 0x42045080, 0x10108110, 0x00800402, 0x00088200, 0xad422108, 0x40010041, 0x0a000080, 0x20044a0c, + 0x808aa420, 0x20000042, 0x50280000, 0x00611021, 0x03800110, 0x44180280, 0x14003408, 0xa0004010, 0x48400840, 0x00a60208, + 0x80404420, 0x4c28900c, 0x00080122, 0x02040010, 0x09320800, 0x8011b219, 0x10000100, 0x620400c4, 0x00004408, 0x00802020, + 0x210a0842, 0x00814000, 0xc6508900, 0x082c0224, 0x00008082, 0x00000009, 0x95420500, 0x08812290, 0x00201040, 0x02100801, + 0x70484440, 0x00008120, 0x04141008, 0x08000804, 0x00a00010, 0x0100a020, 0x02831219, 0x800c01c2, 0x70100000, 0x80406440, + 0x0008000c, 0x25020800, 0x0001c806, 0x02900000, 0x40040021, 0x08120182, 0x84408200, 0x00201500, 0x18012001, 0x038000c0, + 0x00080218, 0x04000c00, 0x00404060, 0x20200000, 0x60001020, 0x08000060, 0x50404004, 0x00020442, 0x00309030, 0x09040800, + 0x02091a39, 0x20102100, 0xd0044004, 0x00001450, 0x00802000, 0x2048008a, 0x8024a028, 0x11024104, 0x4c010a00, 0x82804086, + 0x10120001, 0x21008400, 0x22498381, 0x04000040, 0x00801114, 0x0c048480, 0x00604864, 0x00002008, 0x08101042, 0x10008830, + 0xc1220000, 0x00191a39, 0x22002080, 0x50c40000, 0x00403418, 0x20004104, 0x040a0000, 0x80043008, 0x4100c026, 0x02011151, + 0x10804014, 0x08109282, 0x80220d00, 0x04818003, 0x034002c0, 0x00200002, 0x404406c0, 0x0c00c824, 0x20182008, 0x08001840, + 0x0c200000, 0x60540200, 0x14600000, 0x88000084, 0x01020000, 0x18a10000, 0x20180000, 0x40040000, 0x34100000, 0x00080000, + 0x02420020, 0xa0080800, 0x41040002, 0x08110015, 0x40140868, 0x02820000, 0x95600000, 0x80031002, 0x02800000, 0x48000820, + 0x02a01008, 0x04400000, 0x700a1000, 0x04600000, 0x08100000, 0x81068101, 0x08290000, 0x20100000, 0x50000000, 0x30180050, + 0x00040000, 0x86820000, 0x20080000, 0x48040000, 0x11490000, 0x52840820, 0xa0020000, 0x04200000, 0x82831010, 0x01440000, + 0x00180020, 0x02e40001, 0x0c000000, 0x20804000, 0x04400004, 0x00002004, 0x00080000, 0x02040000, 0x00004000, 0x00000005, + 0x40808000, 0x00200000, 0x40000800, 0x20000004, 0x00000000, 0x80001008, 0x40800010, 0x00000000, 0x00002100, 0x00800000, + 0x00000000, 0x00004000, 0x50000024, 0x00000000, 0x000a0100, 0x00000000, 0x40000022, 0x00008281, 0x02020002, 0x00440110, + 0x00980000, 0x04000000, 0x00000002, 0x04000048, 0x10420000, 0x40040020, 0x00000000, 0x00200000, 0x00000002, 0x0080210c, + 0x88000000, 0x00000000, 0x00406008, 0x00000020, 0x00002000, 0x00008100, 0x00800010, 0x00000008, 0x00000080, 0x00000000, + 0x02900820, 0x000284c2, 0x0000b45a, 0x00100110, 0x00c05f60, 0x04002aab, 0x84082010, 0x1820146a, 0x8000d550, 0x00804381, + 0x00502a85, 0x0200a00a, 0x00008460, 0x10085600, 0x00424184, 0x00209292, 0x204c2009, 0x0000ac50, 0x00200548, 0x80004293, + 0x02044281, 0x20982904, 0x00002448, 0x44080450, 0x01004824, 0x200056c4, 0x02002aa9, 0x0014a010, 0x0000dd20, 0x02201686, + 0x24104009, 0x08102b95, 0x1040a82a, 0x00100440, 0x0120c400, 0x061052d5, 0x00080383, 0xc0028c04, 0x0804814a, 0x00100400, + 0x000052c5, 0x08002a80, 0x00040964, 0x82402603, 0x00049458, 0x08240020, 0xa4c00448, 0x94407442, 0x51021004, 0x0b210904, + 0x2a0f2aaa, 0x00000001, 0x0050b000, 0x11561554, 0x07096309, 0x38250290, 0x2c2a2003, 0x8004cc02, 0x65020540, 0x43014b85, + 0x9a958032, 0x08200a00, 0x84129450, 0x21400548, 0x16851311, 0x09114aa4, 0x09202000, 0xa4c10440, 0x9000144a, 0x00001804, + 0x5a614024, 0x89a72aa9, 0x00008018, 0xb9482100, 0x4080d450, 0x00010285, 0x032b2201, 0xa088a00a, 0x0c000400, 0x60074440, + 0x5044421c, 0x03810221, 0x00200000, 0xa700ad4a, 0x144b1400, 0xd2921281, 0x41284ba1, 0x21212808, 0x3c0b0448, 0xc010d417, + 0x24400800, 0x20080000, 0x14420210, 0x10240000, 0x49008030, 0x28ad4000, 0x32184008, 0x00000012, 0x01060000, 0x03c90080, + 0x62050000, 0xa80a8008, 0xc0600000, 0x05460004, 0x4a951000, 0x02a10081, 0x88200020, 0x84520000, 0x11400080, 0x03910000, + 0x4aa10000, 0x28280828, 0x24500000, 0x04488201, 0x18064010, 0x20200140, 0x0ba50000, 0x20420002, 0x11081002, 0xd4400000, + 0x40100108, 0x02850080, 0x80020000, 0x05020842, 0x80040100, 0x42451180, 0x0a818880, 0x08220002, 0xa45a0000, 0x10000050, + 0x00c00000, 0x53210000, 0x20ec0020, 0x0c002200, 0x045e0040, 0x00000000, 0x00300080, 0x02000000, 0x42908000, 0x04000040, + 0x00000400, 0xc0020000, 0x08000820, 0x00000000, 0x00100004, 0x00001000, 0x00800040, 0x04000020, 0x00000008, 0x00000000, + 0x00000000, 0x00020000, 0x000c4002, 0x20002000, 0x00008000, 0x10000000, 0x00000001, 0x00000010, 0x40002000, 0x80000100, + 0x40100000, 0x00080000, 0x00000000, 0x08000824, 0x00260000, 0x03890000, 0x00204010, 0x08080000, 0x00600020, 0x0400a004, + 0x30000001, 0x01200000, 0x80000000, 0x41000020, 0x0c000000, 0x02018000, 0x00000012, 0x00000004, 0x00008180, 0x10800000, + 0x00000004, 0x4800d012, 0x80000820, 0x0000a102, 0x00400289, 0x00001114, 0x00000280, 0x80004441, 0x1000200a, 0x00000440, + 0x14208920, 0x00104285, 0x00000800, 0x20103030, 0x01008402, 0x10001010, 0x2000214c, 0x00000281, 0x04002800, 0x00004026, + 0x00000440, 0x0104410c, 0x10009092, 0x02800828, 0x01008002, 0x00802681, 0x80001011, 0x00000080, 0x00104744, 0x0000200a, + 0x00000440, 0x30009820, 0x20004ba4, 0x00000000, 0x40001011, 0x00808442, 0x00181000, 0x0004611c, 0x000022a8, 0x00000001, + 0x00024804, 0x00100440, 0x00004004, 0x00001012, 0x20000820, 0x00000000, 0x90921636, 0x08224000, 0x01000102, 0xe0090ee1, + 0x5310a10c, 0x00810281, 0x04645450, 0x00480042, 0x24002400, 0x89028138, 0x08050aa1, 0x00000004, 0x52084008, 0x80421412, + 0x14200000, 0x4188e144, 0x22990289, 0x08000800, 0xc0264002, 0x00402424, 0x50140100, 0x84039250, 0x88204820, 0x00000002, + 0x064b27c1, 0x10958008, 0x23001081, 0x44004e34, 0x20480002, 0x84000440, 0x0812a828, 0x09a40380, 0x40004800, 0x12191025, + 0x80021442, 0x00008010, 0x35406104, 0x20810281, 0x02180000, 0xc8240022, 0x0440244c, 0x51040100, 0x82135801, 0x08220020, + 0x00000400, 0x94d49010, 0x00008080, 0x89020002, 0x27690828, 0x00806104, 0x00010281, 0x5c101810, 0x04000002, 0x02002440, + 0xb93c0908, 0x00018281, 0x40640024, 0x329a7010, 0x00000402, 0x18001810, 0xa1528140, 0x00012281, 0x28000808, 0x068e0024, + 0x00144400, 0x45400006, 0x00231051, 0x000088a0, 0x08200102, 0x14420000, 0x30000000, 0x81910081, 0x4c68325c, 0x2204000a, + 0x8040c540, 0x141a3000, 0x01240b90, 0x08000030, 0x72084004, 0x8010045a, 0x00001000, 0x158f8109, 0x000802a0, 0x20802008, + 0x4a434005, 0x4004c440, 0x11000000, 0x04739894, 0x80008222, 0x00062440, 0x14504018, 0x82002808, 0x48008024, 0x202a1000, + 0x03001014, 0x00010102, 0x10d04281, 0x60208022, 0x00002008, 0x810e1540, 0x40a14285, 0x0c000000, 0x02440820, 0x10500402, + 0x04088000, 0x81060148, 0x00891aa1, 0x02000010, 0x40202000, 0x44000440, 0x30500000, 0x8a04101c, 0x28826000, 0x01218808, + 0x02080020, 0x92040010, 0x01111102, 0x40004285, 0x04008002, 0x80202000, 0x29ca0448, 0x40840284, 0x00204000, 0x08112821, + 0x12008542, 0x80000000, 0x61521100, 0x04000280, 0x08800030, 0x022d0001, 0x00002440, 0x6404001a, 0x00501800, 0x12000000, + 0x00400020, 0x00141050, 0x48204000, 0x00000800, 0x908aa024, 0x2011000c, 0x41000102, 0x12845290, 0x2008000a, 0x04000000, + 0x8142a501, 0x42010281, 0x00844004, 0x00200040, 0x04000402, 0x88020000, 0x11009970, 0x08710281, 0x02802000, 0x20008020, + 0x14000400, 0x00504840, 0x400c101c, 0x08200800, 0x00000020, 0x008a2000, 0x80001000, 0x4100801a, 0x30914285, 0x02082102, + 0x00040008, 0x24028440, 0x02800380, 0x49400004, 0x80054801, 0x04000442, 0x80020000, 0x10709030, 0x098003a0, 0x02010000, + 0xa0202001, 0x14080440, 0x00500008, 0xc0805804, 0x08040800, 0x00000008, 0x14580410, 0x00084020, 0x48000000, 0x2020180c, + 0x00010004, 0x0082a102, 0xd2105291, 0x05002002, 0x80000000, 0x214e8548, 0x00050280, 0x00001004, 0x40a06820, 0x08400402, + 0x00000000, 0xd3028141, 0x00911281, 0x00200030, 0x8e082008, 0x00000c00, 0x34000000, 0x00441054, 0x28080820, 0x00004000, + 0x40300008, 0x1004a000, 0x81100002, 0x42025395, 0x0000000a, 0xa0810000, 0x004aa440, 0x40840280, 0x03000800, 0x0c215025, + 0x80020442, 0x10000100, 0x0540d000, 0x00280380, 0x00100000, 0x02812011, 0x20000460, 0x00004808, 0x5c501010, 0x00020020, + 0x00000400, 0x14345014, 0x400008a0, 0x08008000, 0xa0a0200a, 0x00091010, 0x01020100, 0x12944281, 0x8008200a, 0x00000000, + 0x60028544, 0x00011284, 0x41000810, 0x04444000, 0x80808403, 0x08200020, 0x1302014c, 0x00013290, 0x04500001, 0x02800004, + 0x08580440, 0x00200008, 0x34005830, 0x2800882c, 0x00282000, 0x40060002, 0x80100010, 0x11001000, 0x40844385, 0xa000080a, + 0x02092020, 0x04020440, 0x40404284, 0x01048020, 0x08810901, 0x80200442, 0x02000000, 0x15428114, 0x021012a1, 0x00000800, + 0x0089200c, 0x20204444, 0x00000000, 0x4c401010, 0x10240020, 0x44086000, 0x18141206, 0x08200000, 0x00002001, 0xa00a8c3a, + 0x10110004, 0x01400100, 0x40005ab0, 0x22280002, 0x00802001, 0x81048d78, 0x4c454281, 0x00100024, 0x02020808, 0x80020402, + 0x00809000, 0x11304150, 0x02810281, 0x08000808, 0x044c8020, 0x24602400, 0x00000100, 0x500452d1, 0x0820082c, 0x00000100, + 0x80102403, 0x50121000, 0x03048000, 0x20894295, 0x20080102, 0x84000000, 0x00423548, 0x40048280, 0x01000000, 0x02004814, + 0x8802046a, 0x00208010, 0x15811001, 0x00912b80, 0x02000001, 0x2040c008, 0x04480440, 0x48000000, 0x003212b4, 0x00200821, + 0x20041000, 0x4452c404, 0x02008008, 0x08000100, 0x346a0ae2, 0x80014000, 0x01000100, 0x5a9036d4, 0x04000003, 0x00008000, + 0xa12c2548, 0x00010aa0, 0x00444005, 0x4a020000, 0x10200442, 0x04800000, 0x811eb100, 0x00010aa8, 0x00002011, 0x22e84002, + 0x00000410, 0x14420000, 0x8880c046, 0x41041820, 0x08302000, 0x040802c2, 0x90048004, 0x01100108, 0x6cc216f1, 0x2000200a, + 0x0a000000, 0x145b4c50, 0x08040ba0, 0x01104001, 0xd200a004, 0x80288452, 0x00000000, 0x448b2108, 0x12101280, 0x01800020, + 0x2861280b, 0x00081450, 0x14000104, 0x8050c002, 0x00040028, 0x1000102c, 0xc0c08602, 0x00080000, 0x21004122, 0x8a270b81, + 0x00012201, 0x41008088, 0x14901474, 0x8002240a, 0x00040000, 0x3b585920, 0x04210280, 0x40008865, 0x3a0c5010, 0x00808402, + 0x00000010, 0xf1522108, 0x08810280, 0x00001049, 0xe62a2024, 0x04004400, 0x11401800, 0x42118243, 0x000c0020, 0x20200816, + 0x8ac38689, 0x12002200, 0x40100085, 0x00211450, 0x2006250a, 0x0100c040, 0x01e80830, 0x00250380, 0x06000021, 0xe8805014, + 0x90408442, 0x00000800, 0x21166108, 0x20200280, 0x0c803018, 0xc20f4007, 0x00000440, 0x01104000, 0x16c51aa2, 0x48080028, + 0x104c1004, 0x00020040, 0x00080088, 0x21600442, 0x4c818920, 0x01032601, 0x828018a0, 0x1c540814, 0x40004402, 0x04080008, + 0x29202140, 0x80810290, 0x4848200d, 0x101ec000, 0x8220144a, 0x10100830, 0x0502c104, 0x02010aa0, 0xa8802000, 0xc0640001, + 0x00081412, 0x0484400c, 0xc05300c0, 0x10200000, 0x8040a162, 0x0d4b0940, 0x10000204, 0x201000a8, 0x04e45011, 0x40010402, + 0x12483050, 0x38320108, 0xc0800280, 0x05088808, 0x1024402d, 0x16012442, 0x08140004, 0x800a9004, 0x00000b90, 0x2bc80028, + 0xc0250001, 0x04003450, 0x01104004, 0xd0438100, 0x08088809, 0x540066c4, 0x0a080000, 0x08082020, 0xa006844a, 0x01600900, + 0x00015241, 0x100008a0, 0x42100014, 0xa00a8402, 0x04c03050, 0x01040108, 0x1a110a81, 0x0020202c, 0x60044000, 0x00800442, + 0x901cd014, 0x21420100, 0x24010281, 0x0000e022, 0x02a00000, 0x00401518, 0x19084384, 0x06100840, 0x80082808, 0x69648442, + 0x00800120, 0x02024204, 0x40b108a1, 0x10001010, 0x800e8c22, 0x25401058, 0x01002000, 0x08011380, 0x22042009, 0x40904804, + 0x00400442, 0xb030d034, 0x00060000, 0x012002a0, 0x0882a10a, 0x060b0801, 0x00001440, 0x60100285, 0x04c00010, 0x00282008, + 0xc2844044, 0x04e00400, 0x20200008, 0x8e42a002, 0x00001920, 0x10054201, 0x0b280080, 0x00b01014, 0x0402240a, 0xb0108040, + 0x41080100, 0x40010a80, 0x22280004, 0x08c46000, 0x00009443, 0x40140030, 0x81420100, 0x00850289, 0xb62a8000, 0x0800a000, + 0x15005410, 0x42c00024, 0x00140840, 0x08000000, 0x8642a822, 0x20200100, 0x41004204, 0x1abd0089, 0x08001010, 0x20020402, + 0x14508040, 0x81082008, 0x00050ba0, 0x68280001, 0x00804004, 0xa0481452, 0x44140000, 0x13028000, 0x0a002380, 0xa08a0008, + 0x00018001, 0x10205450, 0x46850024, 0x00400800, 0x20080008, 0x14044404, 0x00001000, 0x00080020, 0xa8428442, 0x01200900, + 0x02954209, 0x000030a0, 0x10000014, 0x840a0402, 0x00400040, 0x60002128, 0x48058aa0, 0x0008000d, 0x00004000, 0x94c00442, + 0x01140010, 0x4222a108, 0x01016280, 0xa8001001, 0x02a00800, 0x40525430, 0x00880008, 0x04800040, 0x18000020, 0x20628006, + 0x810c0900, 0x0201420c, 0x508020a1, 0x00141010, 0xa400240a, 0x104a0040, 0x01000020, 0x00018b80, 0x022c2029, 0x40804014, + 0x94501442, 0x08060010, 0x41008100, 0x22202280, 0x00880008, 0x00010801, 0x00005464, 0x48140000, 0x16400000, 0x80280038, + 0x0c88544c, 0x10148000, 0x80200008, 0x440a8402, 0x09000930, 0x50014200, 0x082000c0, 0x26103015, 0x040c240a, 0x00c00040, + 0x28208100, 0x08210a80, 0x80800025, 0x40064000, 0x9302240a, 0x00000010, 0x01409140, 0x00012aa1, 0x22120000, 0x04a00008, + 0x004c4400, 0x40100004, 0x0c000042, 0x00000010, 0x2400182a, 0x98208001, 0x12174204, 0x08800081, 0x01083110, 0xe0000402, + 0x00480040, 0x0500a008, 0x48001a80, 0x00260001, 0x00004104, 0x94018442, 0x42900020, 0x00021000, 0x22810380, 0x01480018, + 0x40002821, 0x08504450, 0xc2a10000, 0x04000000, 0x00201000, 0x10200400, 0x44000812, 0x00001000, 0x00120001, 0x0b2ce926, + 0x10014000, 0x88040000, 0x20101a9c, 0x044a2003, 0x42008000, 0x21800d18, 0x08011ac0, 0x40200004, 0x80044030, 0x90000402, + 0x00900001, 0x03429110, 0x00090281, 0x28000000, 0x46a08040, 0x00402408, 0x40040000, 0x14100861, 0x200008a4, 0x040a2100, + 0x8c2051d2, 0x1010c200, 0x48800800, 0x02001099, 0x2004200a, 0x01090800, 0x00008444, 0x09a34290, 0x86540801, 0x40000024, + 0x9440245a, 0x00100100, 0x010a9100, 0x22206280, 0x00800020, 0x0005480d, 0x480e8450, 0x02000000, 0x14404002, 0x00200024, + 0x12400030, 0x042656c4, 0x0000a008, 0x80620120, 0x08900fc2, 0x00050000, 0x00805004, 0x321806b0, 0x8028800a, 0x21402001, + 0x44020500, 0x020102c0, 0x40200004, 0x08145821, 0x80008442, 0x01100000, 0x41ce1114, 0x10810288, 0x8800a001, 0x262c4826, + 0x00001410, 0x04460100, 0x9010c240, 0x8808a004, 0x21220820, 0x4100060a, 0x10100205, 0x00c14000, 0x44201df0, 0xa00a8002, + 0x0a402008, 0x01040540, 0x0a0002a1, 0x04080000, 0x50a55804, 0x14108442, 0x00000000, 0x8042301c, 0x02000380, 0x09082800, + 0x20810023, 0x84005448, 0x02040100, 0x50628281, 0x82000004, 0x00040040, 0x82804284, 0x00280020, 0x8d029100, 0x65410b83, + 0x00011004, 0x10100800, 0x0a442ef8, 0x80028002, 0x00c84018, 0x70102511, 0x0e0102e0, 0x01242804, 0x70886001, 0x00400402, + 0x00128004, 0xb0001154, 0x00212280, 0x07080000, 0x8882880b, 0x64100420, 0x01000100, 0x12c15040, 0x00000014, 0x88068000, + 0x23e10ee3, 0x00080309, 0x00814000, 0x581434f4, 0x20020002, 0x00401000, 0x9738a478, 0x00850b80, 0x48280001, 0x20086024, + 0x80420442, 0x00008000, 0x73043014, 0x08900280, 0x26098100, 0x0000a803, 0x5000046c, 0x01545000, 0x04a10283, 0x28280818, + 0x4404443c, 0x8242b002, 0x0800200a, 0x00020000, 0x03790d60, 0x3011c280, 0x82000004, 0x48a01011, 0x0006a442, 0x84500000, + 0x30081908, 0x42250280, 0x01000804, 0x20885000, 0x00029473, 0x90000000, 0x28046100, 0x03010281, 0x00980000, 0x6c662820, + 0x0040041c, 0x01044000, 0x160100c3, 0x00281822, 0x00020100, 0x68900008, 0x0000a284, 0x12914001, 0x8c241010, 0x20002c4a, + 0x05480100, 0xd1001100, 0x40030280, 0x00240801, 0x3880c00c, 0x86401462, 0x00128000, 0x40004000, 0x00010390, 0x01880008, + 0x3a026825, 0x00401440, 0x01240000, 0xc6838100, 0x30100020, 0x00004414, 0x04c00000, 0x61080802, 0x88000008, 0x01200120, + 0x02810281, 0x0002c014, 0x10143000, 0x80020442, 0x44002000, 0x28080108, 0x02250284, 0x01000001, 0x48c0c028, 0x80401c52, + 0x00000000, 0x15028100, 0x00a10a80, 0x0a000000, 0x20100009, 0xc41c5414, 0x00420000, 0x10002260, 0x08020822, 0x01210008, + 0xa5400000, 0x00180284, 0x5000d001, 0x00442010, 0x2282054a, 0x00292000, 0x81100000, 0x48850280, 0x04401011, 0x0008c124, + 0x90409c42, 0x02200018, 0x200a0100, 0x01000a80, 0x44000028, 0x02950001, 0x50081450, 0x20100000, 0x0c646000, 0x200a2024, + 0x40040060, 0x04404000, 0x00000022, 0xa8081814, 0x1020a100, 0x40111290, 0x01800008, 0x10064005, 0x02020448, 0x20000000, + 0x80782022, 0x00014000, 0x03008100, 0x4c940ab5, 0x04200012, 0x00489000, 0xc1020508, 0x088102c1, 0x00004000, 0x3210082c, + 0x00100400, 0x04088040, 0x80602000, 0x08a01016, 0x4008c000, 0x93060828, 0x10001280, 0x00102111, 0x22854000, 0x80020444, + 0x00000008, 0x6c082802, 0x41854004, 0x02008100, 0x086002a0, 0x80420802, 0x04000001, 0x00009450, 0x10040280, 0x01302100, + 0x02810021, 0x68100c40, 0x00080000, 0x1440400c, 0x000c1800, 0x04200820, 0x10042040, 0x00100472, 0x40a01800, 0x0c004104, + 0x20012aa0, 0x011a1008, 0x94c08011, 0x62003454, 0x000c4008, 0x04000802, 0x0040600c, 0xc0068100, 0x1b810aa0, 0x0002d016, + 0x80000001, 0x01200504, 0x06418280, 0x00800041, 0x38180828, 0x00608404, 0x00000040, 0x04142000, 0x18000042, 0x00001830, + 0xc0204108, 0x02000aa0, 0x20083010, 0x51168001, 0x00883450, 0x2001400c, 0x00020002, 0x0c20e008, 0x81400004, 0x401402b1, + 0x1200d106, 0x80930000, 0x05000c40, 0x22818380, 0x00480008, 0x80002035, 0x04440445, 0x08200800, 0x40000000, 0x10200800, + 0x00602000, 0x10041000, 0x0c400010, 0x40300000, 0x00020000, 0x08210000, 0x25188000, 0x90c40000, 0x10500000, 0x60080000, + 0x06000000, 0x200a0020, 0xc1000000, 0x08850004, 0xc0060000, 0x02000000, 0x04200000, 0x83430000, 0x00800000, 0x39100000, + 0x02a00020, 0x04008000, 0x004c0000, 0x14700000, 0x00000000, 0xeb000001, 0x18200000, 0x00090000, 0x00360000, 0x18180100, + 0x40400000, 0xa2a00000, 0x20080000, 0x40060000, 0x04000000, 0x41870080, 0x0a100000, 0x80200000, 0x82cb0000, 0x05000000, + 0x30060000, 0x46c50000, 0x08200000, 0x00000000, 0x1c400010, 0x00200000, 0x00008000, 0x80000000, 0x00506000, 0x40400061, + 0x00090000, 0x00000000, 0x00800000, 0x00004000, 0x00000000, 0x00000000, 0x02000011, 0x00480000, 0x02083010, 0x00200000, + 0x00080000, 0x00000008, 0x40400000, 0xe0000005, 0x00000000, 0x20000000, 0x00040004, 0x00000000, 0x80000000, 0x00000100, + 0x00080040, 0x00200000, 0x04000000, 0x00480000, 0x14000000, 0x00000000, 0x00800004, 0x88000000, 0x00000100, 0x00000008, + 0x00002000, 0x00800000, 0x04000000, 0x00000020, 0x00080000, 0x00000010, 0x00008100, 0x00080000, 0x00000000, 0x00000001, + 0x00800064, 0x04800e82, 0x0000244e, 0x00009110, 0x02004f84, 0x00000aaa, 0x08002001, 0x02009c78, 0x10401556, 0x0810638d, + 0x002012a0, 0x1020a80a, 0x00000442, 0x0010c548, 0x00000b85, 0x600052b2, 0x0104e001, 0x0000bc7a, 0x00580540, 0x00045382, + 0x00004a99, 0x000a2920, 0x408026cb, 0x00029452, 0x01404824, 0x04045694, 0x00102bab, 0x0000a018, 0x00019c60, 0x00005456, + 0x40524281, 0x08003b39, 0x0440a8aa, 0x00828442, 0x115c5444, 0x00004215, 0x002c1ba2, 0x4200e80d, 0x0000a55a, 0x000014c0, + 0x44005203, 0x00204aa9, 0x00022924, 0x8040a6ca, 0x00009444, 0x20082808, 0xaa4a2440, 0x54129452, 0x19245000, 0x05810920, + 0x20262aa8, 0x8210a002, 0xb8289012, 0x45061550, 0x01850304, 0x60194288, 0xa886a820, 0xc4068442, 0x35400540, 0x19915394, + 0x008302a0, 0x8a208024, 0x0402ac42, 0x10001410, 0x979313d0, 0x4a214aa4, 0x09a02800, 0xa6510408, 0x1408b452, 0x10140004, + 0x08e15834, 0x6b812aa9, 0xa002000a, 0x9102b002, 0x42041444, 0x00880285, 0x33154089, 0x00208228, 0xe0080c42, 0x2000c440, + 0x4e015295, 0x91110aa1, 0x20068022, 0xab72ac48, 0x10401050, 0x82811281, 0x1d914aa6, 0x65042828, 0x2aa10440, 0x901ab45b, + 0x08680020, 0x24080000, 0x04100004, 0x80d00010, 0x59044400, 0xb8a10004, 0x004a0000, 0x10100004, 0x42844000, 0x010500a0, + 0x40092000, 0x82021006, 0xe0620000, 0x00404000, 0x01850002, 0x98110800, 0x0e620000, 0x80024008, 0x13c00100, 0x01010000, + 0x40ad0000, 0x08200028, 0x00480040, 0x30120000, 0x14744000, 0x48040001, 0x2ba90000, 0x005a8000, 0xb0020010, 0x10154010, + 0x068c0000, 0x00802000, 0xaa0b2000, 0x04000010, 0x00460004, 0x50a50000, 0x08020008, 0x82210000, 0x0d4a0000, 0x90c14400, + 0x14200010, 0x4a810001, 0x20280000, 0x0c480000, 0x24520080, 0x00000000, 0x02008088, 0x10020000, 0x40040000, 0x00200000, + 0x00080000, 0x00000008, 0x2c000860, 0x00100000, 0x04400000, 0x20800000, 0x00080010, 0x04000008, 0x02242018, 0x00000000, + 0x00000000, 0x00000008, 0x00180000, 0x20000000, 0x00008004, 0x08000002, 0xa0000000, 0x04000080, 0x00000000, 0x01000000, + 0x02000040, 0x00000000, 0x80000000, 0x00000020, 0x20400000, 0x40000000, 0x00001012, 0x00000000, 0x00400000, 0x44002008, + 0x23000000, 0x00100000, 0x00804000, 0x20100000, 0x00000002, 0x02008004, 0x01040000, 0x00000000, 0x00000000, 0x90000000, + 0x20000004, 0x00001602, 0x00008028, 0x00000100, 0x00402ac0, 0x02000194, 0x00000200, 0x00225402, 0x01000048, 0x80000402, + 0x1030a900, 0x00000224, 0x09000800, 0x20105080, 0x44080402, 0x00001010, 0x0004a140, 0x00800a08, 0x04042000, 0x000040a0, + 0x12001414, 0x01104100, 0x02808242, 0x00012802, 0xc0008000, 0x044006a8, 0x00005201, 0x00000090, 0x04000c44, 0x4900a400, + 0x01000040, 0x1020082a, 0x00004a80, 0x80000020, 0x11301005, 0x00009440, 0x20000010, 0x00042006, 0x000020a1, 0x00000008, + 0x00000a00, 0x00004050, 0x80100004, 0x02009602, 0x00008028, 0x00004004, 0x8096108a, 0xa8200828, 0x01008102, 0x17092640, + 0x50901114, 0x00010280, 0x02064c60, 0x24482008, 0x00000442, 0x88029900, 0x40054204, 0x09000820, 0x12a03090, 0x90028402, + 0x00101010, 0x61482140, 0x2c890a80, 0x02002008, 0xc022c022, 0x44401450, 0x00044104, 0x10128282, 0x88222820, 0x20008002, + 0x008906c9, 0x40105010, 0x11000280, 0x00a40c64, 0x2608a008, 0x00010441, 0x09521812, 0xc0844284, 0x08200820, 0x02093011, + 0x00128442, 0x90001010, 0x45486004, 0x028102a1, 0x20082008, 0xc8268802, 0x44400450, 0x11144000, 0x00839283, 0x88200828, + 0x00004004, 0x86521600, 0x08020020, 0x01208002, 0xe4092888, 0x12040114, 0x00810280, 0x48705000, 0x01000008, 0x20400440, + 0x103aa120, 0x40010214, 0x0c200820, 0x910c4082, 0x00000412, 0x12001000, 0x84828148, 0x0a010a00, 0x01182008, 0xa0e600a4, + 0x00041410, 0x01004004, 0x86510040, 0xc0002800, 0x28008002, 0x14620028, 0x00005000, 0x01000291, 0x5c3d0004, 0x2080a000, + 0x06400440, 0x1018002a, 0xc0204280, 0x01040820, 0x380b0005, 0x12008440, 0x80801010, 0x2546000a, 0x200800a1, 0x00902008, + 0x02270a04, 0x08040050, 0x15004004, 0x40411400, 0x20120028, 0x60088000, 0x04d04004, 0x20202820, 0x88000000, 0x028c810a, + 0x40405210, 0x02830000, 0x11140084, 0x0040a408, 0x2c000000, 0x800a0142, 0x48214a84, 0x01000000, 0x20140028, 0x00109442, + 0x00800000, 0xa24a4110, 0x28012aa0, 0x15080000, 0x02800008, 0x00205450, 0x44040000, 0x10520004, 0x0002a828, 0x2b000000, + 0x80a90002, 0x52815094, 0x01000000, 0x00540201, 0x2040a04a, 0x00200000, 0x040a0400, 0xc88042a4, 0x01000000, 0x02150809, + 0x80008452, 0x10180000, 0x41621000, 0x20000aa9, 0x44884000, 0x0a212000, 0x00001440, 0x10120000, 0x06404014, 0x20002828, + 0x04000000, 0x10144c00, 0x08000020, 0x40200000, 0x800a990c, 0x10010210, 0x45100004, 0x20043082, 0x02080408, 0x00800002, + 0xa1426140, 0x02050a04, 0x04000000, 0x4080c020, 0x08221402, 0x80000000, 0x50548190, 0x00a12a04, 0x01000000, 0x4e0000c8, + 0x24485410, 0x00000000, 0x00900064, 0x2000a800, 0x48200000, 0x900e0022, 0x00105080, 0x51000010, 0x00050209, 0x8200a040, + 0x20080000, 0x0cc2040c, 0x008440a0, 0x01000000, 0x40010806, 0x80028050, 0x08200000, 0x16401203, 0x080000a9, 0x03810000, + 0x20382600, 0x94400040, 0x00100000, 0xc0844c14, 0x00200028, 0x00400000, 0x04104000, 0x68082820, 0x00040004, 0x0020810a, + 0xd0015214, 0x01000000, 0x00160080, 0x2200a408, 0x00800002, 0x840a0140, 0x00014a84, 0x40440000, 0x09800020, 0x02209442, + 0x00000000, 0x90420110, 0x09112aa0, 0x02000000, 0x04a80008, 0x00005450, 0x20000000, 0x54540004, 0x0000a828, 0x08000000, + 0xa0200002, 0x40805094, 0x01120000, 0x100c0201, 0x2208a04a, 0x80010000, 0x00420400, 0x408042a4, 0x05040001, 0x08210800, + 0x02008452, 0x80000000, 0x11521000, 0x00000aa9, 0x00000000, 0x06a92000, 0x08001440, 0x10100000, 0x24444014, 0x60002828, + 0x00000000, 0x04505004, 0x08200820, 0x42840000, 0x1002a10a, 0xb0091214, 0x01000000, 0x02944080, 0x44002408, 0x200a0002, + 0x80408140, 0x40014a00, 0x00040004, 0x088000b0, 0x00209402, 0x03000000, 0xb0420150, 0x00112a80, 0x03000000, 0x0480002c, + 0x08285450, 0x00000000, 0x34540004, 0x4800a820, 0x00000000, 0x8020000a, 0x00005090, 0x21020000, 0x101c0245, 0x6680a068, + 0x00010000, 0x804a0402, 0x00804284, 0x43000020, 0x00040801, 0x00008452, 0x88400000, 0x11231000, 0x008002a9, 0x00000000, + 0x26392800, 0x00100440, 0x18000000, 0x04445014, 0x40000828, 0x00000000, 0x0010d004, 0x08240828, 0x40000000, 0x0108a102, + 0x16171210, 0x00000000, 0xa08048c0, 0x20082402, 0x04000004, 0x40029168, 0x48654a04, 0x01000000, 0x820020a0, 0x80029400, + 0x00000000, 0x0580415a, 0x1a112a84, 0x00800000, 0x00408028, 0x24685440, 0x00000010, 0x01150084, 0x4820a820, 0x20800000, + 0x9002004a, 0x52905090, 0x01000000, 0x000d0205, 0x2008a048, 0x80200000, 0x00000402, 0x4c404285, 0x01140020, 0x02a30808, + 0x80028452, 0x00000000, 0x15501008, 0x028102a9, 0x00000000, 0x20282800, 0xc8400440, 0x14100000, 0x00045016, 0x28200828, + 0x00000000, 0x46f24682, 0x08042028, 0x00200104, 0x00488fc2, 0x12034210, 0x01000004, 0xa8b414a0, 0x00008408, 0x20000000, + 0x541a2952, 0x40410a80, 0x00000004, 0x8a2c5028, 0x00001442, 0x01000000, 0xc0cea110, 0x08812a20, 0x01000000, 0x1632408a, + 0x00085400, 0x24040100, 0xc0d28256, 0x0100a808, 0x08000000, 0x922306a3, 0x02805084, 0x01000010, 0x3c1d0e01, 0x2000a042, + 0x04000000, 0x580a1c38, 0x40444280, 0x01000020, 0x82a93815, 0x00008450, 0x88100000, 0x30467006, 0x000008a9, 0x01800000, + 0x2e2de206, 0x04001050, 0x10020000, 0x4041c685, 0x20042028, 0x10000204, 0xc4608280, 0x082c2808, 0x01008502, 0x200307e0, + 0x50015210, 0x81040884, 0x04500c60, 0x8200a400, 0x20821040, 0x0c68193a, 0x41014a84, 0x02002020, 0x38b41018, 0x00009442, + 0x00404000, 0x9012610c, 0x00210ab0, 0x0300a008, 0xec84c004, 0x00005440, 0x00180184, 0x56408292, 0x20002828, 0x082c8042, + 0x044206c0, 0x80005214, 0x010000a1, 0x52710c60, 0x2084a40a, 0x00020050, 0x85581820, 0x40814a84, 0x02000028, 0x38241011, + 0x00409442, 0x80000014, 0x510a2008, 0x0c300aa0, 0x0080200b, 0x620b4004, 0x00005450, 0x01000205, 0x96c08282, 0x400ca828, + 0x540c0004, 0x82f20000, 0x00202828, 0x89008002, 0x22810100, 0x10035210, 0x01000084, 0x4a580000, 0x0000a408, 0x80020040, + 0x2cec0102, 0x00014a80, 0x40200024, 0x189c2000, 0x02009440, 0x51400012, 0xe5020100, 0x00010aa0, 0x22182008, 0x88a60002, + 0x00105440, 0x50000004, 0x06c70010, 0x88202828, 0x00008000, 0x03890000, 0x22005216, 0x00810081, 0x10160000, 0x2000a40a, + 0x04020040, 0x59180000, 0x02804a84, 0x40000020, 0x90550009, 0x0440b442, 0xd0100010, 0x282a0000, 0x00804aa1, 0x29002008, + 0xc2030000, 0x10005450, 0x01280004, 0x86c30000, 0x4000a828, 0x10244000, 0x04400000, 0x0828280c, 0x80428000, 0x60000120, + 0x41015212, 0x00a40084, 0x14100000, 0x8000a400, 0x26420040, 0x0008010a, 0x01114a80, 0x28000020, 0x62840004, 0x00009440, + 0x54700010, 0x800a0102, 0x21010aa0, 0x00002008, 0x0a800000, 0x00005450, 0x45180004, 0x90600000, 0x20042828, 0x812a8002, + 0x09400001, 0x00005214, 0x10800081, 0x42300000, 0x0800a40a, 0x24170040, 0x81280000, 0x00814294, 0x0a600820, 0x40040000, + 0x94408442, 0x00141010, 0x01060001, 0x0aa00aa5, 0x00002008, 0x20018000, 0x10081450, 0x40044004, 0x04400000, 0x00082828, + 0x02844000, 0x08400002, 0x2028282c, 0xc4428002, 0x08400100, 0x01015210, 0x1aa40084, 0x00100000, 0xa000a40a, 0x54520040, + 0x01080100, 0x4a014a84, 0x20280020, 0x00840000, 0x04009442, 0x50540000, 0x80020100, 0x0a012aa0, 0x812a0008, 0x40800010, + 0x15005440, 0x22940004, 0x00400010, 0x00002828, 0x4c4a8002, 0x24200000, 0x11005204, 0xcea10090, 0x00100000, 0x0000a40a, + 0x14560040, 0x21080001, 0x40814a84, 0x28280020, 0x800c0001, 0x04409442, 0x50140010, 0x82020000, 0x20a02aa0, 0x830a0009, + 0x00050000, 0x08005452, 0x02150004, 0x44400001, 0x28082828, 0x00844204, 0x04000000, 0x08002808, 0x90608400, 0x25000120, + 0x52035212, 0x00a40880, 0x00180000, 0x8428a400, 0x20421044, 0x00000108, 0x59814a80, 0x02202022, 0x00040004, 0x10009440, + 0x40504012, 0x84020100, 0x00252aa0, 0x21088008, 0x0a800000, 0x40005440, 0x00140084, 0x04400010, 0x30082828, 0x08028040, + 0x81200000, 0x00115204, 0x008400b0, 0x12400002, 0x0400a409, 0x001a0052, 0xe1400000, 0x08804a85, 0x62240028, 0x00000000, + 0x34009442, 0xc0500014, 0x41030000, 0x28802aa1, 0x0008000a, 0x02010000, 0x10105450, 0x40440205, 0x04200000, 0x80282828, + 0x00044000, 0x14400600, 0x48202028, 0x05028000, 0x27000904, 0x02054214, 0x10000080, 0x80181002, 0x20028408, 0x90c80042, + 0x40002120, 0x48250a84, 0x10800020, 0x04004000, 0x80021442, 0x01140010, 0x0200c108, 0x10012a20, 0xa5ca0008, 0x0a000080, + 0x05405400, 0x12800004, 0x42200050, 0x00242808, 0x08428000, 0x01180020, 0xc2045216, 0x10800081, 0x20100000, 0x2401a400, + 0x10000060, 0x8108000a, 0x02c04a80, 0x40010021, 0x00060004, 0x18029440, 0x00100010, 0x80600002, 0x200028a0, 0x8dab0008, + 0x02000201, 0x14005050, 0x42050004, 0x00400400, 0x00182028, 0x10640000, 0x04804000, 0x08202800, 0xc4020004, 0x21108120, + 0x10015010, 0x40800006, 0x04180288, 0xa400a000, 0x02480000, 0x0004054a, 0x48814294, 0x00220000, 0x00040820, 0x12008442, + 0x01500000, 0x80061100, 0x00210aa0, 0x25080000, 0x0a802010, 0x01001440, 0x42040008, 0x04424014, 0x10382828, 0x08020000, + 0x01408400, 0x00015216, 0x20800000, 0x92300080, 0x2400a00b, 0x40420000, 0x010c0440, 0x08014284, 0x40000000, 0x80240831, + 0x12008442, 0x80100000, 0x41821014, 0x20000aa0, 0x04880000, 0x0a43a00d, 0x10401450, 0x42000000, 0x84204004, 0x00042828, + 0x60820000, 0x0840c082, 0x08202828, 0x80020100, 0x301487c4, 0x50515012, 0x00000000, 0x00080ee4, 0x0480a008, 0x23580000, + 0x80041d42, 0x40014280, 0x01000000, 0x2086383c, 0x08408440, 0x20100000, 0xd6223116, 0x00210aa0, 0x03080000, 0x2880e006, + 0x80001440, 0x00100118, 0xc444c286, 0x20802828, 0x89220000, 0x150182c3, 0x00005204, 0x02880010, 0x54110ce0, 0x0002a008, + 0x20400000, 0x8d0c1c53, 0x48814284, 0x00200000, 0x02043829, 0x00408440, 0x90100000, 0x0402701a, 0x02000aa1, 0x01810000, + 0x8000600a, 0x00081450, 0x20540000, 0x0e22c287, 0x08002828, 0x44500000, 0x9200c286, 0x080c2808, 0xa0200100, 0x008187e0, + 0x01015010, 0x00040000, 0x5af20ee6, 0xa00aa000, 0x04000000, 0x18301d7a, 0x01054280, 0x42a00004, 0x08583830, 0x00428440, + 0x94000002, 0x01187118, 0x08810aa0, 0x00200000, 0x620ee006, 0x04501440, 0x01000018, 0x0001c286, 0x10082828, 0xc0240000, + 0x2b8086c3, 0x00105004, 0x10870011, 0x484004e0, 0x0002a208, 0x80480000, 0x33301872, 0x0c044684, 0x40210000, 0x32183839, + 0x90528440, 0x04000002, 0x218c7018, 0x08210aa0, 0x02880001, 0x6004e00e, 0x04401450, 0x41040000, 0x1091c087, 0x00002828, + 0x40140000, 0x94000404, 0x0800a028, 0x80020000, 0x04690902, 0x20054294, 0x53800000, 0x08301000, 0x80008448, 0x00400000, + 0x3c182102, 0x03230aa4, 0x00040000, 0x50084008, 0x88801442, 0x00120000, 0x24048100, 0x33412a28, 0x00a80000, 0x00020090, + 0x00005404, 0x15440110, 0x48910040, 0x8800a808, 0x00020000, 0x25a80022, 0x12005285, 0x00910010, 0x48600800, 0x2008a440, + 0x00440000, 0x1932000a, 0x84004aa0, 0x08250000, 0x52080005, 0x00809450, 0x00020000, 0xd0540006, 0x0c8028a9, 0x01080000, + 0x82070200, 0x00005054, 0x25840000, 0x52f30600, 0x0020a028, 0x60100000, 0x14ca0000, 0x0828a80c, 0x20040002, 0x02800120, + 0x13015290, 0x00940004, 0xc0420000, 0x8002a442, 0x20080000, 0x00400108, 0x4b214aa0, 0x04040004, 0x20900000, 0x00409440, + 0x14000002, 0xc00a0110, 0x09192aa8, 0x02240000, 0xe0800000, 0x44105444, 0x10040010, 0x00420000, 0x8228a82a, 0x09000000, + 0x23010000, 0x00005294, 0x04030001, 0x52100000, 0xa406a448, 0x00800000, 0x01080002, 0x48004aa4, 0x00010001, 0x22640000, + 0x00409450, 0x80000002, 0x10920000, 0x08202aa8, 0x03880001, 0x04010000, 0x04405454, 0x00800000, 0xb0100000, 0x0000a828, + 0x04500800, 0x40000414, 0x0a288020, 0x00001000, 0x1102090a, 0x10010290, 0x84042000, 0x60101004, 0x82820448, 0x00204000, + 0x24082002, 0x00410824, 0x00a48100, 0x40004200, 0x04401012, 0x09000080, 0x82028504, 0x00012208, 0x01100040, 0x1a800880, + 0x30184404, 0x80000020, 0x04641040, 0x00288810, 0x48000000, 0x01022022, 0x80501280, 0x00040018, 0x70004001, 0x200a2440, + 0x00010004, 0x83808008, 0x46c04820, 0x00050002, 0x00000085, 0x00409010, 0xa4200200, 0x18120042, 0x00202089, 0x01000400, + 0x2a890220, 0x50004044, 0x00800800, 0x04540410, 0x00028020, 0x00200000, 0x40081014, 0x18128800, 0x01240000, 0x0100212a, + 0x30191290, 0x00800000, 0xc0004004, 0x220c2440, 0x00000008, 0x00408002, 0x08064820, 0xc5000100, 0x02210284, 0x80009000, + 0x10820010, 0x01400542, 0x02012288, 0x04800000, 0x20180820, 0x08444444, 0x04200000, 0x40101010, 0x80008820, 0x18000002, + 0x21202008, 0x00011280, 0x121a0000, 0x40004015, 0x04042448, 0x20080000, 0x00828000, 0x00044826, 0xc1300000, 0x00410280, + 0x02029012, 0x08800001, 0x90580440, 0x02892289, 0x05000000, 0x60000820, 0x08204444, 0x04c00000, 0x40001010, 0x18208820, + 0x00400000, 0x50000000, 0x04420000, 0x08100000, 0x00240000, 0xa8a10000, 0x11180000, 0x42000000, 0x10180000, 0x04040000, + 0x20200000, 0xa00c0000, 0x00020000, 0x41410000, 0xc0840000, 0x02020000, 0x18200000, 0x84830000, 0x03400000, 0x21180000, + 0x0a800000, 0x00660000, 0x54000000, 0x0c600000, 0x00100000, 0x23080000, 0x0cb00000, 0x10000000, 0xc0020000, 0x10100000, + 0x040c0000, 0x22010000, 0xa0280000, 0x00060000, 0x50c00000, 0xc1040000, 0x02030000, 0x38100000, 0x86830000, 0x01480000, + 0x20000000, 0x02410000, 0x48a40000, 0x14100000, 0x0c400000, 0x00080000, 0x000a0000, 0x00800000, 0x00900000, 0x00200000, + 0x00800000, 0x00080000, 0x00600000, 0x00000000, 0x00000000, 0x40100000, 0x00000000, 0x40000000, 0x00000008, 0x00000000, + 0x00080000, 0x00000020, 0x00200000, 0x00020000, 0x01000000, 0x00100000, 0x80000000, 0x05000000, 0x80010000, 0x00100000, + 0x60000020, 0x00200000, 0x80000000, 0x00100000, 0x00000000, 0x00000000, 0x04000000, 0x02000000, 0x00000000, 0x00000008, + 0x00000000, 0x40080000, 0x00000000, 0x80200000, 0x00000000, 0x80000000, 0x02000000, 0x00010000, 0x00020000, 0xc0000000, + 0x04402828, 0xa220a6c2, 0x0002945a, 0x00005134, 0x000c4fc4, 0x02002aa8, 0x0000a00a, 0x10009c72, 0x40085554, 0x0204438c, + 0x22003ab0, 0x00c0a82a, 0x00028442, 0x10107554, 0x400a5394, 0x00000aa0, 0x6000e80e, 0x0004a44a, 0x00401550, 0x0604d396, + 0x00004aa4, 0x02002928, 0x0280a6ca, 0x00009452, 0x41405014, 0x00004ec5, 0x00002aa9, 0x0004a00a, 0x8c019c72, 0x00085454, + 0x00404285, 0x20003ab9, 0x0010a82a, 0x08088442, 0x01487455, 0xa0005294, 0x00100aa1, 0x0004e82e, 0x0400a44a, 0x00421450, + 0x0424d287, 0x00004ab4, 0x00802829, 0x2021a6cb, 0x06009452, 0x08040000, 0x00000000, 0x14540000, 0xd1000000, 0x4f410000, + 0xa8210000, 0x20020000, 0x8c100000, 0x11d60000, 0x05010000, 0x18010000, 0xac220000, 0x80080000, 0x25440000, 0x03b50000, + 0x18810000, 0x8e400000, 0x80000000, 0x31180000, 0xd0830000, 0x68ad0000, 0x08600000, 0x00080000, 0x34120000, 0x00040000, + 0x18e50000, 0x0b8b0000, 0x00080000, 0x31600000, 0x52120000, 0x40840000, 0x99200000, 0x20a70000, 0x84420000, 0x40140000, + 0x16a10000, 0x0b830000, 0x40000000, 0x29580000, 0x12010000, 0x50820000, 0x49100000, 0x2d0c0000, 0x80c80000, 0x10500000 + +}; diff --git a/qf_vr_apps/qf_vr_aec_app/inc/Bootconfig.h b/qf_vr_apps/qf_vr_aec_app/inc/Bootconfig.h new file mode 100644 index 00000000..3b6f869f --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/Bootconfig.h @@ -0,0 +1,46 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : Bootconfig.h + * Purpose: + * + *=========================================================*/ + +#ifndef __BOOT_CONFIG_H +#define __BOOT_CONFIG_H + +//These must enabled to load the FPGA and FFE first if used in the rest of the code +//Note: Enable only during debug. Should not enabled for Flashing the bin file since +// the bootloaders loads them +#if defined(ENABLE_LOAD_FPGA) +#error Set this here, not on command line. +#endif +#define ENABLE_LOAD_FPGA 0 /* exactly 0 or 1, nothing else */ + +#if defined(ENABLE_LOAD_FFE) +#error Set this here, not on command line. +#endif +#define ENABLE_LOAD_FFE 0 /* exactly 0 or 1, nothing else */ + +void fpga_load(const char* filename); +void ffe_load(const char* filename); +void start_load_from_flash(void); + +//#define LOAD_MERCED_1_1_FPGA + +#endif // __BOOT_CONFIG_H diff --git a/qf_vr_apps/qf_vr_aec_app/inc/FPGA_AEC_qlsym_dbgdmairq_2021_03_18a.h b/qf_vr_apps/qf_vr_aec_app/inc/FPGA_AEC_qlsym_dbgdmairq_2021_03_18a.h new file mode 100644 index 00000000..d85b554b --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/FPGA_AEC_qlsym_dbgdmairq_2021_03_18a.h @@ -0,0 +1,1904 @@ +const uint32_t axFPGABitStream[] = { + 0x00000000, 0x00001000, 0x00000000, 0x00008000, 0x00000000, 0x00000028, 0x00002000, 0x00000000, 0x00000000, 0x00000000, + 0x00004001, 0x00000002, 0x00000040, 0x00004040, 0x00000020, 0x00000800, 0x00000000, 0x00002020, 0x00000000, 0x00000080, + 0x00006804, 0x00000000, 0x00000000, 0x00000000, 0x00000004, 0x00000010, 0x00004000, 0x00002000, 0x00008040, 0x00000004, + 0x00000000, 0x00000809, 0x000004a0, 0x00000010, 0x00000000, 0x00000000, 0x00000004, 0x00000000, 0x00000040, 0x00002000, + 0x00000800, 0x00000000, 0x00002001, 0x00002000, 0x00000000, 0x00000404, 0x000000a8, 0x00006000, 0x00000036, 0x00002000, + 0x00000082, 0x00008041, 0x0000d090, 0x00000001, 0x00000800, 0x00008108, 0x00101000, 0x00001800, 0x10000000, 0x00002090, + 0x00001100, 0x00000042, 0x00004000, 0x00001008, 0x00008034, 0x00000000, 0x00000000, 0x00000440, 0x0000e102, 0x00000220, + 0x00000808, 0x0000a104, 0x00001002, 0x00000000, 0x00000000, 0x00000200, 0x00000000, 0x00000000, 0x00000040, 0x00002004, + 0x00000080, 0x00004000, 0x0000c021, 0x00041008, 0x00000070, 0x00000080, 0x00008000, 0x00000040, 0x00000001, 0x00004004, + 0x00000800, 0x0000c010, 0x00000540, 0x00000000, 0x00000840, 0x00000b00, 0x0000400c, 0x00400102, 0x00000000, 0x00002600, + 0x00200090, 0x0000200c, 0x00008422, 0x00100210, 0x0000400d, 0x00000201, 0x0000a004, 0x00000002, 0x00000440, 0x00004001, + 0x00001083, 0x00000028, 0x00008080, 0x00000411, 0x00001048, 0x000000c0, 0x000008a0, 0x00000009, 0x00400c00, 0x00004413, + 0x00002084, 0x0000d000, 0x00002018, 0x00008000, 0x00005042, 0x00000400, 0x00001090, 0x00000002, 0x00008000, 0x00000000, + 0x00004011, 0x00001084, 0x00004220, 0x00000818, 0x000110c0, 0x00000000, 0x00800820, 0x00000002, 0x00800000, 0x00408300, + 0x00000280, 0x00000004, 0x08200c20, 0x00000440, 0x00000000, 0x00000000, 0x10000820, 0x00000000, 0x20000000, 0x00001010, + 0x00000000, 0x00000080, 0x40042008, 0x00000000, 0x80040800, 0x00004004, 0x00000000, 0x00800000, 0x00008000, 0x00000000, + 0x00400400, 0x00000001, 0x00000002, 0x00200020, 0x00000400, 0x00000080, 0x00200002, 0x10000820, 0x00000040, 0x00100008, + 0x20000090, 0x00080000, 0x40002044, 0x00000008, 0x00000000, 0x00041002, 0x80004000, 0x00000000, 0x00800004, 0x00008000, + 0x00000000, 0x00000000, 0x8002d000, 0x00040010, 0x00000020, 0x00802100, 0x00000010, 0x0000000c, 0x00000200, 0x00000008, + 0x0000c402, 0x00000000, 0x00400940, 0x000812b4, 0x00000010, 0x00000000, 0x00200408, 0x10080800, 0x00000000, 0x000040c2, + 0x00006000, 0x00001420, 0x00000000, 0x40000002, 0x00000010, 0x04800808, 0x00010200, 0x80000080, 0x00000425, 0x00400048, + 0x00802000, 0x00108010, 0x08000800, 0x00000000, 0x00080202, 0x00001081, 0x00000022, 0x00004410, 0x00000048, 0x00000020, + 0x00020804, 0x00040000, 0x00000004, 0x00081040, 0x00000032, 0x00004004, 0x00000000, 0x00040030, 0x00088000, 0x00020800, + 0x00000000, 0x00000000, 0x84000000, 0x00400440, 0x00820204, 0x00041880, 0x00200000, 0x00000004, 0x80180088, 0x00000000, + 0x00001000, 0x10000000, 0x00000800, 0x20000080, 0x0000000c, 0x00040044, 0x40000000, 0x00000000, 0x80004000, 0x00008000, + 0x00002402, 0x000002c0, 0x00000000, 0x08220040, 0x00000442, 0x00800000, 0x00020000, 0x00000800, 0x00200000, 0x20400010, + 0x00001040, 0x00002000, 0x00880022, 0x20002000, 0x00000000, 0x4000c080, 0x40000014, 0x000c0000, 0x00000000, 0x00000000, + 0x00180440, 0x00000200, 0x00800100, 0x00020828, 0x40008000, 0x00000044, 0x00000400, 0x00003010, 0x00a00008, 0x00008020, + 0x00302000, 0x08004000, 0x00000000, 0x00002086, 0x00000000, 0x00002540, 0x40088206, 0x00000280, 0x40000100, 0x00140010, + 0xc0000400, 0x00008040, 0x000808a0, 0x10800100, 0x80000000, 0x04041830, 0x00400010, 0x00008000, 0x00003000, 0x80000000, + 0x00802000, 0x40010008, 0x00004000, 0x00001206, 0x00408080, 0x00188000, 0x20000448, 0x00000003, 0x00000001, 0x00000800, + 0x00040088, 0x00000402, 0x80001050, 0x08000021, 0x00038008, 0x00600010, 0x00000400, 0x00000020, 0x10200000, 0x00800800, + 0x10100080, 0x00001010, 0x00000008, 0x20002040, 0x00000008, 0x900a4000, 0x40000100, 0x0000c004, 0x10040400, 0x00400000, + 0x00008002, 0xa0820080, 0x11000100, 0x02000a00, 0x00100080, 0x00400040, 0x04080000, 0x20002404, 0x00000820, 0x08000010, + 0x00002000, 0x90000008, 0x20401012, 0x00080000, 0x00082000, 0x20020008, 0x0000c800, 0x00000440, 0xc0144000, 0x00000024, + 0x80000a01, 0x00218002, 0x40060000, 0x02000044, 0x001000a1, 0x80822008, 0x04000040, 0x00400000, 0x00801400, 0x000000a0, + 0x00001000, 0x00100440, 0x00002010, 0x00040000, 0x00008824, 0x00085018, 0x80400400, 0x00000042, 0x00000004, 0x00002000, + 0x00000208, 0x00008004, 0x00000002, 0x00004000, 0x00008002, 0x00200300, 0x000041e0, 0x00000420, 0x00000010, 0x00002280, + 0x20001800, 0x00000000, 0x00088440, 0x00000808, 0x00000020, 0x40800010, 0x00001000, 0x00002044, 0x00024012, 0x0000a008, + 0x002000c0, 0x00000000, 0x80000202, 0x00004000, 0x00010004, 0x00000002, 0x00000020, 0x00008099, 0x00400c80, 0x00100000, + 0x00000241, 0x00000020, 0x00000000, 0x00100458, 0x00001000, 0x00003024, 0x00000090, 0x00000000, 0x00002080, 0x00000008, + 0x00000200, 0x00408000, 0x80040000, 0x00000402, 0x00000000, 0x10004040, 0x00000020, 0x00001800, 0x80208010, 0x20083200, + 0x00000000, 0x00800010, 0x00200040, 0x00000008, 0x20400000, 0x00000020, 0x00102000, 0x00000000, 0x00009010, 0x0000000a, + 0x00000240, 0x00002001, 0x00000000, 0x800c4080, 0x00000600, 0x00000802, 0x80010004, 0x00008060, 0x00000010, 0x00000000, + 0x00000400, 0x00000090, 0x00000000, 0x00001000, 0x00000048, 0x00106000, 0x00000000, 0x00000024, 0x20001802, 0x00000000, + 0x00080040, 0x00008024, 0x00000002, 0x00040000, 0x00100070, 0x00000100, 0x00000000, 0x400a2010, 0x00000028, 0x00000480, + 0x00804000, 0x00020000, 0x00000024, 0x8000000a, 0x00000000, 0x00002110, 0x00c0028c, 0x10002000, 0x00001084, 0x08000440, + 0x00000008, 0x00200400, 0x00000820, 0x00004000, 0x00000080, 0x30001810, 0x80000200, 0x00400403, 0x00002008, 0x00800000, + 0x00000068, 0x00002010, 0x00000800, 0x00400020, 0x80008088, 0x00a00000, 0x00001000, 0x40010003, 0x0000400c, 0x00040000, + 0x80400400, 0x00008004, 0x00024000, 0x000010e0, 0x00000000, 0x00400010, 0x84080000, 0x40808026, 0x00200008, 0x00c00100, + 0x04100204, 0x50000010, 0x00200000, 0x00040480, 0x20080008, 0x00300000, 0x04400820, 0xc0040000, 0x10120084, 0x00820010, + 0x80001000, 0x40080400, 0x01000000, 0x02000008, 0x08008082, 0x00000400, 0x04400000, 0x00200080, 0x00000000, 0x08200800, + 0x00c02400, 0x00000002, 0x90000080, 0x40000001, 0x00200048, 0x20892400, 0x02000000, 0x00100022, 0x00440000, 0x60881000, + 0x00000002, 0x20020000, 0x800c2000, 0x00000008, 0x02810000, 0x08000000, 0x00320000, 0x84480040, 0x00000001, 0x00000020, + 0x00004084, 0x00089250, 0x00000000, 0x40008842, 0x00000028, 0x00002100, 0x00020290, 0x00104004, 0x00800008, 0x00001440, + 0x0000a012, 0x00000000, 0x0000292c, 0x00002210, 0x00000000, 0x00029014, 0x00000002, 0x00000080, 0x0000a108, 0x80064242, + 0x00000440, 0x20000004, 0x00800030, 0x00001000, 0x00004002, 0x00048a20, 0x00020008, 0x000002a1, 0x90007410, 0x00000000, + 0x00001454, 0x0020a802, 0x00000000, 0x00000828, 0x00100001, 0x00001000, 0x80000012, 0x0000c080, 0x00000280, 0x0000804a, + 0x00000001, 0x00081440, 0x00004820, 0x00000215, 0x00000800, 0x406444c4, 0x00000010, 0x08000800, 0x80028062, 0x00200000, + 0x11100110, 0x02800200, 0x08200408, 0x20080024, 0x04402098, 0x00000c00, 0x49040004, 0x022000c0, 0x00001000, 0x00028000, + 0x10101012, 0x81040800, 0x06800100, 0xa8080280, 0x00020400, 0x40000000, 0x0480454a, 0x00402800, 0x80202028, 0x08068806, + 0x00000400, 0x10000000, 0x429110b1, 0x20640060, 0x00000000, 0x24482000, 0x10200060, 0x40040000, 0x08200428, 0x00002008, + 0x80100002, 0x10008800, 0x00020050, 0x02801004, 0x20282289, 0x00410000, 0x04400000, 0x40050444, 0x8000c020, 0x08000000, + 0x40240280, 0x10020c02, 0x008001a8, 0x82022644, 0x24080810, 0x01400400, 0x02408aa2, 0x40000010, 0x00802002, 0x04400530, + 0x9026004c, 0x01001380, 0x08202808, 0x02008004, 0x00000002, 0x10000444, 0x0040c100, 0x04100200, 0x28088822, 0x40000080, + 0x0000a118, 0x40061284, 0x10204641, 0x00000880, 0x80020461, 0x20080000, 0x00001010, 0x0281aaa2, 0x08040000, 0x0000a000, + 0x04401450, 0x80021000, 0x00100281, 0x08002810, 0x00010002, 0x02008440, 0x10101000, 0x04c00002, 0x40000821, 0x2020c012, + 0x80040282, 0x00020018, 0x40040285, 0x000204c0, 0x00810020, 0x04402000, 0x80001040, 0x00008030, 0x48200c00, 0x200c00cc, + 0x00143000, 0x00000010, 0xd0024004, 0x00000440, 0xa0083100, 0x00008008, 0x00000004, 0x49446300, 0x02000008, 0x00000002, + 0x8000080c, 0x004ab004, 0x05000300, 0x02000402, 0x08a40088, 0x00000440, 0x44400200, 0x30149030, 0x00000800, 0x282a0024, + 0x00000000, 0x00101240, 0x90000000, 0x00044812, 0x00002448, 0x00801004, 0x600b8010, 0x00000804, 0x48046008, 0x12800080, + 0x00001002, 0x00020020, 0x84408000, 0x00010280, 0x02a00406, 0x48100831, 0x00000404, 0x04580201, 0x10003048, 0x00000800, + 0x000004c8, 0x10080026, 0x00000022, 0x00801458, 0x60102800, 0x00000100, 0x00001084, 0x00024210, 0x00022000, 0x00040448, + 0x00008030, 0x00100022, 0x0100080c, 0xa2084100, 0x00000082, 0x00009004, 0x04000240, 0x00400480, 0x00108300, 0x08000802, + 0x00000060, 0x00000600, 0x10009000, 0x00000030, 0x00800000, 0x20000888, 0x00002001, 0x000a1030, 0x40000004, 0x00000000, + 0x00000010, 0x8000a008, 0x00000000, 0x0080600e, 0x02000000, 0x00000203, 0x00008000, 0x0404048c, 0x00000050, 0x00008082, + 0x08400201, 0x00080860, 0x00004608, 0x10000002, 0x00001000, 0x04100404, 0x00000210, 0x00000020, 0x08000000, 0x10240900, + 0x00081218, 0x11020004, 0xa2500000, 0x40080000, 0x20023008, 0x0000c800, 0x40001842, 0x80042404, 0x08004000, 0x00021412, + 0x80008188, 0x00800200, 0x018020a0, 0x82000340, 0x08500000, 0x00080040, 0x24e00400, 0x40000900, 0x0028b320, 0x08000002, + 0x00000810, 0x0010105c, 0x10000000, 0x40800000, 0x00034002, 0x20081020, 0x8004a008, 0x00040020, 0x4000040c, 0x20004000, + 0x00a32002, 0x80008000, 0x00004081, 0x00400080, 0x02900008, 0x00010201, 0x00004840, 0x04010410, 0x00780080, 0x00200025, + 0x00042080, 0x008008c4, 0x00308820, 0x00020040, 0x00400008, 0x00001000, 0x00140012, 0x02080820, 0x80002008, 0x00001012, + 0x00480084, 0x01000420, 0x02204004, 0x008a9000, 0x00000000, 0x00028006, 0x00002000, 0x02100000, 0x08000300, 0x00008080, + 0x00020440, 0x00000002, 0x00800000, 0x08000020, 0x00000a00, 0x10440001, 0x50000000, 0x20001060, 0x00200410, 0x200020a8, + 0x00200001, 0x0010c010, 0x80010004, 0x08000001, 0x00224022, 0x0000000a, 0x0000e000, 0x80000200, 0x00001010, 0x00000080, + 0x00000041, 0x00100040, 0x00482400, 0x00008800, 0x00000800, 0x80000400, 0x02000000, 0x08000002, 0x00240800, 0x00800024, + 0x10000200, 0x00121090, 0x08040000, 0x20000000, 0x00283008, 0x00000000, 0x00144000, 0x40100000, 0x2000042c, 0x00000012, + 0x80220044, 0x4100c000, 0x02000300, 0x00800080, 0x40040008, 0x04000000, 0x00122440, 0x00400080, 0x00008000, 0x08200004, + 0x0000082a, 0x10000211, 0x00000080, 0x00101800, 0x20000440, 0x40082000, 0x00000008, 0x00004820, 0x5003000c, 0x801c0000, + 0x00000000, 0x00024012, 0x80008000, 0x02040081, 0x40810200, 0x00009002, 0x04000414, 0x00400000, 0x00000060, 0x08200020, + 0x000000c0, 0x00040400, 0x00000014, 0x00004068, 0x00002e80, 0x00000006, 0x80000000, 0x00221010, 0x00000000, 0x00005000, + 0x10002028, 0x00000086, 0x00008100, 0x00004000, 0x00008000, 0x00000424, 0x000c1b42, 0x00000080, 0x00008000, 0x00000a00, + 0x00000020, 0x00000008, 0x42080440, 0x00000810, 0x00000020, 0x00003000, 0x0000100a, 0x00020030, 0x0040c040, 0x00000000, + 0x00010008, 0x1000a610, 0x00000003, 0x00000008, 0x00005044, 0x00008000, 0x00004c00, 0x00080082, 0x00000040, 0x00000013, + 0x00160280, 0x00000020, 0x00000040, 0x8202441a, 0x00002000, 0x00400000, 0x90900000, 0x08000020, 0x00200000, 0x24c00808, + 0x00101002, 0x10000010, 0x40200280, 0x00082000, 0x20000800, 0x00001458, 0x40000000, 0x00400004, 0x200c4820, 0x00020002, + 0x00008000, 0xc1600110, 0x02000684, 0x00000000, 0x0080f008, 0x04000440, 0x00400000, 0x10800006, 0x00000880, 0x08000000, + 0x04e80060, 0x10100012, 0x80001000, 0x086002a8, 0x20000000, 0x00002008, 0x00280c60, 0x00000004, 0x40040000, 0xa2086822, + 0x0002000a, 0x80008000, 0x44000010, 0x028120a5, 0x00100000, 0x80000008, 0x04400440, 0x00000000, 0x00804010, 0x08000822, + 0x00000010, 0x00100408, 0x40200086, 0x00002000, 0x00024820, 0x00001050, 0x02400044, 0x08108108, 0x0080a608, 0x00080000, + 0x000000c2, 0x00224100, 0x00101214, 0x00000000, 0x0000a8a0, 0x0002000a, 0xa8000100, 0x010010a0, 0x12100a10, 0x80802448, + 0x24000400, 0x80009050, 0x00040004, 0x00000800, 0x08002080, 0x00004222, 0x00021000, 0x10000010, 0x00008000, 0x00002881, + 0x0000800a, 0x20100000, 0x000004c0, 0x00200000, 0x00104005, 0x80008000, 0x00002000, 0x00000a32, 0x00842001, 0x000000a4, + 0x0011d440, 0x00404440, 0x00000000, 0x00001810, 0x002400a1, 0x00020420, 0x50104058, 0x08000800, 0x00200020, 0x200a2006, + 0x10008008, 0x01100100, 0x02001a90, 0x20020004, 0x00000008, 0x440ca442, 0x00140004, 0x01004100, 0x42000a00, 0x00000000, + 0x80000080, 0x11929412, 0x02000100, 0x008000c0, 0x20202a26, 0x04000000, 0x00100400, 0x10401254, 0x00000000, 0x00000820, + 0x08222002, 0x10100000, 0x00048000, 0x06811091, 0x20080000, 0x00000000, 0x44402408, 0xc0048042, 0x00004014, 0x0a800a81, + 0x00001020, 0x80220002, 0x34418458, 0x02002000, 0x00010001, 0x288808a0, 0x04004002, 0x00020008, 0x50440440, 0x08221000, + 0x00000c00, 0x000c805c, 0x00200440, 0x00000800, 0x8000a422, 0x00101828, 0x01000100, 0x028202b4, 0x000c1018, 0x00000000, + 0x0400b440, 0x0000200a, 0x00040104, 0x00005aa0, 0x80024004, 0x00008000, 0x10001452, 0x01808002, 0x02000100, 0x00102ba0, + 0x04000280, 0x20000000, 0x00089450, 0x00000440, 0x08000000, 0x40042826, 0x00000820, 0x80000000, 0x12011651, 0x40001010, + 0x20000000, 0x048024ca, 0x0000a00c, 0x40005000, 0x08600a20, 0x00004005, 0x00002082, 0x9000845c, 0x00818082, 0x00180200, + 0x20000829, 0x00400281, 0x80000040, 0x40006410, 0x00200440, 0x00042210, 0x44400002, 0x08000000, 0x00020000, 0x80200000, + 0x10108029, 0x01000008, 0x42840110, 0x20089000, 0x00400000, 0x84020002, 0x00000400, 0x01208144, 0x48840080, 0x00001500, + 0x00000a00, 0x95020000, 0x02000842, 0x00001100, 0x28a00802, 0x04400000, 0x00080884, 0x40000000, 0x00040401, 0x00004810, + 0x88220002, 0x10000609, 0x00100000, 0x42811000, 0x20080a42, 0x00004881, 0x84429012, 0x00040020, 0x08008400, 0x42a10102, + 0x00000504, 0x80020800, 0x10108000, 0x02000040, 0x00011010, 0x28a00200, 0x04480a20, 0x00000000, 0x40140400, 0x00000003, + 0x00000860, 0x00102480, 0x00001460, 0x00004006, 0x00000000, 0x00004080, 0x00004000, 0x00000040, 0x00000003, 0x000040d0, + 0x00008014, 0x00004000, 0x00000008, 0x00002000, 0x00000004, 0x0000a000, 0x00000400, 0x000480b0, 0x00800008, 0x00000100, + 0x00009210, 0x00002000, 0x00000088, 0x00002000, 0x00000000, 0x00480000, 0x00002000, 0x00006000, 0x00000120, 0x00001010, + 0x00002100, 0x000002ac, 0x00000000, 0x00000000, 0x00080000, 0x00000000, 0x00005030, 0x00400880, 0x00000000, 0x0000208a, + 0x00028156, 0x00000000, 0x000008c0, 0x00013020, 0x00000000, 0x88864000, 0x02800000, 0x04448018, 0x00000000, 0x08081000, + 0x20022800, 0x80301002, 0x08402000, 0x00a00600, 0x40102100, 0x108002a0, 0x88000800, 0x00002000, 0x2000020a, 0x40104021, + 0x02040000, 0x00004082, 0x00000000, 0xc0120400, 0x80104004, 0x08800000, 0x00200000, 0x000a0400, 0x00408844, 0x02001000, + 0x00040020, 0x10008024, 0x0008008a, 0x00600004, 0x08c0a000, 0x00040400, 0x00300000, 0x20600041, 0x04104000, 0x00440018, + 0x003000c0, 0x00000000, 0x00044000, 0x20008000, 0x00000000, 0x00204400, 0x00100001, 0x2848000c, 0x00888080, 0x00040044, + 0x00200000, 0x00000400, 0x000a0400, 0x8000c002, 0x02800000, 0x50040001, 0x00000a00, 0x04000000, 0x02040040, 0x00003001, + 0x083c0000, 0x000a0010, 0x80400006, 0x105a0000, 0x00800040, 0x00821100, 0x60280400, 0x00400000, 0x00400010, 0x00040000, + 0x21285000, 0x00000000, 0x80000000, 0x40062008, 0x10000800, 0x40800420, 0x00010000, 0x80020000, 0x84123002, 0x500c0000, + 0x40110000, 0x18880000, 0x80010200, 0x00000020, 0x30000040, 0x10004420, 0xc0060000, 0x20080080, 0x00320000, 0x00480000, + 0xc0040000, 0x00010080, 0x40208800, 0x90020000, 0x44100400, 0x00040040, 0x00100220, 0x000209c0, 0x80003004, 0x00004018, + 0x00200402, 0x00000004, 0x00003410, 0x40040008, 0x00400090, 0x10040000, 0x00002002, 0x00400900, 0x00004000, 0x00200000, + 0x00000820, 0x00000042, 0x00020000, 0x00103008, 0x00000000, 0x00200004, 0x00000018, 0x00000001, 0x00840000, 0x8000c004, + 0x0004004c, 0x40080182, 0x80008000, 0x20000494, 0x00100000, 0x00400048, 0x00008801, 0x20004042, 0x00008004, 0x00000010, + 0x00000010, 0x80000000, 0x20400000, 0x40004000, 0x00181005, 0x00004480, 0x10020002, 0x00040000, 0x00000011, 0x00014000, + 0x0000000c, 0x00082008, 0x50000010, 0x00140200, 0x008000c0, 0x00000000, 0x00c00004, 0x00180040, 0x00104000, 0x00028104, + 0x40001000, 0x00308008, 0x00000000, 0x40020088, 0x02c00005, 0x00000201, 0x20408084, 0x00008822, 0x00000040, 0x00004805, + 0x000a80a2, 0x40000420, 0x00400080, 0x20020042, 0x00001010, 0x20000080, 0x00800800, 0x02400000, 0xc0000060, 0x08025008, + 0x0020c020, 0x00020000, 0x00002094, 0x00001002, 0x00000000, 0x00400a84, 0x00210000, 0x0080006a, 0x00008012, 0x00800000, + 0x00008050, 0x00100001, 0x20002020, 0x00000000, 0x00003040, 0x00100014, 0xa0808000, 0x00008000, 0x0000000a, 0x40407000, + 0x00000281, 0x80000004, 0x08000820, 0x80200040, 0x00020000, 0x00800c00, 0x00000020, 0x00000000, 0x28101010, 0x00081000, + 0x00100010, 0x00004808, 0x00200008, 0x00000000, 0x40140000, 0x00004000, 0x00000000, 0x80009000, 0x10118002, 0x40080008, + 0x00c00000, 0x00004280, 0x00000000, 0x00200004, 0x00000042, 0x00000000, 0x00110000, 0x90000800, 0x90000420, 0x08140088, + 0x00810000, 0x00101000, 0x00202000, 0x00022008, 0x40400000, 0x80040000, 0x00204004, 0x00000000, 0x20000800, 0x00100000, + 0x00100020, 0x10200418, 0x80020026, 0x00008000, 0x00003000, 0x02000000, 0x00004000, 0x0000101c, 0x80000488, 0x00000200, + 0x00002000, 0x00004802, 0x00000000, 0x10008284, 0x00000012, 0x08a00020, 0x40044440, 0x00080000, 0x00002200, 0x80000024, + 0x00000000, 0x00000000, 0x00000880, 0x00021000, 0xc0000800, 0x00000000, 0x00010018, 0x00002002, 0x000058a0, 0x00c08400, + 0x00000000, 0x00000028, 0x00200002, 0x00000080, 0x20084224, 0x00009000, 0x08000800, 0x00040442, 0x20000000, 0x00100000, + 0x00080880, 0x40000000, 0x00000008, 0x00801020, 0x80008020, 0x00400008, 0x80101000, 0x10020800, 0x00200080, 0x20880208, + 0x02800004, 0x800080c2, 0x50300000, 0x20004400, 0x00000002, 0x00200008, 0x00201004, 0x00461800, 0x80800000, 0x0a021208, + 0x10102000, 0x80400000, 0x00000010, 0x00000080, 0x00808000, 0x40440000, 0x00000000, 0x98200000, 0x80200000, 0x00104020, + 0x00888002, 0x00800008, 0x00130000, 0x40040000, 0x00000600, 0x00004000, 0x00020040, 0x80208020, 0x40001000, 0x00810010, + 0x00120018, 0x08000000, 0x00002008, 0x00091020, 0x20000000, 0x08000800, 0x00408000, 0x00000000, 0x0094a000, 0x40004003, + 0x00000400, 0x00000840, 0x00101900, 0x10000004, 0x00200020, 0x00801000, 0x82520010, 0x00000888, 0x00402008, 0x08040820, + 0x80020006, 0x08100000, 0x00000004, 0x00104010, 0x10900000, 0x00228402, 0x004802a0, 0x00000081, 0x00000a00, 0x000c1040, + 0x00240400, 0x00001050, 0x00002028, 0x00030120, 0x00000280, 0x80000800, 0x00010000, 0x00009410, 0x00400008, 0x00402000, + 0x00200808, 0x00020000, 0x08004000, 0x00100000, 0x00200002, 0x00000002, 0x00008400, 0x00184284, 0x00000280, 0x00084030, + 0x00000848, 0x40040440, 0x80002000, 0x00000080, 0x80010000, 0x00000000, 0x00000684, 0x00800000, 0x00200820, 0x10001012, + 0x00100000, 0x10001000, 0x20002490, 0x00020000, 0x20080000, 0x00002048, 0x40804096, 0x00000200, 0xb0088000, 0x0000a002, + 0xa0600000, 0x02020004, 0x008c0800, 0x40200010, 0x0200068a, 0x00100040, 0x00400000, 0x00000420, 0x00001810, 0x08200020, + 0x00008000, 0x00001018, 0x14002000, 0x00100082, 0x000a0200, 0x40002000, 0x00004008, 0x00810000, 0x00044080, 0x60280000, + 0x8000a000, 0x00020042, 0x00000000, 0x00400400, 0x00250080, 0x60001210, 0x80100000, 0x00400440, 0x00000000, 0x08280020, + 0x04400048, 0x40000000, 0x10000020, 0x00001010, 0x00200800, 0x14002000, 0x80020008, 0x00101214, 0x00080000, 0x0000000a, + 0x3000e000, 0x00000000, 0x40004000, 0x00a20044, 0x00020400, 0x00000200, 0x80408083, 0x02000040, 0x00000000, 0x00a03280, + 0x00000800, 0x00008000, 0x00c00470, 0x08100800, 0x00007000, 0x00200020, 0x00000018, 0x00104000, 0x100c9040, 0x00000000, + 0x00080800, 0x0040a008, 0x40060002, 0x00000010, 0x00004000, 0x00000080, 0x80002000, 0x40028232, 0x00040000, 0x20000804, + 0x000926c0, 0x00401020, 0x00000000, 0x48000458, 0x00040800, 0x00480000, 0x04004a00, 0x00200182, 0x00041000, 0x10900000, + 0x60004000, 0x000a0000, 0x10500008, 0x20000000, 0x80800000, 0x000a0210, 0x00000800, 0x00000040, 0x42800002, 0x80020000, + 0x00001010, 0x00500000, 0x08000028, 0x02000040, 0x00a24000, 0x00000000, 0x00000000, 0x40500000, 0x10200002, 0x00002080, + 0x08000010, 0x50100008, 0x0002c000, 0x000d0000, 0x00000002, 0x00000000, 0x00080080, 0x00000280, 0x40428400, 0x800c0020, + 0x00000000, 0x00010000, 0x80820000, 0x00000000, 0x00404800, 0x00830000, 0x20600000, 0x0000c020, 0x88002001, 0x00100000, + 0x00004400, 0x00080040, 0x00000000, 0x00000020, 0x30101090, 0x02880010, 0x00001602, 0x0000202c, 0x00002400, 0x00200040, + 0x40000828, 0x00000000, 0x02000824, 0x808ad000, 0x00001010, 0x00100000, 0x10644282, 0x08000000, 0x00000001, 0x00200248, + 0x00002000, 0x00100000, 0x10000020, 0x00000883, 0x80000000, 0x00809000, 0x00020400, 0x00001210, 0x00040c08, 0x00000040, + 0x00200480, 0xc0104028, 0x00205014, 0x00000820, 0x0042900a, 0x00002002, 0x00000000, 0x0011d288, 0x00000004, 0x20002080, + 0x00408062, 0x40280000, 0x0000000c, 0x08904802, 0x00000080, 0x00000044, 0x008c0400, 0x00100020, 0x80200002, 0x50000000, + 0x00400200, 0x02800010, 0x38101000, 0x00400040, 0x20002008, 0x10001000, 0x00000000, 0x00204000, 0x80940a34, 0xa0000000, + 0x00020002, 0x22480080, 0x40100800, 0x40801208, 0x00248006, 0x00000000, 0x40400000, 0x00800020, 0x00224000, 0x00000800, + 0x00000040, 0x00911290, 0x00008000, 0x00280000, 0x00400400, 0x00000008, 0x00000000, 0x10000000, 0x40000004, 0x00124000, + 0x00008800, 0x00020002, 0x00010020, 0x20150080, 0x00000018, 0x00400000, 0x00000000, 0x40480000, 0x00320000, 0x00214000, + 0x00404000, 0x00081002, 0x00200000, 0x00108002, 0x00000800, 0x10800008, 0x00100281, 0x80201000, 0x20460000, 0x00000442, + 0x0010400c, 0x00200004, 0x00040a20, 0x00008000, 0x00100000, 0x10001052, 0x80020000, 0x00000001, 0x00002008, 0x008002a0, + 0x40000400, 0x00004000, 0x00400044, 0x00101000, 0x00000812, 0x80602020, 0x00001008, 0x00100290, 0x00404000, 0x00000000, + 0x00001440, 0x4000101a, 0x40008000, 0x00000820, 0x00200080, 0x00000000, 0x00001010, 0x0012044e, 0x00000800, 0x00218028, + 0x00002280, 0x00400400, 0x00004084, 0x00101250, 0x00000828, 0x40400460, 0x80008000, 0x00002000, 0x90220c06, 0x00008018, + 0x00005000, 0x02300401, 0x78080080, 0x00000000, 0x1000120c, 0xa0000030, 0x00000000, 0x08001426, 0x00080011, 0x00400002, + 0x10024004, 0x82200200, 0x00000000, 0x00a88a88, 0x02120000, 0x00400000, 0x50006440, 0x08120002, 0x00001821, 0x80260012, + 0x00480009, 0x00100010, 0x48811084, 0x00040000, 0x00000028, 0x10400440, 0x80000000, 0x00020800, 0x48200020, 0x00000012, + 0x00430080, 0x00105012, 0x00000000, 0x00014000, 0x20882284, 0x00200808, 0x00400000, 0x40140444, 0x08000020, 0x00002001, + 0x40040284, 0x02501440, 0x00a00808, 0x20020440, 0x00000000, 0x02100000, 0x90009ac6, 0x00440000, 0x20000808, 0x00801440, + 0x00001000, 0x10400200, 0x080a00a8, 0x00200007, 0x00c20040, 0x9010140c, 0x00000006, 0x40800290, 0x02080023, 0x00000000, + 0x40109042, 0x80004284, 0x00c00c80, 0x00000208, 0x80000460, 0x00248810, 0x00000400, 0x00110aa0, 0x40021010, 0x00200002, + 0x10001458, 0x00800800, 0x40000280, 0x18200828, 0x200b2000, 0x00400442, 0x00061000, 0x00000000, 0x208002a0, 0x0001281a, + 0x40300000, 0x00008040, 0x40505280, 0x80880404, 0x00010080, 0x408000c0, 0x10221880, 0x00004824, 0x00c20200, 0x00300042, + 0x10000018, 0x20a00020, 0x80101000, 0x00000400, 0xb2700a08, 0x00006002, 0x00004804, 0x20200008, 0x22020009, 0x80001012, + 0x00400000, 0x108e8000, 0x02000280, 0xc00a0040, 0x00940020, 0x00000440, 0x02d42008, 0x40208000, 0x00202800, 0x00420440, + 0x00004028, 0x00001010, 0x80a10000, 0x00100880, 0x0000a400, 0x00121010, 0x40000008, 0x00000022, 0x08110000, 0x40005048, + 0x00000000, 0x40508202, 0x008e0c00, 0x00000200, 0x000a8022, 0x00814080, 0x00000040, 0x20858408, 0x40620000, 0x00200804, + 0x00c00844, 0x04000210, 0x00201820, 0x00402488, 0xa0408040, 0x10180006, 0x00201080, 0x42000610, 0x20686000, 0x00008408, + 0x00120040, 0x40000026, 0x00284008, 0x80000010, 0x80808a00, 0x00020080, 0x00401012, 0x020004c0, 0x80100001, 0x08800200, + 0x00200820, 0x00801040, 0x10506402, 0x08000012, 0x00602424, 0x00090800, 0x00000000, 0x10004008, 0x00509030, 0x00000008, + 0x00003010, 0x802c0400, 0x50204000, 0x00048812, 0x00800000, 0x80020220, 0x60009082, 0x40010010, 0x008104c0, 0x00428200, + 0x08220002, 0x80400820, 0x00810090, 0x00080444, 0x00004880, 0x04808000, 0x00001004, 0x103800b0, 0x80400c02, 0x00004000, + 0x30122280, 0x00001000, 0x0060001c, 0x40002042, 0x20880008, 0x00009010, 0x90000004, 0x404a4c28, 0x00a80080, 0x02008008, + 0x80120012, 0x10004600, 0x02001000, 0x80800808, 0x00408280, 0x10002002, 0x00e81050, 0x48040400, 0x00200020, 0x084a0040, + 0x00100c00, 0x10140280, 0x00018002, 0x08003810, 0x40400040, 0x10089008, 0x80002000, 0x40024012, 0x00000400, 0x00042820, + 0x00810000, 0xc0008402, 0x00220080, 0x084000c0, 0x00872200, 0x00309020, 0x00000014, 0x40c10000, 0x00000c42, 0x00301a21, + 0x00000008, 0x00201c00, 0x20300820, 0x00000004, 0x50024400, 0x02900000, 0x00080052, 0x10001020, 0x00002008, 0x600a0000, + 0x00004000, 0x00104000, 0xc0800000, 0x00402006, 0x00208002, 0x80000000, 0x00022000, 0x42400004, 0x00808006, 0x00220681, + 0x00000040, 0x40400008, 0x00054c00, 0x08080801, 0x00000040, 0x10200032, 0x50002010, 0x00940000, 0x00001400, 0x00090000, + 0x10002802, 0x00020088, 0x40011000, 0x00004008, 0x88040040, 0x80208800, 0x40004000, 0x00020006, 0x60404080, 0x00890000, + 0x00000604, 0x00000000, 0x40408000, 0x80200440, 0x08a14020, 0x80400420, 0x04200840, 0x00200000, 0x04824000, 0x04100824, + 0x00400214, 0x00105002, 0x10000808, 0x20080040, 0x00100000, 0x00a02808, 0x40000004, 0x00080000, 0x00024802, 0xa0000000, + 0x0008d004, 0x00020002, 0x02040080, 0x00040202, 0xc0804000, 0x00000000, 0x00000400, 0x807020c8, 0x08000022, 0x00000800, + 0x00208010, 0x10120280, 0x00201010, 0x00000000, 0x00002440, 0x00100008, 0x40690000, 0x40000000, 0x10000020, 0x8004d000, + 0x00020002, 0x80144000, 0x088c8810, 0x00010000, 0x00002200, 0x00204080, 0x00400060, 0x0000040c, 0x00000000, 0x00004000, + 0x04000060, 0x02c09084, 0x00004008, 0x00200820, 0x00000000, 0x10107000, 0x00000004, 0x20020030, 0x00000002, 0x200a2008, + 0x00000080, 0x00400000, 0x60004404, 0x10108001, 0x00000000, 0x004244a6, 0x90108800, 0x00800241, 0x02008080, 0x0020c800, + 0x00400000, 0x00000060, 0x00881410, 0x40204000, 0x08000020, 0x04448800, 0x00001000, 0x00202000, 0x10110012, 0x000a4008, + 0x00100002, 0x00102280, 0x00404000, 0x40050000, 0x08188020, 0x80400080, 0x0002c402, 0x00002200, 0x00000a00, 0x00811080, + 0x00020060, 0x00000400, 0x00401040, 0x40020001, 0x00040800, 0x00000000, 0x50224040, 0x00020024, 0x00000810, 0x00308000, + 0x00080012, 0x50001000, 0xa0102280, 0x00802000, 0x00000000, 0xa00a1448, 0x00804014, 0x20000000, 0x48001828, 0x00028000, + 0x80000002, 0x02085014, 0x00000280, 0x00802004, 0x0a100000, 0x00200c48, 0x00401000, 0xc0004010, 0x10120821, 0x00200000, + 0x08000440, 0x00811000, 0x10180000, 0x40240294, 0x00002000, 0x00080000, 0x00005058, 0x80044880, 0x00008000, 0x4000302a, + 0x00100002, 0x00000000, 0x8042d000, 0x00000200, 0x08000010, 0x4087808a, 0x00000440, 0x00208000, 0x00484090, 0x08200800, + 0x00401040, 0xb4004400, 0x00000820, 0x0020000c, 0xe0400002, 0x10100010, 0x00000000, 0x0a009441, 0x00002a08, 0x00000002, + 0x200800a4, 0x00104044, 0x10000290, 0xc8002001, 0x00208022, 0x00000040, 0x80020810, 0x12101281, 0x40000820, 0x808a0400, + 0x00404440, 0x0020a018, 0x00100080, 0x48200822, 0x00008008, 0x80021201, 0x00101010, 0x00000040, 0x50810080, 0x00080240, + 0x00002000, 0x1060002a, 0x40054400, 0x00000280, 0x28080030, 0x80200800, 0x0000804a, 0x00421000, 0x00000290, 0x00000800, + 0xa0194404, 0x00004448, 0x00200000, 0x00d43024, 0x00000000, 0x10100404, 0x44000000, 0x00801000, 0x20000020, 0x80200802, + 0x00001000, 0x00500018, 0x12028285, 0x20aa0000, 0x00002008, 0x00200402, 0xc0400040, 0x02800004, 0x00004a20, 0x80020000, + 0x00208080, 0x38000452, 0x02900008, 0x00201280, 0x00402800, 0x00000000, 0x00040422, 0x404a5050, 0x08000000, 0x00800800, + 0x003200aa, 0x10108000, 0x40001010, 0x80010280, 0x00080008, 0x00000000, 0x00402442, 0x08100000, 0x40800020, 0x00164a80, + 0x00028000, 0x80080000, 0x00311452, 0x00010000, 0x00200080, 0x00400a08, 0x00500000, 0x20002460, 0xc00c4004, 0x00209020, + 0x00000000, 0x50400600, 0x00301460, 0x00000800, 0xa082020e, 0x00000860, 0x10000000, 0x001012d1, 0x00001010, 0x20080004, + 0x8280244a, 0x0002200c, 0x40104000, 0x0a400aa1, 0x00004004, 0x80820002, 0x10209450, 0x00108003, 0x00c00000, 0x02080aa8, + 0x00000280, 0x00600400, 0x400410d2, 0x00100440, 0x00200800, 0x8802022a, 0x00000820, 0x10400010, 0x40111280, 0x08001010, + 0x00082000, 0x00420448, 0x0800200a, 0x00040000, 0x40a15a80, 0x00004004, 0x00020000, 0x80409462, 0x00108002, 0x00010000, + 0x20080a90, 0x00200280, 0x00400420, 0x40041044, 0x08100460, 0x00200000, 0x10588420, 0x04400000, 0x00208004, 0xe2020004, + 0x00200002, 0x00000000, 0x12100000, 0x10180000, 0x00001202, 0xb0a20800, 0x60082000, 0x00000400, 0x024002c0, 0x40040014, + 0x00820001, 0x88003800, 0x80828402, 0x00400054, 0x12100322, 0x02c08000, 0x80204200, 0x40001050, 0x08508002, 0x00201400, + 0x00060004, 0x183000e1, 0x00000000, 0x48810000, 0x10101010, 0x00000084, 0x004a4200, 0x000c1028, 0x40000040, 0x00810210, + 0x40040040, 0x80000000, 0x68422428, 0x80028002, 0x00800340, 0x60090880, 0x00a14002, 0x00002800, 0x40400008, 0x08401051, + 0x10126004, 0x00101800, 0x10004400, 0x40000050, 0x00003000, 0x00004080, 0x00041001, 0x00004000, 0x000008a1, 0x00000110, + 0x00022000, 0x008000e0, 0x08000000, 0x00000101, 0x00800000, 0x00000200, 0x00804080, 0x00001024, 0x12004000, 0x00020480, + 0x80001800, 0x20802084, 0x00800c00, 0x00004064, 0x00010801, 0x40004480, 0x000c0002, 0x20008800, 0x0000006a, 0x00000401, + 0x00000000, 0x000029b8, 0x00000000, 0x40502400, 0x00812000, 0x00001021, 0x00000004, 0x00000204, 0x28000800, 0x00204000, + 0x00000000, 0x00000190, 0x00400044, 0xc00000a0, 0x00000404, 0x80000040, 0x28000082, 0x004c2002, 0x00200000, 0x14400080, + 0x02028a20, 0xc0080000, 0x20600018, 0x0c008000, 0x00804044, 0x80040000, 0x00100008, 0xa0180000, 0x0404d01e, 0x00400400, + 0x0a044000, 0x00000040, 0x40042000, 0x00100008, 0x00000000, 0x000c0011, 0x00400008, 0x28020000, 0x00010008, 0x00020000, + 0x00100000, 0x0c420000, 0x80000000, 0x10003000, 0x0417c244, 0x00400000, 0x80308000, 0x00024001, 0x902c0104, 0x0008800a, + 0x00200000, 0x08040081, 0x00040040, 0x00003018, 0x10140400, 0x00020000, 0x80000029, 0x00000200, 0x10008000, 0x40c22000, + 0x00000000, 0x02200000, 0x80200000, 0x00000040, 0x40805000, 0x10890080, 0x00000802, 0x90002000, 0x00000010, 0x00100000, + 0x00000010, 0x00200040, 0x00000800, 0x02020000, 0x80100000, 0xc0020008, 0x04200000, 0x20480000, 0x00000000, 0x18440040, + 0x00411000, 0x40200000, 0x10000400, 0xc0282000, 0x00040000, 0x00801800, 0x000100a1, 0x00008000, 0xc0000008, 0x00008400, + 0x40000040, 0x00805001, 0x24016000, 0x00000000, 0x00000000, 0x40500080, 0x00010000, 0x000a0800, 0x80400000, 0x04c01008, + 0x08000000, 0x30a11000, 0x00206004, 0x00102040, 0x00040000, 0x0004000c, 0x00000400, 0x80060108, 0x00204034, 0x10000480, + 0x80000004, 0x00600601, 0x00080004, 0x90008001, 0x04002000, 0x50000002, 0x00429081, 0x00000128, 0x00004040, 0x00004200, + 0x10000212, 0x00000000, 0x00001008, 0x80402000, 0x00000c80, 0x80082000, 0x40004008, 0x000000c0, 0x2000000d, 0x00108022, + 0x00204110, 0x02000044, 0x00800002, 0x80080410, 0x00040000, 0x00001820, 0x40008000, 0x20020052, 0x00600010, 0x0000000d, + 0x00010000, 0x00000034, 0x00000002, 0x00000004, 0x0000c010, 0x000000a1, 0x00000019, 0x40000000, 0x00010000, 0x20005008, + 0x00000aa0, 0x200880c0, 0x40002412, 0x00808000, 0x20080040, 0x40000008, 0x00800000, 0x00021838, 0x00805000, 0x00440482, + 0x80800024, 0x00012000, 0x08208002, 0x2088349c, 0x00100105, 0x08001001, 0xa0c6a044, 0x00008c02, 0x00000010, 0x10008011, + 0x00000225, 0x00040000, 0x00408010, 0x80021040, 0x40004480, 0x00000000, 0x200a2008, 0x00000000, 0x00001000, 0x00804024, + 0x00140001, 0x08810000, 0x80000800, 0x88000002, 0x10380200, 0x00401400, 0x50100281, 0x80042008, 0x00400062, 0x800c0140, + 0x08010c04, 0x10070080, 0x00000000, 0x10000490, 0x00140000, 0x00100000, 0x40800000, 0x10108000, 0x00104000, 0x00040010, + 0x00030200, 0x00000000, 0x482040c2, 0x00000000, 0x00000000, 0x00100800, 0x00000820, 0x82000040, 0x00440000, 0x00031000, + 0x00200000, 0x00004010, 0x40000008, 0x10000000, 0x00144002, 0x00200004, 0x00000000, 0x80880000, 0x10108000, 0x10000000, + 0x44440208, 0x00010201, 0x20400000, 0x00000800, 0x40000400, 0x00024000, 0x10100044, 0x00080820, 0x00000000, 0x20000000, + 0x00021010, 0x00000000, 0x60024000, 0x00230000, 0x04100000, 0xc010800a, 0x00004004, 0x00082800, 0x80800000, 0x00000002, + 0x10280000, 0x0000a410, 0x80020000, 0x0000f000, 0x00400006, 0x00040008, 0x00004000, 0x00000034, 0x04c024c0, 0x02000008, + 0x00208220, 0x08000006, 0x00020000, 0x00104200, 0x10100020, 0x00000002, 0x04401c80, 0x20000040, 0x00000080, 0x00020804, + 0x40042040, 0x00280020, 0x00001004, 0x80102002, 0x00000000, 0x30028018, 0x00810010, 0x00000000, 0x00284060, 0x04042000, + 0x00000200, 0x0020840b, 0x00220000, 0x000000c0, 0x00004205, 0x10118000, 0x08001800, 0x00000404, 0x20080808, 0x00000000, + 0x00000040, 0x40003000, 0x00000020, 0x10000010, 0x80020000, 0x00000000, 0x10200000, 0x00024002, 0x80100210, 0x28200000, + 0x02900280, 0x00002004, 0x500c0000, 0x04000000, 0x20082000, 0x00000052, 0x00000800, 0x00000020, 0x90800000, 0x88100092, + 0x00000000, 0x16022000, 0x00804000, 0x00000000, 0x28480040, 0x00004000, 0x00042000, 0x14008004, 0x40020000, 0x00100000, + 0xa0200690, 0x000d8000, 0x00000000, 0x18100000, 0x00880044, 0x00000800, 0xe0020010, 0x44408820, 0x00200000, 0x08850000, + 0x00000000, 0x00122000, 0x00000000, 0x14414008, 0x00000000, 0x00080010, 0x6c040040, 0x00400000, 0x90208000, 0x00204000, + 0x08140010, 0x00004c60, 0x40000020, 0x12000100, 0x20080844, 0x00001010, 0x00500400, 0x00802048, 0x02402000, 0x00000002, + 0x00200888, 0x00004000, 0x04001294, 0x00148008, 0x10000000, 0x00008402, 0x20000044, 0x04082081, 0x00104800, 0x00040200, + 0x60260000, 0x00100050, 0x10404028, 0x00000820, 0x00000004, 0x00001000, 0x20100000, 0x00081000, 0x40018090, 0x00600000, + 0x00002008, 0x002a1004, 0x0c044000, 0x00001014, 0x0001a008, 0x00088002, 0x04200040, 0x000a0200, 0x00080001, 0x00000200, + 0x00050484, 0x00000800, 0x00224400, 0x40042060, 0x00000000, 0x00400420, 0x08a00080, 0x00001000, 0x08a84828, 0x10100000, + 0x00004000, 0x10001080, 0x20100012, 0x20080000, 0x00000008, 0x0004a000, 0x50060000, 0x00800040, 0x80004404, 0x00428002, + 0x80180000, 0x00001090, 0x00800800, 0x40000280, 0x02080000, 0x04400000, 0x30000020, 0x00000040, 0x00080010, 0x08040820, + 0x00107040, 0x00000000, 0x10440010, 0x20901000, 0x20020000, 0x08080004, 0x4000228a, 0x00000084, 0x40104000, 0x00040000, + 0x80020400, 0x00000003, 0x20018020, 0x00840000, 0x60011080, 0x00024201, 0x00400000, 0x04040040, 0x00204c08, 0x08000028, + 0x34000048, 0x00402800, 0x00002810, 0x00000000, 0x88205220, 0x10080000, 0x00100008, 0x20041014, 0x80000080, 0x0000a008, + 0x200a4040, 0x00000004, 0x40004000, 0x008c0012, 0x00000208, 0x00020080, 0x80008022, 0x02000200, 0x00900060, 0x24001080, + 0x00004040, 0x04480004, 0x00042c12, 0x08000000, 0x40801000, 0x00000820, 0x10000010, 0x00102000, 0x0003102c, 0x0008600a, + 0x20000001, 0x04100000, 0x00040000, 0x80200084, 0x4000d000, 0x08000801, 0x80000020, 0x00828212, 0x000000c0, 0x20900000, + 0x10010e0d, 0x0c100060, 0x00080000, 0x00402400, 0x00000810, 0x00000002, 0x0c080010, 0x10200200, 0x00100002, 0x08003008, + 0x00000280, 0x00180000, 0x32060004, 0x08020000, 0x20084000, 0x40000022, 0x80000080, 0x02000040, 0x40049000, 0x80823200, + 0x04200008, 0x00100000, 0x00000000, 0x02000014, 0x00c00040, 0x18000014, 0x00000000, 0x04480020, 0x00001081, 0x00184100, + 0x88000000, 0x00100000, 0x00002001, 0x30048008, 0x40000000, 0x00020080, 0x20080042, 0xc0000000, 0x00040020, 0x10010000, + 0x00400090, 0x00200008, 0x94820801, 0x00000040, 0x00100000, 0x00898000, 0x20200018, 0x00402800, 0x0c000024, 0x00300001, + 0x00000000, 0x00208820, 0x80000002, 0x00004000, 0x008000c0, 0x00c00000, 0x00008040, 0x004e2038, 0x00002048, 0x04000800, + 0x40000006, 0x00004020, 0x00000800, 0x80028004, 0x00000000, 0x2e202042, 0x10800214, 0x00100000, 0x28080001, 0x80008082, + 0x0000000c, 0x0000e000, 0x40100870, 0x10048000, 0x80800000, 0x00081040, 0x00000200, 0x00020040, 0x00440018, 0x00002000, + 0x04200408, 0x404118f4, 0x00204000, 0x08010800, 0x00028014, 0x34108008, 0x00001000, 0x00006261, 0x20440008, 0x00004000, + 0x00000400, 0x00080004, 0x00060000, 0x00200820, 0x30004880, 0x40400408, 0x88200004, 0x00b48008, 0x88020002, 0x10000000, + 0x00000000, 0x00900010, 0x10202400, 0x00000600, 0x22000008, 0x401c2010, 0x00000802, 0x00004044, 0x80180000, 0xb0000000, + 0x00020010, 0x00084082, 0x60840000, 0x00000080, 0x00544000, 0x04022040, 0xc00e0008, 0x08104004, 0x00000000, 0x00008000, + 0x14680000, 0x00000200, 0x10900010, 0x68000400, 0x20000488, 0x00002040, 0x041c0000, 0x00040020, 0x40204004, 0x80582800, + 0x00001010, 0x00120000, 0x00888000, 0x50000008, 0x00010000, 0x04022000, 0x80440000, 0x24000000, 0x80284000, 0x00010000, + 0x00001004, 0x00400640, 0x00022000, 0x00208142, 0x0c004c60, 0x00080008, 0x10000211, 0xa0100084, 0x00004000, 0x00880440, + 0x3020300a, 0x04000000, 0x08002820, 0x10009288, 0x00020002, 0x80001014, 0x00108040, 0x20000281, 0x00888008, 0x10000820, + 0x40000000, 0x000044c4, 0x0400a010, 0x00000800, 0x00208002, 0x00041428, 0x00000010, 0x800002a1, 0x10307020, 0x00080004, + 0x00000440, 0x30400032, 0x00000000, 0x00060820, 0x40002004, 0x10000200, 0x00001480, 0x0022a000, 0x00480040, 0x00000008, + 0x00150a00, 0x40004040, 0x00400024, 0x04049490, 0x00080000, 0x42144040, 0x08600000, 0x00000004, 0x80028c30, 0x08200008, + 0x00080010, 0x02804283, 0x70100400, 0x80002008, 0x04580000, 0x20020004, 0x00000000, 0x08000822, 0x020400c1, 0x04000000, + 0x10168010, 0x80c01002, 0x08000000, 0x20882280, 0x80000008, 0x00400400, 0x42104004, 0x000000d2, 0x10000001, 0x80060820, + 0x20802080, 0x5000000a, 0x00895050, 0x00100005, 0x000c0000, 0x04400240, 0xa0300800, 0x00040004, 0x08200820, 0x40900000, + 0x00000008, 0x1013d01c, 0x24040000, 0x00000000, 0x20080a04, 0x00410008, 0x00000000, 0x48244440, 0x80002002, 0x20000804, + 0x40c04680, 0x18002000, 0x82000820, 0x0c32244e, 0x20080010, 0x00500000, 0x10008860, 0x02800030, 0x00088042, 0x24502618, + 0x00200000, 0x00120280, 0x10242808, 0xa0800001, 0x00028000, 0x98001012, 0x00000000, 0x00804020, 0x2000880b, 0x002086c0, + 0x00001050, 0x50466280, 0x00000400, 0x00010124, 0x80118640, 0x00000803, 0x00101000, 0x58800e25, 0x00200810, 0x00000000, + 0x201e1450, 0x00000000, 0x40401200, 0x04200004, 0x00049000, 0x00028440, 0x00010014, 0x10404800, 0x04210220, 0x20088008, + 0x00000800, 0x40109410, 0x00040200, 0x00000044, 0x00000020, 0x40080840, 0x80008400, 0x08306880, 0x20440026, 0x10008000, + 0x1000029c, 0x08b41000, 0x000a4800, 0x20000440, 0x14102018, 0x80480010, 0x10040804, 0x28080010, 0x00024281, 0x80402012, + 0x1014000c, 0x00828020, 0x00000000, 0xe00a4642, 0x008000a2, 0x00000440, 0x50840000, 0x80400010, 0x22100800, 0x804a0448, + 0x00000020, 0x00403000, 0x00910000, 0x50044010, 0x28000044, 0x10108008, 0x04082080, 0x10014000, 0x600c0084, 0x00020000, + 0x00008002, 0x500c0200, 0x40020044, 0x00000208, 0x20238000, 0x00044081, 0x80000440, 0x40110020, 0x10024214, 0x00202001, + 0x00c00000, 0x00021008, 0x08a00010, 0x00404840, 0x00000220, 0x1018000a, 0x08202000, 0x48601010, 0x00800000, 0x10006010, + 0x220a0008, 0x00008000, 0x40006c04, 0x060c1002, 0x90008002, 0x00040484, 0x0c460200, 0x02000240, 0x8000c083, 0x00920000, + 0x0048080a, 0x009404c0, 0x14001020, 0x08004004, 0x00000470, 0x00000808, 0x04001000, 0x18128030, 0x20002080, 0x200d4002, + 0x10102008, 0x84000c04, 0x40008000, 0x200c4040, 0x008a180c, 0x00020082, 0x0004a040, 0x80014205, 0x00010401, 0x00008280, + 0x40e20004, 0x04004820, 0x20482040, 0x00000410, 0x18851820, 0x08000000, 0x04006810, 0x30008000, 0x08400800, 0x40381020, + 0x00123008, 0x08200000, 0x10000010, 0x60240028, 0x100a2422, 0x0000c210, 0x82044060, 0x44102014, 0x00400080, 0x00829042, + 0x14440804, 0x80000008, 0x00980204, 0x82000082, 0x00020004, 0x00008028, 0x46d00444, 0x08002802, 0x1800a0b8, 0x00005280, + 0x00020800, 0x10100240, 0x28000010, 0x00081800, 0xc00a2408, 0x30004001, 0x00040006, 0x40009064, 0x202c4800, 0x00402211, + 0x00c21090, 0x80158000, 0x00000002, 0x00010081, 0x0480020a, 0x0002a462, 0x04280040, 0x40400004, 0x08000c90, 0x00320820, + 0x00200002, 0x04000200, 0x00000000, 0x588200a4, 0x00382812, 0x80100450, 0x64801000, 0x10000400, 0x200e2000, 0x00200008, + 0x00400040, 0x40040000, 0x80004000, 0x20000084, 0x06008002, 0x005a0004, 0xc8844000, 0x20800011, 0x12000280, 0x08000440, + 0x04400000, 0x43100000, 0x0081a240, 0x08000020, 0x00000000, 0x10028c00, 0x301c1000, 0x88410402, 0x002000f0, 0x00082000, + 0x20000000, 0x40300008, 0x40404000, 0x000c0004, 0x80020002, 0x90000802, 0x68464004, 0x00918000, 0x20800081, 0x00090000, + 0x84002200, 0x04000000, 0x08440000, 0x80a1c450, 0x00200820, 0x00800440, 0x40120080, 0x00208000, 0x00002804, 0x08000020, + 0x10501282, 0x80400010, 0x20080004, 0x08000002, 0x00882000, 0x30000008, 0x00104024, 0x10080000, 0x40060040, 0x800a1000, + 0x20040012, 0x0280a000, 0x02800240, 0x00000000, 0xc4000080, 0x04040410, 0x00002048, 0x004a0000, 0x08000000, 0x04820820, + 0x00100000, 0x14400210, 0x08103002, 0x00000000, 0x00090440, 0x48102008, 0x20800010, 0x40008024, 0x10004000, 0x08060000, + 0x80021000, 0x0000c054, 0x00050002, 0x00000000, 0x40000200, 0x00814081, 0x04400040, 0x00000400, 0x00022200, 0x08224004, + 0x00000000, 0x04c02440, 0x08102830, 0x04000000, 0x80204000, 0x00000004, 0x00000000, 0x12121010, 0x00000008, 0xa0504000, + 0x0c08a090, 0x40040000, 0x00080000, 0x08004207, 0x00000000, 0x00008080, 0x8082284a, 0x00000081, 0x02000800, 0x20800210, + 0x00402040, 0x04000400, 0x40000030, 0x00082800, 0x00140008, 0x08020022, 0x80010000, 0x18000010, 0x00101020, 0x2004808a, + 0x10184000, 0x40002834, 0x00010000, 0x40440401, 0x00184004, 0x00208080, 0x80024002, 0x44080800, 0x00000200, 0x00810081, + 0x00381074, 0x20000400, 0x00400040, 0x44001808, 0x00002010, 0x0440c040, 0x00800084, 0x00000800, 0x1c200020, 0x044680c0, + 0x2000101a, 0x90180200, 0x00606020, 0x20480000, 0x00100008, 0xc8142c60, 0x00820000, 0x40040010, 0x0008582c, 0x00000002, + 0x80468040, 0x42001000, 0x04082204, 0x18804080, 0x02000008, 0x00000000, 0x10400042, 0x04900084, 0x00020820, 0x08000000, + 0x0404c002, 0x00101008, 0x00000000, 0x38282a11, 0x40004088, 0xb0022000, 0x047c0440, 0x00844000, 0x00000004, 0x40008820, + 0x00008008, 0x00400002, 0xa0123008, 0x00810a80, 0x08000000, 0x04260009, 0x00000440, 0x04002000, 0x20500004, 0x00000800, + 0x04002410, 0x00440040, 0x08000a04, 0x00804008, 0x8020a022, 0x00120000, 0x10001040, 0x02000491, 0xa0800248, 0x0000a000, + 0x044a0000, 0x40004400, 0x00000000, 0x00040027, 0x08800800, 0x00000400, 0x8012d2c2, 0x10000211, 0x028020a0, 0x64008000, + 0x00480040, 0x84005008, 0x00000800, 0x40010801, 0x00000004, 0x88020032, 0x00000090, 0x30589044, 0x00850001, 0x20082200, + 0x00008000, 0x04001008, 0x00044440, 0x10100204, 0x48080010, 0x80008802, 0x00020400, 0x10300020, 0x00c03205, 0x00014820, + 0x200800d8, 0x00008400, 0x04109010, 0x40c40040, 0x80010085, 0xd4100000, 0x00080410, 0x08200020, 0x00080804, 0x80064008, + 0x10148000, 0x00002010, 0x22801203, 0x28002000, 0x004a0000, 0x0400800a, 0x80000004, 0x18904000, 0x40040a61, 0x80028080, + 0x00000002, 0x10081450, 0x02900001, 0x00000000, 0x00480aaa, 0x20422000, 0x04108000, 0x40005040, 0x08000004, 0x20040830, + 0x12028002, 0x90000000, 0x40000010, 0x00181685, 0x20020000, 0x00800008, 0x0c4da440, 0x40000004, 0x00014000, 0x08241a00, + 0x80020020, 0x00008000, 0x00141442, 0x10810000, 0x00000281, 0x20080830, 0x84602002, 0x90000440, 0x0000100c, 0x40304030, + 0x00400000, 0x5012c450, 0x00000440, 0x00200000, 0xaa0a88a8, 0x00003820, 0x00100010, 0x12800203, 0x00081010, 0x20240000, + 0x8042a4c8, 0x00006008, 0x40040002, 0x08800a25, 0x00004086, 0x80020000, 0x10009400, 0x00108083, 0x00400040, 0xa2802a30, + 0x00000280, 0x00400440, 0x54081004, 0x00100440, 0x08000010, 0xa04eca20, 0x00100830, 0x00000000, 0x10811204, 0x00003010, + 0x600c0080, 0x04408408, 0x08026008, 0x40040000, 0x00200a74, 0x00014004, 0x80080002, 0x10129400, 0x00008082, 0x00802040, + 0x20290a29, 0x000002c1, 0x00400002, 0x54101404, 0x08040450, 0x00000000, 0x10440080, 0x04508042, 0x00000004, 0xa82a0000, + 0x08200048, 0x00004020, 0x10940010, 0x10101100, 0x20084000, 0x80420000, 0x30080400, 0x00008002, 0x40940000, 0x40044100, + 0x000a0a80, 0xd0400008, 0x80020000, 0x02800404, 0x20160900, 0x02844052, 0x04000800, 0x10480010, 0x04c01440, 0x00103030, + 0x68020000, 0x08300080, 0x00080040, 0x10050010, 0x50181440, 0x08004204, 0x20022000, 0x60082200, 0x00008440, 0x00651108, + 0x400c0114, 0x00020800, 0xf8182000, 0x80028000, 0x00010510, 0x60a01300, 0x00c14084, 0x00000820, 0x549c1000, 0x0c400440, + 0x08800402, 0x02001840, 0x00002000, 0x00021000, 0x00080914, 0x00040080, 0x0010ce02, 0x00001000, 0x00200080, 0x40840200, + 0x00100184, 0x00002000, 0x00020020, 0x00800310, 0x20042000, 0x12003000, 0x00400000, 0x00000060, 0x10500100, 0x40004020, + 0x80009008, 0x10200080, 0x00000500, 0x40010080, 0x0000c082, 0x24000040, 0x00000002, 0x940cc800, 0x08008022, 0x00000800, + 0x00000000, 0x00000920, 0x001008a0, 0x00400080, 0x00112401, 0x00000020, 0x0040400a, 0x00000440, 0x00006026, 0x00001040, + 0x00008002, 0x04002008, 0x48280000, 0x00000200, 0x00050017, 0x00040000, 0x00020028, 0x24000000, 0x08444000, 0x44202220, + 0xa0000010, 0x00a00001, 0x4000a000, 0x88540040, 0x08280400, 0x80808200, 0x000c084c, 0x00000000, 0x0a40100c, 0x400000b1, + 0x20000000, 0x84200000, 0x0000bc1a, 0x20020000, 0x04100000, 0x28040201, 0xc0480060, 0x220a0000, 0x01000008, 0x02800004, + 0x00492804, 0x02020000, 0x00441021, 0x00202008, 0x10010004, 0x81840000, 0x00010000, 0x0000000b, 0x44004006, 0x20000000, + 0x00300000, 0x00859000, 0x00640200, 0x20020008, 0x00010000, 0x08504004, 0xa6060800, 0x00810200, 0x10080000, 0x00008800, + 0x0020002c, 0x1040a400, 0x00088000, 0x01000000, 0x12c02000, 0x00010000, 0x20000000, 0x10400006, 0x24000401, 0x00000000, + 0x00000003, 0x08610010, 0x00000040, 0x40002000, 0x00310000, 0x00000020, 0x00860000, 0x88088000, 0x00802000, 0x00000100, + 0x05802000, 0x00004004, 0x00002000, 0x80000010, 0x00200004, 0x48002000, 0x00010000, 0x28800280, 0x00002000, 0x64000000, + 0x00004020, 0x20200000, 0x40082800, 0x00020000, 0x10000000, 0x00800080, 0x00000000, 0x04000800, 0x80089002, 0x00902018, + 0x10200010, 0x00000000, 0x00004008, 0x80420088, 0x00000000, 0x40040840, 0x10001000, 0x20000000, 0x00004080, 0x00000068, + 0x60084104, 0x00800048, 0x20182800, 0x04005000, 0x00000240, 0x00002800, 0x00001080, 0x00022824, 0x80808501, 0x04000040, + 0x00000014, 0x00882800, 0x00080000, 0x00401015, 0x50000080, 0x00020800, 0x20000048, 0x20200000, 0x4000c001, 0x80060540, + 0x10300038, 0x00880007, 0x20000010, 0x40008000, 0x00040001, 0x00083040, 0x18200000, 0x00000008, 0x00205000, 0x0000804c, + 0x00810000, 0x00002830, 0x00800044, 0x08000000, 0x001000a0, 0x00000040, 0x00080000, 0x00000401, 0x80000000, 0x00000001, + 0x20282000, 0x00040098, 0x00120040, 0x00001206, 0x00900810, 0x06400ca3, 0x00008200, 0x00040030, 0x00028000, 0x00040000, + 0x80800020, 0x00014008, 0x00200000, 0x40000082, 0x00080000, 0x00200003, 0x8000400c, 0x20100062, 0x00000548, 0x00044200, + 0x40000233, 0x000800a0, 0x10081400, 0x00810008, 0x00000000, 0x00804c82, 0x01000800, 0x82420000, 0x00120004, 0x08400010, + 0x00800000, 0x00800008, 0x80009000, 0x00000042, 0x00460400, 0x00004005, 0x04208001, 0x2042022a, 0x50000000, 0x00000004, + 0x00018c01, 0xc8041080, 0x00302820, 0x00481050, 0x00808440, 0x00000000, 0x0000001c, 0x00088000, 0x40000000, 0x00000000, + 0x00000080, 0x00040000, 0x88400602, 0x40200440, 0x42c10000, 0x10300000, 0x00020020, 0x18400000, 0x00501a08, 0x00011010, + 0x20000000, 0x00540000, 0x40202008, 0x00000000, 0x00008400, 0x00044000, 0x00000000, 0x80000080, 0x00108000, 0x00000000, + 0x00400048, 0x00000280, 0x00050000, 0x00200020, 0x80000440, 0x40050000, 0x00000810, 0x00120020, 0x08400000, 0x20082010, + 0x00101010, 0x10000800, 0x00040400, 0x00280000, 0x00040000, 0x10100802, 0x00204000, 0x00002028, 0x00000000, 0x10010000, + 0x00000000, 0x80208450, 0x00000002, 0x00000000, 0x20003488, 0x80800280, 0x02081000, 0x0000c030, 0x04400048, 0x00040000, + 0x80008004, 0x08000022, 0x00004000, 0x20000600, 0x10000800, 0x000000c2, 0x00400400, 0x00002000, 0x00100000, 0x80000a20, + 0x40240000, 0x00004000, 0x10000400, 0x800a103a, 0x00000800, 0x20002080, 0x00818000, 0x02000000, 0x00044004, 0x04000040, + 0x00408280, 0x40000008, 0x08200822, 0x00000000, 0x00100280, 0x10010010, 0x00009000, 0x00004440, 0x00180028, 0x00002a00, + 0x00420002, 0x40240004, 0x20000000, 0x10001410, 0x80000000, 0x04000040, 0xd8440000, 0x00008002, 0x80204000, 0x08080010, + 0x22044240, 0x00120008, 0x00200080, 0x00080040, 0x00c00400, 0xe0120000, 0x00200820, 0x40000000, 0x02841012, 0x00020010, + 0x00000000, 0x84102600, 0x08880800, 0x10400000, 0x80204000, 0x00000404, 0x00000000, 0x9044a000, 0x00020000, 0x08000008, + 0x00380040, 0x00108200, 0x00800080, 0x10010860, 0x004c8000, 0x44000400, 0xa0100000, 0x00800000, 0x08021000, 0x42040010, + 0x00100a28, 0x04020000, 0x00402000, 0x30000008, 0x00000000, 0x00096020, 0x00300000, 0x4c000004, 0x00c00000, 0x000c2003, + 0x40000410, 0x00100860, 0xa0020020, 0x00004a08, 0x00200000, 0x00101010, 0x00c00000, 0x40002000, 0x80040008, 0x0220a820, + 0x000a0002, 0x00004000, 0x04200200, 0x00100444, 0x00c00040, 0x00128808, 0x00000482, 0x000c00a1, 0x50040a00, 0x00008004, + 0x10000400, 0x00040018, 0x00100040, 0x00200020, 0x00000004, 0x00001a00, 0x02000000, 0x040c1400, 0x40210018, 0x00402000, + 0x00000008, 0x00084010, 0x08040004, 0x04204200, 0x00008040, 0x20000000, 0x00018008, 0x20000086, 0x24040280, 0x00510008, + 0x00200444, 0x48040000, 0x00008440, 0x000028a0, 0x00000000, 0x10081040, 0x0c800400, 0x00202010, 0x28800000, 0x00540820, + 0x00000000, 0x10104210, 0x00081400, 0x20080080, 0x00020008, 0x4000a410, 0x00200000, 0xd0004004, 0x004c0000, 0x00020020, + 0x80000282, 0x00088000, 0x02000000, 0x00a01080, 0x04420208, 0x00000010, 0x20040060, 0x48410400, 0x00004800, 0x08280000, + 0x10c00020, 0x10000000, 0x00500010, 0x00003000, 0x00028000, 0x00882400, 0x48240a08, 0x00000280, 0x08300044, 0xc0044000, + 0x00480002, 0x00080800, 0x00938000, 0x02003400, 0x00810040, 0x400002a0, 0x00000000, 0x0458000a, 0x28200440, 0x00218000, + 0x6440000a, 0x10045a00, 0x08000008, 0x80200010, 0x00080820, 0x30100000, 0x00001002, 0x00802210, 0x00004004, 0x20000800, + 0x020a2098, 0x40000284, 0x00040002, 0x8800c800, 0x80008022, 0x00020000, 0x00802008, 0x00800400, 0x02000000, 0x302002c0, + 0x00400040, 0x00001800, 0x00108420, 0x40a00004, 0x00040820, 0x08080012, 0x00001018, 0x10030400, 0x00102004, 0x02000008, + 0x00000000, 0x00886020, 0x00008000, 0x48440002, 0x00214064, 0x00128c00, 0x14802002, 0x00400080, 0x00010060, 0x02000000, + 0x00802280, 0x04300058, 0x00000800, 0x20400400, 0x00080820, 0x00200000, 0x00400004, 0x0010d080, 0x00040200, 0x18200000, + 0x400c0080, 0x20420002, 0x90100428, 0x00020840, 0x00004600, 0x20480000, 0x80808020, 0x00041000, 0x40002000, 0x00000280, + 0x00080000, 0x82420000, 0x0020004c, 0x00001010, 0x0a880000, 0x10400020, 0x00000000, 0x04100800, 0x08009008, 0x00000000, + 0x402c0000, 0x00000200, 0x00000000, 0x10122002, 0x40000020, 0x00858004, 0x000a0000, 0xc0040000, 0x00000400, 0x00412040, + 0x04820010, 0x08000000, 0x82100048, 0x08a10000, 0x40000008, 0x02400800, 0x00000000, 0x50048000, 0x044020a1, 0x08000010, + 0x80000004, 0x00000800, 0x90100000, 0x0080d002, 0x00040000, 0x00000000, 0x00000200, 0x20003050, 0x40a00000, 0x00000042, + 0x80000008, 0x02804000, 0x00020c20, 0x00088008, 0x00201002, 0x00000010, 0x00004000, 0x08040000, 0x10000201, 0x80424440, + 0x0024400a, 0x40002400, 0x00100080, 0x10800000, 0x00000022, 0x00081850, 0x40400200, 0x80408080, 0x00002008, 0x00400408, + 0x04850000, 0x00225810, 0x08a00000, 0x00100800, 0x00008008, 0x04081010, 0x00000000, 0x02008280, 0x4040400c, 0x00004200, + 0x282e0426, 0x5004c004, 0x00002402, 0x00100000, 0x80000820, 0x40000404, 0x0c800040, 0x00200002, 0x88001000, 0x00100000, + 0x00400210, 0x02029000, 0x20980000, 0x04480008, 0x08004002, 0xe0320020, 0x08000440, 0x00200000, 0x40144010, 0x10000030, + 0x00020000, 0x80800002, 0x00000000, 0x00000000, 0x44e48204, 0x00082000, 0x00004000, 0x4a400c00, 0x80000820, 0x08200000, + 0x14040082, 0x00030080, 0x00900000, 0x18200000, 0x00400440, 0x22000000, 0x541c0008, 0x00000000, 0x00240200, 0xf0029800, + 0x10000020, 0x20129000, 0x00810000, 0x20000000, 0x00010030, 0x04000200, 0x00400400, 0x00086008, 0x8c320004, 0x00a40000, + 0x04200884, 0x00400452, 0x08100000, 0x0020e042, 0x00001828, 0x00100000, 0x00000291, 0x40800824, 0x00004000, 0x20080448, + 0x10022022, 0x08000000, 0x40040820, 0x00008280, 0x00008002, 0x80001014, 0x20120040, 0x10000201, 0x0080a808, 0x00000080, + 0x40040440, 0x084050a4, 0x00000010, 0x08220820, 0x00008042, 0x00000008, 0x00000010, 0x10000aa0, 0x00103004, 0x20000000, + 0x00084440, 0x08420028, 0x00008002, 0x40000800, 0x00044000, 0x14220000, 0x00011434, 0x00008040, 0x00100a00, 0x0008000a, + 0x000140a0, 0x00040000, 0x04004004, 0x48418440, 0x80000000, 0x4a04c040, 0x04421000, 0x10000004, 0x80228822, 0x28100000, + 0x10000010, 0x02a00081, 0x00100240, 0x20000000, 0x44542040, 0x00080008, 0x00000010, 0x88000800, 0x420a0009, 0x80220600, + 0x10848016, 0x40000000, 0x000000a0, 0x00200200, 0x00080000, 0x00000000, 0x48040400, 0x1450004a, 0x00000000, 0x80220004, + 0x08400821, 0x00080000, 0x02819012, 0x50200400, 0x00000000, 0x00581008, 0x10248450, 0x00000000, 0x08285828, 0x40050000, + 0x02000000, 0x10828014, 0x80102200, 0x04200404, 0x20483a8a, 0x08810004, 0x00408002, 0x40850444, 0x00114280, 0x00000800, + 0x42400680, 0x08800008, 0x80006a20, 0x08088442, 0x00620010, 0x00100400, 0x16040a20, 0x20000018, 0x0408a00a, 0x30100410, + 0x40000000, 0x08020200, 0x400020a8, 0x80000001, 0x00002000, 0xd0040440, 0x00828802, 0x00200000, 0x081ae0a3, 0x00440a00, + 0x00101018, 0xc44442c4, 0x00828400, 0x80010100, 0x08000c68, 0x10a80000, 0x00025000, 0x3a000aa0, 0x40400850, 0x000a0008, + 0x14159450, 0x00000000, 0x40055280, 0x18000028, 0x00100000, 0x10028440, 0x80185810, 0x04000000, 0x600100a0, 0x00808008, + 0x08000a00, 0x00001450, 0x40c16280, 0x80000002, 0x08100020, 0x04800000, 0x10204090, 0x68208802, 0x86420060, 0x00001040, + 0x40080200, 0x0ab00410, 0x10605000, 0x0002200c, 0x14180010, 0xa0100002, 0x40004004, 0x20680800, 0x000000c1, 0x00008010, + 0x58520006, 0x84082040, 0x00041200, 0xa0020c00, 0x0800008a, 0x44400040, 0x10080400, 0x00200000, 0x08240000, 0x84411800, + 0x00000060, 0x10001610, 0x0e20c808, 0x400a0004, 0x00042008, 0x10401000, 0x80090000, 0x00804006, 0x402d0008, 0x08020810, + 0xa008a002, 0x60540000, 0x00024000, 0x10800288, 0xa8238002, 0x00042000, 0x00080400, 0x40850004, 0x10401050, 0x00a80820, + 0x82c00080, 0x20000042, 0x08001030, 0x00020c44, 0x20204000, 0x00003488, 0x00204004, 0x58100012, 0x20000048, 0x10300410, + 0x10082000, 0x42248022, 0x00004004, 0x00000000, 0x8040000a, 0x24000a84, 0x00028000, 0x02800450, 0x80008089, 0xc0003200, + 0x084a0c20, 0x040000c0, 0x00000000, 0x0a001030, 0x10440840, 0x00284200, 0x1000a00c, 0x00201020, 0x48100250, 0x00004000, + 0x90001008, 0x000c2002, 0x00120000, 0x400c440c, 0x06008000, 0x800202a0, 0x00100002, 0x1404c800, 0x22010000, 0x80028442, + 0xc88002a0, 0x00200840, 0x00000000, 0x04404400, 0x28001810, 0x04900000, 0x00c01840, 0x18004020, 0x20000c10, 0x0024a002, + 0x00000008, 0x10005000, 0x04180c14, 0x40480008, 0x30000002, 0x0004a020, 0x80060080, 0x40100004, 0x04004010, 0x02801802, + 0x08002004, 0x8022c02c, 0x0ec00088, 0x90040004, 0x00000642, 0x00204400, 0x04400054, 0x02100a20, 0x18209028, 0x00402800, + 0x80000080, 0x00080080, 0x14201000, 0x40100014, 0x00410462, 0x10080208, 0x00046000, 0xc8040020, 0x002a4804, 0x00012000, + 0x00801010, 0x82020206, 0x00008480, 0x08c10000, 0x8206400e, 0x540082e0, 0x004a4044, 0x14a20800, 0x40100410, 0x00040881, + 0x02000040, 0x0022c220, 0x08100020, 0x10000004, 0x40200850, 0x00420090, 0x30400000, 0x00181008, 0x84080008, 0x00200800, + 0x20043000, 0x48140004, 0x20000400, 0x00027002, 0x30220000, 0x22000000, 0x80048aa2, 0x40000081, 0x02080000, 0x00c00a08, + 0x1c000400, 0x40440102, 0x00800060, 0x80200801, 0x0c020000, 0x00800023, 0x00001000, 0x18010000, 0x02300210, 0x40000808, + 0x00080800, 0x00242020, 0x40140000, 0x08000008, 0x0008401e, 0x12208002, 0x80020024, 0x00812000, 0x00a80000, 0x02008200, + 0x804100d0, 0x00400040, 0x08050400, 0x04818820, 0x18200800, 0x02000400, 0x82200000, 0x08008802, 0x04600000, 0x10000028, + 0x10000200, 0x00001010, 0x00120080, 0x20082000, 0x10100400, 0x00000018, 0x40044000, 0x00000000, 0x08200024, 0x800a8000, + 0x00081016, 0x02000000, 0x02800000, 0x000206a0, 0x00008000, 0x0040404c, 0x80000400, 0x00220000, 0x08200020, 0x00000800, + 0x00180042, 0x00800280, 0x08601010, 0x10160000, 0x00002440, 0x40001000, 0x00081018, 0x10004020, 0x541c000c, 0x00000800, + 0x00111000, 0x00000012, 0x20028004, 0x42800200, 0x00020082, 0x00410000, 0x00404000, 0x00010000, 0x04000440, 0x08240020, + 0x04000008, 0x00400440, 0x002a1000, 0x0c500c30, 0x00004000, 0x00101000, 0x90000000, 0x00204818, 0x00020044, 0x2200a208, + 0x00080092, 0x00000020, 0x4040400c, 0x00042809, 0x00000402, 0x40268004, 0x98800084, 0x00000a61, 0x00900000, 0xc2228098, + 0x04000000, 0x00400040, 0x00001410, 0x00100000, 0x08200020, 0x004a0808, 0x0000a010, 0x10900800, 0x00001800, 0x00010002, + 0x001c300c, 0x04008280, 0x40040004, 0x00004208, 0x08201420, 0x00020000, 0x80008000, 0x00000092, 0x00080080, 0x02030242, + 0x0080e006, 0x40000c20, 0x04c10040, 0x20004080, 0x80000010, 0x02404400, 0x241082c4, 0x00000830, 0x14048000, 0xc8200000, + 0x20080018, 0x08121000, 0x122002a2, 0x40002008, 0x001a0022, 0x20804c00, 0x00001040, 0x00440004, 0xc8004020, 0x00800002, + 0xc0048000, 0x126a1010, 0x00000280, 0x02000800, 0x00842008, 0x08000460, 0x04000000, 0x82e84084, 0x10020020, 0x40000000, + 0x08208882, 0x10100010, 0x08200008, 0x00841280, 0x40082000, 0x10100000, 0x00020448, 0x00404000, 0x06080004, 0x40050000, + 0x04000838, 0x00820002, 0x98249004, 0x00114280, 0x00820000, 0x42000420, 0x00080400, 0x00a10000, 0x0c406844, 0x10100000, + 0x04400050, 0x40be4004, 0x00000800, 0x082020a8, 0x80000000, 0x00108012, 0x10080440, 0x02c21081, 0x00082200, 0x08000008, + 0x24500000, 0x00244080, 0x00001074, 0x48008c03, 0x80008002, 0x00020008, 0x10041200, 0x02800619, 0x00004080, 0x08020040, + 0x00000402, 0x00201844, 0x00442020, 0x48214800, 0x00000228, 0x80428012, 0x10000210, 0x20404040, 0x00911420, 0x00000088, + 0x08208800, 0x021a3060, 0x40404414, 0x00040080, 0x08302800, 0x00080000, 0x20000442, 0x100a8230, 0x00411280, 0x02000820, + 0x80800000, 0x00200400, 0x00403052, 0x5480000c, 0x00004800, 0x04100000, 0x004c0410, 0x4a000000, 0x00080800, 0x9022202a, + 0x10001000, 0x40000010, 0x22908281, 0x20080000, 0x00202000, 0x0040844a, 0x08040004, 0x00004000, 0xc4020aa1, 0x000a0000, + 0x04000002, 0xa020a050, 0x00800001, 0x08600400, 0x121822a8, 0x80400800, 0x10008400, 0x00005054, 0x00240000, 0x40880800, + 0x08000028, 0x00020002, 0x50041010, 0x0290c280, 0x00200000, 0x80022008, 0x00498400, 0x00840060, 0x40014000, 0x00200a84, + 0x00008012, 0x08000000, 0x10121448, 0x42010000, 0x08200280, 0x20c00808, 0x00580060, 0x10002400, 0xc4005014, 0x00008022, + 0x00000440, 0x14040090, 0x00200440, 0x00104020, 0x6802a80e, 0x00000820, 0x00180010, 0xd2001281, 0x00801010, 0x20080008, + 0x0042a460, 0x4000600c, 0x80140002, 0x080012a9, 0x00004004, 0x80000002, 0x14629c50, 0x00008003, 0x02000280, 0x08980028, + 0x00200a80, 0x00400000, 0x50045650, 0x00020c40, 0x08000020, 0x0028800c, 0x00100820, 0x00000000, 0x52015a90, 0x00081010, + 0x00040000, 0x8042a448, 0x0000200c, 0x00000000, 0x44844a90, 0x00024004, 0x00010002, 0x10609450, 0x00008002, 0x00910000, + 0x2a2c0a88, 0x04000280, 0x00000060, 0x50445414, 0x02300440, 0x00202230, 0x54508010, 0x04401400, 0x00245094, 0x28086000, + 0x08200001, 0x100000c0, 0xc8120810, 0x101000c0, 0x00000200, 0x24480001, 0x200c2840, 0x80020002, 0x48000100, 0xc0062604, + 0x00000889, 0x14400000, 0x80020000, 0x02000200, 0x08841004, 0x02804080, 0x00208008, 0x54c80002, 0x04400041, 0x00201804, + 0x88860210, 0x08280000, 0x00102018, 0x10810040, 0x501c0500, 0x000000c0, 0x82420010, 0x200c2400, 0x00008000, 0x58a11080, + 0x40044600, 0x000008a1, 0x904a4400, 0xc2028240, 0x00010000, 0x28a80130, 0x02810001, 0x00400a08, 0x54040400, 0x04409081, + 0x001000c0, 0x00000000, 0x00000000, 0x10000a00, 0x00880000, 0x00008800, 0x40020020, 0x00800128, 0x00008004, 0x02200000, + 0x00028200, 0x10080080, 0x00104008, 0x28020000, 0x00080000, 0x0000c100, 0x10000000, 0x28022504, 0x00480000, 0x00008020, + 0x00020110, 0x0c002220, 0x02000840, 0x80040000, 0x00000400, 0x00012000, 0x04000400, 0x14001804, 0x00000020, 0x0cc00002, + 0x00000018, 0x10025900, 0x02400080, 0x08000920, 0x00502002, 0x38001008, 0x00010008, 0x00000020, 0x00002018, 0x40130502, + 0x08000005, 0x40240804, 0x00206080, 0x00100000, 0x20000004, 0x80100800, 0x2002000a, 0x02442000, 0x02200002, 0x00400020, + 0x08000004, 0x00002000, 0x40800400, 0x11604000, 0x08080400, 0x82000800, 0x00410000, 0xa0040020, 0x400000c0, 0x00901030, + 0x20200202, 0x04212000, 0x40040858, 0x000090c1, 0x00000802, 0x60040005, 0x01000000, 0x20000000, 0x00012020, 0x00484022, + 0x40400000, 0x88028087, 0x00400000, 0x00008400, 0x00344008, 0x02000000, 0x01240005, 0x00100000, 0x40010040, 0x00040000, + 0x43b00055, 0x02040002, 0x00042004, 0x00480000, 0x200000c0, 0x00008000, 0x32001000, 0x00080020, 0x10800002, 0x00010000, + 0x0a6c0020, 0x00081000, 0x44000000, 0x80004082, 0x00004000, 0x80012104, 0x00200000, 0x20420010, 0x80004044, 0x00000401, + 0x20900001, 0x00000002, 0x00000822, 0x14001001, 0x40440000, 0x00000210, 0x80800800, 0x00400000, 0x00104008, 0x08000022, + 0x00810800, 0x02200008, 0x00000008, 0x141a0010, 0x00000000, 0x10200024, 0x20214000, 0x00080200, 0x0002a00a, 0x40000000, + 0x00010000, 0x00000000, 0x80a10080, 0x00024000, 0x80080000, 0x00000200, 0x00004005, 0x00200000, 0x04002000, 0x10400000, + 0x00900080, 0x00401000, 0x00000000, 0x00022000, 0x00009010, 0x008080c0, 0x00080000, 0x10020414, 0x00100240, 0x00080000, + 0x0001004a, 0x00000a08, 0x00060040, 0x80000000, 0x00000000, 0x02240088, 0x08020000, 0x10008004, 0x00000250, 0x10a02000, + 0x00010400, 0x02020042, 0x04000100, 0x20500042, 0x00000280, 0x00000010, 0x00006004, 0x80000040, 0x00408000, 0x00144014, + 0x00000800, 0x000c0802, 0x02000400, 0x08000000, 0x00400020, 0x04810091, 0x00000000, 0x80000808, 0x0020a040, 0x00040010, + 0x04100110, 0x20210020, 0x00029040, 0x40200824, 0x00008049, 0x00002400, 0x00080000, 0x00400088, 0x00000002, 0x60100084, + 0xc0100800, 0x00402088, 0x00000100, 0xa0241030, 0x00000800, 0x00840000, 0x06000400, 0x10008000, 0x00002020, 0x00080004, + 0x00402800, 0x0011a018, 0x00300040, 0x00000080, 0x0800440c, 0x001088a1, 0x80202100, 0x80001010, 0x00200400, 0x0c828001, + 0x10000001, 0x00000880, 0x004014a0, 0x00000401, 0x20001000, 0x50a00080, 0x01800428, 0x00230080, 0x80101000, 0x00000004, + 0x00100000, 0x2410207d, 0x1040d002, 0x10080400, 0x40081044, 0x20400489, 0x0a400880, 0x80080408, 0x00044000, 0x30400000, + 0x1883c804, 0x20000000, 0x10000820, 0x00000440, 0x00010003, 0x00380010, 0x00000000, 0x20000002, 0x10004004, 0x00000000, + 0x4c000284, 0x00028000, 0x48004800, 0x04200440, 0x40010000, 0x00000000, 0xa0880020, 0x80000100, 0x000c0000, 0x20411000, + 0x00000800, 0x08044014, 0x00020408, 0x00000000, 0x00000020, 0xa0800004, 0x00382000, 0x08800000, 0x30118002, 0x40084010, + 0x00000048, 0x00000200, 0x00000000, 0x00220000, 0x40080440, 0x00000000, 0x00a00800, 0x02020820, 0x00020000, 0x00100000, + 0x00051010, 0x00000000, 0x00002000, 0x88000008, 0x00000000, 0xc4000002, 0x02302004, 0x08000000, 0x80005020, 0x00020000, + 0x0000400c, 0x008800c0, 0x00028010, 0x00140020, 0x20400848, 0x00001000, 0x00004002, 0x80002290, 0x00040000, 0x02002000, + 0x10808446, 0x04200800, 0x00800000, 0x80004284, 0x08000010, 0x00000002, 0x40000440, 0x20083000, 0x10000100, 0x0004c020, + 0x40240000, 0x00000000, 0x00009c00, 0x80020000, 0x20008000, 0x00406238, 0x02890080, 0x00005202, 0x00400410, 0x04400400, + 0x00020004, 0x0000802a, 0x08204004, 0x00000000, 0x000012d0, 0x10100012, 0x00000800, 0x00001040, 0x08080000, 0x00000000, + 0x20004808, 0x40200410, 0x00006020, 0x00001000, 0x80102000, 0x00002000, 0x84400000, 0x70009000, 0x08020200, 0x80304000, + 0x02802200, 0x10000000, 0x001c0000, 0x44000040, 0x0008010e, 0xa03211a0, 0x00000800, 0x40440000, 0x02001010, 0x94000402, + 0x08020000, 0x00c46000, 0x00000028, 0x20280080, 0x08820004, 0x04004000, 0x00440040, 0x00100000, 0x482a9100, 0x10000802, + 0x200000c0, 0x00000298, 0x10010004, 0x40000000, 0x00040040, 0x00000000, 0xa00a4000, 0x00040010, 0x40200000, 0x20800000, + 0x00011008, 0x08002820, 0x06120404, 0x00010008, 0x22000000, 0x40000020, 0x0c6c0040, 0x00000000, 0x10130010, 0x4002100a, + 0x60080040, 0x10940020, 0x80020100, 0x02004820, 0x04080010, 0x00100000, 0x00001044, 0x02c00038, 0x00400008, 0x0800a800, + 0x04000000, 0x08200000, 0x00024200, 0x00040006, 0x10028008, 0x20900062, 0xc0000090, 0x20401281, 0x00a00800, 0x0c000400, + 0x00000000, 0x00080410, 0x00000060, 0x10000020, 0x80042008, 0x00601800, 0x00001000, 0x20010040, 0x00040010, 0x00420080, + 0x4c082808, 0x00200004, 0x00005000, 0x00040280, 0x00198006, 0x12020000, 0x04008048, 0x00100802, 0x00002000, 0x00210000, + 0x08040400, 0x00120040, 0x80081400, 0x00808824, 0x00004800, 0x00401c00, 0x04200000, 0x08080820, 0x00022080, 0x40700002, + 0x10140000, 0x00000010, 0xa0001404, 0x00020000, 0x80000000, 0x60486408, 0x40844000, 0x04000004, 0x38108002, 0x80020000, + 0x00408000, 0x002000a6, 0x02000000, 0x08000288, 0x108c0000, 0x00400000, 0x00001840, 0x04210400, 0x08002800, 0x00020020, + 0x00204000, 0x00010000, 0x00000010, 0x3658d002, 0x28000000, 0x00080400, 0x54142008, 0x40000204, 0x0000c000, 0x90060800, + 0x800284c2, 0x00000010, 0x42890020, 0x02010020, 0x00400000, 0x00902002, 0x00000410, 0x74400040, 0x08284000, 0x00000024, + 0x24202030, 0x00004440, 0x00202000, 0x00000008, 0x18801824, 0x20001014, 0x10800000, 0x00300000, 0x42086000, 0x20000000, + 0x00020048, 0x80000006, 0x40400000, 0x00044400, 0x08000080, 0x80000800, 0x0042822a, 0x00800040, 0x10000400, 0x82000290, + 0x00000840, 0x0c0c0020, 0x00608404, 0x02000800, 0x00200000, 0x48001032, 0x00040010, 0x30100000, 0x0080b00c, 0x00000000, + 0x42000000, 0x200a6048, 0x04009004, 0x40240022, 0x08404000, 0x00000008, 0x00020002, 0x90148000, 0x00800040, 0x02010000, + 0xa4001690, 0x04601c20, 0x00000000, 0x00042040, 0x00200000, 0x10002000, 0x00401200, 0x00004000, 0xa0300200, 0x08002010, + 0x04084008, 0x00100000, 0x50028402, 0x20000000, 0x000800c0, 0x00840800, 0x00028000, 0x80040c00, 0x48000002, 0x02800408, + 0x00001000, 0x90460000, 0x44000000, 0x00800048, 0x02200802, 0x04000000, 0x00000020, 0x38500010, 0x00088008, 0x40200000, + 0x08000200, 0x30100004, 0x00000000, 0x00000000, 0x420c0800, 0x00000040, 0x204040a0, 0x00020800, 0x00850000, 0x40008000, + 0x00000010, 0xa2101000, 0x00620028, 0x0400000c, 0x00800040, 0x02010004, 0x18400800, 0x00302000, 0x24080020, 0x08000014, + 0x80008000, 0x000008c0, 0x0002c800, 0x12801000, 0x80540070, 0x40000010, 0x02002240, 0x20c0102e, 0x00000000, 0x04004420, + 0x00442010, 0x80004000, 0x00000000, 0x00203806, 0x00001020, 0x00000000, 0x02404296, 0x20000000, 0x10002105, 0x88204440, + 0x40100004, 0x00080408, 0x000002a0, 0x000f0001, 0x20004002, 0x10001020, 0x024404d0, 0x00400000, 0x00001008, 0xc8000000, + 0x00010400, 0x0002080c, 0x08210030, 0x06001040, 0x0000c016, 0x20001000, 0x00100002, 0x00882a00, 0x04240000, 0x40000008, + 0x8840c040, 0x40020000, 0x00040404, 0xa00008a0, 0x80000000, 0x00000004, 0x1c644000, 0x42008020, 0x08002000, 0x8030080a, + 0x00020200, 0x00801000, 0x30140010, 0x00600402, 0x20002000, 0xd8080000, 0x4c040024, 0x00004000, 0x000a0000, 0x00000800, + 0x80000042, 0x004a3180, 0x00102008, 0x00000000, 0x08808000, 0x44060800, 0x00001004, 0x20680400, 0x00000020, 0x08000000, + 0x00204082, 0x80821200, 0x12000010, 0x20080000, 0x00480408, 0x08010000, 0x74060000, 0x00000004, 0x00104000, 0xd00c2000, + 0x10100002, 0x00000010, 0x02a30000, 0x42000000, 0x00000000, 0x04451002, 0x24040008, 0x00400000, 0x08226410, 0x00000020, + 0x0c400024, 0x00028450, 0x48064800, 0x10208002, 0x00000020, 0x00000000, 0x901822a5, 0x00000410, 0x20044000, 0x00880450, + 0x44308028, 0x00000004, 0x40040822, 0x20020280, 0x80008000, 0x00821050, 0x00000002, 0x00800201, 0x00082008, 0x60400480, + 0x00000000, 0x00400124, 0x14000450, 0x80026800, 0x40208002, 0x088000a0, 0x40080008, 0x00000280, 0x10011410, 0x00004008, + 0x200c2440, 0x00200000, 0x04000000, 0x40250820, 0x02008016, 0x00000000, 0x00021410, 0x1800c046, 0x00010280, 0x0010000a, + 0x02000802, 0x40403060, 0x00000004, 0x04000400, 0x00042000, 0x40047440, 0x04400002, 0x18002100, 0x80028826, 0x20280040, + 0x00000000, 0x02800211, 0x40140000, 0x00000808, 0x001800c0, 0x20005002, 0x80000800, 0x08040004, 0x40000001, 0x80820002, + 0x10348030, 0x04000000, 0x00004000, 0x20888680, 0x00200000, 0x00500000, 0x408404ca, 0x10028000, 0x08000020, 0x84004804, + 0x00200010, 0x00008000, 0x02831030, 0x400c0000, 0x00002020, 0x04400848, 0xa00a4400, 0x00000004, 0x08200800, 0x42040022, + 0x00408000, 0x10900002, 0x80070000, 0x04000400, 0x20082298, 0x02850000, 0x00400000, 0x40a50440, 0x08020002, 0x00180204, + 0x40200284, 0x00140800, 0x002000a0, 0x0c0884ca, 0x04804a00, 0x80040114, 0x00300aa0, 0x60400000, 0x00088000, 0x2680041a, + 0x00000800, 0x18160290, 0x40600068, 0x90001005, 0x00000c40, 0x90063006, 0x00088000, 0x00800084, 0x8048e03b, 0x48248a00, + 0x00001450, 0x20040280, 0x40400080, 0x00000100, 0x18a98668, 0x20024805, 0x00401010, 0x02040aa4, 0x80802002, 0x40080002, + 0x24009050, 0x00003008, 0x00060080, 0x48202e0c, 0x00000000, 0x20400442, 0x80069024, 0x00080000, 0x10010830, 0x02888002, + 0x08200280, 0x00000410, 0x40442284, 0x10004041, 0x28200828, 0x04dc0000, 0x00005018, 0x60008800, 0x84620400, 0x08002020, + 0x40101212, 0x0a200808, 0x00084000, 0xa0002008, 0x00520000, 0x082c0002, 0x40004840, 0x28080000, 0x0024000d, 0x00008000, + 0x4044040e, 0x90820240, 0x40302208, 0xa0028014, 0x00801082, 0x00000460, 0xc0c00000, 0x08000210, 0x00280020, 0x80420004, + 0x08044c00, 0x20045280, 0x0c200838, 0x00000004, 0xa0002848, 0x04aa1000, 0x40010030, 0x40810004, 0x225c0008, 0x0000400a, + 0x80029000, 0x5844000e, 0x00100040, 0x02a00280, 0x88030000, 0x20028020, 0x10102400, 0x42810a00, 0x00484048, 0x00800822, + 0x10802400, 0x00020064, 0x08004032, 0x04001480, 0x20680840, 0x00008008, 0x88107830, 0x50240004, 0x20400008, 0x0018a010, + 0x00800200, 0x48000424, 0x000c4050, 0x00080082, 0x80800200, 0x02240002, 0x04068008, 0x02805c80, 0x80008209, 0x00200060, + 0x94120004, 0x20002440, 0x00400000, 0x08809810, 0x06600020, 0x00080408, 0x14002000, 0x08100230, 0x00e21000, 0x20000004, + 0x02085008, 0x8403ac00, 0x40104002, 0x2008000c, 0x02240000, 0x1001008a, 0xc0860004, 0x04008208, 0x00000040, 0x02c14402, + 0x80302280, 0x04400802, 0x28018260, 0xd0000404, 0x08381000, 0x04880440, 0x80600024, 0x00000220, 0x4c220002, 0x34101810, + 0x80080080, 0x58104450, 0x00043208, 0x000a0400, 0xa0200008, 0x08002004, 0x00808006, 0x444c0260, 0x02004080, 0x00021000, + 0x04000040, 0xc0008002, 0x004400b0, 0x82842200, 0x00280002, 0x08400040, 0x04800406, 0x00060000, 0x00100803, 0x0042a020, + 0x1aa01250, 0x04100004, 0x1e080010, 0x20005400, 0x00490c00, 0x40000008, 0x30262010, 0x88000820, 0x2000c046, 0x40843000, + 0x02000012, 0xc0040000, 0x00038400, 0x00c10008, 0x06081000, 0x200002c0, 0x00208040, 0x04c10024, 0x08006c80, 0x10001001, + 0x0c440002, 0x00a2c020, 0x00200880, 0x08000020, 0x10000000, 0x10400010, 0x20980800, 0x00049080, 0x480a2008, 0x00000800, + 0xa4000000, 0x00005014, 0x20040000, 0x40c88020, 0x0002800a, 0x40002000, 0x80400004, 0x24000011, 0x02880080, 0x00200208, + 0x44420040, 0x08840180, 0x00804c00, 0x80110800, 0x04000000, 0x082100b1, 0x02110010, 0x10020020, 0x40403020, 0x00080000, + 0x00000000, 0x20062048, 0x00000004, 0x08384010, 0x600c0000, 0x80808002, 0x021c2000, 0x00060080, 0x00c14000, 0x82000002, + 0x00000400, 0x00000048, 0x00442000, 0x0c230402, 0x00080820, 0x26002044, 0x02000400, 0x08008000, 0x04601800, 0x00000422, + 0x80101200, 0x00200000, 0x10680030, 0x00080480, 0x22002040, 0x00540028, 0x40200002, 0x000c0004, 0x00105000, 0xa0028020, + 0x00041010, 0x22900802, 0x00800080, 0x82000200, 0x9420c000, 0x04002010, 0x00000400, 0x80400040, 0x0a000020, 0x00204802, + 0x00400004, 0x00900080, 0x10001010, 0x02024044, 0x28250448, 0x00002000, 0x00581020, 0x40044802, 0x14080024, 0x00220000, + 0x80000010, 0x40068040, 0x10001406, 0x02880288, 0x80050002, 0x40000004, 0x80400000, 0x00012400, 0x24000040, 0x00a00000, + 0x00400400, 0x04003244, 0x80000030, 0x08406100, 0x00340800, 0x10000000, 0x00321018, 0x00004420, 0x00808104, 0x00080008, + 0x20002800, 0x00040080, 0x80224608, 0x5000000d, 0x00000000, 0x00008022, 0x801a0004, 0x00080221, 0x04000000, 0x12a088c0, + 0x00000408, 0x044020c0, 0x08000000, 0x40000000, 0x88001034, 0x00240800, 0x10015000, 0x00800020, 0x00100034, 0x00002000, + 0x00080208, 0x20040002, 0x00000000, 0x00420440, 0x4004c004, 0x04410060, 0x80040002, 0x40228400, 0x00101000, 0x82000292, + 0x1083002a, 0x60080400, 0x04401840, 0x00002011, 0x80000000, 0x00008000, 0x006820c0, 0x00200824, 0x14100000, 0x4800c040, + 0x20000010, 0x10001040, 0x001a0a84, 0x20006008, 0x00000000, 0x448c0440, 0x82024004, 0x40001000, 0x000c2820, 0x00008002, + 0x80060108, 0x20985000, 0x02000201, 0x00c04080, 0x04002008, 0x10480442, 0x08000030, 0x04104084, 0x00201809, 0x00040000, + 0x088a8022, 0x20001410, 0x00100000, 0x90010280, 0x4008200c, 0x20000800, 0x00000452, 0x00020004, 0x400c4000, 0x80a00808, + 0x80020000, 0x0a05000a, 0x00449034, 0x00210000, 0x94900000, 0x0a004020, 0x10002448, 0x02010000, 0x44400094, 0x08021808, + 0x80002410, 0x40c20804, 0x08000800, 0x002002a8, 0x80c00002, 0x00008000, 0x00000000, 0x32b21011, 0xc00c0200, 0x00400042, + 0x2000208c, 0x00040404, 0x00000080, 0x6c00c001, 0x00820820, 0x0000a400, 0x90100252, 0x06801201, 0x000000a0, 0x20000000, + 0x04426408, 0x00021042, 0x40880814, 0x08210900, 0x00002000, 0x80000023, 0x10401000, 0x00400014, 0x08998c08, 0x20202208, + 0x00008082, 0x14481060, 0x02054400, 0x40000000, 0x28082024, 0x80208000, 0x000a0402, 0x30501a80, 0x06812010, 0x00000824, + 0x20000040, 0x00000400, 0x00008050, 0x44c2000e, 0x18048020, 0x24000044, 0x4a080410, 0x29000000, 0x02284800, 0x80048022, + 0x10101000, 0x00040018, 0x04820201, 0x20480000, 0x4400202c, 0x0a0084c0, 0x50100000, 0x00844016, 0x88020a01, 0x80120000, + 0x00200082, 0x00009410, 0x42a40081, 0x10040240, 0x0040202c, 0x84080800, 0x80000000, 0x68441444, 0x00004010, 0x20290020, + 0x0802a808, 0x90100040, 0x40041000, 0x02800056, 0x20030000, 0x80202000, 0x0848844a, 0x00800000, 0x52010014, 0x00344aa0, + 0x88000002, 0x00009000, 0x00020410, 0x00010000, 0x08302040, 0x12cc0828, 0x00400000, 0x20100400, 0x04001054, 0x00284000, + 0x00400000, 0x440c0450, 0x00200640, 0x08100020, 0xa00a880e, 0x00000820, 0x10100000, 0x42401291, 0x00041010, 0x24080004, + 0x80a0a44a, 0x0000200c, 0x50020000, 0x00444aa0, 0x00804004, 0x80028000, 0x18301452, 0x00008007, 0x00c00000, 0x22002ba8, + 0x00000280, 0x0c680000, 0x00041454, 0x00000440, 0x08000800, 0x2022e02a, 0x80000820, 0x00180010, 0x52801284, 0x00081010, + 0x00042000, 0xa041846a, 0x00026008, 0x00040000, 0x4ea00ab4, 0x00024004, 0x00010000, 0x90409452, 0x20108002, 0x02800080, + 0x082b0a28, 0x04000280, 0x00400400, 0x50101056, 0x00000440, 0x00000002, 0x44508000, 0x04400400, 0x00000040, 0x28aa0200, + 0x082000c0, 0x00000000, 0xd0901000, 0x10100b60, 0x000c0002, 0x28128810, 0x20082000, 0x80041042, 0x40c02040, 0xc0041204, + 0x00008000, 0x080a0048, 0xc0026002, 0x02c08028, 0x301c0822, 0x02e02000, 0x0c000000, 0x42041080, 0x0c40a000, 0x0002011c, + 0xa2282000, 0x18300062, 0x00002000, 0x42850804, 0x10100110, 0x00000a00, 0xa0480200, 0x20082c00, 0x00060006, 0x5aa11200, + 0x40062064, 0x00004000, 0x9050005a, 0x80028010, 0x00000100, 0x0aa98010, 0x02810080, 0x00000028, 0x54540000, 0x04400003, + 0x00080000, 0x00101000, 0x14000000, 0x000e1028, 0x02000892, 0x04208220, 0x00002809, 0x00404410, 0x04108000, 0x00040080, + 0x00020000, 0x10200082, 0x20424124, 0x00800408, 0x000c0800, 0x08804010, 0x00000002, 0x00001000, 0x88004040, 0x01008000, + 0x00000080, 0x00008808, 0x00000002, 0x00020010, 0x00000443, 0x00010020, 0xc0808080, 0x20080850, 0x10004002, 0x800010a0, + 0x00810404, 0x00000148, 0x20a190a1, 0x00008100, 0x00014000, 0x48040088, 0xb0002800, 0x00e04084, 0x24010020, 0x50001000, + 0x00001901, 0x80000202, 0x00022001, 0x00000000, 0x80100088, 0x00820200, 0x0c800880, 0x01008008, 0x00000104, 0x50100000, + 0x004a4000, 0x040c0000, 0x88200000, 0x40000000, 0x42200010, 0x00880204, 0x08000008, 0x00080000, 0x00000000, 0x100000a1, + 0x00100281, 0x00042c00, 0x00100000, 0x50020400, 0x02120300, 0x40000200, 0xa0aa0420, 0x00c00000, 0x04110000, 0x00c00800, + 0x080a0288, 0x00000004, 0x0c440008, 0x40000400, 0x02200040, 0x000e0000, 0x01100010, 0x00080008, 0x40400000, 0x00000000, + 0x00301401, 0x00008001, 0x00040800, 0xc0100002, 0x00830008, 0x0c500440, 0x40000004, 0x02080840, 0x00200010, 0x04000040, + 0x00000080, 0x00000000, 0x40401008, 0x00004000, 0x20000000, 0x08000000, 0x00010020, 0x01000410, 0x00420050, 0x10810021, + 0x20000000, 0x80018002, 0x00002800, 0x00400000, 0x42210001, 0x02001000, 0x04210040, 0x00002000, 0x00008040, 0x04008000, + 0x00204830, 0x0a040800, 0x00002010, 0x40001002, 0x80248000, 0x30440000, 0x00002000, 0x00000000, 0x00022408, 0x00100001, + 0x70000044, 0x18200010, 0x08000220, 0x80060000, 0x0008100c, 0x00004420, 0x02000000, 0x000000c0, 0x00000008, 0x00000000, + 0x10001000, 0x00050003, 0x08004000, 0x80000000, 0x000a2403, 0x68002040, 0x0000a000, 0x82000180, 0x00000002, 0x00002028, + 0x01298800, 0x80402201, 0x00189000, 0x44504000, 0x40002600, 0x0002400c, 0x00000440, 0x00004000, 0x04000102, 0x10004248, + 0x00800030, 0x0a008601, 0x00005000, 0x0008000a, 0x00000000, 0x001c000a, 0x40000040, 0x00200400, 0x40000001, 0x00004c00, + 0x10800000, 0x00000048, 0x000800a2, 0x00065010, 0x04001100, 0x02400800, 0x00030000, 0x08088000, 0x00000200, 0x04014002, + 0x00002000, 0x00120805, 0x00008020, 0x08300000, 0x00002020, 0x00010000, 0x40000008, 0x00200004, 0x00001800, 0x00020000, + 0x80800820, 0x00500000, 0x00028050, 0x00b01404, 0x20004880, 0x00020010, 0x0000000e, 0x14000902, 0x00001000, 0x82200800, + 0x30081010, 0x00010008, 0x806a8004, 0x40803030, 0x88000004, 0x00600980, 0x202a2804, 0x40040100, 0x90a10420, 0x00004205, + 0x08000285, 0x00800020, 0x00008000, 0x00000048, 0x80021000, 0x00000034, 0x01004800, 0x00200001, 0x20408000, 0x00000004, + 0x00104022, 0x20002000, 0x20c02802, 0x00140000, 0x28800000, 0x000800c1, 0x20000000, 0x80002a0e, 0x80048000, 0x20080042, + 0x50008480, 0x28082a90, 0x80040020, 0x00408008, 0x20018014, 0x00280000, 0x20881000, 0x10408000, 0x40000014, 0x00040740, + 0x40404000, 0x22000000, 0x00260060, 0x00000400, 0x00010004, 0x00108280, 0x0e040820, 0x00000042, 0x20000000, 0x40051010, + 0x00010040, 0x00100000, 0x00000000, 0x04020000, 0x80440000, 0x3000402c, 0x00000000, 0x20000080, 0x10110002, 0x00080000, + 0x24688280, 0x00010280, 0x00060008, 0x00900060, 0x88000040, 0x18040005, 0x10280000, 0x80000a00, 0x00220000, 0x00400000, + 0x00041090, 0x00810000, 0x40080000, 0x00020008, 0x00000000, 0x84d04020, 0x00a14004, 0x08000000, 0x00802000, 0x10108000, + 0x00200000, 0x50100050, 0x80020002, 0x00004820, 0x0400b200, 0x02004300, 0x00000000, 0x48001038, 0x00800000, 0x00060408, + 0x00000116, 0x084080c0, 0x00200824, 0x00184000, 0x10100000, 0x00001000, 0x00c0c602, 0x20082240, 0x00000000, 0x00020020, + 0x40040000, 0x00000000, 0x00805058, 0x80088808, 0x00000020, 0x00002002, 0x00011001, 0x20000080, 0x00244c04, 0x04000448, + 0x00000202, 0x00100800, 0x00200820, 0x08008000, 0x02400205, 0x00108400, 0x04000002, 0x00000040, 0x20083028, 0x00400001, + 0x00040a80, 0x00001404, 0x00000000, 0x00004000, 0x40020012, 0x00000000, 0x10840000, 0x00028812, 0x00001000, 0x80304048, + 0x00880200, 0x40040000, 0x30300000, 0x04008040, 0x004800a0, 0x80000000, 0x00220000, 0x00000000, 0x300c0604, 0x08000018, + 0x80900000, 0x06422840, 0x12002008, 0x00084000, 0x08a01000, 0x20044000, 0x00000000, 0x00500000, 0x90000080, 0x282a0000, + 0x040000a0, 0x10940000, 0x00008000, 0x40010005, 0x00080442, 0x80000000, 0x24000208, 0x00210020, 0x00000000, 0x18040080, + 0x00000203, 0x00020000, 0x04400400, 0x00090020, 0x00000000, 0x02006004, 0x08000000, 0x40040000, 0x14500010, 0x88201006, + 0x10008000, 0x00000a60, 0x01101000, 0x00060000, 0x008008b0, 0x02900010, 0x000c0004, 0x0040704a, 0x00400000, 0x0000a00a, + 0x00000000, 0x88144040, 0x00021200, 0x40000014, 0x00b20822, 0x22480100, 0x50008004, 0x00000001, 0x00000180, 0x00000618, + 0x10200400, 0x00080010, 0x80140860, 0x00000120, 0x00002808, 0xa0081040, 0x00001010, 0x00114000, 0x00000000, 0x0846a008, + 0x02000000, 0x00080004, 0x0e004004, 0x00241001, 0x2000201a, 0x10100000, 0x00400400, 0x00008282, 0x00000000, 0x008002a0, + 0x60080043, 0x40000008, 0x00240000, 0x08000cc1, 0x80000000, 0x00400040, 0x24200000, 0x08000010, 0x2026082c, 0x00400402, + 0x00107000, 0x10000010, 0x00008400, 0x00080900, 0x08200000, 0x70042888, 0x40800000, 0x02544804, 0x00020000, 0x80020000, + 0x00008000, 0x000000a2, 0x02000300, 0x08200000, 0x00801890, 0x04000040, 0x00540400, 0x40008020, 0x08010800, 0x00a00024, + 0x10400200, 0x00002000, 0x80129010, 0x30280200, 0x00000000, 0x0028048c, 0x20942001, 0x00000000, 0x40804200, 0x80340004, + 0x00408002, 0x00020000, 0x80010024, 0x00010280, 0x00840001, 0x84120010, 0x00000400, 0x044a1060, 0x8020c006, 0x00080000, + 0x04000004, 0x02000400, 0x10200820, 0x08000000, 0x00000010, 0x10000008, 0x24101000, 0x00002016, 0x00004088, 0x20000000, + 0x00482002, 0x00020000, 0x40000004, 0x80a44200, 0x00008040, 0x80000182, 0x00120108, 0x00800280, 0x02400020, 0x00004400, + 0x20400800, 0x0c000040, 0x00040408, 0x00002800, 0x08088004, 0x00301030, 0x00004000, 0x10000000, 0x00901018, 0x20080004, + 0x00000001, 0x4000a008, 0x00000002, 0x04440204, 0x40084400, 0x00030000, 0x80288052, 0x00440029, 0x40a00081, 0x00101800, + 0x00010204, 0x00000460, 0x20082000, 0x04441088, 0x00222020, 0x00080830, 0x20105000, 0x20000000, 0x50880000, 0x0a260000, + 0x00040000, 0x00008000, 0x90900008, 0x62004080, 0x00000000, 0x00180042, 0x00060a00, 0x90400000, 0x42000088, 0x0c000000, + 0x00020420, 0xc0800000, 0x00000000, 0x00800000, 0x22400040, 0x08000000, 0x00002000, 0x14600004, 0x20100001, 0x00000002, + 0x08a00208, 0x50800000, 0x00000004, 0x00140080, 0x00000240, 0x20000800, 0x002a0003, 0x80841030, 0x00500200, 0x50098000, + 0x84020010, 0x00081001, 0x20200000, 0x00800040, 0x00110408, 0x08600020, 0x10000004, 0x20000000, 0x0440a002, 0x08304000, + 0x0000c000, 0x40280860, 0x00000002, 0x10000800, 0x80000060, 0x20000100, 0x00040600, 0x00023010, 0x80800008, 0x40000c00, + 0x00005010, 0x0c024004, 0x00000820, 0x00209010, 0x30003080, 0x00000102, 0x02108000, 0x04004200, 0x00402011, 0x20040402, + 0x08004040, 0x10008006, 0x02200828, 0x00000020, 0x00048800, 0x00101090, 0x20000083, 0x80011000, 0x00040660, 0x00000000, + 0x00000068, 0x00004404, 0x10010804, 0x00001010, 0x20000002, 0x00102002, 0x08808000, 0x00403284, 0x40000008, 0x00002011, + 0x04280280, 0x70000002, 0x00004400, 0x80000000, 0x00000005, 0x40000040, 0x84a00000, 0x00208000, 0x00000022, 0x30584900, + 0x06001200, 0x10800018, 0x081000a0, 0x00200400, 0x00000000, 0x100e002c, 0x00200000, 0x00004004, 0x800c0000, 0x00000002, + 0x00008000, 0x821e1024, 0x30802000, 0x00000000, 0x42000220, 0x0006400c, 0x00000000, 0x48480040, 0x00000800, 0x08000020, + 0x10300000, 0x00411200, 0x00100002, 0x300c0000, 0x24480408, 0x00000002, 0x40000000, 0x00200000, 0x00040040, 0x0000000d, + 0x00008000, 0x00100010, 0x10470002, 0x02010000, 0x00001280, 0x04020001, 0x80004000, 0x64001004, 0x00e00400, 0x00200012, + 0x04004084, 0x00401410, 0x00020008, 0x00208002, 0x800008a0, 0x00100100, 0x00082221, 0x10405014, 0x00000080, 0x00080402, + 0x0400a008, 0x00044004, 0x00000920, 0x80102000, 0x00028002, 0x88001090, 0x20200440, 0x00080201, 0x2230210a, 0x88808024, + 0x00000000, 0x00404804, 0x00001410, 0x08200000, 0x80108002, 0x00000828, 0x00010010, 0x10000281, 0x00305000, 0x00002008, + 0x00040444, 0x20580802, 0x00004000, 0x080088a0, 0x00062005, 0x00000200, 0x00a21014, 0x00008042, 0x00100000, 0x0001200b, + 0x020002a0, 0x04400400, 0x00004004, 0x00010050, 0x00001020, 0x40044444, 0x00d20880, 0x00000200, 0x80028820, 0x00200002, + 0x00000500, 0x02941011, 0x68004004, 0x20000080, 0x04403448, 0x80120802, 0x40001000, 0x28a84024, 0x02048011, 0x00400000, + 0x5014d812, 0x04026008, 0x02800100, 0x2008020a, 0x08000800, 0x00000000, 0x40a06422, 0x00020004, 0x08000089, 0x80201820, + 0x10100001, 0x20108000, 0x00831013, 0x180c0040, 0x40000000, 0x04422048, 0xa0088000, 0x00001410, 0x08284224, 0x00840000, + 0x00011880, 0x10148013, 0x80040000, 0x00000401, 0xa0ca0288, 0x4c012020, 0x00500000, 0x40240442, 0x14000010, 0x20000008, + 0x40405290, 0x00000046, 0x00200920, 0x900aa448, 0x00000040, 0x00101014, 0x02004822, 0x00400400, 0x0020202a, 0x24009690, + 0x80800000, 0x00040300, 0x48082068, 0x02105005, 0x00220800, 0x10005404, 0x00048102, 0x40000000, 0x02c0e823, 0x80080210, + 0x00000510, 0x0084420c, 0x18000000, 0x00000820, 0xc8422600, 0x00301002, 0x00405004, 0x10008a20, 0x00910099, 0x000e0002, + 0x30009010, 0x00002008, 0x00040284, 0x28002c48, 0x00104000, 0x00008442, 0x90104024, 0x00010001, 0x000112a0, 0x040a881a, + 0x08804001, 0x00008050, 0x44446285, 0x82121600, 0x00010881, 0x02808048, 0x80081000, 0x20008022, 0xc0620600, 0x00900800, + 0x40040210, 0x00201020, 0x00100004, 0x00002008, 0x06d20012, 0x38000010, 0x00800444, 0x2a248208, 0x600040a9, 0x00008110, + 0x60160002, 0x00080140, 0x0000228c, 0x080a0000, 0x52800422, 0x20104440, 0x52840000, 0x00208010, 0x20210800, 0x00021084, + 0x08000028, 0x10081011, 0x0e340002, 0x00000820, 0xa0002400, 0x14591208, 0x08004022, 0x00004020, 0x200c9000, 0x00290045, + 0x80000800, 0x1c54e082, 0x00884440, 0x40801280, 0xa0250007, 0x0000082a, 0x04000440, 0x40990001, 0x00400010, 0x00200802, + 0x128044a0, 0x00040044, 0x08001810, 0x406084a0, 0x20080002, 0x12102100, 0x40201004, 0x00020098, 0x0000c000, 0x00081610, + 0xa0222008, 0x08240000, 0x6000080e, 0x02404100, 0x00180222, 0xc000c080, 0x00022000, 0x10004500, 0x02002203, 0x04a000c4, + 0x104a0820, 0x04000440, 0x20804000, 0x08201010, 0x00408020, 0x00000882, 0xa0802008, 0x18601010, 0x00340200, 0x20004084, + 0x00201008, 0x941a2800, 0x40009004, 0x000c4800, 0x00400002, 0x800100a1, 0x0002c006, 0x00802200, 0x00000045, 0x8480b4aa, + 0x08010202, 0x44021800, 0x00004445, 0x30500000, 0x08240000, 0x06880420, 0x00400240, 0x00200824, 0x48404000, 0x02840100, + 0xa0120008, 0x12201020, 0x000822d0, 0xc0820400, 0x20081004, 0x0004e008, 0x00040862, 0x40000084, 0x02406000, 0x00a01042, + 0x5802c108, 0x80100000, 0x08800100, 0x02040280, 0x04480000, 0x04208006, 0x00902440, 0x00404a21, 0x100410a2, 0x00600010, + 0x08882808, 0x10140290, 0x88225041, 0x60000004, 0x20480860, 0x8c830008, 0x00002000, 0x40250806, 0x10884000, 0x00000000, + 0x00000010, 0x80068202, 0x00000081, 0x04d00009, 0x00058084, 0x00000240, 0x20604004, 0x84008460, 0x08000000, 0x30183080, + 0x04260000, 0x40400002, 0x10200880, 0x08120020, 0x00089010, 0x00500000, 0x00400820, 0x32001838, 0x08020000, 0x800c0208, + 0x68802844, 0x00140014, 0x60000010, 0x28885022, 0x12028000, 0x00400004, 0xc0000202, 0x00800001, 0x02081110, 0xe0000280, + 0x04000008, 0x00040000, 0x0860c444, 0x80900820, 0x00280000, 0x18010008, 0x10140000, 0x20010000, 0x4800b010, 0x04080008, + 0xa0000000, 0x00022080, 0x00144004, 0x20010000, 0x60188000, 0x8000900a, 0x00164004, 0x20800001, 0x44c14001, 0x8008c080, + 0x10022658, 0x10400440, 0x04000000, 0x08210820, 0x00040021, 0x00000444, 0x02000000, 0x08200000, 0x00000022, 0x00040c40, + 0x10000200, 0x04001810, 0x00128000, 0x20280000, 0x00802000, 0x42000008, 0x50040200, 0x00004004, 0x10120048, 0x80000000, + 0x00048016, 0x00820000, 0x00800100, 0x02000280, 0x04000808, 0x00404040, 0x04000404, 0x80200000, 0x08201008, 0x00400822, + 0x04060040, 0x10100200, 0x00401090, 0x00000000, 0x20080440, 0x10002008, 0x10248030, 0x00000002, 0x60404020, 0x80042004, + 0x00000010, 0xc008c002, 0x00820408, 0x00850080, 0x00009201, 0x00088000, 0x84401000, 0x00012408, 0x00020046, 0x08200000, + 0x04400000, 0x000014c0, 0x00000020, 0x00000800, 0x0c304088, 0x00169010, 0x90804020, 0x00000240, 0x00002088, 0x00000100, + 0x20689000, 0x02004000, 0x000e0142, 0x4000029d, 0x00128002, 0x88040044, 0x00004100, 0x200002a1, 0x10000002, 0x02800c00, + 0x04003410, 0x00c00140, 0x00000008, 0x00144000, 0x80202000, 0x18408862, 0x000a1018, 0x10000000, 0x04100240, 0x00006004, + 0x00090000, 0x2000800a, 0x00040000, 0x20000404, 0x40014081, 0x80000000, 0x40024004, 0x0010c622, 0x00001240, 0x00038080, + 0x30800021, 0x08080400, 0x44412040, 0x00a01081, 0x80020018, 0x00000000, 0x06600200, 0x00040020, 0x08280a00, 0x90009446, + 0x00801018, 0x68100104, 0x18200220, 0x00002088, 0x20080000, 0x08044410, 0x86024004, 0x40880200, 0x00040862, 0x00000040, + 0x00028000, 0x8008111a, 0x06000280, 0x00c04000, 0x9000a000, 0x28000422, 0x00800042, 0x14ca4804, 0x000008a0, 0x08000000, + 0x602c1000, 0x00001014, 0x00100008, 0x12030280, 0x000aa000, 0x20040008, 0x04900401, 0x80000052, 0x60044010, 0x00d00804, + 0x0002a002, 0x40240000, 0x8001100c, 0x00080091, 0x10820000, 0x00238208, 0x00000440, 0x10000000, 0x4c424004, 0x00080220, + 0x00620050, 0x8010100a, 0x08000904, 0x00002028, 0x00664000, 0x00108012, 0x10401080, 0x00800901, 0x00026200, 0x202c0020, + 0x0450000c, 0x10800504, 0x40000040, 0x2824c003, 0x00000002, 0x80008c20, 0x10120300, 0x00801201, 0x08000830, 0x220a0088, + 0x04002400, 0x00005000, 0x40600045, 0x00000820, 0x00240280, 0x08400013, 0xa0001090, 0x10000004, 0x00b9a809, 0x20482208, + 0x00200002, 0x0400c020, 0x00000404, 0x40004281, 0x20240060, 0x00018010, 0x80020042, 0x4a0c1000, 0x00502280, 0x00800801, + 0x34090400, 0x00400400, 0x00200058, 0x04800020, 0x08015000, 0x00100800, 0x40045050, 0x01a08004, 0x00000000, 0x8800282a, + 0x10120000, 0x02040100, 0x20805611, 0x20000044, 0x000a2008, 0x40408482, 0x44040000, 0x00004104, 0x08200a21, 0x80028000, + 0x00000002, 0x12903410, 0x02800101, 0x00040080, 0x20002a00, 0x046c4040, 0x90000020, 0x0800161c, 0x08200000, 0x20080820, + 0x0412200a, 0x10100000, 0x80441010, 0x0481c285, 0x00080000, 0x88002000, 0x24408448, 0x10044000, 0x50010006, 0x002002a1, + 0x00080000, 0x84820000, 0x18109452, 0x00810000, 0x00000280, 0x6040282d, 0x04200000, 0x00180000, 0x40444454, 0x0a200000, + 0x04000440, 0x404c5014, 0x00000440, 0x08300000, 0x8002a82a, 0x00000820, 0x20901150, 0x12004205, 0x40081010, 0x00040008, + 0x2440a402, 0x00022008, 0x00040104, 0x4ab04a69, 0x00004004, 0x20020002, 0x90109410, 0x00008003, 0x02800300, 0x282869a0, + 0x000002c2, 0x00400000, 0x1400541c, 0x00000440, 0x48140000, 0x20a2a822, 0x00000828, 0x00180000, 0x90815295, 0x00041018, + 0x20082000, 0x84008442, 0x40002008, 0x00040000, 0x08614aa5, 0x80824004, 0x20008000, 0x14101452, 0x00008002, 0x00450001, + 0xa0a82aa8, 0x00000281, 0x04400440, 0xc0105016, 0x00000440, 0x00000020, 0x60542000, 0x0c400210, 0x00004300, 0x00206000, + 0x082080ac, 0x20002008, 0x52960002, 0x30104100, 0x00009210, 0x00080042, 0x20084200, 0x40020046, 0x0ae40120, 0x40061000, + 0x00002001, 0xb0188000, 0x80020000, 0x00800a00, 0x2a280418, 0x02c07001, 0x04020820, 0x10100000, 0x06406002, 0x00200040, + 0xa80d0205, 0x08200020, 0x0002201b, 0x10910042, 0x10100100, 0x00040084, 0xa4080002, 0x200ca800, 0x00008000, 0x60e90101, + 0x40064218, 0x80000082, 0x4c180c00, 0x80020001, 0x00c00240, 0x50290020, 0x02c10081, 0x00000020, 0x04100000, 0x0c4014c0, + 0x40082000, 0x00009080, 0x10008004, 0x50000020, 0x00400040, 0x00090000, 0x20400002, 0x00041820, 0x08200000, 0x00000880, + 0x00288004, 0x00000800, 0x00020000, 0x80043400, 0x00010014, 0x10220800, 0x00000084, 0x80406440, 0x38400000, 0x00000964, + 0x00828000, 0x001006c8, 0x00000018, 0x20100204, 0x488c8408, 0x020a0000, 0x04200080, 0x08080000, 0x00000000, 0x00204010, + 0x00051200, 0x00802190, 0x90000400, 0x80031028, 0x00110010, 0x01000c00, 0x0001000c, 0x04800040, 0x00000024, 0x00004009, + 0x00001002, 0x40220108, 0x00000204, 0x20180840, 0x40000008, 0x08840444, 0x00000008, 0x00000000, 0x02840402, 0x64041800, + 0x00a20801, 0x00000000, 0x14080000, 0x01010004, 0x08122008, 0x40140090, 0x20400409, 0x00100000, 0x40000010, 0x20044041, + 0xc8000220, 0x04010008, 0x00001030, 0x04028000, 0x11040000, 0x60040000, 0x82000000, 0x00800080, 0x10010000, 0x00200000, + 0x40420090, 0x00848000, 0x24400800, 0x80000000, 0x10000000, 0x00904041, 0x01120008, 0x00080040, 0x14000006, 0x00002040, + 0x50009000, 0x00000020, 0x20002000, 0x00920002, 0x00000010, 0xa8040404, 0x00904000, 0x08280000, 0x00000000, 0x00810004, + 0x02209082, 0x00804004, 0x204a0820, 0x040026c8, 0x00208002, 0x02001010, 0x88000d60, 0x00000280, 0x02022008, 0x10001830, + 0x00010440, 0x00804004, 0x05003018, 0x02800820, 0x00008002, 0x00804444, 0x40041010, 0x00380080, 0x0001c806, 0x40002008, + 0x08280540, 0x00009082, 0x00004004, 0x04400820, 0x000006c1, 0x00008002, 0x00001010, 0x80000c60, 0x08040281, 0x42000008, + 0x00401830, 0x00200440, 0x00404004, 0x00003018, 0x00400820, 0x00848002, 0x0000000c, 0x08001010, 0x92480080, 0x2000c806, + 0x00002008, 0x01050000, 0x00409211, 0x00004004, 0x10000020, 0x08800000, 0x00000800, 0x00880000, 0x00400000, 0x00080000, + 0x08000001, 0x02180000, 0x0024a008, 0x08100260, 0x00401410, 0x00000000, 0x08000000, 0x000a0008, 0x80010000, 0x00804428, + 0x00020080, 0x00800040, 0x000a2020, 0x00000000, 0x00040000, 0x00000880, 0x00000000, 0x084000c0, 0x10100000, 0x80004000, + 0x00001000, 0x00024022, 0x00800000, 0x00000808, 0x20648081, 0x40014000, 0x00000010, 0x00000080, 0x00482018, 0x00100040, + 0x00a10004, 0x10010000, 0x00020000, 0x00400000, 0x80c00000, 0x04001012, 0x20000000, 0x00046800, 0x1c000008, 0x00140402, + 0x00041400, 0x00000040, 0x0414000c, 0x0022c040, 0x00005024, 0x0000a0ca, 0x00830400, 0x01001014, 0x60014102, 0x00a20082, + 0x80103888, 0x10210011, 0x00400840, 0x40000005, 0x00200000, 0x08040010, 0x80408202, 0x00040006, 0x81801108, 0x04000030, + 0x202a0402, 0x00000010, 0x00000800, 0x20800404, 0x000a8002, 0x00000800, 0x13000080, 0x80088200, 0x40000000, 0x00004024, + 0x04100200, 0x20203003, 0x10020000, 0x08048080, 0x00400000, 0x00004028, 0x00000000, 0x08080802, 0x00206000, 0x20101800, + 0x08360080, 0x800000a0, 0x40090040, 0x00020030, 0x00000001, 0x9020e000, 0x20002000, 0x00000482, 0x40000010, 0x00400880, + 0x20300200, 0x00000800, 0x00000000, 0x10000000, 0x08064004, 0x00008320, 0x00002000, 0x00000502, 0x00147040, 0x06500084, + 0x00010801, 0x28200008, 0x00008c10, 0x00400400, 0x0011d041, 0x08010205, 0x00002028, 0x00088008, 0x00011040, 0x10940000, + 0x006404c8, 0x00200001, 0x00012000, 0x00101010, 0x90020002, 0x0000100c, 0x00098020, 0x00040000, 0x84821000, 0x40000000, + 0x60042000, 0x00101001, 0xc0008000, 0x000a8406, 0x00000478, 0x00010201, 0x0000000d, 0x00400000, 0x00088000, 0x00201040, + 0x00003800, 0x00040000, 0x00008002, 0x00080000, 0x04000008, 0x80800180, 0x00000000, 0x02400040, 0x04400440, 0x40000002, + 0x00000000, 0x00200220, 0x00000100, 0x22080810, 0x00100000, 0x00800090, 0x00082000, 0x00081408, 0x00000000, 0x08000000, + 0x20044000, 0x40000000, 0x80000000, 0x80020002, 0x00080004, 0x00008000, 0x00810201, 0x00000000, 0x0c000040, 0x04400400, + 0x02020080, 0x00100840, 0x08000800, 0x00000000, 0x02080280, 0x10100010, 0x00010000, 0x20042429, 0x04000008, 0x00001000, + 0x00000024, 0x400c2004, 0x00000000, 0x00910090, 0x80088000, 0x04040000, 0xd0001240, 0x80000000, 0x08000010, 0x2038092a, + 0x00040200, 0x00000010, 0x00107040, 0x42800040, 0x00400004, 0x0c0a080a, 0x40840880, 0x82000100, 0x20281600, 0x80001012, + 0x00420000, 0x50004468, 0x00002000, 0x04900108, 0x22208aa0, 0x44040000, 0x00480004, 0x90100000, 0x00008000, 0x80220000, + 0x08483012, 0x10000010, 0x20000001, 0x00844280, 0x06002000, 0x20410408, 0x400a8004, 0x40200002, 0x88040040, 0x00810200, + 0x02101881, 0x00000032, 0x004a0000, 0x24282000, 0x00010440, 0x0a004aa1, 0x00400000, 0x40040040, 0x14100410, 0x00201800, + 0x00080020, 0x00000080, 0x40140808, 0x82020200, 0x00000000, 0x06100200, 0x00080000, 0x04800420, 0x04080440, 0x00000000, + 0x00040100, 0x00000822, 0x00300000, 0xc0800090, 0x02503000, 0x00000200, 0x04042002, 0x00082004, 0x40000000, 0x20800000, + 0x0000000c, 0x00000000, 0x00040410, 0x00088000, 0x02000000, 0x00000008, 0x42100080, 0x80000201, 0x24410000, 0x00420000, + 0x00200000, 0x00000002, 0x00050060, 0x08200400, 0x10081000, 0x00020840, 0x00001000, 0x26402000, 0x00102000, 0x20000000, + 0x08090000, 0x40000000, 0x80000002, 0x10004000, 0x00100002, 0x20101440, 0x00004000, 0x08000900, 0x00200020, 0x00000054, + 0x10001400, 0x00400000, 0x00980018, 0x20000000, 0x80200088, 0x40087000, 0x00104100, 0x40000200, 0x0024800e, 0x80000002, + 0x04008440, 0x00820000, 0x02000311, 0x00040884, 0x10c02000, 0x00000000, 0x40009410, 0x24400040, 0x00210080, 0x00822880, + 0x00140024, 0x10000000, 0x40181404, 0x00000a18, 0x20002088, 0x00048000, 0x00094841, 0x40040000, 0x02100090, 0x88220826, + 0x20428000, 0x80000000, 0x00010203, 0x408d0280, 0x02000000, 0x44008403, 0x00100040, 0x00449000, 0x0c800c88, 0x08200000, + 0x00000000, 0x4c400040, 0x00000000, 0x00002008, 0x08221820, 0x00100100, 0x10000010, 0x20201000, 0x00082004, 0x24000000, + 0x02008208, 0x40000080, 0x82044004, 0x00000400, 0x00028100, 0x80000010, 0x00200022, 0x04400080, 0x22800300, 0x00000000, + 0x14040400, 0x00400048, 0x00200020, 0x00801800, 0x20200028, 0x4000a240, 0x00004010, 0x02000081, 0x10141000, 0x00088020, + 0x00000008, 0x20022410, 0x00000002, 0x80040004, 0x40200060, 0x92800c03, 0x08028000, 0x00005004, 0x06080840, 0x00040201, + 0x00810080, 0x00400008, 0x04000440, 0x00000001, 0x00000810, 0x04400000, 0x00180c64, 0x50001010, 0x02000800, 0x082a0020, + 0x00040000, 0xc0900018, 0x18003386, 0x00084002, 0x00002000, 0xa2020008, 0x04008000, 0x00040084, 0x40004100, 0x04c28600, + 0x00000000, 0x92000002, 0x00800020, 0x00000100, 0x220002c0, 0x00600840, 0x14100000, 0x000c1410, 0x00000020, 0x00000004, + 0x20200800, 0x004c3018, 0x10014000, 0x82108203, 0x40000000, 0x2008040c, 0x00002002, 0x80820004, 0x40108000, 0x10044040, + 0x00010000, 0x06000201, 0x98428082, 0x00200400, 0x00010890, 0x0280124d, 0x00000420, 0x08000000, 0x04400044, 0x10100000, + 0x68000004, 0x00008010, 0x80002000, 0x00000100, 0x00000300, 0x20000204, 0x02008002, 0x00800008, 0x04400000, 0x00200000, + 0x40004010, 0x80000c00, 0x00020002, 0x20201000, 0x00802000, 0x02001300, 0x00000420, 0x000c2008, 0x00000000, 0x80120000, + 0x00000020, 0xc0000000, 0x20800800, 0x00120002, 0x10000000, 0x00003000, 0xa2050081, 0x00800000, 0x00080008, 0x04000400, + 0x00000000, 0xc0020000, 0x00000040, 0x00010022, 0x0040a001, 0x00180000, 0x00000008, 0x14800000, 0x40402008, 0x00041810, + 0x00000042, 0x00000000, 0x28080000, 0x00000020, 0x20009081, 0x20000040, 0xc8200020, 0x08004800, 0x00000022, 0x00200050, + 0x80029100, 0x00000210, 0x00180028, 0x00000040, 0x0c0004a8, 0x50c84800, 0x00000000, 0x40100000, 0x00048812, 0x00021018, + 0x00000000, 0xa0800082, 0x50100184, 0x02042201, 0x04c00404, 0x60084002, 0x0404000a, 0x00608020, 0x08210000, 0x82000080, + 0x00902040, 0x00000010, 0x12020082, 0x0060082c, 0x20002000, 0x00400c00, 0x083d4078, 0x0c040800, 0x00200010, 0xc2021082, + 0x20000000, 0x00101000, 0x008b2227, 0x00050001, 0x22002288, 0x04420410, 0x000c0044, 0x00400400, 0x0c020800, 0x08a04800, + 0x08400400, 0x06800000, 0x00208002, 0x00000810, 0x08000020, 0x00100010, 0x00801000, 0x802008c0, 0x00400000, 0x02080040, + 0x00100008, 0x40060000, 0x00200000, 0x00080000, 0x00000000, 0x80021002, 0x00804000, 0x00d00000, 0x10080110, 0x22000280, + 0x00000000, 0x00600004, 0x04002008, 0x00028000, 0x08200000, 0x24000000, 0x10010288, 0x00000000, 0x00800011, 0x00400008, + 0x000c2000, 0x20001400, 0x00000002, 0x40040040, 0x00000008, 0x00000000, 0x10020012, 0x00011000, 0x00000280, 0x00000001, + 0x02090048, 0x00000400, 0x0c000000, 0x00416040, 0x40048020, 0x40046004, 0x16108c30, 0x00002000, 0x80228902, 0x20000000, + 0x00001108, 0x02900281, 0x00004834, 0x00008000, 0x44400440, 0x880c0808, 0x00000000, 0x002809a0, 0x42805200, 0x00000000, + 0x84141010, 0x10408042, 0x00000301, 0xa008000a, 0x00a0a420, 0x04000c40, 0x42844080, 0x12c00000, 0x00001800, 0x80008002, + 0x00580008, 0x60001000, 0x02830291, 0x00140004, 0x00082000, 0x04400400, 0x00000008, 0x00000004, 0x48218820, 0x80065080, + 0x00008000, 0x50141054, 0x860a0603, 0x02000080, 0xa0082000, 0x80650201, 0x08500000, 0x4005000c, 0x04000c20, 0x00000000, + 0x04004404, 0x00840002, 0x00280810, 0x80800000, 0x00021008, 0x00100000, 0x0a809313, 0x08000000, 0xc4000000, 0x006a0458, + 0x00000082, 0x00000100, 0x40384220, 0x00000811, 0xa0001000, 0x0004800a, 0x02404100, 0x14800000, 0x280a0208, 0x80200014, + 0x00420000, 0x04042444, 0x00020202, 0x10000000, 0x80820800, 0x00012002, 0x00000050, 0x40911001, 0x02280200, 0x00040088, + 0x04483400, 0x00200040, 0x48120201, 0x00244824, 0x00000012, 0x02020002, 0x80408000, 0x04044084, 0x00010000, 0xa20a8689, + 0x10002810, 0x00200000, 0x44404680, 0x80000022, 0x80001015, 0x02885210, 0x00220800, 0x00000000, 0x0608040e, 0x80300c00, + 0x00400110, 0x02204a00, 0x40329000, 0x00080088, 0x00109412, 0x04801000, 0x40004200, 0x08280848, 0x80080001, 0x0080a002, + 0x40584560, 0x84001000, 0x00000000, 0x8084a913, 0x30004200, 0x00000108, 0x00d0c204, 0x04081440, 0x00010100, 0x044ea448, + 0x00000890, 0x00144004, 0x82c10a82, 0x00001030, 0x88008800, 0x0052141b, 0x48083000, 0x00044090, 0x0e182a29, 0x40000004, + 0x80010400, 0x54566016, 0x00008000, 0x40000201, 0xa003a802, 0x0a000082, 0x04000408, 0x42090285, 0x00400080, 0x08800800, + 0x00800408, 0x80080810, 0x90200020, 0x40000a80, 0x2c102100, 0x00105200, 0x10200012, 0x02000480, 0x24082448, 0x00000010, + 0x80100010, 0x50044804, 0x10020008, 0x00c00003, 0x00009012, 0x00024200, 0x80000540, 0x40042284, 0x00928000, 0x32400828, + 0x54000406, 0x02480140, 0x00000000, 0x00288880, 0x00000050, 0x24104220, 0x42100090, 0x00000040, 0x10021004, 0x0008000a, + 0x00110010, 0xa4002820, 0x00004804, 0x40090008, 0x108e2200, 0x00409000, 0x40064007, 0x84000000, 0x02012280, 0x00028045, + 0x00808820, 0x084a0400, 0x04000000, 0x00204240, 0x08310020, 0x00c04840, 0x02200412, 0x08001820, 0x02308082, 0x00000040, + 0x2002201c, 0x10300100, 0x080c1280, 0x00084000, 0x20a02450, 0x44028018, 0xc0440006, 0x00804808, 0x00100180, 0x00500208, + 0x8a024002, 0x40008000, 0x00800448, 0x940aa301, 0x42001880, 0x04100040, 0x32a01480, 0x40408024, 0x00000010, 0x00000860, + 0x02280080, 0x00022002, 0x1210021d, 0x24041000, 0x00006000, 0x64590010, 0x0080000a, 0xc0010040, 0x0088880c, 0x00066000, + 0x00000080, 0xa2004000, 0x00029243, 0x16400480, 0x8085e208, 0x00100001, 0x00000872, 0x04650004, 0x18000401, 0x28000200, + 0x06408040, 0x00801610, 0x08108808, 0x04200000, 0x10c00022, 0x44002110, 0x10900400, 0x200c5820, 0x00080000, 0x00400200, + 0x30022808, 0x40048000, 0x00004010, 0x8a080044, 0xa00001c0, 0x00020812, 0x10008000, 0x02c00004, 0x00020708, 0x84000880, + 0x00405040, 0x008024a0, 0x04200016, 0x80140181, 0x04020822, 0x10602000, 0x10081200, 0x20110450, 0x00000088, 0x64002400, + 0x00081000, 0x0014000e, 0x08011804, 0x40008000, 0x22065001, 0x80000002, 0x40100084, 0x40e2c200, 0x00a800c9, 0x00011200, + 0x16002404, 0x08000004, 0x12519860, 0x84020412, 0x8000c000, 0x80002000, 0x04420c10, 0x08000900, 0x80600000, 0x50101020, + 0x10081000, 0x08100810, 0x00820202, 0x00082008, 0x20100010, 0x08000000, 0x40044004, 0x20000400, 0x84000000, 0x80020002, + 0x00000100, 0x0000ab00, 0x12100281, 0x00020002, 0x00840040, 0x00408400, 0x40002000, 0x04040840, 0x10800020, 0x20200800, + 0x04081412, 0x00101000, 0x00020000, 0x10002810, 0x00002008, 0x00281001, 0x70020820, 0x40000000, 0x10040044, 0x08218000, + 0x80080048, 0x00028802, 0x00080000, 0x02810080, 0x00029203, 0x40100008, 0x04008400, 0x00080040, 0x00e00080, 0x00010020, + 0x04400040, 0x00080080, 0x00000000, 0x48000424, 0x8030c800, 0x40100200, 0x18081800, 0x00000010, 0x20000000, 0x00000018, + 0x001c2060, 0x80400002, 0x20080004, 0x40045000, 0x00008000, 0x00040002, 0x941e5000, 0x00800100, 0x00020282, 0x02020004, + 0x04000000, 0x004c4444, 0x00020010, 0x00208800, 0xd0000420, 0x00900040, 0x10002000, 0x00141092, 0x48000000, 0x20010401, + 0x00002000, 0x00080218, 0x00040040, 0x40424000, 0x00000014, 0x00008000, 0x00200000, 0x80060012, 0x00300800, 0x80820082, + 0x82430201, 0x00400040, 0x04001680, 0x20000004, 0x00004800, 0x00001408, 0x0000a2c6, 0x00200020, 0x00140800, 0x18000402, + 0x00000010, 0x28000000, 0x50183000, 0x00800080, 0x20086300, 0x00528408, 0x00000002, 0x640c4200, 0xa0000085, 0x02800400, + 0x80068020, 0x04000042, 0x00400801, 0x12820102, 0x40000284, 0x00000040, 0x14200000, 0x40484630, 0x00001000, 0x00042000, + 0x00a00ca0, 0x20000010, 0x10000000, 0x001a9048, 0x00080004, 0x60850008, 0x10302042, 0x00028004, 0x00000480, 0xc2444000, + 0x00930042, 0x80200200, 0x6004ac00, 0x08000201, 0x82018802, 0x00c00080, 0x00001000, 0x30690280, 0x06800440, 0x08200000, + 0x00420000, 0x40244014, 0x08b01020, 0x00000080, 0x80c08842, 0x10101000, 0x00000550, 0x02240a80, 0x008a2000, 0x00000800, + 0x74401018, 0x40840044, 0x00000010, 0x00205c00, 0x80028002, 0x00000080, 0x00101110, 0x12002280, 0x08000000, 0x20880008, + 0x14400040, 0x80028000, 0x40a04480, 0x00200034, 0x00000800, 0x80008042, 0x00540018, 0x20002000, 0x128112a1, 0x00000008, + 0x20000000, 0x00482400, 0x00000004, 0x10040000, 0x48200040, 0x8000a000, 0x00030083, 0x10105234, 0x02010480, 0x00240241, + 0x0088e000, 0x80400442, 0x04004028, 0x48040a84, 0x18011820, 0x00500010, 0x44044c40, 0x00200820, 0x0100000e, 0x8a021000, + 0x00189210, 0x50004100, 0x02000021, 0x8c08048a, 0x00808040, 0x28002000, 0x00440104, 0x10804800, 0x40000021, 0x0028a002, + 0x90400008, 0x00021200, 0x40100380, 0x02004010, 0x0480a448, 0xa45a0440, 0x00000012, 0x40000800, 0x02230902, 0x0001022c, + 0x80041000, 0x40009010, 0x10504000, 0x008d2080, 0x08080a41, 0x80020802, 0x2600201c, 0x40441005, 0x00010200, 0x00008428, + 0x80180000, 0x0c008c02, 0x12221080, 0x02880099, 0x48000a04, 0x20410000, 0x04004400, 0x80520040, 0x00042004, 0x40000000, + 0x04000440, 0xc0041004, 0x00104110, 0x08200822, 0x80028208, 0x00000000, 0x00181100, 0x14404291, 0x00000400, 0x60082008, + 0x86c08040, 0x00004000, 0x40040102, 0x00300a25, 0x00000000, 0x0082a000, 0x94401052, 0x00840001, 0x00000580, 0x02180a0a, + 0x00000000, 0x04400444, 0x60041010, 0x00020000, 0x02300000, 0x00008828, 0x10080000, 0x00003010, 0xc2914000, 0x20000280, + 0x080c200c, 0x84008403, 0x00000040, 0x40021004, 0x08440a21, 0x00020000, 0x02010088, 0x94709412, 0x00000200, 0x02810080, + 0x28002801, 0x00020008, 0x00080400, 0x04548045, 0x00205000, 0x00400000, 0xe4105400, 0x04400450, 0x00000800, 0x88ac822e, + 0x08200820, 0x10101100, 0x40c24611, 0x30103010, 0x00080000, 0x8650844a, 0x200c200c, 0x00100100, 0x40804a00, 0x40064004, + 0x80000000, 0x04509452, 0x82028102, 0x00000200, 0x0080098c, 0x02800280, 0x00000040, 0x445e5410, 0x04400440, 0x00000800, + 0x8023802e, 0x0c280820, 0x10003050, 0x40144201, 0x10181010, 0x20002004, 0x8e41848a, 0x200a200c, 0x40000000, 0x08044a01, + 0x40074004, 0x02008080, 0x84501422, 0x82038082, 0x00000000, 0x088c2a01, 0x02810281, 0x00000042, 0x84545404, 0x044004e0, + 0x20000002, 0x04021240, 0x20400080, 0x00004000, 0x02000088, 0x00818420, 0x08080000, 0x04000002, 0x08000050, 0x00000800, + 0x18008080, 0x20262000, 0x00401002, 0x0000c240, 0x00080010, 0x28008a01, 0x80000c00, 0x40000008, 0x00004000, 0x01800801, + 0x08000082, 0x00000820, 0x00200008, 0x04018005, 0x00044040, 0x00002080, 0x22000040, 0xa0000030, 0x04000020, 0x5000d1c1, + 0x00800104, 0x04103000, 0x8e088020, 0x80003000, 0x10040001, 0x02000004, 0x000a0410, 0x00000008, 0x28006600, 0x00010004, + 0x00000a00, 0x00810000, 0x00002400, 0x00000000, 0x00420040, 0x02280204, 0x50000000, 0x00802400, 0x04040002, 0x245a2010, + 0x00000080, 0x00002848, 0xb1004010, 0x04221284, 0x10000000, 0x00800010, 0x0c001400, 0x01040068, 0x22020009, 0x00000000, + 0x002020a0, 0x0cc00064, 0x20124000, 0x00018050, 0x00120000, 0xa0000120, 0x00080040, 0x02000080, 0x40800010, 0x00000021, + 0x00000800, 0x00400000, 0x008a8000, 0x00002000, 0x0a200000, 0x00310008, 0x11840002, 0x000200c0, 0x00500004, 0x0029c100, + 0x50402028, 0x08004002, 0x200400c1, 0x00408020, 0x10820000, 0x1040c012, 0x20300080, 0x40001200, 0x10020020, 0xa0108000, + 0x00000000, 0x00000020, 0x00028008, 0x08001000, 0x00200044, 0x40004000, 0x00200002, 0x00001000, 0x00408100, 0x02190100, + 0x02000024, 0x40000003, 0x80000100, 0x44000490, 0x80150004, 0x00010000, 0x00040000, 0x00000000, 0x04480000, 0x42000010, + 0x0004620c, 0x02000400, 0x80108000, 0x08080000, 0x10001010, 0x00900000, 0x00244012, 0x00001009, 0x80400000, 0x0000060a, + 0x00000000, 0x40000831, 0x00200400, 0x20020002, 0x04000010, 0x00000280, 0x00110000, 0x00002004, 0x00000002, 0x84000000, + 0xc0020060, 0x00000001, 0x0a044000, 0x00808041, 0x00000024, 0x92824204, 0x40040000, 0x0820000a, 0x26c00000, 0x80020800, + 0x10002000, 0x4d600000, 0x02800000, 0x20008000, 0x88300200, 0x04400100, 0x40040800, 0x32180442, 0x08200000, 0x80020000, + 0x640c2000, 0x11100020, 0x02800000, 0xc8060009, 0x20080000, 0x04400000, 0x02820000, 0x40040000, 0x08200000, 0x20c10000, + 0x80000000, 0x0000a000, 0x4c600000, 0x02812000, 0x20088000, 0x98300000, 0x04400084, 0x40040200, 0x22180020, 0x08204000, + 0x80020000, 0x440c0000, 0x10100040, 0x02800006, 0xc8060000, 0x20080000, 0x00001800, 0x92938000, 0x40040001, 0x08201010, + 0x00000000, 0x00002000, 0x40000100, 0x00208004, 0x00000004, 0x000a0422, 0x80880000, 0x00005000, 0x00401004, 0x100000c8, + 0x00018002, 0x00020009, 0x00008000, 0x00002101, 0x00010008, 0x00900810, 0x00008242, 0x00002800, 0x00000000, 0x00408040, + 0x08000810, 0x20000240, 0x00000001, 0xa0400180, 0x4000080e, 0x00080000, 0x00020400, 0x00000080, 0x00000000, 0x04000026, + 0x00110400, 0x00032008, 0x00000010, 0x18202245, 0x00000000, 0x00002000, 0x000400a0, 0x80000012, 0x00420020, 0x00402000, + 0x00000011, 0x10200020, 0x00204401, 0x80002000, 0x20000000, 0x20000c80, 0x08240060, 0xb18200c0, 0x00000000, 0x00040080, + 0x00400800, 0x40418000, 0x2900002a, 0x00210000, 0x00804804, 0x80080020, 0x08081000, 0x40400200, 0x00144004, 0x040c0004, + 0x02200081, 0x00204000, 0x04400012, 0x00080200, 0x00000020, 0x00060005, 0x00002428, 0x00408808, 0x00000040, 0x00220200, + 0x40008030, 0x85000201, 0x00810826, 0x00000010, 0x82400050, 0x00080000, 0x0a000800, 0x00408002, 0x00021003, 0x40c40000, + 0x08304c04, 0x00801001, 0x00008000, 0x30000800, 0x081080c0, 0x00040100, 0x00000082, 0x00840024, 0x00400800, 0x00040000, + 0x00000000, 0x00440000, 0x00408002, 0x00080000, 0x08800040, 0x38004200, 0x00000010, 0x00020004, 0x80040442, 0x42200000, + 0x00040000, 0x00200820, 0x00800000, 0x00000000, 0x60820010, 0x00410000, 0x800a0000, 0x48020000, 0x60900000, 0x80050002, + 0x00b12004, 0x08284008, 0x00000000, 0x01118002, 0x009c0000, 0x00040040, 0x20400081, 0x22081000, 0x0c000000, 0x40000400, + 0x00024200, 0x00100006, 0x00080800, 0x00000061, 0x20100008, 0x00011410, 0x00010000, 0x00060000, 0x00200000, 0x0c010000, + 0x80808000, 0x00022000, 0x40000000, 0x00000080, 0x80118006, 0x00002040, 0x10000004, 0x00020020, 0x00000000, 0x0000f248, + 0x02904010, 0x80000000, 0x40000280, 0x00400408, 0x00000004, 0x04008000, 0x08000800, 0x00000040, 0x00004094, 0x00001200, + 0x00300000, 0x00006442, 0x00480008, 0x00000000, 0x00000820, 0x08040040, 0x20002000, 0x40a08010, 0x80080020, 0x00024004, + 0x00000008, 0x22011212, 0x1000c001, 0x00e02004, 0x00040440, 0x00000008, 0x00000802, 0x08000020, 0x00020001, 0x0008c084, + 0x00000200, 0x00300800, 0x04001402, 0x20000268, 0x00000000, 0x08000801, 0x40040044, 0x00000000, 0x00a01400, 0x80020010, + 0x00008008, 0x54400080, 0x80060000, 0x00200004, 0x22080000, 0x40000000, 0x00100080, 0x12404008, 0x20000020, 0x00ce0008, + 0x10200202, 0x08000800, 0x00040000, 0xc0800040, 0x12120020, 0x00000008, 0x00400000, 0x26000240, 0x00804020, 0x08042000, + 0x04008000, 0x00000010, 0x00500000, 0x00060000, 0x40004000, 0x88e80044, 0x12004280, 0x00100008, 0x20018001, 0x00040000, + 0x40400440, 0x88080000, 0x04a20004, 0x40000000, 0x0a150000, 0x00108009, 0x80020420, 0x04042200, 0x02080000, 0x00010001, + 0x00000040, 0x1004a010, 0x0040c000, 0xec200000, 0x00000000, 0x40000040, 0x00000824, 0x81200100, 0x00000808, 0x00000020, + 0x00080000, 0x40800040, 0x00001000, 0x04080008, 0x020428a0, 0x08001004, 0x00044000, 0x48400004, 0x0290a062, 0x00008000, + 0x000a0402, 0x04100200, 0x20800080, 0x40080800, 0x00000240, 0xc0200400, 0x00000040, 0x02002020, 0x00130900, 0x00000028, + 0x00040010, 0x80880010, 0x00000400, 0x02040080, 0x84280024, 0x00020008, 0x20002051, 0x00100004, 0x00204280, 0x00008022, + 0x10000000, 0x00018040, 0x40520807, 0x24000081, 0x00000024, 0x00004610, 0x08100400, 0x00000000, 0x00002844, 0x00030800, + 0x14002404, 0x00600040, 0x00841000, 0x00200020, 0x88c00802, 0x00005000, 0x10002000, 0x202e0000, 0x00020000, 0x80088042, + 0x60002008, 0x00000080, 0x00000400, 0x40044004, 0x08000002, 0x20128000, 0x82800004, 0x00000000, 0x08800280, 0x02000000, + 0x00100808, 0x84402000, 0x00000440, 0x0800c000, 0x20000800, 0x02002020, 0x00100000, 0x40030000, 0x00080015, 0x08082000, + 0x20000000, 0x00044008, 0x00044080, 0x04000004, 0xc0020050, 0x80008402, 0x00000000, 0x22030020, 0x10100200, 0x00200010, + 0x02871081, 0x04002044, 0x00060400, 0x20000080, 0x00000000, 0x00001000, 0x00082400, 0x00200020, 0x08002004, 0x40080a08, + 0x00800004, 0x00001000, 0x10000000, 0x20086000, 0x00020008, 0x04040002, 0x40008004, 0x88044000, 0x20000200, 0x020000c0, + 0x80000022, 0x00d28000, 0x02800c00, 0x00004200, 0x00000080, 0x00404000, 0x00000020, 0x0c10044c, 0x00000010, 0x08040200, + 0x00020820, 0x00000000, 0x04000000, 0x20186018, 0xa0040000, 0x00002006, 0x00880008, 0x00008210, 0x40040000, 0x0000400c, + 0x02030080, 0x80000002, 0x00008040, 0x02900200, 0x04010001, 0x00000084, 0x00201060, 0x04000000, 0x00000c10, 0x08200020, + 0x00401000, 0x040c0000, 0x0820c000, 0x20002000, 0x90000408, 0x40040010, 0x02084000, 0x10000020, 0x00000000, 0x20820404, + 0x800802c0, 0x00048200, 0x44000000, 0x00000000, 0x80000090, 0x0ac00000, 0x00020800, 0x08000004, 0x00000000, 0x06800040, + 0x04000000, 0x60040002, 0x00400821, 0x0000010a, 0x02022004, 0x081080d0, 0x00001080, 0x20540000, 0x00084001, 0x00000000, + 0x00010000, 0x64080204, 0x40020062, 0x02010000, 0x90040201, 0x00001000, 0x04220000, 0x80800080, 0x00010000, 0x02804010, + 0x00000040, 0x00000010, 0x00200002, 0x1c002820, 0x00101000, 0x00080046, 0x0000c820, 0x90008002, 0x00000000, 0x00080028, + 0x22140010, 0x00000000, 0x00000000, 0x00000040, 0x00020080, 0x0400400c, 0x80004824, 0x08400000, 0x00108002, 0x00202000, + 0x00102000, 0x00000202, 0x00400018, 0x04000000, 0x60008440, 0x400c0002, 0x08000004, 0x000080e0, 0x20034002, 0x00000000, + 0x00000030, 0x12001090, 0x00010200, 0x00000440, 0x40000040, 0x08040000, 0x0400000c, 0x00000800, 0x00201404, 0x0000c002, + 0x06000030, 0x08000002, 0x00902085, 0x28005000, 0x00000200, 0x00248001, 0x40000000, 0x80000000, 0x00000cc0, 0x00100001, + 0x20400000, 0x04862080, 0x41200028, 0x80004000, 0x10080010, 0x00020200, 0x10100002, 0x24800440, 0x28200408, 0x00400000, + 0x400c0000, 0x10000000, 0x44000004, 0x00064010, 0x00100000, 0x20020002, 0x02800010, 0x00800000, 0x20000000, 0x02460000, + 0x04000040, 0x40440000, 0x08920000, 0x8800002a, 0x00804000, 0x00601000, 0x12010200, 0x00000000, 0x40380010, 0x00800408, + 0x04000000, 0x002c0020, 0x40304004, 0x00000000, 0x800c0060, 0x00001012, 0x08100000, 0xc0070801, 0x12000001, 0x40000000, + 0x00030222, 0x00042040, 0x20000400, 0x0c400000, 0x00000026, 0x04001044, 0x00000400, 0x00080000, 0x00008002, 0x04700820, + 0x50000000, 0x00000210, 0x00002008, 0x00800080, 0x240a044c, 0x00244800, 0x00408002, 0x00040820, 0x40002204, 0x00020000, + 0x00001014, 0x0880c082, 0x00000000, 0x02102008, 0x00808240, 0x00400020, 0x00080404, 0x44000a40, 0x80004800, 0x0830a002, + 0x10000028, 0x00010000, 0x00101281, 0x02000034, 0x00000000, 0x00080448, 0x40004000, 0x00200002, 0x44060820, 0x8000a004, + 0x00020000, 0x80001015, 0x0001c402, 0x20000280, 0x12010028, 0x80400801, 0x04000004, 0x00404041, 0x00870400, 0x00301010, + 0x404c0404, 0x02000000, 0x10000000, 0x80024820, 0x00e00000, 0x10180002, 0x0a808aa0, 0x20040400, 0x00000028, 0x44000020, + 0xa00a0006, 0x08840000, 0x20000444, 0x40000008, 0x80000022, 0x10028000, 0x0000000c, 0x08000000, 0xa4082210, 0x42d00000, + 0x00000448, 0x40044204, 0x82000080, 0x20100000, 0x88020820, 0x00000002, 0x00000000, 0x52910014, 0x00000001, 0x20000008, + 0x04000680, 0x800c0010, 0x40000046, 0x08200800, 0x00170000, 0x02820220, 0x50108002, 0x84000400, 0x00000005, 0x200862a0, + 0x82010000, 0x08200040, 0x40004405, 0x90100080, 0x00000020, 0x00040286, 0x20080040, 0x10804aa0, 0xc0608640, 0x20180010, + 0x02000004, 0x50820822, 0x00040888, 0x20088002, 0x04000640, 0x00200008, 0x00020204, 0x4a240828, 0x00000000, 0x000a8000, + 0xc0500056, 0x40002000, 0x20800a00, 0x0200802a, 0x08200400, 0x80080000, 0x40048250, 0x00802400, 0x08000021, 0x80880444, + 0x00515801, 0x00100050, 0x000308a2, 0x4a24000c, 0x00008002, 0x24480411, 0x00200a08, 0x80040080, 0x48200a4c, 0x00010001, + 0x22008402, 0x90063004, 0x00500000, 0x02010800, 0x00208003, 0x400002d0, 0x00000400, 0x00021297, 0x28000060, 0x00204801, + 0x40040080, 0x90401800, 0x00200800, 0x20480460, 0x0000e048, 0x00040000, 0x00a00802, 0x90605004, 0x80002400, 0x36480008, + 0x40000000, 0x40000806, 0x28884000, 0x020602a0, 0x00008000, 0x40140004, 0x80020042, 0x020002a8, 0x808a8410, 0x00042002, + 0x00000450, 0x42800000, 0x08024002, 0x00080820, 0x80040048, 0x38102002, 0x40000290, 0x08040c20, 0x00504000, 0x00090048, + 0x86120011, 0x20002420, 0x00104022, 0x2a4d0008, 0x40000204, 0x80008000, 0x40240007, 0x20020000, 0x10000280, 0xa2030043, + 0x0000a002, 0x00120474, 0x02050081, 0x4020ca00, 0x00000820, 0x102004e0, 0x6040800a, 0x88000000, 0x00201c68, 0x00000010, + 0x14004000, 0x08021800, 0x20002000, 0x00080044, 0x70002088, 0x80000400, 0x48040000, 0x200000a6, 0x00c0c000, 0x00000000, + 0x00080412, 0x84068200, 0x22000040, 0x00808280, 0x00000000, 0x44002820, 0x0000044c, 0x00440002, 0x00100012, 0x00400060, + 0x08000800, 0x04124008, 0x00008a30, 0x40012400, 0x000c0004, 0x0200a019, 0x28000020, 0x40000000, 0x04044409, 0x000000b6, + 0x80a38000, 0x40001416, 0x44040200, 0x22800060, 0x80000205, 0x08210080, 0x00002800, 0x000000c1, 0x14000400, 0x08000000, + 0x04000c40, 0x00004000, 0x0020a000, 0x48000822, 0x12100000, 0x200a1240, 0x10000448, 0x00800084, 0x60044020, 0x12000448, + 0x004aa000, 0x84004024, 0x40000002, 0x00040200, 0x0082009a, 0xa4000804, 0x0200a400, 0x02400000, 0x80900248, 0x000c60a2, + 0x00400800, 0x0c000440, 0x40120014, 0x00048001, 0x00c20020, 0x18085e00, 0x22000000, 0x00102019, 0x80000000, 0xe0012400, + 0x00044048, 0x000a0006, 0x00000800, 0x40108021, 0x0a244004, 0x00039090, 0x00800002, 0x80004040, 0x16000401, 0x88a10200, + 0x80068080, 0x40000800, 0x24008060, 0x80102484, 0x10246002, 0x00400008, 0x00024400, 0x08200820, 0x00020000, 0x20008480, + 0x02000002, 0x1ca83000, 0x48240008, 0x00002000, 0x20000200, 0x00080808, 0x02000004, 0x60000400, 0x80044000, 0x80028000, + 0x00900002, 0x40040000, 0x04004204, 0x00020082, 0x0a800018, 0x00402040, 0x06140404, 0x02800800, 0x80000820, 0x00000000, + 0x0848d080, 0x00000010, 0x42010000, 0x24100808, 0x00804008, 0x00002802, 0x202e0000, 0xc0040014, 0x00204000, 0x02000000, + 0x00038002, 0x40002000, 0xc0000200, 0x00010084, 0x40800203, 0x06200440, 0x04000440, 0x12042001, 0x40800020, 0x88000020, + 0x80000404, 0x04a440d0, 0x03208800, 0x00400020, 0x08800000, 0x00001200, 0x00600030, 0x1008000a, 0x20080000, 0x00802008, + 0x00600000, 0x40040a00, 0x04004000, 0xa0002004, 0x80080000, 0x00000020, 0x080a8002, 0x02880090, 0x40020242, 0x08000004, + 0x04420018, 0x02000040, 0x4000d4a0, 0x00010002, 0x00408820, 0x08110040, 0x00001000, 0x00100080, 0x20000070, 0x28000400, + 0x08010008, 0x00082004, 0x40044800, 0x00000000, 0x0002a224, 0x08020000, 0x00048002, 0x82100010, 0x00800000, 0x02010003, + 0x000022c2, 0x04000000, 0x40830441, 0x00204010, 0x00200004, 0x04041040, 0x40708000, 0x08004000, 0x80202008, 0x204008a4, + 0x10004010, 0x00180022, 0x02001220, 0x00008008, 0x200c0010, 0x088020c6, 0x00804000, 0x40020004, 0x02040000, 0x08000402, + 0x40028880, 0x80000000, 0x04000000, 0x02088802, 0x00800280, 0x00000400, 0x62000000, 0x14400048, 0x08000010, 0x00004000, + 0x02000820, 0x00105000, 0x90000014, 0x00282220, 0x0008a000, 0x00101080, 0x2000000a, 0x00000000, 0x00040404, 0x62004210, + 0x80000000, 0x00100080, 0x00068063, 0x02011201, 0x00000092, 0x0080c420, 0x00000c00, 0x04810000, 0x000080d0, 0x00040800, + 0x00604020, 0x000000d0, 0x40020828, 0x08040000, 0x24a08006, 0x00080000, 0x10301000, 0x00040080, 0x00006000, 0x00100014, + 0x60080648, 0x00000000, 0x80040000, 0x42004824, 0x08420000, 0xc0000002, 0x40808010, 0x00002000, 0x00820280, 0x261a0048, + 0x00000400, 0x0e400020, 0x020050c0, 0x00100019, 0x08000000, 0x24008aa0, 0x50080000, 0x00004040, 0x80500695, 0x00802008, + 0x30081000, 0x00260c42, 0x00004010, 0x40000000, 0x86840825, 0x08018000, 0x80022000, 0x00001002, 0x14002200, 0x00800041, + 0x0a130080, 0x00000460, 0x00800000, 0x04200000, 0x18004800, 0x80020048, 0x40942404, 0x08204020, 0x30000000, 0x80428808, + 0x10001002, 0x00000004, 0x02000c00, 0x20280200, 0x0010a89a, 0x00020040, 0x40440400, 0x00004204, 0x04002828, 0x84808000, + 0x0000244a, 0x00021014, 0x02840280, 0x00106020, 0x60488008, 0x40400440, 0x00008010, 0x1c040a04, 0x08000820, 0x00000008, + 0x8002c400, 0x00400016, 0x00100000, 0x02810080, 0x60080200, 0x1000b029, 0x04000002, 0x00100444, 0x40064001, 0x08000000, + 0x8222a000, 0x00000c60, 0x00140296, 0x12801280, 0x04010821, 0x2020000e, 0x04100400, 0x80001050, 0x40002200, 0x08240000, + 0x00400400, 0x00140012, 0x2a204006, 0x00080800, 0x50008020, 0x10040018, 0x44420080, 0x80801044, 0x08400208, 0x28120030, + 0x0608a442, 0x48004004, 0x02840000, 0x80000820, 0x00000002, 0x80088200, 0x10120450, 0x02800000, 0x00040000, 0x08002aae, + 0x04480000, 0x80120442, 0x61051014, 0x0008c000, 0x08800820, 0x02000048, 0x80010000, 0x00941010, 0x2c020280, 0x00280000, + 0xb0001004, 0x4600244a, 0x48040000, 0x02018004, 0x00324a80, 0x80020000, 0x20008003, 0x00001460, 0x00800010, 0x52310080, + 0x00040a29, 0xa0002000, 0x04000400, 0x40125051, 0x08050024, 0x00000040, 0x14500414, 0x00000440, 0x08000000, 0xe2248822, + 0x00181820, 0x00020008, 0x10000a04, 0x00401000, 0x403c2018, 0xa68084c2, 0x00002008, 0x40020000, 0x02044a24, 0x080a400c, + 0x00800000, 0x90009452, 0x00008082, 0x02800000, 0x20188a28, 0x08000280, 0x04002000, 0x50440454, 0x00001440, 0x00100800, + 0x880280aa, 0x30100820, 0x00880000, 0x02040295, 0x00002010, 0x50091008, 0xa4008440, 0x0002200a, 0x00004000, 0x4a050aa5, + 0x00004004, 0x80020000, 0x50209452, 0x00018002, 0x00104200, 0x22a808a9, 0x00000281, 0x00002440, 0x44001090, 0x00140440, + 0x00408082, 0x54140808, 0x0c400004, 0x00200000, 0xa002008c, 0x08200021, 0x00086000, 0x52840040, 0x10080000, 0x00100002, + 0xa0020082, 0x20080400, 0x00000000, 0x46840300, 0x60042414, 0x80080008, 0x10020840, 0x80020000, 0x00000210, 0x22880004, + 0x0e800280, 0x00008000, 0x10440012, 0x04408402, 0x00100000, 0xe80a0028, 0x08600040, 0x00102808, 0x02050804, 0x08100410, + 0x70000000, 0x808a0004, 0x60080a08, 0x00000000, 0x06258480, 0x40040000, 0x00020041, 0x80100004, 0x80820012, 0x02000040, + 0x302d0500, 0x86818801, 0x80000020, 0x40149040, 0x04400002, 0x08005008, 0x00022600, 0x20000000, 0x10045000, 0x00002000, + 0x40480000, 0xa0080c00, 0x04c04200, 0x42208180, 0x50000000, 0x20028100, 0x00800801, 0x820000a0, 0x00400000, 0x02040000, + 0x00210000, 0x00000020, 0x40404000, 0x000a0000, 0x00040802, 0x00810100, 0x00000004, 0x04100008, 0x084e0200, 0x00000004, + 0x00880011, 0x0c204000, 0x40180411, 0x00000000, 0x00200020, 0x00800248, 0x00004013, 0x4a000000, 0x00400430, 0x00110200, + 0x01000000, 0x10024000, 0x08804000, 0x00460040, 0x00102080, 0x00000030, 0x46002204, 0x00204880, 0x00110002, 0x00000000, + 0x00040000, 0x10480000, 0x03808002, 0x40020000, 0x20040040, 0x04000080, 0x00000008, 0x88800000, 0x04010040, 0x00201404, + 0x00002000, 0x20000048, 0x08402002, 0x00014000, 0x40020061, 0x88000801, 0x08a00000, 0x04148402, 0x20800400, 0x8c004000, + 0x00020028, 0x02280400, 0x00000800, 0x40010000, 0x00000000, 0x00202800, 0x80048000, 0x00c00020, 0x04000040, 0xc5004082, + 0x02090000, 0x01100880, 0x0080a040, 0x24000006, 0x22002000, 0x08040001, 0x40200090, 0x22200800, 0x20000000, 0xc0008000, + 0x00001000, 0x18140000, 0x00010000, 0x10800000, 0x00404420, 0x02084000, 0x00000840, 0x00200000, 0x80004400, 0x0a004004, + 0x00002200, 0x12031808, 0x01020000, 0x00049000, 0x00000000, 0x00040001, 0x04210000, 0x01080020, 0x00080040, 0x00000080, + 0x00000000, 0x00000200, 0x80000000, 0x00000008, 0x00000000, 0x2434c020, 0x00000004, 0x0080a040, 0x00004050, 0x00100004, + 0x02005040, 0x20020881, 0x00001008, 0x00020000, 0x00100000, 0x20400000, 0x80200001, 0x00000028, 0x00280000, 0x84065400, + 0x00d00014, 0x80010000, 0x00000200, 0x00000000, 0x10000400, 0x02020001, 0x20004010, 0x08c00804, 0x00000000, 0x00201001, + 0x00080004, 0x08880020, 0x60022144, 0x000088a2, 0x00000200, 0x00018000, 0x00000022, 0x00104030, 0xc0000000, 0x001004e0, + 0x01806080, 0x0000020a, 0x00222000, 0x00c14209, 0x04000000, 0x01100020, 0x00004000, 0xa0008010, 0x00400001, 0x00810008, + 0x00202200, 0x20000020, 0x20100000, 0x00060001, 0x50000400, 0x08200810, 0x00000008, 0x00080004, 0x80126010, 0x00018002, + 0x00001054, 0x10013800, 0x80000040, 0x04040c02, 0x80000011, 0x00800208, 0x00000003, 0x00000804, 0x28100000, 0x0080a012, + 0x000110a0, 0x10040002, 0x0000a080, 0x00000000, 0x00804010, 0x00000008, 0x80400400, 0x00001000, 0x10000010, 0x01000040, + 0x0e080400, 0x80000000, 0x35040406, 0x00632000, 0x00000009, 0x24000800, 0x30018010, 0x00080444, 0x40103000, 0x08000816, + 0x00004003, 0x00208804, 0x00002040, 0x08120446, 0x00000080, 0x00080801, 0x00000c10, 0x00000008, 0x00000100, 0x00000202, + 0x00028000, 0x25602004, 0x80800220, 0x40000c00, 0x00500000, 0x40004400, 0x20080010, 0x08820002, 0x402a8000, 0x01092004, + 0x10204000, 0x24000040, 0x10240020, 0x40000040, 0x04040000, 0x00128004, 0x80000001, 0x00220000, 0x005020c0, 0x00000000, + 0x00202000, 0x04000880, 0x84408002, 0x00340000, 0x00000000, 0x60440200, 0x00820080, 0x00400000, 0x18080440, 0x40a40000, + 0x00081000, 0x80000800, 0x00400020, 0x10088000, 0xa0040010, 0x82a10000, 0x00000000, 0x08482020, 0x00001008, 0xc0144000, + 0x00810004, 0x88200000, 0x40880080, 0x0001000a, 0x00100000, 0x40800000, 0x08018201, 0x10000000, 0x00600060, 0x10000400, + 0x06040044, 0x00308000, 0x20000800, 0x00400020, 0x04000000, 0x08441000, 0x40110000, 0x80824000, 0x80422008, 0x00000000, + 0x00000000, 0x02810020, 0xc0000000, 0x00000000, 0x00028002, 0x20000004, 0x00180010, 0x80060000, 0x00004020, 0x00803800, + 0x0208100a, 0x00000000, 0x00808204, 0x84400080, 0x00006000, 0x00121000, 0x00204060, 0x00000002, 0x02008a00, 0x00900082, + 0x08000000, 0x440c9448, 0x28082888, 0x10000000, 0x00020000, 0x40040000, 0x00000040, 0x00000030, 0xa00a4800, 0x10000004, + 0x0000a022, 0x00840000, 0x00000008, 0x08000040, 0x02000204, 0x00000081, 0x00400018, 0x080040e0, 0x00020002, 0x0210920c, + 0x10100011, 0x00001802, 0x00288400, 0x20082061, 0x08000000, 0x00404800, 0x00001004, 0x00000040, 0x10100010, 0x80004000, + 0x10400000, 0x841480c0, 0x20023100, 0x00004080, 0x08200200, 0x40800200, 0x00001010, 0x00180000, 0x02068402, 0x04080020, + 0x10600010, 0x08000800, 0x00041044, 0x92000000, 0x90101000, 0x00020000, 0x44884020, 0x00600018, 0x20000044, 0x0a820000, + 0x00000026, 0x00400000, 0x14148000, 0x40208022, 0x00004000, 0x28880040, 0x02810008, 0x00020000, 0x10200404, 0x44400400, + 0x000008a0, 0x80180000, 0x40008002, 0x08240000, 0x020b0000, 0x00c20040, 0x00008020, 0x04040010, 0x10996000, 0x00000000, + 0x0a008000, 0x00040018, 0x04008000, 0xb0600000, 0x40100002, 0x08001440, 0x00000004, 0x00000020, 0x0000000a, 0x00000810, + 0x00001000, 0x02800454, 0x004008a0, 0x00600008, 0x00042000, 0x0008c000, 0x08100000, 0x02000210, 0x2000400e, 0x10180000, + 0x20208402, 0x80420004, 0x00000000, 0x00a000a0, 0x0004ca40, 0x20000440, 0x80001000, 0x08000000, 0x80800000, 0x0006082a, + 0x10000000, 0x00800000, 0x00411014, 0x00002020, 0x00080000, 0x0000800a, 0x28220000, 0x00200000, 0x40400004, 0x14840040, + 0x00008000, 0x20112400, 0x42020207, 0x00400010, 0x440100a0, 0x00040003, 0x60480400, 0x00002018, 0x00000840, 0x80021000, + 0x00000000, 0x08600c44, 0x09280000, 0x20040820, 0x06000002, 0x00500008, 0x44041000, 0x9000a210, 0x20002000, 0x00000048, + 0x04084c00, 0x00804000, 0x00000004, 0xc0168000, 0x80008010, 0x00200000, 0x020220e2, 0x00000a80, 0x0a080000, 0x04800000, + 0x04000000, 0x00400008, 0x10000460, 0x080008a0, 0x02282000, 0x00008000, 0x10111010, 0x00000008, 0x20000000, 0x2000000c, + 0x80080000, 0x40040400, 0x40810004, 0x00140000, 0x00020080, 0x88000800, 0x0442000a, 0x10008050, 0x00000481, 0x02110000, + 0x80800000, 0x04024040, 0x00020000, 0x08c02438, 0x08080000, 0x04042020, 0x00000400, 0x00800808, 0x40202002, 0x08804020, + 0x80000014, 0x12920000, 0x00045000, 0x00480080, 0x20000802, 0x00002008, 0x00004004, 0x40040000, 0x00008860, 0x00020202, + 0x80000080, 0x00008000, 0x10c00640, 0x00000000, 0x02000080, 0x00400010, 0x00080820, 0x04000448, 0x50021000, 0x00000000, + 0x08240824, 0x00081000, 0x10000002, 0x20100098, 0x00000002, 0x02810004, 0xa00ca808, 0x00060000, 0x42001281, 0x00210014, + 0x20000002, 0x80108000, 0x0c022000, 0x02810061, 0x00002010, 0x00000680, 0x00400002, 0x0c000040, 0x00001c00, 0x00302028, + 0x08482000, 0x04000000, 0x10104102, 0x40001080, 0x082c0008, 0x10002204, 0x80000000, 0x60100020, 0x00084440, 0x00820000, + 0x20040090, 0x40040082, 0x98000000, 0x00008820, 0x02400000, 0x00820008, 0x80000004, 0x00204008, 0x12804000, 0x04001040, + 0x18100810, 0x00000000, 0x04420004, 0x00200002, 0x00808000, 0x08081000, 0x20000008, 0x00020000, 0x50110000, 0x008c0020, + 0x00000001, 0x24400084, 0x82040000, 0x00000440, 0x40028009, 0x08030080, 0x00800000, 0x80000034, 0x08001020, 0x10c00000, + 0x02130044, 0x00000000, 0x00403004, 0x04308800, 0x00000010, 0x00204000, 0x00080804, 0x10040020, 0x00000802, 0x00100050, + 0x20000000, 0x000a2400, 0x00201000, 0x00000000, 0xcaa02400, 0x00004004, 0x00420000, 0x08104840, 0x00809082, 0x20001028, + 0x10000000, 0x0000a212, 0x00200080, 0x00040008, 0x00408440, 0x20080000, 0x48000044, 0x00019800, 0x00040081, 0xa0020a02, + 0x00188030, 0x00800201, 0x00040400, 0x00010000, 0x00000400, 0x08000000, 0x4000804c, 0x02400810, 0x00004000, 0x80020006, + 0x24300030, 0x10009080, 0x00880203, 0x000c0001, 0x00000000, 0x00000400, 0x60200008, 0x00000040, 0x00000890, 0x10004004, + 0x200c0020, 0x0aa0a284, 0x00000810, 0x88208000, 0x34c00020, 0x02100000, 0x00c23002, 0x04000080, 0x0c000000, 0x00080000, + 0x40002004, 0x10104040, 0x00200000, 0x80040800, 0x90089000, 0x20020002, 0x02080020, 0x40802000, 0x20080080, 0x06020046, + 0x84000000, 0x10000000, 0x40e00040, 0x80060804, 0x00000020, 0x086000c0, 0x14000000, 0x00808003, 0x28080000, 0x04000000, + 0x0008000a, 0x50240020, 0x08044804, 0x40408000, 0x80130000, 0x00280000, 0x20100042, 0x44028000, 0x10000000, 0x40080011, + 0x0281a000, 0x80000004, 0x80000000, 0x0cc00040, 0x08202000, 0x44404044, 0x00001c00, 0x00202000, 0x00028032, 0x08000808, + 0x00080000, 0x80100280, 0x00001014, 0x000c0000, 0x00000448, 0x00000000, 0x00020084, 0x04048822, 0x00005000, 0x00020000, + 0x90809010, 0x00102002, 0x00000200, 0x0280280a, 0x00480000, 0x40000430, 0x04400004, 0x80000040, 0x08001000, 0x00208022, + 0x000008c1, 0x40001000, 0x02010289, 0x14600000, 0x04080008, 0x00008400, 0x00142824, 0x48000044, 0x00050828, 0x00000012, + 0x00008052, 0x10021004, 0x00000088, 0x04110000, 0x0280202a, 0x00000201, 0x00080400, 0x04400804, 0x00204010, 0x00020000, + 0x40200404, 0x14000000, 0x00000020, 0x800258c2, 0x2a700000, 0x00001000, 0x02900010, 0x40006000, 0x20000008, 0x14480882, + 0x80060020, 0x40040040, 0x28804c24, 0x00000080, 0x02008000, 0x50100002, 0x80021008, 0x00200840, 0x208a020a, 0x02446010, + 0x00000040, 0x41840420, 0x14000004, 0x08000821, 0x80020002, 0x02480408, 0x10000000, 0x02809000, 0x40040040, 0x04000020, + 0x00402088, 0xa0084003, 0x00028000, 0x08a00044, 0x42050008, 0x80001800, 0x10108002, 0x440a2045, 0x08c00010, 0x8009220b, + 0x00004000, 0x00000000, 0x64c44404, 0x00221000, 0x00000020, 0x46148208, 0x08003262, 0x00200880, 0x88088444, 0x00004020, + 0x02144014, 0x08221c60, 0x00200008, 0x00088082, 0x20401650, 0x84200008, 0x08804200, 0x42260008, 0x00100014, 0xa000204a, + 0x10065414, 0x04008800, 0x00800000, 0x2252a002, 0x00200a00, 0x00000000, 0x44089240, 0x00000420, 0x0000020c, 0x8884ac40, + 0x00000020, 0x00000004, 0x102a0a20, 0x02801001, 0x4000a082, 0x240d1400, 0x00400008, 0x50000010, 0x002e3a09, 0x02080044, + 0x10820400, 0x80000014, 0x04408002, 0x00015a01, 0x2088800a, 0x00040004, 0x8c500000, 0x42201201, 0x80008420, 0x00000889, + 0x028c2000, 0x80021010, 0x29800800, 0x44200400, 0x00102060, 0x40001202, 0x0a240030, 0x001a0020, 0x08022404, 0x8c900000, + 0x20080018, 0x00001024, 0x28480280, 0x42044002, 0x00021000, 0xd0140002, 0x008cc000, 0x0200020c, 0xa0020400, 0x4c8800a0, + 0x04002404, 0x12800000, 0x80000050, 0x60088002, 0x04010020, 0x08001800, 0x00001000, 0xca050010, 0x14020000, 0xa0082401, + 0x14829200, 0x0020108a, 0x009400a1, 0x68082008, 0x30002004, 0x00000052, 0x50168000, 0x80010200, 0x00000201, 0x800a0000, + 0x04c13082, 0x00000444, 0x40910001, 0x1c400800, 0x08000822, 0x02401410, 0x1010a208, 0x08040020, 0x04602400, 0x84008a02, + 0x30000018, 0x00121020, 0x40080800, 0x00084080, 0x32142404, 0x80120208, 0x48004082, 0x00840004, 0x00009800, 0x16088002, + 0xc0221200, 0x40400068, 0x02800480, 0x00022222, 0x20228004, 0x04080840, 0x00000400, 0x0a401000, 0x80a00010, 0x0c400080, + 0x2014a820, 0x10100018, 0x00201a03, 0x40000000, 0x0428000c, 0x12001000, 0xa000a080, 0x40440006, 0x00882040, 0x00000080, + 0x00028201, 0x04011006, 0x88040020, 0x00400480, 0x00820223, 0x02030848, 0x4040a000, 0x00010001, 0x24210440, 0x8a101030, + 0xa24e2412, 0x04200040, 0x88100022, 0x04008008, 0x10a01800, 0x001a2410, 0x10001000, 0x22000200, 0x20200008, 0x409a8860, + 0x00046002, 0x80044000, 0x60000c2c, 0x20000010, 0x0080a002, 0xb20a0000, 0x00000680, 0x0e006020, 0x008402c0, 0x00400000, + 0x40260040, 0x04c00400, 0x00105880, 0x10000000, 0x0c600010, 0x80800a28, 0x201e0251, 0x00201800, 0x10c08004, 0x00010080, + 0xb0000000, 0x540a2048, 0x02010804, 0x40401488, 0x0084a003, 0x00008000, 0x80400002, 0x00020000, 0x06940058, 0x80012681, + 0x100a0000, 0x00201830, 0x0cc00044, 0x00000400, 0x10808081, 0x00700000, 0x04000464, 0x0aa00820, 0xe0040040, 0x10401000, + 0x12181010, 0x00800000, 0x00000448, 0x24000088, 0x102a2010, 0x10041400, 0x40004000, 0x80000004, 0x002c0000, 0x00400002, + 0xc0020004, 0x1a808000, 0x24000010, 0x42800200, 0x00004088, 0x80500442, 0x468a8000, 0x08000020, 0x00010821, 0x18220001, + 0x00000000, 0x00410000, 0x00101000, 0x30002018, 0x20040808, 0x40400800, 0x00080000, 0xc8110034, 0x00080000, 0x00260448, + 0x90000002, 0x02d00008, 0x0402c000, 0x0a800005, 0x000b8084, 0x00204000, 0x00040002, 0x14410040, 0x0000c422, 0x00000000, + 0x00804004, 0x44000080, 0x08020000, 0x04001822, 0x00300080, 0x80100200, 0x10201010, 0x004cc0a0, 0x20082000, 0x10000010, + 0x8810001a, 0x00000000, 0x50040800, 0x001240ec, 0x80000000, 0x00068004, 0x40800006, 0x02800200, 0x00020098, 0x00000000, + 0x00440000, 0x02000444, 0x4c000820, 0x08008000, 0x02000802, 0x14200020, 0x90101010, 0x00000000, 0x000200c0, 0x28002401, + 0x00010000, 0x06085008, 0x40040800, 0x00080040, 0x20400005, 0x88080000, 0x00008000, 0x028b2002, 0x00801088, 0x00018013, + 0x06440200, 0x80002400, 0x06430000, 0xc0004040, 0x00200820, 0x40802440, 0x004000a8, 0x00201000, 0x08068050, 0x02000824, + 0x10002008, 0x00000800, 0x08905812, 0x00000004, 0x10080098, 0x2000a010, 0x00000086, 0x80404000, 0x4c040210, 0x00028020, + 0x80240c06, 0x00040004, 0x00000090, 0x20980002, 0x02000240, 0x00000830, 0x06000100, 0x00e416c8, 0x00200008, 0xc0000020, + 0x08000c02, 0x00080000, 0x10a00810, 0x42301004, 0x00080080, 0x20012008, 0x00201800, 0x00008042, 0x40080084, 0x10860021, + 0x00028000, 0x88000402, 0x20110040, 0x02000010, 0x00000202, 0x00c190ab, 0x00400040, 0x44000400, 0x0001b000, 0x08000000, + 0x2cc08000, 0x00004024, 0x60000000, 0x00200020, 0x1c188c02, 0x00000010, 0x80121440, 0x182002a0, 0xc0040000, 0x30000000, + 0x008ae408, 0x40044044, 0x00080000, 0x00c80000, 0x00208082, 0x00000000, 0x88063010, 0x04000200, 0x1a224000, 0x00daa888, + 0x04000402, 0x12400000, 0xa0000046, 0x00100020, 0x08200000, 0x000c8800, 0x40811042, 0x00304000, 0x38240291, 0x8000004c, + 0x00080000, 0x3a020410, 0x02410004, 0x04040000, 0x40902820, 0x00000001, 0x08060002, 0x8048d000, 0x00010080, 0x02800015, + 0x04024000, 0x04040400, 0x0a010048, 0x00697004, 0x001008a1, 0x04021010, 0x80204442, 0x40040a20, 0x00200008, 0x08180040, + 0x00009010, 0x14004202, 0x02900000, 0x20080408, 0x0000a882, 0x04420044, 0x80100004, 0x00240000, 0x60105820, 0x00022000, + 0x80000042, 0x10988200, 0x06001200, 0x008008a4, 0xa8080418, 0x04002440, 0x00000000, 0x40440005, 0x10000820, 0x0800a200, + 0x802a1082, 0x10400010, 0x00001040, 0x02900409, 0x60000400, 0x00200008, 0x005c00a4, 0x00040000, 0x00000251, 0x48008006, + 0x80028808, 0x20010002, 0x40101024, 0x12040031, 0x00210800, 0x80802480, 0x00084400, 0x0c400000, 0x6004125c, 0x00200002, + 0x04500460, 0x00004000, 0x08201000, 0x020c0894, 0x80008228, 0x00520000, 0x10000012, 0x20805200, 0x00022000, 0xa02800ac, + 0x5a449442, 0x00000000, 0x06844000, 0x58000a04, 0x80000020, 0x04028000, 0x00301452, 0x02800088, 0x40000200, 0x30000800, + 0x04400020, 0x00080440, 0x48040004, 0x08030000, 0x20001820, 0x10a8a008, 0x10140000, 0x44000012, 0x80801085, 0x06410000, + 0x00020000, 0x2008840a, 0x40000000, 0x10050044, 0x80200a21, 0x28000002, 0x00408010, 0x84821408, 0x10800000, 0x08110080, + 0x62082801, 0x04000060, 0x10504400, 0xc084100c, 0x80000000, 0x40040060, 0x00505414, 0x00000440, 0x08000020, 0x80a28a0a, + 0x00080820, 0x20101000, 0x50c04614, 0x00041010, 0x00000008, 0x2648a442, 0x40062008, 0x80000000, 0x0a004a24, 0x00804004, + 0x00200000, 0x9412844a, 0x00008002, 0x02080000, 0x28803aac, 0x00000280, 0x04400000, 0x52060444, 0x00200440, 0x00011020, + 0x8802280a, 0x00001820, 0x30180000, 0x02808215, 0x00481010, 0x60042048, 0x80010c02, 0x0c002008, 0x40028000, 0x00840a25, + 0x0001c00c, 0x80020000, 0x10301402, 0x00418002, 0x06800000, 0x08082aa9, 0x004002c3, 0x00000000, 0x54141405, 0x08000440, + 0x00000400, 0xe4108002, 0x04c00492, 0x00001040, 0x082e4884, 0x08600449, 0x20100000, 0x52800000, 0x30140000, 0x00080000, + 0x0c022000, 0xa00c4820, 0x00000400, 0x5ac01000, 0x40040008, 0x00020a00, 0x94000000, 0x8002202a, 0x40801050, 0x2a180180, + 0x02c09210, 0x00002040, 0x46040402, 0x044080d1, 0x18004000, 0xa02a0e81, 0x08300081, 0x10000002, 0x40840010, 0x10104000, + 0x00000006, 0xa04a2009, 0x20080020, 0x00000400, 0x58840141, 0x40040400, 0x20010000, 0x90720020, 0x8002880a, 0x06810000, + 0x08080004, 0x02810080, 0x04408401, 0x10140010, 0x04601002, 0x00280008, 0x04002000, 0x00085008, 0x40100000, 0x18080000, + 0x04a10800, 0x00088000, 0x06000120, 0x08008014, 0x02811000, 0x02000806, 0x30000011, 0x00000044, 0x04006400, 0x60880030, + 0x00082000, 0x00000004, 0x800e0000, 0x00000000, 0x01000400, 0x08400002, 0x40000004, 0x04022800, 0x20500020, 0x0c000004, + 0x2008a010, 0x40040040, 0x280a0840, 0x10000000, 0x08021130, 0x20150201, 0x82000080, 0x40000000, 0x80001050, 0x00020222, + 0x44000010, 0x00000005, 0x00000008, 0x82702000, 0x14400000, 0x00080820, 0x00038014, 0x04000020, 0x00000002, 0x40800400, + 0x00020000, 0x00000000, 0x02028024, 0x02000000, 0x20000000, 0x80000080, 0x00000008, 0x60000050, 0x10220080, 0x00040000, + 0x000a0020, 0x00000008, 0x84400002, 0x00400000, 0x08005080, 0x20008001, 0x48114000, 0x00208800, 0x04040000, 0xa0300000, + 0x00800009, 0x02010000, 0x00208000, 0x8080000a, 0x00840000, 0x04010000, 0x80c00000, 0x00000028, 0x01300000, 0x400000c0, + 0x06000000, 0x01000030, 0x0870c800, 0x20080004, 0x02682000, 0x18041000, 0x80100002, 0x080c4004, 0x20000000, 0x00800400, + 0x80005000, 0x10140040, 0x00802008, 0x22600000, 0x80110008, 0x08800008, 0x30001000, 0x00106000, 0x00408004, 0x00a04000, + 0x08000089, 0x10023000, 0x00540000, 0x84000094, 0x60100000, 0x80304000, 0x00098220, 0x08220000, 0x42002009, 0x00210080, + 0x10820010, 0x00400002, 0x14001000, 0x2000e000, 0x00000000, 0x10084000, 0x00040820, 0x08000000, 0x10287000, 0x10028004, + 0x00200000, 0x00000006, 0x00000000, 0x04400018, 0x80800040, 0x00400000, 0x10a08020, 0x04010008, 0x40048804, 0x20900000, + 0x000110c1, 0x00820010, 0x44000000, 0x00020844, 0x00000018, 0x40000001, 0x00004020, 0x6a000000, 0x00020020, 0x0c000010, + 0x00002020, 0x02300040, 0x04000000, 0x00402800, 0x00001000, 0x08008000, 0x000a000a, 0x00000400, 0x00000109, 0x00801442, + 0x00012804, 0x26003000, 0x00000400, 0x80085004, 0x44870200, 0x1000d404, 0x08004000, 0x30000022, 0x00080030, 0x10800c90, + 0x00080040, 0x04008400, 0x00000010, 0x20000100, 0x00100c40, 0x00000000, 0x00200080, 0x80003001, 0x00040004, 0x20110002, + 0x00002008, 0x00010800, 0x00080000, 0x00404010, 0x80000320, 0x20002000, 0x00000000, 0x02448023, 0x00028000, 0x10102000, + 0x00020880, 0x00003098, 0x00000404, 0x00000802, 0x00010000, 0x40880400, 0x00408000, 0x200c0052, 0x00000408, 0x20280024, + 0x40240060, 0x86000000, 0x08000010, 0x41434022, 0x40000000, 0x20820091, 0x00280040, 0x00408008, 0x40400400, 0x20000020, + 0x00320000, 0x00812004, 0x04400841, 0x00400240, 0x00000003, 0x80000289, 0x10a42000, 0x0050000c, 0x00870000, 0x44000030, + 0x28804048, 0x09820820, 0x04100000, 0x10428020, 0xc0004000, 0x02425081, 0x02000215, 0x00002002, 0x00b00062, 0x00040000, + 0x00190404, 0x30010800, 0x80020600, 0x80080000, 0x04011002, 0x40908006, 0x80800041, 0x603d0200, 0x60001040, 0x1000808b, + 0x08000000, 0x84800080, 0x40020002, 0x90001000, 0x00c00000, 0x00000208, 0x20800000, 0x10408800, 0x10340480, 0x04000000, + 0x10280000, 0x00040000, 0x08020800, 0x10140200, 0x00001010, 0x0a0000a0, 0xc00c0400, 0x80000008, 0x00040000, 0x08018000, + 0x20210814, 0x00002000, 0x00080081, 0x00004002, 0x80000000, 0x00600000, 0x00080200, 0x00010080, 0x08200c00, 0x10880400, + 0x00040040, 0x34380006, 0x80800000, 0x00020000, 0x02001208, 0x00041000, 0x40a00020, 0x48004010, 0x20200008, 0x00000000, + 0x00006000, 0x00204004, 0x80000020, 0x00488000, 0x00808002, 0x00000020, 0x00000048, 0x80001800, 0x0004c100, 0x06022002, + 0x00800000, 0x00004000, 0x0200100c, 0x04000002, 0x400020c0, 0x80100008, 0x00228420, 0x00004000, 0x00000200, 0x10100000, + 0x08008802, 0x00000480, 0x20080000, 0x00000010, 0x00220a82, 0x50003000, 0x00040030, 0x8000040d, 0x200ac000, 0x00000020, + 0x80000808, 0x02012000, 0x00005012, 0x00040204, 0x00400000, 0x0000040a, 0x00800000, 0x08000800, 0x00008060, 0x00000205, + 0x00000010, 0x00208000, 0x040004c4, 0x20080080, 0x00500000, 0x08001a00, 0x40043068, 0x00000000, 0x00000001, 0x8000000a, + 0x00004000, 0x04100000, 0x28220000, 0x00002008, 0x84080000, 0x00000000, 0x00000280, 0x40040040, 0x00000440, 0x22000008, + 0x04428000, 0x08200802, 0x80040000, 0x20000008, 0x00922480, 0x00001000, 0x86000010, 0x00000000, 0x10002004, 0x00060008, + 0x20000020, 0x04604000, 0x181c9880, 0xc0000020, 0x28000080, 0x002a0200, 0x10000201, 0x00810040, 0x00048434, 0x60080480, + 0x00000000, 0x80708040, 0x042208b4, 0x00000010, 0x20050000, 0x08001018, 0x00020200, 0x04c80002, 0x12190048, 0x00804000, + 0x28000020, 0x00640000, 0x00000000, 0x54100004, 0xa0220000, 0x08200010, 0x000440c0, 0x20020000, 0x02000000, 0x40000860, + 0x00404000, 0x00009400, 0x00802018, 0x04000008, 0x80242880, 0x0a000004, 0x00000000, 0x10001000, 0x402a4006, 0x14100000, + 0x00400402, 0x000a8220, 0x00000200, 0x00080830, 0x00004080, 0x00240400, 0x00000040, 0x80000000, 0x80020000, 0x00001800, + 0x40008032, 0x20800080, 0x04000010, 0x10001008, 0x0400804c, 0x00012000, 0x28080000, 0x48000000, 0x00004204, 0x02802002, + 0x10120000, 0x00000400, 0x2000b002, 0x00480080, 0x00000a24, 0x4000a000, 0x40000404, 0x00000050, 0xa0421000, 0x00000800, + 0x04400448, 0x00042804, 0x08008000, 0x21800820, 0x10201000, 0x00001000, 0x80100210, 0x14020088, 0x00222002, 0x00080028, + 0x60900050, 0x00040020, 0x40004004, 0x88208080, 0x00020002, 0x8400a000, 0x10840044, 0x00200080, 0x08000000, 0x02800210, + 0x04000040, 0x10040410, 0x20890008, 0x00004800, 0x48000020, 0x00602000, 0x00000050, 0x00001200, 0x30980000, 0x08022000, + 0xa0084001, 0x440008ac, 0x00840001, 0x10000000, 0x484050c4, 0x80000000, 0x00008042, 0x02030800, 0x40010000, 0x0a240000, + 0x00c00280, 0x04022040, 0x30400000, 0x40008400, 0x00010000, 0x00000000, 0x00000410, 0x00a00820, 0x00004004, 0x28100000, + 0x00102090, 0x10000000, 0x08081008, 0x00000000, 0x20804006, 0x50082008, 0x0000c004, 0x80040040, 0x40000010, 0x80008000, + 0x28020028, 0x00100a82, 0x08001c00, 0x428000c0, 0x80200224, 0x00080040, 0x04001000, 0x00004400, 0x00200010, 0x00008020, + 0x0c080840, 0x10101008, 0x02000000, 0x00462290, 0x20880000, 0x04000000, 0x8000600c, 0x4000c000, 0x00101000, 0x00040006, + 0x00038283, 0x80002020, 0x00400000, 0x02002010, 0x10800080, 0x00210641, 0x00400800, 0x04000000, 0x40000470, 0x08203020, + 0x20000000, 0x04603020, 0x10380088, 0x40040100, 0x8800a202, 0x14000000, 0x24000000, 0x00100000, 0xe0048404, 0x00004880, + 0x00280020, 0x00800280, 0x04200800, 0x50040000, 0x00000000, 0x00000020, 0x82022040, 0x20801408, 0x06200010, 0x00102000, + 0x00000000, 0x00080800, 0x0c0000a0, 0x18001001, 0x0030a10c, 0x20000200, 0x00004200, 0x10180000, 0x40010000, 0x00800080, + 0x00600021, 0x260e0000, 0x80000800, 0x40010080, 0x00040040, 0x00100400, 0x02c20020, 0xc0201008, 0x00800800, 0x06010000, + 0x10000060, 0x18000004, 0x00200000, 0x04402000, 0x00001002, 0x00044004, 0x40000842, 0x02100000, 0x01080802, 0x00000010, + 0x00021000, 0x00000200, 0x08a02008, 0x00002820, 0x80000400, 0x00144008, 0x00a04810, 0x04000000, 0x00000002, 0x0000a000, + 0x10001000, 0x00000202, 0x24000014, 0x00000200, 0x00200c8a, 0x00008000, 0x000a8004, 0x08000400, 0x00014000, 0x80000000, + 0x401018b0, 0x40880010, 0x20030200, 0x00001008, 0x00000400, 0x00000008, 0x08060084, 0x08600000, 0x04000044, 0x8000000a, + 0x00808040, 0x20411080, 0x02004214, 0x04100080, 0x00000208, 0x0000c402, 0x38086040, 0x00000000, 0x80200001, 0x00900000, + 0x04480040, 0x80808000, 0x00002800, 0x82000004, 0x18e040c0, 0x00000200, 0x00009008, 0x20000000, 0x00000080, 0x08000008, + 0x20006400, 0x14000800, 0x0000c000, 0x802c100a, 0x00000002, 0x08000000, 0x8082d000, 0x10000200, 0x00080080, 0x4c024000, + 0x20000008, 0x04002400, 0x80601024, 0x00000000, 0x08800832, 0x50628000, 0x02010000, 0x14001010, 0x20280808, 0x00080008, + 0x00000080, 0x60108850, 0x04240800, 0x00400020, 0x00120004, 0x30020000, 0x08100010, 0x02058000, 0x02010000, 0x20000000, + 0xc0c60288, 0x00000000, 0x44082000, 0x184000c0, 0x00000000, 0x00004014, 0x00000000, 0x00200020, 0x08000042, 0x20000a08, + 0x00002010, 0x00868221, 0x00004000, 0x04000000, 0x20000454, 0x0000280a, 0x00000000, 0x08040820, 0x0010c004, 0x04000000, + 0x80221094, 0x00042402, 0x00000000, 0x0000204a, 0x00400226, 0x08000400, 0x00400104, 0x04009800, 0x88000810, 0x0020c022, + 0x00000200, 0x10010000, 0x00000201, 0x08003010, 0x20000000, 0x00080490, 0x0000d01e, 0x00000040, 0x00260a20, 0x10080084, + 0x18000000, 0x00821010, 0x0000a042, 0x00800200, 0x00110008, 0x02000800, 0x44000400, 0x00406004, 0x00011030, 0x08202820, + 0x40444444, 0x00802200, 0x08180180, 0x80021820, 0x30400008, 0x40004000, 0x02800890, 0x10040842, 0x20022200, 0x14000418, + 0x10000000, 0x08005000, 0x20202824, 0xd0801080, 0x00022200, 0x10105012, 0x82000000, 0x00204400, 0xa0006202, 0x04848820, + 0x1c000000, 0x42885408, 0x00840014, 0x200000a0, 0x88228802, 0x00500080, 0x10001040, 0x0281005c, 0x00080600, 0x00000000, + 0x04400008, 0xe0080080, 0x00020000, 0x08200864, 0x60801000, 0x8203a202, 0x50101010, 0x40004008, 0x00800000, 0xa40a220c, + 0x82610020, 0x08001000, 0x40848404, 0x00400080, 0x08000000, 0x04040200, 0x02008446, 0x00000808, 0x080224c0, 0x00000020, + 0x00000004, 0x98800a20, 0x2004c010, 0x0c00000a, 0x30402490, 0x80120000, 0x00000214, 0x68006858, 0x00000000, 0x00000402, + 0x80224004, 0x1050002c, 0x24000a00, 0x008a000a, 0x40001000, 0x00202010, 0x1c000204, 0x00001420, 0x08210000, 0x82020408, + 0x00000820, 0x02000014, 0x10889a23, 0x00000000, 0x00090008, 0x24201c12, 0x00068080, 0x00010244, 0x40000808, 0x00700000, + 0x04080400, 0x88028026, 0x00441000, 0x10310020, 0x22888802, 0x00000218, 0x08400010, 0x40045200, 0x00002400, 0x90200208, + 0x40840408, 0x0c405010, 0x20000020, 0x84420440, 0x0c802800, 0x10000012, 0x08000020, 0x44601024, 0x80002408, 0x14028020, + 0x28000000, 0x40804824, 0x28202000, 0x00000200, 0x80000008, 0x40008084, 0x64020002, 0x00800280, 0x900a0000, 0x00101c10, + 0x80000440, 0x20842008, 0x0c220220, 0x02084028, 0x04000c00, 0x78a12000, 0x40001210, 0x88220802, 0x100040a0, 0xa0030408, + 0x16081000, 0x00902002, 0x40804860, 0x28490008, 0x0200000c, 0x00408092, 0x50280000, 0x80020204, 0x02000208, 0x800b00c0, + 0x00948c21, 0x00000402, 0x02c70000, 0xc8200050, 0x20804021, 0x80000040, 0x10500000, 0x08000810, 0x04200420, 0x00081000, + 0x10002000, 0x88001050, 0x00148008, 0x0408c004, 0x00202010, 0x20020008, 0x08044002, 0x00002014, 0x60c00c00, 0x10000002, + 0x00224600, 0x82008080, 0x04840020, 0x0200124a, 0x28000080, 0x14000840, 0x00800406, 0x00000000, 0x80201a22, 0x2c000400, + 0x00000018, 0x00105000, 0x18000800, 0x08202230, 0x20008004, 0x00013018, 0xd0080000, 0x08060084, 0x50484808, 0x00800002, + 0x12218000, 0x40021203, 0x84000000, 0x02800481, 0x08028204, 0x0003a040, 0x40404000, 0x04000c48, 0x10010020, 0x08141810, + 0x0400d000, 0x000c2800, 0x10300822, 0x0e0a0140, 0x40808010, 0x20041200, 0x58102030, 0x00000800, 0x20028080, 0x12082024, + 0x00004008, 0xc0004004, 0x32040020, 0x0000008a, 0x8002a012, 0x0080540c, 0x00004000, 0x08000008, 0x92800a80, 0x24200040, + 0x00000000, 0x04002420, 0x10104040, 0x00002801, 0x04008022, 0x08200010, 0x001c1008, 0x90000000, 0x204000d4, 0x4009a002, + 0xa0805818, 0x02000000, 0x00000004, 0x40900440, 0x00064200, 0x0000a002, 0xca020880, 0x00210004, 0x06400841, 0x80a18200, + 0x48002080, 0x10000044, 0x84800408, 0x00500020, 0x002008b2, 0x0c000040, 0x00220020, 0xc0201020, 0x08000000, 0x10500880, + 0x00188010, 0x70041000, 0x08200402, 0x20022000, 0x02000000, 0x0008020c, 0x40000004, 0x00243400, 0x00084800, 0x88028002, + 0x20000000, 0x42000000, 0x20800001, 0x020c0084, 0x1c000200, 0x00022042, 0x04800400, 0x02008020, 0x100108a0, 0x02100004, + 0x08200000, 0x36561010, 0x04010000, 0x80208080, 0x00084008, 0xa0600000, 0x5c822040, 0x00100010, 0x52284000, 0x00059414, + 0x80000820, 0x00028000, 0x2080200a, 0x30010200, 0x02844000, 0x840000a0, 0x04200000, 0x0200e040, 0x00430c01, 0x00200800, + 0xa0802004, 0x00000c40, 0x00204000, 0x04000822, 0x08100000, 0x10900200, 0x04400000, 0x00089010, 0x20080408, 0x00002010, + 0x48040010, 0x50040800, 0x00004000, 0x20020004, 0x80000000, 0x48020010, 0x0000a026, 0x02000000, 0x80000202, 0x00806088, + 0x00000000, 0x04000064, 0x08024400, 0x00000000, 0x00210800, 0x088800a0, 0x10120200, 0x00009012, 0x02000080, 0x28080404, + 0x00002000, 0x00400028, 0x40000004, 0x000c0020, 0x80804008, 0x20020000, 0x80041892, 0x00088000, 0x02810000, 0x800002c8, + 0x00002003, 0x04400444, 0x00010000, 0x02a00002, 0x08200000, 0x00c00400, 0x04801800, 0x48000810, 0x80202000, 0x0004c020, + 0x00021000, 0x0090003a, 0x10000280, 0x00008006, 0x10004018, 0x20182c00, 0x04024200, 0x00040084, 0x40001008, 0x00020000, + 0x40008802, 0x88280040, 0x10080691, 0x80820002, 0x22001000, 0x44000c00, 0x12000000, 0x80040041, 0x08203000, 0x80024030, + 0x00008800, 0x00000000, 0x30900800, 0x00081018, 0x00012001, 0x00021088, 0x64084800, 0x000040c2, 0x40048404, 0x02690800, + 0x80408002, 0x00060400, 0x40000000, 0x10000080, 0xa0000001, 0x02837248, 0x00200820, 0x54010400, 0x00400041, 0x00140034, + 0x04808000, 0x00400080, 0x20029824, 0x08406000, 0x10300002, 0x00001010, 0x18200000, 0x84d00220, 0x00006008, 0x300c0080, + 0x84200452, 0x0000c800, 0x60020004, 0x00040020, 0x00a00002, 0xc8020000, 0x00008210, 0x0c801200, 0x82000080, 0x1020800a, + 0x20082400, 0x02004000, 0x149200c4, 0x00020020, 0x08000000, 0x60200892, 0x00800018, 0x00088000, 0x501012a1, 0x00002008, + 0x200c0000, 0x00120440, 0x80000804, 0x00080000, 0x420cd010, 0x000000a2, 0x04808000, 0x80435000, 0x000002d0, 0x92810000, + 0x00200004, 0x0000840a, 0x18c0a040, 0x64105004, 0x00040820, 0x00000440, 0xc000002c, 0x08a02100, 0x00008028, 0x80044812, + 0x00400010, 0x10104004, 0x08021401, 0x00800608, 0x20000022, 0x040820c0, 0x40140004, 0x00000200, 0x00104820, 0x80088002, + 0x00022008, 0x70341010, 0x00004201, 0x0a002020, 0xa0884488, 0x04000044, 0x00001410, 0x02004a02, 0x00000900, 0x10000028, + 0xa8ac0000, 0x10108050, 0x00400082, 0x02251044, 0x000a0440, 0x0080a002, 0x28400208, 0x42000024, 0x00944800, 0x0c200000, + 0x00030002, 0x80008000, 0x10100210, 0x40800204, 0x04013080, 0x02280408, 0x88400440, 0x04020002, 0x60145820, 0x08200200, + 0x30000002, 0x08444654, 0x00000002, 0x02200800, 0x4880a420, 0x00120000, 0xd0001018, 0x22004205, 0x00280000, 0xa0802000, + 0x080004ca, 0x54800000, 0x00004000, 0x00060a24, 0x88000000, 0x00228002, 0x00100400, 0x00000080, 0x02240010, 0x3c80320c, + 0x00020020, 0x84080840, 0x40005404, 0x00008000, 0xa8080810, 0x1022002a, 0x14001000, 0x04000010, 0x02910200, 0x28080000, + 0x4000004c, 0x0420a480, 0x00004000, 0x02450006, 0xc8220a20, 0x00008000, 0x80420002, 0x00941410, 0x12012000, 0x40240208, + 0x20880880, 0x04420020, 0x80004000, 0x08041454, 0x08800000, 0x08400400, 0x14064014, 0x00000440, 0x08000020, 0x60202c0a, + 0x10020820, 0x82009000, 0x00104615, 0x60001090, 0x00080000, 0x8480240a, 0x00022008, 0x40040004, 0x00804261, 0x0022c004, + 0x08000000, 0x94101c12, 0x02808083, 0x00000000, 0x20200228, 0x000002c0, 0x08080800, 0x44003414, 0x08200c40, 0x10000020, + 0x0000804a, 0x00000820, 0x30180000, 0x02831214, 0x00003010, 0x60000000, 0x8408840b, 0x00002008, 0x40424000, 0x12250a0c, + 0x20804004, 0x08008000, 0x9012143e, 0x00008003, 0x02c00000, 0x08290a88, 0x000002a1, 0x20000000, 0x06445456, 0x40000460, + 0x08400800, 0x54820002, 0x0c601410, 0x00004088, 0xa0020000, 0x08204022, 0x00100000, 0x50800090, 0x10100020, 0x00080004, + 0xa6020080, 0x20084210, 0x40041400, 0x00a00100, 0x40044a10, 0x20020001, 0x94003000, 0x82020408, 0x00040800, 0x20b00010, + 0x02800001, 0x08000000, 0x54000010, 0x04408040, 0x08000004, 0xa0260000, 0x08780805, 0x00000000, 0x52011000, 0x10104846, + 0x00009000, 0xa0fa0004, 0x200c2000, 0x00001000, 0x4e210040, 0x40840420, 0x80000004, 0x40420000, 0x808204d2, 0x00000040, + 0x7a310106, 0x06818081, 0x00000020, 0x40402000, 0x04404040, 0x28000000, 0x800000a0, 0x00400242, 0x00000800, 0x40020048, + 0x00010004, 0x80000000, 0x1402000a, 0x40105918, 0x40000200, 0x00800000, 0x20200028, 0x44004000, 0x0180200e, 0x28000080, + 0x00a10024, 0x8002400c, 0x04000010, 0x40000042, 0x00008000, 0x00000026, 0x00208428, 0x80010080, 0x02400020, 0x04104082, + 0x28280000, 0x00802088, 0x80080010, 0x04000428, 0x10200001, 0x400002a0, 0x80000000, 0x0000040f, 0x08420842, 0x00402001, + 0x01040000, 0x02014000, 0x00000020, 0xa0020000, 0x00280000, 0x03014020, 0x80140018, 0xa8208200, 0x00031080, 0x04000012, + 0x00800400, 0x00000000, 0xa0000004, 0x080c0010, 0x10c00000, 0x04000000, 0x00800001, 0x80200000, 0x08010000, 0x11000400, + 0x00120820, 0x00400040, 0x000a0000, 0x00000050, 0x05548000, 0x40080000, 0x08440000, 0x90100040, 0x20001000, 0x38280800, + 0x02021000, 0x00100080, 0x10800003, 0x00080408, 0x00000000, 0x14800011, 0x00204012, 0x00040020, 0x01000000, 0x00030000, + 0x06120000, 0x01040800, 0x00000000, 0x34200000, 0x00010010, 0x02881000, 0x58080000, 0x00102002, 0x00040800, 0x00000000, + 0x10080000, 0x08021004, 0x02100000, 0x02800009, 0x80000004, 0x00000084, 0x00400800, 0x10080000, 0x04000000, 0x20102008, + 0x00240000, 0x2a000080, 0x00000000, 0x04800002, 0x00000404, 0x00001080, 0x08010000, 0x80044002, 0x10080080, 0x00001804, + 0x00000200, 0x00000000, 0x000a0004, 0x00000000, 0x00401c01, 0x400400c3, 0x00800000, 0x00008048, 0x88040000, 0x40008010, + 0x40004000, 0x00030001, 0x00000020, 0x00000000, 0x80801000, 0x00400080, 0x28800804, 0x00008000, 0x01000000, 0x04000440, + 0x00204009, 0x80800000, 0x28000000, 0x10410000, 0x00408000, 0x00048000, 0x40a03090, 0x00400000, 0x04008000, 0x20060080, + 0x00006040, 0x00080000, 0x1040c040, 0x00000294, 0x08000020, 0x00020044, 0x30209400, 0x00002010, 0x000880a0, 0x40901060, + 0x20000008, 0x02008440, 0x80000020, 0x00040000, 0x04000010, 0x0080a008, 0x00000401, 0x08088000, 0x00002070, 0x40000280, + 0x00200000, 0x00600018, 0x00002020, 0x60184400, 0x00020820, 0x00000000, 0x80172000, 0x000014d0, 0x00200008, 0x8000c004, + 0x00400048, 0x00081001, 0x00402050, 0x28100028, 0x00004000, 0x40000280, 0x00002020, 0x00028006, 0x10002040, 0x0010040c, + 0x000100a1, 0x00200009, 0x40054004, 0x08000860, 0x00800014, 0x20080220, 0x00602000, 0x40041480, 0x10200802, 0x02084400, + 0x40040820, 0x80000008, 0x48000004, 0x02034000, 0x00280001, 0x00022812, 0x80000a00, 0x0400a004, 0x00202348, 0x00020400, + 0x080000a0, 0x04010042, 0x00104020, 0x30405800, 0x00808010, 0x028e2200, 0x00000000, 0x00001400, 0x11040001, 0x00801006, + 0x220000c4, 0x09400000, 0x0000a802, 0x00140022, 0x00000001, 0x00006400, 0x20240000, 0x10000080, 0x04208404, 0x40041000, + 0x02081000, 0x10100090, 0x80400408, 0x00200812, 0x00005060, 0x00840802, 0x800a0000, 0x20000000, 0x00401401, 0x00412000, + 0x00001008, 0xe8840010, 0x02028002, 0x04000004, 0x00000000, 0x20000200, 0x02100000, 0x80044000, 0x10280400, 0x00040000, + 0x18010000, 0x08800020, 0x30020000, 0x20080000, 0x10d51080, 0x02000000, 0xc0000000, 0x80062018, 0x00040000, 0x08010000, + 0x80014000, 0x00000000, 0x88000000, 0x00800002, 0x18200010, 0x00001004, 0x00380001, 0x10402008, 0x44008080, 0x18080400, + 0x00010000, 0x00110024, 0x00800820, 0x80020000, 0x14008010, 0x00851010, 0x02a00000, 0x00000080, 0x20032008, 0x00480000, + 0x40000000, 0x00004010, 0x00000000, 0x00000000, 0x30108000, 0x00000000, 0x00109000, 0x80004010, 0x00000802, 0x00402200, + 0x22808004, 0x00000000, 0x00021218, 0x00442000, 0x00004400, 0x00128012, 0x04200804, 0x00000020, 0x00000210, 0x10000012, + 0x00000000, 0x20004440, 0x20580000, 0x00001000, 0x08000080, 0x40000c1c, 0x00000020, 0x00000001, 0x80028000, 0x10105820, + 0x00002008, 0x00800084, 0x00000000, 0x00005030, 0x4400004a, 0x00040001, 0x88008400, 0x08200000, 0x00400020, 0x20011085, + 0x00100000, 0x00000012, 0x400c0400, 0x20280040, 0x00003009, 0x004008a0, 0x00004004, 0x48000000, 0x00000090, 0x00101002, + 0x00004040, 0x00400000, 0x00060080, 0x18000000, 0x00280022, 0x80042200, 0x00000000, 0x20100000, 0x00080442, 0x42800000, + 0x80400004, 0x0c200000, 0x40000080, 0x02064000, 0x00900820, 0x00000000, 0x04461400, 0x00002008, 0x10000000, 0x08040800, + 0x34000026, 0x00000000, 0x00601080, 0x00008802, 0x00200000, 0x68180010, 0x00000049, 0x00020480, 0x80900000, 0x04400400, + 0x40080000, 0x9830200a, 0x40021020, 0x00200000, 0x00040000, 0x10400001, 0x08820010, 0x84008000, 0x00804000, 0x28003004, + 0x40290000, 0x0404100c, 0x00000000, 0x50500000, 0x80080001, 0xc0200040, 0x04000020, 0x80101800, 0x00000008, 0x00080070, + 0x02400000, 0x00020444, 0x00203010, 0x44400000, 0x080c0808, 0x20006000, 0x40020000, 0x10004200, 0x00208006, 0x00408002, + 0x08020000, 0x20000404, 0x00000201, 0x20080004, 0x04000800, 0x00000040, 0x88200410, 0x40001020, 0x00080800, 0x02002220, + 0x00000000, 0x00800000, 0xc0100004, 0x14041018, 0x00402000, 0x04008003, 0x00004c38, 0x80220000, 0x00804005, 0x40000008, + 0x10008082, 0x00001408, 0x00000000, 0x00400001, 0x000000a0, 0x00002000, 0x40220400, 0x00444000, 0x80021840, 0x10830800, + 0x00000400, 0x00006040, 0x00080000, 0x28200820, 0x50100000, 0x00100000, 0x40003010, 0x10000008, 0x00022048, 0x80280002, + 0x34500000, 0x40008004, 0x00000020, 0x00144008, 0x00080040, 0x00008002, 0x02a20800, 0x00000000, 0x0a200000, 0x40d0a608, + 0x44420000, 0x00000000, 0x00800440, 0x0111c000, 0x08200806, 0x10000020, 0x00001014, 0x00000000, 0x38180000, 0x0000000a, + 0x20084080, 0x40002000, 0x40804004, 0x00108000, 0x84620c00, 0x80002001, 0x28428002, 0x00000050, 0x00000000, 0x00800801, + 0x00040080, 0x04000000, 0x30000040, 0x08480404, 0x08201000, 0x00001020, 0x44606400, 0x00802028, 0x00000010, 0x0a380802, + 0x10005010, 0x04000400, 0x4a128000, 0x20000004, 0x00802000, 0x00080008, 0x00004006, 0x00049000, 0x40800800, 0x00220000, + 0x00000000, 0x18509222, 0x04800460, 0x00000000, 0x02088210, 0x00000400, 0x04000800, 0x00406058, 0x00001020, 0x0010000a, + 0x18280800, 0x00000000, 0x10109010, 0x00422001, 0x0008c004, 0x00402008, 0x24800800, 0x00020001, 0x40000002, 0x10084004, + 0x04020040, 0x80800000, 0x10008082, 0x008004a0, 0x00000010, 0x00000001, 0x00400800, 0x24001042, 0x10200408, 0x00000020, + 0x04200028, 0x60402010, 0x00020000, 0x00040000, 0x08280000, 0x00400008, 0x30100002, 0x40048004, 0x00008000, 0x20000480, + 0x000a0000, 0x00040060, 0x42000002, 0x04000000, 0x00800010, 0x00220008, 0x88400800, 0x02003004, 0x04840800, 0x18100408, + 0x00004000, 0x10100024, 0x44600001, 0x00201012, 0x00000000, 0x08040000, 0x70182000, 0x00000040, 0x8080000c, 0x20004480, + 0x00000001, 0x080a0000, 0x00001042, 0x80000000, 0x40400000, 0x00800000, 0x00200841, 0xa8022000, 0x0c000800, 0x00501000, + 0x20800028, 0x00000000, 0x00620000, 0x04002000, 0x30080082, 0x00004000, 0x000008a0, 0x20048004, 0x41800080, 0x12081850, + 0x00021000, 0x00000010, 0x00802000, 0x00042020, 0x04000000, 0x00104800, 0x10001004, 0x00020420, 0x00408802, 0x00080008, + 0x00081000, 0x02400212, 0x00080000, 0x20000089, 0x08100400, 0x00002004, 0x00000400, 0x10300020, 0x00030080, 0x80800802, + 0x60001060, 0x00000001, 0x00801090, 0x40002008, 0x88020000, 0x00200000, 0x00004008, 0x00500054, 0x04000020, 0x10201002, + 0x00000000, 0x00001002, 0x00404001, 0x00180094, 0x18002000, 0x04024401, 0x10004000, 0x80000004, 0x40000820, 0x00880000, + 0x4040400c, 0x00200000, 0x08008802, 0x00000000, 0x30380000, 0x00000210, 0x00801000, 0x48300040, 0x00000000, 0x02480000, + 0x0c002010, 0x40200000, 0x00000000, 0x90040404, 0x08000800, 0x10000032, 0x62c20000, 0x00000000, 0x40080000, 0x08023082, + 0x80004000, 0x80000000, 0x24608c20, 0x80000000, 0x08000020, 0x10620800, 0x00100002, 0x00000000, 0x20a81830, 0x00000000, + 0x00000008, 0x40080002, 0x00000801, 0x00440004, 0xc01a0018, 0x90000000, 0x001a0000, 0x48840002, 0x20010009, 0x000800a0, + 0xc0848000, 0x04000000, 0x40040000, 0x18409000, 0x00004000, 0x00004084, 0x40401412, 0x80000000, 0x00208002, 0x08080a20, + 0x00900000, 0x00002209, 0x40001850, 0x00000008, 0x00020450, 0x0048e002, 0x08000000, 0x0404282c, 0x60004000, 0x00000000, + 0x00021010, 0x00148002, 0x20000201, 0x00002808, 0x00000400, 0x00000400, 0x04684024, 0x00800080, 0x00280010, 0x00128802, + 0x0a001220, 0x00003008, 0x001000b1, 0x00000464, 0x00802000, 0x04084450, 0x00028008, 0x00000004, 0x400008a2, 0x20044001, + 0x00008002, 0x00001014, 0x80020040, 0x10000001, 0x00c1200a, 0x00000882, 0x00000400, 0x04484084, 0x10011030, 0x00040020, + 0x080c0440, 0x8412d080, 0x00000020, 0x980a8804, 0x00000050, 0x20000000, 0x02801013, 0x10140020, 0x60000400, 0x14082208, + 0x00001040, 0x08004084, 0x40200028, 0x00023003, 0x84800000, 0x50128002, 0x42040414, 0x00000800, 0x20280208, 0x0a840020, + 0x40003002, 0x00800400, 0x10500010, 0x00000804, 0x88228022, 0x00000008, 0x20000050, 0x009810a1, 0x50200000, 0x00000008, + 0x04402056, 0xa0090000, 0x00000010, 0x28204c24, 0x40022080, 0x00000000, 0x10909012, 0x84020000, 0x00c00000, 0x2008208b, + 0x08000000, 0x00400000, 0x40800484, 0x00108002, 0x80000000, 0x00043200, 0x00080044, 0x08802908, 0x000ac462, 0x40000400, + 0x02001010, 0x90504a20, 0x08040000, 0x00082000, 0x24009452, 0x0002002c, 0x40400210, 0x00006808, 0x00000005, 0x00028002, + 0x98105404, 0x04202000, 0x08404020, 0x2280a013, 0x00000208, 0x00400000, 0x40085a06, 0x02100400, 0x08040020, 0x82028408, + 0x00e82891, 0x00104004, 0x10810823, 0x40441010, 0x00088082, 0x24001418, 0x10202000, 0x40024080, 0x08402849, 0x00010004, + 0x008a0400, 0x80404024, 0x34208002, 0x001000a0, 0x2088881a, 0x80043001, 0x40100000, 0x00801091, 0x00600480, 0x08000808, + 0x449000c0, 0x0a000030, 0x00000020, 0x84040480, 0x28020808, 0x10501216, 0x0a800000, 0x00080000, 0x80006000, 0x14500080, + 0x60080008, 0x10000004, 0x28986000, 0x42020009, 0x00408012, 0x40000804, 0x80020200, 0x02802200, 0x900a8006, 0x80108020, + 0x0000000c, 0x62c00000, 0x89220641, 0x20208832, 0x80480000, 0x18141008, 0x50002001, 0x08221010, 0x00100000, 0x20020408, + 0x14192000, 0x00009042, 0x00804020, 0x60781000, 0x80000014, 0x80400000, 0x50124804, 0x00088046, 0x00000081, 0xc0021000, + 0x00884420, 0x0800a404, 0x40c400c1, 0x00800001, 0x20010802, 0x040000f0, 0x10008682, 0x80001000, 0x00008422, 0x08200800, + 0x14101008, 0x0c000810, 0x02006004, 0x60200000, 0x10001618, 0x000a3002, 0x0824c010, 0x0008220c, 0xf0080000, 0x80820400, + 0x0000180c, 0x04408052, 0x02200008, 0x90808203, 0x0010c000, 0x04000c60, 0x00800010, 0x10500006, 0x48201801, 0x00404020, + 0x20008000, 0x00000010, 0x10207027, 0x40100008, 0xa0002000, 0x00409018, 0x008a1080, 0x00000006, 0x70082800, 0x28004018, + 0x900200a1, 0x0000d002, 0x04000400, 0x004000d0, 0x80002002, 0x00820001, 0x44400020, 0x10000c49, 0x08000000, 0x80209000, + 0x000800c4, 0x40000c00, 0x00348002, 0x08000020, 0x10001810, 0x009a3000, 0x58000810, 0x20400240, 0x2008002c, 0x00005000, + 0x80042022, 0x00440020, 0x40027804, 0x0020a200, 0x02000000, 0xc0820000, 0x20009012, 0x02000404, 0x00000248, 0x04d20000, + 0x08386442, 0x04400010, 0x00020000, 0x18000800, 0x40600024, 0x008202c0, 0x00080012, 0x50209008, 0x20100060, 0x0008200c, + 0x20001800, 0x04404001, 0x80000800, 0x401a8402, 0x00804004, 0x08008000, 0x840000b6, 0x204a1001, 0x0080008c, 0xd8180404, + 0x00000041, 0x00004000, 0x04c0ac00, 0x40200044, 0x18300011, 0x00004400, 0x00400000, 0x13200820, 0x28020000, 0x42100000, + 0x12001010, 0x00040000, 0x08388808, 0x20480008, 0x50002000, 0x04000004, 0x10044044, 0x40080010, 0x00000000, 0x10028008, + 0xc2500812, 0x00a02000, 0x26000001, 0x00880000, 0x00200204, 0x00000440, 0x88d08000, 0x04000800, 0x89080820, 0x10220000, + 0x20000414, 0x04000000, 0x00500010, 0x10001000, 0x28080008, 0x08121000, 0x40002014, 0x80004004, 0x68001000, 0x00088000, + 0x00008000, 0x90020000, 0x4080008a, 0x28800081, 0x04000000, 0x00389040, 0x90060048, 0x00500400, 0x04000000, 0x08000020, + 0x00880040, 0x80420004, 0x08a00000, 0x40800800, 0x004022e0, 0x10800200, 0x00001000, 0x00180094, 0x20002000, 0x00000000, + 0x4018080a, 0x00040000, 0x14004c28, 0x40020004, 0x20020002, 0x08009000, 0x00000000, 0x02800000, 0x00000200, 0x40040400, + 0x04004800, 0x00080404, 0x08c000c0, 0x00018000, 0x44000802, 0x08300021, 0x10400000, 0x800210a0, 0x40100018, 0x20280400, + 0x00003001, 0x00800008, 0x40000000, 0x00480024, 0x00004000, 0x80020002, 0x00008000, 0x00200000, 0x00000000, 0x00820089, + 0x044c4002, 0x04000400, 0x00424004, 0x80800040, 0x08000800, 0x00c00800, 0x04004660, 0x80080004, 0x0c201020, 0x04002c10, + 0x00100008, 0x40000012, 0x10009804, 0x00004000, 0x00080008, 0x20003000, 0x40008000, 0x0404024c, 0x08504023, 0x00000040, + 0x80200000, 0x000a8002, 0x04000a11, 0x20000000, 0x02900400, 0x00400000, 0x00080050, 0x04009420, 0x48000000, 0x00200024, + 0x00000c08, 0x40003010, 0x00900026, 0x90028801, 0x00006000, 0x2000901a, 0x00281040, 0x00800000, 0x40004000, 0x20400004, + 0x00000800, 0x88004423, 0x00129084, 0x10800000, 0x24020002, 0x00000091, 0x00000800, 0x048000c0, 0x00414424, 0x00000000, + 0x04800002, 0x300040c4, 0x00020000, 0x04041820, 0x2a208002, 0x00002000, 0x10101000, 0x00200210, 0x00082004, 0x20000000, + 0x40640458, 0x00000000, 0x40004004, 0x10861808, 0x8000a002, 0x04020000, 0x52044030, 0x00400204, 0x02820000, 0x0024a00a, + 0x00080440, 0x04c00000, 0x12004084, 0x00280001, 0x08100000, 0xc0c08820, 0x00800004, 0x10020010, 0x20301001, 0x80022000, + 0x00080000, 0x64000498, 0x00400004, 0x00000001, 0x40085800, 0x0080a000, 0x00220002, 0x88400090, 0x00200081, 0x10000000, + 0x04840000, 0x004c1400, 0x08802040, 0x2400400c, 0x00280808, 0x00002410, 0x8484d044, 0x08308020, 0x00002800, 0x80420000, + 0x10004002, 0x00001014, 0x0e100009, 0x60002200, 0x00088002, 0x00100008, 0x00040004, 0x44004000, 0x00200c61, 0x20020000, + 0x00000002, 0x0800a200, 0x00800611, 0x00202820, 0x82001008, 0x04480050, 0x00000000, 0x20004404, 0x08101000, 0x00000208, + 0x80200820, 0x10120012, 0x00404000, 0x0080b081, 0x00002028, 0x00080000, 0x20500844, 0x04004000, 0x00000400, 0xc82180b6, + 0x00008802, 0x80000000, 0x00160011, 0x40800080, 0x00000801, 0xc40a540a, 0x00000440, 0x20000010, 0x4440b024, 0x10250081, + 0x10000020, 0x000c1414, 0x02200800, 0x40180000, 0x0800e22a, 0x84101010, 0x00000000, 0x72c20605, 0x00000008, 0x00026820, + 0x3c088442, 0x08804000, 0x42440000, 0x80080205, 0x00020020, 0x20409000, 0x10280c1a, 0x02880001, 0x40000200, 0x28006028, + 0x04000800, 0x10300446, 0x80405010, 0x00a10820, 0x62080001, 0x88028002, 0x04801040, 0x00102008, 0x500040d5, 0x00400000, + 0xa00a0008, 0x04002442, 0x00008000, 0x10004024, 0x48000889, 0xa0020000, 0x0038b000, 0x1080441a, 0x00800000, 0x08082080, + 0x20400801, 0x04000008, 0x10000424, 0x40425040, 0x08a00020, 0x0c420000, 0x10145454, 0x00000440, 0x08200000, 0x2000a82a, + 0x00080820, 0x10100000, 0x02025215, 0x44881010, 0x20000008, 0x8000a412, 0x40022008, 0x00000004, 0x02e44a71, 0x08004004, + 0x00000000, 0x10129412, 0x00008003, 0x02c00000, 0x00202a28, 0x200002c0, 0x0c400000, 0x00085414, 0x00100441, 0x18200800, + 0xa00aa02a, 0x00000820, 0x14000010, 0x00105085, 0x20881010, 0x40000000, 0x8422a40a, 0x00002008, 0x40500004, 0x08a048a1, + 0x00004004, 0x00028000, 0x90101412, 0x00408002, 0x00800080, 0x20082829, 0x00400081, 0x0c000040, 0x40045414, 0x80000440, + 0x08000000, 0x34102000, 0x0c400080, 0x00004004, 0x82260000, 0x08208220, 0x20080000, 0x12900000, 0x30100010, 0x40084084, + 0x80020000, 0x200c0008, 0x40002c40, 0x06e00100, 0x40040204, 0x00020001, 0x90104024, 0x80028010, 0x00400000, 0x22a81000, + 0x06c00080, 0x08000000, 0x10102000, 0x04400002, 0x08000014, 0xa02a0040, 0x08200000, 0x00100008, 0x10800420, 0x50104010, + 0x00200000, 0xa04a0008, 0x20081090, 0x00000000, 0x48800040, 0x40040000, 0x00000801, 0x8062a020, 0x80020406, 0x00001000, + 0x38880828, 0x8083820f, 0x04400000, 0x00000000, 0x04601011, 0x000204a0, 0x40000012, 0x14100002, 0x00400000, 0x08800004, + 0x04000088, 0x00204803, 0x00400920, 0x02840004, 0x00000801, 0x80420000, 0x22000002, 0xc0020000, 0x00000008, 0x70000841, + 0x20010040, 0x00200802, 0x60001000, 0x00000008, 0x00140822, 0x9000801c, 0x20002000, 0x04190008, 0x18024000, 0x40000048, + 0x00000000, 0x0a020800, 0x40100003, 0x04000000, 0x40201084, 0x20100820, 0x80080000, 0x20008420, 0x00000002, 0x00102001, + 0x00880008, 0x00804044, 0x20280018, 0x40020000, 0x10100000, 0x00400010, 0x42110000, 0x00020040, 0x00000080, 0x10500004, + 0x08002000, 0x00400048, 0xa0201000, 0x00008040, 0x00480000, 0x40002000, 0x040a1000, 0x60008000, 0x98000002, 0x40000040, + 0x10900021, 0x00400000, 0x00040000, 0x00800000, 0x04580020, 0x00000000, 0x98820000, 0x04540000, 0x00000400, 0x08000000, + 0x40000000, 0x00040000, 0x00800020, 0x80040410, 0x04000000, 0x20802000, 0x80408000, 0x00081000, 0x00040000, 0x00000000, + 0x02010000, 0x14800000, 0x40380003, 0x00000008, 0x83001294, 0x00200010, 0x00000000, 0x00414000, 0x80040000, 0x40040000, + 0x08001000, 0x00000000, 0xa0084000, 0x00202028, 0x40000000, 0x00200000, 0x80800060, 0x00002080, 0x00008040, 0x00140000, + 0x00908000, 0x90000082, 0x00021400, 0x00000080, 0x01005001, 0x08200080, 0x04010000, 0x00080002, 0x10000000, 0x02240414, + 0x00000000, 0x02000000, 0x00080022, 0x80c12000, 0x40000002, 0x00800211, 0x00400000, 0xa0000000, 0x00400008, 0x00004000, + 0x1c040008, 0x00084000, 0x20a08080, 0x80402000, 0x14404084, 0x00040040, 0x08012000, 0x00000000, 0x00002000, 0x10400006, + 0x0c113060, 0xc0000080, 0x04020001, 0x28000010, 0x00894001, 0x00000002, 0x01800080, 0x00040040, 0x24c00000, 0x00022000, + 0x4000288c, 0x00001000, 0x00080100, 0x80004200, 0x00041030, 0x88000040, 0x00000800, 0x40006000, 0x00000020, 0x00cc0840, + 0x00000002, 0x00082400, 0x00000854, 0x0000a840, 0x00400001, 0x008000a1, 0x00020000, 0x40004418, 0x10000000, 0x42000080, + 0x10005000, 0x00082080, 0x00000400, 0x10000010, 0x00000054, 0x00000000, 0x08000000, 0x00000c01, 0x40140030, 0x00000011, + 0x20404800, 0x80000008, 0x00120021, 0x00201440, 0x04000000, 0x0800400c, 0x10002010, 0x00000002, 0x00100060, 0x0040a08a, + 0x00000060, 0x48000305, 0x00006000, 0x00000810, 0x00100001, 0x20cc4010, 0x00008000, 0x40000008, 0x02000404, 0x08202884, + 0x22800000, 0x00004000, 0x00060042, 0x00208000, 0x34000000, 0x0080a024, 0x88110001, 0x00004020, 0x48101008, 0x01000000, + 0xc0201002, 0x00600040, 0x24000000, 0x80135000, 0x00028401, 0x00000000, 0x0080000c, 0x80c80080, 0x01020001, 0xc0040080, + 0x08001020, 0x81400000, 0x00400000, 0x80000800, 0x00028000, 0x02000000, 0x00009000, 0x68400890, 0x00080000, 0x00084000, + 0x20000000, 0x02210000, 0x0002c004, 0x44200800, 0x00030200, 0x00300000, 0x00001010, 0x20080008, 0x04a89080, 0x00000000, + 0x18200000, 0x32800000, 0x00408012, 0x14140000, 0x44820000, 0x00284000, 0x00080000, 0x18000004, 0x00000400, 0x42010000, + 0x08201050, 0x20020820, 0x90000000, 0x20040000, 0x10960010, 0x00010000, 0x00083044, 0x00000000, 0x04440000, 0x80800000, + 0x08014804, 0x08040008, 0x00302000, 0x00408000, 0x30000000, 0x00a00040, 0x600c0282, 0x20200000, 0x08200000, 0x00190004, + 0x08000000, 0x00a80040, 0x00000800, 0x80050002, 0x00100000, 0x42941010, 0x00c00000, 0x20040000, 0x00402048, 0x00000000, + 0x00848004, 0x00050004, 0x00000000, 0x00000000, 0x08018002, 0x00080000, 0x00101010, 0x80020006, 0x00008000, 0x20402000, + 0x02800000, 0x00001008, 0x00080024, 0x04000040, 0x00000000, 0x5000c402, 0x00000000, 0x00020000, 0x00280004, 0x10109820, + 0x08000000, 0x20040450, 0x20082008, 0x00000080, 0x00000802, 0x00040000, 0x00000020, 0x400050c4, 0x80020012, 0x00000000, + 0x00008800, 0x40800004, 0x00000000, 0x00004248, 0x04042040, 0x00400008, 0x80008002, 0x08200000, 0x00000000, 0x00000284, + 0x00100000, 0x00000000, 0x04080042, 0x20000008, 0x08000000, 0x80027800, 0x50000000, 0x00000000, 0x80101051, 0x8002c020, + 0x10000000, 0x84001000, 0x00008000, 0x00000204, 0x08200400, 0x220c0000, 0x00000000, 0x00500c52, 0x40800440, 0x04002000, + 0xa00a8010, 0x08200880, 0x00800020, 0x40084000, 0x00001000, 0x02000018, 0x24024000, 0x00800000, 0x12102000, 0x08044044, + 0x00400000, 0x00080000, 0x90248000, 0x083a0002, 0x40008000, 0x20000000, 0x80810090, 0x00100004, 0x40040008, 0x00400040, + 0x00080020, 0x80000000, 0x08000800, 0x00000000, 0x40070002, 0x10400008, 0x00802000, 0x80100000, 0x02002030, 0x04000000, + 0x20200040, 0x08004004, 0x40000000, 0x14040002, 0x00100000, 0x20000010, 0x00000820, 0x20000800, 0x000020a8, 0x40001000, + 0x00080010, 0x10005000, 0x40200000, 0x0c802000, 0x20000800, 0x1a20804c, 0x08204000, 0x10001004, 0x00100002, 0x00420002, + 0x00088440, 0x00000000, 0x10100005, 0x28080800, 0x00200000, 0xc0028400, 0x00001044, 0x00800020, 0x00000028, 0x02002800, + 0x00000090, 0x80481010, 0x00040002, 0x00000000, 0x00000820, 0x00002000, 0x0010400e, 0xc0001000, 0x00001084, 0x10008000, + 0x16008002, 0x00080040, 0x20000200, 0x00000080, 0x000c0800, 0x00000008, 0x00040040, 0x00528000, 0x0a000004, 0x10010000, + 0x00000000, 0x00200000, 0x4820000c, 0x00004000, 0x10080830, 0x00001000, 0x00008000, 0x30000010, 0x20000000, 0x00082008, + 0x40129400, 0x00040040, 0x00404000, 0xe0002016, 0x00020000, 0x04000022, 0x00808050, 0x40200000, 0x48801000, 0x02000008, + 0x00000840, 0x24040404, 0x00000000, 0x08010000, 0x41000000, 0x00b22c60, 0x10100004, 0x44001000, 0x00200092, 0x2000a00a, + 0x00000000, 0x086c0000, 0x00040004, 0x40900000, 0x80080000, 0x00020000, 0x80508080, 0x40040802, 0x00010040, 0x58000090, + 0x04820000, 0x00400000, 0x10001040, 0x64200004, 0x08000000, 0x00002800, 0x14000418, 0x00001020, 0x00204000, 0x0800080c, + 0x20000000, 0x10002010, 0x40001000, 0x02080008, 0x20804044, 0x00002000, 0x40000002, 0x00800000, 0x8826c014, 0x00008000, + 0x00000820, 0x00020002, 0x04800400, 0x02000040, 0x00000000, 0x00001010, 0x00000820, 0x64000440, 0x00100004, 0x00200020, + 0x1c00080a, 0x00000000, 0x10020010, 0x60103000, 0x00042000, 0x2008008c, 0x00000000, 0x40018002, 0x00000040, 0x04066004, + 0x80000080, 0x00022000, 0x00008002, 0x04a00000, 0x00010040, 0x18001280, 0x00000010, 0x04440000, 0x10000040, 0x00100000, + 0x14000000, 0x00600010, 0x00002002, 0x20080000, 0x08200200, 0x00000008, 0x10040000, 0x04020000, 0x02004400, 0x00020000, + 0x60080004, 0x00000000, 0x40241000, 0x12008000, 0x00800800, 0x00000000, 0x80124008, 0x02000030, 0x00000000, 0x04800400, + 0x40200016, 0x00000000, 0x0c000000, 0x00208000, 0x80100008, 0x18081000, 0x000400c2, 0x00000000, 0x10900000, 0x00000000, + 0x800a0040, 0x64010002, 0x00000000, 0x00050000, 0x40800000, 0x000000c0, 0x04000000, 0x80020000, 0x00402000, 0x00800000, + 0x8001000c, 0x0c001004, 0x00000000, 0x20400010, 0x10008001, 0x80004000, 0x00000820, 0x00800080, 0x10080080, 0x40003050, + 0x00001000, 0x00408000, 0x00000088, 0x00000440, 0x08a00002, 0x04004034, 0x00000004, 0x00200820, 0x02828000, 0x00101000, + 0x00088000, 0x00000000, 0x00000090, 0x00002001, 0x04004408, 0x80048000, 0x80288006, 0x08000860, 0x00100882, 0x00000080, + 0x02400010, 0x00000080, 0x80000000, 0x02040040, 0x04020060, 0x48002020, 0x0040500e, 0x00100010, 0x80000010, 0x0000800c, + 0x00000000, 0x20110010, 0x4880428e, 0x00000000, 0x00002000, 0x10408000, 0x00040002, 0x4000000e, 0x90008840, 0x000040a2, + 0x04040000, 0x00208040, 0x00004002, 0x08000000, 0x102a3000, 0x80d08000, 0x00000000, 0x20201020, 0x24000000, 0x00000080, + 0x401c0000, 0x18200c00, 0x40400004, 0xa01a0008, 0x00001080, 0x00020000, 0x6280a000, 0x02102008, 0x50800000, 0x04080080, + 0x00044000, 0x00000040, 0x00c00000, 0x80208000, 0x08020800, 0x10900000, 0x00800200, 0x00100008, 0x64480000, 0x00202008, + 0x04200000, 0x004c0000, 0x40000800, 0x00000004, 0xb00c1020, 0x08101000, 0x10000002, 0x80880000, 0x00040000, 0x00000000, + 0x0e000000, 0x00042000, 0x00020040, 0x14a04000, 0xc0000000, 0x00004024, 0x04000010, 0x20040000, 0x00208002, 0x08000820, + 0x00020000, 0x00100039, 0x00003800, 0x0488200c, 0x00004440, 0x20000002, 0x00000000, 0x08004828, 0x4000900c, 0x00228040, + 0x02001010, 0x1004440a, 0x00800001, 0x02082008, 0x00100002, 0x00000420, 0x00444044, 0x40001800, 0x00000800, 0x0008a002, + 0x08300030, 0x00101008, 0x008002a0, 0x00000810, 0x04000000, 0x02482048, 0x00009804, 0x00200000, 0x48040808, 0x00004004, + 0x00000082, 0x80001014, 0x0040a048, 0x00000080, 0x02102008, 0x00000200, 0x04000040, 0x00004004, 0x40000001, 0x20002800, + 0x46844400, 0x10400000, 0x00000000, 0x88020822, 0x24200040, 0x00000410, 0x02801021, 0x10080400, 0x400c8000, 0x0400240c, + 0x30100000, 0x00004004, 0x08200848, 0x42100011, 0x00020000, 0x1094d012, 0x80000040, 0x00000004, 0x00080008, 0x04826800, + 0x04008040, 0x02a40404, 0x10000200, 0x08200000, 0x8002c821, 0x20082002, 0x00000010, 0x00811000, 0x08100204, 0x00042000, + 0x04400050, 0xc002000a, 0x40000000, 0x00a04004, 0x00051800, 0x10000008, 0x00109016, 0x88004040, 0x20400004, 0x0480028c, + 0x0000e000, 0x08000000, 0x40c40040, 0x06120000, 0x00004000, 0x0a401086, 0x00140600, 0x08200828, 0x8000a402, 0x00400010, + 0x10001000, 0x02000824, 0x40020010, 0x00000002, 0x20089450, 0x00026008, 0x00000000, 0x4080280c, 0x02004001, 0x00000402, + 0x90065004, 0x28008000, 0x00c00020, 0x20088807, 0x08040040, 0x40003008, 0x04044000, 0x01020450, 0x00100021, 0x082286c2, + 0x00000800, 0x04084044, 0x82310af0, 0x00043008, 0x00208028, 0x40001052, 0x00002000, 0x84444084, 0x48102a08, 0x22080000, + 0x00008000, 0xc0305044, 0x10080002, 0x40000200, 0x2800a812, 0x80800080, 0x00000010, 0x44085288, 0x00d00040, 0x88000004, + 0x52828000, 0x0c200010, 0x00000022, 0x846a0c00, 0x08001000, 0x00003000, 0x18200800, 0x66004010, 0xa0022400, 0x14800000, + 0x0028101e, 0x40804804, 0x28082040, 0x00002001, 0x84009000, 0x50280006, 0x00020000, 0x08042000, 0xa0a20000, 0x00080c00, + 0x80000420, 0x4090000a, 0x04000040, 0x00000004, 0x84041c20, 0x08600010, 0x00101098, 0x08250020, 0x40000004, 0x80802000, + 0x0c101028, 0x00104040, 0x00004800, 0x18240000, 0x40002004, 0x80008002, 0x74040000, 0x00800200, 0x00b40288, 0x80089002, + 0x00400002, 0x04404044, 0x60840880, 0x08001010, 0x00218800, 0x04000410, 0x12080800, 0x00201000, 0x00c48420, 0x28000800, + 0x0008000a, 0x18221830, 0x08002000, 0x4404400c, 0x08882002, 0xa0000030, 0x08000000, 0x400ce80c, 0x22080000, 0x80020010, + 0x40040004, 0x0000800a, 0x02000040, 0x40000401, 0x00804008, 0x44100840, 0x0a802400, 0x10200020, 0x02201020, 0x0c04041a, + 0x20020880, 0x0080a000, 0x18101210, 0x80044000, 0x0049008c, 0xa0009040, 0x00022000, 0x1c040002, 0x0088488c, 0x40011208, + 0x90000000, 0x00001004, 0x00028002, 0x00000040, 0x8091a202, 0x20000888, 0x0c420000, 0x00014080, 0x400080c0, 0x10200012, + 0x04004404, 0x00401800, 0x00000010, 0x08000120, 0x10208880, 0x60000054, 0x080a1008, 0x10042000, 0x00200028, 0x20086042, + 0x08800000, 0x8022c020, 0x00041004, 0x44000000, 0x08000800, 0x86140010, 0x00828006, 0x00800c08, 0x02002040, 0x00000000, + 0x08204044, 0x00080420, 0x04000000, 0x1014a012, 0x0c200020, 0x00801808, 0xc0040240, 0x38001030, 0x08d80000, 0x00080008, + 0x24000084, 0x08012020, 0x80420014, 0x00094042, 0x40048000, 0x00001010, 0x80420080, 0x4880a002, 0x24802000, 0x8000020c, + 0x082100c0, 0x04440000, 0x00830000, 0x10000042, 0x00100000, 0x00000000, 0x04c0c080, 0x82040020, 0x0c000800, 0x02200000, + 0x20c61000, 0x00080002, 0x10000010, 0x40000008, 0x022a2800, 0x20000000, 0x00040004, 0x50002000, 0x00084022, 0x00800008, + 0x400c4002, 0x82128010, 0x06004001, 0x08000002, 0x00800040, 0x00000440, 0x02a40010, 0x24800000, 0x80000000, 0x08290004, + 0x10001820, 0x00101010, 0x28000400, 0x10002008, 0x04080008, 0x00000000, 0x20043000, 0x40000004, 0x000e0000, 0x88002012, + 0x208a8022, 0x80100000, 0x04010000, 0x00c00080, 0x00008010, 0x48014040, 0x40500040, 0x80000000, 0x0401000d, 0x00000000, + 0x26000000, 0x10000004, 0x08080802, 0x04808000, 0x84220020, 0x10000010, 0x00001020, 0x00000000, 0x00000400, 0x30082000, + 0x00101048, 0x10040000, 0x20086024, 0x60008000, 0x00029802, 0x00000000, 0x08100000, 0x02800000, 0x00000002, 0x00042000, + 0x00020000, 0x00004004, 0x0e208443, 0x40218020, 0x00000800, 0x08002010, 0x00900080, 0x00201010, 0x10000040, 0x00490000, + 0x20102018, 0x00000000, 0x40340000, 0x28004000, 0x00020004, 0x80020000, 0x40040016, 0x10018004, 0x00050020, 0x80848200, + 0x20402080, 0x04000000, 0x00000004, 0x08440040, 0x00000800, 0x00400400, 0xe40010a0, 0x00240008, 0x88024030, 0x00000840, + 0x00802000, 0x10000030, 0x00401000, 0x24084080, 0x10020008, 0x00002010, 0x40004002, 0x280c2008, 0x00108005, 0x00000000, + 0x8004c020, 0x00820002, 0x00001411, 0x0240000a, 0x80b00042, 0x04000010, 0x00000440, 0x88000024, 0x00001800, 0x48040020, + 0x04202009, 0x40000002, 0x10000000, 0x80109010, 0x20002000, 0x00100014, 0x00280048, 0x0000c000, 0x202c008e, 0x40100000, + 0x02000000, 0x80068064, 0x00081012, 0x00000200, 0x80018080, 0x00900000, 0x20440000, 0x000000c0, 0x06804004, 0x00001000, + 0x02200000, 0x00804006, 0x00041800, 0x00200080, 0x08080420, 0x00001010, 0x00000040, 0x70408020, 0x00040000, 0x10002008, + 0x20080404, 0x00624000, 0x62080040, 0x00842024, 0x80008080, 0x00060002, 0x00041014, 0x08000000, 0x00800800, 0x02282008, + 0x00000440, 0x04800002, 0x40844004, 0x08000820, 0x00200000, 0x1010804a, 0x10020000, 0x00101010, 0x20002280, 0x40012000, + 0x200c0008, 0x10600040, 0x00010000, 0x60020004, 0x94840800, 0x00008002, 0x40200008, 0xa00a2000, 0x04804000, 0x08400000, + 0x10052098, 0x10000060, 0x04400000, 0x40824005, 0x08200000, 0x04009018, 0x00060004, 0x00200002, 0x00008800, 0x885a0020, + 0x20001000, 0x02004004, 0x18802019, 0x00202008, 0x20080000, 0x14120042, 0x40008024, 0x00044010, 0x10200401, 0x00800808, + 0x00000042, 0x421ab010, 0x00800001, 0x02000020, 0x00040408, 0x04382040, 0x00000010, 0x80000c04, 0x0a044801, 0x00202028, + 0xc0421002, 0x10001400, 0x00004414, 0x00908080, 0x00202228, 0x60088000, 0x04400010, 0x40100000, 0x00000204, 0x203c0052, + 0x00028808, 0x80000000, 0x00100092, 0x4484108c, 0x00014000, 0x00020044, 0x04400002, 0x00001052, 0x00002800, 0x00008000, + 0x84000000, 0x10045004, 0x80200020, 0x62800010, 0x0802a808, 0x00000000, 0x00001010, 0x12880007, 0x00020000, 0xa0084000, + 0x4000a40a, 0x44000000, 0x00940004, 0x00205861, 0x08020002, 0x00008008, 0x20101440, 0x12000001, 0x00800000, 0x84082820, + 0x0002000c, 0x20020440, 0x0c241000, 0x40300000, 0x00000810, 0x88822028, 0x14000000, 0x00040000, 0x0051d0d6, 0x00800000, + 0xa0082000, 0x44008048, 0x40c40004, 0x00000002, 0x00002280, 0x88600010, 0x04028002, 0x00001040, 0x08310000, 0x00000080, + 0x9080a808, 0x44040000, 0x20500000, 0x9200d054, 0x00010000, 0x28040000, 0x40007414, 0x08000440, 0x10200000, 0x0002882a, + 0x10000820, 0x20082000, 0x42805015, 0x20003010, 0x08000000, 0x84088448, 0x00042008, 0x40020002, 0x08a05825, 0x00004004, + 0x00120002, 0x14009440, 0x00008003, 0x20000000, 0x0aa02828, 0x00000080, 0x04000040, 0x001c5404, 0x40000450, 0x0a000002, + 0x8022a828, 0x00100820, 0x10001000, 0x40854294, 0x20081010, 0x00002008, 0x8c408042, 0x00002008, 0x00040000, 0x48806a84, + 0x00004004, 0x00000002, 0x84129050, 0x20408002, 0x50800000, 0x00212a88, 0x00000280, 0x0c000040, 0x00501016, 0x08000040, + 0x0c000000, 0x40480000, 0x1c400000, 0x00004220, 0xa0a20800, 0x08284000, 0x00000004, 0x50800001, 0x10188000, 0x00000800, + 0xa4020040, 0x20088010, 0x00000480, 0x48a40000, 0x40042840, 0x00080021, 0x84120800, 0x80020408, 0x00001044, 0x0aa20000, + 0x02800000, 0x00000000, 0x04141010, 0x04400001, 0x0820001c, 0xc0004080, 0x08200000, 0x00001002, 0x10948040, 0x10100012, + 0x40000000, 0xb4480000, 0x60080040, 0x00000012, 0x10a41100, 0x400402c8, 0x00020000, 0x8450000a, 0x80020000, 0x00010000, + 0x10a00044, 0x02810003, 0x08400008, 0x44100040, 0x04400012, 0x00000002, 0x10000010, 0x020a2000, 0x51140004, 0x00002008, + 0x40c80042, 0x00000000, 0x0000012c, 0x10000002, 0x40000001, 0x80820008, 0x04100021, 0x88000000, 0x10180010, 0x01040208, + 0x08212000, 0x02044030, 0xc4180000, 0x20440000, 0x80001000, 0x00012000, 0x00a00040, 0x00020000, 0x08000000, 0x00000000, + 0x00202040, 0x08808009, 0x00000000, 0x08004000, 0x40c00080, 0x0000000d, 0x00008010, 0x28001021, 0x00400000, 0x24400000, + 0x11050800, 0x22210000, 0x80240000, 0x00024008, 0x00000002, 0x00300000, 0x00008024, 0x00008000, 0x00100020, 0x00042008, + 0x00000000, 0x00000008, 0x00800000, 0x00000000, 0x00000010, 0x04240000, 0x80020000, 0x00180440, 0x49604280, 0x20000004, + 0x13040002, 0x00600000, 0x00080040, 0x24800000, 0x00100080, 0xc0000000, 0x00000004, 0x10400040, 0x04002001, 0x59000080, + 0x20100824, 0x04000008, 0x70400000, 0x00908002, 0x94101000, 0x00000020, 0x00400004, 0x84000000, 0x20200420, 0x12040000, + 0x00102000, 0x40000000, 0x00a00c80, 0x40000000, 0x02024000, 0x08000021, 0x00080001, 0x44800004, 0x10003010, 0xc0000001, + 0x01400010, 0x20022000, 0x40c00000, 0x44000000, 0x00410004, 0x00400020, 0x00203800, 0x28000000, 0x04400000, 0x00000000, + 0x0010002c, 0x00000000, 0x20402040, 0x82020040, 0x00084000, 0x00212000, 0x20000800, 0x40000040, 0x00000001, 0x10000000, + 0x00000000, 0x28800000, 0x02028054, 0x00010000, 0x00000000, 0x00441200, 0x000000c8, 0x00000000, 0x000c0000, 0x00000000, + 0x00000020, 0x00000020, 0x00000002, 0x01424000, 0x80001010, 0x20010041, 0x002c0000, 0x00093000, 0x81000020, 0x00000000, + 0x00100420, 0x40000080, 0x00000004, 0x28580062, 0x00010011, 0x90848402, 0x04010025, 0x02004000, 0x80a82038, 0x10020000, + 0x00042004, 0x00000040, 0x00000000, 0x00040240, 0x00000820, 0x2c000000, 0x00000490, 0x00004000, 0x00001080, 0x02c00a00, + 0x0000009e, 0x80008000, 0x4020e006, 0x80800000, 0x00405088, 0x00008801, 0x04040002, 0x10400800, 0x00107400, 0x000000d1, + 0x00010800, 0x00004020, 0x20000408, 0x84080150, 0x00105200, 0x40000000, 0x80050008, 0x00002081, 0x40100014, 0x00400000, + 0x40100084, 0x100000d9, 0x00028002, 0x40200100, 0x005480c5, 0x00002010, 0x00024000, 0x00008803, 0x00012000, 0x20100008, + 0x00020018, 0x00002880, 0x00008042, 0x00011080, 0x00000040, 0x00004000, 0x04200090, 0x4600400a, 0x00208484, 0x10000000, + 0x00444000, 0x00889000, 0x10000804, 0x10208000, 0x04000000, 0x00001000, 0x00010000, 0x29020428, 0x00003000, 0x00200034, + 0x00040000, 0x00022000, 0x000a0002, 0x40010028, 0x00048000, 0x80020000, 0x20088001, 0x00000880, 0x11002000, 0x400c0002, + 0x082088c0, 0x09400000, 0x00000840, 0x00420402, 0x00050000, 0x00008000, 0x00002800, 0x00110000, 0x80400000, 0x10005000, + 0x0004000a, 0x00200000, 0x00c04000, 0x14040000, 0x00080000, 0x00084000, 0x02000000, 0x04100000, 0x00000800, 0x04400000, + 0x00400000, 0xa0880010, 0x10008000, 0x00500000, 0x00000040, 0x00000000, 0x80000000, 0xc0500020, 0x00060440, 0x000d0000, + 0x08120004, 0x40880820, 0x10400000, 0x240c0000, 0x10000000, 0x00010000, 0x20184010, 0x80002028, 0x00000000, 0x02f01002, + 0x08804004, 0x48200000, 0x00940001, 0x00410002, 0x10020000, 0x00800000, 0x00020000, 0x00080000, 0x0800c020, 0x16200040, + 0x00000002, 0x00280000, 0xa8000800, 0x000a0000, 0x20008000, 0x40090010, 0x10190020, 0xc0000040, 0x00220008, 0x80840000, + 0xd0010000, 0x08a04004, 0x40240000, 0x90880001, 0x60048002, 0x00002020, 0x00101004, 0x80000000, 0x01000000, 0x020a6088, + 0x00000000, 0x00001000, 0x48004850, 0x04420000, 0x02000000, 0x80a08044, 0x08000000, 0x00000820, 0x0010000c, 0x10000050, + 0x00000000, 0x44c0140c, 0x00002008, 0x00100000, 0x00000820, 0x40000000, 0x200c4000, 0x00000010, 0x00028002, 0x00000000, + 0x04003008, 0x82800000, 0x00001000, 0x00004804, 0x04400040, 0x00040000, 0x88028802, 0x00800020, 0x00000000, 0x00205000, + 0x00000000, 0x00000010, 0x20100842, 0x20002000, 0x10200008, 0x00000820, 0x400c0000, 0x00000000, 0x00100044, 0x80020008, + 0x44000000, 0x10400000, 0x00120000, 0x08000000, 0xa0200000, 0x02880000, 0x00000000, 0x40540400, 0x00400040, 0x00000000, + 0x140a0820, 0x80000000, 0x00240000, 0x7a982000, 0x10101010, 0x00000020, 0x84426000, 0x20080000, 0x00000000, 0x0820c000, + 0x00000000, 0x00000008, 0x14d0c000, 0x80008000, 0x00060004, 0x00800060, 0x00080000, 0x22000002, 0x40200020, 0x000a0040, + 0x20800000, 0x04040012, 0x0aa00000, 0x80400000, 0x10050000, 0x10100050, 0x80000000, 0x04428004, 0x00080000, 0x00000000, + 0x20848000, 0x00004006, 0x04000000, 0x10200008, 0x00148000, 0xc0001008, 0x02000000, 0x00820100, 0x80002028, 0x02100010, + 0x02080010, 0x00805000, 0x08000000, 0x00040008, 0x00000000, 0x00000004, 0x00224004, 0x08001000, 0x00008000, 0x00100000, + 0x04401040, 0x00000000, 0x10000001, 0x00080000, 0x00802400, 0x40060400, 0x00000050, 0x20001820, 0x00000800, 0x00080020, + 0x00000002, 0x00010010, 0x80021000, 0x04042008, 0x00000000, 0x0c088048, 0x00804000, 0x08004004, 0x00240000, 0x80000002, + 0x10808002, 0x04020000, 0x80000000, 0x20800000, 0x00000060, 0x00082000, 0x48200040, 0x00000012, 0x10040800, 0x00120820, + 0x10000440, 0x00001000, 0x09200000, 0x20000000, 0x00000020, 0x00101000, 0x14000010, 0x008a0020, 0x00280004, 0x08220008, + 0x64000000, 0x00000400, 0x42c40000, 0x80004004, 0x80000040, 0x20020000, 0x40000000, 0x02800400, 0x00400810, 0x04000000, + 0x04400040, 0x00080400, 0x08040000, 0x01000008, 0x88004800, 0x002a1020, 0x04047000, 0x50100000, 0x20010010, 0x80000000, + 0x00080000, 0x24a0004a, 0x00100000, 0x40000000, 0x00064004, 0x00000000, 0x00008000, 0xe2820802, 0x00a10000, 0x08000010, + 0x56100008, 0x04400000, 0x90140000, 0x00002044, 0x08280008, 0x24600030, 0x00000440, 0x00102020, 0x00200000, 0x48060000, + 0x00000000, 0x0018000c, 0x90001010, 0x20004000, 0x44888000, 0x00042008, 0x40240404, 0x00400000, 0x08024000, 0x02000400, + 0x80000000, 0x000a8040, 0x00400000, 0x02100000, 0xa0800000, 0x00001820, 0x04040000, 0x00480442, 0x00000010, 0x40200020, + 0x1a000808, 0x00180000, 0x00000010, 0xd0021004, 0x20084008, 0x00000000, 0x00002000, 0x50008002, 0x00040004, 0x08384040, + 0x86000000, 0x00020000, 0x00088002, 0x00000040, 0x02410010, 0x20800000, 0x10000820, 0x04440000, 0x00000040, 0x00002004, + 0x04080000, 0x48e00000, 0x00080000, 0x00100000, 0x88200218, 0x30000000, 0x00040040, 0x00100000, 0x00000040, 0x20000000, + 0x000a4004, 0x02000c10, 0x80000000, 0x40c40000, 0x00600000, 0x20020020, 0x80000010, 0x00000040, 0x00800400, 0x06000000, + 0x18005000, 0x20202000, 0x04400800, 0x003a0003, 0x00040000, 0x28000018, 0x00000000, 0x80008004, 0x10100000, 0x40040042, + 0xa0820000, 0x00094000, 0x00050800, 0x00100000, 0x40c00020, 0x00020010, 0x80100000, 0x02200000, 0x06400000, 0x00804000, + 0x08010000, 0x00000000, 0x00280000, 0x04400820, 0x20008012, 0x20000000, 0x18000020, 0x4100c080, 0x00040084, 0x00000010, + 0x80000000, 0x00001010, 0x20022408, 0x42000020, 0x00000040, 0x08464004, 0x08000004, 0x00000000, 0x00889028, 0x00000000, + 0x00001000, 0x0200200c, 0x00046000, 0x00180009, 0x00404440, 0x00000000, 0x40000000, 0x00041820, 0x00008004, 0x00000000, + 0xa21000c0, 0x40001000, 0x00440000, 0x00280040, 0x06000000, 0x00c00040, 0x00004006, 0x90200020, 0x10024000, 0x00000808, + 0x08180002, 0x00810010, 0x00004000, 0x08000000, 0x00000008, 0x00608042, 0x00144004, 0x00000000, 0x000808c1, 0x00000000, + 0x00000000, 0x84400000, 0x08020000, 0x80000000, 0x10a01040, 0x00001010, 0x02800000, 0x24180000, 0x00600400, 0x04000000, + 0x40080020, 0x00000800, 0x48000004, 0xb0840000, 0x00020010, 0x90000020, 0x40001000, 0x00080008, 0x60000000, 0x84440002, + 0x00424000, 0x84000000, 0x48800004, 0x01020000, 0x00040000, 0x00001000, 0x00400000, 0x02001000, 0x00800020, 0x00080000, + 0x24000000, 0x40100010, 0x00004800, 0x08000000, 0x20261000, 0x80020020, 0x00100000, 0x5280001e, 0x00000008, 0x60802000, + 0x04480000, 0x40040000, 0x00000040, 0x04020000, 0x80008002, 0x00404044, 0x000004b0, 0xc0000020, 0x00208008, 0x08000080, + 0x02000000, 0x00140021, 0x00401010, 0x04002008, 0x00081450, 0x00100010, 0x40444000, 0x00000820, 0x00000004, 0x80000000, + 0x00001010, 0x000a8008, 0x00080001, 0x00002428, 0x00000842, 0x00000040, 0x00044004, 0x44420410, 0x00080000, 0x00008048, + 0x008018a0, 0x02001010, 0x00000026, 0x20800000, 0x20000000, 0x00060050, 0x0008a008, 0x08000000, 0x80240828, 0x00005000, + 0x00000000, 0x04028014, 0x80040002, 0x00000000, 0x00002008, 0x80820820, 0x20080000, 0x0c004044, 0x80800000, 0x18002000, + 0x40440404, 0x00105000, 0x88000010, 0x10220020, 0x20080000, 0x10000000, 0x02101071, 0x00000800, 0x20000000, 0x54442808, + 0x80080424, 0x00020000, 0x28204804, 0x52000001, 0x00820008, 0x10109020, 0x84000004, 0x02004000, 0x20880018, 0x00208000, + 0x00000000, 0x58448440, 0x84905000, 0x00000024, 0x80028e42, 0x08000000, 0x00080000, 0x22811010, 0x40404840, 0x00040000, + 0x04482008, 0x20120000, 0x40040010, 0x08a14878, 0xa2002008, 0x00008002, 0xd0140010, 0x04420000, 0x00002000, 0x20080048, + 0x0a800000, 0x00200044, 0x40840000, 0x04120081, 0x08000020, 0x2400d082, 0x00040240, 0x00300000, 0x8802a440, 0x00880028, + 0x04105010, 0x52800024, 0x0c000000, 0x00000020, 0x24089410, 0x00002048, 0x00000004, 0x40202838, 0x80004001, 0xa008a440, + 0x30025014, 0x00040000, 0x04800800, 0x2218a001, 0x00040000, 0x00400430, 0x04045008, 0x02000041, 0x0001088c, 0x6802a462, + 0x04010000, 0x00404040, 0x02000820, 0x00001030, 0x08082008, 0x24d01072, 0x10040000, 0x00024000, 0x680c2828, 0x00008000, + 0x90820000, 0x0010400a, 0x20088000, 0x00800000, 0x2208880a, 0x04040040, 0x00002010, 0x84254006, 0x00100060, 0x80200808, + 0x420c0000, 0x06600010, 0x20000020, 0x84480444, 0x08700440, 0x00028000, 0x0aa00008, 0x50103014, 0x8008e048, 0x1c521000, + 0x20100000, 0x42004000, 0x28082008, 0x00000805, 0x04208010, 0xd0104004, 0x00820000, 0x48000000, 0x80028020, 0x02c80000, + 0x24000400, 0x03800000, 0x40400050, 0x29008800, 0x06420420, 0x0004000c, 0x40000000, 0x88050836, 0x04081000, 0x20002002, + 0x04401010, 0x00889008, 0x02804020, 0x302a0004, 0xc0040000, 0x04000010, 0x5006a040, 0x88140002, 0x0a000000, 0x808a0022, + 0x40008008, 0x04004044, 0x22800800, 0x50202010, 0x20018820, 0x0000044c, 0x10000000, 0x00840000, 0x00409460, 0x28200050, + 0x121a2008, 0x00000030, 0x00201000, 0x00800004, 0x30102018, 0x90484840, 0x40068000, 0x2000600c, 0x04800008, 0x00000800, + 0x8400d004, 0x00020020, 0x02000050, 0x0880ac05, 0x00280020, 0x44000040, 0x00000000, 0x10400408, 0x08001002, 0x00200474, + 0x00940800, 0x8010a018, 0x20000820, 0x10061000, 0x00200004, 0x20205008, 0x000a2002, 0x08008000, 0x0085084c, 0xc4104010, + 0x10020020, 0xc0208002, 0x40400000, 0x22910040, 0x08002002, 0x00020000, 0xc4000020, 0x00014040, 0x02500800, 0x08200010, + 0x04000468, 0x00000000, 0x10148000, 0x40e21030, 0x0a000000, 0x00040010, 0x30000000, 0x00785008, 0x60000400, 0x00082008, + 0x00000040, 0x80801804, 0x04024020, 0x48040000, 0x02000000, 0x800a8048, 0x30000400, 0x00002008, 0x24c04000, 0x02041000, + 0x08404042, 0x04040010, 0x00a01c22, 0x10000001, 0x08308022, 0x00400808, 0x20020000, 0x90580010, 0x04801004, 0x80040808, + 0x60019050, 0x08286002, 0x44051800, 0x20000024, 0x08925000, 0x82008000, 0x0006000a, 0x20000040, 0x04800008, 0x00014000, + 0x02400000, 0x18208800, 0x00c58042, 0x84000021, 0x00300082, 0x04080000, 0x88200000, 0x00300080, 0x00400004, 0x18001420, + 0x30800010, 0x000a1000, 0x00140820, 0x04080008, 0x38401000, 0x50020030, 0x08004004, 0xb0000000, 0x40041010, 0x00022000, + 0x80802000, 0x00000000, 0x00440004, 0x00880000, 0x06020008, 0x10508040, 0x04220400, 0x08000080, 0x00010800, 0x88220400, + 0x20080032, 0x12008050, 0x00900060, 0x00003008, 0x440e0000, 0xa0000020, 0x00000008, 0x00044010, 0x20610000, 0x40008006, + 0x804a8008, 0x48140002, 0x02800000, 0x00000000, 0x40890010, 0x16040000, 0x00200040, 0x00400000, 0x04000020, 0x80200820, + 0x00400040, 0x0c2a8400, 0x08200020, 0x00000000, 0x00500000, 0x10001000, 0x00100000, 0x00008010, 0x20080400, 0x00003048, + 0x82800000, 0x40040800, 0x00080000, 0x20324004, 0x80080000, 0x00008010, 0x42920000, 0x00000000, 0x80000008, 0x62800000, + 0x00400400, 0x01004000, 0x04008040, 0x09000020, 0x00200000, 0x10000800, 0x10100002, 0x00001020, 0x200c0010, 0x00082008, + 0x00900000, 0x30000000, 0x40000004, 0x000c4000, 0x80000000, 0x88220000, 0x00088014, 0x00000006, 0x00810000, 0x00000008, + 0x02000002, 0x04482000, 0x00030040, 0x08200000, 0x00008000, 0x04000400, 0x00c490c2, 0x00000010, 0x08000020, 0x00200000, + 0x02000000, 0x00000038, 0x98901000, 0x04004004, 0x00001000, 0x20382048, 0x00000000, 0x480c4404, 0x00000001, 0x00020000, + 0xc0000060, 0x1010c004, 0x00800401, 0xa2000000, 0x80001008, 0x00080800, 0x44000040, 0x8040d400, 0x00000018, 0x08000c60, + 0x002000c0, 0x808a1000, 0x12100030, 0x08000002, 0x0400c004, 0x20082018, 0x00410062, 0x00840000, 0x4800000c, 0x20004000, + 0x00000002, 0x80020000, 0x40048000, 0x10000000, 0x22800042, 0x00010008, 0x00000820, 0x44400000, 0x00812042, 0x00004010, + 0x00200040, 0x00005404, 0x10100000, 0x00280020, 0x28008410, 0x00100000, 0x10001000, 0x0a220010, 0x40000004, 0x20080000, + 0x00241458, 0xc2c00000, 0x00080000, 0x00146804, 0x00000000, 0x00022008, 0xc0080010, 0x02000001, 0x94c00004, 0x40002008, + 0x04100400, 0x01480040, 0x80204080, 0x00201020, 0x00000000, 0x68440800, 0x00000010, 0x00001000, 0x905b8060, 0x60040000, + 0x00000000, 0x82884048, 0x04001004, 0x00080000, 0x42064822, 0x08008000, 0x00c10002, 0x80224000, 0x02080010, 0x0c110000, + 0x30800008, 0x00000042, 0x10000000, 0x06644005, 0x08200000, 0x88400010, 0x40045024, 0x00200220, 0x08000080, 0x00820000, + 0x00000050, 0x04101044, 0x12042009, 0x20000828, 0x00088860, 0x4c404000, 0xc0004400, 0x00020000, 0x28040805, 0x80000008, + 0x00000400, 0x10160030, 0x02400000, 0x00001820, 0x00880040, 0x04400042, 0x00003002, 0x40024408, 0x08a40823, 0x00002009, + 0xa0020014, 0x10000400, 0x00184010, 0x0aa19000, 0x00000000, 0x2028880a, 0x04100000, 0x10044000, 0x40020004, 0xa8200868, + 0x8002a012, 0x20002048, 0x00180004, 0x0a000000, 0x00010820, 0x00880008, 0xa440a040, 0x00008004, 0x40840000, 0x080008a0, + 0x00180400, 0x08465050, 0x48080000, 0x00200000, 0x10002028, 0x10401000, 0x40120010, 0xa0004405, 0x02000000, 0x00880008, + 0xa0408440, 0x04240004, 0x10804000, 0x40021811, 0x80000020, 0x04420000, 0x0a100450, 0x02001001, 0x08840000, 0x10008800, + 0x84000008, 0x00000420, 0x60494054, 0x0a200000, 0x028c1820, 0x2002a008, 0x10101000, 0x80000002, 0x00014810, 0x02080008, + 0x80020000, 0x60c40050, 0x40008000, 0x12844002, 0x04000824, 0x08200000, 0x84008000, 0x50120052, 0x02090000, 0x00a40000, + 0x60000828, 0x04000000, 0x80122044, 0x48400010, 0x08010002, 0x00000040, 0x541c5414, 0x00000440, 0x00020000, 0x2a28a028, + 0x00100020, 0x10401000, 0xc2004415, 0x00081010, 0x20000000, 0x04c2a448, 0x80002008, 0x40040000, 0x0a284825, 0x00824004, + 0x80000000, 0x14508450, 0x20808000, 0x00000000, 0x0a003828, 0x00000000, 0x04400000, 0x400c4450, 0x00000440, 0x08201000, + 0xa002a828, 0x00081820, 0x10000010, 0x46154000, 0x20801010, 0x00002008, 0x0c488040, 0x80202008, 0x00020002, 0x4a144824, + 0x00004004, 0x00828002, 0x94100058, 0x00808002, 0x02000000, 0x28212828, 0x00000000, 0x04400000, 0x50184056, 0x00200040, + 0x04400000, 0x50100008, 0x04401000, 0x08a00000, 0x220e2000, 0x08200045, 0x00100002, 0x52000000, 0x10100000, 0x00000020, + 0x244a0000, 0xa00c9400, 0x00000000, 0x4a000140, 0x40040408, 0x00820018, 0x84600c00, 0x80020002, 0x02801000, 0x28180000, + 0x02800000, 0x00000000, 0x44404002, 0x04604000, 0x00800010, 0xa80e0004, 0x08304041, 0x10008008, 0x42800000, 0x10144000, + 0x20080800, 0x8c030020, 0x200c0040, 0x00000000, 0x4aa00000, 0x40040040, 0x80008020, 0x14120020, 0x80030040, 0x00000000, + 0x2aa88009, 0x02830002, 0x00000000, 0x54548008, 0x04402013, 0x08000000, 0x00960000, 0x84000000, 0x00100010, 0x08004000, + 0x00e10000, 0x20088040, 0x50000020, 0x00408200, 0x40900080, 0x08000014, 0x20020080, 0x04000000, 0x04400000, 0x40000280, + 0x0a000020, 0x24000000, 0x00000020, 0x02100000, 0x08000022, 0x022f0000, 0x20002004, 0x00201080, 0x80840004, 0x00000000, + 0x00030008, 0x00482080, 0x08400040, 0x80008020, 0x00720004, 0x00000001, 0x00008010, 0x00200001, 0x74000400, 0x00402081, + 0x60020000, 0x00080800, 0x44100004, 0x00020000, 0x80000010, 0x48000004, 0x00010014, 0x24102008, 0x00080000, 0x00041000, + 0x20004000, 0x10200000, 0x42000012, 0x00400000, 0x10080000, 0x20020000, 0x80140000, 0x00600002, 0x80000000, 0x00000001, + 0x00100802, 0x12c80041, 0x48140000, 0x00801000, 0x02080000, 0x00000800, 0x08204004, 0x40040008, 0x40400000, 0x11001000, + 0x00000008, 0x00000000, 0x00020008, 0x20418002, 0x04000000, 0x00020000, 0x00200000, 0x84000000, 0x08100002, 0x01000000, + 0x51890000, 0x10200002, 0x00400000, 0x08008000, 0x80081018, 0x1c810000, 0x20000000, 0x00440400, 0x00102000, 0x00850000, + 0x01000020, 0x00200000, 0x0a200000, 0x00800000, 0x80000004, 0x00000000, 0x80000800, 0x28080400, 0x00000000, 0x00042030, + 0x40000000, 0x00000080, 0x00002000, 0x06001000, 0x100800c0, 0x20002000, 0x002000a0, 0x00024000, 0xa0001004, 0x90060080, + 0x00814000, 0x00000002, 0x00080000, 0x0100a090, 0x80000801, 0x40802010, 0x08000000, 0x90102028, 0x00000042, 0x58000000, + 0x00200000, 0x20040001, 0x20001080, 0x00008802, 0x42000000, 0x20000040, 0x00052000, 0x00082008, 0x01008020, 0x02042040, + 0x00240201, 0x00004090, 0x02810000, 0x10800000, 0x24000008, 0x90400011, 0x440060a0, 0x00080800, 0x90100010, 0x20400000, + 0x0004c004, 0x00001040, 0x00002000, 0x00000240, 0x00080840, 0x80010008, 0x00004000, 0x04001000, 0x00000000, 0x40454000, + 0x0008801e, 0x00400000, 0x28002000, 0x01050000, 0x00102040, 0x02040001, 0x00008024, 0x80000042, 0x04081000, 0x00400002, + 0x0000028c, 0x00084000, 0x00604450, 0x80400480, 0x000000a0, 0x20000000, 0x08800808, 0x0000202a, 0x00140014, 0x40005000, + 0x00004000, 0x4104001b, 0x00088000, 0x00001050, 0x40804100, 0x00480084, 0x00110040, 0x00028020, 0x00200006, 0x00010000, + 0x00000280, 0x20a00000, 0x00000048, 0x10010008, 0x00401045, 0x00000000, 0x444000a2, 0x00584004, 0x02020000, 0x0c200404, + 0x40808000, 0x00080020, 0xd0020068, 0x08a08000, 0x04100010, 0xb0001000, 0x00110000, 0x80000000, 0x40800018, 0x00080004, + 0x20000000, 0x00804008, 0x20000800, 0x00000008, 0x40a00000, 0x08060000, 0x40000001, 0x10041000, 0x04000000, 0x00000004, + 0x00e00440, 0x01085000, 0x00080440, 0xa0200000, 0x00000000, 0x00410000, 0x080a1800, 0x90800000, 0x04000004, 0xb0000008, + 0x04200000, 0x10000000, 0x80086002, 0xe0000010, 0x00000000, 0x00800006, 0x08080001, 0x00010000, 0x20000000, 0xc0800000, + 0x00000000, 0x02000000, 0x00a08000, 0x30000000, 0x00441000, 0x20000000, 0x02400000, 0x00104000, 0x10040040, 0x00000000, + 0x08200821, 0x008a0800, 0x04000000, 0x02100000, 0x60200000, 0x00010000, 0x082a0040, 0x10502008, 0x00000000, 0x82019000, + 0x20014004, 0x80800000, 0x08000000, 0x00020000, 0x50088000, 0x04000200, 0x40300000, 0x80040000, 0x10424020, 0x10000000, + 0x04a00000, 0x00010000, 0x22100000, 0x00000000, 0x02040040, 0x09050050, 0x40800000, 0x00400000, 0x00022000, 0x10500008, + 0x00084000, 0x00100004, 0x08000000, 0x004c0080, 0x00248002, 0x00080008, 0x00004090, 0x000a0000, 0x00040000, 0x11800000, + 0x02000008, 0x00008000, 0x00045004, 0x40400000, 0x00000000, 0x00008060, 0x0c200000, 0x00000000, 0x10004800, 0x00101000, + 0x00000000, 0x40040040, 0x20082000, 0x00000000, 0x00200800, 0x00000004, 0x00000000, 0x00800040, 0x40008000, 0x00040000, + 0x80083008, 0x02001000, 0x00000000, 0x24044004, 0x80000040, 0x00010000, 0x00008000, 0x08000000, 0x04400000, 0x00104000, + 0x10000010, 0x00200000, 0x00144040, 0x20002008, 0x00000000, 0x40020000, 0x00000000, 0x00180000, 0x88020050, 0x80002002, + 0x00000000, 0x04801000, 0x00000000, 0x10100000, 0x402a0000, 0x80800000, 0x00100000, 0x50040041, 0x05000040, 0x02000000, + 0x800a0000, 0x00000000, 0x09400000, 0x42040000, 0x10a21008, 0x00100000, 0x04440008, 0x00000000, 0x00000004, 0x88208000, + 0x40480004, 0x04000000, 0x10149008, 0x00028080, 0x00000000, 0x00a80200, 0x02010000, 0x80900000, 0x20000040, 0x04444040, + 0x40000000, 0x30280000, 0x82000000, 0x08020000, 0x10a50000, 0x00100000, 0x00000000, 0xa0400040, 0x00010000, 0x20a02000, + 0x44004000, 0x000c0000, 0x00000000, 0x08000080, 0x10328000, 0x00080010, 0x00045020, 0x00000000, 0x020000a0, 0x00000000, + 0x02401000, 0x00480410, 0x00800000, 0x00400000, 0x20000008, 0x48204045, 0x00204000, 0x00000004, 0x10008000, 0x00008000, + 0x00000000, 0x24000001, 0x00400000, 0x001c0040, 0x40000000, 0x40141000, 0x00200040, 0x00000800, 0x80000800, 0x02002000, + 0x20000000, 0x00c10000, 0x00080404, 0x00001008, 0x00002028, 0x00088800, 0x0c044000, 0x00000000, 0x00004004, 0x80200000, + 0x00008000, 0x80020008, 0x00000000, 0x00080004, 0x00000000, 0x88200040, 0x40000042, 0x00000000, 0x02000000, 0x00180000, + 0x14400000, 0xaa000008, 0x00000000, 0x21a04000, 0x08001030, 0x10000010, 0x84008000, 0x00305020, 0x20000009, 0x00880040, + 0x40100000, 0x00840000, 0x40000001, 0x00424004, 0x00100800, 0x01000000, 0xc302c000, 0x02800000, 0x00001000, 0x04400008, + 0x04400040, 0x00004000, 0x48802000, 0x01200000, 0x08000800, 0xa4000000, 0x10101004, 0x44400008, 0x00080000, 0x00420000, + 0x20002008, 0x80194000, 0x40844004, 0x00000000, 0x0001a008, 0x00000040, 0x84000000, 0x020e8000, 0x00800000, 0x00010000, + 0x0a040000, 0x00560000, 0x00000000, 0x04000040, 0x00020000, 0x00001000, 0x00400000, 0x00000000, 0x18000000, 0x80280028, + 0x00000000, 0x10101000, 0x01800030, 0x00084004, 0xe0000000, 0x04000808, 0x00008001, 0x00040000, 0x60824844, 0x80020040, + 0x08000000, 0x00008000, 0x11000000, 0x08100800, 0x22820000, 0x00000000, 0x00401008, 0x84080040, 0x0000000c, 0x80200000, + 0x08004800, 0x00000000, 0x10001000, 0x22112000, 0x20040000, 0x40884004, 0x00002008, 0x00008000, 0x40040000, 0x0c894004, + 0x00000000, 0x00020000, 0x80008000, 0x12000040, 0x00000000, 0x00810000, 0x00200010, 0x04000000, 0x08400040, 0x08000008, + 0x00000002, 0x44280000, 0x18088000, 0x00000080, 0x20300000, 0x40140000, 0x04020000, 0x90004008, 0x00000000, 0x20400000, + 0x00080004, 0x80100000, 0x00020000, 0x40048000, 0x12820040, 0x81400000, 0x00200000, 0x0c200000, 0x01800000, 0x02084004, + 0x00000004, 0x14100800, 0x20400000, 0x00088001, 0x40004100, 0x08200001, 0x00040000, 0x20020000, 0x90102000, 0x00280004, + 0x80010040, 0x60000000, 0x00000000, 0x00020000, 0x40440000, 0x82820000, 0x00000008, 0x00212000, 0x0e200000, 0x00c00004, + 0x00010000, 0x44000000, 0x30000010, 0x00480004, 0x0020a082, 0x00000000, 0x0010c000, 0x40800080, 0x00800000, 0x00009000, + 0x86800000, 0x20001004, 0x00084009, 0x00020000, 0x40000000, 0x08440050, 0x18004000, 0x80000000, 0x04009018, 0x04800000, + 0x00001000, 0x4000000c, 0x00002009, 0x00400000, 0x00020042, 0x48000040, 0x00004004, 0x00200800, 0x00000000, 0x30048080, + 0x80000040, 0x00040000, 0x02c01000, 0x00002068, 0x40000040, 0x04000000, 0x00224014, 0x00000000, 0x80100000, 0x00804008, + 0x10100010, 0x00090000, 0x00204004, 0x08000008, 0x40002000, 0x00408000, 0x20000040, 0x00200000, 0x80100006, 0x20000002, + 0x04440000, 0x08000000, 0x00008000, 0x00024004, 0x11600040, 0x00000000, 0x12800000, 0x80101000, 0x00600040, 0x04000000, + 0x40280000, 0x40040800, 0x00004000, 0x10820000, 0x00000000, 0x01220000, 0x12000000, 0x00002000, 0x20000000, 0x00400008, + 0x80084000, 0x04020040, 0x08c00000, 0x00040000, 0x40000000, 0x00300000, 0x04800000, 0x00018000, 0x2c181000, 0x02000000, + 0x20000000, 0x10180000, 0x00014000, 0x08000000, 0x04841000, 0x00380000, 0x00000000, 0x80040000, 0x00010000, 0x20800000, + 0x800a400a, 0x00000000, 0x00000000, 0x08a00040, 0x80050000, 0x40004014, 0x04408000, 0x00120000, 0x20208000, 0x01001020, + 0x10101000, 0x00000015, 0x80400028, 0x02000000, 0x00080040, 0x00000000, 0x08000000, 0x00640808, 0x40084004, 0x00020000, + 0x00001004, 0x20088000, 0x00000000, 0x10082048, 0x44000801, 0x00401040, 0x40004004, 0x04000001, 0x00240000, 0x00008000, + 0x80d02800, 0x02090000, 0x00100008, 0x00001044, 0x00800000, 0x000a7040, 0x28400008, 0x00800004, 0x00040000, 0xb0004000, + 0x80008000, 0x10300010, 0x40000000, 0x00800000, 0x00092008, 0x00040000, 0x00000040, 0x00000004, 0x00000011, 0x00000000, + 0x40040004, 0x00005080, 0x00000000, 0x002a00a0, 0x38100040, 0x01000010, 0x8a001040, 0x10204800, 0x20000001, 0x14500000, + 0x40240000, 0x00000014, 0x89284800, 0x40100000, 0x00001000, 0x10908000, 0x00420000, 0x00004004, 0x25882000, 0x02248044, + 0x00000000, 0x40840140, 0x1c401082, 0x00000000, 0x000248c4, 0x08490040, 0x80000000, 0x22011000, 0x00200000, 0x60002000, + 0x04c00008, 0x003e1830, 0x40000000, 0x8800404c, 0x20001000, 0x90200000, 0x4093c000, 0x24000004, 0x00812000, 0x200a0010, + 0x02200000, 0x00000000, 0x0c940040, 0x52008080, 0x08000000, 0x84025084, 0x10000002, 0x08240320, 0x44008000, 0x04880410, + 0x01004000, 0x10400420, 0x88001014, 0x04048000, 0x22501050, 0x10100000, 0x00004000, 0x40201804, 0x10020009, 0x00088000, + 0x30027044, 0x04000000, 0x01800000, 0x0218a809, 0x60000000, 0x80400002, 0x4484d004, 0x00900040, 0x00010800, 0xa8028048, + 0x00080400, 0x00005004, 0x00000800, 0x00042000, 0x00088008, 0x26001040, 0x00402000, 0x00014000, 0x58002008, 0x00100004, + 0x00020008, 0x9010405c, 0x00a88000, 0x20000000, 0x8aada008, 0x00000002, 0x04000000, 0x40040010, 0x00900240, 0x00000004, + 0x620c0000, 0x04200000, 0x20000020, 0x0c000000, 0x02200000, 0x1140001c, 0x4aa00020, 0x84021001, 0x00000000, 0x14424018, + 0x21001000, 0x42000004, 0x28208008, 0x00004000, 0x04428000, 0x50100804, 0x01800000, 0x0a002040, 0x20021000, 0x00820000, + 0x05001044, 0x02c80000, 0x82000800, 0x29008800, 0x06442000, 0x80000000, 0x40000000, 0x088b1800, 0x00400800, 0x00002008, + 0x80481000, 0x20000000, 0x02004004, 0x28892008, 0x40020000, 0x00008000, 0x40202004, 0xc0020010, 0x0a000008, 0xc0120000, + 0x0481a000, 0x00080050, 0x12810000, 0x04010000, 0x20000002, 0x00000000, 0x06500000, 0x00a01018, 0x08000024, 0x20000000, + 0x80041000, 0x08100020, 0x10000014, 0x20004008, 0x10100050, 0x00080000, 0x40000000, 0x800c4804, 0x2a408000, 0x01020000, + 0x00809004, 0xc1002000, 0x02040000, 0x14800048, 0x00700001, 0x40402000, 0x24000840, 0x00000000, 0x18001000, 0x00f00800, + 0x00080000, 0x80002008, 0x18109800, 0x48040040, 0x04084004, 0x08002040, 0xa0020008, 0x1000c000, 0x00002008, 0x420c200c, + 0x80020000, 0x40800010, 0x10208008, 0x02000040, 0x04922000, 0x08430000, 0xe4400000, 0x00000008, 0x10300042, 0x00000010, + 0x4c080004, 0x20028020, 0x18128000, 0x00200020, 0x22000080, 0x00181000, 0x08000408, 0x10040010, 0x40000004, 0x20100008, + 0x88084020, 0x10068810, 0x0018400c, 0x40000000, 0x82880001, 0x01008004, 0x000a0000, 0x05404008, 0x22006000, 0x00800000, + 0x1010c000, 0x0cc00840, 0x00280000, 0x00200001, 0x84481801, 0x08800000, 0x30930000, 0x08003008, 0x40004000, 0x20060000, + 0x0008a000, 0x8000000c, 0x00800000, 0x48040040, 0x00204014, 0x34030010, 0x82000004, 0x20508040, 0x00010000, 0x02020008, + 0x40800000, 0x08600000, 0x04802000, 0x00008041, 0x0031a008, 0x00400000, 0x00004020, 0x08000020, 0x00200000, 0x31100010, + 0x02901010, 0x08000000, 0x50000000, 0x00000008, 0x20700000, 0x000c0004, 0x88144000, 0x00000044, 0x61000000, 0x00008000, + 0x80000001, 0x02420000, 0x01040000, 0x020c1000, 0x04800001, 0x00200000, 0x2c400002, 0x00102040, 0x02200000, 0x14020800, + 0x2a405040, 0x16101000, 0x00000000, 0x00080000, 0x682a0028, 0x00001000, 0x80042840, 0x00044004, 0x00000000, 0x50009000, + 0x02a08000, 0xc0120000, 0x18000000, 0x04214000, 0x02040000, 0x00808048, 0x10020040, 0xa4400000, 0x08000000, 0x88100000, + 0x20404008, 0x04200004, 0x00800000, 0x00a08020, 0x28000000, 0x90100000, 0x0d201010, 0x00480020, 0x082a0000, 0x20800008, + 0x00040800, 0x40040004, 0x04404000, 0x80003008, 0x00000000, 0x00208000, 0x80821004, 0x02000000, 0x41000000, 0x24800002, + 0x84400000, 0x00824044, 0x00080000, 0x00200800, 0x08008040, 0x10021000, 0x10100000, 0x84001000, 0x00400000, 0x24000000, + 0x00002008, 0xc8180010, 0x10040000, 0x40084008, 0x08120004, 0x00020000, 0x8008c000, 0x12012004, 0x00840000, 0x82100000, + 0x0441001a, 0x04000000, 0x00020000, 0x10402040, 0x00000000, 0x04001000, 0x82408000, 0x08260000, 0x00000000, 0x04400428, + 0x03000000, 0x18000000, 0x00101030, 0x20404000, 0x04101001, 0x00080008, 0x08028000, 0x00000040, 0x40044004, 0x00000040, + 0x80020000, 0x10108000, 0x01800001, 0x22400000, 0x0000100e, 0x00001840, 0x44400000, 0x80800000, 0x08000000, 0x00200044, + 0x00000800, 0x00002008, 0x02100000, 0x10021820, 0x00096000, 0x20000000, 0x0480000c, 0x00008000, 0x080c004c, 0x40004000, + 0x80210000, 0x00024040, 0x10008004, 0x00000010, 0x20830000, 0x02008000, 0x00602000, 0x40000048, 0x06800001, 0x00000008, + 0x10080002, 0x00040004, 0x40100000, 0x08000020, 0x22228000, 0x00804000, 0x08100010, 0x10081000, 0x80000008, 0x101c0000, + 0x21020050, 0x00000004, 0x40040000, 0x14204800, 0x8e028000, 0x00002001, 0x01844000, 0x00700004, 0x00804040, 0x82042008, + 0x00000000, 0x00800000, 0x04484046, 0x10020800, 0x20140080, 0x0c208000, 0x80895000, 0x10000000, 0x04100000, 0x80062000, + 0x50080008, 0x22001070, 0x40004000, 0x20080014, 0x22940008, 0x08008040, 0x00202000, 0x84020010, 0x02010000, 0x00400000, + 0x08902008, 0x00000040, 0x04400000, 0x20280084, 0x18200000, 0x80400010, 0x70944080, 0x08000024, 0x00200000, 0x80029000, + 0x04001040, 0x11104014, 0x02400800, 0x40200000, 0x00008020, 0x204e0009, 0x40001040, 0x00045000, 0x08000004, 0x804a0800, + 0x00080008, 0x11309000, 0x02002000, 0x00000801, 0x20800048, 0x04688000, 0x80008000, 0x008410c4, 0x88024201, 0x02802809, + 0x00200000, 0x10101040, 0x00404000, 0x0a208000, 0x00080000, 0x00000808, 0x24512004, 0x00004004, 0xc0040000, 0x18208040, + 0x8080a000, 0x00030000, 0x40000010, 0x12110000, 0x00040004, 0x0080204a, 0x04480040, 0x00020010, 0x80800004, 0x08000000, + 0x20000000, 0x54441014, 0x08000000, 0x00204000, 0x00008020, 0x90820010, 0x40101000, 0x21000004, 0x00000000, 0x28004008, + 0x066a8000, 0x01044040, 0x42800004, 0x00200800, 0x08021008, 0x00408000, 0xb5000040, 0x02000000, 0x48000000, 0x20902800, + 0x00000040, 0x04400000, 0x000d100c, 0x60204000, 0x08080000, 0x8003a808, 0x00500000, 0x00001000, 0x10004044, 0x22090008, + 0x00022000, 0x40808040, 0x40440000, 0x0a204000, 0x84000004, 0x14180000, 0x800a8000, 0x00810058, 0x0a810000, 0x00000000, + 0x20082000, 0x84420008, 0x00100040, 0x10040014, 0x02000000, 0x04080000, 0x50061014, 0x00000000, 0x09000020, 0x2022c000, + 0x00000020, 0x81000010, 0x56101001, 0x20081010, 0x00804004, 0x04028048, 0x00004008, 0x01000004, 0x4a640801, 0x20004004, + 0x80800000, 0x14529040, 0x01888000, 0x02000001, 0x28002808, 0x00000000, 0x00000000, 0x4444d044, 0x00000040, 0x00200000, + 0x2800a848, 0x80000800, 0x10181000, 0x42014004, 0x00001000, 0x20080000, 0x84c0a048, 0x10022008, 0x00200000, 0x4a054004, + 0x00004004, 0x10808000, 0xa4020050, 0x00008000, 0x02800000, 0x6801a008, 0x40000000, 0x04000040, 0x00500010, 0x10200040, + 0x80000000, 0x74420000, 0x04400008, 0x00200000, 0x08020000, 0x28300000, 0x01000000, 0x52404000, 0x30100000, 0x00080000, + 0x04400000, 0x200a1000, 0x01040010, 0x4a000000, 0x40040018, 0x80800020, 0x24620000, 0x80020044, 0x01805000, 0x2b080000, + 0x02820802, 0x04000008, 0x40400000, 0x04600002, 0x00004000, 0x280e0001, 0x08202000, 0x10000000, 0xc6110040, 0x10100000, + 0x00000001, 0x248a00a0, 0xa00c0000, 0x40000000, 0x0a000000, 0xc0040008, 0x00830008, 0x04140000, 0x80820004, 0x02011010, + 0x28000000, 0x02810002, 0x04400000, 0x00180002, 0x14400000, 0x04000002, 0x00041000, 0x20100010, 0x50804004, 0x00200000, + 0x20000002, 0x00000000, 0x00000000, 0x02840004, 0x08040080, 0x00020000, 0x00080020, 0x95200000, 0x00120100, 0x01000840, + 0x021b0008, 0x00040000, 0x80000000, 0x02000000, 0x10000024, 0x00800000, 0x08000000, 0x00020000, 0x04100018, 0x50400000, + 0x00000000, 0x04810000, 0x20200001, 0xc000c000, 0x00420020, 0x40800000, 0x00100002, 0x24000010, 0x10000000, 0x03800000, + 0x05040000, 0x02000000, 0x00002040, 0x000a0420, 0x80010000, 0x00c00020, 0x00020814, 0x00020000, 0x10000000, 0x84400000, + 0x0000000c, 0x02a00000, 0x10000000, 0x80400002, 0x00000000, 0x0e468000, 0x00010000, 0x28000022, 0x85000000, 0x11000004, + 0x42200000, 0x88000040, 0x00040000, 0x20e00200, 0x00000084, 0x40040000, 0x44002000, 0x08120022, 0x00000000, 0x01300000, + 0x22002000, 0x00400000, 0x26000000, 0x10811004, 0x00850000, 0x00240000, 0x02028000, 0x08000000, 0x08400010, 0x02210002, + 0x10120080, 0x01000000, 0x90018001, 0x00480000, 0xa0000240, 0x48090021, 0xa0000000, 0x04480000, 0x10000000, 0x00200000, + 0x08040000, 0x30800000, 0x84292000, 0x00000000, 0x02044000, 0x0000400c, 0x00083008, 0x04068000, 0x08004000, 0x00080000, + 0x00808020, 0x00380000, 0x44204000, 0x00120000, 0x20000000, 0x10900080, 0x00008000, 0x20008000, 0x00000000, 0x06010040, + 0x00000010, 0x00008060, 0x20088008, 0x00001000, 0x88000422, 0x40000008, 0x002c6000, 0x00000800, 0x000a0004, 0x00004030, + 0x08182000, 0x60000020, 0x00081808, 0x1110a000, 0x00000000, 0x20040044, 0x00204000, 0x00a02082, 0x0000c000, 0x40500000, + 0x10000002, 0x00110000, 0x00020042, 0x20100000, 0x00000090, 0xc0100000, 0x010000a3, 0x0a002004, 0x00890048, 0x60000000, + 0x00000000, 0x00000040, 0x00000510, 0x00001206, 0x20040820, 0x80082800, 0x00800042, 0x20000024, 0x00001000, 0x00080820, + 0x0000200e, 0x00302030, 0x90000002, 0x00044004, 0x00804080, 0x00002020, 0x00480000, 0x00000004, 0x04404000, 0x00000180, + 0x00000200, 0x00000020, 0x00200040, 0x40081410, 0x80041000, 0x30004000, 0x80000000, 0x00800440, 0x00000010, 0x00605004, + 0x40000880, 0x00023008, 0x00000010, 0x00000040, 0x00000004, 0x08c00080, 0x00202000, 0x00008000, 0x00010400, 0x00410000, + 0x00000000, 0x00080000, 0x20000000, 0x00102000, 0x00000011, 0x280c0000, 0x10588080, 0x00000000, 0x8d620000, 0x120000c0, + 0x0e400000, 0x00010004, 0x14080c00, 0x0c100000, 0x0a220000, 0x80000000, 0x10010000, 0x20500000, 0x40083010, 0x08100000, + 0x00820000, 0xa0000008, 0x000c0000, 0x00910000, 0x10208004, 0x82080000, 0xc0040000, 0x00008080, 0x20010000, 0x00000000, + 0x08000080, 0x01020000, 0x10010000, 0x04000000, 0x02010002, 0x84940000, 0x00880020, 0x20000000, 0x00600000, 0x50083010, + 0x00100000, 0x10000000, 0x0000400c, 0x00000000, 0x20b80000, 0x4200c004, 0x02020000, 0x00400000, 0x14210080, 0x80000000, + 0x80100000, 0x00000008, 0x00000000, 0x00140000, 0x01800004, 0x40200000, 0x00420000, 0x40100000, 0x90400000, 0x00840000, + 0x20801000, 0x00080000, 0x00020000, 0x24400008, 0x10050000, 0x02010000, 0x0c000000, 0xc0020000, 0x00000000, 0x42000000, + 0x00830000, 0x00100000, 0x10800000, 0x00500000, 0x00000000, 0x40ac0040, 0x00000000, 0x02280000, 0x00520022, 0x90000000, + 0x00000000, 0x00000000, 0x00080000, 0x88020000, 0x02040008, 0x44050000, 0x00010000, 0x88220000, 0x00420000, 0x84000000, + 0x10000000, 0x00904000, 0x00000000, 0x08048000, 0x20800000, 0x00000000, 0x00842000, 0x00000000, 0x00000004, 0x81000002, + 0x20800000, 0x00000000, 0x00200020, 0x04400000, 0x02000000, 0x00000000, 0x08200000, 0x00000000, 0x00000008, 0x00000000, + 0x00100000, 0x00000008, 0x30000000, 0x00080000, 0x00040000, 0x00040000, 0x00000000, 0x00100000, 0xa0000000, 0x40020000, + 0x04400040, 0x02800000, 0x00000000, 0x00010001, 0x00400000, 0x00000000, 0x18100800, 0x88200000, 0x00000000, 0x00000000, + 0x10100000, 0x00000000, 0x608c0000, 0x20000000, 0x00000000, 0x00800000, 0x40000000, 0x00000000, 0x80000000, 0x80000000, + 0x20000004, 0x82000000, 0x80180000, 0x30000002, 0x40c20040, 0x01000000, 0x40900000, 0x00200000, 0x06000004, 0x00040000, + 0x08000000, 0x02000000, 0xc1040000, 0x08100010, 0x10900000, 0x00220000, 0x04004000, 0x02080000, 0x00400000, 0x08020000, + 0x00000000, 0x60300000, 0x90008000, 0x08200000, 0x000a0000, 0x00000000, 0x20000000, 0x00010000, 0x0a900040, 0x44440000, + 0x00080000, 0xa0000030, 0x08200000, 0x40000000, 0x02032010, 0x00500000, 0x00820000, 0xc4002000, 0x02000000, 0x00000000, + 0xa8000004, 0x00340000, 0x00000000, 0x90000000, 0x00220000, 0x20000000, 0x00000000, 0x81000000, 0x00000080, 0x00040000, + 0x42000000, 0x14000000, 0x00000000, 0x05460002, 0x00000820, 0x30200000, 0x48040000, 0x00200000, 0x00000000, 0x02180000, + 0x30002000, 0x00000000, 0x00200000, 0x02000000, 0xa0000000, 0x00080000, 0x00000000, 0x40040000, 0x00020000, 0x00200000, + 0x02100000, 0x00010000, 0x90800000, 0x00000000, 0x06020000, 0x00000000, 0x40000000, 0x02000000, 0x00000000, 0x08000000, + 0x10100008, 0x00000000, 0x00800000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00200000, 0x20800000, 0x00000000, + 0x04000000, 0x00800000, 0x00000000, 0x00040000, 0x50200000, 0x10000000, 0x00000000, 0x28100000, 0x20000000, 0x80000000, + 0x400c0004, 0x00000000, 0x40000000, 0x00240000, 0x80000000, 0x05480000, 0x02800000, 0x00800000, 0x49000010, 0x22000000, + 0x04040000, 0x10000000, 0x40600000, 0x01280000, 0x08800000, 0x00000000, 0x10000000, 0x00000000, 0x20310000, 0x00000000, + 0x28000000, 0x00180000, 0x40040000, 0x00000001, 0x80000000, 0x80000000, 0x24020000, 0x02000000, 0x00050000, 0x42000000, + 0x00400000, 0x04000000, 0x10100000, 0x48600001, 0x00210000, 0x00400000, 0x04000000, 0x00240000, 0x40000000, 0x02000002, + 0x00000000, 0x501c0000, 0x00000000, 0x00080000, 0x20000000, 0x00000000, 0x40040000, 0x80400000, 0x10000000, 0x20800000, + 0x82000000, 0x01040000, 0x00000000, 0x02840000, 0x00000000, 0x40400000, 0x04000000, 0x00080000, 0x00000000, 0x00200000, + 0x18040000, 0x00000000, 0x10100000, 0x02080000, 0x60000000, 0x00080002, 0x80010000, 0x00000000, 0x44000000, 0x300c0000, + 0x00000000, 0x00000000, 0x80020000, 0x00000000, 0x00010000, 0x02880000, 0x48600000, 0x20000000, 0x04040000, 0x00000000, + 0x00000000, 0x04500004, 0x10000000, 0x00200000, 0x28040000, 0x00180000, 0x80000000, 0x50042040, 0x00000000, 0x00080000, + 0x22400800, 0x00840000, 0x00000000, 0xc3000010, 0x00000000, 0x20280000, 0x81000000, 0x06000000, 0x00000000, 0x00e04000, + 0x18000000, 0x00400010, 0x44180000, 0x28000000, 0x00040080, 0x00200200, 0x40100000, 0x00080040, 0x10040000, 0x00080020, + 0x80000000, 0x20820000, 0x00000010, 0x00040000, 0x48201002, 0x06020000, 0x00000000, 0x80c10008, 0x00a00000, 0x00000000, + 0x02010000, 0x00000000, 0x28400000, 0x04140000, 0x00000001, 0x00000000, 0x00000000, 0x80040000, 0x00000004, 0x01000040, + 0x40000000, 0x02400002, 0x00800028, 0x04400000, 0x00000008, 0x00000030, 0x80000000, 0x0a100002, 0x00800004, 0x00000000, + 0x00000002, 0x00002008, 0x10480004, 0x20200000, 0x04008004, 0x00000002, 0x00000000, 0x48118080, 0x10800000, 0x01040000, + 0x00020040, 0x02080000, 0x00000000, 0x80000001, 0x80400000, 0x40040000, 0x00000000, 0x00030000, 0x00200000, 0x20000018, + 0x08100000, 0x20000000, 0x00800004, 0x00600000, 0x20040000, 0x00808006, 0x00080000, 0x00000000, 0x40848080, 0x20100000, + 0x00000000, 0x08600080, 0x00000000, 0x40000000, 0x10400000, 0x01900000, 0x00000000, 0x20200000, 0x04000000, 0x02400000, + 0x40100000, 0x00000000, 0x00000000, 0x500c0008, 0x00200000, 0x11000000, 0x48860000, 0x02000000, 0x00000000, 0xc0460000, + 0x00000000, 0x20000000, 0x08220000, 0x00000000, 0x48060000, 0x84600000, 0x00000000, 0x42400000, 0x24100000, 0x28000000, + 0x04080000, 0x08140020, 0x18600000, 0x00000000, 0xc0000000, 0x00080000, 0x80180000, 0x02820000, 0x00000000, 0x40000000, + 0x02600000, 0x20020000, 0x80080000, 0x00000000, 0x00000000, 0x10400000, 0x02808000, 0x00000020, 0x80100004, 0x02000042, + 0x00000000, 0x00100000, 0x02000040, 0x00000008, 0x00040000, 0x40001000, 0x40400004, 0x04042000, 0x08020000, 0x00000000, + 0x00020012, 0x02000004, 0x00280000, 0x20000000, 0x02000000, 0x00000000, 0x10000000, 0x80000000, 0x48200000, 0x80080000, + 0x00000000, 0x00020000, 0x00100000, 0x00200040, 0x06080000, 0x60400001, 0x00020000, 0x40000000, 0x00000000, 0x10300000, + 0x90000000, 0x00020010, 0x00042000, 0x00000000, 0x02080001, 0x80000000, 0x00000000, 0x00004004, 0x00040000, 0x00000000, + 0x40840000, 0x14520200, 0x08000004, 0x80200000, 0x02000408, 0x01000000, 0x02a80002, 0x74000020, 0x00000000, 0x14500002, + 0xa0000030, 0x00000000, 0x082c0000, 0x50880000, 0x82000000, 0x10100010, 0x04000000, 0x00000000, 0xa1480000, 0x8aa04000, + 0x04500000, 0x01840000, 0x10820000, 0x00000000, 0x80420000, 0x48280000, 0x20000000, 0x12010000, 0x04400820, 0x40020000, + 0x044c0000, 0x20801000, 0x00000000, 0x28200000, 0x10082008, 0x00000000, 0x12150010, 0x80004000, 0x00400000, 0x28080000, + 0x02208000, 0x04000000, 0x40140004, 0x00400000, 0x00000000, 0x04480000, 0x82040080, 0x00100000, 0xc88200a0, 0x00200008, + 0x00040000, 0x12800000, 0x00000000, 0x01000004, 0x2c400008, 0x00320000, 0x00040002, 0x60281004, 0x08100000, 0x00000000, + 0xd0100000, 0x00000002, 0x03004000, 0x28880000, 0x00040000, 0x00000000, 0x84008000, 0x00500080, 0x02010000, 0x08220000, + 0xe0410400, 0x10000000, 0x00080000, 0x00000000, 0x00080000, 0x22000020, 0x00100010, 0x80020000, 0x04200001, 0x00000000, + 0x00000000, 0x80040000, 0x02000004, 0x00040000, 0x32280000, 0x80000000, 0x00000002, 0x44410000, 0x02020011, 0x00000200, + 0x02800000, 0x40200002, 0x20200000, 0x04440000, 0x08000008, 0x10000000, 0x48200000, 0x00002000, 0xa0000000, 0x17800000, + 0x01040002, 0x40000000, 0x28800000, 0x02240008, 0x04400000, 0x500c0000, 0x81000000, 0x48800000, 0x82300000, 0x00000010, + 0x01020000, 0x02c00000, 0x04000010, 0x28200000, 0x84c40000, 0x10000000, 0x00000000, 0x0a210002, 0x100a0000, 0x20000001, + 0x94000000, 0x00280000, 0x02000000, 0x28680000, 0x00000000, 0xa4000000, 0x10400000, 0x00000000, 0x4a200000, 0xc0000000, + 0x00100000, 0x10400000, 0x02080002, 0x44800010, 0x28210000, 0x20400000, 0x00940000, 0xc8000000, 0x14600020, 0x24400000, + 0x00000002, 0x18100000, 0x08200004, 0x04400000, 0x32000008, 0x90080000, 0x00000000, 0x01082000, 0x40240006, 0x38000000, + 0x00040002, 0x85140000, 0x00000000, 0x40400000, 0x02880000, 0x00000000, 0x04400000, 0x10000000, 0x08200000, 0x06000010, + 0x60180000, 0x40100002, 0x80000010, 0x10000000, 0x24000000, 0x00040002, 0x100a0001, 0x40000000, 0x20040000, 0x02000000, + 0x10120000, 0x00050000, 0x80800001, 0x02410000, 0x84800000, 0x00240001, 0x04020000, 0x00510000, 0x10000000, 0x08000000, + 0x40800000, 0x04408000, 0x00200004, 0x2d000000, 0x10880000, 0x00900040, 0x18200000, 0x04040000, 0x00000020, 0x70102020, + 0x00280000, 0x42000000, 0x0c280000, 0x81040010, 0x00000000, 0x84040000, 0x00880008, 0x13c00000, 0x80000000, 0x00000000, + 0x04580002, 0x00808000, 0x08200000, 0x18200000, 0x04400000, 0x02080000, 0x80000040, 0x18100001, 0x68000002, 0x004c0000, + 0x20000000, 0x80000020, 0x00000000, 0x40040000, 0x08020000, 0x82000001, 0x20060000, 0x00250000, 0x14000000, 0x82010004, + 0x00700000, 0x28400000, 0x14010000, 0x40000000, 0x00180001, 0x00040000, 0x84600002, 0x10380020, 0x08000000, 0x01000000, + 0x00100000, 0x30000000, 0x00040000, 0x40080008, 0x20900000, 0x00000004, 0x44100004, 0x00000000, 0xa0040008, 0x02800002, + 0x81040000, 0x00500000, 0x27800000, 0x40080010, 0x00020000, 0x0c600000, 0x00000000, 0x00000002, 0x88200000, 0x00000000, + 0x10400000, 0x12000000, 0x08100010, 0x20080040, 0x20040000, 0x00080000, 0xc0000000, 0x08800000, 0x24040000, 0x60022000, + 0x80280000, 0x00030000, 0x0600200a, 0x20000000, 0x02010001, 0x00400000, 0x48620000, 0x04000000, 0x00008000, 0x80000000, + 0x00420000, 0x42080080, 0x00200000, 0x00000000, 0x00400000, 0x90900000, 0x02400000, 0x00080040, 0x28280000, 0x00000000, + 0x08041010, 0x40200000, 0x30140000, 0x82080000, 0x10000000, 0xc0040000, 0x61106004, 0x02840000, 0x00040000, 0x24008000, + 0x84080000, 0x82020000, 0x40400080, 0x08210000, 0x00000000, 0x14000080, 0x90000000, 0x04100000, 0x00680000, 0x00400000, + 0x20180000, 0x00000010, 0x00300000, 0x00040000, 0x40000018, 0x80100000, 0x00060000, 0x40000004, 0x02010000, 0x00020000, + 0x04008002, 0x00000000, 0x00410000, 0x0c280080, 0x08000000, 0x04000000, 0x008c0000, 0x88000020, 0x00000000, 0x00200080, + 0x01000000, 0x10000000, 0x02100402, 0x00400008, 0x44080000, 0x30040020, 0x00000000, 0x08080004, 0x42040000, 0x00200000, + 0x00040002, 0x80100000, 0x01000000, 0x22800000, 0x00200000, 0x00400000, 0x02000000, 0x0c800000, 0x00000000, 0x40000000, + 0x08200000, 0x00100010, 0x02020000, 0x10800000, 0x04000000, 0x00000000, 0x38080000, 0x08040000, 0x40200000, 0x00000000, + 0x02020000, 0x90040002, 0x00084000, 0x00000001, 0x22010000, 0x400c0000, 0x00200000, 0x44000000, 0x80410000, 0x00200000, + 0x00000000, 0x44400080, 0x00180000, 0x0c200000, 0x10000040, 0x40000000, 0x20120000, 0x14040000, 0x80002000, 0x22800000, + 0x00180010, 0x00040000, 0x61880000, 0x12002000, 0x80000000, 0x00240000, 0x10440000, 0x04000000, 0x01000000, 0x02840000, + 0x08000000, 0x04c00000, 0x20b80082, 0x00000000, 0x08200000, 0x70000000, 0x000a0000, 0x90000000, 0x40310420, 0x20080000, + 0x02040000, 0x00021010, 0x40000000, 0x04000000, 0x80540000, 0x00200000, 0x04050000, 0x80c60008, 0x00000000, 0x00200000, + 0x02930002, 0x04400000, 0x20800000, 0x00140000, 0x00000000, 0x04000004, 0x40800000, 0x00200020, 0x00000000, 0x00400008, + 0x10100000, 0x01000000, 0x4a800006, 0x20000028, 0x04080000, 0x00400000, 0x00000004, 0x00041000, 0x40280000, 0x8a00000a, + 0x00000008, 0x51100010, 0x00804000, 0x02004000, 0x08000000, 0xa0088000, 0x80608000, 0x04000000, 0xa2200000, 0x00000080, + 0x4cc00000, 0x10100040, 0x00000000, 0x020b0011, 0x40000000, 0x20080020, 0x04700000, 0xc0040000, 0x00001000, 0x38080000, + 0x00000000, 0x80022000, 0x10100012, 0x42800004, 0x40054001, 0x80008000, 0x04480000, 0x00800000, 0x80840015, 0x00280000, + 0x14400000, 0x6a020000, 0x00000000, 0x20240000, 0x00000006, 0x80100000, 0x50040000, 0x02c00000, 0x20200000, 0x01280000, + 0x04002000, 0x43c00000, 0x00040000, 0x88200000, 0x00000000, 0xa0100000, 0x11080004, 0x02280000, 0x00800000, 0x4c400000, + 0x14420000, 0x21020000, 0x00000000, 0x08000000, 0x60280000, 0x80040000, 0x00120000, 0x10000000, 0x04410000, 0x00080000, + 0xa0000000, 0x0a000000, 0x04400000, 0x42040000, 0x08000000, 0x80600000, 0x00020000, 0x20000010, 0x12210000, 0x08800000, + 0x24100000, 0x04100000, 0x00c00000, 0x000c4006, 0x00000000, 0x00000000, 0x60400000, 0x00000020, 0x11040000, 0x80200000, + 0x00000000, 0x21100000, 0x12800000, 0x000c0000, 0x60000000, 0x84000008, 0x00040000, 0x41000004, 0x0af00000, 0x00100010, + 0x00000000, 0x94400002, 0x01000000, 0x00000000, 0x0a880000, 0x40000000, 0x04200000, 0x20440000, 0x10000000, 0x08000002, + 0xa0290000, 0x00000010, 0x00000001, 0x12910000, 0x20000000, 0x00000000, 0x84480000, 0x00000000, 0x00000000, 0x42240001, + 0x00000002, 0x00800000, 0x8c520010, 0x00000000, 0x02000000, 0x28890000, 0x00000000, 0x04a20000, 0x10500000, 0x08040000, + 0x04400000, 0x50040000, 0x04400000, 0x00000000, 0xa8200000, 0x08300000, 0x01000000, 0x50840000, 0x10100000, 0x00080000, + 0xbe400000, 0x20080000, 0x01040000, 0x58a00000, 0x42040008, 0x80000000, 0x14400008, 0x82020000, 0x01000000, 0x29b80000, + 0x02800000, 0x04000000, 0x10408000, 0x04400000, 0x00000000, 0xa8280000, 0x08300000, 0x10000000, 0x06420000, 0x10100000, + 0x00080000, 0xac410000, 0x20080000, 0x00000000, 0x4a240000, 0x40060000, 0x00000000, 0x94500008, 0x80030000, 0x00000000, + 0x2a200000, 0x02030002, 0x04800000, 0x50580002, 0x04400000, 0xa02c0000, 0x12080000, 0x24520000, 0x00000000, 0x20000000, + 0x80400000, 0x00880000, 0x01400000, 0x00c00000, 0x40200000, 0x80000000, 0x28500000, 0x80100000, 0x00000000, 0x00000000, + 0x08290000, 0x00200000, 0x04040000, 0x00900000, 0x00000000, 0x088c0000, 0x24000000, 0x00280000, 0x10410000, 0x52800000, + 0x00000000, 0x00810000, 0x20000000, 0x00120020, 0x00000000, 0x00000000, 0x00200000, 0x20080000, 0x84100000, 0x10000000, + 0x46080000, 0x20000000, 0x00480000, 0x88180000, 0x10400000, 0x00100000, 0x40000000, 0x28080000, 0x10400000, 0x20000000, + 0x02800000, 0x08840002, 0x00000000, 0x88a00000, 0x00080040, 0x00000000, 0x60000000, 0x00100020, 0x90220000, 0x00100000, + 0x03000010, 0x04000000, 0x000c0000, 0x22c20000, 0x00080000, 0x00000000, 0x20000004, 0x4a020000, 0x40000000, 0x00040004, + 0x11100000, 0x00000000, 0x08000002, 0x20240000, 0x04010000, 0x00000040, 0x04000000, 0x80000000, 0x18200000, 0x01010000, + 0x10c00000, 0x21000010, 0x00d20000, 0x01200000, 0x00820008, 0x00410000, 0x00000000, 0xc0270004, 0x00000000, 0x00000000, + 0x41000004, 0x80800000, 0x02200000, 0x000a0000, 0x00800000, 0x00000000, 0x00400000, 0x00000000, 0x00100000, 0x14000000, + 0x40210000, 0x18020000, 0x04000000, 0x04000000, 0x20050000, 0x00000000, 0x40800000, 0x01000000, 0x00000000, 0x14040000, + 0x00000000, 0x00000000, 0xb2400000, 0x00480000, 0x84000000, 0x00210000, 0x00400000, 0x00800000, 0x08000000, 0x00120000, + 0x00440000, 0x00100000, 0x002a0000, 0x00000000, 0x40000000, 0x00040000, 0x80080000, 0x08010000, 0x00000000, 0x00000000, + 0x18300000, 0x00840000, 0x00000000, 0x20000000, 0x00800000, 0x08040000, 0x00010000, 0x00000000, 0x80100000, 0x00000000, +}; +//uint32_t axFPGAMemInit[] = { +// +//}; diff --git a/qf_vr_apps/qf_vr_aec_app/inc/FreeRTOSConfig.h b/qf_vr_apps/qf_vr_aec_app/inc/FreeRTOSConfig.h new file mode 100644 index 00000000..cdb0c04b --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/FreeRTOSConfig.h @@ -0,0 +1,211 @@ +/* + FreeRTOS V8.2.2 - Copyright (C) 2015 Real Time Engineers Ltd. + All rights reserved + + VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. + + This file is part of the FreeRTOS distribution. + + FreeRTOS is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License (version 2) as published by the + Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. + + *************************************************************************** + >>! NOTE: The modification to the GPL is included to allow you to !<< + >>! distribute a combined work that includes FreeRTOS without being !<< + >>! obliged to provide the source code for proprietary components !<< + >>! outside of the FreeRTOS kernel. !<< + *************************************************************************** + + FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. Full license text is available on the following + link: http://www.freertos.org/a00114.html + + *************************************************************************** + * * + * FreeRTOS provides completely free yet professionally developed, * + * robust, strictly quality controlled, supported, and cross * + * platform software that is more than just the market leader, it * + * is the industry's de facto standard. * + * * + * Help yourself get started quickly while simultaneously helping * + * to support the FreeRTOS project by purchasing a FreeRTOS * + * tutorial book, reference manual, or both: * + * http://www.FreeRTOS.org/Documentation * + * * + *************************************************************************** + + http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading + the FAQ page "My application does not run, what could be wrong?". Have you + defined configASSERT()? + + http://www.FreeRTOS.org/support - In return for receiving this top quality + embedded software for free we request you assist our global community by + participating in the support forum. + + http://www.FreeRTOS.org/training - Investing in training allows your team to + be as productive as possible as early as possible. Now you can receive + FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers + Ltd, and the world's leading authority on the world's leading RTOS. + + http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, + including FreeRTOS+Trace - an indispensable productivity tool, a DOS + compatible FAT file system, and our tiny thread aware UDP/IP stack. + + http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. + Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. + + http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High + Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS + licenses offer ticketed support, indemnification and commercial middleware. + + http://www.SafeRTOS.com - High Integrity Systems also provide a safety + engineered and independently SIL3 certified version for use in safety and + mission critical applications that require provable dependability. + + 1 tab == 4 spaces! +*/ + + +#ifndef FREERTOS_CONFIG_H +#define FREERTOS_CONFIG_H + +#if ((defined(__ICCARM__) || (defined (__GNUC__)))) +/* only do this check for C code not ASM code */ +//#if !defined( _EnD_Of_Fw_global_config_h ) +//#error "Include Fw_global_config.h first" +//#endif +#include "Fw_global_config.h" +#endif + +/*----------------------------------------------------------- + * Application specific definitions. + * + * These definitions should be adjusted for your particular hardware and + * application requirements. + * + * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE + * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. + * + * See http://www.freertos.org/a00110.html. + *----------------------------------------------------------*/ + +/* Ensure stdint is only used by the compiler, and not the assembler. */ +#ifdef __ICCARM__ + #include + //extern volatile uint32_t SystemCoreClock; +#endif + +#define configSUPPORT_STATIC_ALLOCATION 0 +#define configUSE_TICKLESS_IDLE 1 +#define configUSE_PREEMPTION 1 +#define configUSE_IDLE_HOOK 1 +#define configUSE_TICK_HOOK 1 +#define configCPU_CLOCK_HZ (_S3x_Clk_Get_Rate(S3X_M4_S0_S3_CLK)) +#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) +#define configMAX_PRIORITIES ( 22 ) +#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 384 ) + +#ifdef BOOT_LOADER +#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 60 * 1024 ) ) +#else +#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 24 * 1024 ) ) +#endif + +#define configMAX_TASK_NAME_LEN ( 16 ) +#define configUSE_TRACE_FACILITY 1 +#define configUSE_16_BIT_TICKS 0 +#define configIDLE_SHOULD_YIELD 1 +#define configUSE_MUTEXES 1 +#define configQUEUE_REGISTRY_SIZE 32 +#define configCHECK_FOR_STACK_OVERFLOW 2 +#define configUSE_RECURSIVE_MUTEXES 1 +#define configUSE_MALLOC_FAILED_HOOK 1 // for debugging heap problem +#define configUSE_APPLICATION_TASK_TAG 0 +#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 3 +#define configUSE_COUNTING_SEMAPHORES 1 +#define configGENERATE_RUN_TIME_STATS 0 //YWU modify +#define configHEAP4_DEBUG 1 +#define configQUEUE_FULL_DEBUG 1 +#define configSTACK_USAGE_DEBUG 0 +#define configFORCED_KEYSTRING 1 +#define INCLUDE_xTimerPendFunctionCall 1 +//#define configSAVE_TASK_HISTORY 1 + +/* Co-routine definitions. */ +#define configUSE_CO_ROUTINES 0 +#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) + +/* Software timer definitions. */ +#define configUSE_TIMERS 1 +#define configTIMER_TASK_PRIORITY (20) //Highest task priority similar to PM Task //( 2 ) +#define configTIMER_QUEUE_LENGTH 10 +//#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 ) +#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) + + +/* Set the following definitions to 1 to include the API function, or zero +to exclude the API function. */ +#define INCLUDE_vTaskPrioritySet 1 +#define INCLUDE_uxTaskPriorityGet 1 +#define INCLUDE_vTaskDelete 1 +#define INCLUDE_vTaskCleanUpResources 1 +#define INCLUDE_vTaskSuspend 1 +#define INCLUDE_vTaskDelayUntil 1 +#define INCLUDE_vTaskDelay 1 +#define INCLUDE_xTaskGetCurrentTaskHandle 1 +#define INCLUDE_xTimerGetTimerDaemonTaskHandle 1 +#define INCLUDE_uxTaskGetStackHighWaterMark 0 // Enable this to monitor stack usage + +#define __NVIC_PRIO_BITS 3 /*!< Tamar uses 3 Bits for the Priority Levels */ + +/* Cortex-M specific definitions. */ +#ifdef __NVIC_PRIO_BITS + /* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */ + #define configPRIO_BITS __NVIC_PRIO_BITS +#else + #define configPRIO_BITS 4 /* 15 priority levels */ +#endif + +/* The lowest interrupt priority that can be used in a call to a "set priority" +function. */ +//#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0xf +#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY ((1 << configPRIO_BITS) - 1) + +/* The highest interrupt priority that can be used by any interrupt service +routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL +INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER +PRIORITY THAN THIS! (higher priorities are lower numeric values. */ +#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 + +/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! +See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ +#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) + +/* Interrupt priorities used by the kernel port layer itself. These are generic +to all Cortex-M ports, and do not rely on any particular library functions. */ +#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) + +/* Normal assert() semantics without relying on the provision of an assert.h +header file. */ +//#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } +//#define configASSERT( x ) if( ( x ) == 0 ) { extern void go_to_ramdump_mode(void); go_to_ramdump_mode(); } +#define configASSERT( x ) if( ( x ) == 0 ) {\ + extern void save_assert_info(char* file, int line);\ + extern void invoke_soft_fault(void);\ + taskDISABLE_INTERRUPTS();\ + save_assert_info(__FILE__,__LINE__);\ + invoke_soft_fault();\ +}; + +/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS +standard names. */ +#define vPortSVCHandler SVC_Handler +#define xPortPendSVHandler PendSV_Handler +#define CPU_Tick_Handler SysTick_Handler +#define CPU_Tick_Handler SysTick_Handler + + +#endif /* FREERTOS_CONFIG_H */ + diff --git a/qf_vr_apps/qf_vr_aec_app/inc/FreeRTOSFATConfig.h b/qf_vr_apps/qf_vr_aec_app/inc/FreeRTOSFATConfig.h new file mode 100644 index 00000000..2e0a60ee --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/FreeRTOSFATConfig.h @@ -0,0 +1,468 @@ +/* + * FreeRTOS+FAT Labs Build 160919 (C) 2016 Real Time Engineers ltd. + * Authors include James Walmsley, Hein Tibosch and Richard Barry + * + ******************************************************************************* + ***** NOTE ******* NOTE ******* NOTE ******* NOTE ******* NOTE ******* NOTE *** + *** *** + *** *** + *** FREERTOS+FAT IS STILL IN THE LAB: *** + *** *** + *** This product is functional and is already being used in commercial *** + *** products. Be aware however that we are still refining its design, *** + *** the source code does not yet fully conform to the strict coding and *** + *** style standards mandated by Real Time Engineers ltd., and the *** + *** documentation and testing is not necessarily complete. *** + *** *** + *** PLEASE REPORT EXPERIENCES USING THE SUPPORT RESOURCES FOUND ON THE *** + *** URL: http://www.FreeRTOS.org/contact Active early adopters may, at *** + *** the sole discretion of Real Time Engineers Ltd., be offered versions *** + *** under a license other than that described below. *** + *** *** + *** *** + ***** NOTE ******* NOTE ******* NOTE ******* NOTE ******* NOTE ******* NOTE *** + ******************************************************************************* + * + * FreeRTOS+FAT can be used under two different free open source licenses. The + * license that applies is dependent on the processor on which FreeRTOS+FAT is + * executed, as follows: + * + * If FreeRTOS+FAT is executed on one of the processors listed under the Special + * License Arrangements heading of the FreeRTOS+FAT license information web + * page, then it can be used under the terms of the FreeRTOS Open Source + * License. If FreeRTOS+FAT is used on any other processor, then it can be used + * under the terms of the GNU General Public License V2. Links to the relevant + * licenses follow: + * + * The FreeRTOS+FAT License Information Page: http://www.FreeRTOS.org/fat_license + * The FreeRTOS Open Source License: http://www.FreeRTOS.org/license + * The GNU General Public License Version 2: http://www.FreeRTOS.org/gpl-2.0.txt + * + * FreeRTOS+FAT is distributed in the hope that it will be useful. You cannot + * use FreeRTOS+FAT unless you agree that you use the software 'as is'. + * FreeRTOS+FAT is provided WITHOUT ANY WARRANTY; without even the implied + * warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. Real Time Engineers Ltd. disclaims all conditions and terms, be they + * implied, expressed, or statutory. + * + * 1 tab == 4 spaces! + * + * http://www.FreeRTOS.org + * http://www.FreeRTOS.org/plus + * http://www.FreeRTOS.org/labs + * + */ + +#ifndef FF_CONFIG_H + +/* The error numbers defined in this file will be moved to the core FreeRTOS +code in future versions of FreeRTOS - at which time the following header file +will be removed. */ +#include "FreeRTOS_errno_FAT.h" + +/********************* Configuration for S3 **********************************/ + +#include +#include "Fw_global_config.h" + +#define ffconfigBYTE_ORDER pdFREERTOS_LITTLE_ENDIAN +#define ffconfigCWD_THREAD_LOCAL_INDEX 0 + +//#define FS_DBG //Enable FS prints +#ifdef FS_DBG +#define FF_PRINTF printf +#endif + +#if !defined(portINLINE) +#define portINLINE inline +#endif + +/*****************************************************************************/ + +#if !defined( ffconfigBYTE_ORDER ) + /* Must be set to either pdFREERTOS_LITTLE_ENDIAN or pdFREERTOS_BIG_ENDIAN, + depending on the endian of the architecture on which FreeRTOS is running. */ + #error Invalid FreeRTOSFATConfig.h file: ffconfigBYTE_ORDER must be set to either pdFREERTOS_LITTLE_ENDIAN or pdFREERTOS_BIG_ENDIAN +#endif + +#if ( ffconfigBYTE_ORDER != pdFREERTOS_LITTLE_ENDIAN ) && ( ffconfigBYTE_ORDER != pdFREERTOS_BIG_ENDIAN ) + #error Invalid FreeRTOSFATConfig.h file: ffconfigBYTE_ORDER must be set to either pdFREERTOS_LITTLE_ENDIAN or pdFREERTOS_BIG_ENDIAN +#endif + +#if ( pdFREERTOS_LITTLE_ENDIAN != 0 ) || ( pdFREERTOS_BIG_ENDIAN != 1 ) + #error Invalid projdefs.h or FreeRTOS_errno_FAT.h file +#endif + +#if !defined( ffconfigHAS_CWD ) + /* Set to 1 to maintain a current working directory (CWD) for each task that + accesses the file system, allowing relative paths to be used. + + Set to 0 not to use a CWD, in which case full paths must be used for each + file access. */ + #define ffconfigHAS_CWD 0 + + #if !defined( ffconfigCWD_THREAD_LOCAL_INDEX ) + #error ffconfigCWD_THREAD_LOCAL_INDEX must be set to a free position within FreeRTOSs thread local storage pointer array for storage of a pointer to the CWD structure. + #endif + +#endif + +#if !defined( ffconfigLFN_SUPPORT ) + /* Set to 1 to include long file name support. Set to 0 to exclude long + file name support. + + If long file name support is excluded then only 8.3 file names can be used. + Long file names will be recognised but ignored. + + Users should familiarise themselves with any patent issues that may + potentially exist around the use of long file names in FAT file systems + before enabling long file name support. */ + #define ffconfigLFN_SUPPORT 1 +#endif + +#if !defined( ffconfigINCLUDE_SHORT_NAME ) + /* Only used when ffconfigLFN_SUPPORT is set to 1. + + Set to 1 to include a file's short name when listing a directory, i.e. when + calling findfirst()/findnext(). The short name will be stored in the + 'pcShortName' field of FF_DirEnt_t. + + Set to 0 to only include a file's long name. */ + #define ffconfigINCLUDE_SHORT_NAME 0 +#endif + +#if !defined( ffconfigSHORTNAME_CASE ) + /* Set to 1 to recognise and apply the case bits used by Windows XP+ when + using short file names - storing file names such as "readme.TXT" or + "SETUP.exe" in a short-name entry. This is the recommended setting for + maximum compatibility. + + Set to 0 to ignore the case bits. */ + #define ffconfigSHORTNAME_CASE 0 +#endif + +#if !defined( ipconfigQUICK_SHORT_FILENAME_CREATION ) + /* This method saves a lot of time when creating directories with + many similar file names: when the short name version of a LFN already + exists, try at most 3 entries with a tilde: + README~1.TXT + README~2.TXT + README~3.TXT + After that create entries with pseudo-random 4-digit hex digits: + REA~E7BB.TXT + REA~BA32.TXT + REA~D394.TXT + */ + #define ipconfigQUICK_SHORT_FILENAME_CREATION 1 +#endif + + /* ASCII versus UNICODE, UTF-16 versus UTF-8 : + FAT directories, when using Long File Names, always store file and directory + names UTF-16 encoded. + The user can select how these names must be represented internally: + - ASCII (default) + - UTF-8 (ffconfigUNICODE_UTF8_SUPPORT = 1) + - UTF-16 (ffconfigUNICODE_UTF16_SUPPORT = 1) + */ +#if( ffconfigUNICODE_UTF16_SUPPORT == 0 ) + /* Only used when ffconfigLFN_SUPPORT is set to 1. + + Set to 1 to use UTF-16 (wide-characters) for file and directory names. + + Set to 0 to use either 8-bit ASCII or UTF-8 for file and directory names + (see the ffconfigUNICODE_UTF8_SUPPORT). */ + #define ffconfigUNICODE_UTF16_SUPPORT 0 +#endif + +#if !defined( ffconfigUNICODE_UTF8_SUPPORT ) + /* Only used when ffconfigLFN_SUPPORT is set to 1. + + Set to 1 to use UTF-8 encoding for file and directory names. + + Set to 0 to use either 8-bit ASCII or UTF-16 for file and directory + names (see the ffconfig_UTF_16_SUPPORT setting). */ + #define ffconfigUNICODE_UTF8_SUPPORT 0 +#endif + +#if( ffconfigUNICODE_UTF16_SUPPORT != 0 ) && ( ffconfigUNICODE_UTF8_SUPPORT != 0 ) + #error Can not use both UTF-16 and UTF-8 +#endif + +#if !defined( ffconfigFAT12_SUPPORT ) + /* Set to 1 to include FAT12 support. + + Set to 0 to exclude FAT12 support. + + FAT16 and FAT32 are always enabled. */ + #define ffconfigFAT12_SUPPORT 0 +#endif + +#if !defined( ffconfigOPTIMISE_UNALIGNED_ACCESS ) + /* When writing and reading data, i/o becomes less efficient if sizes other + than 512 bytes are being used. When set to 1 each file handle will + allocate a 512-byte character buffer to facilitate "unaligned access". */ + #define ffconfigOPTIMISE_UNALIGNED_ACCESS 0 +#endif + +#if !defined( ffconfigCACHE_WRITE_THROUGH ) + /* Input and output to a disk uses buffers that are only flushed at the + following times: + + - When a new buffer is needed and no other buffers are available. + - When opening a buffer in READ mode for a sector that has just been changed. + - After creating, removing or closing a file or a directory. + + Normally this is quick enough and it is efficient. If + ffconfigCACHE_WRITE_THROUGH is set to 1 then buffers will also be flushed each + time a buffer is released - which is less efficient but more secure. */ + #define ffconfigCACHE_WRITE_THROUGH 1 +#endif + +#if !defined( ffconfigWRITE_BOTH_FATS ) + /* In most cases, the FAT table has two identical copies on the disk, + allowing the second copy to be used in the case of a read error. If + + Set to 1 to use both FATs - this is less efficient but more secure. + + Set to 0 to use only one FAT - the second FAT will never be written to. */ + #define ffconfigWRITE_BOTH_FATS 0 +#endif + +#if !defined( ffconfigWRITE_FREE_COUNT ) + /* Set to 1 to have the number of free clusters and the first free cluster + to be written to the FS info sector each time one of those values changes. + + Set to 0 not to store these values in the FS info sector, making booting + slower, but making changes faster. */ + #define ffconfigWRITE_FREE_COUNT 0 +#endif + +#if !defined( ffconfigTIME_SUPPORT ) + /* Set to 1 to maintain file and directory time stamps for creation, modify + and last access. + + Set to 0 to exclude time stamps. + + If time support is used, the following function must be supplied: + + time_t FreeRTOS_time( time_t *pxTime ); + + FreeRTOS_time has the same semantics as the standard time() function. */ + #define ffconfigTIME_SUPPORT 1 +#endif + +#if !defined( ffconfigREMOVABLE_MEDIA ) + /* Set to 1 if the media is removable (such as a memory card). + + Set to 0 if the media is not removable. + + When set to 1 all file handles will be "invalidated" if the media is + extracted. If set to 0 then file handles will not be invalidated. + In that case the user will have to confirm that the media is still present + before every access. */ + #define ffconfigREMOVABLE_MEDIA 0 +#endif + +#if !defined( ffconfigMOUNT_FIND_FREE ) + /* Set to 1 to determine the disk's free space and the disk's first free + cluster when a disk is mounted. + + Set to 0 to find these two values when they are first needed. Determining + the values can take some time. */ + #define ffconfigMOUNT_FIND_FREE 0 +#endif + +#if !defined( ffconfigFSINFO_TRUSTED ) + /* Set to 1 to 'trust' the contents of the 'ulLastFreeCluster' and + ulFreeClusterCount fields. + + Set to 0 not to 'trust' these fields.*/ + #define ffconfigFSINFO_TRUSTED 0 +#endif + +#if !defined( ffconfigFINDAPI_ALLOW_WILDCARDS ) + /* For now must be set to 0. */ + #define ffconfigFINDAPI_ALLOW_WILDCARDS 0 +#endif + +#if !defined( ffconfigWILDCARD_CASE_INSENSITIVE ) + /* For now must be set to 0. */ + #define ffconfigWILDCARD_CASE_INSENSITIVE 0 +#endif + +#if !defined( ffconfigPATH_CACHE ) + /* Set to 1 to store recent paths in a cache, enabling much faster access + when the path is deep within a directory structure at the expense of + additional RAM usage. + + Set to 0 to not use a path cache. */ + #define ffconfigPATH_CACHE 0 +#endif + +#if !defined( ffconfigPATH_CACHE_DEPTH ) + /* Only used if ffconfigPATH_CACHE is 1. + + Sets the maximum number of paths that can exist in the patch cache at any + one time. */ + #define ffconfigPATH_CACHE_DEPTH 5 +#endif + +#if !defined( ffconfigHASH_CACHE ) + /* Set to 1 to calculate a HASH value for each existing short file name. + Use of HASH values can improve performance when working with large + directories, or with files that have a similar name. + + Set to 0 not to calculate a HASH value. */ + #define ffconfigHASH_CACHE 0 +#endif + +#if( ffconfigHASH_CACHE != 0 ) + #if !defined( ffconfigHASH_FUNCTION ) + /* Only used if ffconfigHASH_CACHE is set to 1 + + Set to CRC8 or CRC16 to use 8-bit or 16-bit HASH values respectively. */ + #define ffconfigHASH_FUNCTION CRC16 + #endif + + #if ffconfigHASH_FUNCTION == CRC16 + #define ffconfigHASH_TABLE_SIZE 8192 + #elif ffconfigHASH_FUNCTION == CRC8 + #define ffconfigHASH_TABLE_SIZE 32 + #else + #error Invalid Hashing function selected. CRC16 or CRC8. See your FreeRTOSFATConfig.h. + #endif +#endif /* ffconfigHASH_CACHE != 0 */ + +#if !defined( ffconfigMKDIR_RECURSIVE ) + /* Set to 1 to add a parameter to ff_mkdir() that allows an entire directory + tree to be created in one go, rather than having to create one directory in + the tree at a time. For example mkdir( "/etc/settings/network", pdTRUE );. + + Set to 0 to use the normal mkdir() semantics (without the additional + parameter). */ + #define ffconfigMKDIR_RECURSIVE 0 +#endif + +#if !defined( ffconfigMALLOC ) + /* Set to a function that will be used for all dynamic memory allocations. + Setting to pvPortMalloc() will use the same memory allocator as FreeRTOS. */ + #define ffconfigMALLOC( size ) pvPortMalloc( size ) +#endif + +#if !defined( ffconfigFREE ) + /* Set to a function that matches the above allocator defined with + ffconfigMALLOC. Setting to vPortFree() will use the same memory free + function as FreeRTOS. */ + #define ffconfigFREE( ptr ) vPortFree( ptr ) +#endif + +#if !defined( ffconfig64_NUM_SUPPORT ) + /* Set to 1 to calculate the free size and volume size as a 64-bit number. + + Set to 0 to calculate these values as a 32-bit number. */ + #define ffconfig64_NUM_SUPPORT 0 +#endif + +#if !defined( ffconfigMAX_PARTITIONS ) + /* Defines the maximum number of partitions (and also logical partitions) + that can be recognised. */ + #define ffconfigMAX_PARTITIONS 1 +#endif + +#if !defined( ffconfigMAX_FILE_SYS ) + /* Defines how many drives can be combined in total. Should be set to at + least 2. */ + #define ffconfigMAX_FILE_SYS 4 +#endif + +#if !defined( ffconfigDRIVER_BUSY_SLEEP_MS ) + /* In case the low-level driver returns an error 'FF_ERR_DRIVER_BUSY', + the library will pause for a number of ms, defined in + ffconfigDRIVER_BUSY_SLEEP_MS before re-trying. */ + #define ffconfigDRIVER_BUSY_SLEEP_MS 20 +#endif + +#if !defined( ffconfigFPRINTF_SUPPORT ) + /* Set to 1 to include the ff_fprintf() function. + + Set to 0 to exclude the ff_fprintf() function. + + ff_fprintf() is quite a heavy function because it allocates RAM and + brings in a lot of string and variable argument handling code. If + ff_fprintf() is not being used then the code size can be reduced by setting + ffconfigFPRINTF_SUPPORT to 0. */ + #define ffconfigFPRINTF_SUPPORT 1 +#endif + +#if !defined( ffconfigFPRINTF_BUFFER_LENGTH ) + /* ff_fprintf() will allocate a buffer of this size in which it will create + its formatted string. The buffer will be freed before the function + exits. */ + #define ffconfigFPRINTF_BUFFER_LENGTH 128 +#endif + +#if !defined( ffconfigDEBUG ) + #define ffconfigDEBUG 1 +#endif + +#if !defined( ffconfigLONG_ERR_MSG ) + #define ffconfigLONG_ERR_MSG 1 +#endif + +#if( ffconfigDEBUG != 0 ) + #if !defined( ffconfigHAS_FUNCTION_TAB ) + #define ffconfigHAS_FUNCTION_TAB 1 + #endif +#endif + +#if !defined( ffconfigINLINE_MEMORY_ACCESS ) + /* Set to 1 to inline some internal memory access functions. + + Set to 0 to not inline the memory access functions. */ + #define ffconfigINLINE_MEMORY_ACCESS 0 +#endif + +#if !defined( ffconfigMIRROR_FATS_UMOUNT ) + /*_RB_ not sure. */ + #define ffconfigMIRROR_FATS_UMOUNT 0 +#endif + +#if !defined( ffconfigFAT_CHECK ) + /* Officially the only criteria to determine the FAT type (12, 16, or 32 + bits) is the total number of clusters: + if( ulNumberOfClusters < 4085 ) : Volume is FAT12 + if( ulNumberOfClusters < 65525 ) : Volume is FAT16 + if( ulNumberOfClusters >= 65525 ) : Volume is FAT32 + Not every formatted device follows the above rule. + + Set to 1 to perform additional checks over and above inspecting the + number of clusters on a disk to determine the FAT type. + + Set to 0 to only look at the number of clusters on a disk to determine the + FAT type. */ + #define ffconfigFAT_CHECK 1 +#endif + +#if !defined( ffconfigMAX_FILENAME ) + /* Sets the maximum length for file names, including the path. + Note that the value of this define is directly related to the maximum stack + use of the +FAT library. In some API's, a character buffer of size + 'ffconfigMAX_FILENAME' will be declared on stack. */ + #define ffconfigMAX_FILENAME (64) +#endif + +#if !defined( ffconfigUSE_DELTREE ) + /* By default, do not include the recursive function ff_deltree() as + recursion breaches the coding standard - USE WITH CARE. */ + #define ffconfigUSE_DELTREE 0 +#endif + +#if !defined( FF_PRINTF ) + #define FF_PRINTF FF_PRINTF + static portINLINE void FF_PRINTF( const char *pcFormat, ... ) + { + ( void ) pcFormat; + } +#endif + +#endif diff --git a/qf_vr_apps/qf_vr_aec_app/inc/Fw_global_config.h b/qf_vr_apps/qf_vr_aec_app/inc/Fw_global_config.h new file mode 100644 index 00000000..308ed9ae --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/Fw_global_config.h @@ -0,0 +1,270 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * + * File : Fw_global_config.h + * Purpose: + * + *=========================================================*/ + +#ifndef FW_GLOBAL_CONFIG_H_INCLUDED /* Avoid multiple inclusion */ +#define FW_GLOBAL_CONFIG_H_INCLUDED + +#include +#define DEBUG_QL_SYSTEMSTATE 1 +#define CONTROLTASK_IGNORE_UNHANDLED_EVENT 1 // Set to 1 to ignore unhandled events (prints warning), or set to 0 to configassert on unhandled event + +#define ENABLE_VOICE_SOLUTION 1 +#define PDM2DEC_FACT 48 + +#define FEATURE_CLI_DEBUG_INTERFACE 0 +#define FEATURE_CLI_FILESYSTEM 0 + +#define FEATURE_D2HPROTOCOL_DEVICE (1) + +#define FEATURE_1WIRE_PROTOCOL_DEVICE (1) //1 = 1-Pin protocol, 0 = 4-pin protocol + +#define FEATURE_FLL_I2S_DEVICE (1) +#if (FEATURE_FLL_I2S_DEVICE == 1) +//#define FLL_I2S_LOCAL_CLK (1*1024*1000) //for 16K sample rate = 2*32*16K = 1024000 +#endif + + +#define ENABLE_I2S_16KHz_RX_SLAVE (1) //Audio data is received on I2S interface at 48KHz, but decimated by 3 for SDMA + +#if (ENABLE_I2S_16KHz_RX_SLAVE == 1) +#define ENABLE_I2S_SLAVE_FB_RX (1) +#endif + +#define ENABLE_FB_FIR_DECIMATION_RX (1) //1=decimation by 3 is done in FPGA + +#define FEATURE_MULTI_CHANNEL_STREAM_DEVICE (1) //1 = 2 or 3 channel Data Stream, 0 = 1 channel stream (source circular buffer) + +#if (FEATURE_MULTI_CHANNEL_STREAM_DEVICE == 1) +#define NUM_AUDIO_STREAM_CHANNELS (3) //either 2 or 3 only +#else +#define NUM_AUDIO_STREAM_CHANNELS (0) //not used for regular stream from Circular Buffer +#endif + +#define AEC_ENABLED (1) +//see ql_audio_preproc.h for definitions +#define QL_AUDIO_PREPROC_ALGO (15) //QL_AUDIO_PREPROC_CONS_AEC +#if (AEC_ENABLED == 1) +#define AEC_2_0 (1) +#endif + +/* Select the filesystem API to use */ +#define USE_FREERTOS_FAT 0 ///< Set this to 1 to use FreeRTOS FAT filesystem (Merced default) +#define USE_FATFS 0 ///< Set this to 1 to use FATFs filesystem + +#define uartHandlerUpdate(id,x) + +// Options for debug output -- use to set DEBUG_UART below +// #define UART_ID_DISABLED 0 /* /dev/null */ +// #define UART_ID_HW 1 /* the hard UART on the S3 */ +// #define UART_ID_SEMIHOST 2 +// #define UART_ID_FPGA 3 /* second uart if part of FPGA */ +// #define UART_ID_BUFFER 4 // Write data to buffer +// #define UART_ID_SEMBUF 5 // Write datat to semihost and buffer +#define DEBUG_UART UART_ID_BUFFER // Write debug data to buffer (bufferprinttask can be used to print) + +#define USE_SEMIHOSTING 0 // 1 => use semihosting, 0 => use UART_ID_HW + +#define SIZEOF_DBGBUFFER (2*2048) // Number of characters in circular debug buffer + +#define DBG_flags_default 0 // (DBG_FLAG_ble_cmd + DBG_FLAG_sensor_rate+DBG_FLAG_datasave_debug) +#define DBG_FLAGS_ENABLE 1 +#if !DBG_FLAGS_ENABLE +#define DBG_flags 0 +#else +extern uint32_t DBG_flags; +#endif + + +extern const char *SOFTWARE_VERSION_STR; + +extern int FPGA_FFE_LOADED; + +#define ENABLE_PRINTF 1 + +#define ENABLE_LOAD_FROM_FLASH (0) + +/** Enable Host mode for Voice application, This standalone S3 mode */ + +#define HOST_VOICE 1 + + +/** Define COMPANION_SENSOR macro to configure system in CO-PROCESSOR mode for double tap application */ +//#define COMPANION_SENSOR + +/** Define HOST_SENSOR macro to configure system in HOST mode */ +#define HOST_SENSOR 1 + +#if !defined(ENABLE_PRINTF) +#include /* we require printf() to be defined first */ +#define printf(x, ...) /* Uart is disabled in CO-PROCESSOR_VOICE for power numbers */ +#endif + +#define QL_LOG_INFO_150K(X,...) printf(X,##__VA_ARGS__) +#define QL_LOG_DBG_150K(X,...) printf(X,##__VA_ARGS__) +#define QL_LOG_ERR_150K(X,...) printf(X,##__VA_ARGS__) +#define QL_LOG_WARN_150K(X,...) printf(X,##__VA_ARGS__) +#define QL_LOG_TEST_150K(X,...) printf(X,##__VA_ARGS__) + + +/* enable via sw the FFE or disable it, TODO: Make this real instead of a hack */ +#define SW_ENABLE_FFE 0 +/* enable via sw the AUDIO or disable it, TODO: Make this real instead of a hack */ +#define SW_ENABLE_AUDIO 1 +/* enable the FFE or not, see SW_ENABLE_FFE only 1 should exist */ +#define FFE_DRIVERS 0 // 1 + +/* do or do not perform dynamic frequency scaling */ +#define CONST_FREQ (0) +/* used to enable CPU load calculation for DFS */ +#define CPU_LOAD_CALC_ENABLE 0 + +/* enable the LTC1859 driver */ +#define LTC1859_DRIVER 0 // 1 + +/* enable the AUDIO driver */ +#define AUDIO_DRIVER 1 // Set 1 to enable audio sampling + + +/* if 0 load from SPI, if 1 load FFE/FPGA from SD card */ +#define LOAD_FROM_SD 1 + +#define EOSS3_ASSERT( x ) + + + + +//#define USE_FPGA_UART + +#if 0 +#define ASSP_UARTTx uarttx +#define ASSP_UARTRx uartrx +#define assp_uartHandlerUpdate uartHandlerUpdate +#define assp_uartInit uartInit +#define ASSP_uart_read uart_read +#define ASSP_fillRxBuf fillRxBuf +#define ASSP_getRxBuf getRxBuf +#define ASSP_getRxBufSize getRxBufSize +#endif + +/* Define this flag to Enable Internal LDO. If undefined, internal LDO will be disabled.*/ +#define ENABLE_INTERNAL_LDO 0 // set to 0 for power measurement + +/* select one of the following for Audio PDM block */ +#define PDM_PAD_28_29 1 +#define PDM_PAD_8_10 0 +#define VOICE_AP_BYPASS_MODE 0 + +#define SET_LPSD_THRESH 0 +#define KSAMPLES_TO_DROP 10 //400 + +/* define one of these */ +#define PDM_MIC_CHANNELS (1) +#if (PDM_MIC_CHANNELS == 2) + #define PDM_MIC_STEREO (1) +#endif +#define VOICE_CONF_ENABLE_I2S_MIC 0 + +/* if mono define one of these */ +#define PDM_MIC_LEFT_CH 1 +#define PDM_MIC_RIGHT_CH 0 + +#define EN_STEREO_DUAL_BUF 1 //0= use stereo data interleaved + +#define ENABLE_I2S_TX_SLAVE 0 +#define QL_XPORT_INCLUDE_HEADER (0) //(1) + +#define ENABLE_HOST_IF (1) + +#if (ENABLE_I2S_TX_SLAVE == 1) +#undef ENABLE_HOST_IF +#endif + + +#if (ENABLE_HOST_IF == 1) +#define VM1010_MIC_BOARD (0) +#define ENABLE_OPUS_TX (1) + +#if (ENABLE_OPUS_TX == 0) +#define ENABLE_RAW_TX_SPI (1) +#define ENABLE_OPUS_ENCODER (0) +#else +#define ENABLE_RAW_TX_SPI (1) +#define ENABLE_OPUS_ENCODER (0) +#endif + +#endif // ENABLE_HOST_IF + + +/* Fs = Audio sampling rate */ +#define AUDIO_SAMPLING_RATE (16000) +#define AUDIO_BLOCK_SIZE_IN_SAMPLES (240) +#define AUDIO_BLOCK_SIZE_IN_MS (15) +#if QL_XPORT_INCLUDE_HEADER == 1 +#define QL_XPORT_BLCOK_HDR_SZ (8) +#else +#define QL_XPORT_BLCOK_HDR_SZ (0) +#endif + + +//#if ENABLE_RAW_TX_SPI == 1 + +#define TX_SPI_AUDIO_BLOCK_COUNT (8) + +/* examlpe ~100ms = 6 blocks*AUDIO_BLOCK_SIZE_IN_SAMPLES = 1440 pcm samples mono */ +/* OR 120ms = 8 blocks*AUDIO_BLOCK_SIZE_IN_SAMPLES = 1920 pcm samples mono */ +/* 960 samples = 4 block of 15 mS each = 60mSec and 960 block sz pcm samples mono */ +/* 1200 samples = 5 block of 15 mS each = 75mSec and 1200 block sz pcm samples mono */ +#define TX_SPI_AUDIO_RAW_BLOCK_SZ (TX_SPI_AUDIO_BLOCK_COUNT*(AUDIO_BLOCK_SIZE_IN_SAMPLES + QL_XPORT_BLCOK_HDR_SZ)) + +/* 50ms Timer - to check enough raw pcm samples available */ +#define TX_SPI_AUDIO_RAW_MSG_PERIOD (40) +/* chalil - guess - shall be little lesser than time for TX_SPI_AUDIO_RAW_BLOCK_SZ ?, + todo -test with more than one values {50, 90, 100} */ +//#define TX_SPI_AUDIO_RAW_MSG_PERIOD (AUDIO_BLOCK_SIZE_IN_MS*(TX_SPI_AUDIO_BLOCK_COUNT-2)) + +// assume all the blocks are 15ms. +// for example, if this value is 10, a maximum of 150ms is held for instant streaming +// Note: set it to at least 2 times the buffer required +#define MAX_AUDIO_RAW_STREAM_QUEUE_SIZE (TX_SPI_AUDIO_BLOCK_COUNT*8) + +//#endif + +#define AUDIO_LED_TEST 0 // Valid only in Chandalar BSP specific apps +#define DFS_LED_TEST 1 // Used to track DFS states (N0 = none, N1 = green, N2 = blue, N3 = orange, N4 = all +#define D2H_LED_TEST 0 // Blue means D2H line is high + +#define MIN_AUDIO_SAVE_BLOCKS_SPARE_SIZE (30) +#define PRE_TEXT_BEFORE_KEY_PHRASE (0) +/*Set this flag to 1 to enabled forced streaming enable/disable command through CLI. +Setting it to 1 will remove uart in lpm feature (since uart cli will be now used to send the start/stop cmd.) +(Will increase power consumption)*/ +#define FORCED_STREAMING_ENABLED (0) + +/********************/ + +/* this should always be the last #define in this file */ +/* it insures that we have completely processed this entire file */ +#define _EnD_Of_Fw_global_config_h 1 + +#endif diff --git a/qf_vr_apps/qf_vr_aec_app/inc/Fw_task.h b/qf_vr_apps/qf_vr_aec_app/inc/Fw_task.h new file mode 100644 index 00000000..27d1df20 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/Fw_task.h @@ -0,0 +1,63 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : Fw_task.h + * Purpose: + * + *=========================================================*/ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __FW_TASK_H +#define __FW_TASK_H + +#if !defined( _EnD_Of_Fw_global_config_h ) +#error "Include Fw_global_config.h first" +#endif + +/* Includes ------------------------------------------------------------------*/ +#include +//#include +//#include + +/* Exported types ------------------------------------------------------------*/ + +/* Exported functions ------------------------------------------------------- */ + +/* FIXME: Get rid of the uint8 and use uint8_t instead */ +typedef uint8_t uint8; +typedef int8_t sint8; +typedef uint16_t uint16; +typedef int16_t sint16; +typedef uint32_t uint32; +typedef int32_t sint32; + +/* Priority for each tasks ---------------------------------------*/ +/* Higher values indicate higher priorities. */ + + + + +#define FFE_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE ) +#define SYS_TASK_STACK_SIZE DO NOT USE THIS + + + +#endif /* __TASK_H */ + + diff --git a/qf_vr_apps/qf_vr_aec_app/inc/RtosTask.h b/qf_vr_apps/qf_vr_aec_app/inc/RtosTask.h new file mode 100644 index 00000000..db863220 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/RtosTask.h @@ -0,0 +1,120 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : RtosTask.h + * Purpose: Define the Task handles, queues and priorities + * + * + *=========================================================*/ + +#ifndef __RTOSTASK_H__ +#define __RTOSTASK_H__ +#include +#include "FreeRTOS.h" +#include "task.h" +#include +#include "portable.h" + +#define STACK_BAISC_UNIT 1 +#define STACK_SIZE_ALLOC(size) (size * STACK_BAISC_UNIT) + +/*====================================================*/ + +/* Enum so that all of these are visibile in 1 place */ +typedef enum { + PRIORITY_LOWEST = 0, + + PRIORITY_LOWER = (configMAX_PRIORITIES/4), + + PRIORITY_NORMAL = (configMAX_PRIORITIES/2), + + PRIORITY_HIGH = ((configMAX_PRIORITIES*3)/4), + + PRIORITY_HAL_TIMER = configMAX_PRIORITIES-2, + PRIORITY_LOADER = configMAX_PRIORITIES-1, + + PRIORITY_HIGHEST = configMAX_PRIORITIES, +} TaskPriorities; + + +#define PRIORITY_TASK_BLE ((unsigned)(PRIORITY_NORMAL)) +#define STACK_SIZE_TASK_BLE (256) +extern xTaskHandle xHandleTaskBLE; +extern QueueHandle_t BLE_MsgQ; +extern signed portBASE_TYPE StartRtosTaskBLE( void); + +#define PRIORITY_TASK_AP_COMM ((unsigned)(PRIORITY_NORMAL)) +#define STACK_SIZE_TASK_AP_COMM (256) +extern xTaskHandle xHandleTaskAPComm; +extern QueueHandle_t xHandleQueueAPComm; +extern signed portBASE_TYPE StartRtosTaskApComm(void); // to remove warnings uxPriority not used in the function + +#define PRIORITY_TASK_CONTROL ((unsigned)(PRIORITY_HIGH)) +#define STACK_SIZE_TASK_CONTROL (2*256) +extern xTaskHandle xHandleTaskControl; +extern QueueHandle_t xHandleQueueControl; +extern signed portBASE_TYPE StartControlTask( void); // to remove warnings + +#define PRIORITY_TASK_AUDIO ((unsigned)(PRIORITY_HIGH)) +#define STACK_SIZE_TASK_AUDIO (256) +extern xTaskHandle xHandleTaskAudio; +extern QueueHandle_t xHandleQueueAudio; +extern signed portBASE_TYPE StartRtosTaskAudio( void); // to remove warnings + +#define PRIORITY_TASK_HOSTIF ((unsigned)(PRIORITY_HIGH)) +#define STACK_SIZE_TASK_HOSTIF (256) +extern xTaskHandle xHandleTaskHostIf; +extern QueueHandle_t xHandleQueueHostIf; +extern signed portBASE_TYPE hif_task_Start( void); // to remove warnings + +#define PRIORITY_TASK_NEURONS ((unsigned)(PRIORITY_HIGH)) +#define STACK_SIZE_TASK_NEURONS (256) +extern xTaskHandle xHandleTaskNeurons; +extern QueueHandle_t NeuronMsgQ; +extern signed portBASE_TYPE StartRtosTaskNeurons( void); // to remove warnings + +#define PRIORITY_TASK_DATASAVE ((unsigned)(PRIORITY_LOWER)) +#define STACK_SIZE_TASK_DATASAVE (256) +extern xTaskHandle xHandleTaskDataSave; +extern signed portBASE_TYPE StartRtosTaskDataSave( void); // to remove warnings + + +#define PRIORITY_TASK_SENSIML_RECO ((unsigned)(PRIORITY_NORMAL)) +#define STACK_SIZE_TASK_SENSIML_RECO (256) +extern signed portBASE_TYPE StartRtosTaskRecognition(void); // to remove warnings + +#define PRIORITY_TASK_FFESENSORS ((unsigned)(PRIORITY_HIGH)) +#define STACK_SIZE_TASK_FFESENSORS (256) +extern xTaskHandle xHandleTaskFFESensors; +extern QueueHandle_t FFESensorsMsgQ; +extern signed portBASE_TYPE StartRtosTaskFFESensors( void); + +#define PRIORITY_TASK_ADC (((unsigned)(PRIORITY_HIGH))+1) +#define STACK_SIZE_TASK_ADC (256) +extern xTaskHandle xHandleTaskADC; +extern QueueHandle_t xHandleQueueADC; +extern signed portBASE_TYPE StartRtosTaskADC( void); + +#define PRIORITY_TASK_D2H_RX ((unsigned)(PRIORITY_HIGH+1)) +#define STACK_SIZE_TASK_D2H_RX (256) +extern xTaskHandle xHandleTaskD2HRx; +extern QueueHandle_t D2HRx_MsgQ; + + + +#endif /* __RTOSTASK_H__ */ diff --git a/qf_vr_apps/qf_vr_aec_app/inc/host_interface.h b/qf_vr_apps/qf_vr_aec_app/inc/host_interface.h new file mode 100644 index 00000000..d28ddc7e --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/host_interface.h @@ -0,0 +1,159 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== +* +* File : host_interface.h +* Purpose: +*=========================================================*/ + +#ifndef HOST_INTERFACE_H +#define HOST_INTERFACE_H + +#include "FreeRTOS.h" +#include "task.h" +#include "semphr.h" +#include +#include "common.h" +#include + +#include "test_types.h" +#include "ql_util.h" +#include "qlsh_commands.h" +#include "datablk_mgr.h" +#include "dbg_queue_monitor.h" +#include "s3_host_proto_defs.h" + +#define HOST_TRANSPORT_CHUNK_SIZE (TX_SPI_AUDIO_RAW_BLOCK_SZ) + +#define HOSTIF_ISR_MESSAGE ( 0x0ff & ('H' + 'I' + 'S' + 'R') ) +#define HOSTIF_TASK_MESSAGE ( 0x0ff & ('H' + 'T' + 'A' + 'S' + 'K') ) +#define HIF_COMMAND_TABLE_SIZE (64) + +#if 0 +typedef enum HIF_MESSAGE_ +{ + MESSAGE_VM_WAKEUP = 0x01, + MESSAGE_AUDIO_OPUS_CHUNK_DONE = 0x02, + MESSAGE_KPT_DETECTED = 0x03, + MESSAGE_STOP_AUDIO = 0x04, + MESSAGE_START_AUDIO = 0x05, + MESSAGE_AUDIO_OPUS_BLOCK_READY= 0x06, + MESSAGE_AUDIO_RAW_BLOCK_READY = 0x07, + MESSAGE_AUDIO_PCM_CHUNK_DONE = 0x22, + MESSAGE_STOP_TX, + MESSAGE_NOP // Does nothing (used for side effect of monitoring D2H status */ +}HIF_MESSAGE; + +typedef enum HIF_EVT_ +{ + EVT_KP_DETECTED = 0x10, + EVT_OPUS_PKT_READY = 0x11, + EVT_OPUS_PKT_END = 0x12, + EVT_RAW_PKT_READY = 0x21, + EVT_RAW_PKT_END = 0x22, + EVT_EOT +}HIF_EVT; + +enum HIF_CMD +{ + CMD_HOST_READY_TO_RECEIVE = 0x1, + CMD_HOST_PROCESS_OFF = 0x2, + CMD_HOST_PROCESS_ON = 0x3, + CMD_HOST_MUTE_OFF = 0x4, + CMD_HOST_MUTE_ON = 0x5 +}; +#endif +enum HIF_CHAN_NUM_E{ + HIF_CHAN_NUM_AUDIO = 10, /* PROTOCOL_CHANNEL_NUMBER for all audio */ + HIF_CHAN_NUM_AUDIO_PCM1 = 10 /* PCM mono 16 bit */ +}; +typedef struct _hif_channel_info +{ + int8_t sequence_number; + int8_t sequence_numberCompleted; + int32_t channel_number; + int32_t firstTime; + SemaphoreHandle_t xSemaphore; + uint8_t* pucData; + QAI_DataBlock_t *pdata_block; +}hif_channel_info_t; + +typedef struct st_hif_command_table { + int icommand; + void (*pcommand_func)(void *p_data, int length); +} hif_command_table_t ; +extern hif_command_table_t hif_command_table[]; +extern int hif_command_table_size; + +extern QueueHandle_t q_id_inQ_hif; +extern SemaphoreHandle_t g_host_ready_lock; + +void hostIfTaskHandler(void *pParameter); +void init_protocol_variables(hif_channel_info_t *p_hif_channel_info); +void ql_hif_msg_send_KPDetected(void); +void hif_data_addToQueueFromISR(struct xQ_Packet* pxMsg); +void hif_data_addToQueueFromTask(struct xQ_Packet* pxMsg); +void hif_msg_sendOpusChunkDone(UINT8_t* uintchunkStartAddress, int length); +void hif_msg_sendRawChunkDone(UINT8_t* p_buffer, int length); +void opus_host_msg_callback(int opus_bytes_available); +void hif_msg_send_streamKPDetected(void); +void hif_msg_sendKPDetected(void); +void hif_msg_sendStopTx(void); +void hif_enableCommunication(uint8_t val); +bool hif_isCommunicationEnabled(); +bool isStreamingOn(void); +void setStreamingOff(void); +void hif_SendData(hif_channel_info_t* p_hif_channel_info); +void hif_release_inputQ(void); + +bool isLpsdIgnoreSet(void); +void setLpsdIgnoreState(int val); + +void cbuff_audio_flow_disable(void); + +void cbuff_audio_flow_enable(void); +void send_data_callback(int16_t *blockPtr, int block_size); +int32_t hif_tx_buffer_addSamples(int16_t *p_buff, int32_t n_samples); +void hif_tx_buffer_sendSamples(int32_t n_samples); +void hif_tx_buffer_sendSamples_opus(int32_t n_samples); + +/* internal APIs for taking clock QoS*/ +/*! +* \fn void set_spi_session_qos(uint8_t status) +* \brief Function to set C01 clock to min value for spi read from host to succeed +* \param status -- 1 : set qos. 0- release QoS +* \returns - +*/ +void set_spi_session_qos(uint8_t status); + +/*! +* \fn void set_audio_clock_qos(uint8_t status) +* \brief Function to set Hsosc and C10 clocks to min value for audio pipeline to work +* \param status -- 1 : set qos. 0- release QoS +* \returns - +*/ +void set_audio_clock_qos(uint8_t status); +/*! +* \fn void hif_register_qos(void) +* \brief Function toregister QoS node for C01 and C30 +* \param - +* \returns - +*/ +void hif_register_qos(void); +void hif_msg_sendOpusBlockReady(QAI_DataBlock_t *pdata_block); +void hif_msg_sendRawBlockReady(QAI_DataBlock_t *pdata_block); +#endif /* HOST_INTERFACE_H */ diff --git a/qf_vr_apps/qf_vr_aec_app/inc/pincfg_table.h b/qf_vr_apps/qf_vr_aec_app/inc/pincfg_table.h new file mode 100644 index 00000000..529c494b --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/pincfg_table.h @@ -0,0 +1,29 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +#ifndef PINCFG_TABLE_H +#define PINCFG_TABLE_H + +#include "Fw_global_config.h" +#include "eoss3_hal_gpio.h" +#include "eoss3_hal_pad_config.h" + +extern PadConfig pincfg_table[] ; +extern GPIOCfgTypeDef gpiocfg_table[] ; +extern int sizeof_pincfg_table ; +extern int sizeof_gpiocfg_table; + +#endif /* PINCFG_TABLE_H */ diff --git a/qf_vr_apps/qf_vr_aec_app/inc/ql_aecTask.h b/qf_vr_apps/qf_vr_aec_app/inc/ql_aecTask.h new file mode 100644 index 00000000..2d0bed60 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/ql_aecTask.h @@ -0,0 +1,107 @@ +/*========================================================== + * Copyright 2021 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : ql_aecTask.h + * Purpose: + * + *=========================================================*/ + +#ifndef _S3_QL_AECTASK_H_ +#define _S3_QL_AECTASK_H_ + +#include "Fw_global_config.h" + +#define SDMA_FRAME_SIZE_MS (15) + +#define SDMA_SINGLE_BUFFER_SIZE (240) +#define SDMA_NUMBER_OF_BUFFERS (30) +#define SDMA_BYTES_TO_READ (SDMA_SINGLE_BUFFER_SIZE*2) +#define SDMA_WORDS_TO_READ (SDMA_SINGLE_BUFFER_SIZE/2) + + +#define AEC_QUEUE_LENGTH (10) +#define PRIORITY_TASK_AEC (PRIORITY_HIGH + 2) //(PRIORITY_HIGH)//(18) //(4) +#define STACK_SIZE_TASK_AEC (256) + +//======================== +enum AUDIO_AEC +{ + eCMD_AUDIO_DATA_READY_AEC = 1, + eCMD_AUDIO_DATA_READY_I2S, + eCMD_AUDIO_I2S_DATA_START, + eCMD_AUDIO_I2S_DATA_STOP, + eCMD_AUDIO_AEC_PROCESS, + eCMD_AUDIO_CLK_SYNC_INVOKE +}; +void cb_notify_i2sRx_intr_from_FPGA(void); +//======================== + + +#if (AEC_ENABLED == 1) + +#include "common.h" +#include "FreeRTOS.h" +#include "task.h" +#include "queue.h" +#include "eoss3_hal_fpga_i2s_slave.h" +#if 0 + +// Sampling Frequency +// AEC 2.0, FIR decimation is part fabric, Fabric I2S Slave Rx output is at 16KHz +#define SDMA_FS (16000) + +// Base Frame Size gives number of samples in 1 msec +#define SDMA_BASE_FRAME_SIZE ((SDMA_FS)/1000) // 48 samples in 1ms + +#define SDMA_BYTES_TO_READ (SDMA_SINGLE_BUFFER_SIZE*2) +#define SDMA_WORDS_TO_READ (SDMA_SINGLE_BUFFER_SIZE/2) + +//#define SDMA_NUMBER_OF_BUFFERS_LEFT_CH 200 +#define SDMA_NUMBER_OF_BUFFERS_LEFT_CH 10 + +// Sampling Frequency +#define SDMA_16KFS (16000) + +// Frame Size gives number of samples in 1 msec +#define I2S_DECIMATE_FRAME_SIZE ((SDMA_16KFS)/1000) // 16 samples in 1ms + +#define DECIMATE_LEFT_CH (I2S_DECIMATE_FRAME_SIZE*SDMA_FRAME_SIZE_MS) + +typedef struct sdma_buffer_s_left_ch { + int16_t mem[SDMA_NUMBER_OF_BUFFERS_LEFT_CH][DECIMATE_LEFT_CH]; + uint16_t count; + +} sdma_buffer_t_left_ch; + + + +/* Change the time according to the processing time taken by consilient library */ +#define PTIME_AEC 10 +/* to be aligned with DMA_SINGLE_BUFFER_SIZE in dma_buffer.h */ +#define SAMPLE_15MS (DECIMATE_LEFT_CH) +#define SAMPLE_30MS (2*SAMPLE_15MS) + +#endif + +int FB_I2S_Slave_Rx_Enable(void); +int FB_I2S_Slave_Rx_Disable(void); + +void cb_notify_i2sRx_intr_from_FPGA(void); +#endif //AEC_ENABLED + +#endif /* _S3_QL_AECTASK_H_ */ \ No newline at end of file diff --git a/qf_vr_apps/qf_vr_aec_app/inc/s3x_pwrcfg.h b/qf_vr_apps/qf_vr_aec_app/inc/s3x_pwrcfg.h new file mode 100644 index 00000000..af61b285 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/s3x_pwrcfg.h @@ -0,0 +1,107 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : s3x_pwrcfg.h + * Purpose: + * + *=========================================================*/ + +#ifndef __S3X_PWRCFG_H +#define __S3X_PWRCFG_H + +#include "Fw_global_config.h" + +#define OSC_MINIMUM_FREQ (HSOSC_2MHZ) +#define OSC_MAXIMMUM_FREQ (HSOSC_1MHZ * 80) + +#define HSOSC_DEF_RATE HSOSC_72MHZ +#define HSOSC_QOS_VAL HSOSC_12MHZ //HSOSC_36MHZ + +#define FFE_MHZ (HSOSC_256KHZ) + +//#define C01_N0_CLK HSOSC_256KHZ //HSOSC_512KHZ +//#define C09_N0_CLK HSOSC_256KHZ //HSOSC_512KHZ +//#define C10_N0_CLK HSOSC_512KHZ //HSOSC_512KHZ +//#define C8X4_N0_CLK FFE_MHZ + +#define C01_N0_CLK HSOSC_3MHZ //HSOSC_512KHZ +#define C09_N0_CLK HSOSC_3MHZ //HSOSC_512KHZ +#define C10_N0_CLK HSOSC_3MHZ //HSOSC_512KHZ +#define C8X4_N0_CLK FFE_MHZ + +#define C01_N1_CLK HSOSC_3MHZ //HSOSC_3MHZ +#define C09_N1_CLK HSOSC_3MHZ //HSOSC_3MHZ +#define C10_N1_CLK HSOSC_3MHZ //HSOSC_18MHZ +#define C8X4_N1_CLK FFE_MHZ +#define STEP_1 200 //250 + +#define C01_N2_CLK HSOSC_3MHZ //HSOSC_3MHZ +#define C09_N2_CLK HSOSC_3MHZ //HSOSC_3MHZ +#define C10_N2_CLK HSOSC_24MHZ //HSOSC_36MHZ +#define C8X4_N2_CLK FFE_MHZ +#define CPU_DOWN2 10 +#define STEP_2 200 //250 + +#define C01_N3_CLK HSOSC_6MHZ //HSOSC_6MHZ +#define C09_N3_CLK HSOSC_3MHZ //HSOSC_6MHZ +#define C10_N3_CLK HSOSC_36MHZ //HSOSC_48MHZ +#define C8X4_N3_CLK FFE_MHZ +#define CPU_DOWN3 60 +#define STEP_3 600 //250 + +#define C01_N4_CLK HSOSC_6MHZ //HSOSC_9MHZ +#define C09_N4_CLK HSOSC_3MHZ //HSOSC_9MHZ +#define C10_N4_CLK HSOSC_48MHZ //HSOSC_72MHZ +#define C8X4_N4_CLK FFE_MHZ +#define CPU_DOWN4 60 + + +#define HSOSC_STEP_WIDTH C10_N1_CLK + +#define C01_IDX 0 +#define C09_IDX 1 +#define C10_IDX 2 +#define C8X4_IDX 3 + +#define INIT_GATE_ON 1 +#define INIT_GATE_OFF 0 + +#define CRU_CTRL(d, m, en, so, go, gm, sds) { .div_off = d,\ + .div_max = m, .div_en_shift = en, .src_sel_off = so,\ + .gate_off = go, .gate_mask = gm, .src_div_shift = sds,} + + +#define INIT_STATE(ir, im, men) { .irate = ir, .imask = im, .en = men } + +#define SYNC_CLKD(c,id0, id1) { .sd_clk.cnt = c,\ + .sd_clk.sd_id[0] = id0, .sd_clk.sd_id[1] = id1, } + +#define SRC_DOMAIN(c) { .sclk.src_domain = c, .sclk.src_rate = 0,} + +#define PI_CTRL(so, co, to, wo, pm, tm, wm) { .st_off = so, .cfg_off = co,\ + .trig_off = to, .swu_off = wo, .pmask = pm, .trig_mask = tm,\ + .swu_mask = wm, } + +#define PI_GINFO(c, i0, i1, i2, i3, i4) { .gcnt = c, .gid[0] = i0,\ + .gid[1] = i1, .gid[2] = i2, .gid[3] = i3, .gid[4] = i4, } + + +void set_sram_lpm_blocks(int state); + + +#endif /* __S3X_PWRCFG_H */ \ No newline at end of file diff --git a/qf_vr_apps/qf_vr_aec_app/inc/sec_debug.h b/qf_vr_apps/qf_vr_aec_app/inc/sec_debug.h new file mode 100644 index 00000000..067c76d0 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/sec_debug.h @@ -0,0 +1,50 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : sec_debug.h + * Purpose: + * + *=========================================================*/ + +#ifndef _SEC_DEBUG_H_ +#define _SEC_DEBUG_H_ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + + +// variables +extern unsigned int fault_depth; + + + +// functions +void save_assert_info(char* file, int line); +void invoke_soft_fault(); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + +#endif /* _SEC_DEBUG_H_ */ + + + diff --git a/qf_vr_apps/qf_vr_aec_app/inc/top_bit_05_24_2021.h b/qf_vr_apps/qf_vr_aec_app/inc/top_bit_05_24_2021.h new file mode 100644 index 00000000..fcea5967 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/top_bit_05_24_2021.h @@ -0,0 +1,1904 @@ +const uint32_t axFPGABitStream[] = { + 0x00000000, 0x00002000, 0x00000000, 0x00000040, 0x00004060, 0x00000004, 0x00000280, 0x00001002, 0x00000091, 0x00000008, + 0x00000000, 0x00000020, 0x00000040, 0x00000000, 0x00001000, 0x00000800, 0x00000800, 0x00000002, 0x00002040, 0x00000000, + 0x00000000, 0x00006020, 0x00000800, 0x00004000, 0x00008000, 0x00002020, 0x00000081, 0x00000010, 0x0000a000, 0x000000c0, + 0x00000004, 0x00000008, 0x00000000, 0x00001008, 0x00000400, 0x00002000, 0x00001010, 0x00000000, 0x00002000, 0x00000000, + 0x00000000, 0x00000280, 0x00000040, 0x00002400, 0x00000000, 0x00004000, 0x000000b0, 0x00000004, 0x00008810, 0x00000000, + 0x00000002, 0x00000820, 0x00000000, 0x00008900, 0x00000404, 0x00000100, 0x00008000, 0x0000040a, 0x00000544, 0x00000010, + 0x00000020, 0x20040200, 0x00000200, 0x00000010, 0x000000a0, 0x00000002, 0x00000000, 0x00000009, 0x00000010, 0x00000040, + 0x00000080, 0x00000104, 0x0000c002, 0x00001028, 0x00000806, 0x00000603, 0x00003120, 0x00000030, 0x00006004, 0x00080001, + 0x00000220, 0x00002002, 0x00040280, 0x000000d8, 0x00001400, 0x00000062, 0x00000008, 0x00000000, 0x00000080, 0x00004000, + 0x80000008, 0x0000004c, 0x00001500, 0x00000000, 0x00000080, 0x00002000, 0x00002000, 0x00000420, 0x0000400c, 0x00004200, + 0x00202280, 0x00000002, 0x00000800, 0x00100008, 0x00000101, 0x00004001, 0x00008000, 0x000050e8, 0x00000400, 0x0000c801, + 0x00020211, 0x00000000, 0x00008400, 0x00801400, 0x00000802, 0x00004040, 0x00000c28, 0x00400200, 0x00000000, 0x00000010, + 0x00000800, 0x08004081, 0x00008000, 0x00008400, 0x00000040, 0x00004104, 0x00080801, 0x20008404, 0x00000802, 0x00008000, + 0x00009b11, 0x00000001, 0x00004020, 0x00008008, 0x00011450, 0x00000000, 0x00009000, 0x00000000, 0x02000000, 0x00408614, + 0x00000200, 0x00000002, 0x08202000, 0x00000480, 0x00000000, 0x00101834, 0x10000020, 0x00000002, 0x00001240, 0x20001180, + 0x00080000, 0x00002404, 0x00000008, 0x00000000, 0x40042060, 0x80001000, 0x00000000, 0x00004080, 0x00008008, 0x02000000, + 0x00c00000, 0x00000000, 0x00006002, 0x00000080, 0x00000200, 0x00000000, 0x00108000, 0x00000820, 0x00000000, 0x00100400, + 0x00001010, 0x00000000, 0x00000040, 0x40002000, 0x00000000, 0x00044000, 0x80004008, 0x80000804, 0x00000001, 0x00008000, + 0x00000000, 0x00801400, 0x00000000, 0x40002012, 0x04004640, 0x00800280, 0x00020008, 0x80401030, 0x00400100, 0x0000400c, + 0x0000a000, 0x08004000, 0x00000440, 0x10080200, 0x00008812, 0x00000020, 0x40004400, 0x00080040, 0x00000100, 0x001002a0, + 0x40044010, 0x20003000, 0x00000440, 0x80000002, 0x00000004, 0x04000020, 0x00020010, 0x00008000, 0x00202000, 0x004004c0, + 0x00004004, 0x10002208, 0x00008002, 0x00000804, 0x00005200, 0x00000000, 0x000000a2, 0x0000d440, 0x00000008, 0x00100080, + 0x00020000, 0x40040000, 0x00000400, 0x000800d1, 0x00020002, 0x0000d000, 0x80200000, 0x80028a02, 0x00000000, 0x00040000, + 0x00844000, 0x00000080, 0x00000008, 0x00000000, 0x00008240, 0x00200000, 0x00200830, 0x00004200, 0x20002104, 0x00000000, + 0x10000000, 0x040000c2, 0x00000204, 0x00100400, 0x00000000, 0x00002004, 0x00000018, 0x0080c280, 0x00008001, 0x00000808, + 0x040c0002, 0x00000680, 0x80000400, 0x04045004, 0x00800448, 0x00000000, 0x00210000, 0x00408000, 0x00000020, 0x0008001a, + 0x00200000, 0x00002000, 0x00000088, 0x20000000, 0x00001810, 0xc0124400, 0x00080004, 0x00000008, 0x00000000, 0x00044002, + 0x00000010, 0x00200800, 0x81940008, 0x00004800, 0x400010a0, 0x00002000, 0x00001400, 0x00020016, 0x00000800, 0x08002e02, + 0x00024088, 0x00004200, 0x00100084, 0x10001008, 0x00000002, 0x20200010, 0x0400a000, 0x40000280, 0x00041828, 0x40004404, + 0x00020400, 0x00002000, 0x00080054, 0x00000020, 0x50000802, 0x00001080, 0x80010000, 0x00008014, 0x00821068, 0x0000604a, + 0x00000c80, 0x88000010, 0x08400024, 0x10000200, 0x0010e000, 0x00100000, 0x00000400, 0x20008002, 0x00000200, 0x00000000, + 0x00000084, 0x00000440, 0x00008000, 0x00800804, 0x00000820, 0x00400440, 0x00085830, 0x10000800, 0x00002020, 0x02220008, + 0x10101000, 0x00000050, 0x0400c080, 0x2000200c, 0x80080000, 0x40040000, 0x40000800, 0x00000200, 0x004e4444, 0x80020040, + 0x00008002, 0x04a80410, 0x01000000, 0x02000280, 0x80000022, 0x00400000, 0x0000004c, 0x04042400, 0x00000800, 0x08800000, + 0x02006020, 0x10000000, 0x00001000, 0x2068001c, 0x00000000, 0x20000008, 0x4019b080, 0x40004000, 0x80000000, 0x00040804, + 0x80008000, 0x000a0002, 0x40100040, 0x02000080, 0x00842000, 0x00000200, 0x04000828, 0x00400400, 0x00010044, 0x00000000, + 0x00104448, 0x00000000, 0x000819b0, 0x00008002, 0x00802004, 0x00000018, 0x00000040, 0x41401000, 0x00000100, 0x0000400c, + 0x00422400, 0x00000004, 0x00004040, 0x00008002, 0x00008200, 0x00000002, 0x00000088, 0x00402c40, 0x00000090, 0x20001200, + 0x00000060, 0x00000004, 0x48004400, 0x00003800, 0x00000010, 0x00000020, 0x00001010, 0x00000000, 0x0080008a, 0x00000004, + 0x00002008, 0x0000d000, 0x00000000, 0x000040c6, 0x00000000, 0x00000e02, 0x00008000, 0x00400008, 0x00000000, 0x000000c0, + 0x00000228, 0x00200010, 0x00001000, 0x00000c40, 0x00100000, 0x00002004, 0x00008020, 0x00080200, 0x00800000, 0x00000008, + 0x00000000, 0x00000604, 0x21020100, 0x00000420, 0x00004080, 0x00020010, 0x00100020, 0x00008040, 0x00000000, 0x00000008, + 0x00000800, 0x00902200, 0x00000010, 0x00201040, 0x10400000, 0x00008822, 0x00000004, 0x00006000, 0x00002012, 0x00101000, + 0x00000200, 0x00008200, 0x80000400, 0x00084004, 0x80000000, 0x00000000, 0x00040002, 0x00000400, 0x00000000, 0x00000000, + 0x00010020, 0x00000800, 0x004002c0, 0x00002400, 0x00004800, 0x00000000, 0x00000000, 0x00000004, 0x00101089, 0x00000000, + 0x00000400, 0x02200832, 0x00000006, 0x40000080, 0x00101008, 0x00008000, 0x00000090, 0x00883000, 0x00002208, 0x00000820, + 0x90005002, 0x00400040, 0x00820020, 0x00007000, 0x01000012, 0x00000040, 0x0000c200, 0x00000000, 0x00000180, 0x00024e00, + 0x00002000, 0x10004000, 0x00108460, 0x000000a0, 0x00008002, 0x200014c0, 0x80042000, 0x00400000, 0x0000005c, 0x00002008, + 0x00010c00, 0x40108020, 0x80004050, 0x00101004, 0x00010238, 0x00000000, 0x00202000, 0x00108006, 0x00006000, 0x00040000, + 0x00480086, 0x20000000, 0x00008040, 0x00814c28, 0x00000004, 0x00400004, 0x00800400, 0x41000002, 0x00000000, 0x006c0048, + 0x80100090, 0x14001000, 0x00060200, 0x42200000, 0x20082400, 0x08004008, 0x00004000, 0x40040000, 0xb0000010, 0x008a0000, + 0x80009022, 0x60080010, 0x01040300, 0x02040808, 0x88200080, 0x00000004, 0x20400440, 0x04820000, 0x40000000, 0x0820c020, + 0x00d00000, 0x00000000, 0x94000212, 0x40000824, 0x20800400, 0x00082040, 0x0821000a, 0x00000800, 0x40040000, 0x90024004, + 0x00000002, 0x00029000, 0xa00c0480, 0x02000088, 0x00810000, 0x48008000, 0x00100044, 0x04426400, 0x00080000, 0x08008000, + 0x00004004, 0x00000c10, 0x00040000, 0x00009000, 0x00000840, 0x00006008, 0x00020294, 0x00501040, 0x02000008, 0x00008000, + 0x00202402, 0x00000004, 0x00400828, 0x00104298, 0x00000002, 0x00001050, 0x00020000, 0x00000000, 0x00100280, 0x40000004, + 0x20001000, 0x00004808, 0x0008a402, 0x00000820, 0x40000012, 0x00002008, 0x00000000, 0x00008294, 0x18201420, 0x00000000, + 0x02000400, 0x0000400a, 0x00008004, 0x00000820, 0x00085048, 0x80000000, 0x00001096, 0x00008400, 0x00000200, 0x00002002, + 0x00020820, 0x00000000, 0x00004488, 0x80008010, 0x00000000, 0x40400418, 0x00001080, 0x08000000, 0x00248802, 0x02402004, + 0x11100000, 0x82801280, 0x002a0010, 0x20000000, 0x04483400, 0x1000080a, 0x00004000, 0x0820800c, 0x40041000, 0x03000880, + 0x10126136, 0x81080000, 0x02800080, 0xa8004048, 0x80000600, 0x00402020, 0x40800500, 0x04080010, 0x08202201, 0x80000a22, + 0x00408084, 0x30001010, 0x02930000, 0x08000040, 0x00080000, 0x24401608, 0x00128004, 0x00040000, 0x08204864, 0x50000000, + 0x00120400, 0x9000c014, 0x0088704a, 0x02810004, 0x20080208, 0x00440000, 0x04400402, 0x40016000, 0x00200880, 0x08008000, + 0x40046200, 0x12828000, 0x00002800, 0x8000058a, 0x24080010, 0x01001014, 0x02000a00, 0x4040c000, 0x08002022, 0x04c01418, + 0x80040000, 0x00000000, 0x08206868, 0x22102004, 0x01000010, 0x10004404, 0x00400282, 0x00004a00, 0x08082002, 0x20000080, + 0x00028400, 0x40045284, 0x90220020, 0x00000100, 0x00028408, 0x00080830, 0x04004444, 0x06811a20, 0x80240012, 0x40008008, + 0x04401050, 0x08020030, 0x10004400, 0x08100208, 0x20010006, 0x0000a002, 0x10004004, 0x24c00020, 0x00000000, 0x2010b81a, + 0x80008604, 0x00001000, 0x400c0206, 0x82220400, 0x00802803, 0x04402400, 0x00000040, 0x00200822, 0x89020210, 0x608c0404, + 0x0014c088, 0x00000010, 0x54001000, 0x00000000, 0x20080208, 0x0800b012, 0x00020824, 0x4d044000, 0x020000c0, 0x80008402, + 0x00200000, 0x00420004, 0x01001240, 0x02180090, 0x48a00022, 0x00000004, 0x40440098, 0x34000cc0, 0x00000000, 0x08204800, + 0x02100028, 0x00101210, 0xb0012024, 0x00040800, 0x00000400, 0x40002898, 0x202a4002, 0x80001000, 0x48444004, 0x02800010, + 0x00000002, 0x00120880, 0x84418600, 0x00000200, 0x02818088, 0x08001820, 0x00000400, 0x04442080, 0x10300250, 0x00000000, + 0x00000050, 0x10000406, 0x00000800, 0x00003020, 0x2010c048, 0x00001010, 0x00004000, 0x80000424, 0x00800000, 0x00000c00, + 0x00002008, 0x80908042, 0x11002008, 0x02085004, 0x00001220, 0x0020c802, 0x14000088, 0x00000280, 0x00240428, 0x08008850, + 0x00001000, 0x000004c0, 0x10000004, 0x20000810, 0x00000020, 0x00000000, 0x00003000, 0x00400278, 0x40000400, 0x00024000, + 0x0000001c, 0x00042000, 0x00004082, 0x00800800, 0x82088204, 0x00008000, 0x00000006, 0x04040000, 0x00000400, 0x00000292, + 0x48480040, 0x0000002c, 0x00000c80, 0x100010d0, 0x00004000, 0x04000040, 0x00500400, 0x00001090, 0x08002180, 0x10288c20, + 0x00001000, 0x90000088, 0x00100012, 0x40040404, 0xa0004020, 0x00082008, 0x00040210, 0x00002040, 0x40804006, 0x08000048, + 0x80008092, 0x00220400, 0x010000a0, 0x82800000, 0x00002200, 0x00001058, 0x04888400, 0x00400000, 0x00008a03, 0x08200020, + 0x00800248, 0x00101000, 0x10000010, 0x00002800, 0x20082000, 0x00804604, 0x0002002a, 0x00004800, 0x40040000, 0x0000800c, + 0x80a09000, 0x00020002, 0x00002000, 0x000120c0, 0x02a04200, 0x00000000, 0x00000440, 0x04010010, 0x00401020, 0x00000001, + 0x00000008, 0x00a08640, 0x00384000, 0x00000820, 0x80022014, 0x00001000, 0x00108800, 0x00240212, 0x000a0008, 0x00802010, + 0x00000004, 0x00000000, 0x00400050, 0xa0004004, 0x0302a000, 0x00007806, 0x008044a0, 0x02000204, 0x0810c082, 0x00000018, + 0x000a0002, 0x00000442, 0x00804000, 0x000008a0, 0x00040000, 0x3c00041d, 0x10000010, 0x00021000, 0x00000000, 0x00010020, + 0x20203080, 0x80004008, 0x00011000, 0x00000004, 0x00006002, 0x00000002, 0x80000000, 0x40a48400, 0x00000000, 0x00000202, + 0x00400080, 0x0000c400, 0x0042004a, 0x00082000, 0x00000200, 0x00440440, 0x80000800, 0x0a000000, 0x00820002, 0x04204a20, + 0x10400000, 0x00501810, 0x00040000, 0x2000a000, 0x08201218, 0x90085400, 0x08144000, 0x40200844, 0x00120002, 0x000a0022, + 0xa0080200, 0x51008000, 0x02000090, 0x00c00002, 0xc0001200, 0x44400400, 0x00006004, 0x80040040, 0x08008010, 0x00080000, + 0x80200820, 0x50001000, 0x00000018, 0x00100000, 0xa0282000, 0x08000008, 0x00020890, 0x48040004, 0x10104400, 0x00080010, + 0x00039000, 0x00800000, 0x8000000a, 0x02202280, 0x40800000, 0x00010006, 0x04000040, 0x00084000, 0x80448400, 0x08810002, + 0x00080000, 0x00068080, 0x00000830, 0x00004100, 0x00022440, 0x00000210, 0x00000808, 0x00001000, 0x00004004, 0x00801012, + 0x00002018, 0x00000044, 0x00004008, 0x10009000, 0x00000000, 0x0000c004, 0x00004a82, 0x00000000, 0x00001612, 0x2000a8c2, + 0x00000060, 0x00000008, 0x00028410, 0x80000008, 0x40001822, 0x00400200, 0x00000000, 0x00020000, 0x00407050, 0x00000008, + 0x00011004, 0x0000a000, 0x00004000, 0x00000200, 0x0000048e, 0x00000000, 0x00008006, 0x00284000, 0x00000000, 0x000004d2, + 0x00040200, 0x00000800, 0x00000424, 0x000010d0, 0x00002820, 0x00000000, 0x10980004, 0x08002008, 0x00040800, 0x20600220, + 0x00101000, 0x10000010, 0x4000c222, 0x00000000, 0x00082088, 0x20100000, 0x40004004, 0x00040002, 0x800a2840, 0x8000820a, + 0x00000000, 0x01421010, 0x020002a0, 0x00000000, 0x00800004, 0x04000040, 0x00002400, 0x90c04000, 0x08200880, 0x00042008, + 0x04400020, 0x1010d000, 0x80000000, 0x00000a92, 0x60002000, 0x00000808, 0x10180400, 0x40000082, 0x00000004, 0xa20c5040, + 0x80008002, 0x00020000, 0x64041010, 0x029102c0, 0x00000004, 0x00000002, 0x04402408, 0x00000000, 0x80800242, 0x08200829, + 0x00001008, 0x80140010, 0x00000022, 0x00020800, 0x0220a000, 0x04001000, 0x00000010, 0x00100208, 0x020000c0, 0x00286000, + 0x0000182c, 0x10000e00, 0x00020094, 0x20004022, 0x10008002, 0x80000400, 0x20020000, 0x41101080, 0x42800010, 0x20004200, + 0x8400100c, 0x00020410, 0x00082b60, 0x00004921, 0x08000080, 0xa000000a, 0x00000040, 0x10019010, 0x00604020, 0x00000200, + 0x0000a08a, 0xa0200044, 0x00005400, 0x00100000, 0x00000014, 0x82008800, 0x00080402, 0x00000220, 0x00013280, 0x40800800, + 0x00128010, 0x00040400, 0x00401000, 0x08000048, 0x0221c822, 0x00220840, 0x50107404, 0x08000000, 0x01208030, 0x20040880, + 0x10022012, 0x01101408, 0x82000280, 0x2020200c, 0x00004040, 0x84080402, 0x40000000, 0x01c44000, 0x1a0008a4, 0x80000010, + 0x00020202, 0x11309008, 0x02440400, 0x00000280, 0x28a02820, 0x04480400, 0x00140040, 0x50000018, 0x08200004, 0x00001020, + 0x800ac800, 0x10000010, 0x0000000a, 0x02915680, 0x20080008, 0x00040004, 0x04402422, 0x00000004, 0x0020c000, 0x4a860820, + 0x00020000, 0x80018208, 0x14402012, 0x02802400, 0x00010000, 0x280c4a80, 0x04000008, 0x00020040, 0x50408400, 0x08200004, + 0x00080000, 0x0000544e, 0x00040440, 0x80000010, 0x40220820, 0x00102820, 0x01400018, 0x0280d286, 0x000c1018, 0x00400000, + 0x04002000, 0x00042008, 0x00000006, 0x080042b0, 0x0002c006, 0x00200000, 0x90001810, 0x00808402, 0x03080080, 0x00000320, + 0x24000280, 0x00000800, 0x00005452, 0x80000c40, 0x08020000, 0x40000026, 0x00000828, 0x00000010, 0x1200d000, 0x40001010, + 0x20000004, 0x0481228a, 0x4000200c, 0x0000c000, 0x08600c40, 0x0000c004, 0x00000202, 0x90001000, 0x00008682, 0x00880000, + 0x20012800, 0x004006c0, 0x00000000, 0x40001000, 0x00200440, 0x00400800, 0x44000000, 0x08020400, 0x00001200, 0x00200020, + 0x10100c00, 0x01000000, 0x42840400, 0x20002110, 0x00000000, 0x040a0008, 0x88200030, 0x01000000, 0x40840202, 0x00080180, + 0x00020880, 0x95000000, 0x0200c802, 0x00000010, 0x28a00014, 0x44040a00, 0x00400000, 0x00000101, 0x00000484, 0x00000100, + 0x08204004, 0x10000408, 0x0000a000, 0x42910010, 0x20000040, 0x0008c010, 0x04400000, 0x88060420, 0x0000c0c0, 0x42a10000, + 0x00000005, 0x00000601, 0x90120004, 0x02080000, 0x00815000, 0x28200100, 0x04404000, 0x00000802, 0x40101000, 0x00020004, + 0x40002084, 0x10100090, 0x00008000, 0x00000000, 0x20002840, 0x0000c0a0, 0x00000008, 0x00004000, 0x000002c2, 0x00008d00, + 0x00000020, 0x00006002, 0x00000048, 0x20001001, 0x0000604a, 0x00000010, 0x40040004, 0x10000100, 0x00006008, 0x200082a8, + 0x00003100, 0x00000004, 0x00001000, 0x00004042, 0x00008080, 0x00000030, 0x00000101, 0x00000a40, 0x00001026, 0x00001108, + 0x00002084, 0x00008b30, 0x00003002, 0x00000004, 0x20000360, 0x00004108, 0x00001000, 0x0004a480, 0x00000008, 0x00000402, + 0x00000850, 0x00000080, 0x00420010, 0x00000020, 0x00000401, 0x20084000, 0x00029208, 0x84802042, 0x10840114, 0x01000180, + 0x00840007, 0x80621000, 0x08a00860, 0x01101004, 0x00000004, 0x126a0200, 0x88100080, 0x00080400, 0x00008500, 0x02100020, + 0x002c8204, 0x00202020, 0x00001400, 0x00000400, 0x01000043, 0x80804080, 0x00200800, 0x60008058, 0x02002020, 0x02000800, + 0x44000201, 0x02080080, 0x80000002, 0x00320408, 0x0c400000, 0x40000000, 0x00900001, 0x10400808, 0x04100002, 0x00481010, + 0x10308800, 0x20000000, 0x00600800, 0x80082060, 0x50100000, 0x00240221, 0x00023008, 0x28000200, 0x8600a0c0, 0x14090000, + 0x00004020, 0xa8402000, 0x004a0008, 0x00001000, 0x02580000, 0x0000c000, 0x20000020, 0x84005810, 0x70060020, 0x00000040, + 0x0884010c, 0x40002000, 0x01040000, 0x00900410, 0x04400000, 0x00001200, 0x20400000, 0x84121000, 0x00088001, 0x00460004, + 0x40201080, 0x00080841, 0x88820000, 0x00040008, 0x14220200, 0x08d03400, 0x28050080, 0x00220040, 0x04000004, 0x401c5c00, + 0x12010000, 0x080c080a, 0x80214000, 0x00000020, 0x90048000, 0x02000a11, 0x00040120, 0x80010800, 0x04028008, 0x00404001, + 0x10111000, 0x080d0000, 0x402008c0, 0x20800000, 0x00420014, 0x40002000, 0x00000010, 0x00000200, 0x00020010, 0x00200024, + 0x20000400, 0x00000f02, 0x40008204, 0x00400080, 0x00004000, 0x00000000, 0x00001031, 0x00000148, 0x00000004, 0x0a100250, + 0x00000400, 0x08000000, 0x20100004, 0x80002512, 0x00800180, 0x10800002, 0x6000640c, 0x20000080, 0x00008001, 0x80524052, + 0x00200840, 0x02080124, 0x0000b010, 0x00100020, 0x08100000, 0x00404090, 0x00000100, 0x00000200, 0x00006400, 0x00000094, + 0x02000408, 0x00001082, 0x80080000, 0x00000030, 0x00000000, 0x00000820, 0x00008104, 0x40006028, 0x00000000, 0x00000000, + 0x20000800, 0x100800c0, 0xc0009440, 0x00004006, 0x000409c0, 0xc0000008, 0x02802088, 0x05120040, 0x00000002, 0x00000c00, + 0x000000a2, 0x00100800, 0x00048200, 0x00001008, 0x00404107, 0x20000001, 0x000080ea, 0x04000808, 0x000c0040, 0x0000ca10, + 0x00000020, 0x04008000, 0x00003000, 0x00000410, 0x00000004, 0x00004000, 0x04030800, 0x8020000a, 0x20008001, 0x42000042, + 0x40210005, 0x00800090, 0x00000008, 0x00000042, 0x00400040, 0x00080004, 0x08010001, 0x2a02c400, 0x20001006, 0x00040000, + 0x50100000, 0x80080213, 0x00808000, 0x00403488, 0x00000041, 0x00000000, 0x22808020, 0x00000000, 0x00000002, 0x00400200, + 0x04088201, 0x00400100, 0x08200000, 0x00000400, 0x41000000, 0x00800100, 0x88220a20, 0x00020000, 0x30000000, 0x04201010, + 0x10000080, 0x80202000, 0x00040000, 0x00400040, 0xc0000000, 0x00000000, 0x00000000, 0x00880000, 0x10008002, 0x40040004, + 0x00002000, 0x00040281, 0x00400000, 0x00200000, 0x00000440, 0x00000000, 0x00110000, 0x90080820, 0x80100000, 0x24000080, + 0x00941010, 0x00000000, 0x40002048, 0x043a0408, 0x10002000, 0x00000000, 0x20261000, 0x00004004, 0x00a80002, 0x10128002, + 0x00002000, 0x80008800, 0x0004a012, 0x40001900, 0x80020028, 0x02000084, 0x00081010, 0x00004000, 0x84000208, 0x00000000, + 0x00008000, 0x08200020, 0x00004200, 0x00080c82, 0x10101042, 0x00000000, 0x04000000, 0x20000000, 0x00000300, 0x0002c088, + 0x40206400, 0x00000000, 0x000000f0, 0x00041800, 0x00100002, 0x20408040, 0x00810000, 0x80000008, 0x40004201, 0x0400004c, + 0x00000082, 0x0000a000, 0x08000005, 0x00010800, 0x00200010, 0x100002a0, 0x00008002, 0x00040440, 0x00080000, 0x20000210, + 0x000098a8, 0x40002014, 0x00000000, 0x00010442, 0x00088002, 0x00100800, 0x10040200, 0x80228020, 0x01000000, 0x02085c00, + 0x20000012, 0x02000200, 0x00100480, 0x00044040, 0x04000000, 0x40180000, 0x00240c00, 0x80000002, 0x02002020, 0x00100000, + 0x08020302, 0x84000000, 0x08006018, 0x00000004, 0x40000200, 0x00040004, 0x20200800, 0x14000000, 0x8000c109, 0x08000002, + 0x20320000, 0x00010480, 0x00000000, 0x40100000, 0x00000000, 0x00000a05, 0x28060020, 0x00210420, 0x08048040, 0x40000202, + 0x10900008, 0x000010c0, 0x04400004, 0x20000000, 0x00084008, 0x48010014, 0x00040000, 0x0000a000, 0xc0320004, 0x80204088, + 0x00100440, 0x800008a0, 0x00024828, 0x00800004, 0x00000090, 0x00001040, 0x80100010, 0x00040022, 0x02000002, 0x08080840, + 0x0420620c, 0x80020000, 0x00045084, 0x00000010, 0x00020000, 0x2800a000, 0x00080202, 0x00000081, 0x00000a00, 0x00041402, + 0x20022000, 0x00208408, 0x00100040, 0x00000020, 0x00040808, 0x84001010, 0x40800004, 0x00000000, 0x00409880, 0x04400020, + 0x0004a008, 0x00000000, 0x00044010, 0x00001004, 0x00110002, 0x00000010, 0x00208002, 0x20187000, 0x20000001, 0x00000080, + 0x80200600, 0x00020442, 0x000c2000, 0x00800808, 0xc0030000, 0x14000008, 0x00406c50, 0x00280000, 0x88000820, 0x00120200, + 0x00002000, 0x5044004a, 0x00105210, 0x200a0008, 0x80002000, 0x00000400, 0x00004000, 0x10000000, 0x401c00cc, 0x80028000, + 0x00000022, 0x02000040, 0x02041000, 0x00100000, 0x04000a80, 0x00000400, 0x04100040, 0x08240024, 0x00000800, 0x02000020, + 0x18200008, 0x00000000, 0x10149000, 0x24800400, 0x0000200c, 0x20200000, 0x40008440, 0x00000025, 0x50800000, 0x20044000, + 0x80028082, 0x04400000, 0x40050040, 0x00802080, 0x00000201, 0x00011000, 0x00300000, 0x00000408, 0x18000060, 0x00002000, + 0x20480028, 0x04000440, 0x08101010, 0xc0220000, 0x10002862, 0x30000010, 0x00101000, 0x00004048, 0x00002004, 0x20000208, + 0x040808e0, 0x00040006, 0x40000000, 0x0800c800, 0x04000282, 0x00020000, 0xd0008041, 0x00200200, 0x28000000, 0x02000084, + 0x10100c60, 0x00008008, 0x04005000, 0x08000800, 0x40200004, 0x00008020, 0x00002008, 0x00001004, 0x10100012, 0x0000a000, + 0x00014080, 0xa0020008, 0x00000000, 0x00040203, 0x48016004, 0x00800000, 0x80220400, 0x1040c082, 0x08000240, 0x00911014, + 0x00000081, 0x00000800, 0x00000000, 0x00002460, 0x00001000, 0x00000002, 0x04105000, 0x08000114, 0xa0000000, 0x00200200, + 0x0018008c, 0x00000002, 0x1000e400, 0x40000200, 0x00080000, 0xa0040002, 0x40008800, 0x00040220, 0x00020088, 0x00001000, + 0x80220400, 0x02000048, 0x00004000, 0x00100008, 0x06000020, 0x00202800, 0x00000000, 0x0c000000, 0x08104082, 0x00240004, + 0x10009408, 0x20102000, 0x80000080, 0x10000240, 0x60004000, 0x00020040, 0x00040004, 0x00008692, 0x80040000, 0x40a00000, + 0x00011000, 0x80000c00, 0x40020040, 0x00010000, 0x00004000, 0x00800000, 0x1004200c, 0x00200000, 0x0c401800, 0x20304000, + 0x50000004, 0x008488a0, 0x82020000, 0x00000820, 0x00180090, 0x02008402, 0x00000080, 0x60005030, 0x00200208, 0x00000000, + 0x00040042, 0x00100410, 0x00000000, 0x80025080, 0x02103010, 0x00000002, 0x50200200, 0x0000000c, 0x60044181, 0x00000600, + 0x40008046, 0x00000400, 0x00212800, 0x10008001, 0x00000802, 0x00900098, 0x00810000, 0x00400000, 0x20000424, 0x00000e00, + 0x00022008, 0x40200000, 0x00000840, 0x00001010, 0x8001800e, 0x00100002, 0x00208008, 0x00800201, 0x00000008, 0x00040200, + 0x002204c0, 0x00080400, 0x4004a004, 0x00014840, 0x00108000, 0x80004000, 0x08402800, 0x00200030, 0x80001002, 0x00d80800, + 0x00001010, 0x00008000, 0x24100000, 0x02084402, 0x0c000008, 0x00020080, 0x08204240, 0x10000000, 0x001c0000, 0x00000000, + 0x10000000, 0xa20e3002, 0x00000180, 0x00000200, 0x84102000, 0x20020400, 0x04000044, 0x48000002, 0x00000000, 0x08000000, + 0x14700802, 0x00000000, 0x00910000, 0x28008001, 0x20002400, 0x00000000, 0x4000088a, 0x50000004, 0x18000000, 0x00148000, + 0x00000020, 0x00000000, 0x00c99206, 0x20000080, 0x50010008, 0x04008210, 0x00000000, 0x00020440, 0x08800084, 0x00040000, + 0x004c0004, 0x000006b0, 0x00005000, 0x00288100, 0x00000820, 0x02042000, 0x0012020b, 0x00404034, 0x00008000, 0x00080458, + 0x042208a2, 0x00000000, 0x00040828, 0x0020400c, 0x10000200, 0x80121016, 0x00000004, 0x00000441, 0x08002082, 0x00000226, + 0x24000000, 0x4000420c, 0x00801c82, 0x08000800, 0x00202002, 0x00000000, 0x00060000, 0x00010281, 0x00b01038, 0x0440000c, + 0x20000400, 0x00000012, 0x08200004, 0x00048a28, 0x40000001, 0x10008000, 0x00001014, 0x00100482, 0x00000000, 0x0008000a, + 0x80010800, 0x00000000, 0x00006224, 0x80009481, 0x00080000, 0x58400e00, 0x041e4000, 0x00000000, 0x88200826, 0x20000000, + 0x10080118, 0x02008c21, 0x40340000, 0x00000002, 0x04080000, 0x00200008, 0x40044000, 0x082a1524, 0x80000811, 0x00000080, + 0x94125204, 0x00000002, 0x00000a80, 0x20022040, 0x42200410, 0x00000000, 0x40040608, 0x04028000, 0x00100001, 0x9002c88c, + 0x2a200043, 0x40002000, 0x00901651, 0x10650000, 0x00000000, 0x04000088, 0xa0200800, 0x00000000, 0x2824a408, 0x40c30804, + 0x00000200, 0x10149022, 0x00000400, 0x00804000, 0x20286042, 0x0003000c, 0x04400000, 0x48800414, 0x00100002, 0x00000000, + 0x440cc208, 0x00100002, 0x00000820, 0x82c28402, 0x08200410, 0x02500044, 0x100848b0, 0x00000048, 0x04000008, 0x00020050, + 0x800c0000, 0x08000004, 0x50284208, 0x000c0003, 0x90000802, 0x20185434, 0x00020080, 0x44004000, 0x82020a0b, 0x20204080, + 0x00002400, 0x0c105294, 0x80000000, 0x00010308, 0xc8248600, 0x00c00c00, 0x00101010, 0x10850804, 0x20000200, 0x04008082, + 0x20001450, 0x00400008, 0x18140000, 0x4021082c, 0x00102000, 0x00000002, 0x00101404, 0x10088008, 0x20000804, 0x0089a00a, + 0x00200002, 0x00001410, 0x44400000, 0x02124200, 0x00200800, 0x02900000, 0x58601000, 0x09200020, 0x04400400, 0x00040800, + 0x44001080, 0x0a362004, 0x90480210, 0x08080800, 0x14102000, 0x00000018, 0x00000802, 0x000c0404, 0xc202c001, 0x00020000, + 0x5004c002, 0x84102000, 0x02200208, 0xa0020402, 0x080000a0, 0x04028400, 0x42000280, 0x10001054, 0x2aa08800, 0x04020020, + 0x00112002, 0x10000010, 0x88a11800, 0x00100800, 0x60002008, 0x14501213, 0x00044020, 0x40810040, 0x28005400, 0x000c020c, + 0x10000000, 0x60542006, 0x04248000, 0x00010281, 0x60088400, 0x08808040, 0x00000400, 0x808502c0, 0x04600800, 0x08000820, + 0x00a40c00, 0x00900026, 0x88200820, 0x00400600, 0x00001008, 0x10080210, 0x00301000, 0x40042000, 0x0000600c, 0x00180430, + 0xa0020002, 0x4010c014, 0x000c0808, 0x00000000, 0xa2008000, 0x00025016, 0x08040688, 0x021002c0, 0x00000003, 0x00000800, + 0x04042004, 0x000006a8, 0x00100040, 0x08201090, 0x00000000, 0x0000282a, 0x30801000, 0x00320810, 0x08044000, 0x04410000, + 0x60103614, 0x00000808, 0x4000c206, 0x20041008, 0x00820080, 0x84018002, 0x40060010, 0x40000001, 0x20800640, 0x00008002, + 0x000100a1, 0x84000800, 0x00210600, 0x50c90040, 0x88208028, 0x00400c00, 0xc4000260, 0x100008a2, 0x08600010, 0x00181048, + 0x00020410, 0x20200080, 0x10103400, 0x00000c28, 0x40084810, 0x2402a000, 0x80044004, 0x40000002, 0x08000000, 0x00009810, + 0x80020002, 0x22104004, 0x000402c0, 0x06004000, 0x00000808, 0x08200040, 0x00020400, 0x24148020, 0x10000002, 0x20001000, + 0x0c200e20, 0x00001008, 0x00208010, 0x5c142004, 0x00000400, 0x20512021, 0x0400c008, 0x00044800, 0x60000200, 0x00020046, + 0x0080b002, 0x44240004, 0x80434411, 0x40080000, 0x10810200, 0x80200081, 0x08402804, 0x04020600, 0xa0100060, 0x10070003, + 0x00420000, 0x04300040, 0x00004100, 0x0aa00820, 0x14480004, 0x02000200, 0x40000820, 0x38109098, 0x24000000, 0x00180008, + 0x00126004, 0x48040004, 0x80000010, 0x00004002, 0x9000a008, 0x00026002, 0x00000080, 0x20000200, 0x02000080, 0x04000001, + 0x40208400, 0x00040000, 0x0c110268, 0x00000120, 0x00800840, 0x08201080, 0x00408000, 0x20000000, 0x10161000, 0x20200020, + 0x40002008, 0x9000c040, 0x08045014, 0x40002000, 0x00820008, 0x10008002, 0x00010008, 0x80022014, 0x00000208, 0x40110000, + 0x00a24085, 0x00448440, 0x14000003, 0x08004004, 0x00002880, 0x00400604, 0x04380020, 0x80000000, 0x08600010, 0x10000828, + 0x10001000, 0x00008012, 0x005e0000, 0x20002000, 0x08280000, 0x40020208, 0x50040000, 0x00084000, 0x88001006, 0x80000000, + 0x001e0804, 0x40008002, 0x00000000, 0x80000008, 0x02040e86, 0x00000000, 0x80000640, 0x04300000, 0x00a08000, 0x0000006a, + 0x08000840, 0x00000000, 0x00501010, 0x90000e00, 0x2081200c, 0x00200000, 0x08040000, 0x40300000, 0x00142804, 0x90094000, + 0x80000010, 0x00069000, 0x00040002, 0x00000000, 0x00090281, 0x0084000a, 0x00000000, 0x00000201, 0x0020a440, 0x00000020, + 0x04000240, 0x00240404, 0x00000830, 0x00000002, 0x08201448, 0x00100010, 0x00001020, 0x10002000, 0x00060108, 0x20006204, + 0x00080052, 0x0020c000, 0x0000000c, 0x500c0001, 0x00020002, 0x80008204, 0x000004c0, 0x20000081, 0x82020200, 0x40008808, + 0x04000440, 0x00000204, 0x40040020, 0x08000800, 0x00200000, 0x00002428, 0x00001010, 0x10818000, 0x00100404, 0x00000001, + 0x20000080, 0x00046208, 0x00000000, 0x0000e008, 0x44040086, 0x00020000, 0x00000046, 0xa0008201, 0x00810481, 0x00001002, + 0x00002210, 0x00200010, 0x0440064d, 0x00084000, 0x80201000, 0x00000000, 0x00505414, 0x08200088, 0x00020020, 0x10408a80, + 0x00000010, 0x10100040, 0xa80c1000, 0x00086080, 0x00000a08, 0x64000420, 0x00064080, 0x40080000, 0x80000844, 0x00208000, + 0x40040000, 0x8a024012, 0x02001444, 0x00020000, 0x98144284, 0x00000400, 0x04000048, 0x0292e004, 0x00000820, 0x08008000, + 0x40600002, 0x30100000, 0x00002000, 0x086010a5, 0x80002008, 0x00000000, 0x30010610, 0x00064006, 0x40000000, 0x18000828, + 0x80112000, 0x00848082, 0x00021010, 0x00000081, 0x00802204, 0x102d0400, 0x24440008, 0x00100400, 0x128040d4, 0x08000221, + 0x00000000, 0x40400004, 0x08808000, 0x00a00828, 0x800c4000, 0x00005082, 0x10400004, 0x02300211, 0x00000000, 0x00000002, + 0x24182008, 0x40040600, 0x000008c0, 0x08205035, 0x00002008, 0x80020402, 0x30008000, 0x02000009, 0x00001000, 0x64000290, + 0x04022400, 0x00001010, 0x48044944, 0x08018180, 0x00800820, 0x80200000, 0x10001000, 0x04000000, 0x20900a0a, 0x60000081, + 0x00002802, 0x0440040c, 0x00000000, 0x00044004, 0x48288840, 0x00008022, 0xa0020400, 0x50140008, 0x00004291, 0x00800800, + 0x20015000, 0x00004002, 0x00101410, 0xc0002048, 0x0800082c, 0x00400c60, 0x40048008, 0x0a200820, 0x00084010, 0x10008008, + 0x10020000, 0x80101012, 0x00000885, 0xa2000008, 0x00086000, 0x40040600, 0x1c040046, 0x42124000, 0x00200820, 0x80000002, + 0x040a8288, 0x00001400, 0x12100280, 0x08000000, 0x20002808, 0x04300040, 0x10000002, 0x41005414, 0x08200000, 0x21050200, + 0x02000823, 0x10838000, 0x40141049, 0x80000280, 0x00000040, 0x0000000c, 0x28002002, 0x44408000, 0x00040000, 0x00014824, + 0x88220000, 0x00080000, 0x00808402, 0x10200000, 0x48001011, 0x04d10a88, 0x00080040, 0x1002a000, 0x60004400, 0x081c0002, + 0x84000000, 0x50040414, 0x00000440, 0x08100000, 0x80200828, 0x00180820, 0x04001000, 0x52048a15, 0x00083010, 0x20204008, + 0x8c020400, 0x00002008, 0x00004006, 0x4a240a41, 0x0000c004, 0x00000082, 0xd4021410, 0x00008003, 0x00100080, 0x2a200b04, + 0x000002c0, 0x04000000, 0x50003418, 0x00100440, 0x08240020, 0x20020806, 0x00100820, 0x00001008, 0xd0000010, 0x00843018, + 0x20200024, 0x00000482, 0x0004a00c, 0x40104000, 0x08800800, 0x00014004, 0x00000008, 0x94329432, 0x00808086, 0x00410000, + 0x28200a09, 0x00040281, 0x00000000, 0x50181454, 0x00204460, 0x00400008, 0x54020020, 0x04500184, 0x00204000, 0x8a040000, + 0x08202008, 0x10080208, 0x4e120430, 0x10141000, 0x00084120, 0xa4000002, 0x200e0800, 0x40000400, 0x0a200000, 0x40040104, + 0x800000a1, 0x14022000, 0x80028008, 0x00042040, 0x2a200000, 0x02004001, 0x00002828, 0x54043400, 0x04108001, 0x00225000, + 0x28000201, 0x08200800, 0x00000000, 0x50941480, 0x10108010, 0x00000044, 0x24000000, 0x20000800, 0x00040400, 0x48e02410, + 0x40074284, 0x80000820, 0x14102220, 0xc0021800, 0x00400040, 0x28a14100, 0x00c10007, 0x00000002, 0x14100000, 0x04400200, + 0x001080c0, 0x10002600, 0x40801048, 0x00a00080, 0x10480102, 0x00004044, 0x08000820, 0x10001000, 0x40040200, 0x08000040, + 0x00000018, 0x26008240, 0x40003102, 0x20004008, 0x08004000, 0x00080200, 0x00000024, 0x00000050, 0x42000080, 0x20020d20, + 0xa0001000, 0x021002c0, 0x11000112, 0x00000602, 0x02202000, 0x24000000, 0x40000544, 0x00100000, 0x08042008, 0x10004124, + 0x00a01000, 0x00044100, 0x001002f8, 0x00000002, 0x00009041, 0x08000118, 0x00001040, 0x00000093, 0x1800c080, 0x2000040a, + 0x00009200, 0x00020008, 0x20004800, 0x900404a0, 0x0000a000, 0x80080004, 0x00400802, 0x05500400, 0x00001800, 0x00020210, + 0xa4200001, 0x20100000, 0x00208000, 0x0182048a, 0x00020015, 0x40140800, 0x88000020, 0x00100000, 0x00400094, 0x05a81441, + 0x82140010, 0x00040008, 0x00080c02, 0x80500001, 0x1100c002, 0x08000000, 0x00000000, 0x80820080, 0x20010044, 0x40500020, + 0x01000000, 0x0082c208, 0x04610030, 0x20000840, 0x01012080, 0x00022000, 0x00080800, 0x00480000, 0x10120104, 0x00004000, + 0x02980000, 0x60080000, 0x04400400, 0x00300000, 0x40012000, 0x00300011, 0x800004a0, 0x42020240, 0x02208011, 0x20801008, + 0x08240044, 0x02080008, 0xa0040000, 0x00120400, 0x00000014, 0x42052023, 0x00002000, 0x00080006, 0x92000030, 0x00510000, + 0x20a00205, 0x00290410, 0x01420040, 0x02000105, 0x40034200, 0x00000000, 0x44800040, 0x18608012, 0x00000700, 0x00000080, + 0x00040092, 0x08888000, 0x00002000, 0x80020080, 0x04004000, 0x10010820, 0x80000080, 0x08080020, 0x00000c00, 0x84020090, + 0x00000008, 0x88810100, 0x28040060, 0x41200000, 0x24448004, 0x00000000, 0x00010008, 0x00000040, 0x80002008, 0x00409040, + 0x10040200, 0x00010000, 0x00080000, 0x00001020, 0xc4100000, 0x00000008, 0x00008000, 0x10080216, 0x00028008, 0x010801a0, + 0x00004000, 0x80000210, 0x2000c088, 0x01000400, 0x00000008, 0x0000c000, 0x88000000, 0x00000822, 0x00000000, 0x02810400, + 0x00108808, 0x00000420, 0x00020000, 0x00802000, 0x00000040, 0x00000800, 0x00006008, 0x00000c48, 0x20180401, 0x40402204, + 0x0000000c, 0x00200342, 0x20009001, 0x00004020, 0x00009101, 0x04804004, 0x10000a02, 0x08001800, 0x00200000, 0x00800588, + 0x10000004, 0x00201810, 0x00820002, 0x08000410, 0x000400a0, 0x00104000, 0x00000800, 0x00004009, 0x00014440, 0x20062041, + 0x00000030, 0x80102c80, 0x60001140, 0x10004200, 0x40100c00, 0x000008c0, 0x02010000, 0x80100400, 0x40070040, 0x00080b00, + 0x42003000, 0x1040200a, 0x040e1000, 0x80188050, 0x0120100c, 0x00000233, 0x02004000, 0x200c1088, 0x00100000, 0x60008105, + 0x10021001, 0x00040024, 0x00000000, 0x90801052, 0x00001010, 0x80000480, 0x20080800, 0x00006040, 0x40000008, 0x02430044, + 0x10200202, 0x02010020, 0x0000a098, 0x44400000, 0x00042000, 0x20000201, 0x00000081, 0x80002a20, 0x04200006, 0x20100500, + 0x40000101, 0x000d1000, 0x30002010, 0x00008882, 0x40800410, 0x00100000, 0x40800000, 0x00008002, 0x00040004, 0x80c00010, + 0x00800080, 0x000e0000, 0x00204040, 0x00000400, 0x00840000, 0x00b00264, 0x00020820, 0x00000000, 0x00400000, 0x04000010, + 0x18080000, 0x48202004, 0x00400408, 0x04002000, 0x88204000, 0x00100004, 0x00004000, 0x00000000, 0x00208002, 0x10140000, + 0x00400008, 0x00800280, 0x00020000, 0x00000000, 0x00080400, 0x80000000, 0x00008000, 0x80060820, 0x00100000, 0x00401040, + 0x00110000, 0x22010000, 0x00400400, 0x00040008, 0x04080010, 0x90018062, 0x48606000, 0x00000000, 0x00200000, 0x00108000, + 0x00000000, 0x00004050, 0x80009020, 0x00100000, 0x04000000, 0x02842008, 0x00020080, 0x08404030, 0x04000008, 0x00002004, + 0x00000000, 0x00200a02, 0x00000480, 0x2002c044, 0x10008052, 0x08000000, 0x00101400, 0x20000080, 0x00000200, 0x00040020, + 0x40240004, 0x00000040, 0x00000410, 0xa0000008, 0x00020000, 0x04002002, 0x00850080, 0x00000000, 0x00404000, 0x0440a404, + 0x00000200, 0x00100000, 0x08000040, 0x00000002, 0x00000210, 0x10000820, 0x00010012, 0x44088400, 0x00000008, 0x00000280, + 0x00020800, 0x40240004, 0x00082020, 0x80001450, 0x80020002, 0x2000000c, 0x00400010, 0x08108100, 0x00000020, 0x20000080, + 0x40102210, 0x00000000, 0x042c0000, 0x00484000, 0x00000840, 0x80120000, 0x08048000, 0x00001000, 0x028002b0, 0x10101000, + 0x00000008, 0x24024000, 0x00002000, 0x20080050, 0x00244000, 0x00040000, 0x00008004, 0x40000080, 0x00000200, 0x00004002, + 0x00380000, 0x2013a200, 0x80000000, 0x40040000, 0x00400062, 0x00080800, 0x20000008, 0x08008800, 0x80001420, 0x00070080, + 0x80101412, 0x00020200, 0x24400000, 0x00080040, 0x10214020, 0x08000000, 0x00008000, 0x00400008, 0x04008002, 0x00128000, + 0x00040400, 0x00000050, 0x00204888, 0x00000220, 0x00000000, 0x00081054, 0x00004402, 0x08902200, 0x00420800, 0x00088028, + 0x10002400, 0x08004000, 0x10000044, 0x00140002, 0x00100000, 0x0028a002, 0x00000084, 0x200c0001, 0x00000000, 0x00200680, + 0x00000040, 0x40001000, 0x00000c20, 0x00100120, 0x00806804, 0x04080290, 0x20800004, 0x00021410, 0x08040088, 0x84000000, + 0x00212000, 0x18000048, 0x08214000, 0x00000084, 0x0010000a, 0x10108000, 0x00400000, 0x00000406, 0x00004208, 0x04000080, + 0x00212002, 0x10000040, 0x00001410, 0x00020820, 0x00040084, 0x20400000, 0x00189010, 0x01000000, 0x08804002, 0x022a8828, + 0x00000000, 0x80041080, 0x00100010, 0x20082040, 0x00200204, 0x00408008, 0x00040086, 0x00000000, 0x40004000, 0x80020002, + 0x00600020, 0x02008010, 0x00800080, 0x42000a00, 0x0c1a0440, 0x00100000, 0x80002400, 0x10200040, 0x08200800, 0xa0000000, + 0x02004024, 0x00001000, 0x10420000, 0x04100018, 0x00084008, 0x24000404, 0x0004a020, 0x00000000, 0x40854000, 0x20082026, + 0x00000000, 0x84002002, 0x100e8080, 0x00a10080, 0x48000200, 0x00460414, 0x84400000, 0x10100040, 0x00803410, 0x08010820, + 0x00000040, 0x06400400, 0x08000020, 0x00200204, 0x00001898, 0x00100000, 0x00000054, 0x20803000, 0x4000a008, 0x22000000, + 0x000a4042, 0x40000000, 0x04000000, 0x08044004, 0x00008080, 0x00020040, 0x90802202, 0x00000e80, 0x00a00000, 0x02000010, + 0x08000408, 0x00000042, 0x00100020, 0x00005800, 0x08040034, 0x80200002, 0x30101018, 0x00040000, 0x00002000, 0x2000000c, + 0x00004200, 0x0449a000, 0x40040004, 0x00000000, 0x00004002, 0x80000280, 0x00028022, 0x04610040, 0x00000480, 0x10800000, + 0x08010a00, 0x00001020, 0x00400042, 0x04040400, 0x00080010, 0x00104000, 0x04000030, 0x08200000, 0x00080000, 0x04009002, + 0x00000488, 0x20100000, 0x40004800, 0x00000400, 0x00088000, 0x20040204, 0x40020000, 0x00040000, 0x80000000, 0x02801280, + 0x00000400, 0x88120040, 0x00000000, 0x00002008, 0x02808000, 0x00600000, 0x28000000, 0x04000820, 0x10105004, 0x08080000, + 0x00248010, 0x10000000, 0xa0114288, 0x00000000, 0x40000404, 0x00048800, 0x20080022, 0x84000020, 0x00000000, 0x400610d0, + 0x00800008, 0x00020050, 0x90410600, 0x00000000, 0x00800020, 0x04094000, 0x00200000, 0x0000a000, 0x5c511884, 0x00204000, + 0x88088004, 0x00000252, 0x00000180, 0x40000022, 0x00120048, 0x00000000, 0x22000010, 0x00086400, 0x00000000, 0x00000408, + 0x00822230, 0x00200804, 0x10004020, 0x0000100a, 0x08002010, 0x1000000a, 0x00008084, 0x20101000, 0x40000001, 0x00002682, + 0x00000008, 0x100a0404, 0x0820da60, 0x40010001, 0x80100082, 0x20042440, 0x00088000, 0x04000040, 0x00000828, 0x00040080, + 0x00800600, 0x80027014, 0x00200840, 0x04100000, 0x0000a002, 0x00000020, 0x00088400, 0x0080008a, 0x04000000, 0x00300010, + 0x08400284, 0x00004040, 0x80020004, 0x00183c30, 0x00008001, 0x40000060, 0x08804000, 0x00008022, 0x80000000, 0x08002000, + 0x00400000, 0x00100200, 0x24280030, 0x02482008, 0x00000000, 0x4c200800, 0x08040a20, 0x00100004, 0x80004010, 0x00100002, + 0x00008010, 0x02824000, 0x00042000, 0x200c12c0, 0x04004000, 0x00000404, 0x00000040, 0x40300000, 0x00240000, 0x00000000, + 0x10000000, 0x00800000, 0x00000000, 0x28540400, 0x00402000, 0x04080000, 0x78000040, 0x00100800, 0x00040000, 0xa0000002, + 0x00081080, 0x00220022, 0xe0c1e204, 0x10010080, 0x000c0200, 0x8c202000, 0x00020000, 0x04040400, 0x00d00040, 0x00200004, + 0x0000400c, 0x00420440, 0x08040820, 0x00008002, 0x00021018, 0x02100010, 0x00080285, 0x00000020, 0x04000000, 0x00000408, + 0x10982800, 0x00004000, 0x0004886e, 0x00000000, 0x10008200, 0x00321014, 0x00000402, 0x00000001, 0x0000200a, 0x000000c4, + 0x00040800, 0x20004320, 0x00000480, 0x00081000, 0x00000012, 0x00200860, 0x00119000, 0x000022a0, 0x00000030, 0x04022000, + 0x20004414, 0x0028001a, 0x08018040, 0x000008a4, 0x00042200, 0x00020000, 0x80000014, 0x00042042, 0x00581000, 0x00000480, + 0x40010024, 0x00000008, 0x00404400, 0x04002882, 0x00040010, 0x440c0414, 0x08000008, 0x08200008, 0x80000820, 0x2000c400, + 0x00080000, 0x02320a13, 0x00200004, 0x00080800, 0x04502442, 0x0006d088, 0x00000000, 0x08244028, 0x00881285, 0x02000000, + 0x1000b016, 0x00000048, 0x00000004, 0x20180080, 0x4a000408, 0x00402400, 0x41000204, 0x04840002, 0x08100001, 0x90020822, + 0x00200001, 0x00100000, 0x10811210, 0x20000000, 0x20048000, 0x040020c8, 0x40400402, 0x08000000, 0x80200020, 0x10960214, + 0x00000000, 0x10000806, 0x00400400, 0x00800000, 0x801b3010, 0x80044080, 0x04000400, 0x40204018, 0x02500220, 0x00280020, + 0x00444242, 0x80120000, 0x40802200, 0x08e004c0, 0x00020820, 0x06500040, 0x00c00820, 0x0004c21a, 0x0402a00a, 0x003800d0, + 0x10000024, 0x00040004, 0x182020b8, 0x00104401, 0x00002002, 0x00105014, 0x5008c400, 0x000408a0, 0x2200e003, 0x00000000, + 0x80080012, 0x04461488, 0x00008000, 0x00012928, 0x8220c400, 0x28030002, 0x00000010, 0x00800a20, 0x10181000, 0x04000808, + 0x20561412, 0x80002084, 0x00100004, 0x00043848, 0x00000000, 0x30000002, 0x0c101034, 0x40600088, 0x00010084, 0x0082080a, + 0x00008422, 0x00002010, 0x44441084, 0x00080400, 0x08800808, 0x02840000, 0x04401000, 0x000080a0, 0xc74a2440, 0x08300814, + 0x00001000, 0x0aa00800, 0x04100010, 0x00002008, 0x0c104000, 0x000c00d0, 0x08104000, 0x00282000, 0x02040e0d, 0x10009000, + 0x00544000, 0x04000002, 0x02202080, 0x08088200, 0x20008040, 0x04100400, 0x420402a0, 0x00401050, 0x20200800, 0x0c4262a0, + 0x10800400, 0x94440010, 0x0871d880, 0x04000444, 0x00002408, 0x14509000, 0x20000860, 0x00840000, 0x28206000, 0x0000020c, + 0x00401002, 0x001c8000, 0x04010060, 0x00240a10, 0x10000000, 0x40810080, 0x00520420, 0xc08d8040, 0x1c000000, 0x00008820, + 0x00880440, 0x06002036, 0x08200820, 0x00401640, 0x20000000, 0x00082008, 0x00301812, 0x08040000, 0x00404484, 0x80182000, + 0x20020008, 0x40040006, 0x00086008, 0x00809010, 0x20000842, 0x82225204, 0x0000a080, 0x22000600, 0x04808003, 0x10400080, + 0x04422062, 0x00000280, 0x92080c00, 0x08344020, 0x00000002, 0x00003818, 0x10981400, 0x40200830, 0x08048c80, 0x2409c00c, + 0x00203010, 0x90400000, 0x48004022, 0x00042804, 0x00800090, 0x901a0002, 0x00241014, 0x00008200, 0x080104c0, 0x84e00208, + 0x00000800, 0x00080040, 0x00820020, 0x04409480, 0x102b0000, 0x0cc08440, 0x00000080, 0x02340a02, 0x08400000, 0x80080020, + 0x0000a080, 0x00140010, 0x20001820, 0x40004000, 0x22482400, 0x0002080a, 0x8a000834, 0x000c4000, 0x50208000, 0x80002052, + 0x00800080, 0x30028008, 0x04400208, 0x02800800, 0x002000a0, 0x08400004, 0x14000240, 0x00101400, 0x00080232, 0x40000000, + 0x08200800, 0x200230c8, 0x10300010, 0x08040004, 0x2008c000, 0x00002600, 0x04220008, 0x00000800, 0x40100024, 0x98244000, + 0x00828200, 0x80050000, 0x00000002, 0x04c00084, 0x48100204, 0x00018040, 0x0028484c, 0x04d40002, 0x00001430, 0x00002002, + 0x04500040, 0x00000404, 0x60201020, 0x08000800, 0x04080010, 0x02000000, 0x00041000, 0xc0100058, 0xa4000000, 0x00080000, + 0x1012200c, 0x00040044, 0x02080400, 0x6000c000, 0x90000002, 0x00808400, 0x00024020, 0x00000281, 0x02300002, 0x80804004, + 0x00060400, 0x0d400002, 0x02100040, 0x00010000, 0x00800a00, 0x082800b2, 0x00401000, 0x90408010, 0x00900064, 0x40200008, + 0x00080800, 0xa0422000, 0x00000010, 0x60000000, 0x0004440c, 0x80820000, 0x08212020, 0x00409002, 0x00900280, 0x90004020, + 0x08210410, 0x00000440, 0x04500000, 0x00064008, 0x00800001, 0x00042010, 0x04200060, 0x01008800, 0x00c00022, 0x083800c8, + 0x00001000, 0x00000010, 0x00100200, 0x20200008, 0x0038a000, 0x00041042, 0x40000020, 0x00004808, 0x000c008c, 0x00008010, + 0x080a0004, 0x80100006, 0x00000000, 0x0280200a, 0x40400280, 0x00000040, 0x80800600, 0x08008080, 0x08800820, 0x00200000, + 0x04100001, 0x00008000, 0x14110000, 0x80003010, 0x20882002, 0x00100000, 0x00540028, 0x40004004, 0x20040000, 0x00003800, + 0x80028012, 0x60000000, 0x00040008, 0x00800000, 0x00080088, 0x00410202, 0x00000000, 0x00000440, 0x06442004, 0x00210800, + 0x04000404, 0xa0c00000, 0x08301000, 0x00000010, 0x0200a860, 0x80020010, 0x00100000, 0x06481e08, 0x00042000, 0x20004008, + 0x08088086, 0x00244000, 0x4000000c, 0x000010c9, 0x80000200, 0x00000806, 0x00068400, 0x20000021, 0x000002c2, 0x0298080a, + 0x00100000, 0x04c40244, 0x00021400, 0x00000000, 0x00000020, 0x0a200818, 0x00020010, 0x00801002, 0x10108000, 0x00400000, + 0x8009200c, 0x28004c00, 0x00240000, 0x00004204, 0x60088080, 0x00100000, 0x88008006, 0x00024000, 0x00011060, 0x00820200, + 0x80020080, 0x00080010, 0x04500004, 0x90001c40, 0x00000020, 0x00400040, 0x0010440c, 0x000c20a0, 0x08200080, 0x40428c02, + 0x0010100c, 0x20000000, 0x400000d0, 0x000c2200, 0x00100000, 0x20000c68, 0x00020004, 0x80040012, 0x60004820, 0x00822402, + 0x80108000, 0x40440000, 0x0a801000, 0x00000000, 0xa0002298, 0x04400400, 0x01a00000, 0x12104040, 0x00240900, 0x08000020, + 0x0040a042, 0x30100410, 0x80081400, 0x002400c0, 0x00012000, 0x20000028, 0xc0080610, 0x40800000, 0x00000000, 0x200468e4, + 0x00019012, 0x00620000, 0xc0000040, 0x10000284, 0x0c030000, 0x00a20000, 0x04480000, 0x00002040, 0x10904410, 0x08000000, + 0x08000000, 0xc4548834, 0x08204000, 0x00002928, 0x84000002, 0x00188000, 0x00001004, 0x02000291, 0x20202000, 0x00000002, + 0x044c4008, 0x40040004, 0x000004c0, 0x1820c001, 0x80008802, 0x00020400, 0x10000020, 0x02104095, 0x00800820, 0x2008920c, + 0x00022440, 0x00308110, 0xc0000081, 0x88800000, 0x00000008, 0x002258a4, 0x10101000, 0x04c00004, 0x0801aa32, 0x20082008, + 0x00000082, 0x10001000, 0x40144000, 0x000210d4, 0x00280408, 0x00000822, 0x00000400, 0x901b8010, 0x00011088, 0x00200820, + 0xc0800204, 0x04006000, 0x00000000, 0x42400445, 0x00000820, 0x40000c08, 0x0e200040, 0x08040810, 0x82000000, 0x00a0a024, + 0x00040012, 0x005a0008, 0x00001085, 0x02000048, 0x28086200, 0x00808402, 0x44040000, 0x02404000, 0x08000885, 0x80000020, + 0x24080002, 0x00228410, 0x12000201, 0x00900080, 0x60483828, 0x00200000, 0x10020040, 0x08000410, 0x01248024, 0x08005800, + 0xc0120202, 0x14000000, 0x00142018, 0x20801280, 0x20010404, 0x00082000, 0x00400048, 0x44050004, 0x00004002, 0x00200880, + 0x08420000, 0xb0008000, 0x0080043a, 0x00911000, 0x00000200, 0x0c0068a0, 0x04080440, 0x80460002, 0x40204018, 0x00290000, + 0x04420820, 0x40840444, 0x00100c60, 0x00200010, 0x8800e002, 0x00000820, 0x000a1018, 0x02100085, 0x000c1010, 0x00004008, + 0x2090a602, 0x00006008, 0x40140004, 0x0a2008e1, 0x00024004, 0x80008008, 0x14500012, 0x00808603, 0x02000000, 0x082818a8, + 0x200002c0, 0x00000000, 0x10042410, 0x00000440, 0x00301000, 0x68820c2a, 0x00001820, 0x80002010, 0x10910080, 0x00003014, + 0x00040000, 0x2c48060a, 0x00002008, 0x40000000, 0x10b448e4, 0x80004004, 0x00030008, 0x14008002, 0x00008202, 0x00c50400, + 0x00181890, 0x004002e0, 0x08200400, 0x54044000, 0x00100440, 0x00200008, 0x0014822a, 0x04400404, 0x00a04100, 0x08028200, + 0x08280080, 0x00100402, 0x02040000, 0x00100054, 0x00000b04, 0x2c480200, 0x20180000, 0x000400d4, 0x6a200000, 0x400608bf, + 0x00000000, 0xb4400000, 0x8002a00e, 0x00004000, 0x2aa00802, 0x02800000, 0x00402002, 0x14080401, 0x04400300, 0x081000a0, + 0x20a10100, 0x08202241, 0x00108040, 0x10830000, 0x1018d416, 0x00044204, 0x2c000093, 0x20081e00, 0x00040040, 0x40810100, + 0x40063000, 0x000000c0, 0x9c206200, 0x80020408, 0x00401040, 0x00891824, 0x00810604, 0x08600400, 0x14000000, 0x0c601000, + 0x88002200, 0x00801c00, 0x00000040, 0x00141080, 0x00484010, 0x44000458, 0x20801020, 0x00442022, 0x92001001, 0x00000080, + 0x1000c000, 0x02400000, 0x00001928, 0x02002000, 0x40804400, 0x00240300, 0x00044001, 0x00400130, 0x00140000, 0x00001230, + 0x20060200, 0x006a8100, 0x001100a0, 0x00000044, 0x10100c10, 0x00004001, 0x40400080, 0x80003002, 0x00440000, 0x00000040, + 0x40022081, 0x00000100, 0x20000028, 0x00402200, 0x00008008, 0x40004101, 0x20040000, 0x00200040, 0x28480004, 0x00004000, + 0x80008002, 0x10080010, 0x0000a0c0, 0x00120288, 0x00000000, 0x00040040, 0x00000000, 0x16002000, 0x00000000, 0x20000100, + 0x80008200, 0x0c220001, 0x08004948, 0x04118400, 0x60840000, 0x80800010, 0x00000002, 0x99086000, 0x04098200, 0x10000000, + 0x00101080, 0x02208040, 0xd0001c00, 0x40c00081, 0x00000004, 0xca000101, 0x0480088c, 0x40000008, 0xa1403000, 0x0a001000, + 0x04040204, 0x00a00008, 0x00000808, 0x00300c20, 0x45800000, 0x13000008, 0x80000800, 0x08218000, 0x00000002, 0x81081000, + 0x20838400, 0x09000017, 0x04050000, 0x00002822, 0x10040000, 0x00000080, 0x01000101, 0x42004008, 0x00000813, 0x20802042, + 0x20c00000, 0x00100020, 0x80484000, 0x50020000, 0x0a004800, 0x00010801, 0x00000200, 0x10002000, 0x00404000, 0x00000008, + 0x00280900, 0x04000028, 0x40000000, 0x00100100, 0x08000204, 0x00801010, 0x00090040, 0x24000004, 0x00010000, 0x00000200, + 0x1101080a, 0x00000004, 0x88800000, 0x10080400, 0x04020020, 0x00200000, 0x00020020, 0x0001a008, 0xbc000004, 0x00000000, + 0x00051241, 0x00a00004, 0x00081020, 0x04020006, 0x04500000, 0x02200000, 0x90800000, 0x00080020, 0x80022000, 0x00400208, + 0x40020000, 0x08950001, 0x00000000, 0x90210000, 0x04000801, 0x48044044, 0x00280200, 0x00129058, 0x40101004, 0x04008030, + 0x80000000, 0x02000492, 0x00000020, 0x88008100, 0x00010410, 0x00001000, 0x00108080, 0x04025800, 0x00000480, 0x00000000, + 0x00020020, 0x00008a00, 0x00101080, 0x0400a001, 0x40200104, 0x40020000, 0x00006050, 0x00000000, 0x30001000, 0x80001004, + 0x2004000c, 0x00006300, 0x00000053, 0x00000000, 0x44014100, 0x00002400, 0x000802a2, 0x10020000, 0x00009840, 0x00004041, + 0x34200000, 0x00009820, 0x02400440, 0x00000010, 0x00080000, 0x802080a0, 0x00004510, 0x40200084, 0x08010004, 0x00083010, + 0x20000800, 0x0000a480, 0x10000000, 0x81200000, 0x30040440, 0x000a0028, 0x0040000c, 0x24121000, 0x00200004, 0x42800280, + 0x80002014, 0x00806600, 0x10400042, 0x4004a05c, 0x20104801, 0x10000000, 0x802041a2, 0x20000402, 0x10000010, 0x00008010, + 0x900406a1, 0x28000c00, 0x0018a088, 0x40008001, 0x00024010, 0x80080400, 0x07810840, 0x20120000, 0x00041000, 0x88028012, + 0x8a000080, 0x00000018, 0x0040a009, 0x04220410, 0x00042000, 0x02804080, 0x00000015, 0x00004802, 0x70001006, 0x00100040, + 0x00010401, 0x080c0000, 0x00000008, 0x200080e0, 0x00104440, 0x00000000, 0x20000000, 0x00048000, 0x00000000, 0x00c00208, + 0x40010382, 0x00000000, 0x00000040, 0x440c0400, 0x01200040, 0x02000100, 0x10040800, 0x88200002, 0x00188080, 0x00810010, + 0x00210000, 0x00002000, 0x40400008, 0x00000000, 0x000c4000, 0x00004000, 0x80180000, 0x00203000, 0x00050002, 0x00800004, + 0x00100000, 0x40000201, 0x00008000, 0x00000420, 0x00000080, 0x40800000, 0x00050c00, 0x00000000, 0x00000000, 0x10180808, + 0x01001010, 0x00000080, 0x002a2400, 0x00010008, 0x04400000, 0x40144002, 0x00024800, 0x00002000, 0x80000000, 0x00840000, + 0x00000000, 0x00801400, 0x80000000, 0x00000000, 0x00180000, 0x00000000, 0x00063008, 0x40004084, 0x00002400, 0x00800000, + 0x88008008, 0x08220020, 0x00004004, 0x00802802, 0x10000082, 0x00100100, 0x000c8410, 0x20000008, 0x04200100, 0x000060c4, + 0x40000024, 0x000c0c00, 0x00800010, 0x80028800, 0x00002000, 0x02400000, 0x02010018, 0x00000081, 0x04641000, 0x44006400, + 0x00020244, 0x80300002, 0x08000000, 0x00200804, 0x00000080, 0x10001201, 0x00000000, 0x20142010, 0x00080041, 0x00000200, + 0x002000a2, 0x20002004, 0x00001810, 0x00000401, 0xc002800a, 0x00000400, 0x40500000, 0x880a1002, 0x00200000, 0x12400100, + 0x02004248, 0x10000004, 0x60540000, 0x00488000, 0x00020080, 0x80000800, 0x002008a4, 0x04040000, 0x4a000410, 0x00000000, + 0x00000008, 0xc4c20002, 0x20082800, 0x00000080, 0x48200008, 0x10040400, 0x00000000, 0x04000000, 0xc000a101, 0x00000000, + 0x00384044, 0x10800001, 0x42100200, 0x28000020, 0x00080008, 0x20000400, 0x84040004, 0x00240820, 0x08820040, 0x42010000, + 0x00001000, 0x00020200, 0x80400008, 0x2009000c, 0x00000000, 0x08200400, 0x00040400, 0x00002800, 0x00000000, 0x00028080, + 0x8000a018, 0x00300c20, 0x000a0000, 0x00800228, 0x0000c800, 0x00802000, 0x00101040, 0x00044010, 0x0400002c, 0x08000680, + 0x0008a040, 0x08004002, 0x00001200, 0x00040004, 0x1012840a, 0x00000000, 0x00084090, 0x20200281, 0x00001120, 0x008c0808, + 0x80040440, 0x00008000, 0x80900204, 0x10010008, 0x00000220, 0x22002c10, 0x04000010, 0x84000004, 0x00080002, 0x04400408, + 0x40088081, 0x00026000, 0x08000001, 0x00000004, 0x10154002, 0x10180408, 0x00008000, 0x000a0002, 0x20000880, 0x00094201, + 0x00040000, 0x40040000, 0x00000440, 0x80202200, 0x80020020, 0x00101400, 0x1000004c, 0x00200220, 0x48080800, 0x00008080, + 0x00000000, 0x4410001a, 0x10005000, 0x00020100, 0x80202008, 0x200c0010, 0x40000004, 0x12840000, 0x00204000, 0x00000000, + 0xa4420002, 0x0004a000, 0x02800100, 0x08000200, 0x000200e0, 0x00000000, 0x04080440, 0x10240000, 0x01080800, 0x08a04000, + 0x00400024, 0x20044000, 0x00420000, 0x10300092, 0x20008000, 0x00082000, 0x48110808, 0x00000004, 0x00204040, 0xc8061010, + 0x80428283, 0x00000040, 0x26110020, 0x00212221, 0x58000010, 0x00821080, 0x00500400, 0x14000000, 0x00808040, 0x08200000, + 0x00400000, 0x24a40040, 0x08002800, 0x00201014, 0x8012042a, 0x00101000, 0x10000010, 0x40000004, 0x00086002, 0x22000000, + 0x00040408, 0x00008000, 0x00404084, 0x42040140, 0x00000200, 0x00008840, 0x90c20102, 0x04200000, 0x00880680, 0x22004000, + 0x00000830, 0x00000000, 0x0c000444, 0x08000020, 0x10040800, 0x00220408, 0x10000080, 0x00104010, 0x60002200, 0x00082004, + 0x2000000b, 0x84010040, 0x40044000, 0x00020200, 0x00000c04, 0x08008000, 0x00420003, 0x900100c0, 0x00000000, 0x008104a0, + 0x00280201, 0x04002440, 0x00420000, 0x0000481c, 0x00011800, 0x00204000, 0xcc402004, 0x08180010, 0x10208000, 0x00003002, + 0x30000140, 0x00000000, 0x00144000, 0xa0080000, 0x40000284, 0x00020000, 0x000002a0, 0x44000800, 0x0804000a, 0x06820010, + 0x00000000, 0xa0004000, 0x50000000, 0x00000840, 0x02840400, 0x00304028, 0x08000004, 0x04400001, 0x50000012, 0x00020000, + 0x08240000, 0x10180008, 0x00004201, 0x60002000, 0x00000800, 0x800400a0, 0x20480000, 0x00060042, 0x40010000, 0x00808000, + 0x00001010, 0x10000800, 0x80220488, 0x00c0002c, 0x00000840, 0x86110000, 0x04202000, 0x20008000, 0x00400004, 0x00001010, + 0x18080000, 0x00020820, 0x42100080, 0x00000000, 0x00000090, 0x200c0200, 0x02820000, 0x0000f140, 0xc00020a0, 0x00000020, + 0x00000c0a, 0x0ca00040, 0x00001020, 0x220ae014, 0x10000000, 0x0000001a, 0x00009284, 0x00080180, 0x00002009, 0x00008020, + 0x48304402, 0x20000000, 0x00008880, 0x00018104, 0x00000002, 0x000c0850, 0x00001010, 0x80000000, 0x00420629, 0x00040000, + 0x00000000, 0x00006000, 0x80e00010, 0x00020014, 0x0000280a, 0x00100000, 0x00000000, 0x00090201, 0x00004001, 0x00404080, + 0x00008200, 0x0000040a, 0x80286006, 0x00010000, 0x40100880, 0x00000008, 0x0840c400, 0x08800000, 0x00801100, 0x00708000, + 0x80021000, 0x10500000, 0x00040480, 0x04200600, 0x08802008, 0x40284044, 0x00004004, 0x48040000, 0x82300800, 0x00008082, + 0x90020000, 0x04482120, 0x00180410, 0x00000000, 0xe0020088, 0x00000000, 0x44040400, 0x88220000, 0x81000800, 0x00000000, + 0x10e80080, 0x00000000, 0x10021010, 0x08300000, 0x00802004, 0x24080000, 0x5a710001, 0x08000800, 0x00240400, 0xe01a1004, + 0x00020200, 0x90000000, 0x22452000, 0x00000090, 0x20010201, 0x441a0004, 0x00000000, 0x00000000, 0x08002c00, 0xe0800000, + 0x00004024, 0x00000210, 0x80201008, 0x08108002, 0x10002820, 0x12000110, 0x00040221, 0x00920004, 0x00488000, 0x00000408, + 0x04006082, 0x48004000, 0x00000908, 0x100412d4, 0x80020000, 0x00008010, 0x00004442, 0x20000201, 0x0000200a, 0x000000a0, + 0x04000000, 0x00004414, 0x00888a00, 0x00300022, 0x80008008, 0x04042a40, 0x02000000, 0x00980225, 0x30024010, 0x04400000, + 0x00010418, 0x200aa0a0, 0x000400c0, 0x4000082e, 0x00004201, 0x90118040, 0x00201014, 0x4002040e, 0x20000001, 0x0000200a, + 0x00018000, 0x00000800, 0x00080605, 0x00025000, 0x80300800, 0x40500000, 0x00000400, 0x08200000, 0x00024866, 0x10002000, + 0x32008100, 0x00100299, 0x00400000, 0x400a2808, 0x04040402, 0x00100000, 0x40001040, 0xa820600c, 0x20840001, 0x00028100, + 0xd0100822, 0x00002410, 0x04800080, 0x22202208, 0x00004000, 0x04000400, 0x00444004, 0x08100000, 0x08001010, 0xc0020822, + 0x20200001, 0x10080000, 0x42810870, 0x00008200, 0x20000020, 0x04482085, 0x00020008, 0x00044004, 0x08202c80, 0x60811010, + 0x00002000, 0x50009016, 0x80020201, 0x00400000, 0x2402800a, 0x02034005, 0x04400000, 0x5084e200, 0x80320600, 0x08000000, + 0x0484460a, 0x80800000, 0x00100820, 0xc8028502, 0x00202404, 0x00104044, 0x10800820, 0x480004d8, 0x04200022, 0x820c2410, + 0x00000008, 0x18008004, 0x506622a8, 0x00004801, 0x8000000a, 0x4410501c, 0x10028000, 0x02000820, 0xa0888083, 0x40000600, + 0x0040a010, 0x45000288, 0x12120480, 0x20282800, 0x08020500, 0x00000020, 0x00400010, 0x88814820, 0x5800000a, 0x0004a08a, + 0xa0400010, 0x08081c44, 0x08000000, 0x44006029, 0x0004000c, 0x10000002, 0xc0136004, 0x20048000, 0x00010000, 0x420c8803, + 0x80000412, 0x10002410, 0x40045003, 0x04400080, 0x20210008, 0x42840004, 0x04480000, 0x010808a0, 0x84e00080, 0x0a120200, + 0x40040210, 0x0a201800, 0x10100004, 0x0000a080, 0x14520800, 0x08884018, 0x00840120, 0x08284004, 0xc01022c1, 0x10000802, + 0x40068000, 0x86000004, 0x000401c0, 0xa01a0206, 0x0ac00402, 0x00200444, 0xd2802210, 0x04404800, 0x21008020, 0x84e10800, + 0x08042408, 0x40000000, 0x1a630412, 0x00080004, 0x048a2000, 0x10440218, 0xa0000012, 0x401040c4, 0x3a2d0000, 0x00000020, + 0x80028002, 0x444c4800, 0x00004000, 0x02000288, 0xa00b9000, 0x08000c51, 0x00103404, 0x06410201, 0x10200050, 0x20002820, + 0x08800c00, 0x00500000, 0x88001010, 0x04600822, 0x24440000, 0x12803098, 0x04300a60, 0x000e4000, 0x44482008, 0x20200104, + 0x80008570, 0x08000000, 0x0004200e, 0x408a4000, 0x00020a42, 0x82208000, 0x20004190, 0x00000200, 0x80448883, 0x02804400, + 0x04024420, 0x00000240, 0x00500018, 0x08a00000, 0x40000a00, 0x20080025, 0x10102019, 0xc0220820, 0x00000280, 0x00894004, + 0x00202008, 0x20060000, 0x08048803, 0x40500004, 0x00885080, 0x10002440, 0x40025006, 0xc6408220, 0x02a90001, 0x80008022, + 0x00000a80, 0x04040408, 0x2ac00240, 0x00100010, 0x88000020, 0x04c00410, 0x00801a60, 0x10062108, 0x2c400820, 0x02280040, + 0x10000010, 0x00208082, 0x80f01000, 0x20082008, 0x00040800, 0x42005006, 0x84000084, 0x2006a000, 0x62004140, 0x90822212, + 0x00008448, 0x00600120, 0x04000208, 0x82848080, 0x0020a800, 0x08000000, 0x004a0400, 0x040000c1, 0x18100200, 0x00080980, + 0xc0200070, 0x00010004, 0x22300c12, 0x10002000, 0x444400a0, 0x20086018, 0x00000042, 0x80068000, 0x40000204, 0x00014820, + 0x82801011, 0x4008008a, 0x0002c000, 0x04410004, 0xd28200c0, 0x80080201, 0x08200840, 0x06000621, 0x40520000, 0x10004201, + 0x04480402, 0x0000c000, 0x00000804, 0x08008060, 0x90203400, 0x10020010, 0x24000400, 0x001c100a, 0x60000d08, 0x12480200, + 0x80006004, 0x00024004, 0x62800000, 0x000400a0, 0x80008002, 0x00220000, 0x00000104, 0x10000281, 0x02008000, 0x04800400, + 0xc0080000, 0x0040c446, 0x04300020, 0x80000000, 0x10080800, 0x08a42028, 0x22100012, 0x00008020, 0x10004001, 0x20000808, + 0x08080080, 0x40002406, 0x00030014, 0x00140010, 0xc008c008, 0xa0000000, 0x00008800, 0x00822082, 0x00c40201, 0x02020090, + 0x04072c04, 0x00000402, 0x04804004, 0x0a708040, 0x00020020, 0x20804204, 0x00120048, 0x81000000, 0x00240442, 0x1c402a20, + 0x10008004, 0x00001110, 0x001a0000, 0x20000000, 0x00182080, 0x98a60048, 0x40200020, 0x00104808, 0x1084100e, 0x00080010, + 0x08080000, 0x82068002, 0x40800000, 0x0200a380, 0x00400406, 0x04020000, 0x00000000, 0x80000c54, 0x0a800020, 0x00208002, + 0x40020800, 0x10100000, 0x00010018, 0x64482000, 0x00280081, 0x00202000, 0x30040848, 0x00040000, 0x00224404, 0x58000000, + 0x80020012, 0x00008005, 0x00800000, 0x40800088, 0x00091001, 0x00000600, 0x00000000, 0x00402640, 0x84300002, 0x08254800, + 0x04000040, 0x00400680, 0x00288020, 0x08001c40, 0x00800000, 0x00101000, 0x10822028, 0x08000896, 0x00002002, 0x20004118, + 0x00081200, 0x00028800, 0x0004050c, 0x40005009, 0x80000200, 0x00028042, 0x00004094, 0x20002121, 0x00808408, 0x42000a80, + 0x40000440, 0x10400000, 0x04080082, 0x00000810, 0x08020020, 0x00604040, 0x00000000, 0x18080021, 0x0010e818, 0x00012400, + 0x2004001a, 0x00089014, 0x40004080, 0x00040800, 0x0020002d, 0x00018000, 0xc0000006, 0x00020648, 0x22010000, 0x00900a22, + 0x10000085, 0x00400040, 0x04040208, 0x10809410, 0x8002c000, 0x00e0a400, 0x00800046, 0x38140920, 0x00020002, 0x00e80040, + 0x80000210, 0x00003100, 0x10104024, 0x00080080, 0x40100008, 0x2082a502, 0x00040024, 0x42000040, 0x04106080, 0x00a20000, + 0x80008002, 0x00000110, 0x02000600, 0x10180004, 0x00824882, 0x08400400, 0x04040000, 0x90006040, 0x00200800, 0x00001214, + 0x0e10a020, 0x20000010, 0x08100082, 0x500c0201, 0x20002020, 0x00480000, 0x00800c48, 0x00024004, 0x40000800, 0x800c0020, + 0x00908403, 0x40030080, 0xc4201000, 0x00400a11, 0x02020080, 0x0085e000, 0x04000000, 0x28200000, 0x10c4044e, 0x08002000, + 0x08400000, 0x10000004, 0x08202008, 0x80000880, 0x000a4132, 0x04001000, 0x10008000, 0x00100415, 0x4000c000, 0x00082288, + 0x24020802, 0xc0040450, 0x000040b4, 0x08200001, 0x20000c02, 0x80028000, 0x10140318, 0x04000001, 0x00002080, 0x22800a08, + 0x04000000, 0x00200050, 0x028e0424, 0x00018003, 0x00210008, 0x08c06c20, 0x10104085, 0x00000440, 0x82450210, 0x208a0000, + 0x00200000, 0x0400240a, 0xc0000004, 0x10001000, 0x0804c060, 0x00022810, 0x80008002, 0x10000001, 0x00000685, 0x00800000, + 0xc0031008, 0x64600002, 0x00021050, 0x00046e85, 0x08100820, 0x80000040, 0x08200414, 0x4a000000, 0x01228020, 0x10000808, + 0x90802000, 0x00040110, 0x00181283, 0xa208200c, 0x08004000, 0x50208402, 0x00504040, 0x40240000, 0x06020a05, 0x08008020, + 0x00480080, 0x80922012, 0x00200581, 0x00000200, 0x56802800, 0x64000048, 0x00000420, 0x0808c110, 0x00240020, 0x00080802, + 0x98028004, 0x10002001, 0x44100018, 0x20a00084, 0x22004008, 0x88012000, 0x001c8200, 0x4c410002, 0x02024404, 0x00340871, + 0x80000000, 0x00000000, 0x000a9012, 0x10b10400, 0x00000201, 0x24400888, 0x04002440, 0x00444000, 0x48081010, 0x082b8004, + 0x04000002, 0x50400014, 0x00020440, 0x00100000, 0x0a248828, 0x80182820, 0x00001000, 0x5c000217, 0x00041010, 0x20004108, + 0x040aa440, 0x88002008, 0x00004006, 0x40a40a01, 0x800a4086, 0x02000000, 0x50008510, 0x00008003, 0x06c00000, 0x28340b82, + 0x000002c0, 0x04040420, 0x50082014, 0x08000440, 0x00000020, 0xa0228800, 0x00082828, 0x10000400, 0x08910015, 0x40047010, + 0x20080040, 0x84408c08, 0x0004200a, 0x40020004, 0x0a204001, 0x00004004, 0x00038000, 0xb4001c32, 0x00008002, 0x00410080, + 0x28b00209, 0x00000ac1, 0x04000400, 0xd24c1014, 0x00100c60, 0x00400000, 0xe4022000, 0x047000c2, 0x10000004, 0x08084100, + 0x08208001, 0x10000418, 0x44120020, 0x30100400, 0x000c4085, 0x00800100, 0xa00a081a, 0x00040012, 0x4c200040, 0x40865004, + 0x02002020, 0x90080400, 0x80828004, 0x06401452, 0x28344124, 0x06888200, 0x00402420, 0x10060100, 0x04400100, 0x00804200, + 0xa8220969, 0x08302000, 0x00082008, 0x12050200, 0x50180010, 0x20000000, 0x84021000, 0x20080000, 0x000410e6, 0x4a610800, + 0x40042000, 0x00021aa2, 0xb4040c00, 0x80020040, 0x00c05040, 0x2a311804, 0x02c10201, 0x00000420, 0x14040000, 0x04508004, + 0x00000a20, 0x02500240, 0x00008100, 0x48004420, 0x02201044, 0x00800aaa, 0x80080000, 0x00024100, 0x00040004, 0x0a000240, + 0x00002600, 0x14400000, 0x00000120, 0x02801208, 0x01000400, 0x20000008, 0x00044041, 0x00002000, 0x00420388, 0x00000808, + 0x20005000, 0x00180081, 0x10008008, 0x00000613, 0x40000000, 0x00001400, 0x00014000, 0x20080070, 0x40000000, 0x80000060, + 0x000400a5, 0x80308100, 0x54000000, 0x4002a500, 0x12010211, 0x04100140, 0x1002c01c, 0x04484021, 0x40000008, 0x40402022, + 0x80000010, 0x0020e080, 0x00080008, 0x00000088, 0x80682200, 0x02000400, 0x18808000, 0x00040000, 0x00000010, 0x01840200, + 0x04021000, 0x00002000, 0x00408040, 0x01812000, 0x01400000, 0x002c0001, 0x00108000, 0x00080000, 0x84012000, 0x60180101, + 0x08000800, 0x80000282, 0x04000020, 0x40900000, 0x14000000, 0x00000014, 0x0a040000, 0x00801002, 0x80092004, 0x10000010, + 0x44160080, 0x08408006, 0x14800800, 0x00048100, 0x0a480204, 0x00004000, 0x03000211, 0x0089000a, 0x00104000, 0x00400008, + 0x20200000, 0x08000000, 0x00000000, 0x10280010, 0x04008400, 0x01000000, 0x50000100, 0x86020040, 0x0a801002, 0x00010042, + 0x00202080, 0x00000000, 0x84026002, 0x00400080, 0x20000800, 0x18200005, 0x20010410, 0xc8202008, 0x00001000, 0x40000034, + 0x00000880, 0xa0a20020, 0x40020000, 0x10500004, 0x80204484, 0x10000010, 0x40210200, 0x00080004, 0x20010012, 0x81229000, + 0x00810020, 0x40604020, 0x82000000, 0x20160000, 0x04604000, 0x00000004, 0x0020c408, 0x00000010, 0x00320000, 0x00005000, + 0x00904040, 0x00000900, 0x2820a880, 0x00000020, 0x008c0001, 0x0004004c, 0x00810001, 0x88000820, 0xa0000000, 0x00000008, + 0x02110080, 0x00841020, 0x00000040, 0x20401010, 0x00062000, 0x00000400, 0x00008008, 0x00020014, 0x80000208, 0x00100020, + 0x00010040, 0x00008882, 0x00008000, 0x02000001, 0x00080400, 0x00000000, 0x00000201, 0x80008802, 0x10004001, 0x04000028, + 0x00010180, 0x00020800, 0x00000100, 0x2000a0c0, 0x00200204, 0x00800008, 0x0000a004, 0x10100000, 0x40000401, 0x10028054, + 0x00400a20, 0x00010180, 0x00000200, 0x00020800, 0x00100184, 0x00002211, 0x00000008, 0x02400000, 0x4020004c, 0x00018000, + 0x00000010, 0x000002a0, 0x00000402, 0x00002010, 0x00008000, 0x00650500, 0x02000084, 0x40008008, 0x00100000, 0x00020001, + 0x40000a00, 0x82080240, 0x20001440, 0x00041000, 0x40200000, 0x20800220, 0x00020100, 0x00080820, 0xd0404382, 0x00004100, + 0xa0142008, 0x0401a01a, 0x00400140, 0x08823240, 0x00000800, 0x04000001, 0x8800e068, 0x40300008, 0x000a1400, 0x00004111, + 0x00080203, 0x40000400, 0x0c000048, 0x04090182, 0x82001000, 0x40040080, 0x05882820, 0x00020001, 0x00008422, 0x00440008, + 0x40010404, 0xa02c0021, 0x00020002, 0x04040200, 0x00084502, 0x00805180, 0x68200000, 0x80018000, 0x00000044, 0x10000142, + 0x0400c001, 0x00000013, 0x20040020, 0x00400888, 0x70808006, 0x00200000, 0x00002080, 0x54004002, 0x12400000, 0x04400508, + 0x80080200, 0x00008084, 0x0c000000, 0x20b00400, 0x05034000, 0x18a00100, 0x02028042, 0x08100800, 0x60440080, 0x10050400, + 0x02000000, 0x20800000, 0x00440008, 0x40802000, 0x91140000, 0x00000004, 0x00000000, 0x80800010, 0x00004000, 0x00040000, + 0x00a00048, 0x08208201, 0x00580002, 0x882000c0, 0x40000400, 0x05000040, 0x08111010, 0x18080820, 0x00020000, 0x80001082, + 0x20101000, 0x02800010, 0x00242000, 0x08100000, 0x00082000, 0x80000004, 0x00030000, 0x00080000, 0x80000000, 0x00290006, + 0x00000000, 0x00800000, 0x80029000, 0x01000000, 0x00800040, 0x00806010, 0x00001008, 0x40480000, 0x04440040, 0x02002000, + 0x0000800c, 0x08200000, 0x00020582, 0x00084804, 0x12101400, 0x00000000, 0x00088002, 0x20280828, 0x00000180, 0x00000000, + 0x00140000, 0x00000000, 0x00001400, 0x0000680a, 0x00080000, 0x00000084, 0x22001080, 0x00020000, 0x00004014, 0x00400400, + 0x00800000, 0x00000028, 0x08200840, 0x02000002, 0x00108280, 0x10100011, 0x00000022, 0x40080000, 0x20000200, 0x00001440, + 0x00002880, 0x10004044, 0x00080400, 0x00101000, 0x80060010, 0x6c404008, 0x10000000, 0x80122008, 0x00000206, 0x20600000, + 0x02880080, 0x00100000, 0x00048000, 0x64000020, 0x00080400, 0x90024002, 0x00200920, 0x000090c4, 0x408c0000, 0x00000000, + 0x08020000, 0x22402000, 0x20800400, 0x04205000, 0x02108080, 0x0c403400, 0x00000000, 0xd0140000, 0x88000014, 0x00020000, + 0x20204640, 0x00080080, 0x00100008, 0x00800002, 0x06000220, 0x00000000, 0xa0280000, 0x00600012, 0x08040080, 0x02021040, + 0x00001018, 0x90022000, 0x04d04002, 0x00080040, 0x00010004, 0x0a060000, 0x00440002, 0x0000c000, 0x00002200, 0x00000000, + 0xc0008000, 0x02004000, 0x00100000, 0x00000828, 0x28080484, 0x02000000, 0x00020000, 0x04403400, 0x40800808, 0x00008820, + 0x04282004, 0x08100014, 0x10000040, 0x0000441a, 0x0080a000, 0x00000082, 0x40060200, 0x00500101, 0x00000200, 0x00001484, + 0x40000040, 0x20008000, 0x00000c08, 0x80820200, 0x20104000, 0x00080822, 0x00800000, 0x00001400, 0x00140209, 0x04082000, + 0x00000800, 0x0840008e, 0x10010000, 0x00104444, 0x0a080000, 0x10020000, 0x00400808, 0x00008083, 0x40a00005, 0x00000280, + 0x00000408, 0x40002000, 0x00101050, 0x00000c80, 0x00024821, 0x04400440, 0x40a40000, 0x00084020, 0x00201000, 0x1c100802, + 0x00100000, 0x20063100, 0x02800000, 0x20026080, 0x80000008, 0x48088000, 0x40044000, 0x00100004, 0x02400200, 0x80000000, + 0x00080900, 0x0c828502, 0x008002a0, 0x400c0008, 0x0a520000, 0x00402400, 0x00000040, 0x04211084, 0x00004020, 0x01020800, + 0x1c700008, 0x00000000, 0x00008000, 0x20183007, 0x20024000, 0x80002408, 0x001c0000, 0x0004c020, 0x50800000, 0x00000284, + 0x80008000, 0x04000002, 0x02220800, 0x00002000, 0x02200040, 0x00c802a1, 0x04401440, 0x10000008, 0x08000004, 0x00810010, + 0x00008040, 0x04080420, 0x00300000, 0x08040000, 0x02883860, 0x00005000, 0x02100002, 0x0000800c, 0x0000a000, 0x000c0000, + 0x24400588, 0x00000002, 0x00004000, 0x48040024, 0x00802002, 0x82020040, 0x00008280, 0x00000280, 0x02000d00, 0x80880008, + 0x04000000, 0x00001460, 0x00400000, 0x38000822, 0x00200000, 0x00000000, 0x0010200c, 0x00020000, 0x82201000, 0x00000008, + 0x00080202, 0x20406040, 0x40000004, 0x00240000, 0x0800c481, 0x00000402, 0x80028200, 0x04000800, 0x00000220, 0x00800001, + 0x120000c0, 0x00000000, 0x00680c00, 0x24022044, 0x0020d002, 0x08140000, 0x24001200, 0x08202080, 0x00820100, 0x00004088, + 0x60088000, 0x04004002, 0x12140080, 0x00000100, 0x24280004, 0x00820400, 0x02000010, 0x48540002, 0x80008900, 0x00100080, + 0x00820000, 0x80000600, 0x02000000, 0x00440008, 0x44800050, 0x04200800, 0x08002020, 0x00501003, 0x00200182, 0x08000000, + 0x20004008, 0x0008e000, 0x00100000, 0x50000001, 0x00048820, 0x00080800, 0x20000044, 0xc0000000, 0x00040010, 0x00020280, + 0x02000001, 0x00420010, 0x90a01040, 0x04800000, 0x00000800, 0x02000000, 0x00200010, 0x00082000, 0x0c405020, 0x00300000, + 0x00040000, 0x00224800, 0xa0008000, 0x00100002, 0x00000004, 0x04401600, 0x00c00010, 0x40044900, 0x02002020, 0x00000400, + 0x0040182c, 0x82200004, 0x10004800, 0x08801002, 0x0000800a, 0x00400100, 0x00001208, 0x00200000, 0x00004101, 0x1008848a, + 0x00002004, 0x00000400, 0x20804200, 0xa0070800, 0x00000000, 0x00100488, 0x00800081, 0x00000000, 0x40409010, 0x06200400, + 0x00000208, 0x88060024, 0x00200000, 0x00000040, 0x28180080, 0x02500858, 0x00000402, 0x04006201, 0x00080200, 0x00001080, + 0x0004e002, 0x08204000, 0x40020402, 0x000500e0, 0x80002001, 0x04000000, 0x08600004, 0x43846000, 0x00009002, 0x30280200, + 0x00020210, 0x82001000, 0x00b00000, 0x00400184, 0x24080008, 0x48042000, 0x40040080, 0x08200404, 0x00024010, 0x000a0000, + 0x20001000, 0x1088a006, 0x00000188, 0x22000000, 0x84d22000, 0x00400000, 0x040a0000, 0x88008400, 0x00200000, 0x08804800, + 0x30508040, 0x02100080, 0x00001013, 0x84880400, 0x00000000, 0x04200000, 0x200c000a, 0x10120800, 0x08040040, 0x00200020, + 0x00801000, 0x80020000, 0x260c0006, 0x02100400, 0x00080200, 0x40410080, 0x4000040c, 0x00402040, 0x28200000, 0x00000000, + 0x00400000, 0x00100c00, 0x80021820, 0x00208006, 0x02080048, 0x00000100, 0x001042a1, 0x08000004, 0x04800002, 0x00002408, + 0x20181000, 0x08020200, 0x00040828, 0x4000000c, 0x10200100, 0x00028000, 0x40040442, 0x22080081, 0x00803000, 0x00004202, + 0x04040000, 0x00001804, 0x00400400, 0x08004000, 0x00202402, 0x00108880, 0x00000000, 0x02000209, 0x80920800, 0x00400004, + 0x20080400, 0x0004400a, 0x08018000, 0x00020aa8, 0x80040004, 0x80020000, 0x00001017, 0x40000000, 0x20000440, 0x18110080, + 0x02220823, 0x40080000, 0x00004005, 0x80408610, 0x88020000, 0x00485404, 0x0c040000, 0x48000000, 0x80180a30, 0x04220008, + 0x20000100, 0x02900083, 0x14000004, 0x20000228, 0x044c4040, 0xc8222030, 0x00040000, 0x08280d04, 0x52000021, 0x00008002, + 0xd0120000, 0x00000000, 0x02001000, 0x200a2210, 0x00800c80, 0x00000000, 0x44004500, 0x08601012, 0x08000180, 0x80000803, + 0x00340000, 0x00000008, 0x028a8401, 0x10340000, 0x040000a0, 0x00400208, 0xe80a0410, 0x00000004, 0x0828086a, 0x30841080, + 0x80420202, 0x10103040, 0x02000404, 0x00804000, 0x20082011, 0x02000080, 0x00200000, 0x4c004604, 0x00410000, 0x00100000, + 0x448c020a, 0x20420004, 0x21000180, 0x8822c402, 0x00000820, 0x00100500, 0x1a080824, 0x08602048, 0x00062880, 0x20800602, + 0x00080008, 0x00000004, 0x44642288, 0x00909001, 0x9a080400, 0x0010101e, 0x00028000, 0x20000a00, 0x048a808b, 0x4a200000, + 0x00408400, 0x40040284, 0x04020000, 0x0009080a, 0x00224400, 0x08800040, 0xa6540000, 0x18810884, 0x00400000, 0x88080008, + 0x20000001, 0x00000200, 0x08041041, 0x0428080c, 0x0013000a, 0x10002000, 0x800a1424, 0x2010008a, 0x28000881, 0x428a0002, + 0x00404000, 0x04600410, 0x00003081, 0x02100080, 0x00084800, 0xc2800600, 0x10009244, 0x20a48000, 0x84c04c80, 0x08500020, + 0x52040000, 0x08a20828, 0x00185084, 0x04082000, 0x10500908, 0x20000000, 0x48804042, 0x2208200c, 0xa0060081, 0x00020802, + 0x50440000, 0x80008544, 0x00a40200, 0xaa068082, 0x04181804, 0x04000040, 0x03c40600, 0x50000200, 0x00b03820, 0x8d490400, + 0x20000402, 0x10000000, 0x0a360000, 0x04005000, 0x20020408, 0x94780000, 0x000020a2, 0x10808004, 0x280c0000, 0x02004001, + 0x00009810, 0x00440002, 0x80020040, 0x02100601, 0xa0020000, 0x0c8008a4, 0x80100004, 0x42c404c1, 0x14201001, 0x08200000, + 0x00800044, 0x08000000, 0x9034402a, 0x08080400, 0x00000800, 0x10002080, 0x00309a00, 0x40040804, 0x20004108, 0x10080000, + 0x10422400, 0xc0008100, 0x20086006, 0x00040200, 0x80008000, 0x64220082, 0x40000040, 0x00800400, 0x80409181, 0x222a0220, + 0x04400804, 0x00802240, 0x00000402, 0x88000020, 0x00200800, 0x00189080, 0x10801000, 0x00302048, 0x40040280, 0x24006002, + 0x12188400, 0x0010080c, 0xc0000000, 0x02244048, 0x00480205, 0x94020080, 0x00041006, 0x00848000, 0x40000080, 0x82d20401, + 0x00006244, 0x004a0842, 0x02100480, 0x0c800030, 0x08203800, 0x0c800040, 0x00704000, 0x08800000, 0x102c0000, 0x00403828, + 0x02009200, 0x10260020, 0x64100424, 0xa0404080, 0x10028008, 0x04082032, 0x08040000, 0x6008000c, 0x00006180, 0x00808200, + 0x82020402, 0x00180044, 0x444000a8, 0x80004100, 0x02808202, 0x082c0000, 0x24c20440, 0x00100a00, 0x1a200001, 0x20000c03, + 0x00802020, 0x001880c1, 0x00201008, 0x96040800, 0x00404000, 0x10082004, 0x6002000a, 0x00044a10, 0xd0008000, 0x080020c4, + 0x02c20001, 0x8004a002, 0x00004000, 0x04000081, 0x82920400, 0x00000240, 0x0800e000, 0x06e80c21, 0x02000040, 0x00041812, + 0x04108200, 0x08440422, 0x08000120, 0x00280802, 0x20000080, 0x00100440, 0x10020000, 0x8800304c, 0x64802008, 0x00400800, + 0x001a0000, 0x40004800, 0x20141004, 0x80088080, 0x1022800a, 0xc0000000, 0x06c42100, 0x22000081, 0x00020000, 0x80800a4c, + 0x00000500, 0x8e500044, 0x01208000, 0x28200820, 0x00040000, 0x00009000, 0x06082000, 0x00501000, 0x58840008, 0x00000001, + 0x08186028, 0xa0028080, 0x48244004, 0x04000400, 0x0000004b, 0x00420002, 0x82008000, 0x04800008, 0x20800204, 0x02020001, + 0x00202480, 0x00040000, 0x06400404, 0x80130840, 0x800000a1, 0xa0800248, 0x04002080, 0x88200810, 0x00000020, 0x40100202, + 0x04001000, 0x00100000, 0x404c0200, 0x20200400, 0x00182080, 0x00220008, 0x00000004, 0x40480800, 0x80044000, 0x00120000, + 0x00048022, 0x82200008, 0x02800300, 0x000a0408, 0x40000080, 0x00400000, 0x00040100, 0x04202cc0, 0x09200000, 0x00001800, + 0x80490222, 0x00001000, 0x00120001, 0x20040220, 0x00082008, 0x00600000, 0x20020000, 0x40000000, 0x00040804, 0xa0805010, + 0x80080050, 0x00020202, 0x40008000, 0x00840000, 0x800a0280, 0x46042001, 0x04020440, 0x00400000, 0x00008200, 0x00200800, + 0x04442600, 0x00004048, 0x00000000, 0x09000000, 0x00a03c20, 0x10820008, 0x88009020, 0x20100000, 0x00000004, 0x00100108, + 0x20087000, 0x00040002, 0x00204000, 0x6000878d, 0x80000020, 0x00800000, 0x0442a806, 0x00000001, 0x00020380, 0x2a823460, + 0x00000040, 0x04000408, 0x00c84880, 0x80000008, 0x08060024, 0x02208840, 0x10000000, 0x08880800, 0x00307000, 0x00000000, + 0x20018000, 0x0018200c, 0x00040043, 0x40ca4008, 0x04000604, 0x00108000, 0x00000000, 0x88020422, 0x00001081, 0x82020010, + 0x80c0c240, 0x40400820, 0x04080240, 0x00002410, 0x80000000, 0x00804000, 0x00400200, 0x20000000, 0x40321030, 0x08000842, + 0x00108000, 0x18002140, 0x00041624, 0x00080000, 0xe2000008, 0x00302080, 0x4000c010, 0x008c0044, 0x00200022, 0x0000a080, + 0xc2060000, 0x04040802, 0x00101a09, 0x02c24104, 0x00242080, 0x0c008040, 0x20400002, 0x02100600, 0x00000000, 0x00200020, + 0x0800c804, 0x00120480, 0x18000000, 0x20001220, 0x20050000, 0x00082049, 0x40100010, 0x80404000, 0x00080000, 0x4084001c, + 0x00020000, 0x84008802, 0x00200610, 0x02000080, 0x80822000, 0x10600201, 0x00000000, 0x00840400, 0x54504044, 0x08000821, + 0x00020400, 0x008008e0, 0x02044008, 0x088028a4, 0xc0208002, 0x00020000, 0x00001004, 0x4a900181, 0x20000a0a, 0x000ca000, + 0x04400820, 0x40200000, 0x00000200, 0x3a1e4c65, 0x80400000, 0x00020008, 0x10188082, 0x02004401, 0x00000180, 0x24801a00, + 0x04620402, 0x08040148, 0x40022004, 0x0802c921, 0x00300008, 0x80400000, 0x00000004, 0x00000000, 0x08d01a02, 0x20082401, + 0x000000a2, 0x80600008, 0x40020044, 0x00000081, 0x18246020, 0x02008800, 0xa002000a, 0x10102410, 0x42041205, 0x00840800, + 0x20080080, 0x00402042, 0x80000400, 0x0c804004, 0x48210080, 0x10440042, 0x0800a408, 0x01200900, 0x08084000, 0x0040a02c, + 0x84121000, 0x40000080, 0x22c00201, 0x80002000, 0x08080004, 0x2044800a, 0x04000004, 0x00024050, 0x48240ea1, 0x00000000, + 0x84428002, 0x02801000, 0x50000181, 0x02a00600, 0x40180000, 0xa4102808, 0x10000400, 0x48410044, 0x082c0000, 0x20804800, + 0x84020020, 0x00149000, 0x0000000a, 0x00a00605, 0x02080088, 0x00000000, 0x30002000, 0x00400002, 0x42044444, 0x84220820, + 0x28420003, 0x00000080, 0x94908400, 0x00007000, 0x08a00281, 0x02020804, 0x20080400, 0x00400040, 0x44041012, 0x8a180000, + 0x08000400, 0x14508040, 0x48040440, 0x00220020, 0x8000a80a, 0x00080820, 0x20100040, 0x06001601, 0x408c1014, 0x20002028, + 0x84408482, 0x00042008, 0x40020000, 0x02a04204, 0x08024084, 0x00008000, 0x84500c22, 0x00808083, 0x00000100, 0x2a280300, + 0x00000a80, 0x04400040, 0x10040404, 0x80020c60, 0x0a100000, 0x40200002, 0x00000820, 0x20181008, 0x06000005, 0x00841010, + 0x20082008, 0x88420482, 0x00042008, 0x00004000, 0x4a880805, 0x80004004, 0x00288082, 0x00521010, 0x10808082, 0x06000400, + 0x08280a01, 0x00000281, 0x04000400, 0x40545254, 0x00000440, 0x00000000, 0x34d00002, 0x04400410, 0x00004804, 0x88224100, + 0x08200240, 0x20180000, 0x16c00000, 0x70140004, 0x00084205, 0x84400800, 0x200a020a, 0x00001002, 0x4aa40090, 0x40061000, + 0x80080029, 0x14502000, 0x80020000, 0x02000004, 0x08a01002, 0x02888208, 0x00000400, 0x14500000, 0x04408300, 0x00201000, + 0xc8000009, 0x08280c44, 0x20002020, 0x12128204, 0x101c0410, 0x20004000, 0x88e00200, 0x600a2080, 0x00000012, 0x0a241400, + 0x40842180, 0x800002a0, 0x10520020, 0x80022008, 0x04004140, 0x2aa81810, 0x02810000, 0x0400cc0a, 0x10500000, 0x04400004, + 0x00022a40, 0x00000600, 0x20000000, 0x40208080, 0x40000420, 0x00800880, 0x0000a001, 0x08040120, 0x00080000, 0x20040400, + 0x80402180, 0x18002020, 0x104c0404, 0x00100100, 0x30082710, 0x00010004, 0x80000484, 0x0000c020, 0x08803610, 0x10020830, + 0x08802080, 0x00221120, 0x00002090, 0x84800029, 0x01006040, 0x24808100, 0x00204000, 0x00000440, 0x80010002, 0x00040020, + 0x401001a6, 0x80020809, 0x00181018, 0x00128c00, 0x0200004c, 0x30000000, 0x00042004, 0x00024004, 0x70001000, 0x00800682, + 0x00028002, 0x90010104, 0x80600220, 0x30000008, 0x48100012, 0x800c0000, 0x0a103088, 0x80040000, 0x18880142, 0x04002000, + 0x00041034, 0x3000000a, 0x0010c002, 0x83110040, 0x00a00000, 0x00100011, 0x00804040, 0x20024000, 0x07400048, 0x00a00000, + 0x0b000200, 0x40840800, 0x80000002, 0x05020000, 0x80644140, 0x40004001, 0x08040004, 0x01100002, 0x00490404, 0x521c0010, + 0x01010280, 0x48401002, 0x00880081, 0x48a04108, 0x14020040, 0x03440000, 0x10000000, 0x08000040, 0x00004100, 0x04480000, + 0x00200211, 0x00000801, 0x04090008, 0x01260c80, 0x00080010, 0x41100000, 0x002c2040, 0x02000000, 0x00820041, 0x04000000, + 0x00a00000, 0x00480208, 0x00600440, 0x0412c020, 0x03402000, 0xa0000021, 0x08010000, 0x00220002, 0x10000100, 0x40004088, + 0x08000000, 0x00230680, 0x00000044, 0x80000001, 0x40140084, 0x00000891, 0x00200002, 0x00100400, 0x30000400, 0x40000000, + 0x21010002, 0x02080000, 0x10400400, 0x20020000, 0x00000400, 0x08004008, 0x80022001, 0x30000020, 0x00400018, 0x00000800, + 0x00000041, 0x00008000, 0x24a10040, 0x8104a000, 0x10800085, 0xc0010000, 0x00004004, 0xa0800000, 0x00400002, 0x04110010, + 0x08000010, 0x00802000, 0x20000400, 0x00090000, 0x80000080, 0x20084000, 0x04002040, 0x00001000, 0x00500804, 0x60480000, + 0x0020c000, 0x00020090, 0x00101000, 0x40002011, 0x00000444, 0x01098002, 0x00002800, 0x04004200, 0x00850100, 0x00001100, + 0x02004060, 0x80001000, 0x10100000, 0x20002000, 0x000010c0, 0x40000024, 0x00002800, 0x00080070, 0x80140008, 0x001043a6, + 0x00201800, 0x00000500, 0x00008002, 0x002a4402, 0x40008280, 0x10000402, 0x00202008, 0x00820001, 0x00084420, 0x10000100, + 0x04010c08, 0x00020050, 0x08800880, 0x00108400, 0x00006000, 0x000400c2, 0xa8220080, 0x80040208, 0x00003020, 0x00000004, + 0x40002020, 0x00008080, 0x22940010, 0x00000010, 0x1000000c, 0x89801402, 0x02012000, 0x2c008428, 0x00000000, 0x10401320, + 0x38660011, 0x00000028, 0x00220002, 0x40001400, 0x02000008, 0x00002208, 0x0446c820, 0x80080008, 0x01008102, 0x08824801, + 0x10200091, 0x00000008, 0x10602000, 0x050090c1, 0x60080010, 0x06040004, 0x01020800, 0x12800200, 0x00000060, 0x00000014, + 0x00004000, 0x010808b0, 0x8000000c, 0x00040800, 0x00121012, 0x20000040, 0x00009001, 0x6008200a, 0x04040004, 0x440a0420, + 0x00018025, 0x00004001, 0x50080800, 0x00500046, 0x00000053, 0x00200000, 0x80400008, 0x80029002, 0x40080100, 0x080422c0, + 0x00000200, 0x00080000, 0x00420040, 0x80040440, 0x00800000, 0x00100880, 0xa8080020, 0x00800000, 0x81100110, 0x01100010, + 0x10010200, 0x28200084, 0x40020008, 0x00000000, 0x44058004, 0x80000000, 0x00084000, 0xa0049000, 0x00018002, 0x00400000, + 0x40820040, 0x00000000, 0x00200000, 0x0c400000, 0x00500440, 0x44050080, 0x38110000, 0x00008880, 0x84000000, 0x40000000, + 0x00041250, 0x00010020, 0x80200000, 0x80400000, 0x00000000, 0x00000000, 0x10916018, 0x08020000, 0x24080000, 0x04810000, + 0x00100020, 0x00000010, 0x80000002, 0x01001000, 0x04002128, 0x02800000, 0x00068200, 0x60201004, 0x00004480, 0x00000000, + 0x8000a052, 0x08204900, 0x04000000, 0x300a0280, 0x10100002, 0x00000000, 0x04080040, 0x00080800, 0x00000100, 0x000002a8, + 0x00040404, 0x20000040, 0x00800010, 0x80020000, 0x40180800, 0x00404008, 0x22006284, 0x00000010, 0x00001020, 0x04040002, + 0x00430000, 0x80000010, 0x00004420, 0x00008044, 0x00080200, 0x10000090, 0x08010002, 0x00008404, 0x00080008, 0x00000240, + 0x0810a880, 0x40040400, 0x00004000, 0x00001041, 0x20028002, 0x00080000, 0x0480b000, 0x08200000, 0x00040004, 0x2050c000, + 0x00081480, 0x02002100, 0x90500042, 0x40400008, 0x04080002, 0xa0060200, 0x0a000a40, 0x00040400, 0x40000000, 0x00000030, + 0x00800008, 0x84022000, 0x10000040, 0x00000400, 0x00200000, 0x00508010, 0x00080008, 0xd4000000, 0x88201000, 0x00044000, + 0x00000044, 0x00018600, 0x100a0400, 0x06104000, 0x00c00000, 0x00048440, 0xe0080820, 0x08200000, 0x00000020, 0x22871280, + 0x10101000, 0x00022040, 0x84444000, 0x00082410, 0x00010000, 0x08204200, 0x4000000e, 0x00400000, 0x10100000, 0x80200210, + 0x60205010, 0x80002000, 0x00000180, 0x00900008, 0x00080060, 0x00900000, 0x80004400, 0x00001010, 0x04282020, 0x40000000, + 0x00200088, 0x80020004, 0x00301000, 0x000cc822, 0x10000000, 0x00008012, 0x204c0000, 0x00100085, 0x08004300, 0x04000c40, + 0x40006400, 0x00188040, 0x00000080, 0x11000021, 0x00008100, 0x80000816, 0x12980200, 0x00020004, 0x20610018, 0x08400008, + 0x00080000, 0x00002000, 0x08034200, 0x80040084, 0x10008042, 0x00408008, 0x10000008, 0x00020002, 0x00100200, 0x40000000, + 0x000100c0, 0x00000000, 0x88249450, 0x00080804, 0x10000020, 0x04000040, 0x08040000, 0x01200020, 0x0a080000, 0x00002010, + 0x00000000, 0x00101012, 0x20000004, 0x20000000, 0x00000208, 0x000c2800, 0x00044000, 0x50000146, 0x80000090, 0x08100000, + 0x84420000, 0x12008162, 0x00000200, 0x00000080, 0x8a840010, 0x00000008, 0x04480404, 0x00244060, 0x80030000, 0x0a20a800, + 0x10100028, 0x10000000, 0x00000010, 0x009c0040, 0x00002000, 0x00204000, 0x00080008, 0x00000000, 0x42154000, 0x00020014, + 0x88020000, 0x20480002, 0x00108000, 0x02810000, 0x08280084, 0x04000600, 0x00101400, 0x00020002, 0x00444040, 0x00290000, + 0x00004040, 0x44680400, 0x00000020, 0x00201000, 0x0c000a00, 0x00003010, 0x00020004, 0xa410420a, 0x40000000, 0x00080108, + 0x28022002, 0x40008080, 0x08004400, 0x00040024, 0x00008300, 0x10000000, 0x80a20002, 0x02080500, 0x00800010, 0x002002c0, + 0x04420840, 0x00002420, 0x10000080, 0x08200800, 0x0000001c, 0x0000c020, 0x00102000, 0x00000410, 0x10820000, 0x00084200, + 0x0004200c, 0x40018040, 0x40000006, 0x08400200, 0x80054000, 0x00000000, 0x80028402, 0x000008a0, 0x000000c0, 0x00010200, + 0x1ac02010, 0x00000044, 0x00400800, 0x10000430, 0x00024008, 0x00482000, 0x04000080, 0x08182010, 0x00000000, 0x40a01000, + 0x60108500, 0x0000000c, 0x00c00000, 0x000c0200, 0x28004000, 0x00020402, 0x80000040, 0x00040800, 0x40000080, 0x00020408, + 0x00000200, 0x82800000, 0x46c00000, 0x00101800, 0x00002060, 0x00608000, 0x00008010, 0x1c080002, 0x08008102, 0x00104000, + 0x022c0008, 0x40000484, 0x00112000, 0x90004020, 0x00000040, 0x800c0a00, 0x00020002, 0x00000400, 0x00008000, 0x40040080, + 0x02800000, 0x08200250, 0x80030000, 0x00442008, 0x00100000, 0x02818000, 0x00600000, 0x100a0020, 0x0c000010, 0x00108000, + 0x80080000, 0x40008820, 0x80048000, 0x00000000, 0x241040a0, 0x00000000, 0x000a1282, 0x04202400, 0x04002040, 0x00000000, + 0x00060000, 0x00304010, 0x00000000, 0x80409c02, 0x04400010, 0x20000402, 0x00002304, 0x00240080, 0x10000001, 0x00000240, + 0x00080400, 0x00042044, 0x30110020, 0x0080c800, 0x00000000, 0x00002000, 0x42020000, 0x00800040, 0x00001018, 0x08400080, + 0x00240020, 0x00004400, 0x00801804, 0x00004060, 0x08009202, 0x0010000a, 0x00200000, 0x0001e00c, 0x00000010, 0x00000200, + 0x104064c6, 0x48080000, 0x00200000, 0x10100cc0, 0x00800001, 0x44040000, 0x02c00000, 0x01000000, 0x80008024, 0x08320040, + 0x10400002, 0x02100000, 0x20081020, 0x00080480, 0x20400240, 0x00243000, 0x04040000, 0x08004000, 0xd0102800, 0x00000000, + 0x80000000, 0x168a0002, 0x00000308, 0x40180080, 0x00060056, 0x00000004, 0x84000000, 0x18622c40, 0x00200000, 0x40004810, + 0x0c5002c0, 0x00000080, 0x02001014, 0x10380002, 0x00000002, 0x00400000, 0x280c0010, 0x04140000, 0x08200204, 0x901b6000, + 0x00001010, 0x10088002, 0xc2020000, 0x00080000, 0x00000088, 0x84070200, 0x00000040, 0x40400400, 0x9014c000, 0x00010004, + 0x00004000, 0x04001408, 0x00000800, 0x08208020, 0x00020008, 0x02081000, 0x10000313, 0x00100004, 0x2000400a, 0x00840450, + 0x00080000, 0x08008000, 0x40044120, 0x00082088, 0x00000010, 0x00020200, 0x80108c0a, 0x10000001, 0x00008040, 0x80004002, + 0x00400800, 0x0000600c, 0x06000450, 0x08080800, 0x40202040, 0x10808200, 0x10140002, 0x80000888, 0x00000c10, 0x04000200, + 0x20080444, 0x0040401a, 0x08000000, 0x0007882c, 0x20003008, 0x90200080, 0x00121014, 0x0000860a, 0x00410040, 0x00080288, + 0x40000024, 0x00000000, 0x00042000, 0x00408040, 0x00200008, 0x40442404, 0x00200000, 0x001000a0, 0x80228802, 0x08005040, + 0x00000110, 0x02981281, 0x60004040, 0x00040000, 0x84480418, 0x30001800, 0x00004102, 0x08020840, 0x00840091, 0x04000000, + 0x4010d012, 0x90400044, 0x00200000, 0x00002008, 0x82000800, 0x04100000, 0x484c0444, 0x00005012, 0x00000000, 0x08008802, + 0x00a80000, 0x00000040, 0x02800210, 0x1c144004, 0x00010088, 0x04500000, 0xc0088042, 0x00000204, 0x08200c20, 0x00060000, + 0x00000000, 0x00058002, 0x40020084, 0x02000280, 0x10112010, 0x00400400, 0x10680040, 0x48040094, 0x04000080, 0x08000000, + 0x0c08008e, 0x10428020, 0x22004300, 0x8804860a, 0x40200830, 0x04020100, 0x00840aa0, 0x04101810, 0x4e008020, 0x20001072, + 0x000a4018, 0x80000000, 0x00640828, 0x00004001, 0x98008042, 0x00006400, 0x40001000, 0x00004800, 0x2218801f, 0x04202000, + 0x00400440, 0x04004110, 0x00820000, 0x00000180, 0x80260448, 0x28000880, 0x00100010, 0x10080a02, 0x02008000, 0x04088000, + 0x0080049a, 0x00061804, 0x08000000, 0x000c0808, 0x30300004, 0x10008002, 0x00121054, 0x20082280, 0x00014800, 0x6a48a002, + 0x00008280, 0x00001000, 0x440142c8, 0x80500002, 0x02082801, 0xe28004c0, 0x04201000, 0x29200820, 0x84c00404, 0x021a0408, + 0x00541002, 0x08202c20, 0x00200010, 0x20084508, 0x0c300000, 0x8000a006, 0x08140000, 0x22684000, 0x00080205, 0x00000880, + 0x90048102, 0x04000000, 0x02200300, 0x80008012, 0x00508488, 0x00000444, 0x02000080, 0x1c482010, 0x08340a20, 0x85490000, + 0x04002400, 0x10004080, 0x0ab78818, 0x00200044, 0x00020020, 0x1c180018, 0x0020a242, 0x10040404, 0x0a280010, 0x00404280, + 0x00021050, 0x10548006, 0x04010000, 0x00002088, 0x0002c202, 0x0a010802, 0x84000444, 0x02430080, 0x10200230, 0x00a48000, + 0x02000080, 0x04800000, 0x00005100, 0x00200422, 0x28040808, 0x00100014, 0x00605920, 0x00082000, 0x044c0000, 0x00100418, + 0x20002000, 0x00000100, 0x800c4002, 0x42808084, 0x80408200, 0x48040010, 0x0006000a, 0x06000008, 0x80008383, 0x48982840, + 0x04000000, 0x006004a0, 0x02000042, 0x180008b0, 0x00000046, 0x00280008, 0x02112010, 0x80200000, 0x10020000, 0x00004044, + 0x00482010, 0x8012821a, 0x08004000, 0x0028000c, 0x408c0000, 0x00008482, 0x84060000, 0x02050208, 0x02000004, 0x10801282, + 0x00030050, 0x04400820, 0x000c10d4, 0x00100400, 0x00210828, 0x22008002, 0x00100080, 0x00049002, 0x00000020, 0x88206808, + 0x24100010, 0x02281100, 0x00000000, 0x00000040, 0x60182088, 0x84041020, 0x00804110, 0x00461004, 0x48008002, 0x0202a000, + 0xc4044800, 0x10000286, 0x00484460, 0x82808380, 0x80200810, 0x08400010, 0x14042400, 0x02100040, 0x00008802, 0x08200081, + 0x00000060, 0x04182410, 0x02200080, 0x1804002c, 0x00692000, 0x00004040, 0x4000000a, 0x00048804, 0x04024000, 0xc8000208, + 0x02008082, 0xc0070014, 0x00880040, 0x04804400, 0x02010284, 0x00608002, 0x08000000, 0x04000040, 0x005026a0, 0x18200838, + 0x08000200, 0x00301000, 0x80000000, 0x20000080, 0x08200038, 0x02100000, 0x000a1410, 0x04040040, 0x20200020, 0x40581008, + 0x00006406, 0x48824804, 0x040c0000, 0x80000000, 0x100a8008, 0x80640104, 0x02000002, 0x04840301, 0x0a00c088, 0x00208c04, + 0x00400502, 0x04000104, 0x00008050, 0x00020121, 0x18200800, 0x00400008, 0x00100210, 0x10010000, 0x02080402, 0x44082800, + 0x00000008, 0x80808006, 0x10241004, 0x00084000, 0x42121c10, 0x10002000, 0x6083a002, 0x80000280, 0x00800000, 0x02010288, + 0x00400000, 0x00000440, 0x84000080, 0x00608022, 0x08228020, 0xa0020400, 0x0c341240, 0x89008820, 0x00200004, 0x00400048, + 0x00000000, 0x00500002, 0x08005810, 0x20002040, 0x00081000, 0xd0000008, 0x40040000, 0x10580804, 0x00004022, 0x00100002, + 0xc028c004, 0x60022000, 0x00000490, 0x500c8300, 0x02e00000, 0x04400000, 0x00000040, 0x80000400, 0x0085c000, 0x02210000, + 0x88080820, 0x00100002, 0x04020010, 0x10400040, 0x00080008, 0x08004200, 0x00022440, 0x00004000, 0x00080800, 0x40040004, + 0x00028400, 0x80041000, 0x40010002, 0x02802280, 0x00010000, 0x60404000, 0x00080000, 0x00400080, 0x0a200448, 0x00200000, + 0x04402040, 0x00200400, 0x00000000, 0x00100820, 0x08201010, 0x00103010, 0x00000000, 0x00080000, 0x00000008, 0x20007090, + 0x08980214, 0x04608100, 0x20004080, 0x6004241d, 0x00000400, 0x00024006, 0x8050ea00, 0x00800101, 0x02208010, 0x080002c0, + 0x00000440, 0x04400820, 0x00080200, 0x00100800, 0x18024024, 0x0024220b, 0x10000000, 0x00200800, 0x00100210, 0x00000000, + 0x00002000, 0x0018c08c, 0x00000040, 0x400c000c, 0x10085080, 0x00000002, 0x00020200, 0x9000c048, 0x00000000, 0x02801002, + 0x80018690, 0x44600000, 0x00010448, 0x108b0230, 0x00020000, 0x00200000, 0x4a484008, 0x00300120, 0x08000080, 0x04480000, + 0x00048040, 0x00007010, 0x20100000, 0x00080220, 0x00000000, 0x62022c08, 0x00000004, 0x646c1080, 0x02004260, 0x80028000, + 0x04000912, 0x00c40000, 0x02000900, 0x00800280, 0x88140400, 0x10002440, 0x00008002, 0x04724080, 0x48200820, 0x00000000, + 0x04000004, 0x00000002, 0x10308040, 0x400800b0, 0x00020000, 0x00880004, 0x0041245a, 0x40040800, 0x02800000, 0x8000602c, + 0x80000000, 0x00142002, 0x004f9014, 0x00000000, 0x000b4280, 0x82840048, 0x00200440, 0x04000002, 0x20402000, 0x08000021, + 0x00400048, 0x40806a02, 0x00000084, 0x00200200, 0xa8021022, 0x00004410, 0x00081000, 0x02908009, 0x00000880, 0x000ca02a, + 0x24400200, 0x40000444, 0x00000800, 0x080c4021, 0x80408000, 0x00080040, 0x40120402, 0x02800301, 0x00000010, 0x00024880, + 0x00008000, 0x0c082000, 0x9164045c, 0x08200109, 0x00800800, 0x00504420, 0x10100004, 0x00000012, 0x02808600, 0x00202088, + 0x000c8822, 0x04400000, 0x40000200, 0x900040d4, 0x00250420, 0x00080000, 0x88020040, 0x00008002, 0x02801290, 0x00012800, + 0x00200006, 0x00080408, 0x00400050, 0x40860000, 0x28010008, 0x80002000, 0x40141050, 0x20000004, 0x00000020, 0x0a284008, + 0x00020002, 0x00140100, 0x8020d211, 0xa2802008, 0x04280080, 0x00408440, 0x40044002, 0x02200000, 0x00100005, 0x08020802, + 0x20408000, 0x80000568, 0x12a00095, 0x48102000, 0x04000202, 0x04540808, 0x10000440, 0x00890000, 0xc8084016, 0x01200020, + 0x00000880, 0x00100018, 0x04000000, 0x10060084, 0x08000000, 0x008a2008, 0x02300200, 0x0440c006, 0x00010000, 0x402404e0, + 0x08000202, 0x84028000, 0x62000040, 0x12100000, 0x00a10000, 0x00420a98, 0x00400000, 0x90000400, 0x4a189050, 0x08240004, + 0x08200040, 0x04444418, 0x00201440, 0x08100000, 0xe0028820, 0x00101828, 0x04080010, 0x02804001, 0x00001018, 0x20040000, + 0x0448a4c0, 0x8000200a, 0x40044004, 0x1a000001, 0x00004004, 0x80020000, 0x00708842, 0x00008183, 0x06800400, 0x18080310, + 0x00240a80, 0x00400400, 0x54000044, 0x00000c50, 0x08100200, 0x00200020, 0x80000838, 0x104a0000, 0x02900084, 0x00081010, + 0x00040020, 0x00402848, 0x0004a00a, 0x40120004, 0x0a204880, 0x80034004, 0x00000200, 0x04409052, 0x00088002, 0x02000280, + 0x08b10808, 0x00000280, 0x00000000, 0x40403450, 0x00000440, 0x0c608004, 0x00040402, 0x04500002, 0x88220900, 0x20080428, + 0x08200201, 0x00000000, 0x06144000, 0x10101040, 0x00000600, 0xa0480000, 0x20081040, 0x50002002, 0x0e041100, 0x40060005, + 0x00000800, 0x80502008, 0x80028440, 0x04000400, 0x1a800000, 0x06a00200, 0x00400420, 0x00142100, 0x04408181, 0x10000081, + 0x48200d60, 0x18280881, 0x00008620, 0x02140014, 0x101084e0, 0x00000000, 0x04d80000, 0x600a0028, 0x00000206, 0x0a240000, + 0x40040a10, 0x00090000, 0x84426000, 0x80820040, 0x00010000, 0x0a204103, 0x028180a4, 0x00400008, 0x44041010, 0x0440a400, + 0x08002800, 0x20423028, 0x85000004, 0x40080600, 0x01224040, 0x00010820, 0x00080002, 0x00008c2c, 0x08000100, 0x400040b0, + 0x0a000088, 0x04000200, 0x00400490, 0x04180048, 0x48006200, 0x00000030, 0x08004000, 0x20400028, 0x10040090, 0x41002a40, + 0x00804086, 0x00020040, 0x10000200, 0x00010404, 0x00004000, 0x00040000, 0x20582000, 0x00480000, 0x80200a00, 0x12000000, + 0x00051111, 0x0a201086, 0x00012000, 0x04408000, 0x80116048, 0x00001504, 0x20210002, 0x04000000, 0x00000422, 0x0c420618, + 0x00002010, 0x10050e00, 0x80000000, 0x20020000, 0x44020000, 0x00280000, 0x00000040, 0x0280c000, 0x00800000, 0x48420104, + 0x00002080, 0x08208000, 0x00400000, 0x40a30002, 0x03000101, 0x00120010, 0x10800021, 0x002a080c, 0xa3000000, 0x11040100, + 0x00200200, 0x40240184, 0x00000002, 0x00401000, 0x8000d014, 0x00060000, 0x81200008, 0x42c08008, 0x00101002, 0x80040010, + 0x00000000, 0xc1004002, 0x00030008, 0x24004102, 0x01020000, 0x04980000, 0x41024011, 0x10004840, 0x18880500, 0x40020010, + 0x214400a0, 0x42020280, 0x80040809, 0x00000000, 0x00900080, 0x08100004, 0x40804001, 0x0a200000, 0x02008083, 0x00000000, + 0x40008280, 0x80004004, 0x00000820, 0x000006c8, 0x20048002, 0x10001010, 0x00004d64, 0x10040280, 0xa5402008, 0x00141832, + 0x80280440, 0x00014004, 0x00041018, 0x00400820, 0x80818002, 0x0001204c, 0xa0881010, 0x04020280, 0x00904022, 0x10102008, + 0x00000140, 0x6a088292, 0x24004004, 0x000a0820, 0x0c4006c0, 0x00018002, 0x0aa01010, 0x00000c64, 0x08040281, 0x40002008, + 0x00001832, 0x00000440, 0xa0204004, 0x00001018, 0x00000820, 0x12108002, 0x0000200c, 0x40e01010, 0x20080081, 0x8001c026, + 0xc0022008, 0x01000040, 0x24088283, 0x00914004, 0x10600820, 0x00040000, 0x00300800, 0x00000008, 0x80000086, 0x20004200, + 0x01850000, 0x00020000, 0x80008000, 0x00004080, 0x00000200, 0x40010001, 0x00008020, 0x20024000, 0x00000000, 0x14400101, + 0x000080a2, 0x00000000, 0x24000400, 0x80120400, 0x02000102, 0x00004000, 0x00000000, 0x00000000, 0x04400010, 0x00000080, + 0x00000000, 0x00000841, 0x00001002, 0x00080000, 0x80040600, 0x00403000, 0x00040108, 0x00220208, 0x00020000, 0x00c01004, + 0x30000080, 0x40008000, 0x00020000, 0x10082400, 0x00008008, 0x10000000, 0x00124010, 0x00010000, 0x00002000, 0x00000004, + 0x04084004, 0x40000200, 0x20400410, 0x010c9040, 0x08000820, 0x00008e8a, 0x10000040, 0x01101400, 0x00a21068, 0x00400400, + 0x00022a00, 0x00802002, 0x80249400, 0x002000c6, 0x00800600, 0x80120210, 0x00000101, 0x08200000, 0x0008b033, 0x41800080, + 0x80000000, 0x044422c0, 0x00000009, 0x80144000, 0x0000000c, 0x08200000, 0x0102c500, 0x02000080, 0x3040c000, 0x01810040, + 0x00000805, 0x22090002, 0x10100041, 0x00400000, 0x00048200, 0x04080005, 0x09200170, 0x04012006, 0x00041000, 0x02100450, + 0x08c90080, 0x00000400, 0x00040009, 0x0c000000, 0xe4104030, 0x08100200, 0x0048a400, 0x14000180, 0x02124000, 0x44400040, + 0x02200020, 0x80002000, 0x0440000a, 0x40140100, 0x24040011, 0x113800b4, 0x82004008, 0x00000040, 0x12182000, 0x0001000c, + 0x00811000, 0x00006808, 0x00440064, 0x15400048, 0x00148a00, 0x18801001, 0x48080808, 0x10a82480, 0x00030122, 0x10001050, + 0x40040020, 0x00082020, 0x04910408, 0x00020032, 0x08100014, 0x05204080, 0x40000080, 0x00000010, 0x88002402, 0x10100078, + 0x02150400, 0x00000881, 0x68004820, 0x80020002, 0x60000000, 0x00008101, 0x40800a00, 0x00002020, 0x00c080c0, 0x10001040, + 0x00000000, 0x80802800, 0x80020000, 0x00080000, 0x00800100, 0x02000200, 0x00000000, 0x48000806, 0x04004080, 0x00040000, + 0x08000000, 0x00000820, 0x00200040, 0x00400402, 0x10000410, 0x00100000, 0x40000080, 0x00002008, 0x00080000, 0x08024000, + 0x40240004, 0x20000000, 0x00000000, 0x80008002, 0x20004000, 0x00c00008, 0x02850200, 0x00020000, 0x00200041, 0x04000444, + 0x00000000, 0x08000000, 0x08200020, 0x00400000, 0x00002800, 0x10101000, 0x00000400, 0x00000000, 0x20080040, 0x00002000, + 0x00044006, 0x40040000, 0x00000000, 0x80010004, 0x80128000, 0x0448200c, 0x50008010, 0x80120002, 0x0000a120, 0x212c1808, + 0x10040080, 0x00900010, 0x40400064, 0x00404040, 0x20080002, 0x80208000, 0x08a60c00, 0x01000000, 0x4200418c, 0x00129000, + 0x80000030, 0x14404040, 0x20080100, 0x00800000, 0x08020c80, 0x40240448, 0x00404000, 0x9000a214, 0x00000002, 0x00000828, + 0x28380000, 0x00120015, 0x00008000, 0x8e006200, 0x004a0000, 0x00002000, 0x30048008, 0xc0000880, 0x00000402, 0x0a041004, + 0x00a10410, 0x10020200, 0x04100041, 0x20490088, 0x00800200, 0x00040800, 0x40601400, 0x00100000, 0x10000071, 0x00000000, + 0x00000000, 0x80140080, 0x0000c000, 0x02000000, 0x00880000, 0x00d20200, 0x42004400, 0x00000000, 0x00000408, 0x08020000, + 0x00480000, 0x00008160, 0x00200000, 0x10140000, 0x00001000, 0x08020080, 0x00100002, 0x20200000, 0x00002000, 0x00040814, + 0x00000000, 0x00040000, 0x00000400, 0x80000000, 0x00002010, 0x00000000, 0x06880080, 0x40060400, 0x20000000, 0x04402820, + 0x00010401, 0x00120060, 0x080000a0, 0x00000000, 0x00010000, 0x10908a18, 0x80000000, 0x00081000, 0x00002008, 0x00000000, + 0x40000000, 0x08140014, 0x00200040, 0x00001400, 0xa0000002, 0x04080048, 0x00240000, 0x08000020, 0x40100088, 0x10200c44, + 0x90000010, 0x00000004, 0x20181880, 0x00280008, 0x2000a020, 0x40065002, 0x15000000, 0x40800214, 0xa0045000, 0x80088000, + 0x00002442, 0x1a0a0010, 0x40041181, 0x0a000000, 0x84a08000, 0x00500000, 0x00083800, 0x00000460, 0x01090981, 0x08200020, + 0x12800094, 0x10000000, 0x20400000, 0x80102018, 0x20080000, 0x80802802, 0x4044048c, 0x00040000, 0x42904001, 0x10008024, + 0x80400000, 0x24000000, 0x00078002, 0x00800000, 0x0a010000, 0x000006c1, 0x00000002, 0x90408450, 0x00005000, 0x00202808, + 0x00000004, 0x30400410, 0x00200000, 0x01020820, 0xa8100208, 0x00100000, 0x00003010, 0x50000004, 0x00000000, 0x00000000, + 0x2108a808, 0xc0004080, 0x08040000, 0x00000104, 0x02000200, 0x00020000, 0x80408122, 0x00000000, 0x00804080, 0x0a000000, + 0x00200040, 0x00400410, 0x00004808, 0x00240020, 0x00000000, 0x08080800, 0x00100210, 0x00004000, 0x30012040, 0x00002000, + 0x20040008, 0x08080010, 0x40010002, 0x00400004, 0x080cc650, 0x00820002, 0x80208000, 0x00000830, 0x00400400, 0x00800285, + 0x26010048, 0x00500040, 0x00002000, 0x000a0410, 0x18000020, 0x00441810, 0x08000440, 0x00100800, 0x40200000, 0x38080020, + 0x00145000, 0x00000000, 0xd080201c, 0x2000a002, 0x00000888, 0x00080000, 0x00020000, 0x80144010, 0x40000004, 0x00000802, + 0x008281a0, 0xa2000010, 0x00800600, 0x01000104, 0x226000c0, 0x08000c00, 0x00002060, 0x04449008, 0x00100030, 0x40000800, + 0x18200000, 0x20081000, 0x0010a01e, 0x50000200, 0x80044008, 0x08088001, 0x20012002, 0x40024020, 0x00040004, 0x00200280, + 0x02028000, 0x00010003, 0x80800440, 0x00010281, 0x40000800, 0x02e81020, 0x00000400, 0x00000000, 0x0c504050, 0x08000000, + 0x00001800, 0x10008000, 0x20000010, 0x01000200, 0x00182008, 0x00020000, 0x80040000, 0x06008164, 0x00208842, 0x40000400, + 0x80200200, 0x00200000, 0x08000000, 0x02080000, 0x00100000, 0x00400980, 0x00080400, 0x20004040, 0x00004010, 0x08000000, + 0x00080810, 0x00040004, 0x00204080, 0x00002109, 0x81000002, 0x00800000, 0x26840041, 0x00020000, 0x00490200, 0x00400002, + 0x40000400, 0x00004004, 0x00000000, 0x000180d0, 0x80820000, 0x00000401, 0x08200000, 0x00100000, 0x10040008, 0x00000000, + 0x80000000, 0x00000000, 0x00280022, 0x00100810, 0x00008000, 0x00004000, 0x9c422800, 0x40020880, 0x20008000, 0x84b80028, + 0x00000540, 0x02c00410, 0x58100004, 0x04080000, 0x20400200, 0x1814c080, 0x00000464, 0x40040000, 0xa0026800, 0x08000010, + 0x90100100, 0x4202a200, 0x20080000, 0x00800101, 0x4c248080, 0xc0440404, 0x00000040, 0x00824020, 0x00210800, 0x08000222, + 0x10480090, 0x00110000, 0x82020051, 0x00202028, 0x04000040, 0x00c00008, 0x303c2034, 0x00000404, 0x08001000, 0xf01c8002, + 0x00120008, 0x30001800, 0x02812218, 0x40800004, 0x20054008, 0x040086c4, 0x00420002, 0x40008444, 0x88240090, 0x00000002, + 0x00400018, 0x00000000, 0x8020c000, 0x00100020, 0x01480880, 0x02900210, 0x10020000, 0x20000080, 0x20000000, 0x00000000, + 0x00480020, 0x88044000, 0x00020824, 0x40801108, 0x90020000, 0x00008000, 0x00200008, 0x00d00188, 0x00080000, 0x00022020, + 0x00000040, 0x00400400, 0x22000802, 0x08000020, 0x40004000, 0x00200802, 0x00010000, 0x00908200, 0x04002c10, 0x00002008, + 0xa0080400, 0x04400080, 0x08000040, 0x40040004, 0x00820000, 0x10200010, 0x00100000, 0x000a1260, 0x20000080, 0x00002200, + 0x00810000, 0x40080450, 0x00640000, 0x08830009, 0x88024000, 0x00004000, 0x00001018, 0x08002800, 0x00020026, 0x04200040, + 0x01001108, 0x22100291, 0x90808000, 0x40024008, 0x04401052, 0x200c0424, 0x08008104, 0x00000820, 0x42844080, 0x00008010, + 0x10165002, 0x80606400, 0x01a00241, 0x2002a008, 0x02000000, 0x00000400, 0x480c0044, 0x04100830, 0x00000000, 0x8822a040, + 0x20000860, 0x00081000, 0x02910009, 0x18440014, 0x40004080, 0x24488440, 0x88002008, 0x02000003, 0x08010a20, 0x40840084, + 0x80000000, 0x10001002, 0x4020c000, 0x02800000, 0x08680453, 0xc0110000, 0x04000010, 0x404422a1, 0x20101640, 0x08000000, + 0x240c0200, 0x00000004, 0x60200020, 0x98000810, 0x00800000, 0x00100400, 0x108688a3, 0x02001014, 0x4c080100, 0xa0400448, + 0x08009000, 0x00004000, 0x40240120, 0x00000005, 0x18022002, 0x80149050, 0x01c00000, 0x00000400, 0x22820202, 0x08000000, + 0x80000040, 0x04140424, 0x0000000a, 0x08200009, 0xc08ac822, 0x00400010, 0x24040000, 0x10a01891, 0x00300004, 0x40010808, + 0x06402200, 0x20180030, 0x08040004, 0x40200060, 0x00000000, 0x3001800a, 0x80101200, 0x00402000, 0x20000441, 0x02812008, + 0x00200004, 0x00000040, 0x04000604, 0x00480000, 0x00000010, 0x42823284, 0x14208222, 0x20000082, 0x84288208, 0x08100830, + 0x11060010, 0x0a605824, 0x44100080, 0x20008800, 0x14181010, 0x00100008, 0x40840200, 0xaa68484c, 0x00020403, 0xa0000000, + 0x71044004, 0x44029002, 0x02000800, 0xe10a8033, 0x00804640, 0x05001008, 0x82820210, 0x19218540, 0x00006920, 0x06020648, + 0x48308001, 0x50100010, 0x0e200e26, 0x20881000, 0xa0082000, 0x141510d8, 0x10000400, 0x40810000, 0x322c282c, 0x00008002, + 0x00002400, 0x54149054, 0x80000003, 0x00010000, 0xa000c002, 0x0ac60001, 0x00401402, 0xc28f004f, 0x14008081, 0x00010000, + 0x10400064, 0x82841010, 0x48008900, 0x00604000, 0x010000a0, 0x40d03202, 0x00200020, 0x102e0030, 0x00084540, 0x00003000, + 0xa0000018, 0x0800c000, 0x000c0000, 0x40c8000f, 0x00021080, 0xc4084006, 0x0100840c, 0x02040240, 0x80808180, 0x00028032, + 0x2d002100, 0x10000648, 0x00d01210, 0x00000002, 0x000000a0, 0x6825480c, 0x12880401, 0x80301030, 0x00008024, 0x04080088, + 0x20114010, 0xc022b802, 0x48040000, 0x2010440c, 0x00000091, 0x90030010, 0x0004880c, 0x06140006, 0x02800001, 0x00200082, + 0x00018228, 0x00400044, 0x04002281, 0x0a100c00, 0x48044800, 0x04420440, 0x00000080, 0x10080810, 0x01141020, 0x08200048, + 0x20104000, 0x92201832, 0x00042c00, 0x200020a4, 0x00080110, 0x4102000a, 0x00000004, 0x440441e0, 0x80008000, 0x02820a02, + 0x4000c014, 0x90000444, 0x04200088, 0x81808101, 0x22580204, 0x80408964, 0x04000600, 0x08806000, 0x101008b0, 0x28002040, + 0x80200000, 0x00180000, 0x1200d020, 0x40000058, 0x0006a046, 0x04180298, 0x20010000, 0x40000004, 0x20000088, 0x90244220, + 0x02800041, 0x88078006, 0x00002010, 0x04c02280, 0x02010025, 0x00001408, 0x08440840, 0x24000284, 0x0020c400, 0x10109012, + 0x04c08448, 0x08142214, 0x80000800, 0x12000020, 0x28e00400, 0x03085002, 0x14400810, 0x00142008, 0x24000000, 0x00081104, + 0x00222018, 0x102004e4, 0x401c4110, 0x00c00800, 0x30020402, 0x0008c000, 0x80004008, 0x00800030, 0x01108908, 0x422202c0, + 0x40580140, 0x84822404, 0x01000201, 0x01004820, 0x08000100, 0x14200010, 0x00181000, 0x10000008, 0x008040b0, 0x00602000, + 0x00008048, 0x600c0206, 0x80024485, 0x40000200, 0x020d0000, 0xa0620040, 0x00000010, 0x00008002, 0x60051289, 0x12000002, + 0x00a08020, 0x00102400, 0x08801a91, 0x04c90042, 0x80000001, 0x00002000, 0x04441056, 0x00000100, 0x00022282, 0x18200820, + 0x00100010, 0x00000020, 0x300410c0, 0x00000040, 0x00000008, 0xa0082820, 0x00221800, 0x00044000, 0x40801426, 0x0002000a, + 0xc1000000, 0x00008480, 0x00900001, 0x20008190, 0x02440040, 0x00000000, 0x00440548, 0x0a288814, 0x00018020, 0x0a800002, + 0x00311801, 0x00120050, 0x00200001, 0x30480400, 0x20000000, 0x00180280, 0x5000600a, 0x40140004, 0x00186410, 0x00003000, + 0x80029002, 0x00100000, 0x20000001, 0x02014015, 0x000a0080, 0x40c04208, 0x80420402, 0x20070000, 0x40100840, 0x00008880, + 0x04542640, 0x10080000, 0x00008020, 0x48200800, 0x00024008, 0x00040000, 0x11801200, 0x08100010, 0x20082088, 0x00000000, + 0x08100000, 0x4000c400, 0x00000804, 0x000e0020, 0x80008000, 0x00041442, 0x40320100, 0x01002280, 0x02028002, 0x00804002, + 0x44000448, 0x00000000, 0x00400000, 0x80280800, 0x00002420, 0x08148492, 0x00001000, 0x10810010, 0x02120000, 0x40002408, + 0x00000001, 0x284810b0, 0x00008040, 0x000c2004, 0x40014008, 0x00000000, 0x00029082, 0x80180008, 0x00000090, 0x02c10600, + 0x00000001, 0x40000040, 0x04010600, 0x00400200, 0x00000000, 0x20000200, 0x00300480, 0x08241810, 0x00004020, 0x00000400, + 0x30001000, 0x0018201a, 0x0080c000, 0x01000000, 0x60082080, 0x8000000a, 0x00048084, 0x40000500, 0x20204209, 0x00800000, + 0x00168000, 0xc1006042, 0x02000111, 0x008a8a02, 0x004004a0, 0x00400010, 0x05000000, 0x002434c8, 0x08100000, 0x10200800, + 0x0000226c, 0x30000000, 0x80184002, 0x40021890, 0x00080000, 0x20402008, 0x00178c00, 0x00004002, 0xc0802000, 0x0004208c, + 0x00010200, 0x80000000, 0x0042e003, 0x00800608, 0x00002001, 0x0a3190f0, 0x04000000, 0x10400240, 0x22000c90, 0x28201020, + 0x00000000, 0x00804440, 0x08300820, 0x00000204, 0x22020042, 0x00000004, 0x01080010, 0x12501ac0, 0x20880000, 0x00040000, + 0x14406058, 0x00020000, 0x80044000, 0x40180804, 0x00820022, 0x00100088, 0x900c8500, 0x004008a4, 0x00800004, 0x4200b04a, + 0x00480044, 0x80104400, 0x48240000, 0x00010828, 0x00000080, 0x8e222000, 0x10100010, 0x00000000, 0x02e100c0, 0x20022228, + 0x00080004, 0x00400461, 0x00000000, 0x40144080, 0x08000814, 0x80020000, 0x00808402, 0x30080000, 0x02c01040, 0x00010281, + 0x080c4002, 0x00403040, 0x0000c000, 0x00160402, 0x48200008, 0x10440054, 0x08020000, 0x49084100, 0x00000000, 0x20629822, + 0x80104190, 0x44000400, 0x19201009, 0x0202260a, 0x80600840, 0x208c0004, 0x01100000, 0x16045004, 0x40008011, 0x08222842, + 0x04000010, 0x80808220, 0x10300000, 0x008011a0, 0x0a080c00, 0x00500008, 0x10028440, 0x60042014, 0x22804221, 0x00280109, + 0x88c09800, 0x10142082, 0x40000204, 0x00030011, 0x2880a002, 0x00280008, 0x12000400, 0x44040015, 0x00000000, 0x80404840, + 0x08280422, 0x00408040, 0x82830008, 0x12950015, 0x00002200, 0x04081080, 0xe0524040, 0x00001010, 0x88800608, 0x080c0804, + 0x04000420, 0x00480004, 0x40005010, 0x18b00822, 0x200a8008, 0x80001000, 0x10100100, 0x00804011, 0x00000080, 0x600c202c, + 0x02401040, 0xc0004006, 0x01028000, 0x02240a21, 0x80808000, 0x08020000, 0x14000442, 0x02900101, 0x00040010, 0x200008a8, + 0x00000000, 0x08202000, 0x50541444, 0x08204010, 0x00000820, 0xa0020008, 0x00000202, 0x10182010, 0x42850005, 0x00000080, + 0x00000000, 0x20483008, 0x00004002, 0x80208004, 0x5a850c41, 0x00000010, 0x80020020, 0x54409002, 0x00000280, 0x02000440, + 0x08992005, 0x00000400, 0x00400044, 0x50001008, 0x00104020, 0x00000420, 0x04d84008, 0x04641470, 0x11000000, 0x48020806, + 0x08201830, 0x31480008, 0x0210c241, 0x101c1818, 0x60002004, 0x04820042, 0xe00c200c, 0x01208000, 0x02004e20, 0x4084c004, + 0x00020002, 0x94101040, 0x81828402, 0x00000180, 0x23202b28, 0x02800680, 0x08400040, 0xd4141006, 0x04420450, 0x08200800, + 0xa000a028, 0x08200820, 0x00181000, 0x52850015, 0x10101010, 0x20080000, 0x8440a4c8, 0x2008200a, 0x40004000, 0x0a850005, + 0x40066004, 0x00000000, 0x94489462, 0x80028082, 0x00000001, 0x0a990210, 0x02810281, 0x00400000, 0x54023448, 0x04510460, + 0x1020a800, 0x80020400, 0x00400104, 0x08144000, 0x00044000, 0x08000008, 0x00080004, 0x40001000, 0x11004014, 0x20900a04, + 0x08000280, 0x00080022, 0x11000402, 0x00800008, 0x08300100, 0xc2810601, 0x00082c04, 0xe1080000, 0x0c400040, 0x0a208104, + 0x00044002, 0x00200000, 0x00000000, 0x0101a500, 0x10145040, 0x00600210, 0xa0800604, 0x06020020, 0x80000000, 0x05241541, + 0x40000000, 0x08000021, 0x00000080, 0x00420240, 0x10204041, 0x02010300, 0x00010408, 0x00000000, 0x14008402, 0x00051010, + 0x00004004, 0x08404020, 0x60208802, 0x00800400, 0x02120010, 0x00c00002, 0x2a0002a0, 0x90002000, 0x04003240, 0x50800042, + 0x20080000, 0x80048080, 0x30202402, 0x04038100, 0x00401000, 0x00241030, 0x00800040, 0x40400008, 0x82100101, 0x00060200, + 0x01004080, 0x04000000, 0x0014a020, 0x40000100, 0x00102880, 0x60020028, 0x00810084, 0x02420020, 0x04800001, 0x48000000, + 0x0001a061, 0x00000800, 0x10011081, 0x2802040c, 0x00800010, 0x81020300, 0x00200000, 0x26080408, 0x00001000, 0x40800182, + 0x00041030, 0x20806040, 0x40044206, 0x00020820, 0x00000800, 0x81001503, 0x10100000, 0x804000c0, 0x04041020, 0x00000040, + 0x06000208, 0x00080000, 0x00028002, 0x40000000, 0x07000110, 0x00000221, 0x00a10008, 0x04000020, 0x02000400, 0x41080101, + 0x02100000, 0x08210000, 0x20000800, 0x000c3044, 0x044100a0, 0x00000814, 0x00000048, 0x00220012, 0x00000000, 0x80800010, + 0x02400200, 0x04080000, 0x00008080, 0x200a000c, 0x80000002, 0x42800088, 0x00204000, 0x08180000, 0x0040a000, 0x50500080, + 0x02040004, 0x20193810, 0x48008022, 0x80042804, 0x00080008, 0x04400804, 0x02100000, 0x08600000, 0xa0800000, 0x00102000, + 0x02020010, 0x00210205, 0x02000000, 0x08002000, 0x50000002, 0x92800084, 0x40040400, 0x08200008, 0x26c00000, 0x80020020, + 0x10100001, 0x4d400000, 0x02802000, 0x00088000, 0x98300004, 0x04400000, 0x00040000, 0x12180000, 0x08200001, 0x00020108, + 0x24040200, 0x10004802, 0x00800000, 0x48068408, 0x20080041, 0x05400080, 0x92022000, 0x40042000, 0x00200010, 0x24c00c06, + 0x80022000, 0x00100802, 0x4c400000, 0x02810000, 0x20080000, 0x98200040, 0x04400001, 0x00040002, 0x32180000, 0x08204000, + 0x80021000, 0x640c8000, 0x10100402, 0x00810000, 0xc8062000, 0x20080290, 0x04400400, 0x92130804, 0x40040000, 0x00200000, + 0x00004008, 0x00000040, 0x00000184, 0x00000002, 0x20006008, 0x004c0440, 0x00020200, 0x00021208, 0x00000085, 0x40410500, + 0x00206802, 0x006004a1, 0x00046000, 0x00000300, 0x20412080, 0x4800402c, 0x88000000, 0x20002000, 0x01020880, 0x00240200, + 0x00900314, 0x08004000, 0x00200441, 0x00080100, 0x0002c200, 0x00000000, 0x00018104, 0x00000090, 0x0002000c, 0x00004022, + 0x02804418, 0x02002280, 0x00020840, 0x40001128, 0x808082c0, 0x20204100, 0x00860010, 0x00000004, 0x00009040, 0x00100023, + 0x00000802, 0x00306000, 0x00000011, 0x08012002, 0x00000000, 0x00402020, 0x10202000, 0x80024640, 0x10000000, 0x00008880, + 0x00009004, 0x80a10022, 0x01000820, 0x02045002, 0x80000000, 0x08801048, 0x00018008, 0x00008244, 0x80020000, 0x02000442, + 0x04100001, 0x00008430, 0x00000002, 0x00880000, 0x00000000, 0x40088009, 0x00040020, 0x00400008, 0x000000c0, 0x43000030, + 0x00004000, 0x21120068, 0x02002000, 0xa0008401, 0x00680001, 0x00000180, 0x01000800, 0x00482010, 0x00040402, 0x00480008, + 0x05010005, 0x08000601, 0x00012000, 0x2d000000, 0x00024040, 0x02811500, 0x00028080, 0x00250400, 0x04409040, 0x40860000, + 0x08000000, 0xa0880800, 0x42008000, 0x00040004, 0x00a00002, 0x04000010, 0x00000008, 0x00600000, 0x00880080, 0x00040000, + 0x30080000, 0x0a020020, 0x04000000, 0x00180000, 0x04040040, 0x02810000, 0x402a2810, 0x00002028, 0x00000400, 0x0b014006, + 0x02010000, 0x80000000, 0x20808000, 0x04414000, 0x00140000, 0x00240000, 0x08081001, 0x80000080, 0x04440000, 0x08180040, + 0x40050400, 0x08810000, 0x00100800, 0x00020000, 0x10000030, 0x00001000, 0x00000000, 0x20040000, 0x00200000, 0x04440000, + 0x00000400, 0x3a000000, 0x80002000, 0x20000091, 0x90108000, 0x00200000, 0x40000000, 0x80020000, 0x00000000, 0x00003828, + 0x02101282, 0x00000010, 0x01004000, 0x04040440, 0x00002008, 0x00000006, 0x08004804, 0x00020000, 0x00000020, 0x00201250, + 0x00100082, 0x20400400, 0x20080088, 0x04000200, 0xc0020020, 0x40000004, 0x00000400, 0x00000800, 0x800a8802, 0x00102000, + 0x04400018, 0x10805000, 0x00000010, 0x40010044, 0x00440688, 0x00000000, 0x02008840, 0x08204020, 0x00000086, 0x00020009, + 0x10000210, 0x00001000, 0x00000004, 0x20002008, 0x00100280, 0x40000460, 0x00000800, 0x08004040, 0x00201410, 0x00060826, + 0x20000000, 0x00404080, 0x00060002, 0x80000000, 0x04280000, 0x00000080, 0x00102200, 0x00000040, 0x40040044, 0x22080020, + 0x00400008, 0x88020800, 0x44000210, 0x02140000, 0x10120000, 0x80a02010, 0x00000004, 0x05002400, 0x00800080, 0x88000000, + 0x04248000, 0x00000000, 0x80c00448, 0x00000002, 0x00200004, 0x200000a0, 0x12800208, 0x80180000, 0x44000080, 0x00020c60, + 0x200c4000, 0x80000000, 0x08240800, 0x00000010, 0x42000000, 0x00800050, 0x80018002, 0x10022480, 0x20484000, 0x08012000, + 0x0004c800, 0x00001044, 0x00400400, 0x00300000, 0x98000003, 0x00008444, 0x04200000, 0x00000000, 0x00020928, 0x00000000, + 0x02800004, 0x00401000, 0x08000000, 0x00002008, 0x04040802, 0x88004000, 0x00204000, 0x000400c4, 0x08000c00, 0x04000410, + 0x01008000, 0x0012404a, 0x20200000, 0x00004200, 0x00000882, 0x40046440, 0x00000004, 0x060080a0, 0x20020100, 0x80000020, + 0x02c00a40, 0x42090004, 0x00000400, 0x00142018, 0x00002088, 0x00808242, 0x00480000, 0x00000000, 0x00004400, 0x08040004, + 0x10188000, 0x00220020, 0x00400002, 0x08250461, 0x00000080, 0x40000200, 0x00000040, 0x80049810, 0x00000402, 0xc0802000, + 0x80000000, 0x14000448, 0x01200800, 0x02000080, 0x08003064, 0x00001000, 0x90028000, 0x00004000, 0x00000400, 0x00202000, + 0x000c008c, 0x00000004, 0x42204000, 0x84068000, 0x80008200, 0x00020822, 0x20080040, 0x00000200, 0x00940080, 0x04022034, + 0x04000000, 0x00200004, 0x480c0440, 0x01200010, 0x28004800, 0x00102028, 0x04040480, 0x00100010, 0x08480000, 0x00204000, + 0x208b0000, 0x4040a00a, 0x40010000, 0x02100804, 0x00045080, 0x00000002, 0x88008000, 0x20020041, 0x42000080, 0x00000201, + 0x00d10030, 0x00524000, 0x00000440, 0x18201010, 0x80200000, 0x04000804, 0x00c09000, 0x08002008, 0x40040000, 0x002008a0, + 0x10000000, 0x00024000, 0x01a01200, 0x40000000, 0x0008040c, 0x00002080, 0xc0068002, 0x00000010, 0x00004004, 0x02128042, + 0x80800600, 0x00000880, 0x04800080, 0x00000000, 0x28200220, 0x00040800, 0x44000050, 0x00004400, 0x00100800, 0x00202204, + 0x08000020, 0x00100008, 0x00080410, 0x80020002, 0x00000002, 0x82002004, 0x2808c088, 0x00144084, 0x00001001, 0x50020200, + 0x80000000, 0x00020c02, 0x00808040, 0x00400200, 0x00910000, 0x02001081, 0x00000c00, 0x00600002, 0x20004064, 0x00000830, + 0x00400008, 0x88041806, 0x18002080, 0x00028002, 0x00280000, 0x10000008, 0x00400210, 0x00000000, 0x00040080, 0x00088024, + 0x40824000, 0x00800400, 0x04040800, 0xc0200002, 0x000000c0, 0x04100000, 0x80020010, 0x00000000, 0x08200000, 0x02800020, + 0x0000000e, 0x20140800, 0x04080010, 0x40000001, 0x00000000, 0x08206008, 0x00100000, 0xa0481000, 0x00040800, 0x00008006, + 0x40000200, 0x20094840, 0x80800880, 0x08040400, 0x50000000, 0x02020000, 0x00002000, 0x80210400, 0x00800000, 0x00110000, + 0x02620010, 0x08008800, 0x00008000, 0x00400031, 0x08100000, 0x00200000, 0x00003a00, 0x80084020, 0x01002000, 0x4002884a, + 0x00401010, 0x00100400, 0x40040000, 0x02200000, 0x04000288, 0x00206400, 0x00220044, 0x00004000, 0x0080a020, 0x00000002, + 0x00000000, 0x04006044, 0x00100000, 0x00002098, 0x08000200, 0x000a8000, 0x00000004, 0x80204420, 0x00000080, 0x01000800, + 0x000424c8, 0x82401010, 0x10000002, 0x20044020, 0x00c00000, 0x00000088, 0x00008410, 0x00000040, 0x80000804, 0x08804000, + 0x10000008, 0x00101080, 0x02400045, 0x00000200, 0x00002000, 0x002000a0, 0x08000002, 0x20000400, 0x00000850, 0x00020822, + 0x00002044, 0x0cc00400, 0x0006080a, 0x80200020, 0x14000410, 0x00100000, 0x04003000, 0x080800a0, 0x00000008, 0x200a2040, + 0x00040000, 0x08204882, 0x40000400, 0x80040204, 0x00020000, 0x00000022, 0xe2080000, 0x20840698, 0x41140000, 0x8c204004, + 0x00400000, 0x00082400, 0x06028004, 0x00040800, 0x00004010, 0x40200000, 0x10000000, 0x02900210, 0xa00f8004, 0x00200000, + 0x00400442, 0x60380008, 0x00040004, 0x00204020, 0xc00a8000, 0x18000000, 0x80020490, 0x60140240, 0x20012000, 0x00000280, + 0xc0400004, 0x00400040, 0x80000000, 0x00340400, 0x00018000, 0x04000044, 0x00009a00, 0x00002020, 0x00048042, 0x20b04800, + 0x02080010, 0x80021280, 0x40004008, 0x20080008, 0x00841404, 0x90008022, 0x48c40024, 0x00200848, 0x00004280, 0x01000002, + 0x80025004, 0x00000000, 0x01000000, 0x00800082, 0x00000848, 0x00200040, 0x64582624, 0x00840010, 0x00004800, 0x20200002, + 0x04800420, 0x00183000, 0x80000200, 0x00000040, 0x20084000, 0x02000485, 0x0040a82a, 0x00200000, 0x40032844, 0x80040201, + 0x80120082, 0x08009024, 0x00400410, 0x00000040, 0x00012028, 0x00044000, 0x00000040, 0x00000e00, 0x00c24016, 0x00200800, + 0x400c4408, 0x16400040, 0x08201000, 0x80020c26, 0x02482018, 0x00100000, 0x128084c0, 0x00241000, 0x00004800, 0x40000248, + 0x88000002, 0x08020000, 0x00204820, 0x04040004, 0x00000000, 0x10902496, 0x84020000, 0x02000800, 0x200a0004, 0x00000080, + 0x08000400, 0x4100424c, 0x04a00000, 0x00200011, 0x24120820, 0x88081002, 0x00000008, 0x12918285, 0x00204000, 0x20040020, + 0x00002408, 0x000a0000, 0x80840040, 0x08280010, 0x40010a84, 0x00020000, 0x10002006, 0x40408020, 0x02011400, 0x20088010, + 0x08202020, 0x00000400, 0x00004040, 0x80400210, 0x00000000, 0x44442280, 0x00000400, 0x00000800, 0x80084448, 0x083010a0, + 0x41025000, 0x00c00826, 0x30000000, 0x00000002, 0x04001c40, 0x00020008, 0x00044000, 0x0128002c, 0x80800000, 0x00000040, + 0x88064014, 0x04000882, 0x00100084, 0x0204280a, 0x00688400, 0x00100000, 0x04008080, 0x00040460, 0x09002220, 0x8220844d, + 0x10014882, 0x04100040, 0x40c30821, 0x08000000, 0x0000200a, 0x20480640, 0x00000084, 0x80020004, 0x48202028, 0x00158000, + 0x00008000, 0x00120054, 0x00004802, 0x00000004, 0x5200b802, 0x00010404, 0x28001000, 0x00d40014, 0x02000461, 0x400000a0, + 0x00840000, 0x40800080, 0x01000002, 0x0c620040, 0x10004c60, 0x90002000, 0x0a2080a0, 0x00005028, 0x80022000, 0x14c01208, + 0x00040402, 0x00000000, 0x0a240008, 0x0000400c, 0xa4020002, 0x00040000, 0x4000c000, 0x00200280, 0xe8020020, 0x82000c12, + 0x04000400, 0xc2042200, 0x000000d0, 0x20090002, 0x8c008800, 0x10f00028, 0x40002000, 0x0aa40000, 0x00100814, 0x000a8081, + 0x08106000, 0x20000408, 0x40400014, 0x222c2088, 0x00006201, 0x10410012, 0x60140000, 0x00068000, 0x28201080, 0x00030201, + 0x02040402, 0x00500004, 0x12038400, 0x00044040, 0x08200820, 0x00000020, 0x08000040, 0x08080020, 0x00600000, 0x04020810, + 0x12001000, 0x00200c28, 0x00046284, 0x00000000, 0x10082008, 0x04000020, 0x40048004, 0x00084e88, 0x00a00002, 0x800a8420, + 0x48044006, 0x24082000, 0x220400c0, 0x0090000a, 0x00020a04, 0x00200420, 0x04802202, 0x00000040, 0x00220080, 0x00000804, + 0x08001030, 0x02008002, 0xa0002050, 0x00100c08, 0x20044084, 0x00008048, 0x80182000, 0x40000203, 0x000c4c0c, 0x20810000, + 0x00000080, 0x02048014, 0x88420422, 0x02000220, 0x00010005, 0x088200c2, 0x80000c00, 0x00400204, 0x00110040, 0x28a03802, + 0x00200000, 0x80400000, 0x10200020, 0x08400044, 0x00183810, 0x00040040, 0x12200800, 0x00005000, 0x00000804, 0x50081088, + 0x00002002, 0x88020004, 0x000cc000, 0x40800000, 0x8000a280, 0x0000000a, 0x02020064, 0x000060a8, 0x00020400, 0x06b04200, + 0x20040004, 0x00000e00, 0x4c100040, 0x08000808, 0x042022a0, 0x00081402, 0x20100040, 0x02000810, 0x00054000, 0xc0080000, + 0x2000280d, 0x00028000, 0x40004031, 0x000d2044, 0x00000800, 0x12820000, 0x80048000, 0x00104286, 0x00412240, 0x02800090, + 0x08004c01, 0x00200400, 0x00420200, 0x00041240, 0x1800c825, 0x0480000a, 0x00408460, 0x83a00aa0, 0x18004000, 0x00081090, + 0x00040400, 0x10000002, 0x00405000, 0x04000400, 0x00082000, 0x0000000e, 0x00000000, 0x000e4048, 0xc0800084, 0x00008002, + 0x00000000, 0xc0020200, 0x000c0280, 0x80020000, 0x8e800420, 0x40028400, 0x01000000, 0x04240940, 0x08910100, 0x04000800, + 0x00a05030, 0x801a8000, 0x20000010, 0x04200088, 0x00480400, 0x68040008, 0x00322024, 0x40804044, 0x80150000, 0x0000a032, + 0x00020800, 0x80042000, 0x00608002, 0x20010280, 0x12840003, 0x80000400, 0x00002000, 0x00000403, 0x10608060, 0x00110000, + 0x04044440, 0x00421010, 0x00000000, 0x00a00c22, 0x0c000000, 0x00401010, 0x00200000, 0x14020064, 0x00042008, 0x008800c0, + 0x40004000, 0x40044c00, 0x0008008c, 0x20020008, 0x00000020, 0x001c8002, 0x84220000, 0x00000000, 0x40802000, 0x00040282, + 0x00000040, 0x04020208, 0x08041e00, 0x02000000, 0x08200422, 0x10110808, 0x00001010, 0x00200000, 0x00518220, 0x28000008, + 0x00006001, 0x000c0000, 0x00000000, 0x00084000, 0x40050004, 0x00008002, 0x28061000, 0x82e00020, 0x02050000, 0x401282c2, + 0x0080a821, 0x00000440, 0x00800001, 0x88400000, 0x00804004, 0x0000000c, 0x00109000, 0x88200000, 0x40060400, 0x00000828, + 0x00002000, 0x10301010, 0x00204020, 0x04020002, 0x0000001c, 0x0888a040, 0x00000004, 0x40280408, 0x000c4000, 0x80000000, + 0x00060024, 0x2000c2c2, 0x20100000, 0x02080680, 0x04800002, 0x40000800, 0x00000744, 0x14008000, 0x00220820, 0x00004000, + 0x08402001, 0x10040000, 0x80301002, 0x0000c018, 0x00002004, 0x00481080, 0x2080000a, 0x08018000, 0x40240024, 0x20004041, + 0x00021200, 0x80048086, 0x00000040, 0x08100000, 0x0281a003, 0x0000c682, 0x00400020, 0x00000041, 0x2200de03, 0x08240820, + 0x00400000, 0x14000456, 0x00000102, 0x0c000008, 0x002098a0, 0x00104000, 0x00000004, 0x50401280, 0x008c0008, 0x00102010, + 0x04020400, 0x00000002, 0x800c4000, 0x40802284, 0x00020800, 0x80200002, 0x00048004, 0x02800200, 0x04020000, 0x00048880, + 0x04000400, 0x00240040, 0x22185000, 0x08000004, 0x00000800, 0x40220032, 0x10100000, 0x00010000, 0x00000010, 0x000c0200, + 0x70001000, 0x00a2248c, 0x40040000, 0x00284004, 0x88802800, 0x82000020, 0x00128240, 0x00040002, 0x00a00a30, 0x00420085, + 0x42012000, 0x00100000, 0x00c04450, 0x18001080, 0x00040000, 0x00401000, 0xc2100470, 0x08040804, 0x00000000, 0x82eac462, + 0x10000000, 0x00005000, 0x22040688, 0x00002808, 0x40380030, 0x00000404, 0x40040044, 0x00000000, 0x00024002, 0x80a284e2, + 0x00000800, 0x48103000, 0x00c00290, 0x00000004, 0x20084020, 0x00002408, 0x01000000, 0x14801a42, 0x00014801, 0x0030222e, + 0x4c0b0040, 0x20108000, 0x00000004, 0x02200090, 0x00088020, 0x18043000, 0xa0030208, 0x40044454, 0x00000800, 0x00200022, + 0x00000400, 0x20038000, 0x98007006, 0x02412280, 0x00140021, 0x20a00058, 0x00000000, 0x00400040, 0x00001c04, 0x08004000, + 0x10000420, 0x087a0214, 0x08844020, 0x00001800, 0x40208008, 0x90841000, 0x00020010, 0x00000086, 0x02004000, 0x80100010, + 0x04082a08, 0x40224402, 0x00000064, 0x000c0880, 0x88000000, 0x24088008, 0x12020042, 0x00000400, 0x40800290, 0xa8100800, + 0x00184040, 0x84042420, 0x00220004, 0x40201020, 0x838a0002, 0x08400800, 0x00100090, 0x44003009, 0x20400204, 0x20082040, + 0x10001808, 0x02850000, 0x40008002, 0x00000400, 0x00464014, 0x88200002, 0x10420020, 0x02019050, 0x02110401, 0x00a00200, + 0x00080880, 0x00022444, 0x88420020, 0x00005000, 0x08800020, 0x00200060, 0x5418040c, 0x01040450, 0x08201020, 0x80020800, + 0x00100820, 0x10001008, 0x00000006, 0x00085008, 0x00140010, 0x80802480, 0x0002200a, 0x00040004, 0x46204840, 0x00004086, + 0x80020000, 0x10109400, 0x00008082, 0x04000240, 0x20800800, 0x040002e0, 0x08280400, 0x40003004, 0x10140440, 0x08020800, + 0x20200022, 0x90000820, 0x00182018, 0x4a010004, 0x00042010, 0x30881008, 0x00100602, 0x00002008, 0x40168004, 0x02014840, + 0x08024004, 0x80008002, 0x10201400, 0x00c08202, 0x00010040, 0x22280889, 0x080002c1, 0x00000420, 0x12401000, 0x00200440, + 0x04204040, 0x10541000, 0x04600248, 0x00000100, 0x8802490a, 0x08200460, 0x00000000, 0x12040420, 0x10000440, 0x001000a0, + 0x80aa0208, 0x20080000, 0x40040822, 0x02000000, 0x40040104, 0x00000220, 0x90320020, 0x84820004, 0x00000000, 0x63080180, + 0x02800200, 0x08220002, 0x54108180, 0x04600400, 0x08000010, 0x220a0008, 0x08208201, 0x00100800, 0x42000010, 0x00100c00, + 0x10040235, 0x200b0000, 0x20082000, 0x00040490, 0x4a208400, 0x40051110, 0x00002000, 0x90020004, 0x80438040, 0x02806000, + 0xa8388184, 0x02812a00, 0x00000000, 0x10402000, 0x00410001, 0x08028200, 0x10000880, 0x80000000, 0x00040004, 0x00000004, + 0x00220202, 0x040c8000, 0x08001100, 0x00400802, 0x00000800, 0x08000100, 0x20080442, 0x00060108, 0x00008600, 0x0331a008, + 0x08094880, 0x00000c08, 0x00828048, 0x00000406, 0x00048000, 0x48904800, 0x00000885, 0x00002640, 0x04038020, 0x49000804, + 0x00186500, 0x00800060, 0x20180000, 0x40400400, 0x00100124, 0x00c08008, 0x20000100, 0x02480010, 0x04004040, 0x00000000, + 0x00002a00, 0x42018220, 0x00004021, 0x00000200, 0x14000442, 0x10000000, 0x08020024, 0x00600000, 0x28020012, 0x00000002, + 0x02480020, 0x82002402, 0x24800000, 0x10408400, 0x04480280, 0x61000080, 0x10402009, 0x60004000, 0x11012200, 0x41820000, + 0x00008084, 0x0a400001, 0x00200000, 0x40884080, 0x00400041, 0x02000010, 0x04206000, 0x60982000, 0x00000010, 0x02000022, + 0x85020010, 0x02080000, 0x89880010, 0x2000404a, 0x00000000, 0x01000281, 0x00000006, 0x88212000, 0x00024002, 0x09000000, + 0x04080000, 0x41040000, 0x00324001, 0xa0000908, 0x28000000, 0x00800080, 0x20240006, 0x00c00400, 0x20010000, 0x02141000, + 0x01c00002, 0x20005000, 0x00010c00, 0x90900000, 0x40405004, 0x04000000, 0x00000400, 0x0008a004, 0x49200050, 0x00802000, + 0x8a804000, 0x00000008, 0x00200002, 0x80001000, 0x02040004, 0xa001000a, 0x40000000, 0x84000020, 0x25000000, 0x00040008, + 0x80004001, 0x00040084, 0x88000800, 0x00404000, 0x00000001, 0x20010004, 0x00440008, 0x00200000, 0x80500000, 0x00000000, + 0x00e43008, 0x02000000, 0x00021020, 0x80200410, 0x00048000, 0x00010000, 0x00200104, 0x80000000, 0x01024024, 0x40400000, + 0x94020005, 0x80101820, 0x40200004, 0x04008050, 0x00000000, 0x00000a40, 0x02002000, 0x00800000, 0x00001000, 0x80000000, + 0x60084080, 0x00000068, 0x80081002, 0x00004220, 0x20081000, 0x03008024, 0x00400200, 0x00001810, 0x40080010, 0x00c044c0, + 0x20002000, 0x00008008, 0x08006c00, 0x00041005, 0x00000004, 0x01000e20, 0x02028050, 0x00002002, 0x80408000, 0x00018010, + 0x00244200, 0x00090010, 0x00800000, 0x0000400b, 0x10008a24, 0x40000000, 0x20000100, 0x0080a088, 0x00100000, 0x00000a06, + 0x02017001, 0x50000080, 0x00022400, 0x00000040, 0x20018500, 0x000001c0, 0x08008610, 0x00080080, 0x00000000, 0x22000100, + 0x804000a0, 0x4800c000, 0x00000204, 0x00002840, 0x00000006, 0x00008800, 0xb4840200, 0x4a000000, 0x00000c00, 0x00000080, + 0x00020008, 0x04112480, 0x2000c060, 0x01030104, 0x160a0121, 0x00001001, 0x046000c0, 0x00800200, 0x10028710, 0x00080180, + 0x00280012, 0xc0000020, 0x00000000, 0x020a0108, 0x01040740, 0xa8020023, 0x00002440, 0x84048080, 0x00090060, 0x88000000, + 0x021c0014, 0x81014000, 0x42000800, 0x10000020, 0x10044010, 0x81d40800, 0x0000840b, 0x00010000, 0x10241000, 0x03000200, + 0x00002002, 0x00826001, 0x84000002, 0xc8040802, 0x01931404, 0x40002101, 0x01231083, 0x00008000, 0x00600480, 0x20200011, + 0x08041000, 0x00200080, 0x0440c002, 0x00100000, 0x40220440, 0x80800200, 0x00080000, 0x10006080, 0x80100040, 0x40200000, + 0x00818c02, 0x00100020, 0x82000000, 0x24100000, 0x00050800, 0x00100000, 0x2c006000, 0x00400418, 0x01100000, 0x00900000, + 0x00004004, 0x00402000, 0x20000000, 0x00108000, 0x00400000, 0x00c004c0, 0x0c200080, 0x000a0002, 0x88600001, 0x01000440, + 0x00024200, 0x00b80010, 0x20480a20, 0x80020002, 0x04900008, 0x40001050, 0x02210000, 0x00304408, 0x00400000, 0x00000000, + 0x00104000, 0x00040004, 0x20022000, 0x00004000, 0x04110002, 0x00000800, 0x08004090, 0x00109000, 0x0000000c, 0x07002200, + 0x02005082, 0x00000000, 0x08200020, 0x0440000a, 0x00800000, 0x08022004, 0x00208800, 0x00000440, 0x00005200, 0x00100020, + 0x00000000, 0x040404c2, 0x10080000, 0x00403000, 0x48200002, 0x40000000, 0x00000020, 0x00000c00, 0x00020822, 0x00001010, + 0x000000c0, 0x22882209, 0x40004010, 0x04000080, 0x04000008, 0x0000a002, 0x00000014, 0x08200000, 0x00000444, 0x00090211, + 0x00c00080, 0x10000030, 0x00000802, 0x00182068, 0x00000080, 0x00000600, 0x00004840, 0x00100000, 0x20800410, 0xc0000804, + 0x00040000, 0xc0102000, 0x000a2000, 0x00000800, 0x18200000, 0x20000048, 0x10000000, 0x46101400, 0x21044400, 0x00882040, + 0x10200000, 0xc4240030, 0x01020800, 0x00400000, 0x04c01010, 0x80000000, 0x001aa000, 0x20802000, 0x00000800, 0x00240000, + 0x00040044, 0x00000008, 0x94400000, 0x80020210, 0x00108800, 0x28a80000, 0x10102005, 0x00000000, 0x00000440, 0x44400060, + 0x00000000, 0xa0180222, 0x00260080, 0x00001400, 0x72104000, 0x90101200, 0x00028800, 0x00402008, 0x20002400, 0x08000040, + 0x04a34800, 0x00040400, 0x14080008, 0x40518040, 0x0020a000, 0x00400440, 0x00001000, 0x80820b20, 0x48202000, 0x13000002, + 0x00980000, 0x00404050, 0x08201008, 0x04480000, 0x00002800, 0x00000088, 0x00004084, 0x90200010, 0x00008022, 0x14802000, + 0x00020002, 0x0040c400, 0x02140000, 0x48004220, 0x000820c0, 0x10240808, 0x00408450, 0x20000000, 0x20108021, 0x40202b00, + 0x00000000, 0x02c01400, 0x00100000, 0x00400019, 0x80440002, 0x000008c0, 0x0820600c, 0x10800004, 0x00000001, 0x0008c408, + 0x10022000, 0x00308002, 0x00000080, 0x00000205, 0x44080080, 0x00008440, 0x60040400, 0x00001042, 0x00000820, 0x00820089, + 0x10402000, 0x00008000, 0x22200000, 0x088c1802, 0x00102020, 0x00105000, 0x00020000, 0x10000810, 0x20000008, 0x894e0000, + 0x40803084, 0x01000000, 0x40944004, 0x20000888, 0x80000000, 0x24008000, 0x02220402, 0x01000204, 0x008000c0, 0x00520008, + 0x00402000, 0x00080020, 0x24200440, 0x01240800, 0x20001020, 0x02100000, 0x04000010, 0x14001004, 0x00190002, 0x08280080, + 0x20042008, 0xc4008000, 0x00040000, 0x02804040, 0x40020204, 0x04000000, 0xa8620800, 0x00089002, 0x028408a0, 0x00000201, + 0x80080040, 0x14540000, 0x00000400, 0x40200050, 0x08000824, 0x20100008, 0x04600460, 0x08000010, 0x00000004, 0x60201860, + 0x00002010, 0x1010100e, 0x00020000, 0x00042008, 0x20008080, 0x00984000, 0x00040800, 0x00000242, 0x44404004, 0x01020002, + 0x80a080a8, 0x01000040, 0x00404880, 0x00000010, 0x10a05600, 0x20000000, 0x44400008, 0x1280a460, 0x00000000, 0x00201080, + 0x00104830, 0x10040010, 0x00180000, 0x40007006, 0x00002088, 0x00000002, 0x22088450, 0x44024000, 0x00240004, 0x00000000, + 0x00028412, 0x100008c0, 0x88401201, 0x04000000, 0x02900000, 0x20202aa1, 0x00000040, 0x10000000, 0x0c400400, 0x00041000, + 0x04204830, 0x20502000, 0x00080002, 0x10000000, 0x08240208, 0x10000000, 0x20000000, 0xc416c080, 0x80880200, 0x01000004, + 0x20420000, 0x00000002, 0x00000000, 0x40040c00, 0x03020280, 0x00480000, 0x80800054, 0x04802408, 0x03100000, 0x60220000, + 0x04000000, 0x00000800, 0x00480020, 0x10000001, 0x00001000, 0x403c0004, 0x40104001, 0x20002088, 0x10000260, 0x20040004, + 0x020a8000, 0x00100040, 0x80000820, 0x44040400, 0x00800002, 0x82000001, 0x0c180000, 0x00020040, 0x00c00004, 0x0020040c, + 0x02041000, 0x00002022, 0x8c400804, 0x20008080, 0x10000001, 0x80002004, 0x00008ca0, 0x80080000, 0x00000082, 0x00102000, + 0x00041000, 0x00000080, 0x60804428, 0x04000000, 0x02400448, 0x80123014, 0x00004000, 0x00200020, 0x00103082, 0x01800012, + 0x00000400, 0x14002200, 0x00000000, 0x00100000, 0x0048a844, 0x80100004, 0x20004400, 0x00220000, 0x42040182, 0x80000220, + 0x10008800, 0x22480000, 0x00020481, 0x00040018, 0x08000000, 0x44400408, 0x80806004, 0x00000000, 0x00001000, 0x0002881c, + 0x00800000, 0x12000002, 0x004050a0, 0x00080090, 0x08106000, 0x04208640, 0x40000404, 0x00000000, 0x10000860, 0x00178000, + 0x00400400, 0x00000000, 0x09042000, 0xc0204000, 0x20100000, 0x02100000, 0x00008002, 0x11861040, 0x00000000, 0x20002000, + 0x40280c08, 0x00040860, 0x40000000, 0x04284018, 0xa0020000, 0x01100012, 0x02040000, 0x10800000, 0x000c0008, 0x04201000, + 0x00040400, 0x40400800, 0x04000010, 0x01200020, 0x02000802, 0x28100000, 0x80120014, 0x06000000, 0x10c8a080, 0x04608008, + 0x00082001, 0xe8001020, 0x50000840, 0x00000004, 0x000c0400, 0x00000000, 0x20120080, 0x82e42012, 0x70010000, 0x00000200, + 0xc4aa3080, 0x40400048, 0x00024000, 0x0c000400, 0x00001000, 0x08245004, 0x10888640, 0x80200800, 0x0808a042, 0x01400080, + 0x00000000, 0x10101a90, 0x00004804, 0x22000000, 0x80882450, 0x18008008, 0x40024200, 0x00442002, 0x10002010, 0x00200400, + 0x000240f0, 0xc0009802, 0x00080800, 0x2000208a, 0x00c00020, 0x00000400, 0x04204080, 0x80c01240, 0x00100020, 0x08048806, + 0x80a22288, 0x00800010, 0x100002a1, 0x02104804, 0x20082000, 0x00001440, 0x00000008, 0x00028000, 0x4064282a, 0x20004284, + 0x0c020000, 0x80005012, 0x00008401, 0x20000001, 0x10890808, 0x000000c4, 0x00000020, 0x44602084, 0x00801442, 0x80200008, + 0x40086004, 0x10520000, 0x08040000, 0x81208802, 0x00800000, 0x01021000, 0x328c2008, 0x00100010, 0x20002028, 0x04081600, + 0xc0000010, 0x00040000, 0x00204820, 0x41501002, 0x82008002, 0x14121014, 0x01c00004, 0x20800000, 0x00022008, 0x02000c84, + 0x04000000, 0x020cc4c4, 0x00700120, 0x90000880, 0x00020020, 0x0268a000, 0x00000002, 0x22000219, 0x00100004, 0x80060080, + 0x44002408, 0x20480012, 0x00040004, 0x00004800, 0x42800240, 0x00200000, 0x90109000, 0x20024022, 0x06c00000, 0x20082089, + 0x48220000, 0x10000004, 0x44400440, 0x00000800, 0x000008a0, 0x004446c8, 0x00100002, 0x20000100, 0xd6020442, 0x08281858, + 0x00004010, 0x00908a80, 0x10003000, 0x012c0000, 0x4040945a, 0x28122000, 0x10001000, 0x5c042808, 0x00004000, 0x000a0048, + 0x9030c402, 0x00080088, 0x010040a0, 0x22c8c002, 0x4c040000, 0x90000040, 0x40400090, 0x04020c01, 0x00852008, 0x00288440, + 0x04004824, 0x00004000, 0x82930827, 0x40040210, 0x20020028, 0x08088810, 0x80002000, 0x04004081, 0x6844244c, 0x00a10002, + 0x80428c4a, 0x00144034, 0x00080000, 0x04000080, 0xa288802a, 0x00000001, 0x00601c40, 0x10044081, 0x0402a000, 0x00100000, + 0x42840800, 0x002034d0, 0x00200004, 0x08400800, 0x90400420, 0x55148010, 0x08220800, 0x20081208, 0x80000408, 0x34100000, + 0x00082002, 0x41800020, 0x22680208, 0x0806c004, 0x20400812, 0x44048000, 0xc0062000, 0x12202280, 0xa1020002, 0x00820820, + 0x01508000, 0x468c0000, 0x00001450, 0x01284000, 0x84c00800, 0x2001246c, 0x40140001, 0x02e00012, 0x08009004, 0x00092008, + 0xa0521010, 0x00200000, 0x40805000, 0x2238200c, 0x000c2253, 0x00001082, 0x50162004, 0x80008404, 0x00200000, 0x800a0081, + 0x06c08a0a, 0x04000400, 0x42800081, 0x00412045, 0x10288010, 0x04400000, 0x18100028, 0x80229002, 0x00000840, 0x09080030, + 0x20802008, 0x14300810, 0x48041400, 0x0000a004, 0x34180618, 0x80024000, 0x00444002, 0x60002008, 0x00000254, 0x02028088, + 0xa0004012, 0x09400000, 0x00000440, 0x06020200, 0x00800880, 0x24000464, 0x01000080, 0x40700000, 0x00000010, 0x00208a20, + 0x00085000, 0x02800010, 0x0012302a, 0x10000000, 0x20644884, 0x40082018, 0x00008000, 0x10104222, 0x00080000, 0x44840004, + 0x88002001, 0x42204006, 0x00129880, 0x02400481, 0x14804240, 0x08000000, 0x00042040, 0x24001e00, 0x02e8c020, 0x00000820, + 0x04000400, 0x08400084, 0x08080000, 0x400008a8, 0x10342410, 0x11000080, 0x62001010, 0x80100020, 0x0400e042, 0x10080208, + 0x20240414, 0x80004004, 0x40022200, 0x00040000, 0x0080a002, 0x81020000, 0x0240000c, 0x04000008, 0x03020202, 0x40a000e2, + 0x00004440, 0x06480004, 0xa0000010, 0x00028202, 0x30000820, 0x04301040, 0x90082090, 0x02104008, 0x04401204, 0x60242408, + 0x00001002, 0x002a1010, 0x90004240, 0x604c3088, 0x00000804, 0x82828008, 0x00486002, 0x14000051, 0x40004209, 0x82802080, + 0x08000422, 0x00100440, 0x00001085, 0x04640080, 0x00002020, 0x00808402, 0x0c445000, 0x10108800, 0x08000402, 0x80200030, + 0x12001000, 0x20600010, 0x00142040, 0x40002088, 0x20181000, 0x00400000, 0x00004804, 0x61041040, 0x10008020, 0xa0008002, + 0x20a20004, 0x04400480, 0x10004280, 0x83004004, 0x00808038, 0x40600000, 0x06000100, 0x32860c50, 0x00000001, 0x02000801, + 0xa06060a0, 0x00000410, 0x00000000, 0x50901404, 0x20042000, 0x02001008, 0x000a0c20, 0x80044804, 0x60000028, 0x02a00042, + 0xa0120000, 0x00000000, 0x00448203, 0x34800281, 0x82020000, 0x40002000, 0x84004440, 0x08c00200, 0x00100202, 0x80000020, + 0x24404000, 0x88300640, 0x00240020, 0x0c020400, 0x10488a48, 0x00000010, 0x10001002, 0x80100000, 0x00000040, 0x24000008, + 0x984a2620, 0x00000000, 0x00000024, 0x40844000, 0x000a0840, 0x00040004, 0xc040a002, 0x00140008, 0x01822200, 0x000000a0, + 0x840a0800, 0x004044c0, 0x00200086, 0x00070820, 0x00000000, 0x40280000, 0x10009000, 0x80000099, 0x60100060, 0x00000440, + 0x20401208, 0x040c2000, 0x40000000, 0x000c0004, 0x809a4010, 0x00028002, 0x80041040, 0x20000004, 0x02000400, 0x00100a82, + 0x10808001, 0x04482000, 0x00060640, 0x00200009, 0x00006000, 0x20042040, 0x02801200, 0x88004000, 0x04000c60, 0x00b00018, + 0x30186000, 0x00800086, 0x04001030, 0x40400000, 0x000c3000, 0x20100008, 0x40040080, 0x00204202, 0x00800004, 0x82000000, + 0x00168006, 0x00000800, 0x11000000, 0x02080080, 0x00800202, 0x40400440, 0x150400a0, 0x00000810, 0x00205002, 0x04000024, + 0x00900840, 0x00164008, 0x10803000, 0x80000294, 0xa0080008, 0x00003000, 0x08108012, 0x04020040, 0x40604208, 0x1004348c, + 0x00000400, 0x0000c803, 0x90120020, 0x00800008, 0x02080001, 0x00020ae0, 0x00000000, 0x00602200, 0x86800440, 0x88241810, + 0x00000000, 0x1e60c404, 0x00041920, 0x04300200, 0x88008440, 0x00041090, 0x20100402, 0x10080a40, 0xa0086008, 0x00000000, + 0x04000060, 0x00000006, 0x400e1000, 0x10d06408, 0x01008000, 0x80000002, 0x054a0008, 0x009004b0, 0x00020200, 0x12000000, + 0x00004418, 0x00002102, 0xf47000c0, 0x00080809, 0x00200021, 0x00440202, 0x80008000, 0x00100010, 0x304012a0, 0x04042009, + 0x80880000, 0x60020440, 0x00044004, 0x00000000, 0x40400020, 0x92800882, 0x00162000, 0x0008c040, 0x00400280, 0x04800401, + 0x02000002, 0x40000440, 0x0c000000, 0x0244008c, 0x00004020, 0x00001052, 0x04426c84, 0x00842020, 0x00b00888, 0x28400002, + 0x90009000, 0x01060010, 0x40300280, 0x8000a002, 0x20000400, 0x1c0a4808, 0x40404040, 0x00000084, 0x00040820, 0x80828002, + 0x00000040, 0x30001004, 0x00000a80, 0x01200000, 0x80802410, 0x00100400, 0x00000040, 0x24c4c028, 0x00000800, 0x80000008, + 0x04220034, 0x50100402, 0x20004014, 0x0a08b001, 0x00880000, 0x2000a08a, 0x04120220, 0x40000000, 0x000040c4, 0x00040420, + 0x00000040, 0x20010412, 0x90529809, 0x00800aa1, 0x02200000, 0x00002000, 0x00000008, 0x10000400, 0xa4d00045, 0x00000000, + 0x90040800, 0x0c403054, 0x00080000, 0x8a200000, 0x4000c82a, 0x14102000, 0x40021000, 0x21000210, 0x24420000, 0x00a06088, + 0x000c0412, 0x00008000, 0x02044000, 0xc0000054, 0x80320030, 0x01408080, 0x11800802, 0x00800400, 0x40000040, 0x0400a288, + 0x24080860, 0x00640000, 0x00004400, 0x00200030, 0x00100000, 0x6082080e, 0x80102010, 0x50889000, 0x02000001, 0x200a0004, + 0x00204880, 0x8404260a, 0x00000040, 0x50048000, 0x004040b5, 0x0c728800, 0x80000000, 0x02801012, 0x12000000, 0x008006c0, + 0x40202829, 0x64088000, 0x00000040, 0x00540404, 0x00090800, 0x04080000, 0x10040450, 0x48001440, 0x01100000, 0x8028c82a, + 0x00001820, 0x31122010, 0x44800000, 0x04081010, 0x00046000, 0x2002804a, 0x80046008, 0x41400000, 0x00200404, 0x00804004, + 0x02008080, 0x84522062, 0x01008002, 0x20800480, 0x100c1218, 0x006006a0, 0x05000800, 0x02026040, 0x80000470, 0x00350800, + 0x4002800a, 0x00083830, 0x26000000, 0x10144081, 0x40003014, 0x00000000, 0x2488944a, 0x00062008, 0x80000000, 0x421048a5, + 0x90804004, 0x00020002, 0x04209440, 0x00008002, 0x00440201, 0x228808a8, 0x00200281, 0x04400000, 0x40003444, 0x10300440, + 0x004000c0, 0x74084008, 0x04500110, 0x08200010, 0x00042208, 0x08280080, 0x31000400, 0xc6120000, 0x30181904, 0x00040400, + 0x148000a0, 0xa00e0020, 0x01000008, 0x42400510, 0xc0861108, 0x00000025, 0x44100000, 0x80c2000e, 0x01004000, 0x13008000, + 0x02c00800, 0x00200400, 0x041402c0, 0x04402100, 0x00200224, 0x04020c08, 0x18280020, 0x20002804, 0x02141000, 0x50100c90, + 0x20000000, 0x042a0000, 0x20082000, 0x80040012, 0x42401184, 0x40840118, 0x80126800, 0x14000000, 0x80020a02, 0x0040c000, + 0x228000a4, 0x02c19000, 0x00202020, 0x14100402, 0x04400010, 0x00088020, 0x84002800, 0x80008000, 0x04500040, 0x20480080, + 0x02a00004, 0x00080a20, 0x00009000, 0x050000a2, 0x02040340, 0x400a1842, 0x04200000, 0x00004800, 0x11100800, 0x058020c0, + 0x08010000, 0x800844c0, 0x00000920, 0x0840a044, 0x04000000, 0x02050022, 0x00108880, 0x85010030, 0x01004000, 0x02200002, + 0x285a20d0, 0x00210200, 0x2200001a, 0x00040102, 0x50000021, 0x40018100, 0x1a020280, 0x00000010, 0x4442c048, 0x14002000, + 0x000c1000, 0x22200004, 0x80000444, 0x20825128, 0x12800040, 0x51200212, 0x20800141, 0x00201080, 0x90190888, 0x00000405, + 0x00020000, 0x10800400, 0x020e0006, 0x02000c00, 0x40801540, 0x04044002, 0x00028018, 0x18200000, 0x00112000, 0x00800008, + 0x03904000, 0x00010001, 0x00000000, 0x02041000, 0x00004200, 0x42800200, 0x00100008, 0x20461010, 0x02040000, 0x98001000, + 0x01204018, 0x48800200, 0x00ba0002, 0x04000000, 0x10019040, 0x01804000, 0x00048000, 0x00900000, 0x09208400, 0x00900200, + 0x00080000, 0x01000800, 0x28000802, 0x00200000, 0xa0440600, 0x40000001, 0x00000020, 0x40000008, 0x00180000, 0x88002000, + 0x04040000, 0x00004000, 0x00000008, 0x04008000, 0x44800002, 0x00000000, 0x08400080, 0x20102020, 0x59005000, 0x00200000, + 0x18010002, 0x00100200, 0xa0064010, 0x20000680, 0x20007001, 0x80008000, 0x08480002, 0x40020000, 0xa0000002, 0x80458004, + 0x10108090, 0x20200000, 0x00080400, 0x00001218, 0x40001020, 0x00082080, 0x00000800, 0x30001060, 0x00402000, 0xc0000000, + 0x00002090, 0xc0008c85, 0x00000000, 0x800a0000, 0x06001042, 0x20000210, 0x8010c282, 0x00890000, 0x01000008, 0x00000000, + 0x00000040, 0x08030012, 0x000c2004, 0x00600008, 0x00400010, 0x80108c21, 0x40451004, 0x0a080001, 0x20421000, 0x80000000, + 0x20044008, 0x0c000050, 0x00008400, 0x0000000c, 0x00040400, 0x00010040, 0x0402b080, 0x20000108, 0x90000000, 0x00000848, + 0x00040231, 0x00000448, 0x00000825, 0x00404000, 0x00004140, 0x00000800, 0x00404002, 0x00082024, 0x00100180, 0x00000000, + 0x00080c02, 0x00004000, 0x00200000, 0x10000100, 0x8000c202, 0x2c000020, 0x00010140, 0x04080200, 0x20200000, 0x40050000, + 0x00000001, 0x080c0804, 0x10000801, 0x00202460, 0x00050001, 0x00000080, 0x09000080, 0x00008040, 0x40003000, 0x00080002, + 0x10000380, 0x02000000, 0x00206040, 0x90080000, 0x00054403, 0x42000000, 0x90400420, 0x40001802, 0x03040080, 0x10200020, + 0x03206000, 0x00800004, 0x00048442, 0x0a930800, 0x00000014, 0x80180080, 0x00430000, 0x44080000, 0x02202310, 0x28009488, + 0x00020028, 0x86202000, 0x00040840, 0x00004440, 0x00000005, 0xd3020009, 0x00040004, 0x00400080, 0x04040058, 0x40000400, + 0x00200800, 0x01220000, 0x02c0600a, 0x00100810, 0x0000c4a0, 0x02d20100, 0x20002008, 0x04010010, 0x00008000, 0x24604414, + 0x00080a02, 0x00000205, 0x80404c20, 0x00000000, 0x00000040, 0x00400010, 0x01020082, 0x60090400, 0x08408028, 0x000020d0, + 0x00200000, 0x20008000, 0x00120000, 0x00480100, 0x00000002, 0x08088200, 0x00080000, 0x10300020, 0x04000400, 0x49004000, + 0x10201000, 0x20000802, 0x00020000, 0x10240000, 0x00850000, 0x10011000, 0x60080000, 0x00022400, 0x95000008, 0x40058810, + 0x00200000, 0x20100000, 0x08804001, 0x00598002, 0x00000010, 0x00c00000, 0x081c0200, 0x80000000, 0x00000448, 0x04000400, + 0x01000000, 0x82b01000, 0x28000800, 0x80420000, 0x43102008, 0x00041010, 0x00010000, 0x28200000, 0x84042000, 0x00100000, + 0x40054004, 0x08800004, 0x00100808, 0x20100000, 0x00c0000a, 0x00001000, 0x02008400, 0x00020818, 0x80000000, 0x0080a000, + 0x40040004, 0x00000000, 0x20404030, 0x02000000, 0x04000608, 0x00000022, 0x08200020, 0x0040c000, 0x80180210, 0x14108010, + 0x000000c0, 0x00002402, 0x00000800, 0x00001280, 0x00000000, 0x40004004, 0x20000000, 0x800c0400, 0x00000000, 0x00080020, + 0x80003c1a, 0x02808080, 0x00020000, 0x28000874, 0x00444240, 0x00000000, 0x00000008, 0x04008824, 0x00000002, 0x10232080, + 0x18101002, 0x00000000, 0x00000204, 0x24280400, 0x00000a00, 0x80004028, 0x00040004, 0x00100000, 0x40000010, 0x80029002, + 0x00000400, 0x904c0000, 0x0002c002, 0x01000090, 0xa0280400, 0x429002c0, 0x00001010, 0x00204000, 0x04000040, 0x00000000, + 0xa0460010, 0x00040400, 0x00201000, 0x50004000, 0x02001410, 0x00108200, 0x84000020, 0x1088022c, 0x22200000, 0x88000000, + 0x40002800, 0x14400450, 0x00100200, 0xa0060000, 0x00200004, 0x02000000, 0x42180200, 0x10000008, 0x04440002, 0x04080004, + 0x00000002, 0xa0020080, 0x08204050, 0x40000000, 0x22440800, 0x00000020, 0x80800000, 0x00421000, 0x30000008, 0x00100000, + 0x04010800, 0x0c004000, 0x4048a000, 0x10100004, 0x08000020, 0x00040000, 0x00000800, 0x80000120, 0x00000208, 0x00001810, + 0x22024000, 0x00140000, 0x00401410, 0x80c02088, 0x00080200, 0x00100000, 0x0c804200, 0x00100000, 0x02248004, 0x001a0040, + 0x00000000, 0x20008002, 0x64000080, 0x10000220, 0x00400408, 0x00040012, 0x80089400, 0x04000840, 0x01800025, 0x10000808, + 0x00000080, 0x00840010, 0x20000004, 0x08021000, 0x00002008, 0x44020000, 0x10084200, 0x08204084, 0x00001000, 0x00108012, + 0x00400000, 0x00028000, 0x2008202a, 0x080c1808, 0x00000220, 0x20000482, 0x40008000, 0x00200040, 0x84100400, 0x0080c820, + 0x14100400, 0x68000060, 0x00808088, 0x2aa40800, 0x00002022, 0x00501200, 0x14000010, 0x40084000, 0x20400004, 0x80080008, + 0x00242080, 0x40040000, 0x06000804, 0x00024048, 0x00020000, 0x84288002, 0x00000200, 0x00000000, 0x58800080, 0x02108200, + 0x00420008, 0x00002040, 0x44000400, 0x00231800, 0x08800024, 0xb0480018, 0x00001200, 0x00140012, 0x50216004, 0x00020040, + 0x00202080, 0x20980828, 0x00008000, 0x06000c00, 0xc04c4004, 0x84028002, 0x00200020, 0x08800200, 0x00000210, 0x42140080, + 0x08882000, 0x00400040, 0x00000400, 0x04200080, 0x00214000, 0x00480010, 0x00201444, 0x00004800, 0x00002200, 0x08200020, + 0x00008000, 0x80105012, 0x18080208, 0x02080080, 0x20002804, 0xcc820008, 0x00008000, 0x00000004, 0x40044482, 0x00000200, + 0x00008002, 0x80020800, 0x00801460, 0x02100010, 0x08000280, 0x04000440, 0x00400800, 0x00000008, 0x00000010, 0x00203220, + 0x48100808, 0x00100000, 0x10001000, 0x82004096, 0x00088000, 0x20050000, 0x8002220a, 0x00000000, 0x44045000, 0x10800a04, + 0x08100412, 0x80000000, 0x04028040, 0x000000a0, 0x00800000, 0xb2400200, 0x00001840, 0x04488408, 0x10000000, 0x08000010, + 0x20400020, 0x04101012, 0x10080004, 0x00002000, 0x0a208000, 0x0000000a, 0x20900004, 0x10004000, 0x40040600, 0x00028040, + 0x20280000, 0x82001800, 0x40041082, 0x00480000, 0x00000020, 0x00802010, 0x80020240, 0x08801000, 0x10400404, 0x26000008, + 0x00100020, 0x84440000, 0x00081015, 0x10004000, 0x40000080, 0x08600000, 0x30008048, 0x00080000, 0x80102006, 0x60004000, + 0x00880000, 0x02048400, 0xc4061802, 0x00000000, 0x00200000, 0x00000000, 0x000a0680, 0x82804010, 0x00000020, 0x04800000, + 0x02409004, 0x0400080c, 0x00300002, 0x08401000, 0x10000000, 0xe0008000, 0x08040620, 0x80000800, 0x00000000, 0x30101080, + 0x42000000, 0x04000010, 0x00004002, 0x00000020, 0x00020208, 0x88040014, 0x00100440, 0x00004020, 0x14802008, 0x00000000, + 0x10009002, 0x2240420c, 0x00080280, 0x20040000, 0x0000c422, 0x00000408, 0x40044000, 0x00001880, 0x01008000, 0x80000020, + 0x1000080e, 0x04000400, 0x400a0000, 0x28006854, 0x00200400, 0x00000000, 0x00220008, 0x18000000, 0x94000004, 0x0080880a, + 0x10001000, 0x02000002, 0x0040200c, 0x20200000, 0x40000200, 0x00006402, 0x08000000, 0x00000000, 0x00000888, 0x00000005, + 0x04042404, 0x08e05080, 0x01000000, 0x00200908, 0x50800450, 0x02500000, 0x00000002, 0x00280050, 0x08000008, 0x00008400, + 0xe0044020, 0x10000020, 0x40040800, 0x00124000, 0x00008012, 0x08080080, 0x80000200, 0x10000008, 0x008000c0, 0x02000620, + 0x840a0000, 0x00020000, 0x0a608400, 0x00010004, 0x02204800, 0x10000020, 0x80800080, 0x00100010, 0x10480020, 0x00000008, + 0x02480000, 0x60000000, 0x00240200, 0x08000000, 0x40100034, 0x10000000, 0x80001000, 0x42920002, 0x20000200, 0x00010000, + 0x00620000, 0x80000000, 0x04002804, 0x00c40000, 0x00000000, 0x00400444, 0x04000090, 0x40041000, 0x00008002, 0x04304a08, + 0x00020000, 0x02182a01, 0x00801014, 0x00000000, 0x200004c8, 0x00008022, 0x48004000, 0x00002008, 0x00042080, 0x02000070, + 0x84001000, 0x10408a04, 0x00280600, 0x02002000, 0x6080002e, 0x00440040, 0x00000980, 0x04001490, 0x00200004, 0x00008022, + 0xd0026a00, 0x12101000, 0x00000a90, 0x00000000, 0x00084008, 0x60021450, 0x00000800, 0x80408000, 0x40204824, 0x20043080, + 0x80020000, 0x00005210, 0x00008002, 0x00410c00, 0x0000a0c8, 0x10008000, 0x44000000, 0x00400004, 0x80011400, 0x00000000, + 0x02204004, 0x88120202, 0x10000010, 0x40028c02, 0x08400080, 0x00104018, 0x12801680, 0x68080000, 0x20048008, 0x04000040, + 0x00080400, 0x40800000, 0x88201822, 0x22044080, 0x80008000, 0x10100010, 0x004e0000, 0x02000000, 0x04082008, 0x80201a00, + 0x08008020, 0x04008400, 0xd0140050, 0x08000122, 0x840a4c04, 0x20c00080, 0x00000000, 0x42201880, 0x18008414, 0x20000000, + 0x04080428, 0x08160000, 0x40044004, 0x88080062, 0x00800000, 0x02000002, 0x10109000, 0x84420200, 0x00000004, 0x22000008, + 0x00860096, 0x00200c00, 0x0c082206, 0x00011000, 0x08200821, 0x46444200, 0x02b00450, 0x00000900, 0x08020440, 0x20800000, + 0x90001000, 0x02000a92, 0x00104028, 0x40200000, 0xa0681810, 0x00048408, 0x0c940000, 0x00204068, 0x42000000, 0x00000600, + 0x9002f850, 0x00000000, 0x40100800, 0x2208a208, 0x00000000, 0x04021400, 0x40044246, 0x00220020, 0xa0000800, 0x0c128448, + 0x00000032, 0x00080410, 0x10800820, 0x00401200, 0x00088800, 0x80401090, 0x6000400e, 0x04000000, 0x10240028, 0x48004844, + 0x100a8008, 0x80014016, 0x40481480, 0x02000080, 0x649a8002, 0x08200008, 0x80001000, 0x40044480, 0x84002a20, 0x00002000, + 0x02102640, 0x04404010, 0x29081800, 0x84420000, 0x1000802c, 0x04001400, 0x08542010, 0x50000804, 0x000a0000, 0x18502080, + 0x3280d00a, 0x02000020, 0x680c6000, 0x8400024c, 0x00029000, 0x4014040a, 0x80000000, 0x20004088, 0x80020200, 0x0e002830, + 0x50080044, 0x02000480, 0x04000010, 0x00850a00, 0x04000020, 0x28032042, 0x10040000, 0x8a810028, 0x40081030, 0x00204000, + 0x34602002, 0x800a1018, 0x00800020, 0x60280408, 0x00144084, 0xa0000002, 0x58160804, 0x0200c000, 0x08a40480, 0xa00a0802, + 0x06000260, 0x04000004, 0x42840448, 0x10003080, 0x80000000, 0x0600006a, 0x00140000, 0x80202020, 0x10001808, 0x28080000, + 0x10020000, 0x0c101810, 0x40008080, 0x84040042, 0x32000008, 0x00086814, 0x08000200, 0x4004048c, 0x120ac000, 0x00200000, + 0x00048802, 0x90c20400, 0x028000c0, 0x84000208, 0x0020a814, 0x04000440, 0x00400090, 0x10080220, 0x002010a0, 0x44080c00, + 0x2c040000, 0x02105008, 0x18022832, 0x00040400, 0x20080404, 0x10003218, 0x10020840, 0x40000204, 0x00004008, 0x0004a002, + 0x04008000, 0x0202488e, 0x80400040, 0x22000a80, 0x001a8402, 0x00a09000, 0x48000040, 0x04c01420, 0x00800000, 0x00200808, + 0x0a400400, 0x10000010, 0x0a200120, 0x00100800, 0x02000200, 0x80180010, 0x18003000, 0x60040808, 0x20000000, 0x10882028, + 0x80000080, 0x04000806, 0x0084a430, 0x60024088, 0x08000042, 0x82228200, 0x04404410, 0x00900080, 0x8a204800, 0x80020220, + 0x00000440, 0x04480004, 0x00004003, 0x1a008120, 0x44202802, 0x00181018, 0x800010c0, 0x18000010, 0x60124020, 0x80000800, + 0x3008040c, 0x0026a010, 0x42041006, 0x00084220, 0x00001000, 0x00809000, 0x40004042, 0x84020000, 0x00880e00, 0x82000090, + 0x48420020, 0x00200040, 0x24c00480, 0x00900014, 0x08021020, 0x10440600, 0x00108810, 0x080208a0, 0x40008480, 0x00a00040, + 0x00181410, 0x10400000, 0x60040248, 0x20002020, 0x88081000, 0x0002d448, 0x00000000, 0x00146004, 0x40603800, 0x00008002, + 0xa0822000, 0x06040044, 0x48000201, 0x02a00000, 0x00400880, 0x00404042, 0x04100400, 0x50008034, 0x08a00000, 0x040a0ca0, + 0x24008000, 0x00801010, 0x12000000, 0x48500000, 0x04002000, 0x30080000, 0x0006400c, 0xc0000800, 0x100c0000, 0x2020401c, + 0x10808002, 0x40000400, 0xc4060080, 0x00804280, 0xa2024008, 0x00000040, 0x00240406, 0x000a02c0, 0x0c4080a3, 0x18100020, + 0x204a0040, 0x80100200, 0x48008000, 0x00600020, 0x20080800, 0x00400000, 0x10000002, 0x40141410, 0x0c200400, 0x20203208, + 0x00080040, 0x00000004, 0x400c2800, 0x1000c000, 0x80000000, 0x00021200, 0x0a88800a, 0x02800080, 0x00080000, 0x54040200, + 0x04000400, 0x81400000, 0x10004040, 0x00240020, 0x08008000, 0x20000c01, 0x10500000, 0x00000810, 0x440e5044, 0x20800008, + 0x00182200, 0x04000020, 0x00000004, 0x40044000, 0x80820002, 0x80000000, 0x000e9002, 0x00000804, 0x00002000, 0x00020080, + 0x06800200, 0x04000000, 0x00000280, 0x88604668, 0x08009800, 0x06104800, 0x00001444, 0x00000000, 0x00020d00, 0x0c200020, + 0x02102200, 0x00001810, 0x94000c28, 0x00000048, 0x00085000, 0x30942000, 0x00044000, 0x00002400, 0x402a2884, 0x18820030, + 0x00008402, 0x80000000, 0x00000001, 0x02800280, 0x00004840, 0x00400000, 0x04040040, 0x200094a2, 0x08000810, 0x04300400, + 0x00800428, 0x00880000, 0x8000d880, 0x10302010, 0x00080000, 0x20000008, 0x0610a416, 0x08004000, 0x00200004, 0x400c1000, + 0x00000020, 0x00000a00, 0x840280c6, 0x00000080, 0x02801202, 0x8004000a, 0x40000040, 0x084406b0, 0x06000800, 0x00200004, + 0x02080000, 0x04500844, 0x002c0800, 0x08000008, 0x46800020, 0x10001000, 0x20100010, 0x80008002, 0x20000008, 0x42802880, + 0x040c8440, 0x40020a06, 0x00080000, 0x008450a0, 0x08008002, 0xc0400000, 0x00027000, 0x00000080, 0x04300000, 0x02820600, + 0x30008442, 0x00000000, 0x04460000, 0x00200901, 0x04100024, 0x48088002, 0x00020000, 0x50100008, 0x20001650, 0x04040008, + 0x00000000, 0x200820e0, 0x40060004, 0x80480000, 0x10004a00, 0x04020022, 0xc0048000, 0x28202010, 0x02c04280, 0x80201000, + 0x00002000, 0x00400040, 0x04000402, 0x08010088, 0x00000a01, 0x2440a440, 0x00000202, 0x002040ac, 0x00100000, 0x08409c02, + 0x00001050, 0x00000080, 0x54b00201, 0x02088040, 0x20002008, 0x04105000, 0x08000414, 0x00100010, 0x70644000, 0x00000c28, + 0x20028002, 0x80101200, 0x00000205, 0x02c008a0, 0x84082050, 0x0440000c, 0x40200440, 0xa0900010, 0x08244800, 0x00000020, + 0x12c09003, 0x00905040, 0x00400014, 0x1a2c0008, 0x000820a0, 0x2800820a, 0x00100400, 0x80001000, 0x00060080, 0x48004064, + 0x00200008, 0x00010402, 0x80129810, 0x12000880, 0x00000020, 0x2482c208, 0x00002440, 0x04001000, 0x00c88000, 0x0200000c, + 0x10420000, 0x00004414, 0x4b240000, 0x00081820, 0x0010808a, 0x50020000, 0x00540000, 0xa2001211, 0x00084000, 0x08420000, + 0x3480a4e8, 0x00004000, 0x40040000, 0x80000804, 0x0c000000, 0x00020210, 0xd2208042, 0x02800000, 0x00100600, 0x00003084, + 0x040c0800, 0x00000020, 0x6a400648, 0x18298014, 0x01011800, 0x84000222, 0x20100010, 0x10001008, 0x00020200, 0x62004080, + 0x008a2004, 0x8404844a, 0x00000000, 0x42c44004, 0x28000890, 0x8000a020, 0x04220008, 0x10001412, 0x42800000, 0x00180200, + 0xc0040080, 0x00002020, 0x14020848, 0x28601404, 0x48000020, 0x40000040, 0x14503400, 0x00000450, 0x08240800, 0x00000028, + 0x20100830, 0x10080000, 0x02809203, 0x60003010, 0x000c4008, 0x00000480, 0x4004a008, 0x84024000, 0x0a603245, 0x0000c006, + 0x80000000, 0x00020400, 0x040080c3, 0x10100000, 0x4a881210, 0x00000ac0, 0x04400020, 0x20000408, 0x10060450, 0x48201220, + 0x80008802, 0x30081830, 0x00100008, 0x06000080, 0x40041018, 0x00004004, 0xa088a622, 0x40062008, 0x04404004, 0x0a1808a0, + 0x00824004, 0x80002008, 0x101c9002, 0x04008602, 0x00880080, 0x2a002822, 0x44440280, 0x00200040, 0x9000140c, 0x00000440, + 0x04400028, 0x30000080, 0x04500100, 0x00004082, 0x08220140, 0x28384480, 0x0000a000, 0x92000000, 0x70344024, 0x00200124, + 0x040a0000, 0x20082210, 0x80008000, 0x4a440011, 0xe0040000, 0x00004024, 0x04028000, 0x80024404, 0x02800230, 0x08181010, + 0x02c08084, 0x04000802, 0x20000008, 0x14400000, 0x00004100, 0x8a2e0804, 0x28300400, 0x00402400, 0x12000000, 0x70144460, + 0x00000080, 0x840a0a02, 0x200c3800, 0x00000020, 0x4a000080, 0x408c2049, 0x800a0001, 0x14000000, 0x80020400, 0x00003040, + 0x2a800114, 0x02810000, 0x0422a000, 0x10482000, 0x04400000, 0x080082c2, 0x00120a00, 0x80020048, 0x01040800, 0x0400300c, + 0x08400000, 0x90140000, 0x00041c90, 0x00028000, 0xc0000211, 0x00121000, 0x20000000, 0x00004840, 0x430002c0, 0x00040018, + 0x88292808, 0x20000002, 0x844a8000, 0x20401000, 0x42044800, 0x00120260, 0x0aa02008, 0x00022010, 0x00910000, 0x20001040, + 0x28800040, 0x04210802, 0x00800268, 0x44049900, 0x00400205, 0x00010000, 0x00224009, 0x02000010, 0x00020002, 0x40008000, + 0x00845810, 0x02600082, 0x04004820, 0xa0040000, 0x01108020, 0x00101000, 0x5a014800, 0x0800008a, 0x00005019, 0x24820080, + 0x60204004, 0x20000000, 0x12001000, 0x40100000, 0x52820200, 0x00000020, 0x00000800, 0x00880148, 0x49400400, 0x131c0000, + 0x0a002803, 0x08000000, 0x0008010a, 0x84000004, 0x01901502, 0x00800000, 0x4a0000c1, 0x01342800, 0x10000000, 0x00080042, + 0x01004000, 0x01000020, 0x10408080, 0x02000002, 0x90010400, 0x00542010, 0x09008010, 0x100a0080, 0x29020010, 0x12000000, + 0x01100000, 0xc0808080, 0x20580444, 0x8d000004, 0x20001200, 0x01100020, 0xc0800200, 0x20010000, 0x10400012, 0x028a0008, + 0x00004000, 0x20880001, 0x04000000, 0x00100400, 0x10040000, 0x04400080, 0x00800000, 0x00080000, 0x08408110, 0x00281080, + 0x02200008, 0x20000000, 0x00400000, 0x00001002, 0x20010020, 0x90001008, 0x44a00080, 0x00420000, 0x000c0000, 0x00410000, + 0x10021200, 0x00000020, 0x0000a000, 0x04000090, 0x90800060, 0x08641210, 0x44004400, 0x00002000, 0x40000003, 0x04220800, + 0x40082028, 0x02000081, 0x00000000, 0x00001008, 0x80000000, 0x20000001, 0x00000008, 0x00200000, 0x00000000, 0x14000000, + 0x08010000, 0x00000120, 0x08220005, 0x00002008, 0x04400000, 0x00070010, 0x01200081, 0x00000844, 0x82600000, 0x08480000, + 0x040c4440, 0x10000008, 0x00800000, 0x00024002, 0x00000804, 0x08210ec2, 0x80088024, 0x00001600, 0x10000140, 0x00010494, + 0x00012000, 0x84820800, 0x000024a0, 0x10008400, 0x00010100, 0x00008c80, 0xc0000001, 0x00001000, 0x10000000, 0x00000201, + 0x00100004, 0x20001001, 0x00000040, 0x00800484, 0x1000c080, 0x00000404, 0x00000100, 0x02202004, 0x00080030, 0x00000b00, + 0x00000082, 0x02006010, 0x2442a000, 0x00200440, 0x00402100, 0x02000091, 0x10202000, 0x00208000, 0x04000000, 0x00008001, + 0x14068060, 0x00082100, 0x00000408, 0x20000004, 0x00004000, 0x20200800, 0x8248a010, 0x05000044, 0x00140400, 0x74080000, + 0x00020000, 0x20802008, 0x50020070, 0x08908000, 0x20400001, 0x01088010, 0x40400008, 0x01000040, 0x00285018, 0x12c04044, + 0x00000002, 0x00024014, 0x802c0002, 0x20010408, 0x08a0c002, 0x80000080, 0x00002820, 0x4c400018, 0x30020040, 0x09000000, + 0xa62c4000, 0x01400800, 0x30110062, 0x00000200, 0x07014042, 0x00c00014, 0x00800081, 0x00001000, 0x41809000, 0x10044060, + 0x08180002, 0x00044004, 0x00434062, 0x40150882, 0x80001080, 0x00004802, 0x00204400, 0x00010200, 0x100110a0, 0x80100002, + 0x00000000, 0x00000280, 0x20104002, 0x42000000, 0x89a00100, 0x00448000, 0x02500000, 0x00000800, 0x80240440, 0x02040080, + 0x0a000800, 0x00180080, 0x80000020, 0x24142000, 0x41001010, 0x08950800, 0x24000008, 0x00000400, 0x40500000, 0x11000000, + 0x00830004, 0x00040000, 0x8010c038, 0x00400002, 0x840c0000, 0x00800240, 0x08100280, 0x04820000, 0xc062000c, 0x00140040, + 0x00080000, 0x88010002, 0x00088020, 0x00000000, 0x00110088, 0x45020c00, 0x02800200, 0x88000000, 0x200a2000, 0x01801028, + 0x40000000, 0xc8804004, 0x02300000, 0x00080000, 0x00402002, 0x00000000, 0x00001008, 0xa000a036, 0x00100900, 0x00000008, + 0x02040010, 0x00080080, 0x04004000, 0x00400000, 0x80002008, 0x14008004, 0x00000c24, 0x00004100, 0x00800040, 0x10000000, + 0x08000012, 0x000041c4, 0x24102c00, 0x00001208, 0x00200080, 0x00044020, 0x00000014, 0x00100400, 0xc0021800, 0x00000000, + 0x00008008, 0x02801092, 0x00002000, 0x08000004, 0x04420240, 0x00000000, 0x4010000a, 0x08000820, 0x0080c200, 0x0000008c, + 0x10101010, 0x00000000, 0x04400002, 0x00080008, 0x00002200, 0x000000c0, 0x60000820, 0x00044000, 0x80901490, 0x80028800, + 0x00100004, 0x00048040, 0x00000000, 0x40000280, 0x20200102, 0x000020c0, 0x10000440, 0xc01c1000, 0x00400004, 0x00000400, + 0x202a0120, 0x08200020, 0x84040000, 0x22000000, 0x90120410, 0x00000200, 0x00442000, 0x00082008, 0x04000000, 0x00a01000, + 0x40000002, 0x04000000, 0x88140880, 0x00009300, 0x08004014, 0x202800a0, 0x0000400a, 0x00001000, 0x80160030, 0x420a0000, + 0x00000000, 0x84500820, 0x00044022, 0x02201080, 0x40000000, 0x80801010, 0x08010000, 0x40028400, 0x22402000, 0x10110080, + 0x08a28200, 0x40040004, 0x00000008, 0x14580000, 0x20201008, 0x00000410, 0x02800040, 0x101000a0, 0x00044008, 0x00021800, + 0x04004400, 0x80000000, 0x0a443030, 0x04400000, 0x0008800a, 0x18002414, 0x00105040, 0x00000184, 0x00040000, 0x14308002, + 0x00000800, 0xc0000100, 0x00000001, 0x00044880, 0x40008460, 0x00040440, 0x00080008, 0x04000000, 0x00810000, 0x00006208, + 0x00c01830, 0x820100c0, 0x00180410, 0x00801000, 0x00204200, 0x044c8008, 0x00002004, 0x08a14004, 0x00040000, 0x00000012, + 0x10008000, 0x021208c2, 0x00004204, 0x04400a80, 0x00000014, 0x8000400a, 0x04080000, 0x20008050, 0x00040020, 0xc0004001, + 0x80000048, 0x00000000, 0x01000800, 0x1a280004, 0x0010002a, 0x00100010, 0x24001000, 0x10200004, 0x00000088, 0x20002000, + 0x044c0000, 0x00008000, 0x40041000, 0x9008600c, 0x00020000, 0x04408002, 0x82200080, 0x02000080, 0x00000100, 0x88101000, + 0x00500000, 0x34080400, 0x00008040, 0x01280000, 0x02000824, 0x48000008, 0x10101010, 0x80440002, 0x60000a00, 0x28080008, + 0x00026000, 0x00200080, 0x00000000, 0x10144000, 0xc4480804, 0x00000000, 0xa0088000, 0x02820092, 0x00010000, 0x08a000c0, + 0x06482200, 0x10000800, 0x84020000, 0x00400040, 0x08a00800, 0x00080000, 0x04701c00, 0x08000000, 0x00040830, 0x00202000, + 0x00001018, 0x10000000, 0x20100000, 0x00002202, 0x02080000, 0x6002400c, 0x00000004, 0x00104800, 0xc0048180, 0x00000040, + 0x80080402, 0x28228000, 0x00500000, 0x02000120, 0x00082092, 0x00000800, 0x00400040, 0x64041400, 0x18000830, 0x00200000, + 0x2000e000, 0x00000000, 0x14121204, 0x80804018, 0x00002000, 0x00010080, 0x200c8008, 0x42000000, 0x04004040, 0x00060006, + 0x04220200, 0x00110010, 0x988088a2, 0x02001000, 0x00000000, 0x408102c0, 0x04000040, 0x30400028, 0x00080800, 0x00000030, + 0x00000824, 0x24480000, 0x00180180, 0x40000200, 0x18202010, 0x30008480, 0x00100002, 0x80040108, 0xc0084c40, 0x00000000, + 0x24020004, 0x00040012, 0x00000010, 0x48008000, 0x80000080, 0x00020900, 0x02001020, 0x00000440, 0x04200010, 0x02400000, + 0x0c020018, 0x00008800, 0x00484001, 0x00000004, 0x08000080, 0x103cb200, 0x60000202, 0x10000000, 0x00100000, 0x02020804, + 0x04010000, 0xa0ccc000, 0x00000800, 0x40000200, 0x00050000, 0x02822020, 0x00201010, 0x800000c0, 0x02800000, 0x04410004, + 0x00100000, 0x0c600008, 0x00080804, 0x20004001, 0x10108000, 0x00304000, 0x1082a202, 0x60008002, 0x02800020, 0x040018c0, + 0x00480000, 0x80000000, 0x00002238, 0x00000508, 0x42000800, 0x00462004, 0x94005100, 0x18000000, 0x00003806, 0x22000000, + 0x00000002, 0x00400000, 0x40040114, 0x10001089, 0x04000640, 0x00002400, 0x28004004, 0x50000080, 0x01000000, 0x00000802, + 0x00081040, 0x20800010, 0x46000000, 0x00045660, 0x00400000, 0x0c200000, 0x8001088c, 0x08200804, 0x00100000, 0x0002400a, + 0x10490000, 0x04902020, 0x00000282, 0x00000208, 0x40000010, 0x20000080, 0x80000004, 0x40200000, 0x00080480, 0x10040802, + 0x20400400, 0x88200000, 0x02000824, 0x00200000, 0x00100102, 0x00006010, 0x12020000, 0x24700448, 0x20080000, 0x0040200a, + 0x00040040, 0x00100804, 0x00144400, 0x8c080008, 0x90220202, 0x00000000, 0x02404018, 0x00900088, 0x00042300, 0x00088000, + 0x00000004, 0x40000000, 0x34100400, 0x00810002, 0x0a201000, 0x00880800, 0x80901200, 0x00020000, 0x2a010010, 0x00000048, + 0x00000000, 0x004c4010, 0x50300200, 0x10004024, 0x82060000, 0x80000082, 0x00020800, 0x0080001c, 0x00081000, 0x00100280, + 0x06e5c002, 0x00400000, 0x20004400, 0x0c869000, 0x00020004, 0x00004424, 0x00001240, 0x00200020, 0x90088042, 0x00002440, + 0x02000000, 0x00120899, 0x10001020, 0x00444008, 0x20080440, 0x0800a006, 0x00000000, 0x00206808, 0x0c041034, 0x10000040, + 0x84129012, 0x20080580, 0x28080081, 0x00802028, 0x80000800, 0x04000000, 0x00004084, 0x800606c1, 0x88300000, 0x4000086a, + 0x00403010, 0x02000000, 0x00980280, 0x0041d010, 0x00082008, 0x00401040, 0x00068800, 0x08040020, 0x4020280a, 0x00005084, + 0x00038000, 0x80001050, 0x40080002, 0x20900000, 0x02092088, 0x00000220, 0x44001000, 0x00044a44, 0x00400000, 0x00200000, + 0x4020c000, 0x38800400, 0x08140000, 0x81000422, 0x00002008, 0x20020110, 0x12089081, 0x00104000, 0x00000200, 0x240c2448, + 0xc0020000, 0x00000004, 0x08200822, 0x020c6301, 0x00008002, 0x10140098, 0x80400000, 0x2c000100, 0x0000a088, 0x42000000, + 0x04408c44, 0x402c4000, 0x10100002, 0x00000020, 0x08028600, 0x00400802, 0x10141000, 0x028100b0, 0x40004a00, 0x00000004, + 0x04082048, 0x28000020, 0x80844404, 0x48200028, 0x00010000, 0x00000000, 0x10129a82, 0x84400410, 0x00000200, 0x20082800, + 0x82800088, 0x00000040, 0x00044000, 0x04408004, 0x082000b2, 0x444460c4, 0x02020080, 0x10002108, 0x88028440, 0x20000030, + 0x10181100, 0x0a000420, 0x00400014, 0x20082000, 0x04d410d0, 0x80124008, 0x000041a0, 0x000c200c, 0x0880800b, 0x00000000, + 0x90104044, 0x0000c402, 0x00200000, 0x22008113, 0x08041080, 0x0000010a, 0xc55ac5d4, 0x00002820, 0x00003808, 0x84000442, + 0x08000020, 0x00020050, 0x18019ca0, 0x46104004, 0x20080020, 0x00409012, 0x00002008, 0x00100010, 0x000e605c, 0xc4010400, + 0x10000002, 0xa8204014, 0x4206c280, 0x00800084, 0x22089202, 0x00042060, 0x00400012, 0x44250280, 0x00800840, 0x00182805, + 0x428404b0, 0x04401002, 0x00008002, 0x04500860, 0x1e002100, 0x00440090, 0x0e921004, 0x30280000, 0x00006800, 0x90500010, + 0x2028081a, 0x08044400, 0x22382900, 0x10000025, 0x80408040, 0x10144006, 0x00000004, 0x02002508, 0xa0088002, 0x04000890, + 0x40100000, 0x1a040440, 0x04400010, 0x09808024, 0xa4400c00, 0x00013400, 0x00000000, 0x0a141034, 0x10084200, 0x082020c0, + 0x70501000, 0x00099008, 0x40020006, 0xaea82200, 0x20146088, 0x84020012, 0x50148008, 0x00000060, 0x02000208, 0xa88a0002, + 0x406008a0, 0x04001004, 0xc2c00040, 0x10000000, 0x00000020, 0x800000c0, 0x10000c04, 0x08100010, 0x04400820, 0x00281000, + 0x10106500, 0x88001810, 0x4800002a, 0x04400c4c, 0x08082010, 0xb0020000, 0x00048002, 0x0008410c, 0x40200080, 0x10000002, + 0x02040014, 0x84428160, 0x0a000080, 0x00009023, 0x80000c08, 0x04041040, 0x00400480, 0x02300000, 0x40200030, 0x08028846, + 0x00000200, 0x34182008, 0x00001010, 0x00000200, 0x00004048, 0x12083000, 0xe0800086, 0x48240004, 0x20084088, 0x04018200, + 0x000a0840, 0x8000a002, 0x00400000, 0x12800010, 0x80210282, 0x000a4006, 0x04040820, 0x08430008, 0x02008050, 0x08200000, + 0x0c400004, 0x00380810, 0x00200020, 0x04401842, 0x28000080, 0x80004048, 0x1a181810, 0x0060a440, 0x00082008, 0x00200404, + 0x60048080, 0x00060000, 0x40106134, 0x84002882, 0x06000002, 0x90020000, 0x0000d510, 0x20400084, 0x02100020, 0x08000040, + 0x00008040, 0x04243404, 0x80404890, 0x10000823, 0x08200000, 0x00180000, 0x00800080, 0xaa101810, 0x10000008, 0x48022808, + 0xb00c0044, 0x00004000, 0x00000090, 0x68086024, 0x02050202, 0x80600008, 0x00808002, 0x000a1000, 0x00802204, 0x90000088, + 0x06010060, 0x04004800, 0x00410010, 0x08200040, 0x20008a21, 0x04400400, 0x000202a0, 0x81208020, 0x00800800, 0x38106016, + 0x02001010, 0x14080100, 0x40140080, 0x00080048, 0x00001000, 0x28826820, 0x04044000, 0x40480100, 0x80008084, 0x0000900a, + 0x80022400, 0x64200860, 0x10000101, 0x42008080, 0x00164030, 0x0c200400, 0x00004042, 0x00402810, 0x80000000, 0x0a3008a0, + 0x30000408, 0x02081210, 0x0c508420, 0x50202080, 0x00000008, 0x20080800, 0x0030e000, 0x00001004, 0x40081008, 0x88266000, + 0x82800220, 0x00010800, 0x4006800a, 0x00400200, 0x14048000, 0x0a8100c0, 0x00220000, 0x10402000, 0x04020860, 0x00000020, + 0x00800000, 0x00000040, 0x08200800, 0x06044020, 0x34000010, 0x10000080, 0x08121010, 0x000c0000, 0x00000004, 0x20183008, + 0x00001110, 0x40100000, 0x10080044, 0x200c4000, 0x00000000, 0x80088002, 0x04021000, 0x10040088, 0x80082900, 0x02400002, + 0x80000040, 0x00000410, 0x0e620200, 0x08000000, 0x04200000, 0x30401860, 0x00000000, 0x00b04010, 0x90081040, 0x00012080, + 0x00400200, 0xfa080028, 0x40004000, 0x00080040, 0x30040004, 0x000a8002, 0x20200010, 0x80400000, 0x20003800, 0x02098080, + 0x00808200, 0xc4000044, 0x00c54200, 0x00000090, 0x08a10800, 0x00844060, 0x84c00c10, 0x00000000, 0x04000000, 0x08201e68, + 0x00002000, 0x00000000, 0x18101096, 0x00022100, 0x0040d000, 0x20080408, 0x80000046, 0x400c4000, 0x0c200189, 0x80020000, + 0x00000800, 0x00008106, 0x00100001, 0x82000450, 0x000000a2, 0x04004800, 0x00400000, 0x00801450, 0x00040820, 0x04000000, + 0x0c210000, 0x00182008, 0x10021020, 0x00000430, 0x240c8004, 0x00002008, 0x00c05000, 0x02040800, 0x4008400c, 0x80100408, + 0x80000200, 0x00008082, 0x00020040, 0x00210080, 0x00808200, 0x4608080a, 0x00402020, 0x20000240, 0x86008001, 0x00004000, + 0x26c00040, 0x10024280, 0x00000000, 0x0c200830, 0x021c8000, 0x0014501c, 0x18000000, 0x802000a2, 0x200a000a, 0x00000100, + 0x84002040, 0x00044000, 0x00000090, 0x40002024, 0x00000800, 0x0012a002, 0x82004000, 0x02000400, 0x80600180, 0x8c000008, + 0x10482050, 0x05001400, 0x00020084, 0x40200000, 0x0c100820, 0x00020042, 0x30000000, 0x00000018, 0x04191200, 0x40000808, + 0x22080000, 0x00d22004, 0x04014000, 0x000c0000, 0x42800806, 0x00000022, 0xd0020200, 0x0400c010, 0x02800080, 0x00600000, + 0x40018208, 0x08000040, 0x34000800, 0x00460084, 0x00005810, 0x00403450, 0x00284028, 0x08a00820, 0x00002000, 0x24c08006, + 0x00001080, 0x00404044, 0x1a180919, 0x00008000, 0x20080822, 0x14123008, 0x00000864, 0x40800000, 0x80245401, 0x00008042, + 0x84000500, 0x30021080, 0x02000181, 0x00002020, 0x08120010, 0x00201408, 0x84108940, 0x40c40006, 0x89208b11, 0x00804020, + 0x02420680, 0x00105092, 0x00080004, 0x12842208, 0x80200008, 0x60000022, 0x042a2000, 0x40000244, 0x00004080, 0x38248010, + 0x00022002, 0x80003848, 0x54948034, 0x02002200, 0x00810020, 0x00400088, 0x04280800, 0x00000040, 0xa2c00200, 0x08020000, + 0x00000002, 0xe8004414, 0x202a0100, 0x08001000, 0x0004892a, 0x80102000, 0x10001010, 0x00044405, 0x22000000, 0x88282008, + 0x000080d2, 0x44400020, 0x12044004, 0x00100d01, 0x28000080, 0x90020008, 0x402c9502, 0x02102041, 0x40000000, 0x0c40c8b0, + 0x24000008, 0x00000000, 0x40484454, 0x002c0020, 0x08001000, 0x3013a802, 0x80100008, 0x10001000, 0x40000294, 0x02816000, + 0x88080008, 0x24068042, 0x00c00020, 0x4a000004, 0x00245800, 0x00408000, 0x10000282, 0x80021050, 0x02112000, 0x04840280, + 0x20000808, 0x00020020, 0x00080000, 0x0c600054, 0x282d0020, 0x04000440, 0x10505016, 0x00000c40, 0x00000120, 0x4824a00a, + 0x300a0820, 0x00100010, 0x02005045, 0x00001010, 0x00440100, 0x2008a48a, 0x00042008, 0x84004000, 0x4a000805, 0x00026184, + 0x00208000, 0x84101122, 0x1000c4c3, 0x00440000, 0x0a082910, 0x004002a0, 0x20008000, 0x041014cc, 0x40040470, 0x10200800, + 0x08022002, 0x30080838, 0x80500000, 0x420192a4, 0x20081018, 0x00046000, 0x04000042, 0x8004a008, 0x08024000, 0x40a00aa4, + 0x8000c004, 0x020a0000, 0x30100052, 0x00408002, 0x06000200, 0x088938a8, 0x20000280, 0x04600040, 0x10004014, 0x40000440, + 0x000008c8, 0x14101000, 0x04400220, 0x00004000, 0xc8280200, 0x28200020, 0x10000800, 0x02120000, 0x10140010, 0x00080040, + 0xa0000120, 0x70088080, 0x00001140, 0x0e04000c, 0x400e1040, 0x000008a1, 0x80000052, 0x84022000, 0x00404000, 0x0a100000, + 0x06882a00, 0x00400002, 0x40041008, 0x04408400, 0x18300110, 0x00020002, 0x28300000, 0x10084088, 0x44840000, 0x10188900, + 0x00001102, 0x2e030020, 0xa0082000, 0x40000446, 0x08841000, 0x400c0094, 0x02000000, 0x94220068, 0x82430402, 0x00000000, + 0x28880001, 0x02810084, 0x00208008, 0x14442410, 0x04610600, 0x00048000, 0x20000480, 0x00000000, 0x860008a0, 0x00c83004, + 0x0c000440, 0x00080080, 0x00000904, 0x50000000, 0x42600000, 0x0a001015, 0x00200222, 0x8414401a, 0x00000201, 0x01010404, + 0x02216000, 0x20088000, 0x00009028, 0x04400000, 0x0a000006, 0x10804018, 0x00400000, 0x04014000, 0x00402011, 0x10100204, + 0x40012000, 0x006c8842, 0x10022440, 0x40064000, 0x14100085, 0x43880200, 0x00900015, 0x0a000800, 0xa0000010, 0x10000640, + 0x0a004008, 0x10a00801, 0x00080886, 0x00000090, 0x10c04044, 0x00008010, 0x10020002, 0x08504020, 0x00001001, 0x00600080, + 0x02206004, 0x12942000, 0x0100801a, 0x10000440, 0x01120100, 0x20040000, 0x02008009, 0x90006430, 0x08070000, 0x01064080, + 0x00800000, 0x00400400, 0x400a0000, 0x10000000, 0xc0000000, 0x08800000, 0x4002080c, 0x04100402, 0x10020000, 0xc10090c0, + 0x402a0104, 0x220704a0, 0x188c0000, 0xa0000000, 0x40200040, 0x2c001004, 0x02000020, 0x80810010, 0x80500000, 0x00200040, + 0x00400008, 0x00022800, 0x002800a0, 0x00440008, 0x21000001, 0x00020000, 0x01009000, 0x22402000, 0x44040000, 0xc0041400, + 0x08201000, 0x40082000, 0x00810200, 0x0414000a, 0x22080000, 0x08000004, 0x80020010, 0x00480400, 0x40224820, 0x00002004, + 0xc0800001, 0x20312002, 0x00200000, 0x25100200, 0x20804040, 0x00082000, 0x80010a00, 0x00000400, 0x00400003, 0x10140410, + 0x0000c000, 0x00200020, 0x28088002, 0x80803440, 0x00100000, 0x04000000, 0x00000880, 0x82208008, 0x00100042, 0x00004004, + 0x00805010, 0x08000020, 0x00000080, 0x20080002, 0x00000040, 0x20010020, 0x00040000, 0xc4000808, 0x00000000, 0x40100008, + 0x00c55210, 0x80108080, 0x08010801, 0x02281008, 0x041084c1, 0x80000000, 0x01005020, 0x20040020, 0x90800008, 0x40000034, + 0x0000c020, 0x00100848, 0x00880000, 0x00028202, 0x10001010, 0x01200020, 0x00028484, 0x00000000, 0xc2005082, 0x01000400, + 0x00808004, 0x8802008b, 0x00408020, 0x00000004, 0x02102804, 0x40003003, 0x00000090, 0x04404800, 0x00000008, 0x01010082, + 0x00001030, 0x00042408, 0x04000071, 0x000a1000, 0x00048a08, 0x20000020, 0x00000b06, 0x00000400, 0x60002810, 0x00000501, + 0x0045c00c, 0x00010000, 0x00001490, 0x00002002, 0x00008504, 0x00810080, 0x01002c04, 0x04000002, 0x00020034, 0x80082000, + 0x00020200, 0x20300101, 0x00040808, 0x0c001040, 0x00004001, 0x00080400, 0x00000000, 0xd2000084, 0x00142000, 0x20000040, + 0x04000400, 0x10840000, 0x00000060, 0x08018000, 0x20400000, 0x00040000, 0x01211000, 0x00006040, 0x40021008, 0x30620000, + 0x09040000, 0xa8100000, 0x00240004, 0x00420000, 0x00b84801, 0x38020004, 0x88004001, 0x00200080, 0x40000000, 0x00002000, + 0x00242080, 0x01090400, 0x80000000, 0x88900020, 0x03000008, 0x00100280, 0xa0202000, 0x00540000, 0x4d080040, 0x00004020, + 0x00480040, 0xd0240020, 0x480a0040, 0x20040000, 0x04000100, 0x10888002, 0x00000004, 0xc0002082, 0x00000080, 0x00892000, + 0x20240000, 0x80000000, 0x04004000, 0x02800000, 0x0804800c, 0x00090000, 0x28082000, 0x00400880, 0x04000040, 0x00800000, + 0x1a280812, 0x00000020, 0x10080000, 0x00140000, 0x00001000, 0x00010200, 0x40080810, 0x00002008, 0x35000040, 0x82088000, + 0x02014004, 0x40000000, 0x00001000, 0x05118002, 0x30c00000, 0x08000058, 0x0a400000, 0x040a0000, 0x00002000, 0x00040040, + 0x44000000, 0x12020000, 0x00008820, 0x00820000, 0x94001400, 0x02001010, 0x28110000, 0x00004400, 0x00700008, 0x00410020, + 0xc1000004, 0x00800004, 0x02000000, 0x00409000, 0xb0104000, 0x00200418, 0x00008084, 0x00000000, 0x00101000, 0x00400a40, + 0x00808080, 0x00000000, 0x02286000, 0x00400000, 0x01002004, 0x04100008, 0x88028804, 0x00000000, 0x00080000, 0x12800090, + 0x01000000, 0x0000104a, 0x20000008, 0x00000000, 0x40240200, 0x00040000, 0x00006800, 0x00801050, 0x80000800, 0x20000004, + 0x04002008, 0x028a0090, 0x00000002, 0x40201004, 0x04400000, 0x00004000, 0x0801301a, 0x08000884, 0x00028000, 0x00110000, + 0x02100002, 0x00000000, 0x04008000, 0x00082040, 0x00000000, 0x00200020, 0x00004800, 0x00000000, 0x00001480, 0x80068000, + 0x00002800, 0x80540240, 0x00028000, 0x10000000, 0x01280400, 0x02000002, 0x00900008, 0x00000000, 0xa4440002, 0x00000080, + 0x09182804, 0x00000800, 0x40060000, 0x00800200, 0x00000000, 0x00100000, 0x84024000, 0x10400040, 0x01000000, 0x0a80e800, + 0x00000010, 0x00004000, 0x10940000, 0x00023004, 0x40000000, 0x20280600, 0x000100c0, 0x80100008, 0x40248012, 0x00020000, + 0x00402802, 0x86080004, 0x08000000, 0x00040000, 0x42080000, 0x10110810, 0x00808008, 0x240a2004, 0x20881088, 0x00000000, + 0x4a034400, 0x00440004, 0x00200800, 0x14110000, 0x08008003, 0x00001000, 0x02100800, 0x80020000, 0x08000928, 0x03000010, + 0x00842010, 0x00005000, 0x40300004, 0x00000008, 0x04008040, 0x00002000, 0x08004010, 0x00000080, 0x20100004, 0x11108000, + 0x00020020, 0x00000010, 0x00082805, 0x00200000, 0x000010c0, 0xc0040000, 0x00000000, 0x02008044, 0x80000030, 0x00000000, + 0x00c01800, 0x40003010, 0x000a0000, 0x02000488, 0x00082020, 0x00250008, 0x20004004, 0x00a40000, 0x00001884, 0x1000c022, + 0x0c00000a, 0x00430000, 0x00008000, 0x00001080, 0x00000004, 0x00002040, 0x00340000, 0x0000c050, 0x80000820, 0x00000820, + 0x00000410, 0x00602040, 0x09200820, 0x00081000, 0x00144080, 0x00401000, 0x04900010, 0x10400820, 0x00080000, 0x80006028, + 0x40060000, 0x01048004, 0x42000000, 0x10404840, 0x00000000, 0x04408000, 0x80022000, 0x00880000, 0x4b001080, 0x00000030, + 0x04000000, 0x10042044, 0x80400000, 0x00000000, 0x03080820, 0x08000008, 0x00040000, 0x54108000, 0x20027012, 0x00000000, + 0x00000000, 0x0098a048, 0x40054000, 0x00100000, 0x28020004, 0x00022000, 0x80009020, 0x02244012, 0x00010040, 0x02200000, + 0x04d00088, 0x00001840, 0x14482000, 0x08840020, 0x28000000, 0x00000008, 0x14101464, 0x00000020, 0x00040000, 0x48286810, + 0x10000000, 0x00000008, 0xc2901010, 0x00042004, 0x00080008, 0x00004200, 0x40000004, 0x00044040, 0x02808010, 0x80020040, + 0x01000000, 0x28508880, 0x03000080, 0x00800010, 0x10080000, 0x00000040, 0x20401000, 0x04004828, 0x08000800, 0x00000030, + 0x00002008, 0x00104000, 0x00008014, 0x52801040, 0x00008000, 0x04092000, 0x10040008, 0x00000082, 0x00004000, 0xc0040804, + 0x00018000, 0x08020000, 0x80800042, 0x04800000, 0x10011080, 0x02600000, 0x00400000, 0x08080000, 0x04022860, 0x00205000, + 0x00000000, 0x04101010, 0x10000000, 0x0820a100, 0x00000000, 0x000c00c0, 0x10000004, 0x00120808, 0x00004040, 0x01000000, + 0x40080000, 0xc0000080, 0x00020000, 0x0184a000, 0x80020800, 0x08003000, 0x03000010, 0x06000000, 0x40004000, 0x00c02002, + 0x00084800, 0x08400010, 0x04020004, 0x181a8103, 0x00040008, 0x00003200, 0x00000000, 0x00000000, 0x10100000, 0x40084006, + 0x00020000, 0x20850000, 0x80001880, 0x00000050, 0x40240000, 0x80401040, 0x00012000, 0x0a820000, 0x08900004, 0x00000000, + 0x16210802, 0x20500000, 0x00000000, 0x04085000, 0x10208002, 0x08204000, 0x10101822, 0x80020880, 0x03000000, 0x01008090, + 0x00000000, 0x00000000, 0x02ac0448, 0x04002020, 0x00000008, 0x80000810, 0x00000804, 0x10400020, 0x00800008, 0x10001000, + 0x00000018, 0x20500002, 0x0000000c, 0x000c0001, 0x04000240, 0x40000004, 0x88004002, 0x001080e0, 0x13050000, 0x02000800, + 0x00001088, 0x04018040, 0x00000000, 0xc0003830, 0x020400c0, 0x08000828, 0x04026014, 0x80500000, 0x00200804, 0x0200808a, + 0x20008030, 0x10000000, 0x00014002, 0x00402000, 0x00001008, 0x0020c040, 0xa0040004, 0x0000c000, 0x00800420, 0x00020880, + 0x00042000, 0x10104400, 0x00000000, 0x00000000, 0x40200800, 0x03000000, 0x00102000, 0x00000080, 0x08080000, 0x24602000, + 0x40041048, 0x08120800, 0x00100000, 0x40040004, 0x000a0002, 0x80180020, 0x10c04000, 0x00840000, 0x03000200, 0x80088000, + 0x00020008, 0x40040044, 0x08800000, 0x00000000, 0x00220000, 0x10408800, 0x00000000, 0x02113090, 0x60200000, 0x08000000, + 0x04402000, 0x002e0008, 0x00208000, 0x18040020, 0x40001004, 0x00100000, 0x20028802, 0x42880008, 0x00000008, 0x22002000, + 0x04ed0800, 0x00000004, 0x04040400, 0x00400000, 0x08210000, 0x040840a4, 0x00c00450, 0x00000020, 0x80340000, 0x00402848, + 0x02000000, 0x00029081, 0x00100c10, 0x60420048, 0x000c5010, 0x0800b020, 0x48004004, 0x00042800, 0x00002080, 0x80008020, + 0x00025010, 0x40000040, 0x03100001, 0x0080a088, 0x00000820, 0x40080000, 0x00004084, 0x000080c1, 0x00020810, 0x00000042, + 0x0030a000, 0x02104008, 0x00000020, 0x00041010, 0x04000004, 0x000a00c0, 0x0000a018, 0x08000000, 0x40000820, 0x0004600c, + 0x00020000, 0x00005010, 0x00208086, 0x228100c0, 0x00108000, 0x40024800, 0x00001000, 0x00404004, 0x14020040, 0x80002000, + 0x68040444, 0x06100002, 0x10000900, 0x88008020, 0x00202000, 0x41041000, 0x1a0202d1, 0x00180008, 0x00082000, 0x04000048, + 0x00800810, 0x00000000, 0x09404824, 0x60040201, 0x80000000, 0x12928018, 0x00402044, 0x01001880, 0x22022000, 0x00000000, + 0x00000000, 0x04440144, 0x42001000, 0x08000008, 0x90108810, 0x00022040, 0x10081000, 0x02810092, 0x00000040, 0x8008002a, + 0x04402400, 0x20009804, 0x40044000, 0x28202804, 0x20031000, 0x00008000, 0x12120002, 0x40004400, 0x00000000, 0x24032098, + 0x42400002, 0x00008040, 0x00044004, 0x04c08000, 0x00300081, 0x404c6080, 0x00000200, 0x28100080, 0x80220c4a, 0x04483020, + 0x01004010, 0x00140824, 0x12001200, 0x88208000, 0x00c83010, 0x00020008, 0x00040000, 0x41002868, 0x02804005, 0x000a0040, + 0x80005014, 0x0100c080, 0x42200000, 0x100ac809, 0x00140080, 0x00400050, 0x00006084, 0x04900000, 0x41042000, 0x0800104a, + 0x00808800, 0x00040010, 0x90085c84, 0x02600000, 0x40012000, 0x2088901a, 0x00500000, 0x04020004, 0x400064f8, 0x02040800, + 0x00020002, 0x0018d04c, 0x24600000, 0x08000020, 0xb200a80a, 0x00010080, 0x80400010, 0x040810c0, 0x02120004, 0x0800082a, + 0x86802000, 0x48421050, 0x00288828, 0x04440000, 0x18000004, 0x10120084, 0xcca00020, 0x00401030, 0x02002008, 0x94501000, + 0x002c8000, 0x40000004, 0x000c2008, 0x00025089, 0x00000000, 0x71340004, 0x8a0e8040, 0x00000080, 0xa9029000, 0x46408018, + 0x05000860, 0x520c0002, 0x80430010, 0x00080800, 0x24420000, 0x08011024, 0x04005080, 0x8a000012, 0x14000800, 0x20002000, + 0x14210000, 0x400c0028, 0x00000004, 0x2a2c400a, 0x40020080, 0x00000032, 0x54544000, 0x00038000, 0x02012000, 0x280a0086, + 0x00200000, 0x04100004, 0x02450008, 0x00000050, 0x00088800, 0x08080884, 0x00c00000, 0x98200010, 0x00401020, 0x011008c0, + 0x02002008, 0x00001010, 0x50100040, 0x00446800, 0x14000098, 0x900a0004, 0x08004000, 0x400c281c, 0x00008080, 0x14000000, + 0xc002c004, 0x01200000, 0x02080028, 0x800000c1, 0x00801000, 0x44024000, 0x281008c4, 0x10400000, 0x08009800, 0x020000e2, + 0x004a0010, 0x10100008, 0x68001090, 0x00002040, 0x20026848, 0x18180004, 0x00401002, 0x00200004, 0x00108808, 0x400c4000, + 0x900100c0, 0x40020002, 0x02048000, 0x02000000, 0x00078082, 0x00821002, 0x04000840, 0x00000024, 0x80500000, 0x08000830, + 0x00000008, 0x54008404, 0x00001000, 0x09740430, 0x02002808, 0x00080400, 0x19100010, 0x84049004, 0x00882000, 0x40001808, + 0x00024000, 0x0200c000, 0x880800c4, 0x41040000, 0x80000008, 0x50020000, 0x0080804c, 0x0c400010, 0xa1008088, 0x02904024, + 0x00400004, 0x04009040, 0x00000900, 0x70100003, 0x08008920, 0x00400000, 0x000a0000, 0x1a101830, 0x4800000c, 0x00440008, + 0x34180080, 0x0000e020, 0x08040034, 0x40004000, 0x80820082, 0x82000000, 0x40034002, 0x00008000, 0x04c0000c, 0x020090c0, + 0x00010000, 0x18600060, 0x00000002, 0x04100000, 0x002010b1, 0x00000000, 0x0c8004d0, 0x00000804, 0x08a00000, 0x10101020, + 0x01040080, 0x1a120400, 0x48083014, 0x04082028, 0x08000000, 0x9022d020, 0x01044004, 0x00800000, 0x40000000, 0x82001000, + 0x00020000, 0x0000a0d0, 0x20800001, 0x11000080, 0x82002008, 0x08408040, 0x04004000, 0x00000802, 0x01010800, 0x0a040200, + 0x10108030, 0x02081000, 0x10500410, 0x0020000a, 0x04010040, 0x20880000, 0x8000a808, 0x10144004, 0x48002000, 0x00033808, + 0x00681002, 0x00822000, 0x80108080, 0x20894000, 0x12046000, 0x84000090, 0x00620040, 0x08004000, 0x04008a08, 0x80340000, + 0x00044000, 0x8c600004, 0x0a000020, 0x00228800, 0x10100200, 0x00000010, 0x90001000, 0x00d80004, 0x00280040, 0x00400008, + 0x84122010, 0x00000800, 0x00040000, 0x40006004, 0x80088000, 0x01060030, 0x03044000, 0x40000080, 0x00002000, 0x06c80002, + 0x04000000, 0x01000018, 0xa04448c0, 0x00000020, 0x00020000, 0x0c880c40, 0x10100000, 0x00000002, 0x04001030, 0x00002000, + 0x08680008, 0x00010004, 0x40000060, 0x00000004, 0x20064092, 0x90008010, 0x000a0000, 0x0821100a, 0x00010088, 0xc0100000, + 0x22888000, 0x00402000, 0x00010040, 0x8c020004, 0x42000820, 0x04400440, 0x00060000, 0x20200010, 0x08001020, 0xc0420800, + 0x10003008, 0x00100010, 0x02000846, 0x00004000, 0x0000a000, 0x000800a8, 0x40000000, 0x00004044, 0x14042809, 0x00000000, + 0x00048000, 0xa8220080, 0x01002041, 0x028a0000, 0x600600b2, 0x00000800, 0x04400040, 0x00028003, 0x08042000, 0x00001830, + 0x80004202, 0x00080010, 0x00029000, 0x10100040, 0x2008000a, 0x00042080, 0x0000c040, 0x00000000, 0x00846080, 0x5850100c, + 0x00020000, 0x80108002, 0x60400040, 0x10881000, 0x02000080, 0x00018004, 0x00000000, 0x04051820, 0x484100d2, 0x00000000, + 0x00008800, 0x10804084, 0x00040120, 0x00000800, 0x08200000, 0x00181004, 0x00200000, 0xd8002030, 0x00040000, 0x010a0000, + 0x80102088, 0x00044044, 0x41000000, 0x22800802, 0x04020000, 0x80000000, 0x0000d000, 0x0280000c, 0x01020084, 0x48002000, + 0x00400000, 0x000c0040, 0x84000280, 0x40000004, 0x08000820, 0x00100042, 0x00001010, 0x10170000, 0x40880420, 0x00000000, + 0x20000008, 0x80083070, 0x00470000, 0x44084004, 0x08808820, 0x00000002, 0x00008000, 0xc0521010, 0x2a000800, 0x00810080, + 0x00200002, 0x04100000, 0x10400000, 0x00808045, 0x08204820, 0x80400010, 0x00040224, 0x88202020, 0x02000000, 0x2000c840, + 0x00000410, 0x11580400, 0x06201009, 0x40000080, 0x08082008, 0x04c04814, 0x80020080, 0x40045044, 0x18908801, 0x02000030, + 0x800a0000, 0x51109048, 0x02000081, 0x00804000, 0xa0008000, 0x04021008, 0x01020040, 0x00c46914, 0x08100800, 0x00000029, + 0x82402002, 0x1010c010, 0x00000004, 0x02811000, 0x00000888, 0x00088002, 0x14402040, 0x00244004, 0x00130000, 0x48800000, + 0x00080870, 0x8010800a, 0x12021080, 0x0080000c, 0x00050020, 0xc2000080, 0x04603040, 0x08040000, 0x00004804, 0x08002a20, + 0x10102044, 0x00424400, 0x40000810, 0x08241020, 0x00020088, 0x00442000, 0x40001010, 0x90184081, 0x020a200c, 0x01800040, + 0x10000000, 0x01448000, 0x42000000, 0x84004895, 0x08400000, 0xb402a020, 0x01101010, 0x22080041, 0x00000000, 0x00800888, + 0x04040040, 0x00002000, 0x0a405000, 0x00018030, 0x20000004, 0xdc030802, 0x00000000, 0x10403008, 0x04394014, 0x0a022000, + 0x08880880, 0x4044004a, 0x04040000, 0x02008000, 0x40004834, 0x88408080, 0x04220000, 0x10014052, 0x208d0080, 0x08100000, + 0x02005800, 0x14020000, 0x80402064, 0x02241018, 0x08100000, 0x04000400, 0x00044040, 0x40100450, 0x11001000, 0x082a282c, + 0x10900820, 0x01001000, 0x4204c091, 0x00001014, 0x00002000, 0x040a0008, 0xc000a00c, 0x01404000, 0x0a040881, 0x0002c004, + 0x00000000, 0x94001010, 0x01808043, 0x02400080, 0x08102804, 0x00400280, 0x00088000, 0x14045054, 0x40000240, 0x08000800, + 0x80882062, 0x00000820, 0x20100018, 0x10835804, 0x00081010, 0x40040008, 0x06402042, 0x4012a008, 0x00200000, 0x0a054824, + 0x00024004, 0x00000080, 0x94589052, 0x02008002, 0x00800080, 0x08010820, 0x20000080, 0x04280000, 0x00545054, 0x10200440, + 0x04000000, 0x40048000, 0x06400102, 0x18b03084, 0x04084100, 0x08200008, 0x11100012, 0xc2060804, 0x10100000, 0x00080002, + 0x04002000, 0xa00a0800, 0x01000000, 0x4a045010, 0xc0040280, 0x00000081, 0x14024000, 0x81022410, 0x02400000, 0x29904000, + 0x02828002, 0x04401800, 0x100c00c0, 0x04400010, 0x00000004, 0x68010028, 0x08382001, 0x00001040, 0x92050000, 0x10388000, + 0x40000000, 0x24400002, 0x60081000, 0x00020000, 0x0a151110, 0xc0042008, 0x000a1200, 0x14700000, 0x80020800, 0x00011040, + 0x0a820024, 0x0281c81a, 0x00208004, 0x14540000, 0x04610012, 0x22080020, 0x00180080, 0x14820000, 0x10144030, 0x00002044, + 0x28210080, 0x22080000, 0x00000068, 0x400001c0, 0x40840b00, 0x00805004, 0x0c200070, 0x00000500, 0x1100000d, 0x83000420, + 0x12820814, 0x00000840, 0x80021004, 0x05400202, 0x40000840, 0x00000008, 0x20840000, 0x09002000, 0x04440001, 0x48105001, + 0x000c0400, 0x00018000, 0xa0002480, 0x00000100, 0x01104020, 0x00020921, 0x02084000, 0x00200020, 0x84400000, 0x11420080, + 0x05180040, 0x02800011, 0x00000000, 0xc4064060, 0x00600010, 0x0a041001, 0x12a02000, 0x08000400, 0x00003000, 0x00000000, + 0x08800000, 0x00000818, 0x28001000, 0x80400000, 0x03460200, 0x40000000, 0x94800001, 0x00220400, 0x03048000, 0x10180001, + 0x23000020, 0x90000080, 0x00580000, 0x20022000, 0x00401000, 0x80000000, 0x64042002, 0x20700000, 0x10000108, 0x09000000, + 0xc0006000, 0x00010000, 0x92200000, 0x00011008, 0x82000000, 0x15004280, 0x40000000, 0x06a00000, 0x50000000, 0x18800614, + 0x07410040, 0x00020014, 0x10100400, 0x08000000, 0x22000001, 0x80050820, 0x18020000, 0x0001a004, 0x00000000, 0x04180088, + 0x80004000, 0x21190001, 0x40000020, 0x20b00082, 0x00084004, 0x00046400, 0x84600000, 0x00000000, 0x40008800, 0x00000040, + 0x00080021, 0x00002010, 0x80001800, 0x24400000, 0x00000000, 0x00004002, 0x4000a800, 0x00048022, 0x40084508, 0x0ca50040, + 0x00118080, 0x00000006, 0x0a000402, 0x00892000, 0x00141001, 0x1020c000, 0x00000020, 0x00c80001, 0x2010805a, 0x00020400, + 0x00e01000, 0x08028180, 0x00100000, 0x80448004, 0x00004010, 0x40040001, 0x08008000, 0xa0080008, 0x40000400, 0x00800000, + 0x00208018, 0x40000220, 0x00400880, 0x28000022, 0x10002000, 0x40800010, 0x00004008, 0x04040001, 0x12421040, 0x80000000, + 0x02800000, 0x00201060, 0x00100110, 0x00000252, 0x40000020, 0x20200800, 0x000084ca, 0x40008002, 0x004001c4, 0x02010400, + 0x40012000, 0x08000098, 0x00000400, 0x04800000, 0x00106000, 0x00001021, 0x04020020, 0x00208858, 0x00800004, 0x02200100, + 0x28090024, 0x00002448, 0x10000080, 0x04282104, 0x00000820, 0x00000000, 0x02006001, 0x00002000, 0x00001810, 0x50010040, + 0x00000408, 0x02000003, 0x40104290, 0x00001820, 0x00000104, 0x04000485, 0x10006842, 0x00008004, 0x4c205000, 0x82000001, + 0x000000c0, 0x00001106, 0x00040420, 0x10000010, 0x0008040f, 0x00440000, 0x800c0080, 0x43c02804, 0x12080080, 0x00340400, + 0x00004000, 0x80010004, 0xa4180020, 0x08100000, 0x04080004, 0x00021020, 0x80800040, 0x00100001, 0x10000094, 0x12400004, + 0x80040800, 0x00000000, 0x00040000, 0x80011100, 0x00004040, 0x00000012, 0x00200081, 0x00148000, 0x40410000, 0x010a0000, + 0x08000098, 0x01030440, 0x00180026, 0x00000402, 0x00000020, 0x02001000, 0x20080020, 0x00004000, 0x01000000, 0x20840000, + 0x08040002, 0x01000001, 0x80920000, 0x00450000, 0x20080018, 0x0050c800, 0xb0080000, 0x40202080, 0x28000000, 0x40812080, + 0x08080008, 0x10000000, 0xa4008000, 0x00024000, 0x08400000, 0x00000080, 0x00820000, 0x00024000, 0x00240040, 0x09040000, + 0x20100800, 0x30088820, 0x01400000, 0xe0001000, 0x08010000, 0x22a10000, 0x01006000, 0x00422018, 0x44000000, 0x80000000, + 0x50104000, 0x08000000, 0x04400000, 0x00000000, 0x90000000, 0x24d00000, 0x08000002, 0x84008000, 0x00000048, 0x00140040, + 0x0c040000, 0x00205080, 0xa0480820, 0x88028000, 0x10010000, 0x00401090, 0x00210000, 0x20000000, 0x10002008, 0x04800000, + 0x08000804, 0x02215000, 0x00800000, 0x04008000, 0x00100002, 0x00000020, 0x10100480, 0x40000034, 0x00001000, 0x01800888, + 0x0280a000, 0x80000000, 0x00020064, 0x04000000, 0x00408000, 0x00204000, 0x08200020, 0x03020040, 0x80080080, 0x00101012, + 0x00000000, 0x0000a008, 0x20200040, 0x00000000, 0x00000000, 0x00000000, 0x00000028, 0xc0801000, 0x80028002, 0x00040814, + 0x00000000, 0x02010010, 0x00002008, 0x08204844, 0x00408080, 0x00802002, 0x14000008, 0x00000040, 0x00000800, 0x08084000, + 0x00100002, 0x00000000, 0x000000e0, 0x20000000, 0x00000010, 0x580e88a4, 0x40000004, 0x00000040, 0x80101000, 0x0002c000, + 0x00400000, 0x14204208, 0x80000000, 0x40000000, 0x24a80200, 0x00800000, 0x00020000, 0x56100000, 0x00440000, 0x01080080, + 0x08000850, 0x08040002, 0x01008000, 0x20824000, 0x12101828, 0x00620000, 0x00000004, 0x00800000, 0x01200010, 0x02004800, + 0x0454000c, 0x00002000, 0x80000200, 0x0002800a, 0x00000000, 0x00204290, 0x10800080, 0x22100010, 0x44000000, 0x20480060, + 0x04010000, 0x00060000, 0x88840000, 0x40004002, 0x12000000, 0x90000050, 0x00020008, 0x00008000, 0x00100080, 0x00400800, + 0x88004000, 0x14444000, 0x00000010, 0x00000002, 0x00000002, 0x40000040, 0x00000804, 0x90060900, 0x00002000, 0x00181030, + 0x01001010, 0x00000400, 0x00000000, 0x04082088, 0x00004000, 0x00200000, 0x08005004, 0x00000000, 0x00008000, 0x00000000, + 0x00000000, 0x904a8080, 0x00004001, 0x000000a0, 0x40000050, 0xc0080040, 0x20001010, 0x00040800, 0x10020880, 0x00004000, + 0x00880020, 0x80000000, 0x00001080, 0x00002418, 0x44004000, 0x00008000, 0x0000200a, 0x00000000, 0x80001884, 0x00104000, + 0x00000000, 0x00102040, 0x00008002, 0x20441000, 0x00000000, 0x04000090, 0x40020050, 0x00022000, 0x08008820, 0x00100800, + 0x00000000, 0x00801440, 0x01080020, 0x22200810, 0x88444000, 0x10000000, 0x00029000, 0x00600010, 0x00020000, 0x8088000c, + 0x00406080, 0x00040000, 0x50004804, 0x00000080, 0x00028000, 0xa1000000, 0x03800010, 0x00840840, 0x00101000, 0x2e000080, + 0x00020000, 0x14000040, 0x00402010, 0x00004000, 0x09200820, 0x60140004, 0x00000010, 0x10000000, 0x00101004, 0x00220000, + 0x00002008, 0x28100000, 0x40000002, 0x04804000, 0x880c0004, 0x00020002, 0x24488000, 0x82001000, 0x02804800, 0x48010080, + 0x00000020, 0x04001004, 0x90000000, 0x00400058, 0x28000082, 0x04000010, 0x00200420, 0x00000000, 0x18004024, 0x00282800, + 0x40008000, 0x00000010, 0x90021008, 0x00008000, 0x00002000, 0x0208400c, 0x41000000, 0x00040000, 0x00e248a4, 0x80000000, + 0x08028000, 0x10004040, 0x40000080, 0x27002010, 0x00b00000, 0x04404000, 0x00000000, 0x00800878, 0x08003020, 0x00100800, + 0x04200000, 0x10105008, 0x00000010, 0x00018082, 0x2000200c, 0x02000000, 0x00000000, 0x0002c000, 0x02040000, 0x40400006, + 0x80100002, 0x00028090, 0x00014004, 0x040100a0, 0x12840000, 0x00000044, 0x00000002, 0x04402040, 0x00040808, 0x00003020, + 0x0020a000, 0xac000820, 0x00201100, 0x08020000, 0x10080000, 0x0000a080, 0x60400002, 0x10040000, 0x00008020, 0x00000000, + 0xa0084040, 0x00820020, 0x04001000, 0x41140018, 0x00000080, 0x80001000, 0x02120000, 0x06602004, 0x01800008, 0x00000040, + 0x04000030, 0x20400804, 0x18009000, 0x08300000, 0x0000c00a, 0x00020000, 0x300020c0, 0x84100000, 0x00000400, 0x00040040, + 0x20204000, 0x40001000, 0x024400a0, 0xc0020000, 0x1001a000, 0x84001000, 0x08100000, 0x00822000, 0x00012048, 0x00000000, + 0x02800000, 0x00400020, 0x0c000000, 0x20000000, 0x00000008, 0x00040000, 0x00200e20, 0x00000880, 0x00008000, 0x00081430, + 0x01800000, 0x00020000, 0x00202c00, 0x04000040, 0x02000000, 0xd0040010, 0x02421000, 0x10000800, 0x00088000, 0x00803000, + 0x10008008, 0x00040082, 0x00000000, 0x00300001, 0x00400040, 0x00008002, 0x20002000, 0x18900830, 0x00010102, 0x00040800, + 0xc0000000, 0x00008000, 0x00000000, 0x40022018, 0x000020a8, 0x00000000, 0x80004840, 0x04000800, 0x00004000, 0x00c210b0, + 0x10000000, 0x00000010, 0x00110002, 0x00400080, 0x00007008, 0x00000040, 0x0000c000, 0x20008040, 0x08000aa2, 0x10010001, + 0x04400000, 0x00a04000, 0x41200000, 0x02020820, 0x10480040, 0x10008000, 0x02800000, 0x20100080, 0x00000000, 0x04080000, + 0x08060000, 0x08040840, 0x00200020, 0x00800000, 0x00100000, 0x01020002, 0x0208a000, 0x01800008, 0x72003010, 0x04024800, + 0x00400010, 0x44040000, 0x00220080, 0x01204000, 0x80020000, 0x00002800, 0x00500010, 0x00000080, 0x30200000, 0x04800000, + 0x20006040, 0x10580018, 0x40044000, 0x08000800, 0xa0020008, 0x80020010, 0x20080062, 0x56050000, 0x20000008, 0x00000080, + 0x00460000, 0x44400000, 0x00004000, 0x00020040, 0x00040800, 0x00005084, 0x04040460, 0x00020020, 0x00008050, 0x41a02c08, + 0x02080002, 0x00100021, 0x10005034, 0x00002000, 0x00001050, 0x04981030, 0x00008000, 0x00446820, 0x00020000, 0x00220000, + 0x00105090, 0x21008040, 0x02000001, 0x0080a008, 0x800008a6, 0x04000000, 0x00004084, 0x80408040, 0x00040000, 0x00309062, + 0x00000818, 0x02803000, 0x901200b0, 0x00404000, 0x60400000, 0x00081040, 0x0002a01c, 0x00000000, 0x04042820, 0x48085080, + 0x10000000, 0x00029012, 0x80002000, 0x002000c0, 0x00002000, 0xc0000000, 0x00000040, 0x0000400c, 0x04c41020, 0x00200000, + 0x04206404, 0xc0000000, 0x00000000, 0x88040880, 0x00400020, 0x11000000, 0x028a1091, 0x00240000, 0x20000000, 0x84482052, + 0x40020800, 0x00000000, 0x08200820, 0x0210f001, 0x84820000, 0x10109010, 0x20002008, 0x00004004, 0x21026088, 0x02c20000, + 0x08000800, 0x50244140, 0x04800080, 0x08100124, 0x80028800, 0x26000402, 0x00004010, 0x12813480, 0x40140000, 0x00000000, + 0x24402048, 0x00300002, 0x00004000, 0x28000008, 0x02822010, 0x00028082, 0x10111030, 0xa400000c, 0x00000000, 0x20c04088, + 0x0a000042, 0x04000010, 0x40400044, 0x12819200, 0x00040021, 0x001c00c4, 0x00020000, 0x40802800, 0x80024460, 0x08000000, + 0x00001010, 0x1a8808a0, 0x00040000, 0x00008000, 0x20001050, 0x01086000, 0x04104080, 0x00222000, 0x08800809, 0x00008040, + 0x82104010, 0x050e0000, 0x10000880, 0x028a9001, 0x40040000, 0x20201040, 0x04020084, 0x02104020, 0x10012803, 0x60050048, + 0x08080070, 0x10000000, 0x02b208e0, 0x00205010, 0x00042808, 0x04021870, 0x20000000, 0x00000080, 0x28006828, 0x20008002, + 0x00080048, 0x90105010, 0x000a8002, 0x08800800, 0xe220a026, 0x00000080, 0xc0401000, 0x04004096, 0x00000040, 0x08002888, + 0x02800000, 0x0c040030, 0x48000000, 0x85820820, 0x20002040, 0x05001000, 0x08800000, 0x1008c81c, 0x800a0008, 0x10003000, + 0x20200000, 0x19808024, 0x32482000, 0x00004001, 0x00081010, 0x0422c000, 0x80000000, 0x23800080, 0x88128000, 0x10008020, + 0x05180000, 0x0280000a, 0x00001040, 0x20008820, 0x0c020000, 0xd0802018, 0x00101000, 0x0a000010, 0x10004022, 0xa0022048, + 0x1c911000, 0x10009080, 0x00000000, 0x2a106008, 0x10000804, 0x80008002, 0x04120000, 0x00800000, 0x020000c0, 0xa00a0012, + 0x00c28000, 0x00004000, 0xc2840040, 0x0c401008, 0x20000820, 0x08000880, 0x52000440, 0x88001010, 0x22004040, 0x00200820, + 0x00008000, 0x1900003a, 0x484c3000, 0x20002088, 0x10004010, 0x82480004, 0x00000000, 0x2004c084, 0x60000000, 0x90a08000, + 0x00000000, 0x03020000, 0x02000020, 0x00020009, 0x008000c0, 0x84400040, 0x88800880, 0x00001000, 0x08300001, 0x10000070, + 0x20002808, 0x10c00000, 0x08609020, 0x4c104050, 0x04400800, 0x3200a00c, 0x00040020, 0x88840062, 0x60004008, 0x00000014, + 0x00020010, 0x90008040, 0x00000086, 0x02c50080, 0x08020002, 0x00002000, 0x44400860, 0x00800000, 0x00000000, 0x08000010, + 0x04001000, 0x00208442, 0x10208088, 0x09000004, 0x03080a20, 0xa00030c0, 0x0a004410, 0x14040000, 0x00000840, 0x3408b00c, + 0x41000020, 0x48020000, 0xa0042000, 0x00804084, 0x02000000, 0x8000c810, 0x10020000, 0x04002048, 0x03c0c000, 0x00200080, + 0x28400040, 0x00000000, 0x14100032, 0x00001100, 0x08008022, 0x00200800, 0x60003000, 0x1a320000, 0x0004401c, 0x00002000, + 0x34001808, 0x00000002, 0xc0028004, 0x00146000, 0x082000c0, 0x00802000, 0x80018000, 0x02020842, 0x04012088, 0x00c24000, + 0x02001020, 0x08080040, 0x00400000, 0x04000814, 0x50009000, 0x04000000, 0x00000410, 0x10200a00, 0x08800000, 0x00000020, + 0x03801010, 0x00020000, 0x100c0008, 0x4c200020, 0x20080018, 0x10126800, 0x00401020, 0x40040010, 0x8008508c, 0x88400000, + 0x11084000, 0x0482a000, 0x00000014, 0x03801000, 0x88000080, 0x00408000, 0x00006000, 0x54208040, 0x83000000, 0x0a000000, + 0x00701830, 0x02100000, 0x30001000, 0x400440b0, 0x08000000, 0x20002008, 0x00421010, 0xc0000024, 0x0c044008, 0x00008802, + 0x30008002, 0x82080000, 0x00830000, 0x40000080, 0x00c01000, 0x06012000, 0x20048000, 0x00400000, 0x04108040, 0x12004021, + 0x00000040, 0x48020008, 0x00200020, 0x08008900, 0x00000000, 0x00000080, 0x00000000, 0x10081010, 0x00000040, 0x00002000, + 0x08a8001a, 0x00004804, 0x00040000, 0xd0602000, 0x00000020, 0x2000d000, 0xc0824000, 0x01000000, 0x00822090, 0x42400000, + 0x04404000, 0x01000040, 0x08820280, 0x00010000, 0x00210830, 0x189000c0, 0x00021090, 0x00b00000, 0x16400400, 0x20200048, + 0x00400000, 0x00242002, 0x40000800, 0x0004000c, 0x10005008, 0x00021000, 0xe0240082, 0x0090e000, 0x00810008, 0x42002090, + 0x20000000, 0x84000000, 0x00404040, 0x08800090, 0x08000800, 0x04800400, 0x000082d0, 0x88002000, 0x00000020, 0x006a0800, + 0x00000000, 0x10801014, 0x00408408, 0x00082008, 0x21040010, 0x0400d000, 0x00000000, 0x40004004, 0x00540001, 0x00808000, + 0x80124000, 0x04040884, 0x00000081, 0x03400800, 0x00820050, 0x00001040, 0x24400080, 0x500060b8, 0x80002820, 0x08000000, + 0x00220040, 0x00000008, 0x30000010, 0x001c9000, 0x00002000, 0x20804080, 0x8010000a, 0x00004000, 0x00000048, 0x40040004, + 0x80000090, 0x08008060, 0x0466080a, 0x00000000, 0x00010000, 0x0286108a, 0x20401060, 0x00002800, 0x84010010, 0x00002000, + 0x10000802, 0x06000004, 0x00000000, 0x01220020, 0x480088c0, 0x10000010, 0x00001000, 0x0a800820, 0x00000008, 0x000c0000, + 0xe00220d0, 0x40040004, 0x00000000, 0x02004808, 0x80023000, 0x01800000, 0x4568a028, 0x02802001, 0x00120084, 0x48220000, + 0x00000048, 0x00008000, 0x14500000, 0x08200830, 0x00020080, 0x00000406, 0x10100008, 0x40000050, 0x2024f080, 0x00000000, + 0x00802008, 0xa6000040, 0x02060084, 0x60000010, 0x00016800, 0x00808022, 0x04020000, 0xe0402000, 0x02000000, 0x20800880, + 0x50010000, 0x00040000, 0x0c402040, 0x80124204, 0x00000820, 0x10001050, 0x00220020, 0x48004800, 0x00000204, 0x82600420, + 0x10009010, 0x01004040, 0x02042001, 0x00002088, 0x00088000, 0x04400000, 0x00800044, 0x40060080, 0x28205001, 0x02400830, + 0x01020040, 0x91148000, 0x06201020, 0x00844000, 0x80008080, 0x04002002, 0x00000010, 0x43440848, 0x08104801, 0x00002029, + 0x20229004, 0x10105000, 0x00000400, 0x02810092, 0x20062828, 0x40008822, 0x0c500000, 0x00000054, 0x10044000, 0xc8080020, + 0x00000802, 0x80408000, 0x10161080, 0x062008a0, 0x00800010, 0x00012040, 0x04400048, 0x00001006, 0x40000081, 0x08014800, + 0x00000400, 0x00001044, 0x00000030, 0x08280800, 0x10042000, 0x10820000, 0x80000000, 0x21201011, 0x02004000, 0x08002088, + 0x00188840, 0x01400000, 0x1a804014, 0xc40e0821, 0x00200080, 0x84008000, 0x21021040, 0x02904081, 0x00000000, 0x30002838, + 0x04400000, 0x90000040, 0x48001006, 0x01a00010, 0x00140000, 0x2a83e82a, 0x84000010, 0x04501000, 0x10810000, 0x22000000, + 0x80204000, 0x0000208a, 0x00c0c000, 0x06140004, 0x400208e0, 0x88420000, 0x00080002, 0x0010d040, 0x32810010, 0x08000000, + 0x840028a0, 0x04008008, 0x10400000, 0x00805054, 0x8a040000, 0x00000000, 0x14005440, 0x00240450, 0x00020000, 0x2800a824, + 0x00080820, 0x91000000, 0x06805011, 0x00081010, 0x00400008, 0x0402a040, 0xc004200c, 0x01004000, 0x0a300821, 0x80024084, + 0x00800000, 0x1410b04c, 0x01008002, 0x00000000, 0x2a8028a8, 0x00000080, 0x04420000, 0x10101040, 0x00000040, 0x08200010, + 0xa006a82e, 0x00000820, 0x10001010, 0x02910000, 0x00005010, 0x20000000, 0x9442a8ca, 0x0004200c, 0x40000000, 0x0a804820, + 0x00104004, 0x00028082, 0x90401050, 0x00008082, 0x06010000, 0x28862822, 0x00000080, 0x04000000, 0x10405050, 0x80040040, + 0x04000000, 0xd0000000, 0x04400302, 0x08000004, 0xa0200024, 0x08202001, 0x0108800a, 0x12020040, 0x10104000, 0x00080802, + 0xac000020, 0x70080050, 0x01020400, 0x0a040000, 0x40060000, 0x80800080, 0x14100000, 0x80020008, 0x01800000, 0x2b008004, + 0x02800000, 0x00400000, 0x14102008, 0x04400001, 0x08000880, 0xe0220000, 0x0c200001, 0x10100000, 0x02800800, 0x10100420, + 0x00000000, 0xa0420002, 0x60080000, 0x00040402, 0x0e800140, 0x40040008, 0x00000020, 0x90420000, 0x80020000, 0x04801800, + 0x2a014000, 0x06810801, 0x00000000, 0x50408000, 0x04401003, 0x04308000, 0x00001080, 0x82528008, 0x40804080, 0x00080040, + 0x04204000, 0x04080080, 0x00c00020, 0x10000080, 0x40800201, 0x00200200, 0x20280020, 0x05000000, 0x00400088, 0x71040411, + 0x0ab30a00, 0x20000010, 0xcc002400, 0x14004000, 0x40840800, 0x02012008, 0x38080002, 0x00091080, 0x81008006, 0x20004000, + 0x62202044, 0x00018008, 0x824a0000, 0x1000d110, 0x00300200, 0x00200041, 0x04001200, 0x00808000, 0x04000020, 0x58102000, + 0x050d1000, 0x00000000, 0x20084004, 0x80000050, 0x07400000, 0x40029001, 0x0a900030, 0x00002006, 0x80000030, 0x04420084, + 0x28484000, 0x00000002, 0x14880000, 0x00040000, 0x20120200, 0xc1000000, 0x10000000, 0x00000500, 0x41208004, 0x26100004, + 0x80140000, 0x00048081, 0x08400000, 0x80002040, 0x04001000, 0x80000002, 0x00004800, 0x01000000, 0x00500000, 0x89200012, + 0x00800004, 0x40400000, 0x00800000, 0x02000010, 0x04400000, 0x09540201, 0x00000000, 0x04900002, 0x08000440, 0x01400002, + 0x19800080, 0x02000001, 0x30000080, 0x000e0000, 0x02001000, 0x08400000, 0xd0300800, 0x02000000, 0x1c000020, 0x00060000, + 0x00a00004, 0x81004000, 0x08040800, 0x00822008, 0x12004000, 0x00000000, 0x00020400, 0x20002408, 0x11000800, 0x00600000, + 0x02000000, 0x28000000, 0x00022000, 0x80041010, 0x01400000, 0x02004800, 0x00838000, 0x40002020, 0x10084000, 0x02000190, + 0x00002000, 0x002c0022, 0x00400c02, 0x20080040, 0x02020181, 0x00100800, 0x05240400, 0x10120000, 0x40200002, 0x00040800, + 0x00000000, 0x0008000b, 0x2800a000, 0x40044000, 0x80028010, 0x62044000, 0x80192000, 0x00600402, 0x01004002, 0xa0000000, + 0x00800414, 0x00810100, 0x00240200, 0x00400002, 0x20002040, 0x10001000, 0x20010288, 0x40480004, 0x20210010, 0x80003000, + 0x40246048, 0x00004800, 0x00001004, 0x80008022, 0x00001000, 0x000144aa, 0x10008000, 0x00005818, 0x00310004, 0x000004c8, + 0x40000000, 0x84000000, 0x00000446, 0x00018008, 0x80800020, 0x00051881, 0x00408040, 0x00004008, 0x01003010, 0x04800000, + 0x000000a4, 0x20400048, 0x00000800, 0x04022049, 0x00101000, 0x42000020, 0x00004000, 0x00c01030, 0x00120028, 0x40000880, + 0x0400050d, 0x00028000, 0x080012c1, 0x80020820, 0x04008100, 0x000140c8, 0x09800002, 0x04028000, 0x40400400, 0x22005510, + 0xc0000220, 0x0800c012, 0x08040402, 0x00000060, 0x10010048, 0x00080000, 0x00008080, 0x13020000, 0x02040000, 0xa0222084, + 0x00000000, 0x00280800, 0x80000060, 0x01008000, 0x24800004, 0x02001010, 0x10010082, 0x00061000, 0x40000010, 0x18000000, + 0x40020000, 0x00000004, 0x20020000, 0x00100004, 0x00040000, 0x08028012, 0x00044001, 0x00000090, 0x60104000, 0x80048204, + 0x012424d1, 0x200a0000, 0x80210000, 0x800000c0, 0x02010000, 0x00080040, 0x08200830, 0x86110000, 0x03000000, 0x00041000, + 0x60902001, 0x00210000, 0x00006000, 0x00000880, 0x11600000, 0x00010801, 0x50102000, 0x208a0000, 0x00000080, 0x08080003, + 0x2a000008, 0x20c80200, 0x04100000, 0x40008000, 0x00800040, 0x48000000, 0x22000000, 0x04000000, 0x40440041, 0x00040000, + 0x01880000, 0x201a0020, 0x81000000, 0x10680000, 0x01000000, 0x02081000, 0x00200810, 0x00840000, 0x00000000, 0x43014000, + 0x00e10000, 0x08000000, 0x04208000, 0x01c10000, 0x10000000, 0x08404000, 0x08008000, 0x06000000, 0x08000480, 0x00500040, + 0x01000000, 0x30800000, 0x20080000, 0x50000000, 0x00480810, 0x00040000, 0x02000000, 0xa0080004, 0x08080008, 0x84802010, + 0x01001000, 0x00030000, 0x00000000, 0x80008000, 0x20d08002, 0x00000400, 0x80001810, 0x0000a004, 0x00000000, 0x85004000, + 0x20840084, 0x00020000, 0x00004008, 0x00000000, 0x00000000, 0x00000800, 0x00204000, 0x00400000, 0x20828088, 0x00001010, + 0x18000800, 0x60000040, 0x20000000, 0x00000000, 0x00008800, 0x40004000, 0x00000028, 0x88001010, 0x80002000, 0x00000000, + 0x008000c8, 0x00814080, 0x00000000, 0x00200440, 0x04000000, 0x02000000, 0xc0008000, 0x08400800, 0x00020040, 0x00000080, + 0x10101010, 0x00000000, 0x04040008, 0x20002040, 0x00000080, 0x00000800, 0x00000004, 0x00000000, 0x08000000, 0x80000010, + 0x00400000, 0x46008200, 0x08020000, 0x10200000, 0x01080000, 0x02000080, 0xa0100000, 0x48008440, 0x000a0840, 0x00000000, + 0x20000000, 0xc8200820, 0x01404000, 0x00840001, 0x80000010, 0x00020000, 0x10001000, 0x28002008, 0x00004000, 0x40c00000, + 0x00000040, 0x40440000, 0x90208000, 0x00208880, 0x00000200, 0x28000000, 0x12100000, 0x00000000, 0x00050020, 0x40000000, + 0x00080080, 0x00001800, 0x00000010, 0x80040040, 0x40810008, 0x08201810, 0x00000000, 0x84022004, 0x00004880, 0x02610000, + 0x00100004, 0x400c4004, 0x10000000, 0x24908000, 0x00008082, 0x00000002, 0x48100000, 0x00020100, 0x00000a08, 0x21000034, + 0x02401040, 0x00000010, 0x40000000, 0x04802028, 0x00048000, 0x80024000, 0x10000010, 0x00000080, 0x00004004, 0x10080000, + 0x08c00000, 0x00028000, 0x20000004, 0x00040004, 0x000008c0, 0x40042042, 0x08000010, 0x00100000, 0x00000100, 0x00000809, + 0x10000020, 0x40490000, 0x00005010, 0x00000000, 0x20200808, 0x00028020, 0x08102000, 0x80000080, 0x10004000, 0x08600000, + 0x02008000, 0x20000800, 0x00000000, 0x10100000, 0x00040080, 0x00000040, 0x00068840, 0x00201012, 0x00004000, 0x0a000801, + 0x80402420, 0x00000880, 0x00020830, 0x29200004, 0x50000000, 0x00000010, 0x54001000, 0x80200000, 0x00000000, 0x288a2008, + 0x00100000, 0x01004000, 0x52000004, 0x00400020, 0x80000000, 0x24008800, 0x000a0000, 0x01800000, 0x0a000080, 0x00100800, + 0x04020000, 0x00000040, 0x10440010, 0x01800000, 0x02200020, 0x08000800, 0x00006000, 0x90000000, 0x66001010, 0x00002000, + 0x20000000, 0x00008088, 0x00004000, 0x42400000, 0x840c0080, 0x00000000, 0x08088000, 0x80901000, 0x10010080, 0x42804000, + 0x24000010, 0x00000000, 0x84400000, 0x18040040, 0x08000000, 0x04000010, 0x40000424, 0x08002000, 0x00000020, 0x002a1800, + 0x00000008, 0xa0000000, 0x12801010, 0x20484000, 0x01000004, 0x0000a028, 0x000000a4, 0x0c204000, 0xc0800000, 0x00028000, + 0x80000040, 0x14000001, 0x02000080, 0x01500020, 0x00804008, 0x00440000, 0x04000000, 0x40200840, 0x08000830, 0x00000000, + 0x00a03080, 0x00001018, 0x02000000, 0x10014000, 0x40000000, 0x04002008, 0x20000000, 0x40240000, 0x00000000, 0x0041c000, + 0x80100080, 0x02800000, 0x00408040, 0x02000000, 0x04200800, 0x00810090, 0x04440000, 0x10000040, 0x00100000, 0x00201000, + 0x44008010, 0x20404000, 0x20002000, 0x10000200, 0x082e0000, 0x108000c8, 0x80008000, 0x00000000, 0x00004000, 0x40000000, + 0x24480000, 0x40028001, 0x80100000, 0x02000000, 0x008200c8, 0x01000000, 0x88400000, 0x02200810, 0x15840004, 0x20002008, + 0x08000000, 0x04420000, 0x00008020, 0x00200001, 0x98000200, 0x00003010, 0x10000000, 0x20008008, 0x40020000, 0x200400a0, + 0x00000000, 0x06c04000, 0x80018040, 0x00840000, 0x40100000, 0x00000800, 0x80201000, 0x12000080, 0x0e200054, 0x00040000, + 0x00c10008, 0x00000004, 0x00100000, 0x24401800, 0x10002000, 0x28000000, 0x40800402, 0x00000000, 0x12024000, 0x20080018, + 0x84000000, 0x01000080, 0x00000420, 0x40000801, 0x80000040, 0x00a04814, 0x10400000, 0x0c024800, 0x01802000, 0x00000010, + 0x00200000, 0x00006000, 0x04440000, 0x00001808, 0x0002a001, 0x00204002, 0x080c0000, 0x50800080, 0x80000000, 0x20000000, + 0x00008040, 0x00840000, 0x40000000, 0x00000400, 0x04000080, 0x82000840, 0x00000020, 0x00400000, 0x00000800, 0x00011018, + 0x04a00000, 0x00080010, 0x20000000, 0x10404008, 0x00005080, 0x08008040, 0x00200000, 0x00000002, 0x00918080, 0x00000005, + 0xe4000400, 0x08620080, 0x08204000, 0x00008100, 0x90020080, 0x01400000, 0x02000000, 0x04500000, 0x88284000, 0x08800000, + 0x60100040, 0x40004000, 0x00400000, 0x30040000, 0x80400800, 0x00000000, 0x00a20004, 0x00000008, 0x00800010, 0x00000000, + 0x00000000, 0x00000000, 0x10604000, 0x03040000, 0x00208000, 0x0c800001, 0x00000000, 0x02000000, 0x5c700080, 0x00000040, + 0x04800000, 0x10580010, 0x00040800, 0x08000000, 0xd0280000, 0x20000010, 0x10000000, 0x80870088, 0x20000080, 0x00110000, + 0x46222000, 0x00000800, 0x84040000, 0x08020004, 0x00000000, 0x00006ca4, 0x40001000, 0x00000830, 0x00208000, 0x09902008, + 0x02000000, 0x001008a1, 0x80004014, 0x24000000, 0x00080018, 0x00408830, 0x00000000, 0x00062860, 0x40087080, 0x00020000, + 0x10008010, 0xc0280040, 0x00000081, 0x0040a008, 0xa080c020, 0x00001000, 0x40404880, 0x00000043, 0x082c0810, 0x00000040, + 0x00400080, 0x0280a018, 0x10100080, 0x00000800, 0x00044008, 0x00080050, 0x00000020, 0x00008000, 0x40446800, 0x02000000, + 0x08008080, 0x80025010, 0x10010004, 0x00010000, 0x0200a088, 0x00004840, 0x04000000, 0x40200084, 0x00100240, 0x08200000, + 0x40080004, 0x04004000, 0x10000100, 0x28028a20, 0x00080440, 0x81004010, 0x020000e0, 0x10000001, 0x00800800, 0x40000040, + 0x21000008, 0x02800000, 0x08204020, 0xc0080000, 0x10028000, 0x00001000, 0x45082000, 0x02404000, 0x28000098, 0x00000004, + 0x44000040, 0x00204100, 0x00008000, 0x00000000, 0xb0008800, 0x0c400000, 0x00040000, 0x12810410, 0x00000000, 0x00000000, + 0x04000048, 0xe0000000, 0x00404000, 0x48800890, 0x00002008, 0x00200000, 0x12008000, 0x80000000, 0x00400080, 0x2600a008, + 0x48860806, 0x00200000, 0x40004044, 0x14028000, 0x00100800, 0x04228080, 0x80100610, 0x00040080, 0x80004480, 0x0c000820, + 0x00004000, 0x182a8c30, 0x02240028, 0x00000009, 0x34400090, 0x10300000, 0x08005080, 0x60000858, 0x00008000, 0x20000001, + 0x00805050, 0x10468000, 0x00200800, 0x21088009, 0x02002080, 0x80000010, 0x440400c0, 0x02000200, 0x00800100, 0x88924048, + 0x10080c00, 0x10000000, 0x02408800, 0x40200010, 0x00008000, 0x30040090, 0x88034018, 0x40100040, 0x0a401808, 0x20114000, + 0x00000040, 0xe4244000, 0x40149080, 0x02004000, 0x1080a008, 0x00000080, 0xc4081050, 0x00000084, 0x08000882, 0x80040000, + 0x52000480, 0x00000000, 0x08008000, 0x84000000, 0x20803828, 0x11421090, 0x08800000, 0x44004004, 0x28002008, 0x12020010, + 0x00008000, 0x45000801, 0x22406044, 0x10100080, 0x00008030, 0x54020000, 0x20000000, 0x0100008c, 0x22168000, 0x08000020, + 0x01004040, 0x43000000, 0x94021080, 0x29048800, 0x04000060, 0x00000040, 0x40000018, 0x88811000, 0x14000000, 0x28000020, + 0x94400008, 0x0000a800, 0x00801000, 0x20002000, 0x40004000, 0x94081010, 0x40184800, 0x0a208048, 0x08800000, 0x80000000, + 0x02008880, 0x10000048, 0x868c0084, 0x00800000, 0x4a000000, 0x00000000, 0x02200000, 0x40080830, 0x00020000, 0x88200400, + 0x11001008, 0x02202860, 0x00000011, 0x04008040, 0x1800281c, 0xe0084000, 0x00c20000, 0x40084005, 0x00000000, 0x89020080, + 0x42008000, 0x05000004, 0x02400060, 0x08020089, 0x20820000, 0x00000840, 0x04800080, 0x40400010, 0x00201028, 0x08000040, + 0x20010800, 0x12007000, 0x88020080, 0x00040010, 0x20802000, 0x00000018, 0x90008000, 0x00040000, 0x10000000, 0x40205010, + 0x00000000, 0x8004c080, 0x00000000, 0x12810048, 0x80508010, 0x08200080, 0x04000000, 0x00c000c0, 0x00000804, 0x68213810, + 0x04400080, 0x00200800, 0x10020820, 0x00200088, 0x09001000, 0x22080000, 0x18201000, 0x00000010, 0x4000a009, 0x14080050, + 0x20024004, 0x80004004, 0x60082000, 0x01000000, 0x22808008, 0xe8020000, 0x400020c0, 0x01040000, 0x06808080, 0x00400000, + 0x10600040, 0x28000020, 0x06000802, 0x00000021, 0xa8000100, 0x00200810, 0x10003000, 0x08000080, 0x02804058, 0x80000048, + 0x70000000, 0x00042000, 0x0000c000, 0x04042008, 0x40010000, 0x82800008, 0x40048080, 0x40400048, 0x04000000, 0xa0000008, + 0x02810080, 0x08200044, 0x00808010, 0x44400802, 0x10000880, 0x04000410, 0x00602820, 0x02000820, 0x00208000, 0x18001000, + 0x20001010, 0x98000420, 0x00080080, 0x00000008, 0x00080000, 0x20002000, 0x00004054, 0xe0402000, 0x12028011, 0x00080000, + 0x40828000, 0x944000c0, 0x21001080, 0x02820001, 0x00028000, 0x10000040, 0x00404000, 0x04210200, 0x00000820, 0x0a010000, + 0x04a01098, 0x90801050, 0x0a000000, 0x20000000, 0x20250028, 0x14203000, 0x8000c800, 0x10404840, 0x08042000, 0x42100000, + 0x80a00000, 0x60098000, 0x00442080, 0x20000004, 0x00000080, 0x0a830000, 0x0040004a, 0x00000080, 0x04210800, 0x00000000, + 0x00080000, 0x84408482, 0x08800000, 0x02a00800, 0x80400060, 0x04008080, 0x00200010, 0x30001000, 0x00000000, 0x30002009, + 0x04085000, 0x50000800, 0x00002004, 0x00026020, 0x00028050, 0x81000000, 0x06005008, 0x00000000, 0x41800000, 0x92000080, + 0x00000800, 0x84020100, 0x48c0c048, 0x08200000, 0x80008820, 0x00040400, 0x00000000, 0x14000000, 0x20001010, 0x20002000, + 0x00001048, 0x8c000030, 0x00040000, 0x00006000, 0x40002000, 0x80000090, 0x00001000, 0x0a30c000, 0x00010000, 0x00808000, + 0x0a00c080, 0x04400000, 0x00002080, 0x82020241, 0x00808000, 0x08400000, 0x000a2200, 0x00281004, 0x08000020, 0x00000c40, + 0x00000008, 0x19003020, 0x06604410, 0x20882001, 0x40000094, 0x08300008, 0x00008080, 0xc0006048, 0x00200014, 0x80000000, + 0x00000800, 0x0002c004, 0x21000040, 0x12000080, 0x00a86003, 0x00000000, 0x10400140, 0x04000a20, 0x00000010, 0x00104000, + 0x48643820, 0xb0800008, 0x00001010, 0x00404000, 0x00000000, 0x04001000, 0x2010a088, 0x48000000, 0x00042000, 0x10086080, + 0x00008040, 0x40040000, 0x8000680c, 0x00800080, 0x0a018000, 0x50000002, 0x00000000, 0x040020c0, 0x20401800, 0x08000818, + 0x04008000, 0x18844004, 0x000008a0, 0x00000000, 0x2a200280, 0x10008090, 0x08021000, 0x80084000, 0x80000008, 0x10080000, + 0x60022040, 0x00004004, 0x00000000, 0x62601008, 0x04000000, 0x40028000, 0x89880820, 0x02800090, 0x00400000, 0x0820b008, + 0x54400000, 0x00000040, 0x00024080, 0x00000020, 0x08240801, 0x000004c0, 0x40001010, 0x08000000, 0x30000020, 0x00050000, + 0x20002000, 0x00000008, 0x00000000, 0xc4014000, 0x220400d0, 0x00000000, 0xc8248800, 0x04081010, 0x0a000000, 0x80200080, + 0x00c3a008, 0x00004000, 0x00408000, 0x04000044, 0x40200800, 0x04420410, 0x00004820, 0x09000020, 0x80000808, 0x202a0004, + 0x10001010, 0x05000000, 0x02008000, 0x6020c020, 0x00480000, 0x00002098, 0x80101004, 0x00024001, 0x50300860, 0x10003000, + 0x0002a040, 0xa1000090, 0x02800000, 0x00000080, 0x2800000d, 0x00240000, 0x04402042, 0x01804800, 0x00010801, 0x80a00000, + 0x08000030, 0x0040d000, 0x00000410, 0x12e00008, 0x20000808, 0x00042020, 0x045110c0, 0x40000000, 0x00051080, 0x0020c000, + 0x8c000808, 0x00008040, 0x00001000, 0x00840818, 0x02004080, 0xe8012000, 0x04100000, 0x00020040, 0x82604085, 0x10000200, + 0x14080000, 0x40404414, 0x88000000, 0x00a00020, 0x24020800, 0x00000000, 0x00000008, 0x51001890, 0x02002000, 0x20a04008, + 0x00088800, 0x14400000, 0x00000004, 0x482248a0, 0x80021000, 0x01000000, 0x43008050, 0x12040000, 0x40000000, 0x2c820888, + 0x80000000, 0x04000000, 0x10400050, 0x40244000, 0x21000020, 0x8a000800, 0x00000008, 0x10000000, 0x40015010, 0x82800000, + 0x20000808, 0x10002010, 0x4060c040, 0x06840000, 0x00100800, 0x00080080, 0x8c000000, 0x50009040, 0x00010018, 0x02940000, + 0x00002880, 0x04400040, 0x20000000, 0x18005014, 0x40800000, 0x00000400, 0x14006008, 0x00200410, 0x40000820, 0xa8028000, + 0x00000820, 0x11001008, 0x42804091, 0x00083018, 0x00000000, 0x28008000, 0x40422008, 0x01000000, 0x022040cd, 0x00004004, + 0x90008000, 0x08024838, 0x04008040, 0x03800081, 0x28004000, 0x404000c0, 0x00000800, 0x04006018, 0x08000860, 0x10000000, + 0x00200000, 0x30000828, 0x84001010, 0x0080c080, 0x00003018, 0x42000000, 0x24010040, 0x8020a008, 0x00404000, 0x52840880, + 0x0000c000, 0x00000000, 0xa4001050, 0x02008000, 0x00010080, 0x30900808, 0x00040080, 0x08408000, 0x54001050, 0x00200040, + 0x00002002, 0x564a0010, 0x04400000, 0x00004000, 0x28220000, 0x08202000, 0x01000002, 0x56004002, 0x10180100, 0x20000200, + 0x00020000, 0x20080000, 0x01000040, 0x6e000000, 0x400430c0, 0x00022020, 0x80000000, 0x85022040, 0x02000000, 0x39800000, + 0x06801004, 0x00000000, 0x00400000, 0x04400080, 0x18000000, 0x64240200, 0x18200000, 0x00008400, 0x02804040, 0x10100004, + 0x60400000, 0x04000020, 0xe00c0000, 0x00000400, 0x12800090, 0x40041008, 0x00000001, 0x94002020, 0x80021008, 0x02000000, + 0x20810004, 0x0ac10001, 0x00000000, 0x56000000, 0x04409002, 0x08381000, 0xc0080080, 0x00408000, 0x10100000, 0x02000044, + 0x0c090000, 0x20000008, 0x00000000, 0x0e5000c0, 0x00810020, 0x00200004, 0x20001400, 0x00000010, 0x00000100, 0x43940600, + 0x28a20000, 0x88040004, 0x00020400, 0x22200000, 0x00000002, 0x5a020010, 0x08888002, 0x80420008, 0x05003010, 0x08000002, + 0x20002000, 0x10800040, 0xa0000001, 0x80300000, 0x40480002, 0x000000c0, 0x00000010, 0x301a8000, 0x00000002, 0x05002400, + 0x01040851, 0x02210008, 0x44044000, 0x00002004, 0x50000000, 0x00000032, 0x0a011800, 0x10800000, 0x80000018, 0x08132004, + 0x00000000, 0x00008008, 0x21100006, 0x0c000000, 0x20000200, 0x41000000, 0x80400000, 0x01280420, 0x80060000, 0x00000000, + 0xc9000810, 0x108100a0, 0x1c080000, 0x81041002, 0x04000004, 0x00000010, 0x06400800, 0xc0000000, 0x51001000, 0x00800004, + 0x00342008, 0x01000000, 0x06000000, 0x000c4000, 0xc0808000, 0x00610000, 0x02060002, 0x00600000, 0x10020000, 0x00000600, + 0x10800000, 0x43040800, 0x0c400041, 0x40000000, 0x00c11200, 0x1a000020, 0xc0180000, 0x00400000, 0x08000040, 0x80c00000, + 0x85004000, 0x00200008, 0x00420000, 0x00200082, 0x14c00000, 0x20000000, 0x00002008, 0x10040000, 0x0002d000, 0x00c02020, + 0x02a4c000, 0x10000000, 0x00008000, 0x00000000, 0x00002040, 0x02004088, 0x00020060, 0x0000a000, 0x00080000, 0x10010030, + 0x00000100, 0x00080800, 0x00001028, 0x04482000, 0x01001020, 0x00010000, 0x20004084, 0x00202400, 0x3040c042, 0x00120400, + 0x02005804, 0x480120a9, 0x00000000, 0x0d00a004, 0x00140400, 0x00000001, 0xa0812209, 0x00008ca0, 0x80200000, 0x00100044, + 0x00000833, 0x00820080, 0x20008800, 0x00320028, 0x20000001, 0x00020412, 0x400c00a4, 0x00000400, 0x20000040, 0x00000009, + 0x00002828, 0x10080044, 0x04000140, 0x00000292, 0x01080804, 0x00000040, 0x0040000a, 0x00000010, 0x00414400, 0x04000000, + 0x20000004, 0x22008800, 0x00000000, 0x00844548, 0x08055204, 0x00012800, 0x00008004, 0x00504042, 0x00000014, 0x00010090, + 0x80240000, 0x04400808, 0x00000088, 0x04001000, 0x80200000, 0x00000020, 0x00040c00, 0x20000042, 0x00001000, 0x50040040, + 0x00090a80, 0x00000000, 0x94201010, 0x00021042, 0x24004000, 0x00805280, 0x01000000, 0x08200002, 0x00082400, 0x00004050, + 0x02101080, 0x02010800, 0x00000800, 0x00202000, 0x00009010, 0x04200000, 0x00908000, 0x02000000, 0x10240000, 0x00000000, + 0x20400000, 0x86120000, 0x40000860, 0x01800000, 0x00080000, 0x40801802, 0x00400000, 0x0c000008, 0x80100010, 0x00480000, + 0x10020000, 0x20200000, 0x08000000, 0x02000000, 0x00088000, 0x00000002, 0x00000000, 0x00000000, 0x10110000, 0x40400000, + 0x40000040, 0x00090000, 0x82800000, 0x00000000, 0x00800000, 0x02400002, 0x41000000, 0x20020000, 0x40500000, 0x804c0018, + 0x00200000, 0x20020000, 0x00816004, 0x04400000, 0x11100000, 0x41000004, 0x10000000, 0x04080000, 0x00018000, 0x30100000, + 0x28080008, 0x40400084, 0x00020000, 0x80000000, 0x40000000, 0x08200000, 0x20080002, 0x80000000, 0x00340000, 0x00040000, + 0x00010010, 0x800a0000, 0x40020000, 0x30002000, 0x40000000, 0x02800000, 0xc0040000, 0xa0000000, 0x15000000, 0x59c04000, + 0x02830000, 0xc0200000, 0x00800000, 0x20000000, 0x02040000, 0x00c00000, 0x08200000, 0x00020001, 0x98100020, 0x00120000, + 0x00000000, 0x08b10000, 0x02080000, 0x00000000, 0x01000000, 0x58100000, 0x02040000, 0xc0000000, 0x20060000, 0x04000000, + 0x00818000, 0x28a20000, 0x08000000, 0x80880080, 0x00420000, 0x00000000, 0x10000000, 0x00000000, 0x00000004, 0x02000240, + 0x02880000, 0x80000000, 0x00000002, 0x04000000, 0x00000000, 0x98100000, 0x00000000, 0x00200000, 0x00002008, 0x00800000, + 0x08000000, 0x00000010, 0x20080000, 0x00100000, 0x0000c000, 0x00040000, 0x00000000, 0x10000000, 0xa0000000, 0x00000000, + 0x000002c0, 0x02800000, 0x000a0000, 0x04200000, 0x00000000, 0x84400001, 0x00000800, 0x08000000, 0x00000000, 0x10201000, + 0x00100000, 0x00000000, 0x04800000, 0x00000000, 0x00000000, 0x80800000, 0x00000000, 0x40000000, 0x00100000, 0x80000000, + 0x00000004, 0x10100000, 0x80000000, 0x28000000, 0x00200002, 0x00000000, 0x00000000, 0x12000000, 0x40c00000, 0x00000002, + 0x88080000, 0x08200000, 0x00000000, 0x02000010, 0x10120000, 0x00800000, 0xc0400000, 0x00000000, 0x00000000, 0x48a40000, + 0x40400000, 0x10080000, 0x20108080, 0x08020000, 0x00200000, 0x00c40000, 0x00180000, 0x00000002, 0x54000040, 0x04040000, + 0x00420000, 0x00880000, 0x80000000, 0x00000000, 0x02000010, 0x10000000, 0x00020000, 0x04202000, 0x00400000, 0x00000000, + 0x00204004, 0x00000000, 0x10480000, 0x04100000, 0xc0200000, 0x00000000, 0x00800000, 0x02000000, 0x00000000, 0x80000000, + 0x06100000, 0x00000040, 0x08000004, 0x00400000, 0x00000000, 0x00100000, 0x40000000, 0x80901000, 0x10000002, 0x00080000, + 0x08202000, 0x00000000, 0x00580000, 0x00000000, 0x00000000, 0x80200000, 0x80040000, 0x00000000, 0x00000000, 0x00100000, + 0x02000000, 0x02000000, 0x00000400, 0x00800000, 0x04000000, 0x00000000, 0x30000000, 0x00000000, 0x10040000, 0x00000000, + 0x001a0000, 0x00000008, 0xa8800000, 0x30080000, 0x00000000, 0x00440000, 0x00100000, 0x00208000, 0x10000000, 0x88000000, + 0x14500000, 0x00000000, 0x01200000, 0x00000000, 0x4a400000, 0x00000000, 0x50100000, 0x04600000, 0x20000000, 0x80000000, + 0x00000000, 0x04000000, 0x02000002, 0x40400000, 0x00100000, 0x88000000, 0x00800004, 0x08040000, 0x12200000, 0x04800000, + 0x10000000, 0x04000000, 0x20480000, 0x01800000, 0x080a0000, 0x00240000, 0x10100000, 0x40000000, 0xa0200000, 0x20020000, + 0x0c080000, 0x00140000, 0x00000000, 0x02140000, 0xc0200000, 0x00000000, 0x84000000, 0x00060000, 0x02000000, 0x00000000, + 0x00000000, 0x84000000, 0x00020000, 0xb8400000, 0x00000000, 0x00000000, 0x10600000, 0x08000000, 0x80000000, 0x00a00000, + 0x20000000, 0x00000000, 0x10100002, 0x40000000, 0x00000000, 0x22000004, 0x40000000, 0x04000000, 0x00000000, 0x00000000, + 0x30000000, 0x88200000, 0x00000000, 0x00800000, 0x0a000000, 0x04080000, 0x00400002, 0x00000000, 0x08200000, 0x40000000, + 0xa00a0000, 0x00000000, 0x00000000, 0x18100000, 0x00000000, 0x22000000, 0x00c80000, 0xc0000000, 0x00000000, 0x00240000, + 0x80120000, 0x00000000, 0x10400001, 0x00800000, 0x60000000, 0x06000000, 0x00600000, 0x04000000, 0x18000000, 0x08000000, + 0x00200000, 0x20000000, 0x10000080, 0x08000080, 0x80a00000, 0x00100004, 0x20000440, 0x50400000, 0x00000000, 0x20600000, + 0x00800000, 0x80801000, 0x00100000, 0x40200000, 0x80000000, 0x00002000, 0x1e100000, 0x00000004, 0x00c00000, 0x42000000, + 0x04408000, 0x00000000, 0x08280010, 0x00200000, 0x10000000, 0x08100200, 0x20080000, 0x10000400, 0x00140000, 0x40080000, + 0x20000000, 0x80000800, 0x40040000, 0x00000001, 0x00120000, 0x02000000, 0x00022000, 0x80b00000, 0x0c600004, 0x00800004, + 0x02000000, 0x00000002, 0x00400000, 0x14008000, 0x08280001, 0x00080000, 0x00100000, 0x10000000, 0x82000000, 0x00000040, + 0x00000000, 0x00000000, 0x60000828, 0x00000000, 0x00000008, 0x00800810, 0x00400004, 0x00200000, 0x82002008, 0x00c00000, + 0x00000000, 0x20004002, 0x00000000, 0x00000000, 0x00084004, 0x40000000, 0x28200000, 0x00110000, 0x01000000, 0xa0800000, + 0x00440080, 0x02080000, 0x00000000, 0x00040060, 0xc4000000, 0x00000000, 0x00420030, 0x00000000, 0x10000000, 0x00001018, + 0x0c000000, 0x00600000, 0x00800000, 0x20000000, 0x00000000, 0x00808000, 0x08000000, 0x00000000, 0x10300002, 0xc0000000, + 0x20400000, 0x90220004, 0x00800000, 0x48000000, 0x80600000, 0x10000000, 0x06000000, 0x00200000, 0x04880000, 0x00400000, + 0xc0100020, 0x10200000, 0x00000000, 0x18080000, 0x80020000, 0x10000000, 0x02840000, 0x40000000, 0x00000000, 0x04820000, + 0x00080000, 0x00000000, 0x00400080, 0x00800000, 0x08240000, 0x80000040, 0x00100000, 0x14020000, 0x20480000, 0x02080000, + 0x04000000, 0x18040000, 0x00400000, 0x00000000, 0xa0200000, 0x00020000, 0x18000000, 0x66844008, 0x00100000, 0x00080000, + 0x20020000, 0x80000000, 0x04000000, 0x98c00080, 0x00010000, 0x00000000, 0x08408002, 0x00000020, 0x00200004, 0x08000080, + 0x82800000, 0x10020000, 0x00000000, 0x00000008, 0x00080000, 0x08001000, 0x00000000, 0x08000000, 0x0000000c, 0x00200002, + 0x00020010, 0x80000004, 0x00100000, 0x00880000, 0x00000000, 0x00400000, 0x00200000, 0x00000082, 0x08000000, 0x00000000, + 0x02260000, 0x10000002, 0x02000000, 0x08300040, 0x00820000, 0x00080000, 0x00140000, 0x04000000, 0x00400000, 0x08080008, + 0x00600000, 0x00020010, 0x00080004, 0x00000000, 0x00100001, 0x40004000, 0x04080000, 0x20400004, 0x40028000, 0x00040000, + 0x60000000, 0x0c000000, 0x18000000, 0x81000000, 0x00100008, 0x30100000, 0x02800002, 0x00200000, 0x00000000, 0x04400000, + 0x00000000, 0x40000000, 0x88200000, 0x00800000, 0x00000000, 0x10000010, 0xa2086000, 0x06000000, 0x00080000, 0x40c00000, + 0x38000000, 0x40000000, 0x04008000, 0x00000000, 0x80220000, 0x28000480, 0x00000000, 0x02080000, 0x10000020, 0x000c0000, + 0x10000000, 0x20000010, 0x00800000, 0xc8480000, 0x00262000, 0x00000000, 0x00060010, 0xb4080000, 0x02000000, 0x20480000, + 0x08000000, 0x00200000, 0x04000006, 0x80000000, 0x00000000, 0x80200000, 0x00000280, 0x90000004, 0x08020020, 0x00080048, + 0x00000000, 0x10900040, 0x00000800, 0x00000020, 0x02000008, 0x08020014, 0x18000000, 0x40200004, 0x00180000, 0x30000000, + 0x80100000, 0x00800012, 0x00240000, 0x2a804000, 0x80048000, 0x00000000, 0x14040000, 0x01080200, 0x00210000, 0x88000000, + 0x00400040, 0x00080000, 0x10400000, 0x02000800, 0x08000000, 0x3c400020, 0x00081000, 0x50120000, 0x10240000, 0x08000000, + 0x140a0000, 0x80102008, 0x00404001, 0x40000000, 0x02280000, 0x00040000, 0x04008000, 0x10040000, 0x20000010, 0x88010281, + 0x06120000, 0x00000000, 0x40000000, 0x86800000, 0x08400008, 0x04000000, 0x0a400000, 0x54100002, 0x08000000, 0x10100000, + 0x80000000, 0x00900000, 0x06000000, 0x50400000, 0x80200000, 0x4c100000, 0x10000000, 0x00800000, 0x80080000, 0x0a020000, + 0x04000000, 0x22800000, 0x10a40010, 0x08000000, 0xe7080000, 0x00210000, 0x10040000, 0x0a200000, 0x04020000, 0xa0200000, + 0x14080000, 0x40000001, 0x00440000, 0x22080000, 0x40020000, 0xa0000000, 0x50340000, 0x00020000, 0x00000000, 0xa8020000, + 0x46000002, 0x00000000, 0x02080000, 0x14000010, 0x20800000, 0x00000000, 0x0c000000, 0x00800000, 0x08200020, 0x00000004, + 0xa2100000, 0x00000002, 0x10000000, 0x00000000, 0x0000000a, 0x20800000, 0x00200004, 0x00000000, 0x40000000, 0x84800000, + 0x02000000, 0x00000002, 0x02800000, 0x10080000, 0x00600010, 0x74400000, 0x00800000, 0x02000000, 0x00000000, 0x04200000, + 0x2c120010, 0x82000000, 0x10300010, 0x00040000, 0x04080003, 0x50200000, 0x20000000, 0x40400000, 0x000c0001, 0x00000000, + 0x82020000, 0x40000000, 0x14c00000, 0x22080001, 0x00800000, 0x80200000, 0x00400000, 0x04000000, 0x00100000, 0xc0200000, + 0x00400000, 0x00000000, 0x00100000, 0x10000100, 0x08a00000, 0x10100042, 0x02000000, 0x20000400, 0x60000020, 0x04000000, + 0x00000022, 0xc0000010, 0x00001000, 0x18000000, 0x82000000, 0x40000000, 0x60882008, 0x04480004, 0xa2840000, 0x50000004, + 0x00600000, 0x0c800000, 0x00100002, 0x10200000, 0x04000000, 0x08080080, 0x40000040, 0x1a320041, 0x24040000, 0x00000800, + 0x20020000, 0x10080000, 0x88040010, 0x40001000, 0x02000010, 0x00020008, 0x40040000, 0x80200000, 0x14400000, 0x02080000, + 0x00000000, 0x08200002, 0x00400000, 0x44100000, 0x18000001, 0x08000000, 0x90c08082, 0x00000020, 0x00000000, 0x08220480, + 0x10900000, 0x80000004, 0x28000000, 0x04000008, 0x28200000, 0x40000000, 0xd0000004, 0x00000000, 0x0200201a, 0x80000000, + 0x00000002, 0x00100000, 0x20000000, 0x86800000, 0x00400000, 0x00240000, 0x44400010, 0x01088000, 0x80210000, 0x12000000, + 0x28100000, 0x44000000, 0x18100012, 0x00080000, 0x00080000, 0x26000000, 0x00001801, 0x00040000, 0x484a0000, 0x20000000, + 0x00020000, 0x02ac0002, 0xc4002000, 0x00040000, 0x02000001, 0x0050c004, 0x00080000, 0x00200000, 0x84408000, 0x08910000, + 0x00000000, 0x0c500000, 0x01000000, 0x22200000, 0x08400000, 0x10100000, 0x00000000, 0x00000840, 0x00200000, 0x00800000, + 0x20000000, 0x40100000, 0x00400000, 0x88900000, 0x00000000, 0x80000000, 0x00004000, 0x00000000, 0x00100000, 0x02c00002, + 0x04420000, 0x00820000, 0x88200080, 0x40a00000, 0x0c020000, 0x30910002, 0x90000000, 0x08500000, 0x00040020, 0x20000000, + 0x08000000, 0xc0280020, 0x00100000, 0x40040000, 0x10422000, 0x00020000, 0x00000000, 0xa0204004, 0x00000000, 0x12000000, + 0x04000000, 0x04000000, 0x00420000, 0x40200080, 0x00000000, 0x00500000, 0x02008206, 0x00200020, 0x08000000, 0x00000400, + 0x00000000, 0x10900000, 0x04400040, 0x20000008, 0x40020000, 0x04000020, 0x00000000, 0x40000000, 0x00081004, 0x00400002, + 0x00000000, 0x90200004, 0x00800000, 0x02000000, 0x80000000, 0x00040000, 0x04c00000, 0x4a000200, 0x88000000, 0x04200000, + 0x00520440, 0x00000010, 0x18000000, 0x00900400, 0x00000000, 0x20080000, 0x04400020, 0x00000000, 0x00020000, 0x400c0008, + 0x00000002, 0x80000000, 0x00022004, 0x22200000, 0x00000000, 0x80008003, 0x08000000, 0x04000000, 0x02400000, 0x08000000, + 0x04000000, 0x0a020084, 0x08000000, 0x01000000, 0x00700000, 0x20000000, 0x08000000, 0x54500000, 0x00000004, 0x20800000, + 0x10401810, 0x80000000, 0x00000000, 0x60000008, 0x88000000, 0x00000000, 0x04404000, 0x02000000, 0x00800000, 0x18208000, + 0x00000002, 0x00800000, 0x24c00080, 0x00000000, 0x14100000, 0x08600000, 0x00180001, 0xa8020000, 0x50000000, 0x00080000, + 0x10040000, 0x28020000, 0x40040000, 0x82000000, 0x34281000, 0x80000000, 0x08020000, 0x20800008, 0x00400000, 0x04300000, + 0x8a8a0000, 0x00400000, 0x00900000, 0x84810000, 0x00200000, 0x00000000, 0x40400000, 0x08200120, 0x10000282, 0x0000000c, + 0x90080040, 0x00000400, 0x02900020, 0x00000808, 0x00000000, 0x24400000, 0x40020000, 0x00000000, 0x80000006, 0x00200000, + 0xa000000a, 0x40000010, 0x00800000, 0x00404000, 0x42000000, 0x04580000, 0x08008002, 0xd1000000, 0x00010000, 0x002d0200, + 0x8c020002, 0x10000000, 0x00000040, 0x0a100810, 0x00280020, 0x20400800, 0x00201010, 0x40160000, 0x00000000, 0x08200000, + 0x80000002, 0x00020000, 0x00000010, 0x06804000, 0x40004004, 0x00080001, 0x60000000, 0x04c28000, 0x00000015, 0x08000080, + 0x80000000, 0x00000000, 0x00800000, 0x82800000, 0x5c300000, 0x00000000, 0x10000000, 0x00300000, 0x22800000, 0x00200000, + 0xc8000000, 0x00000000, 0x54800000, 0x00600000, 0x08080000, 0x84080000, 0x12040000, 0x00900000, 0x00040000, 0xaa020000, + 0x44000000, 0x004a0000, 0x10200000, 0x80200000, 0x21000000, 0x08060000, 0x10000000, 0x44540000, 0x00080002, 0x02020000, + 0xa0000000, 0x10480000, 0x00040000, 0x40000000, 0x04000000, 0x90020000, 0x04200000, 0x4a000010, 0x02100000, 0x08840000, + 0x20080000, 0x00000000, 0x04800000, 0x12400004, 0x48200000, 0x08400000, 0x44100000, 0x00000020, 0x18200000, 0x00000000, + 0x00900000, 0x00000000, 0x10000000, 0x00000000, 0x60000000, 0x00400008, 0x08000000, 0x84000004, 0x42200000, 0x00800000, + 0x00100002, 0x94000000, 0x00000000, 0x02000000, 0x08a80000, 0x00000000, 0x04000000, 0x52400000, 0x08040002, 0x00000000, + 0x002a0000, 0x00100000, 0xb0000011, 0x42000000, 0x00800000, 0x000c0000, 0x20400000, 0x00020000, 0x80100000, 0x4a040001, + 0x00200002, 0x00800000, 0x80020010, 0x00000000, 0x06000000, 0x30900000, 0x00480000, 0x08800000, 0x44000000, 0x00000000, + 0x08400000, 0x44000000, 0x04500000, 0x18000000, 0x00200280, 0x18300000, 0x00000000, 0x42000000, 0x10100800, 0x20000020, + 0x04000000, 0x20080000, 0x80000010, 0x4a200000, 0x40880000, 0x80000000, 0x54080000, 0x80024000, 0x00000000, 0x0aa80000, + 0x02820002, 0x80408000, 0x54000000, 0x04400000, 0x08200000, 0x020a0000, 0x28200040, 0x10100400, 0x42000000, 0x10540000, + 0x08000000, 0x201a0820, 0xa0081000, 0x40000010, 0x0a040000, 0x40042000, 0x000a0008, 0x80000000, 0x80020000, 0x04000000, + 0x0a000004, 0x02400000, 0x84800000, 0x20080002, 0x04400000, 0x10200000, 0x80100082, 0x10000000, 0x91900000, 0x04000400, + 0x08280000, 0x04000000, 0x40100000, 0x05000000, 0x08800000, 0x02101000, 0x20000000, 0x04000000, 0x01000000, 0x04050000, + 0x02010000, 0x10000000, 0x24020004, 0x08100000, 0x00000000, 0x02000000, 0x08200000, 0x00400080, 0x10010000, 0x00420000, + 0x69800000, 0x02200000, 0x00080000, 0x80000000, 0x01100000, 0x42040000, 0x00400000, 0x02200000, 0x00500000, 0x00000000, + 0x00000000, 0x00050000, 0x40000000, 0x00000000, 0x04440000, 0x09000002, 0x62140000, 0x10020000, 0x10000080, 0x86030000, + 0x24000000, 0x00808000, 0x20000000, 0x40000000, 0x21000040, 0xc0400000, 0x02000000, 0x00040460, 0x08230000, 0x03180000, + 0x80000810, 0x10020000, 0x00020000, 0x00001008, 0x68800000, 0x21300000, 0x00002008, 0x80440000, 0x52080000, 0x9840c004, + 0x01140000, 0x40180000, 0x00000000, 0x25000000, 0x80000000, 0x10400000, 0x8c000000, 0x24000000, 0x08240060, 0x00800000, + 0x110a0000, 0x80810010, 0x00000000, 0xc1000000, 0x10081008, 0x06110000, 0x58000000, 0x00c02004, 0x14100000, 0x20020000, + 0x0000c000, 0x00800000, 0x08090000, 0x00088000, 0x00200000, 0x08080000, 0x00000000, 0x00480000, 0x04020000, 0x0a000000, + 0x00800000, 0x00080000, 0x30400000, 0x00400000, 0x70000000, 0x00000000, 0x08c90000, 0x00200000, 0xd0500000, 0x00000000, + 0x00000000, 0x00a20000, 0x00800000, 0x04000000, 0x00a00000, 0x00000000, 0x24000000, 0x00880000, 0x40000000, 0x00200000, + 0x00000000, 0x00840000, 0x00000000, 0x10400000, 0x04000000, 0x20000000, 0x00000000, 0x00000000, 0x28080000, 0x00400000, + 0x00000000, 0x02000000, 0x88020000, 0x00000000, 0x80080000, 0x00000000, 0x00000000, 0x04000000, 0x00100000, 0x00400000, +}; +//uint32_t axFPGAMemInit[] = { +// +//}; diff --git a/qf_vr_apps/qf_vr_aec_app/inc/vr_engine_api.h b/qf_vr_apps/qf_vr_aec_app/inc/vr_engine_api.h new file mode 100644 index 00000000..60abacac --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/vr_engine_api.h @@ -0,0 +1,27 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +#ifndef VR_ENGINE_API_H +#define VR_ENGINE_API_H + +// These 3 APIs need to be provided by every VR engine +extern void vr_engine_init(void); + +extern int vr_engine_get_samples_per_frame(void); + +extern int vr_engine_process(short *samples); + +#endif /* VR_ENGINE_API_H */ \ No newline at end of file diff --git a/qf_vr_apps/qf_vr_aec_app/inc/ww_metadata.h b/qf_vr_apps/qf_vr_aec_app/inc/ww_metadata.h new file mode 100644 index 00000000..cbd58950 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/inc/ww_metadata.h @@ -0,0 +1,31 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +#ifndef WW_METADATA_H +#define WW_METADATA_H + +#define MAX_KEPHRASE_SCORES (16) +typedef struct t_ql_audio_meta_data_ +{ + int32_t n_keyphrase_count; // number of key phrases detected + int32_t n_keyphrase_triggered_index; // Index in the array of keyphrases + int32_t n_keyphrase_start_index; // Start of Key Phrase in number of samples from start of buffer + int32_t n_keyphrase_end_index; // End of Key Phrase in number of samples from start of buffer + int32_t a_keyphrase_score; + int32_t n_length_estimate; // WW Length estimate +} t_ql_audio_meta_data; + +#endif /* WW_METADATA_H */ diff --git a/qf_vr_apps/qf_vr_aec_app/src/arm_rfft_fast_init_f32.c b/qf_vr_apps/qf_vr_aec_app/src/arm_rfft_fast_init_f32.c new file mode 100644 index 00000000..66d1ed6c --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/arm_rfft_fast_init_f32.c @@ -0,0 +1,315 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_init_f32.c + * Description: Split Radix Decimation in Frequency CFFT Floating point processing function + * + * $Date: 18. March 2019 + * $Revision: V1.6.0 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + @ingroup groupTransforms + */ + +/** + @addtogroup RealFFT + @{ + */ + + +/** + @brief Initialization function for the 32pt floating-point real FFT. + @param[in,out] S points to an arm_rfft_fast_instance_f32 structure + @return execution status + - \ref ARM_MATH_SUCCESS : Operation successful + - \ref ARM_MATH_ARGUMENT_ERROR : an error is detected + */ + +arm_status arm_rfft_32_fast_init_f32( arm_rfft_fast_instance_f32 * S ) { + + arm_cfft_instance_f32 * Sint; + + if( !S ) return ARM_MATH_ARGUMENT_ERROR; + + Sint = &(S->Sint); + Sint->fftLen = 16U; + S->fftLenRFFT = 32U; + + Sint->bitRevLength = ARMBITREVINDEXTABLE_16_TABLE_LENGTH; + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable16; + Sint->pTwiddle = (float32_t *) twiddleCoef_16; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_32; + + return ARM_MATH_SUCCESS; +} + +/** + @brief Initialization function for the 64pt floating-point real FFT. + @param[in,out] S points to an arm_rfft_fast_instance_f32 structure + @return execution status + - \ref ARM_MATH_SUCCESS : Operation successful + - \ref ARM_MATH_ARGUMENT_ERROR : an error is detected + */ + +arm_status arm_rfft_64_fast_init_f32( arm_rfft_fast_instance_f32 * S ) { + + arm_cfft_instance_f32 * Sint; + + if( !S ) return ARM_MATH_ARGUMENT_ERROR; + + Sint = &(S->Sint); + Sint->fftLen = 32U; + S->fftLenRFFT = 64U; + + Sint->bitRevLength = ARMBITREVINDEXTABLE_32_TABLE_LENGTH; + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable32; + Sint->pTwiddle = (float32_t *) twiddleCoef_32; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_64; + + return ARM_MATH_SUCCESS; +} + +/** + @brief Initialization function for the 128pt floating-point real FFT. + @param[in,out] S points to an arm_rfft_fast_instance_f32 structure + @return execution status + - \ref ARM_MATH_SUCCESS : Operation successful + - \ref ARM_MATH_ARGUMENT_ERROR : an error is detected + */ + +arm_status arm_rfft_128_fast_init_f32( arm_rfft_fast_instance_f32 * S ) { + + arm_cfft_instance_f32 * Sint; + + if( !S ) return ARM_MATH_ARGUMENT_ERROR; + + Sint = &(S->Sint); + Sint->fftLen = 64U; + S->fftLenRFFT = 128U; + + Sint->bitRevLength = ARMBITREVINDEXTABLE_64_TABLE_LENGTH; + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable64; + Sint->pTwiddle = (float32_t *) twiddleCoef_64; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_128; + + return ARM_MATH_SUCCESS; +} + +/** + @brief Initialization function for the 256pt floating-point real FFT. + @param[in,out] S points to an arm_rfft_fast_instance_f32 structure + @return execution status + - \ref ARM_MATH_SUCCESS : Operation successful + - \ref ARM_MATH_ARGUMENT_ERROR : an error is detected +*/ + +arm_status arm_rfft_256_fast_init_f32( arm_rfft_fast_instance_f32 * S ) { + + arm_cfft_instance_f32 * Sint; + + if( !S ) return ARM_MATH_ARGUMENT_ERROR; + + Sint = &(S->Sint); + Sint->fftLen = 128U; + S->fftLenRFFT = 256U; + + Sint->bitRevLength = ARMBITREVINDEXTABLE_128_TABLE_LENGTH; + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable128; + Sint->pTwiddle = (float32_t *) twiddleCoef_128; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_256; + + return ARM_MATH_SUCCESS; +} + +/** + @brief Initialization function for the 512pt floating-point real FFT. + @param[in,out] S points to an arm_rfft_fast_instance_f32 structure + @return execution status + - \ref ARM_MATH_SUCCESS : Operation successful + - \ref ARM_MATH_ARGUMENT_ERROR : an error is detected + */ + +arm_status arm_rfft_512_fast_init_f32( arm_rfft_fast_instance_f32 * S ) { + + arm_cfft_instance_f32 * Sint; + + if( !S ) return ARM_MATH_ARGUMENT_ERROR; + + Sint = &(S->Sint); + Sint->fftLen = 256U; + S->fftLenRFFT = 512U; + + Sint->bitRevLength = ARMBITREVINDEXTABLE_256_TABLE_LENGTH; + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable256; + Sint->pTwiddle = (float32_t *) twiddleCoef_256; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_512; + + return ARM_MATH_SUCCESS; +} + +/** + @brief Initialization function for the 1024pt floating-point real FFT. + @param[in,out] S points to an arm_rfft_fast_instance_f32 structure + @return execution status + - \ref ARM_MATH_SUCCESS : Operation successful + - \ref ARM_MATH_ARGUMENT_ERROR : an error is detected + */ + +arm_status arm_rfft_1024_fast_init_f32( arm_rfft_fast_instance_f32 * S ) { + + arm_cfft_instance_f32 * Sint; + + if( !S ) return ARM_MATH_ARGUMENT_ERROR; + + Sint = &(S->Sint); + Sint->fftLen = 512U; + S->fftLenRFFT = 1024U; + + Sint->bitRevLength = ARMBITREVINDEXTABLE_512_TABLE_LENGTH; + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable512; + Sint->pTwiddle = (float32_t *) twiddleCoef_512; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_1024; + + return ARM_MATH_SUCCESS; +} + +/** + @brief Initialization function for the 2048pt floating-point real FFT. + @param[in,out] S points to an arm_rfft_fast_instance_f32 structure + @return execution status + - \ref ARM_MATH_SUCCESS : Operation successful + - \ref ARM_MATH_ARGUMENT_ERROR : an error is detected + */ +arm_status arm_rfft_2048_fast_init_f32( arm_rfft_fast_instance_f32 * S ) { + + arm_cfft_instance_f32 * Sint; + + if( !S ) return ARM_MATH_ARGUMENT_ERROR; + + Sint = &(S->Sint); + Sint->fftLen = 1024U; + S->fftLenRFFT = 2048U; + + Sint->bitRevLength = ARMBITREVINDEXTABLE_1024_TABLE_LENGTH; + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable1024; + Sint->pTwiddle = (float32_t *) twiddleCoef_1024; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_2048; + + return ARM_MATH_SUCCESS; +} + +/** +* @brief Initialization function for the 4096pt floating-point real FFT. +* @param[in,out] S points to an arm_rfft_fast_instance_f32 structure + @return execution status + - \ref ARM_MATH_SUCCESS : Operation successful + - \ref ARM_MATH_ARGUMENT_ERROR : an error is detected + */ + +arm_status arm_rfft_4096_fast_init_f32( arm_rfft_fast_instance_f32 * S ) { + + arm_cfft_instance_f32 * Sint; + + if( !S ) return ARM_MATH_ARGUMENT_ERROR; + + Sint = &(S->Sint); + Sint->fftLen = 2048U; + S->fftLenRFFT = 4096U; + + Sint->bitRevLength = ARMBITREVINDEXTABLE_2048_TABLE_LENGTH; + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable2048; + Sint->pTwiddle = (float32_t *) twiddleCoef_2048; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_4096; + + return ARM_MATH_SUCCESS; +} +#include +/** + @brief Initialization function for the floating-point real FFT. + @param[in,out] S points to an arm_rfft_fast_instance_f32 structure + @param[in] fftLen length of the Real Sequence + @return execution status + - \ref ARM_MATH_SUCCESS : Operation successful + - \ref ARM_MATH_ARGUMENT_ERROR : fftLen is not a supported length + + @par Description + The parameter fftLen specifies the length of RFFT/CIFFT process. + Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096. + @par + This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. + */ + +arm_status arm_rfft_fast_init_f32( + arm_rfft_fast_instance_f32 * S, + uint16_t fftLen) +{ + typedef arm_status(*fft_init_ptr)( arm_rfft_fast_instance_f32 *); + fft_init_ptr fptr = 0x0; + + switch (fftLen) + { +#if 1 + case 4096U: + //fptr = arm_rfft_4096_fast_init_f32; + assert(0); + break; + case 2048U: +// fptr = arm_rfft_2048_fast_init_f32; + assert(0); + break; + case 1024U: +// fptr = arm_rfft_1024_fast_init_f32; + assert(0); + break; + case 512U: +// fptr = arm_rfft_512_fast_init_f32; + assert(0); + break; + case 256U: +// fptr = arm_rfft_256_fast_init_f32; + assert(0); + break; + case 128U: + fptr = arm_rfft_128_fast_init_f32; + break; +#endif + case 64U: + fptr = arm_rfft_64_fast_init_f32; + break; + case 32U: + fptr = arm_rfft_32_fast_init_f32; + break; + default: + return ARM_MATH_ARGUMENT_ERROR; + } + + if( ! fptr ) return ARM_MATH_ARGUMENT_ERROR; + return fptr( S ); + +} + +/** + @} end of RealFFT group + */ diff --git a/qf_vr_apps/qf_vr_aec_app/src/c_lib_retarget.c b/qf_vr_apps/qf_vr_aec_app/src/c_lib_retarget.c new file mode 100644 index 00000000..17998b0f --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/c_lib_retarget.c @@ -0,0 +1,131 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : c_lib_retarget.c + * Purpose: + * + *=========================================================*/ + +#include "Fw_global_config.h" + +#include +#include +#include +#include +#include + + + +int fgetc(FILE * file) +{ +#ifdef DISABLE_UART_PRINTS + return 0; +#else + return uart_rx(UART_ID_HW); +#endif +} + +int fputc(int ch, FILE * file) +{ +#ifdef DISABLE_UART_PRINTS + return 0; +#else + uart_tx(UART_ID_HW,ch); + return ch; +#endif +} + + +#if (defined( __CELERIES_GCC) || defined( __GNUC__)) +#include +#include +#endif + +//FILE __stdout; +//FILE __stdin; + +#if 0 +int fgetc(FILE * file) +{ + return uart_rx( UART_ID_CONSOLE ); +} + +int fputc(int ch, FILE * file) +{ + uart_tx(UART_ID_CONSOLE, ch); + return ch; +} +#endif + +#if (defined( __CELERIES_GCC) || defined( __GNUC__)) + + +int _write(int file, char *ptr, int len) +{ + (void)file; + uart_tx_buf( UART_ID_CONSOLE, ptr, len ); + return len; +} + +int _close(int file) +{ + return -1; +} + +int _lseek(int file, int ptr, int dir) +{ + return 0; +} + +int _read (int file, char *ptr, int len) +{ + return 0; +} + +float floorf(float X) +{ + return (float)floor(X); +} + +double sin(double v) +{ + return (double)sinf(v); +} + +FILE *f_open(const char* filename, const char* mode) +{ + fopen(filename, mode); +} + +FILE* f_close(FILE* fp) +{ + fclose(fp); +} + +size_t f_write(const void *buf, size_t size, size_t count, FILE *fp) +{ + fwrite(buf, size, count, fp); +} + +size_t f_read(void *buf, size_t size, size_t count, + FILE *fp) +{ + fread(buf, size, count, fp); +} + +#endif diff --git a/qf_vr_apps/qf_vr_aec_app/src/exceptions.c b/qf_vr_apps/qf_vr_aec_app/src/exceptions.c new file mode 100644 index 00000000..6abc751f --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/exceptions.c @@ -0,0 +1,793 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : exceptions.c + * Purpose: This file contains the default exception handlers + * and exception table. + * + *=========================================================*/ + +#include "Fw_global_config.h" +#include +#include +#include "FreeRTOS.h" +#include "task.h" +#include "string.h" + +#include "eoss3_hal_def.h" +#include "eoss3_hal_pad_config.h" +#include "eoss3_dev.h" +#include "eoss3_hal_audio.h" +#include "eoss3_hal_i2s_drv.h" +#include "eoss3_hal_rtc.h" +#include "eoss3_hal_uart.h" +#include "dbg_uart.h" /* dbg_print() functions */ +#include "eoss3_hal_gpio.h" + +#include "sec_debug.h" +//#include "ffe_ipc_lib.h" + +//#include "vm1010.h" + +extern TaskHandle_t xPUITaskHandle; +extern TaskHandle_t xSensorTouchTaskHandle; +extern void HAL_Timer_ISR(void); +void PMU_Timer_Handler(void); +void HAL_SPI_IRQHandler(void); +void SPI_DMA_Complete(void); +HAL_StatusTypeDef HAL_PMU_Timer_Interrupt_Callback(); +void S3x_Tick_Hook(void); + +extern void service_intr_from_host(void); +extern void service_ack_from_host(void); + +/******************************************************************************/ +/* Cortex-M4 Processor Exceptions Handlers */ +/******************************************************************************/ +//extern uint32_t pmu_trigger; + +extern uint32_t pmu_trigger; // POWER_MANAGEMENT + + +volatile uint32_t gv_hardfault_args[10]; +volatile int hardfault_loop; + +static void spurious_interrupt( int lineno ) +{ + dbg_fatal_error_int( "sperious-irq", lineno ); +} + + +void prvGetRegistersFromStack( uint32_t *pulFaultStackAddress, uint32_t lr_exec_ret ) +{ + + // backup core registers + gv_hardfault_args[0] = pulFaultStackAddress[0]; // R0 + gv_hardfault_args[1] = pulFaultStackAddress[1]; // R1 + gv_hardfault_args[2] = pulFaultStackAddress[2]; // R2 + gv_hardfault_args[3] = pulFaultStackAddress[3]; // R3 + gv_hardfault_args[4] = pulFaultStackAddress[4]; // R12 + gv_hardfault_args[5] = pulFaultStackAddress[5]; // LR + gv_hardfault_args[6] = pulFaultStackAddress[6]; // PC + gv_hardfault_args[7] = pulFaultStackAddress[7]; // PSR + gv_hardfault_args[8] = (unsigned long)pulFaultStackAddress; // Stack Pointer + gv_hardfault_args[9] = lr_exec_ret; + if (lr_exec_ret & 0x10) + gv_hardfault_args[8] += 0x20; + else + gv_hardfault_args[8] += 0x68; + + dbg_str("\n\n**hardfault**\n"); + dbg_str_hex32( "r0", gv_hardfault_args[0] ); + dbg_str_hex32( "r1", gv_hardfault_args[1] ); + dbg_str_hex32( "r2", gv_hardfault_args[2] ); + dbg_str_hex32( "r3", gv_hardfault_args[3] ); + dbg_str_hex32( "r12", gv_hardfault_args[4] ); + dbg_str_hex32( "lr", gv_hardfault_args[5] ); + dbg_str_hex32( "pc", gv_hardfault_args[6] ); + dbg_str_hex32( "SP", gv_hardfault_args[7] ); + dbg_str("stackdump x256\n"); + dbg_memdump32( (intptr_t)(gv_hardfault_args[8]), (void *)(gv_hardfault_args[8]), 256); + // TODO + // If we modify SHCSR, the reboot cause will be one of hardfault, userfault, busfault and MemManage. + // We have to define more reboot causes. + REBOOT_STATUS_REG &= ~REBOOT_CAUSE; + REBOOT_STATUS_REG |= REBOOT_CAUSE_HARDFAULT; /* CHANGING THIS VALUE OR REGISTER REQUIRE CORRESPONDING CHANGE IN BOOTLOADER */ + strcpy((char*)0x20000000, "hardfault"); + + hardfault_loop = 1; + while(hardfault_loop) + ; + +} + + +/** + * @brief This function handles Hard Fault exception. + * @param None + * @retval None + */ +void HardFault_Handler(void) { +#if 1 + __asm volatile + ( + " tst lr, #4 \n" + " ite eq \n" + " mrseq r0, msp \n" + " mrsne r0, psp \n" + " mov r1, lr \n" + " bl prvGetRegistersFromStack \n" + ); +#else + /* Go to infinite loop when Hard Fault exception occurs */ + while (1); +#endif +} + +/** + * @brief This function handles NMI exception. + * @param None + * @retval None + */ +void NMI_Handler(void) +{ + spurious_interrupt(__LINE__); +} + +/** + * @brief This function handles Memory Manage exception. + * @param None + * @retval None + */ +void MemManage_Handler(void) +{ + spurious_interrupt(__LINE__); +} + +/** + * @brief This function handles Bus Fault exception. + * @param None + * @retval None + */ +void BusFault_Handler(void) +{ + spurious_interrupt(__LINE__); +} + +/** + * @brief This function handles Usage Fault exception. + * @param None + * @retval None + */ +void UsageFault_Handler(void) +{ + spurious_interrupt(__LINE__); +} + +/** + * @brief This function handles Debug Monitor exception. + * @param None + * @retval None + */ +void DebugMon_Handler(void) +{ + spurious_interrupt(__LINE__); +} + +void SramSleepHandler(void) +{ + spurious_interrupt(__LINE__); +} + +int ucount=0; +int urxcount=0; +void Uart_Handler(void) { + if ((UART->UART_MIS & UART_MIS_RX)) + { + uart_isr_handler(UART_ID_HW); + urxcount++; + UART->UART_ICR = UART_IC_RX; + } + else if (UART->UART_MIS & UART_MIS_RX_TIMEOUT) { + uart_isr_handler(UART_ID_HW); + ucount++; + UART->UART_ICR = UART_IC_RX_TIMEOUT; + } + INTR_CTRL->OTHER_INTR &= UART_INTR_DETECT; +} + +void Timer_Handler(void) { + + HAL_Timer_ISR(); + INTR_CTRL->OTHER_INTR &= TIMER_INTR_DETECT; + NVIC_ClearPendingIRQ(Timer_IRQn); +} + +extern void WDT_ISR(void); +void CpuWdtInt_Handler(void) { + WDT_ISR(); + INTR_CTRL->OTHER_INTR &= WDOG_INTR_DETECT; + NVIC_ClearPendingIRQ(CpuWdtInt_IRQn); +} + +void CpuWdtRst_Handler(void) +{ + spurious_interrupt(__LINE__); +} + +void BusTimeout_Handler(void) +{ + spurious_interrupt(__LINE__); +} + +void Fpu_Handler(void) +{ + spurious_interrupt(__LINE__); +} + +void Pkfb_Handler(void) { + //fifoISR(); + INTR_CTRL->OTHER_INTR &= PKFB_INTR_DETECT; +} + +void I2s_Handler(void) +{ + spurious_interrupt(__LINE__); +} + +void Audio_Handler(void) +{ + spurious_interrupt(__LINE__); +} + +void SpiMs_Handler(void) { + uint32_t irq_status = (SPI_MS->ISR & 0x3f); + uint32_t new_mask; + + //Disable interrupt + INTR_CTRL->OTHER_INTR_EN_M4 &= ~(SPI_MS_INTR_EN_M4); + + //clear interrupt at top + INTR_CTRL->OTHER_INTR &= (SPI_MS_INTR_EN_M4); + + //Error Handling + if (irq_status + & (ISR_RXFOIM_ACTIVE | ISR_RXUIM_ACTIVE | ISR_TXOIM_ACTIVE)) { + //clear interrupts + SPI_MS->TXOICR |= 0x1; + SPI_MS->RXOICR |= 0x1; + SPI_MS->RXUICR |= 0x1; + goto IRQ_HANDLED; + } + + if (irq_status & ISR_TXEIM_ACTIVE) { + //Disable interrupt + new_mask = ((SPI_MS->IMR) & ~(ISR_TXEIM_ACTIVE)); + SPI_MS->IMR = new_mask; + + HAL_SPI_IRQHandler(); + } + + IRQ_HANDLED: + //enable SPI MS interrupt at top + INTR_CTRL->OTHER_INTR_EN_M4 |= SPI_MS_INTR_EN_M4; +} + +void CfgDma_Handler(void) { + //Disable interrupt + INTR_CTRL->OTHER_INTR_EN_M4 &= ~(CFG_DMA_DONE_EN_M4); + + //clear interrupt at top + INTR_CTRL->OTHER_INTR &= (CFG_DMA_DONE_EN_M4); + + SPI_DMA_Complete(); + + INTR_CTRL->OTHER_INTR_EN_M4 |= (CFG_DMA_DONE_EN_M4); +} + +void PmuTimer_Handler(void) { +// PMU->PMU_TIMER_CFG_1 = 0x0; +// PMU_Timer_Handler(); +} + +void AdcDone_Handler(void) +{ + spurious_interrupt(__LINE__); +} + +void RtcAlarm_Handler(void) { + INTR_CTRL->OTHER_INTR_EN_M4 &= ~(RTC_INTR_DETECT); + INTR_CTRL->OTHER_INTR &= RTC_INTR_DETECT; + HAL_RTC_ISR(); +} + +void ResetInt_Handler(void) +{ + spurious_interrupt(__LINE__); +} + +void Ffe0_Handler(void) { +#if 0 //for debug + uint32_t ffe0overrun = 0; + uint32_t sm0overrun = 0; +#endif + //Disable interrupt + INTR_CTRL->OTHER_INTR_EN_M4 &= ~(FFE0_INTR_OTHERS_EN_M4); + + //clear interrupt at top + INTR_CTRL->OTHER_INTR &= (FFE0_INTR_OTHERS_EN_M4); +#if 0 //for debug + if (EXT_REGS_FFE->INTERRUPT & FFE_INTR_FFE0_OVERRUN) { + ffe0overrun = 1; + } + if (EXT_REGS_FFE->INTERRUPT & FFE_INTR_FFE0_SM0_OVERRUN) { + sm0overrun = 1; + } +#endif +// HAL_SPI_IRQHandler(&SpiHandle); + //while(1); +} +HAL_FBISRfunction FB_ISR [MAX_FB_INTERRUPTS]={NULL,NULL,NULL,NULL}; +void FbMsg_Handler(void) { + +#if ( configSAVE_IRQ_HISTORY==1 ) + sec_save_irq_history("FbMsg\0", xTaskGetTickCountFromISR()); +#endif +uint32_t fbinterrupt = INTR_CTRL->FB_INTR; +// detect which one of the FB generators inetrrupted + if ( fbinterrupt & FB_0_INTR_DETECT) + { + // call that particualr ISR + if (FB_ISR[FB_INTERRUPT_0]) + FB_ISR[FB_INTERRUPT_0](); + // clear that interrupt at FB level + INTR_CTRL->FB_INTR = (FB_0_INTR_DETECT); + } + if ( fbinterrupt & FB_1_INTR_DETECT) + { + // call that particualr ISR + if (FB_ISR[FB_INTERRUPT_1]) + FB_ISR[FB_INTERRUPT_1](); + // clear that interrupt at FB level + INTR_CTRL->FB_INTR = (FB_1_INTR_DETECT); + } + if ( fbinterrupt & FB_2_INTR_DETECT) + { + // call that particualr ISR + if (FB_ISR[FB_INTERRUPT_2]) + FB_ISR[FB_INTERRUPT_2](); + // clear that interrupt at FB level + INTR_CTRL->FB_INTR = (FB_2_INTR_DETECT); + } + if ( fbinterrupt & FB_3_INTR_DETECT) + { + // call that particualr ISR + if (FB_ISR[FB_INTERRUPT_3]) + FB_ISR[FB_INTERRUPT_3](); + // clear that interrupt at FB level + INTR_CTRL->FB_INTR = (FB_3_INTR_DETECT); + } + +} + + + +void FB_RegisterISR(UINT32_t fbIrq, HAL_FBISRfunction ISRfn) +{ + if (fbIrq< MAX_FB_INTERRUPTS){ + FB_ISR [fbIrq] = ISRfn; + } + } + +void FB_UnRegisterISR(UINT32_t fbIrq, HAL_FBISRfunction ISRfn) +{ + if (fbIrq< MAX_FB_INTERRUPTS) + { + FB_ISR [fbIrq] = NULL; + } +} + +void FB_ConfigureInterrupt ( UINT32_t fbIrq, UINT8_t type, UINT8_t polarity, UINT8_t destAP,UINT8_t destM4 ) +{ + //Edege or level and polarity + if ( type == FB_INTERRUPT_TYPE_LEVEL){ + INTR_CTRL->FB_INTR_TYPE &= ~( 1<< fbIrq); + if ( polarity == FB_INTERRUPT_POL_LEVEL_LOW) + INTR_CTRL->FB_INTR_POL &= ~(1<FB_INTR_POL |=( 1<< fbIrq); + } + else{ + INTR_CTRL->FB_INTR_TYPE |= ( 1<< fbIrq); + if ( polarity == FB_INTERRUPT_POL_EDGE_FALL) + INTR_CTRL->FB_INTR_POL &= ~(1<FB_INTR_POL |=( 1<< fbIrq); + } + + // Destination AP + if ( destAP == FB_INTERRUPT_DEST_AP_DISBLE) + INTR_CTRL->FB_INTR_EN_AP &= ~( 1<< fbIrq); + else + INTR_CTRL->FB_INTR_EN_AP |= ( 1<< fbIrq); + + // Destination M4 + if ( destM4 == FB_INTERRUPT_DEST_M4_DISBLE) + INTR_CTRL->FB_INTR_EN_M4 &= ~( 1<< fbIrq); + else + INTR_CTRL->FB_INTR_EN_M4 |= ( 1<< fbIrq); +} + + + + + +void SensorGpio_Handler(void) +{ + //spurious_interrupt(__LINE__); + + NVIC_DisableIRQ(Gpio_IRQn); + if(INTR_CTRL->GPIO_INTR & (1<GPIO_INTR |= (1<GPIO_INTR & (1<GPIO_INTR |= (1<GPIO_INTR & (1<GPIO_INTR |= (1<SOFTWARE_INTR_1_EN_M4 &= ~(SW_INTR_1_EN_M4); +#if (FEATURE_1WIRE_PROTOCOL_DEVICE == 1) + service_intr_from_host(); +#endif + /* Clear the pending interrupt */ + INTR_CTRL->SOFTWARE_INTR_1 = 0; + NVIC_ClearPendingIRQ(SwInt1_IRQn); + + /* Re-Enable the Interrupt */ + INTR_CTRL->SOFTWARE_INTR_1_EN_M4 = SW_INTR_1_EN_M4; +} + +void Ffe1Msg_Handler(void) +{ + spurious_interrupt(__LINE__); +} + + +void FFE_IPC_FIFO_ISR(void); // to remove warnings function declaration + +void Ffe0Msg_Handler(void) +{ +#if FFE_DRIVERS + QL_FFE0MSG_ISR(); + NVIC_ClearPendingIRQ(Ffe0Msg_IRQn); +#else + spurious_interrupt(__LINE__); +#endif +} + +void sdmaDone0Handler() +{ + spurious_interrupt(__LINE__); +} + +void sdmaErrorHandler() +{ + spurious_interrupt(__LINE__); +} + +// Audio Related +void lpsdVoiceDetHandler() +{ + spurious_interrupt(__LINE__); +} + +void dmicVoiceDetHandler() +{ + spurious_interrupt(__LINE__); +} + +void reservedHandler() +{ + spurious_interrupt(__LINE__); +} + +void apPdmClockOnHandler() +{ + spurious_interrupt(__LINE__); +} + +void apPdmClockOffHandler() +{ + spurious_interrupt(__LINE__); +} + +void dmac0BlockDoneHandler() +{ + spurious_interrupt(__LINE__); +} + +void dmac0BufferDoneHandler() +{ + spurious_interrupt(__LINE__); +} + +void dmac1BlockDoneHandler() +{ + spurious_interrupt(__LINE__); +} + +void dmac1BufferDoneHandler() +{ + spurious_interrupt(__LINE__); +} + +void lpsdVoiceOffHandler() +{ + HAL_Audio_ISR_LpsdOff(); +} + +void dmicVoiceOffHandler() + { + onDmicOff(); +} + +void i2sSlaveHandler() +{ + spurious_interrupt(__LINE__); +} + + +/*-----------------------------------------------------------*/ +void vApplicationMallocFailedHook( void ) +{ + /* vApplicationMallocFailedHook() will only be called if + configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook + function that will get called if a call to pvPortMalloc() fails. + pvPortMalloc() is called internally by the kernel whenever a task, queue, + timer or semaphore is created. It is also called by various parts of the + demo application. If heap_1.c or heap_2.c are used, then the size of the + heap available to pvPortMalloc() is defined by configTOTAL_HEAP_SIZE in + FreeRTOSConfig.h, and the xPortGetFreeHeapSize() API function can be used + to query the size of free heap space that remains (although it does not + provide information on how the remaining heap might be fragmented). */ + extern void printAllocList(); + + taskDISABLE_INTERRUPTS(); + //printAllocList(); (save code space) + dbg_str("vApplicationMallocFailedHook..\n"); + invoke_soft_fault(); + +} +/*-----------------------------------------------------------*/ +void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) +{ + ( void ) pcTaskName; + ( void ) pxTask; + + /* Run time stack overflow checking is performed if + configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook + function is called if a stack overflow is detected. */ + taskDISABLE_INTERRUPTS(); + dbg_str("vApplicationStackOverflowHook..\n"); + invoke_soft_fault(); + +} +/*-----------------------------------------------------------*/ + +void vApplicationTickHook( void ) +{ + /* This function will be called by each tick interrupt if + configUSE_TICK_HOOK is set to 1 in FreeRTOSConfig.h. User code can be + added here, but the tick hook is called from an interrupt context, so + code must not attempt to block, and only the interrupt safe FreeRTOS API + functions can be used (those that end in FromISR()). */ + //S3x_Tick_Hook(); +} +/*-----------------------------------------------------------*/ + +void vApplicationIdleHook(void) +{ +#ifdef PM_TEST + uint32_t wic_status = 0; + + if(pmu_trigger >= 10000) + { + QL_LOG_ERR_150K("down\r\n"); + pmu_trigger = 0; + + CM4Shutdown(); + + } +#endif +} diff --git a/qf_vr_apps/qf_vr_aec_app/src/hif_command_table.c b/qf_vr_apps/qf_vr_aec_app/src/hif_command_table.c new file mode 100644 index 00000000..0f3edfbf --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/hif_command_table.c @@ -0,0 +1,118 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +#include "s3_host_proto_defs.h" +#include "host_interface.h" +#include "ql_controlTask.h" +#include "d2h_protocol.h" +#include "RtosTask.h" + +///////////// Debug Trace //////////////////////////////// +#include "dbgtrace.h" +#define K_DBGTRACE_HIF 200 +extern dbgtrace_t adbgtraceHIF[K_DBGTRACE_HIF]; +extern int idbgtraceHIF; + +void hifcb_cmd_host_ready_to_receive(void *pdata, int len); +void hifcb_cmd_host_process_off(void *pdata, int len); +void hifcb_cmd_host_process_on(void *pdata, int len); +void hifcb_cmd_host_mute_off(void *pdata, int len); +void hifcb_cmd_host_mute_on(void *pdata, int len); +void hifcb_cmd_host_threshold(void *pdata, int len); +void hifcb_cmd_host_force_kpd(void *pdata, int len); +void hifcb_cmd_host_ping(void *pdata, int len); +void hifcb_cmd_host_get_moninfo(void *pdata, int len); + +hif_command_table_t hif_command_table[] = +{ + { CMD_HOST_READY_TO_RECEIVE, hifcb_cmd_host_ready_to_receive }, + { CMD_HOST_PROCESS_OFF, hifcb_cmd_host_process_off }, + { CMD_HOST_STOP_STREAMING, hifcb_cmd_host_process_off }, + { CMD_HOST_PROCESS_ON, hifcb_cmd_host_process_on }, + { CMD_HOST_MUTE_OFF, hifcb_cmd_host_mute_off }, + { CMD_HOST_MUTE_ON, hifcb_cmd_host_mute_on }, + { CMD_HOST_THRESHOLD, hifcb_cmd_host_threshold }, + { CMD_HOST_FORCE_KPD, hifcb_cmd_host_process_on }, + { CMD_HOST_PING, hifcb_cmd_host_ping }, + { CMD_HOST_GET_MONINFO, hifcb_cmd_host_get_moninfo }, + { 0, NULL } // Indicates end of table +}; +int hif_command_table_size = sizeof(hif_command_table)/sizeof(hif_command_table[0]); +void hifcb_cmd_host_ready_to_receive(void *pdata, int len) +{ + struct xCQ_Packet CQpacket; + CQpacket.ceEvent = CEVENT_HOST_READY_TO_RECEIVE; + //Release semaphore to unblock sending opus chunks to host. TODO!! + if (xSemaphoreGive(g_host_ready_lock) != pdTRUE) + { + dbgtracePrint(adbgtraceHIF, K_DBGTRACE_HIF, idbgtraceHIF); + dbg_fatal_error("[Host Interface] : Error : unable to release lock to g_host_ready_lock\n"); + } + addPktToControlQueue(&CQpacket); +} + +void hifcb_cmd_host_process_off(void *pdata, int len) +{ + struct xCQ_Packet CQpacket; + CQpacket.ceEvent = CEVENT_HOST_PROCESS_OFF; + addPktToControlQueue(&CQpacket); +} + +void hifcb_cmd_host_process_on(void *pdata, int len) +{ + struct xCQ_Packet CQpacket; + CQpacket.ceEvent = CEVENT_HOST_PROCESS_ON; + addPktToControlQueue(&CQpacket); +} + +void hifcb_cmd_host_mute_off(void *pdata, int len) +{ + struct xCQ_Packet CQpacket; + CQpacket.ceEvent = CEVENT_HOST_MUTE_OFF; + addPktToControlQueue(&CQpacket); +} + +void hifcb_cmd_host_mute_on(void *pdata, int len) +{ + struct xCQ_Packet CQpacket; + CQpacket.ceEvent = CEVENT_HOST_MUTE_ON; + addPktToControlQueue(&CQpacket); +} + +void hifcb_cmd_host_threshold(void *pdata, int len) +{ + //roku_i2c_host_threshold_interface((uint8_t *)pdata); +} + +void hifcb_cmd_host_force_kpd(void *pdata, int len) +{ + dbg_str("Received CMD_HOST_FORCE_KPD\n"); + //force_kpd(); +} + +void hifcb_cmd_host_ping(void *pdata, int len) +{ + dbg_str("Received CMD_HOST_PING\n"); +} + +void hifcb_cmd_host_get_moninfo(void *pdata, int len) +{ + dbg_str("Received CMD_HOST_GET_MONINFO\n"); + struct xQ_Packet packet={0}; + packet.ucCommand = MESSAGE_GET_MONINFO; + packet.ucSrc = HOSTIF_TASK_MESSAGE; + xQueueSend( xHandleQueueHostIf, ( void * )&packet, 0 ); +} diff --git a/qf_vr_apps/qf_vr_aec_app/src/host_interface.c b/qf_vr_apps/qf_vr_aec_app/src/host_interface.c new file mode 100644 index 00000000..7e54c565 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/host_interface.c @@ -0,0 +1,1247 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== +* +* File : host_interface.c +* Purpose: This file contains APIs for host_interface. +* +*=========================================================*/ +#include "Fw_global_config.h" +#include + +#include "FreeRTOS.h" +#include "task.h" +#include "semphr.h" +#include "qlsh_commands.h" +#include +#include "timers.h" +#include "RtosTask.h" +#include +#include "s3_host_proto_defs.h" +#include "ql_audio.h" +#include "dbg_uart.h" +//#include "vm1010.h" + +#include "s3x_clock_hal.h" +#include "s3x_clock.h" +#include "eoss3_hal_gpio.h" +#include "task.h" +#include +#include "ql_controlTask.h" +#include "ww_metadata.h" +#if (ENABLE_I2S_16KHz_RX_SLAVE == 1) +//#include "ql_i2sRxTask.h" +#endif +#if (FEATURE_FLL_I2S_DEVICE == 1) +#include "eoss3_hal_fpga_FLL.h" +#endif + +#include "eoss3_hal_i2s.h" + +#if 0 //(AEC_ENABLED == 1) +extern uint32_t HAL_I2S_Stop (uint8_t i2s_id_sel); +extern void set_signal_detect_state(int state); +//extern void Enable_I2S_data(void); + +extern int get_signal_detect_state(void); +#endif +///////////// Debug Trace //////////////////////////////// +#include "dbgtrace.h" +#define K_DBGTRACE_HIF 200 +dbgtrace_t adbgtraceHIF[K_DBGTRACE_HIF]; +int idbgtraceHIF = 0; + +///////// define this to enable detection of KP while streaming the data +#define STREAM_KP_DETECT_ENABLE (0) +static int stream_kp_detect_enable = 0; + +///////////// Queue/Heap Length and audio block drop count monitor //////////////////////////////// +#include "eoss3_hal_audio.h" +#include "dbg_queue_monitor.h" +s3_mon_info_t s3_monitor_info; + +#define HOSTIF_QUEUE_LENGTH 100 //must able to handle messages while waiting for Host response +#define AUDIO_SESSION_TIMER_PERIOD_IN_MS (10000) + +extern void reset_audio_isr_data_blocks(void); +extern void hifcb_cmd_host_process_off(void *pdata, int len); + +//transport protocol related variables +extern t_ql_audio_meta_data o_ql_audio_meta_data; + + + +static bool streamingOn = false; +/* This flag is used to ignore the lpsd interrupts (i.e Audio DMA to continue) +when transmission session between device and host is started*/ +// static bool g_lpsd_ignore_flag = false; +#define D2H_MAX_DATA_SIZE (4*960) +uint8_t aucAudioBuffer[D2H_MAX_DATA_SIZE]; + +hif_channel_info_t hif_channel_info_audio = { + .sequence_number = 0, + .sequence_numberCompleted = -1, + .channel_number = HIF_CHAN_NUM_AUDIO, + .firstTime = 0, + .xSemaphore = 0, + .pucData = aucAudioBuffer, + .pdata_block = NULL +}; +//hif_channel_info_t hif_channel_info_pcm1 = { +// .sequence_number = 0, +// .channel_number = HIF_CHAN_NUM_AUDIO_PCM1, +// .firstTime = 0, +// .pdata_block = NULL +//}; +xTaskHandle xHandleTaskHostIf; +QueueHandle_t xHandleQueueHostIf; +int xHostIfQueueOverflow; + +/*Semaphore for synchronization with host ready to receive opus chunks. +*Initially it will be in lock state unless host send ready to receive opus pkts. +released in callback when device receives the CMD_HOST_READY_TO_RECEIVE command*/ +SemaphoreHandle_t g_host_ready_lock = NULL; + +//TIM TODO Check if this is still appropriate +/* set aside at least 100ms audio data (=100*16*2 = 3.2KByes) tx buffer for Host */ +/* In case of Opus data the size can be reduced further */ +typedef struct _hif_buffer_info_t +{ + uint8_t a_buffer[HOST_TRANSPORT_CHUNK_SIZE]; + uint32_t n_buffer_size; + uint32_t n_start_index; + uint32_t n_data_size; +}hif_buffer_info_t; + +hif_buffer_info_t o_hif_tx_buffer = { + .n_buffer_size = HOST_TRANSPORT_CHUNK_SIZE, + .n_start_index = 0 +}; + +//TIM +QueueHandle_t q_id_inQ_hif = NULL; +#if (FEATURE_MULTI_CHANNEL_STREAM_DEVICE == 1) +#define SINGLE_CHANNEL_QUEUE_LENGTH (60 - 3) +//#define MULTICHANNEL_QUEUE_LENGTH (1*3*60) //(2*100) //must be able to handle messages while waiting for Host response +#define MULTICHANNEL_QUEUE_LENGTH (150) + //Keep the q_id_inQ_hif to receive the Pkts from Circular Buffer + //This Queue will take Pkts with multi-channel Data only + QueueHandle_t q_mch_inQ_hif = NULL; +void enable_multi_channel_stream(void); +void disable_multi_channel_stream(void); +void hif_release_mch_inputQ(void); +void init_wifi_buffer(void); //for wifi +#else +#define SINGLE_CHANNEL_QUEUE_LENGTH (120) +#endif + +/********************************************************************************* + * + * HIF-FSM interface + * + ********************************************************************************/ +#define MOVE_INIT_CODE_1 (1) //1 = move the code 0=donot move +enum process_state HIF_State = PSTATE_UNCONFIG; +int HIF_FSMConfigData; + +enum process_state HIF_FSMAction(enum process_action pa, void* pv) { + struct xQ_Packet packet={0}; + + switch(pa) { + case PACTION_CONFIG: + configASSERT(HIF_State == PSTATE_UNCONFIG); +#if (MOVE_INIT_CODE_1 == 0) //1 = moved it to task setup + if (q_id_inQ_hif == NULL) { + // Setup input queue + //TIM TODO make size appropriate + //q_id_inQ_hif = xQueueCreate(120, sizeof(QAI_DataBlock_t *)); + q_id_inQ_hif = xQueueCreate(SINGLE_CHANNEL_QUEUE_LENGTH, sizeof(QAI_DataBlock_t *)); + vQueueAddToRegistry(q_id_inQ_hif, "q_id_inQ_hif"); + } +#endif + HIF_State = PSTATE_STOPPED; + break; + + case PACTION_START: + packet.ucCommand = MESSAGE_KPT_DETECTED; + packet.ucSrc = HOSTIF_TASK_MESSAGE; + if(pdTRUE != (xQueueSend( xHandleQueueHostIf, ( void * )&packet, 0 ))) // do not wait if queue is full, throw error + { + dbg_fatal_error("Host if queue full\n"); + } + HIF_State = PSTATE_STARTED; + break; + + case PACTION_STOP: + HIF_State = PSTATE_STOPPED; + break; + + default: + configASSERT(0); + break; + } + return(HIF_State); +} + +/********************************************************************************* + * + * D2H-FSM interface + * + ********************************************************************************/ +enum process_state D2H_State = PSTATE_UNCONFIG; + + +enum process_state D2H_FSMAction(enum process_action pa, void* pv){ + struct xQ_Packet packet; + + switch(pa) { + case PACTION_CONFIG: + D2H_State = PSTATE_STOPPED; + break; + + case PACTION_START: + hif_msg_sendRawBlockReady(NULL); // Inform D2H that5 it has data to process + packet.ucCommand = MESSAGE_NOP; // Poke HIF CMD queue to ensure it starts looking for DATA packets + packet.ucSrc = HOSTIF_ISR_MESSAGE; + hif_data_addToQueueFromTask(&packet); + D2H_State = PSTATE_STARTED; + break; + + case PACTION_BEGIN_STOPPING: + hif_msg_sendStopTx(); + D2H_State = PSTATE_STOPPING; + break; + + case PACTION_FINISH_STOPPING: + D2H_State = PSTATE_STOPPED; + break; + + default: + configASSERT(0); + } + + return(D2H_State); +}; + +static void SendEventToD2H(hif_channel_info_t* p_ci, uint8_t evt, uint8_t * ucData) +{ + D2H_Pkt_Info d2h_evt_info; + d2h_evt_info.seq = p_ci->sequence_number; + d2h_evt_info.channel = p_ci->channel_number; + d2h_evt_info.cmd = evt; + if(ucData == NULL){ + memset(&d2h_evt_info.data[0], 0, sizeof(d2h_evt_info.data)); + } else { + memcpy(&d2h_evt_info.data[0], ucData, 6); + } + p_ci->sequence_number++; + if (p_ci->sequence_number >= 16) + p_ci->sequence_number = 0; + + d2h_transmit_cmd(&d2h_evt_info); + return; +} + + +static void SendEventAudioTransportBlockReadyD2H(hif_channel_info_t* p_ci, uint8_t* pucData, uint16_t kbytes) { + D2H_Pkt_Info d2h_evt_info; + d2h_evt_info.seq = p_ci->sequence_number; + d2h_evt_info.channel = p_ci->channel_number; +#if (FEATURE_MULTI_CHANNEL_STREAM_DEVICE == 1) +#if (NUM_AUDIO_STREAM_CHANNELS == 2) + d2h_evt_info.cmd = EVT_RAW_PKT_READY_2; //2 channels +#else + d2h_evt_info.cmd = EVT_RAW_PKT_READY_3; //3 channels +#endif +#else + d2h_evt_info.cmd = EVT_RAW_PKT_READY; +#endif + if(kbytes > 0) { + d2h_evt_info.data[0] = ((kbytes >> 0) & 0xff); + d2h_evt_info.data[1] = ((kbytes >> 8) & 0xff); + d2h_evt_info.data[2] = ((uint32_t)pucData >> 0) & 0xff; + d2h_evt_info.data[3] = ((uint32_t)pucData >> 8) & 0xff; + d2h_evt_info.data[4] = ((uint32_t)pucData >> 16) & 0xff; + d2h_evt_info.data[5] = ((uint32_t)pucData >> 24) & 0xff; + + p_ci->sequence_number++; + if (p_ci->sequence_number >= 16) + p_ci->sequence_number = 0; + if (p_ci->firstTime == 0){ + p_ci->firstTime = 1; + dbgtrace(__LINE__, 0, adbgtraceHIF, K_DBGTRACE_HIF, &idbgtraceHIF); + if (xSemaphoreTake(g_host_ready_lock, 2000) != pdTRUE){ + dbgtracePrint(adbgtraceHIF, K_DBGTRACE_HIF, idbgtraceHIF); + dbg_fatal_error("[host interface] : Error unable to take lock to g_host_ready_lock\n"); + } + } + d2h_transmit_cmd(&d2h_evt_info); + } +} +static char host_sprintf_buf[100]; +static void SendEventKPDetected(hif_channel_info_t* p_hif_channel_info, uint8_t evt) +{ + uint8_t ucData[6]; + uint32_t addr; + uint16_t size; + addr = (uint32_t)(&o_ql_audio_meta_data); + size = sizeof (o_ql_audio_meta_data); + //printf ("addr = 0x%X, size = %d\n", addr, size); + int n_count = sprintf(host_sprintf_buf,"addr = 0x%X, size = %d\n", addr, size); + dbg_str(host_sprintf_buf); + + // send wake word meta data size and address in little endian order + ucData[0] = (uint8_t)(size & 0xFF); + ucData[1] = (uint8_t)((size >> 8) & 0xFF); + ucData[2] = (uint8_t)(addr & 0xFF); + ucData[3] = (uint8_t)((addr >> 8) & 0xFF); + ucData[4] = (uint8_t)((addr >> 16)& 0xFF); + ucData[5] = (uint8_t)((addr >> 24) & 0xFF); + SendEventToD2H(p_hif_channel_info, evt,(uint8_t *)(&ucData[0])); +} + +//////////////////////////////////////////////////////////////////////////////////////// + + +static void stop_audio_streaming(hif_channel_info_t *p_hif_channel_info) +{ + if (isStreamingOn()) + { + dbgtrace(__LINE__, 17, adbgtraceHIF, K_DBGTRACE_HIF, &idbgtraceHIF); + //Send EVT_EOT (End Of Transmission) event to host + SendEventToD2H(p_hif_channel_info, EVT_EOT, NULL); + dbgtrace(__LINE__, 0, adbgtraceHIF, K_DBGTRACE_HIF, &idbgtraceHIF); + // wait for transmit cmd to complete + h2d_transmit_lock_acquire(); + //clear the QoS + set_spi_session_qos(0); + //setLpsdIgnoreState(0); + // release the tranmit lock + h2d_transmit_lock_release(); + //Set streaming off + setStreamingOff(); + } + // reset the audio data blocks + //reset_audio_isr_data_blocks(); + dbgtrace(__LINE__, 18, adbgtraceHIF, K_DBGTRACE_HIF, &idbgtraceHIF); + hif_release_inputQ(); + // release audio QoS + set_audio_clock_qos(0); + return; +} + +static int timeout_count_bytes = 0; + +void hostIfTaskHandler(void *pParameter) +{ + hif_channel_info_t *p_hif_channel_info = (hif_channel_info_t*)pParameter; + struct xQ_Packet receivedMsg; + BaseType_t xResult = pdFAIL; + D2H_Pkt_Info d2hpkt; + int payload_len ; + int payload_address ; + memset(&receivedMsg,0,sizeof(struct xQ_Packet)); + +#if 0 +//extern void set_task_stack_watermark_monitor(int timer_on, int assert_on); +set_task_stack_watermark_monitor(0, 0); +#endif + ////////////////////////////////////////////////////////////////// + /* Start of while loop */ + while(1) + { + /* QL read message from Message queue. If D2H is active, wait no more than 5ms on control queue before looking at data Q, otherwise wait indefinitely */ + if (D2H_State == PSTATE_STARTED) { + xResult = xQueueReceive( xHandleQueueHostIf, &( receivedMsg ), pdMS_TO_TICKS(5)); + } else { + xResult = xQueueReceive( xHandleQueueHostIf, &( receivedMsg ), portMAX_DELAY); + } + + if( xResult != pdPASS ) { + // See if there is input data to process + //dbgtrace(__LINE__, 2, adbgtraceHIF, K_DBGTRACE_HIF, &idbgtraceHIF); + if (uxQueueMessagesWaiting(q_id_inQ_hif)) { + // dbgtrace(__LINE__, 3, adbgtraceHIF, K_DBGTRACE_HIF, &idbgtraceHIF); + hif_SendData(p_hif_channel_info); + } + } else { + // Process messages/data received from ISR Task + if(receivedMsg.ucSrc == HOSTIF_ISR_MESSAGE) + { + switch( receivedMsg.ucCommand ) { + case MESSAGE_NOP: + // Do nothing -- used to trigger reassesment of D2H_state == PSTATE_STARTED + break; + + default: + QL_LOG_WARN("Undef cmd %d\n", receivedMsg.ucCommand); + break; + } /* switch( receivedMsg.ucCommand) from eISR_Task */ + + } /* End of Process messages/data received from ISR Task (M4 events) */ + + // Process messages/data received from CLI Task + if(receivedMsg.ucSrc == HOSTIF_TASK_MESSAGE) + { + /* Parse input message and process the request */ + switch( receivedMsg.ucCommand ) { + case MESSAGE_STOP_TX: + +#if 0 //(AEC_ENABLED == 1) //also send message to disable + HAL_I2S_Stop(I2S_SLAVE_FABRIC_RX); + //cb_notify_i2sRx_disable_intr_from_FPGA(); + set_signal_detect_state(0); +#endif + +#if (FEATURE_MULTI_CHANNEL_STREAM_DEVICE == 1) + disable_multi_channel_stream(); + hif_release_mch_inputQ(); +#endif + stop_audio_streaming(p_hif_channel_info); + handle_led_for_audio_stop(); + ControlEventSend(CEVENT_HIF_EOT); + + break; + + case MESSAGE_AUDIO_OPUS_CHUNK_DONE: + //SendEventOpusTransportChunkReadyD2h(p_hif_channel_info, &receivedMsg.ucData[0]); + configASSERT(0); + break; + + case MESSAGE_AUDIO_OPUS_BLOCK_READY: + //TIM SendEventAudioTransportBlockReadyD2h(p_hif_channel_info, &receivedMsg.ucData[0]); + break; + + case MESSAGE_AUDIO_RAW_BLOCK_READY: + hif_SendData(p_hif_channel_info); + break; + + //streaming is already going on. so just send the message + case MESSAGE_STREAM_KPT_DETECTED: + //vTaskDelay(50); + SendEventKPDetected(p_hif_channel_info, EVT_STREAM_KP_DETECTED); + timeout_count_bytes = 0; //reset the timeout since VR is re-enable based on this + stream_kp_detect_enable = 0; //re-enable + break; + + case MESSAGE_KPT_DETECTED: + //start audio session timer + p_hif_channel_info->firstTime = 0; // SJ + set_spi_session_qos(1); + stream_kp_detect_enable = 0; + SendEventKPDetected(p_hif_channel_info, EVT_KP_DETECTED); + timeout_count_bytes = 0; + +#if 0 //(AEC_ENABLED == 1) //also send message to enable AEC + cb_notify_i2sRx_intr_from_FPGA(); + +//Enable_I2S_data(); +//NVIC_EnableIRQ(FbMsg_IRQn); +#endif + +#if (FEATURE_MULTI_CHANNEL_STREAM_DEVICE == 1) + enable_multi_channel_stream(); +#endif + + + break; + + case MESSAGE_GET_MONINFO: + s3_mon_info.num_drop_count = display_num_drop_count(); + s3_mon_info.heap_size = xPortGetFreeHeapSize(); + dbg_queue_monitor_update(); + dbg_queue_monitor_print("S3 queue,heap monitor info"); + payload_len = sizeof(s3_mon_info_t); + payload_address = (int)&s3_mon_info; + + d2hpkt.channel = HIF_CHAN_NUM_AUDIO; + d2hpkt.cmd = EVT_GET_MONINFO; + d2hpkt.seq = 0; + d2hpkt.data[0] = (payload_len >> 0) & 0xff; + d2hpkt.data[1] = (payload_len >> 8) & 0xff; + + d2hpkt.data[2] = (payload_address >> 0) & 0xff; + d2hpkt.data[3] = (payload_address >> 8) & 0xff; + d2hpkt.data[4] = (payload_address >> 16) & 0xff; + d2hpkt.data[5] = (payload_address >> 24) & 0xff; + + SendEventToD2H(p_hif_channel_info, EVT_GET_MONINFO, d2hpkt.data); + break; + default: + QL_LOG_WARN("Undef cmd %d\n", receivedMsg.ucCommand); + break; + } /* switch( receivedMsg.ucCommand) from cli Task */ + } /* End of Process messages/data received from Cli Task */ + } + } /* End of while loop */ +} + +Rx_Cb_Ret receive_cmd_pkt(void * cookie, D2H_Pkt_Info rx_pkt_info) +{ + Rx_Cb_Ret stTemp; + hif_channel_info_t *p_hif_channel_info = (hif_channel_info_t*)cookie; + int icommand = rx_pkt_info.cmd; + int k; + + int n_count = sprintf(host_sprintf_buf,"Recd %d command\n",icommand); + dbg_str(host_sprintf_buf); + + dbgtrace(__LINE__, rx_pkt_info.cmd, adbgtraceHIF, K_DBGTRACE_HIF, &idbgtraceHIF); + ql_assert(p_hif_channel_info->channel_number == rx_pkt_info.channel); + for (k = 0; k < hif_command_table_size; k++) + { + if (icommand == hif_command_table[k].icommand) + break; + } + + if ((hif_command_table[k].icommand == 0) && (hif_command_table[k].pcommand_func == NULL)) { + dbg_str("Received UNKNOWN COMMAND from host\n"); + configASSERT(0); + } else { + hif_command_table[k].pcommand_func(&rx_pkt_info, sizeof(rx_pkt_info)); + } + if(icommand == CMD_HOST_READY_TO_RECEIVE) + streamingOn = true; + + stTemp.data_read_req = 0; + return stTemp; +} + +void audio_ql_set_transmission_over_status (bool flag); +/* Dummy tx done callback function +tx_pkt_info stores the info of the packet sent +*/ + + + + +void transmit_done_callback(void *cookie, D2H_Pkt_Info tx_pkt_info) +{ + hif_channel_info_t *pchannel_info = (hif_channel_info_t*) cookie; + + if( (tx_pkt_info.cmd == EVT_RAW_PKT_READY) || + (tx_pkt_info.cmd == EVT_RAW_PKT_READY_2) || + (tx_pkt_info.cmd == EVT_RAW_PKT_READY_3) ) + { + if(xSemaphoreGive(pchannel_info->xSemaphore) != pdTRUE) { // Release lock on buffer + dbg_str("HIF: Failed to release buffer lock"); + } + } + hif_msg_sendRawBlockReady(NULL); // Trigger check for input data + return; +} + +void hif_data_addToQueueFromISR(struct xQ_Packet *pxMsg) +{ + BaseType_t xHigherPriorityTaskWoken = pdFALSE; + + if( xQueueIsQueueFullFromISR( xHandleQueueHostIf ) ) + { + xHostIfQueueOverflow++; + return; + } + xQueueSendFromISR( xHandleQueueHostIf, ( void * )pxMsg, &xHigherPriorityTaskWoken ); + + portYIELD_FROM_ISR( xHigherPriorityTaskWoken ); +} + +void hif_data_addToQueueFromTask(struct xQ_Packet *pxMsg) +{ + if( !(uxQueueSpacesAvailable( xHandleQueueHostIf )) ){ + xHostIfQueueOverflow++; + return; + } + xQueueSend( xHandleQueueHostIf, ( void * )pxMsg, 10 ); + return; +} + +//D2h Protocol related initialization. +void init_protocol_variables(hif_channel_info_t *p_hif_channel_info) +{ + p_hif_channel_info->sequence_number = 0; + + //register with D2H Task for Rx and Tx callbacks + d2h_register_callback(&receive_cmd_pkt, p_hif_channel_info->channel_number, (void*)p_hif_channel_info, &transmit_done_callback, (void*)p_hif_channel_info); + + //Create Semaphore for synchronization with Host. + //create tx lock + if(g_host_ready_lock == NULL) + { + g_host_ready_lock = xSemaphoreCreateBinary(); + if( g_host_ready_lock == NULL ) { + dbg_str("[Host Interface] : Error : Unable to Create Mutex\n"); + } + vQueueAddToRegistry(g_host_ready_lock, "host ready lock" ); + p_hif_channel_info->firstTime = 0; + } + // Create mutex to lock data buffer + if(p_hif_channel_info->xSemaphore == NULL) + { + p_hif_channel_info->xSemaphore = xSemaphoreCreateBinary(); + if( p_hif_channel_info->xSemaphore == NULL ) { + dbg_str("[Host Interface] : Error : Unable to Create buffer Mutex\n"); + } + xSemaphoreGive(p_hif_channel_info->xSemaphore); + vQueueAddToRegistry(p_hif_channel_info->xSemaphore, "hif_chan_buffer_mutex" ); + } + return; +} + + + +//////////////////////////////////////////////////////////////////////////////////////////// +void hif_msg_sendOpusChunkDone(UINT8_t* p_buffer, int length) +{ + UINT32_t address = (UINT32_t)p_buffer; + struct xQ_Packet packet={0}; + packet.ucCommand = MESSAGE_AUDIO_OPUS_CHUNK_DONE; + packet.ucSrc = HOSTIF_TASK_MESSAGE; + + packet.ucData[0] = length & 0xff; + packet.ucData[1] = length >> 8 & 0xff; + + packet.ucData[2] = address & 0xff; + packet.ucData[3] = (address >> 8) & 0xff; + packet.ucData[4] = (address >> 16) & 0xff; + packet.ucData[5] = (address >> 24) & 0xff; + + /* there should not be any delay for queueing, since called from Processing Element */ + xQueueSend( xHandleQueueHostIf, ( void * )&packet, 0 ); +} +//////////////////////////////////////////////////////////////////////////////////////////// +void hif_msg_sendRawChunkDone(UINT8_t* p_buffer, int length) +{ + UINT32_t address = (UINT32_t)p_buffer; + struct xQ_Packet packet={0}; + packet.ucCommand = MESSAGE_AUDIO_PCM_CHUNK_DONE; + packet.ucSrc = HOSTIF_TASK_MESSAGE; + + if(address != 0) + { + packet.ucData[0] = length & 0xff; + packet.ucData[1] = length >> 8 & 0xff; + + packet.ucData[2] = address & 0xff; + packet.ucData[3] = (address >> 8) & 0xff; + packet.ucData[4] = (address >> 16) & 0xff; + packet.ucData[5] = (address >> 24) & 0xff; + + /* there should not be any delay for queueing, since called from Processing Element */ + xQueueSend( xHandleQueueHostIf, ( void * )&packet, 0 ); + } +} +#if ENABLE_OPUS_ENCODER == 1 +void opus_host_msg_callback(int opus_bytes_available) +{ + if (hif_isCommunicationEnabled()) + { + int bytes_per_chunk, chunk_time; + get_opus_out_block_size(&bytes_per_chunk, &chunk_time); + + if(opus_bytes_available >= bytes_per_chunk) + { + hif_msg_sendOpusChunkDone(&o_hif_tx_buffer.a_buffer[0], bytes_per_chunk); + } + } + + return; +} +#endif + +#if (FEATURE_MULTI_CHANNEL_STREAM_DEVICE == 1) +extern int get_audio_block_size_samples(void); +extern QAI_DataBlockMgr_t* get_audio_block_manager(void); + +#define MAX_DATA_BLOCK_SIZE (2*240) //should be at least 1 datblock size + +static int16_t mch_data_buf[MAX_DATA_BLOCK_SIZE]; +static int mch_buf_wrcount = 0; +static QAI_DataBlockMgr_t* mch_db_manager; +static int mch_db_size = 240; //audio data block size in samples +static int mch_stream_enable = 0; //enable only after KP detect +//static int db_count = 0; +void enable_multi_channel_stream(void) +{ + mch_stream_enable = 1; + mch_buf_wrcount = 0; + //db_count = 0; +} +void disable_multi_channel_stream(void) +{ + mch_stream_enable = 0; + mch_buf_wrcount = 0; +} +static void sendto_mch_queue(void) +{ + QAI_DataBlock_t* pdatablk ; + int ret; + + //first check if there is enough space in queue, else release 1 block + int count = uxQueueMessagesWaiting(q_mch_inQ_hif); + if(count > (MULTICHANNEL_QUEUE_LENGTH - 3)) { + + //if(get_signal_detect_state() ) { + //count = 1; //remove just 1 + count = 9; //remove just 3 + //dbg_str("@"); + //} else { + //count = (MULTICHANNEL_QUEUE_LENGTH/2); //remove half + //dbg_str("%"); + //} + //empty the queue + while(count > 0) { + pdatablk = 0; + ret = xQueueReceive(q_mch_inQ_hif, &pdatablk, 0); +// configASSERT(ret != pdFAIL); + if(pdatablk) { + if(pdatablk->dbHeader.numUseCount > 0) + datablk_mgr_release_generic(pdatablk); + } + count--; + } + //printf("=%d=",count); + } + //send to queue + ret = datablk_mgr_acquire(mch_db_manager, &pdatablk, 10); +#if 1 + configASSERT(ret == 0); +#else + if(ret != 0) + { + //printf("\nError in sending AEC\n"); + dbg_str("\n==Error AEC==\n"); + return; + } +#endif + //copy the buffer to new datablock and increment usecount + memcpy((uint8_t *)pdatablk->p_data, (uint8_t *)mch_data_buf, mch_db_size*2); + pdatablk->dbHeader.numUseCount = 1; + ret = xQueueSend(q_mch_inQ_hif, &pdatablk, 0); + configASSERT(pdTRUE == ret); + return; +} + +void addto_2channel_queue_1(int16_t *ch1_data, int16_t *ch2_data, int data_size) +{ + //enable only after the host ready to receive +// if(mch_stream_enable == 0) +// return; + + //copy the input data interspersed in a buffer + for(int i=0; i < data_size; i++) + { + //assumption: mch_db_size is exact multple of 4 (240/2 = 120) + mch_data_buf[mch_buf_wrcount++] = *ch1_data++; //channel 1 + mch_data_buf[mch_buf_wrcount++] = *ch2_data++; //channel 2 + + //if enough data to fill a datablock send it to queue + if(mch_buf_wrcount >= mch_db_size) { + //send to the queue and reset buffer count + sendto_mch_queue(); + mch_buf_wrcount = 0; +// printf(".%d",db_count++); + } + } + return; +} + +void addto_3channel_queue(int16_t *ch1_data, int16_t *ch2_data,int16_t *ch3_data, int data_size) +{ + + //enable only after the host ready to receive +// if(mch_stream_enable == 0) +// return; + + //copy the input data interspersed in a buffer + for(int i=0; i < data_size; i++) + { + //assumption: mch_db_size is exact multple of 4 (240/2 = 120) + mch_data_buf[mch_buf_wrcount++] = *ch1_data++; //channel 1 + mch_data_buf[mch_buf_wrcount++] = *ch2_data++; //channel 2 + if(ch3_data != 0 ) { + //assumption: mch_db_size is exact multple of 6 (240/3 = 80) + mch_data_buf[mch_buf_wrcount++] = *ch3_data++; //channel 3 + } + + //if enough data to fill a datablock send it to queue + if(mch_buf_wrcount >= mch_db_size) { + //send to the queue and reset buffer count + sendto_mch_queue(); + mch_buf_wrcount = 0; +// printf(".%d",db_count++); + } + } + return; +} +void addto_2channel_queue(int16_t *ch1_data, int16_t *ch2_data, int data_size) +{ + addto_3channel_queue(ch1_data, ch2_data, 0,data_size); + return; +} +#endif +signed portBASE_TYPE hif_task_Start(void) +{ + + static hif_channel_info_t *p_hif_channel_info = &hif_channel_info_audio; + +#if (MOVE_INIT_CODE_1 == 1) //1 = moved it from HIF_FSMAction + /* Create data queue for HostIf Task */ + //q_id_inQ_hif = xQueueCreate(120, sizeof(QAI_DataBlock_t *)); + q_id_inQ_hif = xQueueCreate(SINGLE_CHANNEL_QUEUE_LENGTH, sizeof(QAI_DataBlock_t *)); + vQueueAddToRegistry(q_id_inQ_hif, "q_id_inQ_hif"); + if(q_id_inQ_hif == 0) { + configASSERT(0); + } +#endif + + /* Create queue for HostIf Task */ + xHandleQueueHostIf = xQueueCreate( HOSTIF_QUEUE_LENGTH, sizeof(struct xQ_Packet) ); + if(xHandleQueueHostIf == 0) + { + configASSERT(0); + //return pdFAIL; + } + vQueueAddToRegistry( xHandleQueueHostIf, "HostIf_Q" ); + +#if (FEATURE_MULTI_CHANNEL_STREAM_DEVICE == 1) + + //first init the audio buffer + init_wifi_buffer(); + + /* Create mutli-channel data queue for HostIf Task */ + q_mch_inQ_hif = xQueueCreate( MULTICHANNEL_QUEUE_LENGTH, sizeof(struct xQ_Packet) ); + if(q_mch_inQ_hif == 0) + { + configASSERT(0); + } + vQueueAddToRegistry( q_mch_inQ_hif, "Multi_chan_Q" ); + + //also initialize the datablock manager value and block size + mch_db_manager = get_audio_block_manager(); + mch_db_size = get_audio_block_size_samples(); + //printf("\nGot DB Manager. DB size = %d \n", mch_db_size); + +#endif + + /* Create HostIf Task */ + xTaskCreate (hostIfTaskHandler, "HostIfTaskHandler", STACK_SIZE_ALLOC(STACK_SIZE_TASK_HOSTIF), p_hif_channel_info, PRIORITY_TASK_HOSTIF, &xHandleTaskHostIf); + configASSERT( xHandleTaskHostIf ); + + init_protocol_variables(p_hif_channel_info); + + // register QoS node for clocks + hif_register_qos(); + + return pdPASS; +} + +//this will be called while streaming is going on +void hif_msg_send_streamKPDetected(void) +{ + struct xQ_Packet packet={0}; + packet.ucCommand = MESSAGE_STREAM_KPT_DETECTED; + packet.ucSrc = HOSTIF_TASK_MESSAGE; + if(pdTRUE != (xQueueSend( xHandleQueueHostIf, ( void * )&packet, 0 ))) // do not wait if queue is full, throw error + { + dbg_fatal_error("host if queue full\n"); + } +} +#if 0 +void hif_msg_sendKPDetected(void) +{ + struct xQ_Packet packet={0}; + packet.ucCommand = MESSAGE_KPT_DETECTED; + packet.ucSrc = HOSTIF_TASK_MESSAGE; + if(pdTRUE != (xQueueSend( xHandleQueueHostIf, ( void * )&packet, 0 ))) // do not wait if queue is full, throw error + { + dbg_fatal_error("host if queue full\n"); + } +} +#endif + +bool host_communication_status = true; //By default host communication interface is on. + +void hif_enableCommunication(uint8_t val) +{ + if(1 == val) + { + //Enable host communication + host_communication_status = true; + } + else + { + //Disable host communication + host_communication_status = false; + } +} + +bool hif_isCommunicationEnabled() +{ + return host_communication_status; +} + +bool isStreamingOn(void) +{ + return streamingOn; +} + +void setStreamingOff(void) +{ + streamingOn = false; +} + +void setStreamingOn(void) +{ + streamingOn = true; +} + +void hif_tx_buffer_sendSamples(int32_t n_samples) +{ + hif_msg_sendRawChunkDone(&o_hif_tx_buffer.a_buffer[0], n_samples); + return; + } + +void hif_tx_buffer_sendSamples_opus(int32_t n_samples) +{ + hif_msg_sendOpusChunkDone(&o_hif_tx_buffer.a_buffer[0], n_samples); + return; +} + + +void set_spi_session_qos(uint8_t status) +{ + if(0 == status) // release QoS + { + if(S3x_Get_Qos_Req(S3X_AUDIO_APB,MIN_OP_FREQ)) // if QoS is set + { + S3x_Clear_Qos_Req(S3X_AUDIO_APB,MIN_OP_FREQ); // acquire C01 QoS + // SJ : Do I need to take/release C10 QoS also ?? + } + if(S3x_Get_Qos_Req(S3X_A0_01_CLK,MIN_OP_FREQ)) // if QoS is set + { + S3x_Clear_Qos_Req(S3X_A0_01_CLK,MIN_OP_FREQ); // acquire C01 QoS + // SJ : Do I need to take/release C10 QoS also ?? + } + if(S3x_Get_Qos_Req(S3X_AUDIO_DMA_CLK,MIN_OP_FREQ)) // if QoS is set + { + S3x_Clear_Qos_Req(S3X_AUDIO_DMA_CLK,MIN_OP_FREQ); // acquire C01 QoS + // SJ : Do I need to take/release C10 QoS also ?? + } + set_sram_lpm_blocks(1); + } + else // acquire QoS + { + // Disable sram block from going into sleep + set_sram_lpm_blocks(0); + S3x_Set_Qos_Req(S3X_A0_01_CLK,MIN_OP_FREQ,HSOSC_6MHZ); + S3x_Set_Qos_Req(S3X_AUDIO_APB,MIN_OP_FREQ,HSOSC_6MHZ); + S3x_Set_Qos_Req(S3X_AUDIO_DMA_CLK,MIN_OP_FREQ,HSOSC_6MHZ); + + // SJ : Do I need to take/release C10 QoS also ?? + } +} + +void set_audio_clock_qos(uint8_t status) +{ + if(0 == status) //release QoS + { + // release QoS for Hsosc + if(S3x_Get_Qos_Req(S3X_LPSD,MIN_HSOSC_FREQ)) // if QoS is set + { + S3x_Clear_Qos_Req(S3X_LPSD,MIN_HSOSC_FREQ); // acquire C01 QoS + // SJ : Do I need to take/release C10 QoS also ?? + } + } + else // acquire QoS + { + S3x_Set_Qos_Req(S3X_LPSD,MIN_HSOSC_FREQ,HSOSC_QOS_VAL); + } +} + +void hif_register_qos(void) +{ + S3x_Register_Qos_Node(S3X_A0_01_CLK); + S3x_Register_Qos_Node(S3X_LPSD); + S3x_Register_Qos_Node(S3X_AUDIO_APB); + S3x_Register_Qos_Node(S3X_AUDIO_DMA_CLK); + return; +} + + +void hif_release_inputQ(void) { + BaseType_t xResult; + + while(uxQueueMessagesWaiting(q_id_inQ_hif)) { + QAI_DataBlock_t* pdatablk; + xResult = xQueueReceive(q_id_inQ_hif, &pdatablk, 0); + configASSERT(xResult != pdFAIL); + if(pdatablk) { + /* only if nonzero usecount, else it is an error */ + /* Should we assert here since this should never happen ? */ + if(pdatablk->dbHeader.numUseCount > 0) + datablk_mgr_release_generic(pdatablk); + } + } +} + +int hif_release_inputQ_count(int msg_count) { + BaseType_t xResult; + int kbytes = 0; + + int wait_count = uxQueueMessagesWaiting(q_id_inQ_hif); + if(wait_count <= msg_count) + return 0; + wait_count = msg_count; + while(wait_count > 0) { + wait_count--; + QAI_DataBlock_t* pdatablk; + xResult = xQueueReceive(q_id_inQ_hif, &pdatablk, 0); + configASSERT(xResult != pdFAIL); + kbytes += (pdatablk->dbHeader.numDataElements*pdatablk->dbHeader.dataElementSize); + if(pdatablk) { + /* only if nonzero usecount, else it is an error */ + /* Should we assert here since this should never happen ? */ + if(pdatablk->dbHeader.numUseCount > 0) + datablk_mgr_release_generic(pdatablk); + } + + } + timeout_count_bytes += kbytes; + return kbytes; +} + +#define D2H_NUM_AUDIO_BLOCKS_TO_SEND (4) +static int send_data_to_host(hif_channel_info_t* p_hif_channel_info, QueueHandle_t in_Q) +{ + BaseType_t xResult; + uint16_t kbytes = 0; + int byte_count = 0; + //send 4 blocks + if (uxQueueMessagesWaiting(in_Q) >= D2H_NUM_AUDIO_BLOCKS_TO_SEND) { + // Check buffer availability + if (xSemaphoreTake(p_hif_channel_info->xSemaphore, 0) == pdTRUE) { + QAI_DataBlock_t* pdatablk; + for (int num_blocks = 0; num_blocks < D2H_NUM_AUDIO_BLOCKS_TO_SEND; num_blocks++) + { + xResult = xQueueReceive(in_Q, &pdatablk, 0); + configASSERT(xResult != pdFAIL); + int block_size = (pdatablk->dbHeader.numDataElements*pdatablk->dbHeader.dataElementSize); + configASSERT( (block_size+kbytes) <= D2H_MAX_DATA_SIZE ) ; + memcpy(aucAudioBuffer+kbytes, pdatablk->p_data, block_size); + kbytes += block_size; // pdatablk->dbHeader.numDataElements*pdatablk->dbHeader.dataElementSize; + /* release only if valid block pointer */ + if(pdatablk) { + /* only if nonzero usecount, else it is an error */ + /* Should we assert here since this should never happen ? */ + if(pdatablk->dbHeader.numUseCount > 0) + datablk_mgr_release_generic(pdatablk); + } + } + SendEventAudioTransportBlockReadyD2H(p_hif_channel_info, aucAudioBuffer, kbytes); + //timeout_count_bytes += kbytes; + byte_count += kbytes; + } + } + + return byte_count; +} + +#if (FEATURE_MULTI_CHANNEL_STREAM_DEVICE == 1) + +void hif_release_mch_inputQ(void) { + BaseType_t xResult; + + while(uxQueueMessagesWaiting(q_mch_inQ_hif)) { + QAI_DataBlock_t* pdatablk; + xResult = xQueueReceive(q_mch_inQ_hif, &pdatablk, 0); + configASSERT(xResult != pdFAIL); + if(pdatablk) { + /* only if nonzero usecount, else it is an error */ + /* Should we assert here since this should never happen ? */ + if(pdatablk->dbHeader.numUseCount > 0) + datablk_mgr_release_generic(pdatablk); + } + } +} + +void hif_SendData(hif_channel_info_t* p_hif_channel_info) { + + int byte_count = 1; + +#if 1 + //release same number of datablocks from circular buffer + hif_release_inputQ_count(D2H_NUM_AUDIO_BLOCKS_TO_SEND); + + //keep sending until queue has less blocks + while(byte_count) { + byte_count = send_data_to_host(p_hif_channel_info, q_mch_inQ_hif); + } +#else //this is when 2 or 3 channel data is disabled + hif_release_mch_inputQ(); + byte_count = send_data_to_host(p_hif_channel_info, q_id_inQ_hif); + +#endif +#if 1 //have a built in 20 sec data timeout to stop streaming + if(timeout_count_bytes >= (20*16000*2)) + { + timeout_count_bytes = 0; + + printf("===Internal Timeout 13 secs\n"); + hifcb_cmd_host_process_off((void *)0, 0); + + } +#endif +} +#else //use the Circular buffer queue to stream +void hif_SendData(hif_channel_info_t* p_hif_channel_info) { + BaseType_t xResult; + uint16_t kbytes = 0; + + //send 4 blocks + if (uxQueueMessagesWaiting(q_id_inQ_hif) >= D2H_NUM_AUDIO_BLOCKS_TO_SEND) { + // Check buffer availability + if (xSemaphoreTake(p_hif_channel_info->xSemaphore, 0) == pdTRUE) { + QAI_DataBlock_t* pdatablk; + for (int num_blocks = 0; num_blocks < D2H_NUM_AUDIO_BLOCKS_TO_SEND; num_blocks++) + { + xResult = xQueueReceive(q_id_inQ_hif, &pdatablk, 0); + configASSERT(xResult != pdFAIL); + int block_size = (pdatablk->dbHeader.numDataElements*pdatablk->dbHeader.dataElementSize); + configASSERT( (block_size+kbytes) <= D2H_MAX_DATA_SIZE ) ; + memcpy(aucAudioBuffer+kbytes, pdatablk->p_data, block_size); + kbytes += block_size; // pdatablk->dbHeader.numDataElements*pdatablk->dbHeader.dataElementSize; + /* release only if valid block pointer */ + if(pdatablk) { + /* only if nonzero usecount, else it is an error */ + /* Should we assert here since this should never happen ? */ + if(pdatablk->dbHeader.numUseCount > 0) + datablk_mgr_release_generic(pdatablk); + } + } + SendEventAudioTransportBlockReadyD2H(p_hif_channel_info, aucAudioBuffer, kbytes); + timeout_count_bytes += kbytes; + } + } +#if (STREAM_KP_DETECT_ENABLE == 1) //after ~2sec of data streamed, re-enable VR +extern void enable_stream_VR(void); + if(timeout_count_bytes >= (2*16000*2)) + { + if(stream_kp_detect_enable == 0) + { + enable_stream_VR(); + stream_kp_detect_enable = 1; + } + } + +#endif + +#if 1 //have a built in 10 sec data timeout to stop streaming + if(timeout_count_bytes >= (12*16000*2)) + { + timeout_count_bytes = 0; + + printf("===Internal Timeout 12 secs\n"); + hifcb_cmd_host_process_off((void *)0, 0); + + } +#endif +} +#endif //FEATURE_MULTI_CHANNEL_STREAM_DEVICE + +void hif_msg_sendOpusBlockReady(QAI_DataBlock_t *pdata_block) +{ + UINT32_t address = (UINT32_t)pdata_block; + struct xQ_Packet packet={0}; + packet.ucCommand = MESSAGE_AUDIO_OPUS_BLOCK_READY; + packet.ucSrc = HOSTIF_TASK_MESSAGE; + packet.ucData[0] = address & 0xff; + packet.ucData[1] = (address >> 8) & 0xff; + packet.ucData[2] = (address >> 16) & 0xff; + packet.ucData[3] = (address >> 24) & 0xff; + xQueueSend( xHandleQueueHostIf, ( void * )&packet, 0 ); +} +void hif_msg_sendRawBlockReady(QAI_DataBlock_t *pdata_block) +{ + UINT32_t address = (UINT32_t)pdata_block; + struct xQ_Packet packet={0}; + packet.ucCommand = MESSAGE_AUDIO_RAW_BLOCK_READY; + packet.ucSrc = HOSTIF_TASK_MESSAGE; + packet.ucData[0] = address & 0xff; + packet.ucData[1] = (address >> 8) & 0xff; + packet.ucData[2] = (address >> 16) & 0xff; + packet.ucData[3] = (address >> 24) & 0xff; + xQueueSend( xHandleQueueHostIf, ( void * )&packet, 0 ); +} + +void hif_msg_sendStopTx(void) +{ + UINT32_t address = NULL; + struct xQ_Packet packet={0}; + packet.ucCommand = MESSAGE_STOP_TX; + packet.ucSrc = HOSTIF_TASK_MESSAGE; + packet.ucData[0] = address & 0xff; + packet.ucData[1] = (address >> 8) & 0xff; + packet.ucData[2] = (address >> 16) & 0xff; + packet.ucData[3] = (address >> 24) & 0xff; + xQueueSend( xHandleQueueHostIf, ( void * )&packet, 0 ); +} +#if (FEATURE_MULTI_CHANNEL_STREAM_DEVICE == 1) + +// for 3 channel wifi + +//this is also defined in ql_vr_app.c +typedef struct { + QAI_DataBlockHeader_t dbHeader; + int16_t pcm_data[AUDIO_BLOCK_SIZE_IN_SAMPLES]; +} QAI_AudioBrick_t ; + +QAI_AudioBrick_t wifi_dma_buffer[MULTICHANNEL_QUEUE_LENGTH]; +QAI_DataBlockMgr_t wifi_DataBlkMgr; +/* +struct st_dbm_init { + QAI_DataBlockMgr_t *pdatablk_mgr_handle; + void *pmem; + int mem_size; + int item_count; + int item_size_bytes; +} ; +*/ +void init_wifi_buffer(void) +{ + memset(wifi_dma_buffer, 0, sizeof(wifi_dma_buffer)); + datablk_mgr_init(&wifi_DataBlkMgr , + wifi_dma_buffer, + sizeof(wifi_dma_buffer), + AUDIO_BLOCK_SIZE_IN_SAMPLES, + 2); + dbg_queue_monitor_add(wifi_DataBlkMgr.dataBlockFreeQ); + vQueueAddToRegistry( wifi_DataBlkMgr.dataBlockFreeQ, "WifiDataBQ" ); + + return; +} + +QAI_DataBlockMgr_t* get_audio_block_manager(void) +{ + return &wifi_DataBlkMgr; +} +int get_audio_block_size_samples(void) +{ + //return AUDIO_BRICK_SIZE_SAMPLES; + return AUDIO_BLOCK_SIZE_IN_SAMPLES; +} + +#endif // FEATURE_MULTI_CHANNEL_STREAM_DEVICE \ No newline at end of file diff --git a/qf_vr_apps/qf_vr_aec_app/src/main.c b/qf_vr_apps/qf_vr_aec_app/src/main.c new file mode 100644 index 00000000..20ee939b --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/main.c @@ -0,0 +1,365 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : main.c + * Purpose: main for QL smart remote test application + * + *=========================================================*/ + +#include "Fw_global_config.h" +#include "Bootconfig.h" +#include +#include +#include "FreeRTOS.h" +#include "task.h" +#include "semphr.h" +#include "timers.h" +#include "RtosTask.h" + +/* Include the generic headers required for sensorHub */ +#include "eoss3_hal_gpio.h" +#include "eoss3_hal_i2c.h" +#include "eoss3_hal_rtc.h" +#include +#include "s3x_clock_hal.h" +#include "s3x_clock.h" +#include "s3x_pi.h" +#include "QL_Trace.h" +#include "ql_controlTask.h" +#include "ql_audio.h" +#include "qlsh_commands.h" +#include "dbg_uart.h" +#include "ql_audio.h" +#include "eoss3_hal_uart.h" + +//#include "cli.h" +#include "Fw_task.h" + +#include "sec_debug.h" +#include "eoss3_hal_spi.h" +//#include "spi_flash.h" + +//#include "vm1010.h" +#include "host_interface.h" +#include "d2h_protocol.h" + +#include "eoss3_hal_pad_config.h" + +#if (FEATURE_FLL_I2S_DEVICE == 1) +#include "fpga_loader.h" +#if (ENABLE_I2S_16KHz_RX_SLAVE == 1) + +//#include "FPGA_AEC_qlsym_dbgdmairq_2021_03_18a.h" + +//#include "top_bit_03_30_2021.h" + +//#include "AEC_FPGA_sepmodules_spde_dbg_2021_05_18a.h" + +//no debug pins, clean with SPDE +#include "AEC_FPGA_sepmodules_spde_2021_05_18b.h" + +//#include "top_bit_05_24_2021.h" + +#else +#include "FLL_top_bit_12_01_2020.h" +#endif +#include "eoss3_hal_fpga_FLL.h" +#endif + +#if (ENABLE_I2S_16KHz_RX_SLAVE == 1) +//#include "ql_i2sRxTask.h" +#endif + +extern void HAL_FB_FLL_Set_Sample_Time( int sample_count); +extern int HAL_FB_FLL_Get_Sample_Time(void); + +extern void ql_smart_remote_example(); +extern const struct cli_cmd_entry my_main_menu[]; + +struct tm calendar = {0}; + +const char *SOFTWARE_VERSION_STR; + + +/* + * Global variable definition + */ +#ifdef __EOSS3_CHIP +volatile uint32_t SystemCoreClock = 72000000; +#else +#error "Need to define SystemCoreClock" +volatile uint32_t SystemCoreClock = 0; +#endif + +int D2H_FSMConfigData = 0; + +#if (FEATURE_1WIRE_PROTOCOL_DEVICE == 0) + +//Using PAD_24 as Ack from S3 and PAD_31 as Ack from Host +void setup_d2h_hardware(void) { + + //these setup only 2 pins + h2d_config_intr(&D2H_FSMConfigData); + + return; +} + +void start_d2h_protocol_task(void) { + + //setup gpios and interrupts + setup_d2h_hardware(); + + D2H_Platform_Info d2h_plat_info; + d2h_plat_info.H2D_gpio = GPIO_6; + d2h_plat_info.D2H_gpio = 0xFF; // D2H intr is through PAD 43. AP intr + + d2h_plat_info.H2D_ack = GPIO_7; + d2h_plat_info.D2H_ack = GPIO_2; // D2H Ack is through PAD 11. + + d2h_protocol_init(&d2h_plat_info); + + return; +} +#else +void start_d2h_protocol_task(void) { + + //setup AP INT pins + h2d_config_intr((void *) NULL); //enable interrupt to host + configure_host_interrupt(); //enable software interrupt from host + + //for 1-wire we do not use GPIO's. so fill with invalid values + D2H_Platform_Info d2h_plat_info; + d2h_plat_info.H2D_gpio = 0xFF; + d2h_plat_info.D2H_gpio = 0xFF; + d2h_plat_info.H2D_ack = 0xFF; + d2h_plat_info.D2H_ack = 0xFF; + + d2h_protocol_init(&d2h_plat_info); +} +#endif //FEATURE_1WIRE_PROTOCOL_DEVICE + +extern int VR_FSMConfigData; + +/* + * Private variable definition + */ + +/* neede for startup_EOSS3b.s asm file */ +void SystemInit(void) +{ + +} + +extern void hardwareSetup_Chandalar(); + +static void ldo_init(void) +{ + /* LDO Settings */ +#if ( ENABLE_INTERNAL_LDO == 1) + AIP->LD0_30_CTRL_0 = 0x1ac; // LDO Enable /* 0x1ac -> Vo =1.01V, imax = 7.2mA, LDO enabled. */ + AIP->LD0_50_CTRL_0 = 0x1ac; // LDO Enable +#else + AIP->LD0_30_CTRL_0 = 0x1a1; // LDO Disable /* 0x1a1 -> Vo = 1.01 V, LDO Disabled */ + AIP->LD0_50_CTRL_0 = 0x1a1; // LDO Disable +#endif +} + +static void nvic_init(void) + { + // To initialize system, this interrupt should be triggered at main. + // So, we will set its priority just before calling vTaskStartScheduler(), not the time of enabling each irq. + NVIC_SetPriority(Ffe0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY); + NVIC_SetPriority(SpiMs_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY); + NVIC_SetPriority(CfgDma_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY); + NVIC_SetPriority(Uart_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY); + NVIC_SetPriority(FbMsg_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY); + NVIC_SetPriority(Sdma_Done0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY); + NVIC_SetPriority(Gpio_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY); + +#if (FEATURE_1WIRE_PROTOCOL_DEVICE == 1) + NVIC_SetPriority(SwInt1_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY); +#endif + + } + +void banner(void) +{ + dbg_str("\n\n"); + dbg_str( " ############################################################\n\n"); + dbg_str( " Quicklogic Open Platform 2.0 \n"); + dbg_str( " SW Version: "); + dbg_str( SOFTWARE_VERSION_STR ); + dbg_str( " \n " ); + dbg_str( __DATE__ " " __TIME__ " \n" ); + + dbg_str( "\n ############################################################\n\n"); + + +#if (PDM_MIC_STEREO == 1) + dbg_str(" + PCM Stereo Transport Enabled \n"); +#elif (ENABLE_RAW_TX_SPI == 1) + dbg_str(" + PCM mono Transport Enabled \n"); +#else + dbg_str(" - No Transport \n"); +#endif +} +int main(void) +{ + SOFTWARE_VERSION_STR = "QORC-SDK-VR-AEC-App"; + + qf_hardwareSetup(); + +#if (FEATURE_FLL_I2S_DEVICE == 1) + + // length of axFPGABitStream array in bytes + int axFPGABitStream_FLL_length = sizeof(axFPGABitStream); + + + S3x_Clk_Set_Rate(S3X_FB_21_CLK, 3*1024*1000); //for 48K sample rate = 2*32*16K *3= 3*1024000 + S3x_Clk_Set_Rate(S3X_FB_16_CLK, 1*6*1024*1000); //for FIR decimation at 16Khz + + S3x_Clk_Enable(S3X_FB_21_CLK); + S3x_Clk_Enable(S3X_FB_16_CLK); + + S3x_Clk_Enable(S3X_A1_CLK); + S3x_Clk_Enable(S3X_CFG_DMA_A1_CLK); + + load_fpga(axFPGABitStream_FLL_length,(uint32_t *)axFPGABitStream); + +#if 1 //enable for test only + + S3x_Clk_Enable(S3X_FB_21_CLK); + S3x_Clk_Enable(S3X_FB_16_CLK); + + HAL_FB_FLL_Set_Sample_Time(0x800); + HAL_FB_FLL_Set_Gap_Time(0x800); + + //HAL_FB_FLL_Enable(); + //int count1 = HAL_FB_FLL_Get_Sample_Time(); + //int count2 = HAL_FB_FLL_Get_Gap_Time(); + //printf("%d, %d\n", count1,count2); +#endif + +#endif + + + uart_set_lpm_state(UART_ID_HW,1); + HAL_RTC_Init(0); + banner(); +#if (FEATURE_1WIRE_PROTOCOL_DEVICE == 1) + dbg_str("Using 1-wire D2H Protocol\n\n"); +#else + dbg_str("Using 4-pin D2H Protocol\n\n"); +#endif + + //ldo_init(); + nvic_init(); +#if (PDM_PAD_28_29 == 1) + IO_MUX->PDM_DATA_SELE = 0x02; // 1 for pad10, 2 for pad28 +#endif +#if (PDM_PAD_8_10 == 1) + IO_MUX->PDM_DATA_SELE = 0x01; // 1 for pad10, 2 for pad28 +#endif +#if (VOICE_AP_BYPASS_MODE == 1) + /* Select for PAD 38 */ + IO_MUX->PDM_CLKIN_SEL = 0x01; +#endif + + //setup D2H protocol pins and interrupts and start the task + start_d2h_protocol_task(); + + hif_task_Start(); + + ql_smart_remote_example(); + /* for debug - view and control over COM */ +#if FEATURE_CLI_DEBUG_INTERFACE + CLI_start_task( my_main_menu ); +#endif + dbg_startbufferedprinttask(PRIORITY_LOWER); + StartControlTask(); + +#if (ENABLE_I2S_16KHz_RX_SLAVE == 1) + //StartRtosTaskI2S_Rx(); + StartRtosTaskAEC(); +#endif + + /* Start the tasks and timer running. */ + vTaskStartScheduler(); + while(1); +} + +void i2c_init_for_m4(void) +{ + I2C_Config xI2CConfig; + + xI2CConfig.eI2CFreq = I2C_200KHZ; + xI2CConfig.eI2CInt = I2C_DISABLE; + xI2CConfig.ucI2Cn = 0; + HAL_I2C_Init(xI2CConfig); + xI2CConfig.ucI2Cn = 1; + HAL_I2C_Init(xI2CConfig); +} + + +void GenerateInterruptToBLE(void) +{ + int count =0; + volatile uint32_t sts=0; +#if 1 //this is failing some times. so disable. check only for interrupt clear + //first check interrupt is enabled from other side + do + { + sts=INTR_CTRL->SOFTWARE_INTR_2_EN_AP; + count++; + } while(!sts); + count = 0; +#endif + + //next make sure the interrupt is cleared from other side + do + { + sts=INTR_CTRL->SOFTWARE_INTR_2; + count++; +#if 1 + if(count > (100*1000)) + { + dbg_str("Error-INTR_2\n"); + break; + } +#endif + }while(sts); + + + INTR_CTRL->SOFTWARE_INTR_2_EN_AP = 1; // Enable interrupt to AP + INTR_CTRL->SOFTWARE_INTR_2 = 1; + return; +} +void ClearInterruptToBLE(void) +{ + INTR_CTRL->SOFTWARE_INTR_2 = 0; +} + + +void update_calendar(void) +{ + time_t ltime; + ltime = ql_time(NULL); + ql_localtime_r(<ime, &calendar); +} + + diff --git a/qf_vr_apps/qf_vr_aec_app/src/main_dbg_cli_menu.c b/qf_vr_apps/qf_vr_aec_app/src/main_dbg_cli_menu.c new file mode 100644 index 00000000..01f056b1 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/main_dbg_cli_menu.c @@ -0,0 +1,331 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : main_dbg_cli_menu.c + * Purpose: + * + *=========================================================*/ + +#include "Fw_global_config.h" +#include +#include +#include +#include "cli.h" + +#include "dbg_uart.h" +#include "eoss3_hal_audio.h" +#include "host_interface.h" +#include "eoss3_hal_uart.h" + +//#include "vm1010.h" +#include "qlsh_commands.h" +#include "ql_audio.h" +#include "ql_controlTask.h" + + +#if FEATURE_CLI_DEBUG_INTERFACE + +#define SPI_TRANSFER_TEST (0) +#if SPI_TRANSFER_TEST // to test the Host - Slave tranfer over spi +#include "d2h_protocol.h" + + +#define SLAVE_S3_WRITE_MEM_ADDR (0x7C800) // this is where host writes and slave reads +#define SLAVE_S3_READ_MEM_ADDR (0x7C400) // this is whrer host reads and slave writes +#define DATA_READ_WRITE_SIZE (128) + + +#define CMD_DUMMY_1 (0xF) +#define CHANNEL_DUMMY_1 (0x5) + + +// These addresses are fixed for communication between BLE and S3 using QL SPI +//#pragma default_variable_attributes = @ "BLE_SPI_TX_LOCATION" +uint8_t host_spi_read_buff[DATA_READ_WRITE_SIZE]; //host reads from here, slave writes to this location +//#pragma default_variable_attributes = + +//#pragma default_variable_attributes = @ "BLE_SPI_RX_LOCATION" +uint8_t host_spi_write_buff[DATA_READ_WRITE_SIZE];////host writes here, slave reads from this location +//#pragma default_variable_attributes = +static void intr_host(const struct cli_cmd_entry *pEntry) +{ + (void)pEntry; + // do something + return; + +} + +static void read_data(const struct cli_cmd_entry *pEntry) +{ + (void)pEntry; + // do something + int i = 0; + + memcpy(&(host_spi_write_buff[0]),(void *)(SLAVE_S3_WRITE_MEM_ADDR),DATA_READ_WRITE_SIZE); + + dbg_memdump8((intptr_t)(host_spi_write_buff),(void *)(host_spi_write_buff),DATA_READ_WRITE_SIZE); + + return; + +} + +uint8_t pattern = 0xFA; +static void write_data(const struct cli_cmd_entry *pEntry) +{ + (void)pEntry; + // do something + int i = 0; + for(i = 0; i< DATA_READ_WRITE_SIZE; ++i) + { + //host_spi_read_buff[i] = pattern; + host_spi_read_buff[i] = i%16; + } + memcpy((void *)(SLAVE_S3_READ_MEM_ADDR),&(host_spi_read_buff[0]),DATA_READ_WRITE_SIZE); + dbg_memdump8((intptr_t)(host_spi_read_buff),(void *)(host_spi_read_buff),DATA_READ_WRITE_SIZE); + + return; + +} + + +static void set_write_pattern( const struct cli_cmd_entry *pEntry ) +{ + (void)pEntry; +#if DBG_FLAGS_ENABLE + CLI_uint8_getshow( "pattern", &pattern ); +#endif +} +static int seq = 0; +static void send_cmd(const struct cli_cmd_entry *pEntry) +{ + (void)pEntry; + // Add functionality here + dbg_str("sending event to host. \n"); + D2H_Pkt_Info cmd_info = {0}; + cmd_info.channel = CHANNEL_DUMMY_1; + + seq++; + if(0xf <= seq) { + seq = 0; + } + + cmd_info.seq = seq; + cmd_info.cmd = CMD_DUMMY_1; + cmd_info.data[0] = 0x01; + cmd_info.data[1] = 0x11; + cmd_info.data[2] = 0x22; + cmd_info.data[3] = 0x33; + cmd_info.data[4] = 0x44; + cmd_info.data[5] = 0x55; + + if (d2h_transmit_cmd(&cmd_info)){ + dbg_str("Error returned from d2h tansmit api\n"); + } + +} + + +Rx_Cb_Ret d2h_receive_callback(D2H_Pkt_Info rx_cmd_info) +{ + Rx_Cb_Ret ret = {0}; + dbg_str("callback invoked\n"); + + // display the unpacked cmd received + dbg_str_int("seq = ",rx_cmd_info.seq); + dbg_str_int("channel = ",rx_cmd_info.channel); + dbg_str_int("cmd = ",rx_cmd_info.cmd); + dbg_str_int("data[0] = ",rx_cmd_info.data[0]); + dbg_str_int("data[1] = ",rx_cmd_info.data[1]); + dbg_str_int("data[2] = ",rx_cmd_info.data[2]); + dbg_str_int("data[3] = ",rx_cmd_info.data[3]); + dbg_str_int("data[4] = ",rx_cmd_info.data[4]); + dbg_str_int("data[5] = ",rx_cmd_info.data[5]); + + + return ret; +} +static void reg_callback( const struct cli_cmd_entry *pEntry ) +{ + (void)pEntry; + d2h_register_rx_callback((&d2h_receive_callback),CHANNEL_DUMMY_1, NULL, NULL, NULL ); + +} + +const struct cli_cmd_entry spi_test[] = +{ + CLI_CMD_SIMPLE( "intr_host", intr_host, "cli command to generate interrupt to Host" ), + CLI_CMD_SIMPLE( "set_write_pattern", set_write_pattern, "cli command to set the write pattern for write_data" ), + CLI_CMD_SIMPLE( "read_data", read_data, "cli command to read buffer modified by Host" ), + CLI_CMD_SIMPLE( "write_data", write_data, " cli command to write pattern to buffer modified by Host " ), + CLI_CMD_SIMPLE( "reg_callback", reg_callback, " to register test callback to d2h protocol " ), + CLI_CMD_SIMPLE( "send_cmd", send_cmd, " to send dummy cmd to host " ), + CLI_CMD_TERMINATE() +}; + + +#endif + +static void set_dbg_flags( const struct cli_cmd_entry *pEntry ) +{ + (void)pEntry; +#if DBG_FLAGS_ENABLE + CLI_uint32_getshow( "debug-flags", &DBG_flags ); +#endif +} + + + + +static void vm1010_int(const struct cli_cmd_entry *pEntry) +{ + (void)pEntry; + struct xCQ_Packet CQpacket; + CQpacket.ceEvent = CEVENT_VM1010; + addPktToControlQueue(&CQpacket); + dbg_str("\n VM1010 Event sent\n"); + return; +} + +static void vrtrigger(const struct cli_cmd_entry *pEntry) +{ + (void)pEntry; + struct xCQ_Packet CQpacket; + CQpacket.ceEvent = CEVENT_VR_TRIGGER; + addPktToControlQueue(&CQpacket); + dbg_str("\n VM1010 Event sent\n"); + return; +} + +static void print_regs(const struct cli_cmd_entry *pEntry) { + print_S3_register_values(); +} + +#if ENABLE_OPUS_ENCODER +void set_audio_status(uint8_t val); +void opus_setTestMode(uint8_t value); +static void vr_on(const struct cli_cmd_entry *pEntry) +{ + (void)pEntry; + set_audio_status(0); + return; +} + +static void opus_test0(const struct cli_cmd_entry *pEntry) +{ + opus_setTestMode(0); +} + +static void opus_test1(const struct cli_cmd_entry *pEntry) +{ + opus_setTestMode(1); +} +#endif + +void enable_VR_continuous(uint8_t val); +static void frr_test1(const struct cli_cmd_entry *pEntry) +{ + //TIMenable_VR_continuous(1); +} + +static void frr_test0(const struct cli_cmd_entry *pEntry) +{ + //TIM enable_VR_continuous(0); +} + +void audio_ql_vr_event_handler(int pid, int event_type, void *p_event_data, int num_data_bytes); + + + + + + +static void disable_host(const struct cli_cmd_entry *pEntry) +{ + dbg_str("\n Host communication disabled, standalone test in progress:\n"); + //enable_host_communication(0); + hif_enableCommunication(0); +} + +static void enable_host(const struct cli_cmd_entry *pEntry) +{ + dbg_str("\n Host communication enabled:\n"); + hif_enableCommunication(1); +} + +static void enable_uart_lpm(const struct cli_cmd_entry *pEntry) +{ + (void)pEntry; + uart_set_lpm_state(UART_ID_HW,1); + return; +} +static void disable_uart_lpm(const struct cli_cmd_entry *pEntry) +{ + (void)pEntry; + uart_set_lpm_state(UART_ID_HW,0); + return; +} +#if (ENABLE_I2S_TX_SLAVE == 1) +static void i2s_aud_start(const struct cli_cmd_entry *pEntry) +{ + (void)pEntry; + set_audio_clock_qos(1); + + struct xQ_Packet packet={0}; + packet.ucCommand = eCMD_AUDIO_START; + packet.ucSrc = AUDIO_TASK_MESSAGE; + addPktToQueueFromTask_Audio(&packet); + return; +} +#endif +const struct cli_cmd_entry voice_test[] = +{ +#if ENABLE_OPUS_ENCODER + CLI_CMD_SIMPLE( "vr_on", vr_on, " cli command to make VR ON and OPUS OFF. OPUS will be active [and VR is auto off] only after KP detects." ), + CLI_CMD_SIMPLE( "opus_test1", opus_test1, " cli command to enable OPUS test mode" ), + CLI_CMD_SIMPLE( "opus_test0", opus_test0, " cli command to disable OPUS test mode" ), + CLI_CMD_SIMPLE( "frr_test1", frr_test1, " Enable FRR test, OPUS will be disabled" ), + CLI_CMD_SIMPLE( "frr_test0", frr_test0, " Disable FRR test, OPUS will be enabled only after KPD" ), +#endif + + CLI_CMD_TERMINATE() +}; + + +extern const struct cli_cmd_entry fsm_menu[]; // From Control Task + +const struct cli_cmd_entry my_main_menu[] = { + CLI_CMD_SIMPLE( "vm1010", vm1010_int, "sends vm1010 event" ), + CLI_CMD_SIMPLE( "vr", vrtrigger, "sends vr_trigger event" ), + CLI_CMD_SIMPLE( "print_regs", print_regs, "prints most register values" ), + CLI_CMD_SIMPLE( "disable_host", disable_host, "disables host interface communication" ), + CLI_CMD_SIMPLE( "enable_host", enable_host, "enables host interface communication" ), + CLI_CMD_SIMPLE( "uart_lpm_en", enable_uart_lpm, "to enable uart lpm " ), + CLI_CMD_SIMPLE( "uart_lpm_dis", disable_uart_lpm, "to disable uart lpm" ), + CLI_CMD_SUBMENU( "voice_test", voice_test, "ql smart remote application menu" ), + CLI_CMD_SUBMENU( "fsm", fsm_menu, "fsm menu" ), +#if SPI_TRANSFER_TEST + CLI_CMD_SUBMENU( "spi_test", spi_test, "ql smart remote application menu" ), +#endif +#if (ENABLE_I2S_TX_SLAVE == 1) + CLI_CMD_SIMPLE( "aud_start", i2s_aud_start, "to start audio for i2s transfer " ), +#endif + + CLI_CMD_TERMINATE() +}; + +#endif diff --git a/qf_vr_apps/qf_vr_aec_app/src/pincfg_table.c b/qf_vr_apps/qf_vr_aec_app/src/pincfg_table.c new file mode 100644 index 00000000..210ba1d6 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/pincfg_table.c @@ -0,0 +1,496 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +#include "Fw_global_config.h" +#include "eoss3_hal_pad_config.h" +#include "eoss3_hal_gpio.h" + +PadConfig pincfg_table[] = +{ + { // setup UART TX + .ucPin = PAD_44, + .ucFunc = PAD44_FUNC_SEL_UART_TXD, + .ucCtrl = PAD_CTRL_SRC_A0, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { // setup UART RX + .ucPin = PAD_45, // Options: 14, 16, 25, or 45 + .ucFunc = PAD45_FUNC_SEL_UART_RXD, + .ucCtrl = PAD_CTRL_SRC_A0, + .ucMode = PAD_MODE_INPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + + { // setup debug input pins Pad 14 - S3_SW_DP_CLK + .ucPin = PAD_14, + .ucFunc = PAD14_FUNC_SEL_SW_DP_CLK, + .ucPull = PAD_NOPULL, + .ucMode = PAD_MODE_INPUT_EN, + .ucCtrl = PAD_CTRL_SRC_OTHER, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + + { //setup debug input pins Pad 15 - S3_SW_DP_IO + .ucPin = PAD_15, + .ucFunc = PAD15_FUNC_SEL_SW_DP_IO, + .ucPull = PAD_NOPULL, + .ucMode = PAD_MODE_INPUT_EN, + .ucCtrl = PAD_CTRL_SRC_OTHER, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + +#if 0 //disabling since GPIO_1 is used for I2S + { + //Currently Pad 9 is not configured and has an internal pull-down and is + // connected to SWD_DATA that has an external pull-up + //Pad 9 - remove default pull-down configuration, ensure pin is configured as input + .ucPin = PAD_9, + .ucFunc = PAD9_FUNC_SEL_GPIO_1, + .ucMode = PAD_MODE_INPUT_EN, + .ucPull = PAD_NOPULL, + .ucCtrl = PAD_CTRL_SRC_OTHER, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, +#endif + + // LEDS + { // setup blue LED + .ucPin = PAD_18, + .ucFunc = PAD18_FUNC_SEL_GPIO_4, + .ucCtrl = PAD_CTRL_SRC_A0, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGTH_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { // setup green LED + .ucPin = PAD_21, + .ucFunc = PAD21_FUNC_SEL_GPIO_5, + .ucCtrl = PAD_CTRL_SRC_A0, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGTH_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, +#if 0 //GPIO_6 is used by PAD_31 + { // setup red LED + .ucPin = PAD_22, + .ucFunc = PAD22_FUNC_SEL_GPIO_6, + .ucCtrl = PAD_CTRL_SRC_A0, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGTH_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, +#endif +#if 0 + { + // Pad6 is the user button + .ucPin = PAD_6, + .ucFunc = PAD6_FUNC_SEL_GPIO_0, + .ucMode = PAD_MODE_INPUT_EN, + .ucPull = PAD_PULLUP, + .ucDrv = PAD_DRV_STRENGTH_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS + }, +#endif + + { // Pad 33 -- Test clock + .ucPin = PAD_33, + .ucFunc = PAD33_FUNC_SEL_FBIO_33, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, +#if 0 + // SPI Slave + { // Pad 16 -- SPI Slave CLK + .ucPin = PAD_16, + .ucFunc = PAD16_FUNC_SEL_SPIs_CLK, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { // Pad 17 -- SPI Slave MISO + .ucPin = PAD_17, + .ucFunc = PAD17_FUNC_SEL_SPIs_MISO, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { // Pad 19 -- SPI Slave MOSI + .ucPin = PAD_19, + .ucFunc = PAD19_FUNC_SEL_SPIs_MOSI, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_INPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { // Pad 20 -- SPI Slave SSn + .ucPin = PAD_20, + .ucFunc = PAD20_FUNC_SEL_SPIs_SSn, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_INPUT_EN, + .ucPull = PAD_NOPULL, + }, +#endif + //------------- USB ---------------// + { // Pad 37 -- USB Pullup control + .ucPin = PAD_37, + .ucFunc = PAD37_FUNC_SEL_FBIO_37, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { // Pad 41 -- USB D- + .ucPin = PAD_41, + .ucFunc = PAD41_FUNC_SEL_FBIO_41, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { // Pad 41 -- USB D+ + .ucPin = PAD_42, + .ucFunc = PAD42_FUNC_SEL_FBIO_42, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + +#if (AUDIO_DRIVER == 1) && (PDM_PAD_28_29 == 1) + { // Pad 28 -- PDM DATA + .ucPin = PAD_28, + .ucFunc = PAD28_FUNC_SEL_PDM_DIN, + .ucCtrl = PAD_CTRL_SRC_A0, + .ucMode = PAD_MODE_INPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { // Pad 29 -- PDM CLK + .ucPin = PAD_29, + .ucFunc = PAD29_FUNC_SEL_PDM_CKO, + .ucCtrl = PAD_CTRL_SRC_A0, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, +#endif +#if (AUDIO_DRIVER == 1) && (PDM_PAD_8_10 == 1) + { + /* Configuring Pad_8 as PDM Clk out*/ + .ucPin = PAD_8, + .ucFunc = PAD8_FUNC_PDM_CKO, + .ucCtrl = PAD_CTRL_SRC_A0, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { + /* Configuring PAD_10 as PDM Data In*/ + .ucPin = PAD_10, + .ucFunc = PAD10_FUNC_SEL_PDM_DIN, + .ucCtrl = PAD_CTRL_SRC_A0, + .ucMode = PAD_MODE_INPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, +#endif +#if (ENABLE_I2S_TX_SLAVE == 1) + { + /* WD_CLK left/right sync clock */ + .ucPin = PAD_23, + .ucFunc = PAD23_FUNC_SEL_AP_I2S_WD_CLK_IN, + .ucCtrl = PAD_CTRL_SRC_A0, + .ucMode = PAD_MODE_INPUT_EN, + .ucPull = PAD_PULLUP, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { + /* I2S DOUT for Tx */ + .ucPin = PAD_24, + .ucFunc = PAD24_FUNC_SEL_AP_I2S_DOUT, + .ucCtrl = PAD_CTRL_SRC_A0, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_PULLUP, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { + /* I2S CLK IN from master */ + .ucPin = PAD_31, + .ucFunc = PAD31_FUNC_SEL_AP_I2S_CLK_IN, + .ucCtrl = PAD_CTRL_SRC_A0, + .ucMode = PAD_MODE_INPUT_EN, + .ucPull = PAD_PULLUP, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, +#endif +#if(FEATURE_D2HPROTOCOL_DEVICE == 1) + { + /* D2H Ack */ + .ucPin = PAD_11, + .ucFunc = PAD11_FUNC_SEL_GPIO_2, + .ucCtrl = PAD_CTRL_SRC_A0, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_PULLUP, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS + }, + /* D2H Interrupt is always using PAD_43. + It needs set up differently. (?) + So, not setup here. + */ +#endif + +#if (VOICE_AP_BYPASS_MODE == 1) + { + //S3B_AP_PDM_CKO_IN + .ucPin = PAD_38; + .ucFunc = PAD38_FUNC_SEL_AP_PDM_CKO_IN; + .ucCtrl = PAD_CTRL_SRC_A0; + .ucMode = PAD_MODE_INPUT_EN; + .ucPull = PAD_NOPULL; + .ucDrv = PAD_DRV_STRENGHT_4MA; + .ucSpeed = PAD_SLEW_RATE_SLOW; + .ucSmtTrg = PAD_SMT_TRIG_DIS; + }, + { + .ucPin = PAD_39; + .ucFunc = PAD39_FUNC_SEL_AP_PDM_IO; + .ucCtrl = PAD_CTRL_SRC_A0; + .ucMode = PAD_MODE_OUTPUT_EN; + .ucPull = PAD_NOPULL; + .ucDrv = PAD_DRV_STRENGHT_4MA; + .ucSpeed = PAD_SLEW_RATE_SLOW; + .ucSmtTrg = PAD_SMT_TRIG_DIS; + }, +#endif +#if (FEATURE_FLL_I2S_DEVICE == 1) + + { // Pad 4 -- I2S master-in clk + .ucPin = PAD_4, + .ucFunc = PAD4_FUNC_SEL_FBIO_4, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_INPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { // Pad 2 -- FLL Speedup interrupt + .ucPin = PAD_2, + .ucFunc = PAD2_FUNC_SEL_FBIO_2, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { // Pad 27 -- FLL Slowdown interrupt + .ucPin = PAD_27, + .ucFunc = PAD27_FUNC_SEL_FBIO_27, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { // Pad 8 -- Debug FLL out bitclk Master + .ucPin = PAD_8, + .ucFunc = PAD8_FUNC_SEL_FBIO_8, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { // Pad 3 -- Debug FLL out bitclk Slave + .ucPin = PAD_3, + .ucFunc = PAD3_FUNC_SEL_FBIO_3, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + + +#endif +#if (ENABLE_I2S_16KHz_RX_SLAVE == 1) + { + /* I2S CLK IN from master */ + .ucPin = PAD_31, + .ucFunc = PAD31_FUNC_SEL_FBIO_31, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_INPUT_EN, + .ucPull = PAD_PULLUP, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { + /* WD_CLK left/right sync clock */ + .ucPin = PAD_23, + .ucFunc = PAD23_FUNC_SEL_FBIO_23, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_INPUT_EN, + .ucPull = PAD_PULLUP, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + { + /* I2S DIN for Rx */ + .ucPin = PAD_24, + .ucFunc = PAD24_FUNC_SEL_FBIO_24, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_INPUT_EN, + .ucPull = PAD_PULLUP, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, +//just for debug + { + //just for debug + .ucPin = PAD_10, + .ucFunc = PAD10_FUNC_SEL_FBIO_10, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, +/* + { + //just for debug + .ucPin = PAD_8, + .ucFunc = PAD8_FUNC_SEL_FBIO_8, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, + */ +/* { + //just for debug + .ucPin = PAD_7, + .ucFunc = PAD7_FUNC_SEL_FBIO_7, + .ucCtrl = PAD_CTRL_SRC_FPGA, + .ucMode = PAD_MODE_OUTPUT_EN, + .ucPull = PAD_NOPULL, + .ucDrv = PAD_DRV_STRENGHT_4MA, + .ucSpeed = PAD_SLEW_RATE_SLOW, + .ucSmtTrg = PAD_SMT_TRIG_DIS, + }, +*/ + +#endif + +}; + +GPIOCfgTypeDef gpiocfg_table[] = +{ +#if (FEATURE_D2HPROTOCOL_DEVICE == 1) + { //for H2D interrupt + .usPadNum = PAD_12, + .ucGpioNum = GPIO_6, + .ucFunc = PAD12_FUNC_SEL_SENS_INT_6, + .intr_type = EDGE_TRIGGERED, + .pol_type = RISE_HIGH, // Active HIGH (1 for level triggered is active high) + .ucPull = PAD_NOPULL + }, + { //for H2D ack + .usPadNum = PAD_13, + .ucGpioNum = GPIO_7, + .ucFunc = PAD13_FUNC_SEL_SENS_INT_7, + .intr_type = EDGE_TRIGGERED, + .pol_type = RISE_HIGH, // Active HIGH (1 for level triggered is active high) + .ucPull = PAD_NOPULL + }, +#endif + + { //for I2S start from AP + .usPadNum = PAD_36, + .ucGpioNum = GPIO_1, + .ucFunc = PAD36_FUNC_SEL_SENS_INT_1, + .intr_type = EDGE_TRIGGERED, + .pol_type = RISE_HIGH, // Active HIGH (1 for level triggered is active high) + .ucPull = PAD_NOPULL + }, + +}; + +int sizeof_pincfg_table = sizeof(pincfg_table)/sizeof(pincfg_table[0]); +int sizeof_gpiocfg_table = sizeof(gpiocfg_table)/sizeof(gpiocfg_table[0]); diff --git a/qf_vr_apps/qf_vr_aec_app/src/qf_hardwaresetup.c b/qf_vr_apps/qf_vr_aec_app/src/qf_hardwaresetup.c new file mode 100644 index 00000000..6df68569 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/qf_hardwaresetup.c @@ -0,0 +1,115 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : qf_hardwareSetup.c + * Purpose: Contains functionality to setup QuickFeather Board + * + *=========================================================*/ +#include "Fw_global_config.h" +#include +#include +#include "FreeRTOS.h" +#include "Fw_global_config.h" +//#include "QL_Trace.h" + +#include "eoss3_hal_gpio.h" +#include "eoss3_hal_pad_config.h" +#include "eoss3_hal_uart.h" +#include "s3x_clock.h" +#include "Bootconfig.h" + +void configure_s3_pads(PadConfig *p_table, int nitems); +extern PadConfig pincfg_table[]; +extern int sizeof_pincfg_table ; +void configure_s3_gpio_interrupts(GPIOCfgTypeDef *p_table, int nitems); +extern GPIOCfgTypeDef gpiocfg_table[]; +extern int sizeof_gpiocfg_table; + +static void ldo_init(void); +void system_init(void); +static void uart_setup(void); +//static void i2c_init_for_m4(); + +void qf_hardwareSetup(void) { + + SCnSCB->ACTLR |= SCnSCB_ACTLR_DISDEFWBUF_Msk; + S3x_pwrcfg_init(); + system_init(); + ldo_init(); + configure_s3_gpio_interrupts(gpiocfg_table, sizeof_gpiocfg_table); + configure_s3_pads(pincfg_table, sizeof_pincfg_table); + uart_setup(); +} + +//Initialize all System Clocks,Gate settings and used Power Resources +void system_init(void) +{ + S3x_Clk_Enable(S3X_M4_S0_S3_CLK); + S3x_Clk_Enable(S3X_M4_S4_S7_CLK); + S3x_Clk_Enable(S3X_M4_S8_S11_CLK); + S3x_Clk_Enable(S3X_M4_S12_S15_CLK); + + /* FPU settings ------------------------------------------------------------*/ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ +#endif + + /* Configure Memory to support light sleep and retention mode */ + PMU->M4SRAM_SSW_LPMF = 0xFFFF; + PMU->M4SRAM_SSW_LPMH_MASK_N = 0xFFFF; + + //Should be enabled only if FPGA is used + //S3x_Clk_Enable(S3X_FB_16_CLK); + //S3x_Clk_Enable(S3X_FB_21_CLK); + + S3x_Clk_Enable(S3X_A1_CLK); + S3x_Clk_Enable(S3X_CFG_DMA_A1_CLK); + + INTR_CTRL->OTHER_INTR = 0xffffff; + DMA_SPI_MS->DMA_CTRL = DMA_CTRL_STOP_BIT; +} + +static void ldo_init(void) +{ + /* LDO Settings */ + AIP->LD0_30_CTRL_0 = 0x1ac; // LDO Enable /* 0x1ac -> Vo =1.01V, imax = 7.2mA, LDO enabled. */ + AIP->LD0_50_CTRL_0 = 0x1ac; // LDO Enable + AIP->LD0_30_CTRL_0 = 0x28c; // LDO Enable /* 0x28c -> Vo =1.15V, imax = 7.2mA, LDO enabled. */ + AIP->LD0_50_CTRL_0 = 0x28c; // LDO Enable +} + +static void uart_setup() +{ + int uart_id; + UartBaudRateType brate; + UartHandler uartObj; + memset( (void *)&(uartObj), 0, sizeof(uartObj) ); + + uart_id = UART_ID_HW; + brate = BAUD_115200; + uartObj.baud = brate; + uartObj.wl = WORDLEN_8B; + uartObj.parity = PARITY_NONE; + uartObj.stop = STOPBITS_1; + uartObj.mode = TX_RX_MODE; + uartObj.hwCtrl = HW_FLOW_CTRL_DISABLE; + uartObj.intrMode = UART_INTR_ENABLE; + uartHandlerUpdate(uart_id,&uartObj); + + uart_init( uart_id, NULL, NULL, &uartObj); +} diff --git a/qf_vr_apps/qf_vr_aec_app/src/ql_aecTask.c b/qf_vr_apps/qf_vr_aec_app/src/ql_aecTask.c new file mode 100644 index 00000000..90505a8a --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/ql_aecTask.c @@ -0,0 +1,397 @@ +/*========================================================== + * Copyright 2021 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : ql_aecTask.h + * Purpose: + * + *=========================================================*/ + +/* Standard includes. */ +#include +/* Kernel includes. */ +#include +#include +#include +#include "Fw_global_config.h" + +#if (AEC_ENABLED == 1) +void cb_notify_i2sRx_intr_from_FPGA(void); + +#include "eoss3_hal_audio.h" +#include "ql_aecTask.h" +#include "eoss3_dev.h" +#include "eoss3_hal_i2s.h" +#include "eoss3_hal_i2s_drv.h" +#include "eoss3_hal_fpga_i2s_slave.h" +#include "eoss3_hal_fpga_decimation_fir.h" +#include "eoss3_hal_fpga_FLL.h" + +#include "s3x_clock.h" +#include "qlsh_commands.h" +//#include "ql_i2sRxTask.h" + +#include "eoss3_hal_audio_reg.h" +#include "s3x_dfs.h" +#include "fsm.h" +#include "ql_controlTask.h" + +xTaskHandle xHandleTaskAEC; +QueueHandle_t xHandleQueueAEC; +struct xQ_Packet i2s_packet; + +extern void HAL_I2S_Slave_FB_Cfg_Gpio_Intr(void); +extern void hif_release_mch_inputQ(void); + +#ifdef ENABLE_I2S_SLAVE_FB_RX + +void slave_fb_data_handler(uint8_t i2s_id_sel, + uint32_t const * p_data_received, + uint32_t * p_data_to_send, + uint16_t buffer_size) +{ + /* here we should process the data further since we are not getting the index of the data + ignore */ + return; +} +#endif + +static bool fb_i2s_enable=false; + +int FB_I2S_Slave_Rx_Enable(void) +{ + I2S_Config_t p_i2s_fb_cfg={0}; + UINT32_t ret_val=true; + + if(fb_i2s_enable==true) + { + printf("\nFB I2S RX already enabled\n"); + return ret_val; + } + + p_i2s_fb_cfg.ch_sel = I2S_CHANNELS_MONO; + p_i2s_fb_cfg.i2s_wd_clk = 16; + p_i2s_fb_cfg.mono_sel = I2S_CHANNEL_MONO_LEFT; + p_i2s_fb_cfg.sdma_used = 12; + ret_val = HAL_I2S_Init(I2S_SLAVE_FABRIC_RX, &p_i2s_fb_cfg, slave_fb_data_handler); + if(ret_val != HAL_I2S_SUCCESS) + { + printf ("\nError in I2S Slave Init !\n"); + ret_val=false; + return ret_val; + } + + fb_i2s_enable=true; + ret_val=true; +#if 0 + printf("\n *** I2S RX EN ***\n"); +#endif + return ret_val; +} + +int FB_I2S_Slave_Rx_Disable(void) +{ + uint32_t ret_val=true; + + if(fb_i2s_enable==false) + { + printf("\nFB I2S RX already disabled\n"); + return ret_val; + } + + ret_val=HAL_I2S_Stop(I2S_SLAVE_FABRIC_RX); + if(ret_val != HAL_I2S_SUCCESS) + { + printf ("\nError in I2S Stop !\n"); + ret_val=false; + return ret_val; + } + + fb_i2s_enable=false; +#if 0 + printf("\n *** I2S RX DIS ***\n"); +#endif + + return ret_val; + +} + +void Enable_I2S_data(void) +{ + eoss3_hal_fabric_i2s_slave_clks_enable(); + + S3x_Set_Qos_Req(S3X_FB_16_CLK, MIN_CPU_FREQ, C10_N4_CLK); + S3x_Set_Qos_Req(S3X_CLKGATE_FB, MIN_OP_FREQ, C09_N4_CLK); + S3x_Set_Qos_Req(S3X_SDMA_CLK, MIN_OP_FREQ, C01_N4_CLK); + + HAL_FB_I2SRx_Ref_input_DmaStart(); +} + +void Disable_I2S_data(void) +{ + eoss3_hal_fabric_i2s_slave_clks_disable(); + + S3x_Clear_Qos_Req(S3X_FB_16_CLK, MIN_CPU_FREQ); + S3x_Clear_Qos_Req(S3X_CLKGATE_FB, MIN_OP_FREQ); + S3x_Clear_Qos_Req(S3X_SDMA_CLK, MIN_OP_FREQ); +} +//This starts aec +void enable_aec_task(void) +{ + //eoss3_hal_fabric_i2s_slave_clks_enable(); + + HAL_I2S_Slave_FB_Register(); + + S3x_Register_Qos_Node(S3X_FB_16_CLK); + S3x_Register_Qos_Node(S3X_CLKGATE_FB); + S3x_Register_Qos_Node(S3X_SDMA_CLK); + + FB_I2S_Slave_Rx_Enable(); + Enable_I2S_data(); + + //just enable and dissable + FB_I2S_Slave_Rx_Disable(); + Disable_I2S_data(); + +} +void send_host_vr_msg(void) +{ + + struct xCQ_Packet CQpacket; + + CQpacket.ceEvent = CEVENT_VR_TRIGGER; + addPktToControlQueue(&CQpacket); + + return; +} +extern void HAL_Audio_LPSD_Enable(bool enable); +extern void HAL_Audio_LPSD_Int(bool fEnable); +extern void HAL_Audio_StartDMA( void ); +extern void HAL_Audio_StopDMA( bool fUsingLeftChannel, bool fUsingRightChannel ); +extern struct HAL_Audio_Config AudioHW_FSMConfigData; +extern void enable_stream_VR(void); +extern void hifcb_cmd_host_process_on(void *pdata, int len); +extern void hifcb_cmd_host_process_off(void *pdata, int len); +extern void ControlEventSend(enum control_event ce); +extern void ProcessControlEvent(enum control_event ceEvent); +extern int S3x_Set_Max_Policy(void); +extern void DFS_AlignPolicy(uint8_t policy); +extern void reset_aec_temp(void); +extern void QL_Audio_Voice_Start(void); +extern void setStreamingOn(void); +extern void set_spi_session_qos(uint8_t status); +void set_no_fifo_audio(void) +{ + //DFS_AlignPolicy(4); + DFS_Start(6); //6);// 4); +//set_DFS_policy(); + +// printf("\n\n--Pro--\n\n"); + //reset_aec_temp(); + ControlEventSend(CEVENT_LPSD_ON); + vTaskDelay(1); + + QL_Audio_Voice_Start(); + HAL_Audio_LPSD_Enable(false); //no internal processing + HAL_Audio_LPSD_Int(false); + HAL_Audio_StartDMA(); + //enable_stream_VR(); + + hif_release_mch_inputQ(); + + vTaskDelay(4); + send_host_vr_msg(); + +} +void reset_no_fifo_audio(void) +{ + ControlEventSend(CEVENT_LPSD_OFF); + + //reset_DFS_policy(); + HAL_Audio_LPSD_Enable(true); + HAL_Audio_LPSD_Int(true); + HAL_Audio_StopDMA(AudioHW_FSMConfigData.fUsingLeftChannel, AudioHW_FSMConfigData.fUsingRightChannel); +} + +extern uint32_t i2s_rx_enabled; +extern void enable_i2s_disconnect(void); +extern int aec_enabled; + +int i2s_rx_enabled_2; +int i2s_rx_enabled_3; + +int host_i2s_enabled = 0; +void aecTaskHandler (void *pvParameters) +{ + struct xQ_Packet rcvdAudio; + BaseType_t xResult; + + //enable FLL first + HAL_FB_FLL_Init(0,0); + NVIC_DisableIRQ(FbMsg_IRQn); + + //vTaskDelay(10); + enable_aec_task(); +#if 0 + Enable_I2S_data(); + NVIC_ClearPendingIRQ(FbMsg_IRQn); + NVIC_EnableIRQ(FbMsg_IRQn); +#endif + + while(1) + { + xResult = xQueueReceive(xHandleQueueAEC, &(rcvdAudio), portMAX_DELAY); + + if( xResult == pdPASS ) + { + /* Parse input message and process the request */ + switch( rcvdAudio.ucCommand ) + { + case eCMD_AUDIO_I2S_DATA_START: + { + set_no_fifo_audio(); + host_i2s_enabled = 1; + i2s_rx_enabled_2 = i2s_rx_enabled; + i2s_rx_enabled = 0; + aec_enabled = 0; + FB_I2S_Slave_Rx_Enable(); + Enable_I2S_data(); + HAL_FB_FLL_Enable(); + NVIC_ClearPendingIRQ(FbMsg_IRQn); + NVIC_EnableIRQ(FbMsg_IRQn); + enable_i2s_disconnect(); + + break; + } + case eCMD_AUDIO_I2S_DATA_STOP: + { + /* Stop Clock Sync */ + hifcb_cmd_host_process_off((void *)0, 0); + i2s_rx_enabled_3 = i2s_rx_enabled; + host_i2s_enabled = 0; + aec_enabled =0; + HAL_FB_FLL_Disable(); + FB_I2S_Slave_Rx_Disable(); + Disable_I2S_data(); + + NVIC_DisableIRQ(FbMsg_IRQn); + reset_no_fifo_audio(); + + break; + } + case eCMD_AUDIO_CLK_SYNC_INVOKE: + { + printf("Invalid case in AEC TASK\r\n"); + break; + } + default: + printf("Unknown SRC in AEC TASK\r\n"); + break; + } + } + } + //return the AEC task + //while (1) + { + printf("===Error - exited the AEC (aecTaskHandler) loop=== \n"); + vTaskDelay(100); + ; + } +} + +signed portBASE_TYPE StartRtosTaskAEC(void) +{ + static UINT8_t ucParameterToPass; + + + /* Create queue for AP Task */ + xHandleQueueAEC = xQueueCreate( AEC_QUEUE_LENGTH, sizeof(struct xQ_Packet) ); + if(xHandleQueueAEC == 0) + { + return pdFAIL; + } + vQueueAddToRegistry(xHandleQueueAEC, "Queue_AEC"); + /* Create AEC Task */ + xTaskCreate (aecTaskHandler, "AECTaskHandler", STACK_SIZE_ALLOC(STACK_SIZE_TASK_AEC), &ucParameterToPass, PRIORITY_TASK_AEC, &xHandleTaskAEC); + configASSERT(xHandleTaskAEC ); + return pdPASS; +} + +void cb_notify_i2sRx_disable_intr_from_FPGA_ISR(void) +{ + static struct xQ_Packet i2s_packet; + i2s_packet.ucCommand = eCMD_AUDIO_I2S_DATA_STOP; + i2s_packet.ucSrc = 6; + + BaseType_t xHigherPriorityTaskWoken = pdFALSE; + + if(xQueueSendFromISR( xHandleQueueAEC, &i2s_packet, &xHigherPriorityTaskWoken ) != pdPASS ) + { + printf("Error Sending AEC Disable message \n"); + } + + + portYIELD_FROM_ISR( xHigherPriorityTaskWoken ); + +} +void cb_notify_i2sRx_enable_intr_from_FPGA_ISR(void) +{ + static struct xQ_Packet i2s_packet2; + i2s_packet2.ucCommand = eCMD_AUDIO_I2S_DATA_START; + i2s_packet2.ucSrc = 6; + + BaseType_t xHigherPriorityTaskWoken = pdFALSE; + + if(xQueueSendFromISR( xHandleQueueAEC, &i2s_packet2, &xHigherPriorityTaskWoken ) != pdPASS ) + { + printf("Error Sending AEC Enable message \n"); + } + + portYIELD_FROM_ISR( xHigherPriorityTaskWoken ); + +} + +#if 0 +void cb_notify_i2sRx_disable_intr_from_FPGA(void) +{ + struct xQ_Packet i2s_packet; + i2s_packet.ucCommand = eCMD_AUDIO_I2S_DATA_STOP; + i2s_packet.ucSrc = 6; + if( xQueueSend(xHandleQueueAEC, &i2s_packet, 0) != pdPASS ) + { + //printf("%s : xQueueSendFromISR Fail \r\n", __func__); + } +} +#endif +void cb_notify_i2sRx_intr_from_FPGA(void) +{ + struct xQ_Packet i2s_packet; + /* Disable the IRQ to stop getting interrupts from the I2S CLK */ + i2s_packet.ucCommand = eCMD_AUDIO_I2S_DATA_START; + i2s_packet.ucSrc = 6; + if( xQueueSend(xHandleQueueAEC, &i2s_packet, 0 ) != pdPASS ) + { + //printf("%s : xQueueSendFromISR Fail \r\n", __func__); + } +} + +void service_i2s_intr_from_host(void) +{ + cb_notify_i2sRx_enable_intr_from_FPGA_ISR(); +} + +#endif //#ifdef AEC_ENABLED diff --git a/qf_vr_apps/qf_vr_aec_app/src/ql_vr_app.c b/qf_vr_apps/qf_vr_aec_app/src/ql_vr_app.c new file mode 100644 index 00000000..c3845eac --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/ql_vr_app.c @@ -0,0 +1,534 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : ql_vr_app.c + * Purpose: application code which sets the drivers and associated processing + * for voice recognition application. + * + *=========================================================*/ + +/** @file ql_vr_app.c */ + +#include "Fw_global_config.h" +#include +#include +#include +#include "datablk_mgr.h" +#include "datablk_processor.h" +#include "process_ids.h" +#include "ql_util.h" +#include "leds.h" + + +#include "ql_audio_preproc.h" + +#include "ql_vr_common.h" +//#include "ql_vr_rdsp.h" +#include "ql_i2stx_pe.h" + +#include "audio_encode_opus.h" + + +#include "audio_circularbuffer.h" +#include "audio_stereo2mono.h" + +#include "eoss3_hal_audio.h" +#include "host_interface.h" +#include "dbg_uart.h" +#include "RtosTask.h" +#include "ql_controlTask.h" +#include "dbg_queue_monitor.h" +#include "ww_metadata.h" +#include "ql_audio.h" + +//from ql_vr.c +extern void set_VR_status(uint8_t enable_flag); + + +/** @addtogroup QL_SMART_REMOTE_APP QuickAI SDK Audio smart remote example + * + * @brief Smart remote application code + * This example demonstrates VR engine which works with QL QuickAI framework. + * (\ref THREAD_QL_VR_PROCESS) is provided in this example. + * + * @{ + */ +/* + design policies, within datablock framework: + 1. there are following processing blocks + - pre-process one from this set {bypass, dspc-1mic, cons-ns} consumer and producer + - vr no only rdsp (consumer only) + - i2s output + 2. all processing blocks are running are in one thread. and one block in one pe + 3. there is only one data Block Mem Pool (dma_buffer) and hence only one FreeQ + 4. the task name is THREAD_QL_AUDIO_PROCESS + 5. the THREAD_QL_AUDIO_PROCESS has an inQ with name q_id_inQ_audio_processing + 6. the pre-process produces output, the produced pBuffInfo is pushed to front of the Q + 7. the vr, takes pBuffInfo from the top of the Q and hence get the latest output from pre-proc + +*/ +#if (FEATURE_MULTI_CHANNEL_STREAM_DEVICE == 1) +//we use the same datablocks to store multichannel data interspersed +//#define NUM_AUDIO_BRICKS (2*120)//(3*120) +#define NUM_AUDIO_BRICKS (50) +#else +#define NUM_AUDIO_BRICKS (120) +#endif +#if QL_XPORT_INCLUDE_HEADER == 0 +#define AUDIO_BRICK_SIZE_SAMPLES (AUDIO_BLOCK_SIZE_IN_SAMPLES) +#else +#define AUDIO_BRICK_SIZE_SAMPLES ((AUDIO_BLOCK_SIZE_IN_SAMPLES) + sizeof(QAI_DataBlockHeader_t)/sizeof(int16_t)) +#endif +#define AUDIO_BRICK_TIME_MSEC (15) + +#define THREAD_1_Q_SIZE (120) +#define THREAD_1_PRIORITY ((unsigned)(PRIORITY_NORMAL)) +#define THREAD_1_STACK_DEPTH (3*256) // 3K bytes + +typedef struct { + QAI_DataBlockHeader_t dbHeader; + int16_t pcm_data[AUDIO_BLOCK_SIZE_IN_SAMPLES]; +} QAI_AudioBrick_t ; + + +///////////////////////////////VR PE BLOCK ///////////////////////////////////// + +#ifdef GCC_MAKE +QAI_AudioBrick_t __attribute__((section (".AUD_DMA_BUFF_LOCATION"))) dma_buffer[NUM_AUDIO_BRICKS]; +#else +#pragma default_variable_attributes = @ "AUD_DMA_BUFF_LOCATION" +QAI_AudioBrick_t dma_buffer[NUM_AUDIO_BRICKS]; +#pragma default_variable_attributes = +#endif + +QAI_DataBlockMgr_t audioBuffDataBlkMgr; + +struct st_dbm_init { + QAI_DataBlockMgr_t *pdatablk_mgr_handle; + void *pmem; + int mem_size; + int item_count; + int item_size_bytes; +} ; + +struct st_dbm_init dbm_init_table[] = +{ + {&audioBuffDataBlkMgr, (void *)dma_buffer, sizeof(dma_buffer), AUDIO_BLOCK_SIZE_IN_SAMPLES, sizeof(int16_t)}, +}; + +QueueHandle_t q_id_inQ_audio_processing; + +//////////////////////////// VR PE BLOCK ///////////////////////////////// + +void audio_ql_vr_event_handler(int pid, int event_type, void *p_event_data, int num_data_bytes); + +/* ql vr processing element functions */ +datablk_pe_funcs_t ql_vr_funcs = {datablk_pe_config_ql_vr, datablk_pe_process_ql_vr, NULL, NULL, NULL } ; + +outQ_processor_t audio_ql_vr_outq_processor = +{ + .process_func = NULL, + .p_dbm = &audioBuffDataBlkMgr, + .in_pid = AUDIO_QL_VR_PID, + .outQ_num = 0, + .outQ = NULL, + .p_event_notifier = audio_ql_vr_event_handler +}; + +//////////////////////////// PRE-PROC PE BLOCK ///////////////////////////////// + +void audio_ql_pre_proc_event_handler(int pid, int event_type, void *p_event_data, int num_data_bytes); + +/* ql pre-proc processing element functions */ +datablk_pe_funcs_t ql_pre_proc_funcs = {datablk_pe_config_ql_pre_process, datablk_pe_process_ql_pre_process, NULL, NULL, NULL } ; + +/* Audio PDM capture ISR */ +#define AUDIO_PRE_PROC_OUTQS_NUM (1) + +QueueHandle_t *audio_pre_proc_outQs[AUDIO_PRE_PROC_OUTQS_NUM] = { &q_id_inQ_audio_processing}; + +outQ_processor_t audio_ql_pre_proc_outq_processor = +{ + .process_func = NULL, + .p_dbm = &audioBuffDataBlkMgr, + .in_pid = AUDIO_QL_PRE_PROC_PID, + .outQ_num = AUDIO_PRE_PROC_OUTQS_NUM, + .outQ = audio_pre_proc_outQs, + .p_event_notifier = audio_ql_vr_event_handler +}; + +//////////////////////////// Audio Circular Buffer PE BLOCK ///////////////////////////////// +extern void audio_circularbuffer_processor(QAI_DataBlock_t *pIn,QAI_DataBlock_t *pOut,QAI_DataBlock_t **pRet,datablk_pe_event_notifier_t *pevent_notifier); +extern void audio_circularbuffer_config(void *p_pe_object); + +/* Circular Buffer processing element functions */ +datablk_pe_funcs_t ql_audio_cirBuf_funcs = {NULL, audio_circularbuffer_processor, NULL, NULL, NULL }; + + +outQ_processor_t audio_ql_cirBuf_outq_processor = +{ + .process_func = NULL, + .p_dbm = &audioBuffDataBlkMgr, + .in_pid = AUDIO_CIRCULAR_BUFFER_PID, + .outQ_num = 0, + .outQ = NULL, + .p_event_notifier = NULL +}; + +// Configure Circular Buffer +// Opus: enable_transmit_audiobuffer(ql_cbuf_transmit_callback_audio_enc, OPUS_BUFFER_IN_SZ/AUDIO_BLOCK_SIZE_IN_SAMPLES, CIRCULARBUFFER_TRANSMIT_MODE_NO_RELEASE); +// Raw: enable_transmit_audiobuffer(ql_cbuf_transmit_callback_audio_raw, 2, CIRCULARBUFFER_TRANSMIT_MODE_NO_RELEASE +struct CircularBuffer_ConfigData CircularBuffer_FSMConfigData = { + // How many buffers to hold +#if (FEATURE_MULTI_CHANNEL_STREAM_DEVICE == 1) + .hold_count = 40, // we do not need much in the circular buffer +#else + .hold_count = 80, // This is the num we want saved -- should be enough to hold to start of KWD +#endif + // Parameters for enable_transmit_audiobuffer + .transmit_callback = NULL, + .transmit_count = 0, + .e_mode = CIRCULARBUFFER_TRANSMIT_MODE_NO_RELEASE, + // Parameters for enable_output2Q_audiobuffer + .outQ_handle = &q_id_inQ_hif, + .out_count = 4, + .queue_mode = CIRCULARBUFFER_OUTQ_MODE_BACK +}; + + +void audio_signal_flow_switch(int mode) +{ + switch(mode) + { + case 0: + break; + + case 3: + break; + + default: + dbg_str_int("audio_signal_flow_switch, Unsupported mode ", mode); + } +} + +datablk_pe_descriptor_t datablk_pe_descr_audio[] = +{ +/* processing element descriptor for pre-processing */ +/* in_id out_id fActive fSupplyOut fReleaseIn poutq_processor pe_funcs pe_bypass_func p_pe_sem */ +/* AEC */ { AUDIO_ISR_PID, AUDIO_QL_PRE_PROC_PID, true, true, true, &audio_ql_pre_proc_outq_processor, &ql_pre_proc_funcs, NULL, &ql_pre_proc_sem }, +/* VR */ { AUDIO_QL_PRE_PROC_PID, AUDIO_QL_VR_PID, true, false, true, &audio_ql_vr_outq_processor, &ql_vr_funcs, NULL, &ql_vr_sem }, +/*CirBuf*/ { AUDIO_QL_PRE_PROC_PID, AUDIO_CIRCULAR_BUFFER_PID, true, false, false, &audio_ql_cirBuf_outq_processor, &ql_audio_cirBuf_funcs, NULL, NULL}, +}; + +/* both PRE_PROC and VR in same thread */ +datablk_processor_params_t datablk_processor_params[] = { + + { THREAD_1_PRIORITY, &q_id_inQ_audio_processing, sizeof(datablk_pe_descr_audio)/sizeof(datablk_pe_descr_audio[0]), datablk_pe_descr_audio, THREAD_1_STACK_DEPTH, "THREAD_QL_AUDIO_PROCESS", NULL}, + +}; + +/* Audio PDM capture ISR */ +#define AUDIO_ISR_OUTQS_NUM (1) + +QueueHandle_t *audio_isr_outQs[AUDIO_ISR_OUTQS_NUM] = { &q_id_inQ_audio_processing}; + +extern void audio_isr_onDmac0BufferDone(void); +outQ_processor_t audio_isr_outq_processor = +{ + .process_func = audio_isr_onDmac0BufferDone, + .p_dbm = &audioBuffDataBlkMgr, + .in_pid = AUDIO_ISR_PID, + .outQ_num = AUDIO_ISR_OUTQS_NUM, + .outQ = audio_isr_outQs, + .p_event_notifier = NULL +}; + +void ql_smart_remote_example(void) +{ + /** Create Audio Queues */ + q_id_inQ_audio_processing = xQueueCreate(THREAD_1_Q_SIZE, sizeof(QAI_DataBlock_t *)); + vQueueAddToRegistry(q_id_inQ_audio_processing, "q_id_inQ_audio_processing"); + memset(dma_buffer, 0, sizeof(dma_buffer)); + /** Setup the data block manager */ + for (int k = 0; k < sizeof(dbm_init_table)/sizeof(struct st_dbm_init); k++) { + datablk_mgr_init( dbm_init_table[k].pdatablk_mgr_handle, + dbm_init_table[k].pmem, + dbm_init_table[k].mem_size, + dbm_init_table[k].item_count, + dbm_init_table[k].item_size_bytes + ); + dbg_queue_monitor_add(dbm_init_table[k].pdatablk_mgr_handle->dataBlockFreeQ); + vQueueAddToRegistry( dbm_init_table[k].pdatablk_mgr_handle->dataBlockFreeQ, "DataBlockFreeQ" ); + } + + /** Setup Audio Thread Handler Processing Elements */ + datablk_processor_task_setup(&datablk_processor_params[0]); + + //TIM +// /* must set the hold count first to be able to use the circular buffer */ +// set_audiobuffer_hold_count(NUM_AUDIO_BRICKS, 0); +// +// cbuff_audio_flow_disable(); + +} + +//TIM +//#if ENABLE_LPSD +//uint8_t lpsd_state = 1; +//#else +//uint8_t lpsd_state = 0; +//#endif +//void enable_lpsd_state(uint8_t val) +//{ +// lpsd_state = val; +// if(1 == val) +// HAL_Audio_Set_LPSDMode(1); +// else +// HAL_Audio_Set_LPSDMode(0); +//} + +uint8_t frr_test_status = 0; + +//TIM +///* Set OPUS status to active/disable. +// 1- enable, 0 - disable. +// */ +//void set_audio_status(uint8_t val) +//{ +// if(val == 0) // Disable OPUS +// { +// cbuff_audio_flow_disable(); +// set_VR_status(1); +// HAL_Audio_Set_LPSDMode(lpsd_state); +// } +// else // Enable OPUS +// { +// frr_test_status = 0; +// set_VR_status(0); // Before enabling OPUS, Disable/Bypass VR process. +// lpsd_state = 0; +// HAL_Audio_Set_LPSDMode(0); +// +// cbuff_audio_flow_enable(); +// +// } +//} + +//TIM +//void enable_VR_continuous(uint8_t val) +//{ +// if(1 == val) +// { +// //Enable FRR test +// frr_test_status = 1; +// set_audio_status(0); //Diable OPUS, if it is enabled already +// } +// else +// { +// // Disable FRR test +// frr_test_status = 0; +// set_audio_status(0); //reset OPUS state. Will be enabled again, after next KPD +// } +//} + +#if PRINT_VR_STATISTICS == 1 +float ave_score = 0; +int ave_count = 0; +#endif + +t_ql_audio_meta_data o_ql_audio_meta_data = { 0, -1, -1, -1, 0 }; +int kp_detection_count = 1; +void audio_ql_vr_event_handler(int pid, int event_type, void *p_event_data, int num_data_bytes) +{ + + ql_vr_event_data_t *p_ql_vr_evt = (ql_vr_event_data_t *)p_event_data; + // Wait on AudioSysQ handle + if (pid != AUDIO_QL_VR_PID) + return; +#if AUDIO_LED_TEST + LedOrangeOn_AutoOff(); +#endif + uint32_t timestamp=xTaskGetTickCount(); + + if (isStreamingOn()) + dbg_str_int_noln("\n RESULT : STREAMING ON KP ", kp_detection_count++); + else + dbg_str_int_noln("\n RESULT : KP ", kp_detection_count++); + dbg_str_int_noln(" VR EVT at ", timestamp); + //dbg_str_int_noln(" idx ", 0); + dbg_str_str_nonl(" keyword ", p_ql_vr_evt->p_phrase_text); + dbg_str_int_noln(" score ", p_ql_vr_evt->score); + dbg_str_int(" offset ", p_ql_vr_evt->startFramesBack); + + +#if PRINT_VR_STATISTICS == 1 + ave_score += p_ql_vr_evt->score; + ave_count++; + if(ave_count == 10) + { + ave_score /= ave_count; + dbg_str_int("ave_score ", (int)ave_score); + ave_count = 0; + ave_score = 0; + } +#endif + /* If frr test status is enabled, return immediately */ + if(frr_test_status) + return; + + //if streaming is going on, then the message directly goes to HIF task + if (isStreamingOn()) + { + o_ql_audio_meta_data.n_length_estimate = p_ql_vr_evt->startFramesBack; + o_ql_audio_meta_data.a_keyphrase_score = p_ql_vr_evt->score; + o_ql_audio_meta_data.n_keyphrase_triggered_index = p_ql_vr_evt->len_phrase_text; + o_ql_audio_meta_data.n_keyphrase_end_index = p_ql_vr_evt->startFramesBack; + + hif_msg_send_streamKPDetected(); + return; + } + + /* compute the number of blocks to keep in the ciruclar based the info */ + /* Note: should replace 240 by a define of number of samples per block */ + int num_blocks = ((p_ql_vr_evt->startFramesBack + AUDIO_BLOCK_SIZE_IN_SAMPLES - 1)/AUDIO_BLOCK_SIZE_IN_SAMPLES) + PRE_TEXT_BEFORE_KEY_PHRASE; + /* keep at least 1 sec worth of blocks */ + /* now NUM_AUDIO_BRICKS - MIN_AUDIO_SAVE_BLOCKS_SPARE_SIZE */ + int max_blocks_to_keep = NUM_AUDIO_BRICKS - MIN_AUDIO_SAVE_BLOCKS_SPARE_SIZE; + num_blocks = num_blocks < max_blocks_to_keep ? num_blocks : max_blocks_to_keep; + num_blocks = truncate_audio_circularbuffer(num_blocks); + + o_ql_audio_meta_data.n_keyphrase_count++; + o_ql_audio_meta_data.a_keyphrase_score = p_ql_vr_evt->score; + o_ql_audio_meta_data.n_keyphrase_end_index = num_blocks * AUDIO_BLOCK_SIZE_IN_SAMPLES; + o_ql_audio_meta_data.n_keyphrase_start_index = o_ql_audio_meta_data.n_keyphrase_end_index + - p_ql_vr_evt->startFramesBack; + if (o_ql_audio_meta_data.n_keyphrase_start_index < 0) + o_ql_audio_meta_data.n_keyphrase_start_index = 0; + o_ql_audio_meta_data.n_keyphrase_triggered_index = p_ql_vr_evt->len_phrase_text; + o_ql_audio_meta_data.n_length_estimate = p_ql_vr_evt->startFramesBack; + //TIM + struct xCQ_Packet CQpacket; + + CQpacket.ceEvent = CEVENT_VR_TRIGGER; + addPktToControlQueue(&CQpacket); + +//#if ENABLE_HOST_IF +// if (hif_isCommunicationEnabled()) +// { +// hif_msg_sendKPDetected(); +// } +// //opus encoding postponed till host is ready. +//#else +// //set_audio_status(1); +//#endif +} + +void audio_ql_i2stx_event_handler(int pid, int event_type, void *p_event_data, int num_data_bytes) +{ + dbg_ch('*'); +} + +void ql_audio_raw_event_handler(int pid, int event_type, void *p_event_data, int num_data_bytes) +{ + dbg_ch('>'); +} + + +void audio_ql_opus_event_handler(int pid, int event_type, void *p_event_data, int num_data_bytes) +{ + dbg_ch('#'); +} + +bool raw_sendBypass = false; + +void raw_save_block2buffer(QAI_DataBlock_t *pBlock) +{ + + if(!raw_sendBypass) + { + hif_tx_buffer_addSamples((int16_t *)pBlock->p_data, pBlock->dbHeader.numDataElements); + } +} +#if 0 +int get_audio_block_size_samples(void) +{ + return AUDIO_BRICK_SIZE_SAMPLES; +} + +QAI_DataBlockMgr_t* get_audio_block_manager(void) +{ + return &audioBuffDataBlkMgr; +} +#endif +//TIM +void cbuff_audio_flow_enable(void) +{ + /*After VR is detected, connect circulal buffer to RAW transmit callback */ + + //TIM Moved to Opus_Start +//#if ENABLE_OPUS_ENCODER == 1 +// /* a new param is added to the transmit callback so that the Datablocks will not be cleared autmatically, instead, the unit whoc gets call back will have +// ensure the release.*/ +// enable_transmit_audiobuffer(ql_cbuf_transmit_callback_audio_enc, OPUS_BUFFER_IN_SZ/AUDIO_BLOCK_SIZE_IN_SAMPLES, CIRCULARBUFFER_TRANSMIT_MODE_NO_RELEASE); +//#else +// enable_transmit_audiobuffer(ql_cbuf_transmit_callback_audio_raw, 2, CIRCULARBUFFER_TRANSMIT_MODE_NO_RELEASE); // render at 2x +//#endif + // TIM Moved to opus_Config() + //audio_enc_config(NULL); + +} +void cbuff_audio_flow_disable(void) +{ + /* this should stop the timer */ + //stop_audio_raw_stream(); + + /* reset and release the current blocks */ + disable_audiobuffer_hold(); + /* re-enable circular buffer mode */ + enable_audiobuffer_hold(); + + +} +/*Note : +Resetting the data blk mgr directly is not a good idea. +Though it free all the block and provide them in freeQ, it does not take care of internal states of PEs. +E.g. even after datablk_mgr_reset(), audio_buffer_info state variables are still maintained at prev values which is not good. +Other way is to reset all the PEs and release the used blocks. +truncate_audio_circularbuffer -> releases the block from audio circular buffer. +release_data_block_prev-> Releases last data block acquired befor audio stop. + +This implementation is also not fool proof. As it is observed that not all the block get released in case when streaming is enabled. +Probable reason : this reset API is called before actual Stop msg is executed by Audio Task. + Thus few blocks get posted to circular buffer after this reset API is called and before Audio actually stops. + */ +void reset_audio_isr_data_blocks(void) +{ +#if 1 + datablk_mgr_reset(audio_isr_outq_processor.p_dbm); +#else + int rem_count =0; + rem_count = truncate_audio_circularbuffer(0); + if(rem_count) + { + dbg_str_int("remaining buf in CB ", rem_count ); + } + release_data_block_prev(); +#endif + + return; +} +/** @} */ diff --git a/qf_vr_apps/qf_vr_aec_app/src/ql_vr_pe_generic.c b/qf_vr_apps/qf_vr_aec_app/src/ql_vr_pe_generic.c new file mode 100644 index 00000000..7dfad6b9 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/ql_vr_pe_generic.c @@ -0,0 +1,225 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +#include +#include +#include +#include "datablk_processor.h" +#include "ql_vr_common.h" +#include "ql_util.h" +#include "process_ids.h" +#include "ql_controlTask.h" +#include "ql_audio.h" +#include "string.h" +#include "vr_engine_api.h" + +int ww_detected = 0; +int ww_size = 0; +int ww_confidence = 0; +char ww_keyword[20] = { 0 }; +static int vr_engine_samples_per_frame = 240; +//******************************** +// QuickLogic wrapper code + +static bool fVRenabled = false; // Tells VR whether to process or ignore data +SemaphoreHandle_t ql_vr_sem; ///< Semaphore specific to QL VR functions +/** QL VR event data */ +static ql_vr_event_data_t ql_vr_event_data ; + +#define SAVE_DEBUG_BUF_ENABLE (0) // 1=enable if want to save first 1sec of VR buffer +#if (SAVE_DEBUG_BUF_ENABLE == 1) +#define AUDSIZE 8*4096 +uint8_t acAudio[AUDSIZE]; +uint8_t* pcAudio = acAudio; +#endif + +/********************************************************************************* + * + * VR-FSM interface + * + ********************************************************************************/ +enum process_state VR_pstate = PSTATE_UNCONFIG; +int VR_FSMConfigData = 50; + +enum process_state VR_FSMAction(enum process_action pa, void* parg) { + + switch(pa) { + case PACTION_CONFIG: + VR_pstate = PSTATE_STOPPED; + break; + + case PACTION_STOP: + fVRenabled = false; // Tells vr to ignore incomming datablks + VR_pstate = PSTATE_STOPPED; + break; + + case PACTION_START: +#if (SAVE_DEBUG_BUF_ENABLE == 1) + pcAudio = acAudio; //TIM Debug: start over on WOS +#endif + fVRenabled = true; // Tells vr to process incomming datablks + VR_pstate = PSTATE_STARTED; + break; + default: + configASSERT(0); + } + return(VR_pstate); +} +//after ~2secs of stream data, restart VR +void enable_stream_VR(void) +{ + fVRenabled = true; // Tells vr to process incomming datablks +} +//during first ~2secs of stream data, disable VR +void disable_stream_VR(void) +{ + fVRenabled = false; // Tells vr to ignore incomming datablks +} +int get_fvRenabled(void) +{ + return (int)fVRenabled; +} +void datablk_pe_config_ql_vr(void *p_pe_object) +{ + ql_vr_sem = xSemaphoreCreateBinary( ); + + /* Initialize specific voice recognition engine used */ + vr_engine_init(); + /* set the samples-per-frame for the specific voice recognition used */ + vr_engine_samples_per_frame = vr_engine_get_samples_per_frame(); + + xSemaphoreGive(ql_vr_sem); + + return ; +} + +static int16_t a_audio_brick[240]; +static int16_t a_last_buff_tail[240]; +static uint32_t p_last_buff_tail_sz = 0; +//void vr_rdsp_clear_static_mem() +void vr_clear_static_mem() +{ + p_last_buff_tail_sz = 0; +} + +static int vr_frame_sz_adapter(uint16_t *p_buffer, uint32_t num_samples, int16_t *p_brick, uint32_t n_size) +{ + uint16_t *paudio_brick = p_buffer; + uint32_t samples_idx = 0; + uint32_t new_tail = 0; + + for(int i = 0; i < p_last_buff_tail_sz; i++) + { + p_brick[samples_idx++] = a_last_buff_tail[i]; + } + + for(int i = 0; i < n_size - p_last_buff_tail_sz; i++) + { + p_brick[samples_idx++] = paudio_brick[i]; + } + + for(int i = n_size - p_last_buff_tail_sz; i < num_samples; i++) + { + a_last_buff_tail[new_tail++] = paudio_brick[i]; + } + + p_last_buff_tail_sz = new_tail; + + return p_last_buff_tail_sz; +} +extern void set_signal_detect_state(int state); +extern int host_i2s_enabled; +extern int aec_vr_process_count; +extern int aec_vr_process_count2; +static uint32_t vr_cycle_count_buf[20]; +static int vr_cycle_counter = 0; +void datablk_pe_process_ql_vr(QAI_DataBlock_t *pIn, QAI_DataBlock_t *pOut, QAI_DataBlock_t **pRet, + void (*p_event_notifier)(int pid, int event_type, void *p_event_data, int num_data_bytes)) +{ + e_ql_vr_status ret; + +#if (SAVE_DEBUG_BUF_ENABLE == 1) + int k = pIn->dbHeader.numDataElements * pIn->dbHeader.dataElementSize; + uint8_t* p2 = pIn->p_data; + for (int i = 0; i != k; i++) { + *pcAudio++ = *p2++; + if (pcAudio == &acAudio[AUDSIZE]) + pcAudio = acAudio+AUDSIZE-1; // Overwrite last sample + } +#endif +uint32_t vr_dwt_start_count = get_timer(); +aec_vr_process_count2++; + + //Note:if VR Amazon is enabled, it takes ~28Mips, which combined with + //Consilient AEC (~51Mips) will exceed the processor Mips + //Hence during I2S data enabled from Host, disable VR + if(host_i2s_enabled) + return; + + if(!fVRenabled) // If VR is disabled, bypass VR process and return. + return; +aec_vr_process_count++; + uint32_t ksamplesNew = pIn->dbHeader.numDataElements/pIn->dbHeader.numDataChannels; + while(1) + { + uint32_t balance_samples = vr_frame_sz_adapter((uint16_t*)pIn->p_data, ksamplesNew, &a_audio_brick[0], vr_engine_samples_per_frame); + + ret = vr_engine_process((short*)&a_audio_brick[0]); + + if ( ret == e_ql_vr_status_detection_ok) { + //indicate that Alexa is detected to AEC + set_signal_detect_state(1); +//printf("Time0=%d %d***\n",xTaskGetTickCount(),S3x_Clkd_Get_Cpu_Rate()); + vr_clear_static_mem(); + disable_stream_VR(); //disable VR automatically + ql_vr_event_data.startFramesBack = ww_size; // a frame is a sample ? + ql_vr_event_data.score = ww_confidence; + ql_vr_event_data.p_phrase_text = ww_keyword; // phrase text + ql_vr_event_data.len_phrase_text = strlen(ww_keyword); + if (p_event_notifier) { + (*p_event_notifier)(AUDIO_QL_VR_PID, 0, &ql_vr_event_data, sizeof(ql_vr_event_data)); + } + break; //do not process any more + } else if (ret != 0) { + dbg_str_int("ql_vr_process ret ", ret); + } + + if(balance_samples < vr_engine_samples_per_frame) + { + break; + } + else + { + ksamplesNew = 0; + } + } +#if 0 +vr_cycle_count_buf[vr_cycle_counter++] = get_timer() - vr_dwt_start_count; +if(vr_cycle_counter >= 20) +{ + vr_cycle_counter = 0; + uint32_t sum = 0; + for(int i = 0;i <20; i++) + sum += vr_cycle_count_buf[i]; + sum = (sum*10)/(1*3); + printf("-vr cyc %d-", sum); +} +#endif + return ; +} + + + diff --git a/qf_vr_apps/qf_vr_aec_app/src/s3x_pwrcfg.c b/qf_vr_apps/qf_vr_aec_app/src/s3x_pwrcfg.c new file mode 100644 index 00000000..a8c306ce --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/s3x_pwrcfg.c @@ -0,0 +1,371 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : s3x_pwrcfg.c + * Purpose: + * + *=========================================================*/ + +#include "Fw_global_config.h" +#include "s3x_clock.h" +#include "eoss3_hal_audio.h" +#include "s3x_dfs.h" +#include "s3x_pi.h" + +UINT8_t S3clkd_size, S3_dfs_max_index; + +S3x_ClkD S3clk [] = { + [CLK_C10] = { + .name = "C10", + .clkd_id = CLK_C10, + .type = SRC_CLK, + .sync_clk = SYNC_CLKD(2, CLK_C01, CLK_C09), + .cru_ctrl = CRU_CTRL(0x0, 0x1fe, 9, 0x4, 0x50, 0x7f, 0), + .flags = HW_GATED, + .def_max_rate = HSOSC_DEF_RATE, + .init_state = INIT_STATE(HSOSC_48MHZ, 0x5f, INIT_GATE_ON), + }, + [CLK_C02] = { + .name = "C2", + .clkd_id = CLK_C02, + .type = SRC_CLK , + .sync_clk = SYNC_CLKD (0, 0, 0), + .cru_ctrl = CRU_CTRL (0x8, 0x1fe, 9, 0x130, 0x44, 0x7, 1), + .def_max_rate = (HSOSC_40MHZ), + //.init_state = INIT_STATE(HSOSC_40MHZ, 7, INIT_GATE_OFF), //for SD card + //.init_state = INIT_STATE(HSOSC_6MHZ, 7, INIT_GATE_OFF), + .init_state = INIT_STATE(HSOSC_3MHZ, 7, INIT_GATE_OFF), + }, + [CLK_C08X4] = { + .name = "C8X4", + .clkd_id = CLK_C08X4, + .type = SRC_CLK, + .sync_clk = SYNC_CLKD (1, CLK_C08X1, 0), + .cru_ctrl = CRU_CTRL (0x10, 0x1fe, 9, 0x134, 0x48, 0x1, 2), + .def_max_rate = (HSOSC_40MHZ), + .init_state = INIT_STATE(HSOSC_2MHZ, 0x1, INIT_GATE_OFF), + }, + [CLK_C11] = { + .name = "C11", + .clkd_id = CLK_C11, + .type = SRC_CLK, + .sync_clk = SYNC_CLKD (0, 0, 0), + .cru_ctrl = CRU_CTRL (0x14, 0x1fe, 9, 0x138, 0x54, 0x1, 3), + .flags = LOCK_KEY, + .def_max_rate = (HSOSC_12MHZ), + .init_state = INIT_STATE(HSOSC_2MHZ, 0, INIT_GATE_OFF), + }, + [CLK_C16] = { + .name = "C16", + .clkd_id = CLK_C16, + .type = SRC_CLK, + .sync_clk = SYNC_CLKD (0, 0, 0), + .cru_ctrl = CRU_CTRL (0x20, 0x1fe, 9, 0x24, 0x64, 0x01, 5), + .def_max_rate = (HSOSC_24MHZ), + //.init_state = INIT_STATE(HSOSC_18MHZ, 1, INIT_GATE_ON), + //.init_state = INIT_STATE(HSOSC_6MHZ, 1, INIT_GATE_OFF), + .init_state = INIT_STATE(HSOSC_256KHZ, 1, INIT_GATE_OFF), + }, + [CLK_C30] = { + .name = "C30", + .clkd_id = CLK_C30, + .type = SRC_CLK, + .sync_clk = SYNC_CLKD (1, CLK_C31, 0xFF), + .cru_ctrl = CRU_CTRL (0x28, 0x1fe, 9, 0x144, 0x120, 0xF, 6), + .def_max_rate = (HSOSC_6MHZ), + .init_state = INIT_STATE(PDM2PCM_CLK_C30, 5, INIT_GATE_OFF), + + }, + [CLK_C19] = { + .name = "C19", + .clkd_id = CLK_C19, + .type = SRC_CLK, + .sync_clk = SYNC_CLKD (0, 0, 0), + .cru_ctrl = CRU_CTRL (0x2c, 0x1fe, 9, 0x13c, 0x6c, 0x1, 7), + .def_max_rate = (HSOSC_1MHZ), + //.init_state = INIT_STATE(HSOSC_1MHZ, 1, INIT_GATE_OFF), + .init_state = INIT_STATE(HSOSC_256KHZ/4, 1, INIT_GATE_OFF), + }, + [CLK_C21] = { + .name = "C21", + .clkd_id = CLK_C21, + .type = SRC_CLK, + .sync_clk = SYNC_CLKD (0, 0, 0), + .cru_ctrl = CRU_CTRL (0x34, 0x1fe, 9, 0x38, 0x70, 0x1, 8), + .def_max_rate = (10 * MHZ), + //.init_state = INIT_STATE(HSOSC_3MHZ, 1, INIT_GATE_OFF), + .init_state = INIT_STATE(HSOSC_256KHZ, 1, INIT_GATE_OFF), + }, + [CLK_C01] = { + .name = "C1", + .clkd_id = CLK_C01, + .type = SD_CLK, + .sync_clk = SRC_DOMAIN (CLK_C10), + .cru_ctrl = CRU_CTRL (0x110, 0xf, 4, 0, 0x40, 0x2ff, 4), + .def_max_rate = (HSOSC_10MHZ), + //.init_state = INIT_STATE(C01_N0_CLK, 0x01, INIT_GATE_ON), + .init_state = INIT_STATE(HSOSC_10MHZ, 0x01, INIT_GATE_ON), //AHB bus at max for SD card + }, + [CLK_C08X1] = { + .name = "C8x", + .clkd_id = CLK_C08X1, + .type = FD_CLK, + .div_val = 4, + .sync_clk = SRC_DOMAIN (CLK_C08X4), + .cru_ctrl = CRU_CTRL (0, 4, 0, 0, 0x4c, 0xd, 2), + .def_max_rate = (HSOSC_12MHZ), + //.init_state = INIT_STATE(HSOSC_3MHZ, 8, INIT_GATE_OFF), + .init_state = INIT_STATE(HSOSC_256KHZ, 8, INIT_GATE_OFF), + }, + [CLK_C09] = { + .name = "C9", + .clkd_id = CLK_C09, + .type = SD_CLK, + .sync_clk = SRC_DOMAIN (CLK_C10), + .cru_ctrl = CRU_CTRL (0x114, 0xf, 4, 0, 0x11c, 0x7, 4), + .def_max_rate = (HSOSC_10MHZ), + .init_state = INIT_STATE(HSOSC_6MHZ, 1, INIT_GATE_ON), + }, + [CLK_C31] = { + .name = "C31", + .clkd_id = CLK_C31, + .type = SD_CLK, + .sync_clk = SRC_DOMAIN (CLK_C30), + .cru_ctrl = CRU_CTRL (0x118, 0xf, 4, 0, 0x120, 0xF , 4), + .def_max_rate = (HSOSC_10MHZ), //1 Mhz + .init_state = INIT_STATE(PDM2PCM_CLK_C31 , 8, INIT_GATE_OFF), + }, +}; + +S3x_Pi S3Pi [] = { + [PI_A1] = { + .name = "A1", + .pctrl = PI_CTRL(0xd0, 0xd4, 0x208 , 0x218, 1, 0x40, 0x40 ), + .ginfo = PI_GINFO(2, S3X_CFG_DMA_A1_CLK, S3X_A1_CLK, 0 , 0, 0), + .cfg_state = PI_SET_SHDN, + }, + [PI_I2S] = { + .name = "I2S_S", + .pctrl = PI_CTRL(0xe0, 0, 0x208, 0x218, 0x10, 0x20, 0x20), + .ginfo = PI_GINFO(1, S3X_I2S_A1_CLK, 0, 0 , 0, 0), + .cfg_state = PI_SET_SHDN, + }, + [PI_EFUSE] = { + .name = "EFUSE", + .pctrl = PI_CTRL(0xe0, 0, 0x208, 0x218, 0x4, 0x4, 0x4), + .ginfo = PI_GINFO(2, S3X_EFUSE_01_CLK, S3X_EFUSE_02_CLK, 0, 0, 0), + .cfg_state = PI_SET_SHDN, + }, + [PI_FFE] = { + .name = "FFE", + .pctrl = PI_CTRL(0x90, 0x94, 0x200, 0x210, 1, 1, 1), + .ginfo = PI_GINFO(3, S3X_FFE_X4_CLK, S3X_FFE_X1_CLK, S3X_FFE_CLK, 0, 0), + .cfg_state = PI_SET_SHDN, + }, + [PI_PF] = { + .name = "PF", + .pctrl = PI_CTRL(0xb0, 0xb4, 0x200, 0x210, 1, 4, 4), + .ginfo = PI_GINFO(2, S3X_PKT_FIFO_CLK, S3X_ASYNC_FIFO_0_CLK, 0, 0, 0), + .cfg_state = PI_SET_SHDN, + }, + [PI_FB] = { + .name = "FB", + .pctrl = PI_CTRL(0xa0, 0xa4, 0x200, 0x210, 1, 2, 2), + .ginfo = PI_GINFO(4, S3X_FB_02_CLK, S3X_FB_16_CLK, S3X_FB_21_CLK , S3X_CLKGATE_FB, 0), + .cfg_state = PI_SET_SHDN, + }, + + [PI_AD0_ADMA] = { + .name = "AD_DMA", + .pctrl = PI_CTRL(0xE4, 0, 0x20c, 0x21c, 0x1, 0x1, 0x1), + .ginfo = PI_GINFO(1, S3X_AUDIO_DMA_CLK, 0, 0, 0, 0), + .cfg_state = PI_SET_SHDN, + }, + [PI_AD1_LEFT] = { + .name = "AD_L", + .pctrl = PI_CTRL(0xE4, 0, 0x20c, 0x21c, 0x2, 0x2, 0xa), + .ginfo = PI_GINFO(1, S3X_PDM_LEFT, 0, 0, 0, 0), + .cfg_state = PI_SET_SHDN, + }, + [PI_AD2_RIGHT] = { + .name = "AD_R", + .pctrl = PI_CTRL(0xE4, 0, 0x20c, 0x21c, 0x4, 0x4, 0x4), + .ginfo = PI_GINFO(1, S3X_PDM_RIGHT, 0, 0, 0, 0), + .cfg_state = PI_SET_SHDN, + }, + [PI_AD3_LPSD] = { + .name = "AD_LPSD", + .pctrl = PI_CTRL(0xE4, 0, 0x20c, 0x21c, 0x8, 0x8, 0x8), + .ginfo = PI_GINFO(1, S3X_LPSD, 0, 0, 0, 0), + .cfg_state = PI_SET_SHDN, + }, + [PI_AD4_I2SM] = { + .name = "AD_I2SM", + .pctrl = PI_CTRL(0xE4, 0, 0x20c, 0x21c, 0x10, 0x10, 0x10), + .ginfo = PI_GINFO(1, S3X_I2S_MASTER, 0, 0, 0, 0), + .cfg_state = PI_SET_SHDN, + }, + [PI_AD5_APB] = { + .name = "AD_APB", + .pctrl = PI_CTRL(0xE4, 0, 0x20c, 0x21c, 0x20, 0x20, 0x20), + .ginfo = PI_GINFO(1, S3X_AUDIO_APB, 0, 0, 0, 0), + .cfg_state = PI_SET_SHDN, + }, +// [PI_AD] = { +// .name = "AD", +// .pctrl = PI_CTRL(0xE4, 0, 0x20c, 0x21c, 0x2a, 0x2a, 0x2a), +// .ginfo = PI_GINFO(3, S3X_PDM_LEFT, S3X_LPSD, S3X_AUDIO_APB, 0, 0), +// .cfg_state = PI_SET_SHDN, +// }, + [PI_SDMA] = { + .name = "SDMA", + .pctrl = PI_CTRL(0x70, 0x74, 0x208, 0x218, 1, 1, 1), + .ginfo = PI_GINFO(2, S3X_SDMA_SRAM_CLK, S3X_SDMA_CLK, 0, 0, 0), + .cfg_state = PI_SET_SHDN, + }, + + +}; +uint8_t policyInitial = 1; // Policy value to start with +S3x_Policy_Node dfs_node[] = { +/* 0th Policy is only for lpm not for run mode */ + [0] = { // WOS Sleep + .clk_domain = {CLK_C01, CLK_C09, CLK_C10, CLK_C08X4}, + //.rate = {FREQ_3MHZ, FREQ_3MHZ, FREQ_3MHZ, FREQ_256KHZ}, + .rate = {FREQ_3MHZ, FREQ_3MHZ, FREQ_12MHZ, FREQ_256KHZ}, + .step_width = 800,/* msec */ + .cpuload_downthreshold = 0, + .policySleep = 0xFF, // WOS Sleep policy -- shoudl already be sleeping + .minHSOSC = FREQ_12MHZ, //FREQ_3MHZ, + }, + + [1] = { // WOS Active + .clk_domain = {CLK_C01, CLK_C09, CLK_C10, CLK_C08X4}, + //.rate = {FREQ_3MHZ, FREQ_3MHZ, FREQ_3MHZ, FREQ_256KHZ}, + .rate = {FREQ_3MHZ, FREQ_3MHZ, FREQ_12MHZ, FREQ_256KHZ}, + .step_width = 100,/* msec */ + .cpuload_downthreshold = 0, + .policySleep = 0, // Deep sleep: go to node 0 + .minHSOSC = FREQ_12MHZ, //FREQ_3MHZ, + }, + + [2] = { // LPSD Sleep + .clk_domain = {CLK_C01, CLK_C09, CLK_C10, CLK_C08X4}, + //.rate = {FREQ_3MHZ, FREQ_3MHZ, FREQ_3MHZ, FREQ_256KHZ}, + .rate = {FREQ_3MHZ, FREQ_3MHZ, FREQ_12MHZ, FREQ_256KHZ}, + .step_width = 100,/* msec */ + .cpuload_downthreshold = 0, + .policySleep = 0xFF, // LPSD Sleep policy -- should already be sleeping + .minHSOSC = FREQ_12MHZ, + }, + + [3] = { // LPSD Active + .clk_domain = {CLK_C01, CLK_C09, CLK_C10, CLK_C08X4}, + .rate = {FREQ_3MHZ, FREQ_3MHZ, FREQ_12MHZ, FREQ_256KHZ}, + .step_width = 100,/* msec */ + .cpuload_downthreshold = 0, + .policySleep = 2, // Deep sleep: switch to policy 2 when sleeping + .minHSOSC = FREQ_12MHZ, + }, + + [4] = { // WOK Min + .clk_domain = {CLK_C01, CLK_C09, CLK_C10, CLK_C08X4}, +#if 1 //(AEC_ENABLED == 1) + .rate = {FREQ_3MHZ, FREQ_3MHZ, FREQ_48MHZ, FREQ_256KHZ}, + //.rate = {FREQ_6MHZ, FREQ_3MHZ, FREQ_72MHZ, FREQ_256KHZ}, + //.rate = {FREQ_6MHZ, FREQ_3MHZ, FREQ_60MHZ, FREQ_256KHZ}, +#else + .rate = {FREQ_3MHZ, FREQ_3MHZ, FREQ_24MHZ, FREQ_256KHZ}, +#endif + .step_width = 50,/* msec */ + .cpuload_downthreshold = 60, + .policySleep = 0xFF, // Light sleep, just stay at this policy + .minHSOSC = FREQ_48MHZ, + }, + + [5] = { + .clk_domain = {CLK_C01, CLK_C09, CLK_C10, CLK_C08X4}, +#if 1 //(AEC_ENABLED == 1) + .rate = {FREQ_6MHZ, FREQ_3MHZ, FREQ_60MHZ, FREQ_256KHZ}, +#else + .rate = {FREQ_6MHZ, FREQ_3MHZ, FREQ_36MHZ, FREQ_256KHZ}, +#endif + .step_width = 100,/* msec */ + .cpuload_downthreshold = 60, + .policySleep = 0xFF, // Light sleep, just stay at this policy + .minHSOSC = FREQ_60MHZ, + }, + + [6] = { + .clk_domain = {CLK_C01, CLK_C09, CLK_C10, CLK_C08X4}, +#if 1 //(AEC_ENABLED == 1) + .rate = {FREQ_6MHZ, FREQ_3MHZ, FREQ_72MHZ, FREQ_256KHZ}, +#else + .rate = {FREQ_6MHZ, FREQ_3MHZ, FREQ_48MHZ, FREQ_256KHZ}, +#endif + .step_width = 100,/* msec */ + .cpuload_downthreshold = 65, + .policySleep = 0xFF, // Light sleep, just stay at this policy + .minHSOSC = FREQ_72MHZ, + }, +}; + +void S3x_pwrcfg_init(void) +{ + S3clkd_size = SIZEOF_ARRAY(S3clk); + S3_dfs_max_index = (SIZEOF_ARRAY(dfs_node) - 1 ); + S3x_Clk_Init(); + S3x_pi_init(); + DFS_StartTimer(); +} + +/* This value is determined from the icf and ld file. + ROM and RAM2 blocks cab be put into light sleep*/ +#define SRAM_IN_LPM_BLOCKS (0x7e3f) +static int sram_lpm_blocks = SRAM_IN_LPM_BLOCKS; + +void s3x_sram_in_lpm(void) +{ + // Bit 0 is S0 (mem addr 0x0 to 0x00007fff) and so on +#if 1 + /* LPMF */ + //PMU_WVAL(0x230, sram_lpm_blocks); + __ISB(); + /* DS RAM, Leave 3 block of HWA Section, + * 1 for SHM + */ + PMU_WVAL(0x100, sram_lpm_blocks); + __ISB(); +#endif +} + +/* This API is used to enable/disable sram in lpm + * 0 -> disables lpm for all blocks + * 1 -> enables lpm for ROM/RAM2 blocks. +*/ +void set_sram_lpm_blocks(int state) +{ + if(0 == state) /* Disable sram blocks going into lpm*/ + { + sram_lpm_blocks = 0x0; + } + else /* Enable lpm blocks going into lpm*/ + { + sram_lpm_blocks = SRAM_IN_LPM_BLOCKS; + } +} diff --git a/qf_vr_apps/qf_vr_aec_app/src/sec_debug.c b/qf_vr_apps/qf_vr_aec_app/src/sec_debug.c new file mode 100644 index 00000000..3b858310 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/sec_debug.c @@ -0,0 +1,86 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : sec_debug.c + * Purpose: + * + *=========================================================*/ + +#include "Fw_global_config.h" +#include +#include +#include "FreeRTOS.h" +#include "task.h" +#include "eoss3_dev.h" +#include "sec_debug.h" +#include "dbg_uart.h" + + +#ifdef BACKUP_REGISTER_SUPPORT +const unsigned long ulRegBackUp[16] = {0x0UL}; +#endif /* BACKUP_REGISTER_SUPPORT */ + + +#if ( configSAVE_TASK_HISTORY==1 ) +#define NUM_OF_TASK_HISTORY 200 +typedef struct A_TASK_HISTORY { + TaskHandle_t* tcb; + TickType_t tick; +} TaskHistory_t; + +uint16_t idx_task_history; +TaskHistory_t task_history[NUM_OF_TASK_HISTORY]; +#endif + + +void save_assert_info(char* file, int line) +{ + char assert_info[270]; + + dbg_str("****ASSERT****\n"); + dbg_str_str("assert", file); + dbg_str_int("line", line ); + sprintf(assert_info, "%s(%d)\0", strrchr(file, '\\') ? strrchr(file, '\\')+1 : file, line); + strncpy((char*)0x20000000, assert_info, strlen(assert_info)); + //QL_LOG_INFO_150K("fault cause = %s\n", assert_info); + + REBOOT_STATUS_REG &= ~REBOOT_CAUSE; + REBOOT_STATUS_REG |= REBOOT_CAUSE_SOFTFAULT; /* CHANGING THIS VALUE OR REGISTER REQUIRE CORRESPONDING CHANGE IN BOOTLOADER */ +} + + +void invoke_soft_fault(void) +{ + //QL_LOG_INFO_150K("Soft Fault\n"); + dbg_fatal_error("SOFT FAULT\n"); + { taskDISABLE_INTERRUPTS(); for( ;; ); } +} + + +#if ( configSAVE_TASK_HISTORY==1 ) + +void sec_save_task_history(TaskHandle_t* tcb, TickType_t tick) +{ + (++idx_task_history)==NUM_OF_TASK_HISTORY?idx_task_history=0:0; + + + task_history[idx_task_history].tcb = tcb; + task_history[idx_task_history].tick = tick; +} + +#endif diff --git a/qf_vr_apps/qf_vr_aec_app/src/vr_engine_api.c b/qf_vr_apps/qf_vr_aec_app/src/vr_engine_api.c new file mode 100644 index 00000000..7e36a88c --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/vr_engine_api.c @@ -0,0 +1,38 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +#include "vr_engine_api.h" +#if 0 //0 = disable this +// These 3 APIs need to be provided by every VR engine +__attribute__((weak)) void vr_engine_init(void) +{ + // initialize the VR engine + dbg_str("vr_engine_init: Using a STUB VR engine API, replace with desired VR engine"); + return; +} + +__attribute__((weak)) int vr_engine_get_samples_per_frame(void) +{ + // return samples per frame size used by the VR engine + return 240; // default samples per frame size +} + +__attribute__((weak)) int vr_engine_process(short *samples) +{ + // process input samples and return if wakeword is detected + return 0; // 0 = no wakeword detected, 1 = wakeword detected +} +#endif \ No newline at end of file diff --git a/qf_vr_apps/qf_vr_aec_app/src/watchdog.c b/qf_vr_apps/qf_vr_aec_app/src/watchdog.c new file mode 100644 index 00000000..71d85c11 --- /dev/null +++ b/qf_vr_apps/qf_vr_aec_app/src/watchdog.c @@ -0,0 +1,83 @@ +/*========================================================== + * Copyright 2020 QuickLogic Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *==========================================================*/ + +/*========================================================== + * + * File : watchdog.c + * Purpose: + * + *=========================================================*/ + +#include "Fw_global_config.h" +#include "eoss3_hal_wdt.h" +#include +#include +#include +#include "sec_debug.h" +//#include "test_bool.h" + +#ifdef WATCHDOG_SUPPORT +SemaphoreHandle_t g_wdtMutex = NULL; +static TaskHandle_t wdt_task_handle = NULL; +bool wdt_sleep = false; +#define WDT_TIMEOUT (20) +#define WDT_RELOAD_TIME (10) +#define WDT_RELOAD_COUNT (5) + +static void wdt_reload_task_handler(void *a) +{ + if (HAL_OK != HAL_WDT_Init(WDT_TIMEOUT)) { + printf("HAL_WDT_Init Failed\n"); + return; + } + + if (HAL_OK != HAL_WDT_Start()) { + printf("HAL_WDT_Init Failed\n"); + return; + } + + wait_ffe_fpga_load(); + + while (1) { + vTaskDelay(((WDT_RELOAD_TIME) * 1000) / portTICK_PERIOD_MS); + if ( HAL_OK == HAL_WDT_WdtIsStartStatus() ) { + //printf("### [WDT] reload watchdog timer ###\n"); + HAL_WDT_Reload(); + wdt_sleep = false; + } + else { + //printf("### [WDT] wait wakeup ###\n"); + wdt_sleep = true; + xSemaphoreTake(g_wdtMutex, portMAX_DELAY); + } + } +} + +void init_watchdog_reload_task(void) +{ + if (g_wdtMutex == NULL) + { + g_wdtMutex = xSemaphoreCreateBinary(); + if (g_wdtMutex != NULL){ + xSemaphoreGive(g_wdtMutex); + } + vQueueAddToRegistry(g_wdtMutex, "WDog"); + } + /* create watchdog reload task */ + xTaskCreate(wdt_reload_task_handler, "WDT RLD TSK", configMINIMAL_STACK_SIZE , NULL, TASK_PRI_WATCHDOG_RELOAD, &wdt_task_handle); + configASSERT( wdt_task_handle ); +} +#endif \ No newline at end of file