Compare commits
17 Commits
128d42c586
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 38544628b8 | |||
| 43f37e0b57 | |||
| 7b0c993e0b | |||
| d5f5c27694 | |||
| d082c49215 | |||
| d12adf083b | |||
| 89c875e38f | |||
| 4c62022d09 | |||
| 90bca063e6 | |||
| c8f14373d3 | |||
| 097a50f073 | |||
| d2f282c477 | |||
| 30da52f4b0 | |||
| bdf157168d | |||
| 4ee7481cff | |||
| e7e5bb9167 | |||
| 20322c58fc |
BIN
Doc/Datasheet_Audio-Jack_Korean Hroparts Elec PJ-321A-4A.pdf
Normal file
BIN
Doc/Datasheet_Audio-Jack_Korean Hroparts Elec PJ-321A-4A.pdf
Normal file
Binary file not shown.
895
Doc/Datasheet_MIDI-Plug_MABPM 5S.pdf
Normal file
895
Doc/Datasheet_MIDI-Plug_MABPM 5S.pdf
Normal file
File diff suppressed because one or more lines are too long
BIN
Doc/Datasheet_MOLEX_2x2P 4P Micro-Fit.pdf
Normal file
BIN
Doc/Datasheet_MOLEX_2x2P 4P Micro-Fit.pdf
Normal file
Binary file not shown.
BIN
Doc/Datasheet_OMRON_Switch.pdf
Normal file
BIN
Doc/Datasheet_OMRON_Switch.pdf
Normal file
Binary file not shown.
17
Firmware/.vscode/settings.json
vendored
17
Firmware/.vscode/settings.json
vendored
@@ -38,8 +38,17 @@
|
||||
"raspberry-pi-pico.cmakePath": "${HOME}/.pico-sdk/cmake/v3.31.5/bin/cmake",
|
||||
"raspberry-pi-pico.ninjaPath": "${HOME}/.pico-sdk/ninja/v1.12.1/ninja",
|
||||
"files.associations": {
|
||||
"*.h": "c",
|
||||
"compare": "c",
|
||||
"cstdint": "c"
|
||||
}
|
||||
"*.h": "c",
|
||||
"compare": "c",
|
||||
"cstdint": "c",
|
||||
"charconv": "c",
|
||||
"optional": "c",
|
||||
"format": "c",
|
||||
"system_error": "c",
|
||||
"array": "c",
|
||||
"functional": "c",
|
||||
"tuple": "c",
|
||||
"type_traits": "c",
|
||||
"utility": "c"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,8 +58,10 @@ add_executable(Firmware
|
||||
main.c
|
||||
PWM.c
|
||||
UART0.c
|
||||
Convert.c
|
||||
I2C_Master.c
|
||||
USB_Serial.c
|
||||
Serial_Command.c
|
||||
|
||||
Hue.c
|
||||
Easings.c
|
||||
@@ -82,6 +84,8 @@ add_executable(Firmware
|
||||
|
||||
Display_Default_Configurations.c
|
||||
Display_Message_Box_Icons.c
|
||||
Display_Render_Complex.c
|
||||
Display_Render_Simple.c
|
||||
Display_Color.c
|
||||
Display_Font.c
|
||||
Display_Image.c
|
||||
@@ -93,6 +97,7 @@ add_executable(Firmware
|
||||
Display.c
|
||||
|
||||
Screen_Variables.c
|
||||
Hierarchical_Menu.c
|
||||
|
||||
${IMAGE_SOURCES}
|
||||
${FONT_SOURCES}
|
||||
@@ -130,7 +135,12 @@ target_link_libraries(Firmware
|
||||
hardware_clocks
|
||||
hardware_uart
|
||||
pico_multicore
|
||||
pico_rand
|
||||
)
|
||||
|
||||
pico_add_extra_outputs(Firmware)
|
||||
|
||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_OBJDUMP} -t $<TARGET_FILE:${PROJECT_NAME}> > ${CMAKE_CURRENT_BINARY_DIR}/symbols_full.txt
|
||||
COMMENT "Extracting all symbols to symbols_full.txt"
|
||||
)
|
||||
@@ -79,6 +79,12 @@
|
||||
|
||||
#define MULTICORE_COMMAND_GET_ANALOG_VOLTAGE 'a'
|
||||
#define MULTICORE_COMMAND_GET_LED_POWER_ERROR 'b'
|
||||
#define MULTICORE_COMMAND_GET_LED_ENABLE_PIN 'c'
|
||||
#define MULTICORE_COMMAND_GET_LED_ALERT_PIN 'd'
|
||||
|
||||
// Mode Change via MIDI //
|
||||
#define MULTICORE_COMMAND_GET_MODE_CHANGE_RECEIVED 'e'
|
||||
#define MULTICORE_COMMAND_GET_MODE_CHANGE_NEW_MODE 'f'
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
@@ -92,7 +98,7 @@ typedef uint8_t Value_t;
|
||||
|
||||
typedef union
|
||||
{
|
||||
uint Data;
|
||||
uint32_t Data;
|
||||
struct Command_s
|
||||
{
|
||||
uint8_t Command;
|
||||
@@ -105,15 +111,24 @@ typedef union
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8_t Gap;
|
||||
uint8_t B;
|
||||
uint8_t R;
|
||||
uint8_t R;
|
||||
uint8_t G;
|
||||
uint8_t B;
|
||||
uint8_t A; // Alpha channel (unused, for 32-bit alignment)
|
||||
// uint8_t Gap;
|
||||
// uint8_t B;
|
||||
// uint8_t R;
|
||||
// uint8_t G;
|
||||
};
|
||||
uint8_t Array[4];
|
||||
uint Pixel;
|
||||
uint32_t Pixel;
|
||||
} __packed LED_Data_t;
|
||||
|
||||
typedef struct {
|
||||
int32_t Min;
|
||||
int32_t Max;
|
||||
} __packed MinMax_t;
|
||||
|
||||
typedef struct {
|
||||
int16_t Data;
|
||||
uint64_t Timestamp_ms;
|
||||
@@ -129,44 +144,43 @@ typedef struct {
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t MIDI_Channel;
|
||||
int8_t Octave;
|
||||
uint8_t Note_Color_Red;
|
||||
uint8_t Note_Color_Green;
|
||||
uint8_t Note_Color_Blue;
|
||||
int32_t MIDI_Channel;
|
||||
int32_t Octave;
|
||||
int32_t Note_Color_Red;
|
||||
int32_t Note_Color_Green;
|
||||
int32_t Note_Color_Blue;
|
||||
uint8_t Skip_Note_Off_Event;
|
||||
uint8_t Note_Reset_Enabled;
|
||||
int32_t Note_Reset_Timeout;
|
||||
} __packed Channel_MIDI_Configuration_s;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t Enabled;
|
||||
LED_Data_t Color;
|
||||
uint Timeout;
|
||||
uint8_t Reset_Condition;
|
||||
uint8_t Fade_Speed;
|
||||
uint32_t Timeout;
|
||||
int32_t Reset_Condition;
|
||||
int32_t Fade_Speed;
|
||||
} __packed Pause_Light_Configuration_s;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint Timer;
|
||||
uint32_t Timer;
|
||||
bool Is_Active;
|
||||
} Pause_Light_Timer_s;
|
||||
|
||||
typedef uint16_t Duration_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Duration_t Duration_Min_s;
|
||||
Duration_t Duration_Max_s;
|
||||
int Hue_Angle_Start_Color;
|
||||
uint Color_Change;
|
||||
uint8_t Fade_Speed;
|
||||
MinMax_t Durations;
|
||||
int32_t Hue_Angle_Start_Color;
|
||||
int32_t Color_Change;
|
||||
int32_t Fade_Speed;
|
||||
} __packed Jam_Light_Configuration_s;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LED_Data_t Color;
|
||||
uint8_t Fade_Speed;
|
||||
int32_t Fade_Speed;
|
||||
} __packed Const_Light_Configuration_s;
|
||||
|
||||
|
||||
@@ -273,6 +287,10 @@ enum Idle_Screen
|
||||
#define MIDI_SYSTEM_ACTIVE_SENSING 0xE // Active Sensing (Keep Alive)
|
||||
#define MIDI_SYSTEM_RESET 0xF // Reset
|
||||
|
||||
// MIDI Control Changes
|
||||
#define MIDI_CC_GENERAL_PURPOSE_ONOFF_1 0x52 // Generic on/off switch ≤63 off, ≥64 on (82)
|
||||
#define MIDI_CC_ALL_NOTES_OFF 0x7B // [Channel Mode Message] All Notes Off (123)
|
||||
|
||||
|
||||
/////////////////////////////////////////
|
||||
// Helping functions parsing MIDI Data //
|
||||
|
||||
55
Firmware/Convert.c
Normal file
55
Firmware/Convert.c
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Convert.c
|
||||
*
|
||||
* Created: Tue Feb 22 2022 20:31:44
|
||||
* Author Chris
|
||||
*/
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "Convert.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
int Convert_Char_To_Number(char input)
|
||||
{
|
||||
int Result_Number = 0;
|
||||
|
||||
if(input>='a' && input<='f') { Result_Number = (input-'a'+10); }
|
||||
else if(input>='A' && input<='F') { Result_Number = (input-'A'+10); }
|
||||
else if(input>='0' && input<='9') { Result_Number = (input-'0'); }
|
||||
|
||||
return Result_Number;
|
||||
}
|
||||
|
||||
int Convert_CharArray_To_Number(char input[], int length)
|
||||
{
|
||||
int i;
|
||||
int Result_Number = 0;
|
||||
|
||||
for(i=0;i<length;i++)
|
||||
{
|
||||
Result_Number += (Convert_Char_To_Number(input[i]) << (4*(length-1-i)));
|
||||
}
|
||||
|
||||
return Result_Number;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
|
||||
30
Firmware/Convert.h
Normal file
30
Firmware/Convert.h
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Convert.h
|
||||
*
|
||||
* Created: Tue Feb 22 2022 20:31:26
|
||||
* Author Chris
|
||||
*/
|
||||
#ifndef CONVERT_H_
|
||||
#define CONVERT_H_
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Datatypes
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
int Convert_Char_To_Number(char input);
|
||||
int Convert_CharArray_To_Number(char input[], int length);
|
||||
|
||||
|
||||
#endif /* CONVERT_H_ */
|
||||
@@ -102,11 +102,21 @@ void Core1_Parse_Command(uint8_t command, uint8_t parameter, int16_t value)
|
||||
case MULTICORE_COMMAND_SET_INA260_BUSVOLTAGE: Core1_LED_Enable_Update_INA260_BusVoltage((uint16_t)value); break;
|
||||
|
||||
|
||||
///////////////////
|
||||
// Get Functions //
|
||||
///////////////////
|
||||
case MULTICORE_COMMAND_GET_ANALOG_VOLTAGE: Core1_Send_Multicore_Answer(MULTICORE_COMMAND_GET_ANALOG_VOLTAGE , 0, (int16_t)Core1_ADC_Get_Result_mV()); break;
|
||||
case MULTICORE_COMMAND_GET_LED_POWER_ERROR: Core1_Send_Multicore_Answer(MULTICORE_COMMAND_GET_LED_POWER_ERROR , 0, (int16_t)Core1_LED_Enable_Get_Error()); break;
|
||||
///////////////////////////////////////
|
||||
// Get Functions Voltage Supervision //
|
||||
///////////////////////////////////////
|
||||
case MULTICORE_COMMAND_GET_ANALOG_VOLTAGE: Core1_Send_Multicore_Answer(command, 0, (int16_t)Core1_ADC_Get_Result_mV()); break;
|
||||
case MULTICORE_COMMAND_GET_LED_POWER_ERROR: Core1_Send_Multicore_Answer(command, 0, (int16_t)Core1_LED_Enable_Get_Error()); break;
|
||||
case MULTICORE_COMMAND_GET_LED_ENABLE_PIN: Core1_Send_Multicore_Answer(command, 0, (int16_t)Core1_LED_Enable_Get_Enable_Pin()); break;
|
||||
case MULTICORE_COMMAND_GET_LED_ALERT_PIN: Core1_Send_Multicore_Answer(command, 0, (int16_t)Core1_LED_Enable_Get_Alert_Pin()); break;
|
||||
|
||||
|
||||
////////////////////////////////////////
|
||||
// Get Functions Mode Change via MIDI //
|
||||
////////////////////////////////////////
|
||||
case MULTICORE_COMMAND_GET_MODE_CHANGE_RECEIVED: Core1_Send_Multicore_Answer(command, 0, (int16_t)Core1_Light_Controller_Get_Mode_Change_Received(LED_Channel_1)); break;
|
||||
case MULTICORE_COMMAND_GET_MODE_CHANGE_NEW_MODE: Core1_Send_Multicore_Answer(command, 0, (int16_t)Core1_Light_Controller_Get_Mode_Change_New_Mode(LED_Channel_1)); break;
|
||||
|
||||
|
||||
default: break;
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
|
||||
#include "hardware/gpio.h"
|
||||
|
||||
#include "USB_Serial.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
@@ -26,11 +28,10 @@
|
||||
#define LEDG_OFF gpio_put(LEDG_PIN, 1)
|
||||
|
||||
|
||||
|
||||
#define LED_PWR_EN_GPIO 0
|
||||
#define INA260_ALERT_GPIO 13
|
||||
|
||||
#define ENABLE_LED_POWER() gpio_put(LED_PWR_EN_GPIO, 1); LEDG_ON; _Power_Was_Enabled_Before = true
|
||||
#define ENABLE_LED_POWER() gpio_put(LED_PWR_EN_GPIO, 1); LEDG_ON; _Power_Was_Enabled_Before = true
|
||||
#define DISABLE_LED_POWER() gpio_put(LED_PWR_EN_GPIO, 0); LEDG_OFF
|
||||
|
||||
|
||||
@@ -54,13 +55,17 @@ void Core1_LED_Enable_Set_Error(LED_Power_Error error);
|
||||
*******************************************************************/
|
||||
void Core1_LED_Enable_Init()
|
||||
{
|
||||
gpio_init(LED_PWR_EN_GPIO);
|
||||
gpio_set_dir(LED_PWR_EN_GPIO, GPIO_OUT);
|
||||
DISABLE_LED_POWER();
|
||||
|
||||
gpio_init(INA260_ALERT_GPIO);
|
||||
gpio_set_dir(INA260_ALERT_GPIO, GPIO_IN);
|
||||
|
||||
_LED_Power_Error = UNDEFINED;
|
||||
_Power_Was_Enabled_Before = false;
|
||||
_INA260_Alert_Last_State = gpio_get(INA260_ALERT_GPIO);
|
||||
|
||||
Core1_LED_Enable_Update_Alert_Status();
|
||||
}
|
||||
|
||||
@@ -92,11 +97,16 @@ void Core1_LED_Enable_Update_INA260_BusVoltage(uint16_t voltage_mV)
|
||||
_INA260_BusVoltage_mV = voltage_mV;
|
||||
}
|
||||
|
||||
bool Core1_LED_Enable_Get_Status()
|
||||
bool Core1_LED_Enable_Get_Enable_Pin()
|
||||
{
|
||||
return gpio_get(LED_PWR_EN_GPIO);
|
||||
}
|
||||
|
||||
bool Core1_LED_Enable_Get_Alert_Pin()
|
||||
{
|
||||
return gpio_get(INA260_ALERT_GPIO);
|
||||
}
|
||||
|
||||
LED_Power_Error Core1_LED_Enable_Get_Error()
|
||||
{
|
||||
return _LED_Power_Error;
|
||||
@@ -108,11 +118,14 @@ LED_Power_Error Core1_LED_Enable_Get_Error()
|
||||
*******************************************************************/
|
||||
void Core1_LED_Enable_Update_Alert_Status()
|
||||
{
|
||||
if(_INA260_Alert_Last_State == true && gpio_get(LED_PWR_EN_GPIO) == false) {
|
||||
// Falling edge detection if Alert pin -> Falling edge means Overcurrent detection triggered
|
||||
bool Current_Alert_State = gpio_get(INA260_ALERT_GPIO);
|
||||
if(_INA260_Alert_Last_State == true && Current_Alert_State == false) {
|
||||
Core1_LED_Enable_Set_Error(OVERCURRENT);
|
||||
USB_SERIAL_SEND_STRING("OVERCURRENT"); USB_SERIAL_SEND_TERMINATOR();
|
||||
}
|
||||
|
||||
_INA260_Alert_Last_State = gpio_get(LED_PWR_EN_GPIO);
|
||||
_INA260_Alert_Last_State = Current_Alert_State;
|
||||
}
|
||||
|
||||
void Core1_LED_Enable_Set_Error(LED_Power_Error error)
|
||||
|
||||
@@ -37,7 +37,8 @@ void Core1_LED_Enable_Tick();
|
||||
|
||||
void Core1_LED_Enable_Update_INA260_BusVoltage(uint16_t voltage_mV);
|
||||
|
||||
bool Core1_LED_Enable_Get_Status();
|
||||
bool Core1_LED_Enable_Get_Enable_Pin();
|
||||
bool Core1_LED_Enable_Get_Alert_Pin();
|
||||
LED_Power_Error Core1_LED_Enable_Get_Error();
|
||||
|
||||
#endif // CORE1_LED_ENABLE_H
|
||||
@@ -25,7 +25,7 @@
|
||||
#define NOTE_COLOR_GREEN_ALT NOTE_COLOR_GREEN + 1
|
||||
#define NOTE_COLOR_BLUE_ALT NOTE_COLOR_BLUE + 1
|
||||
|
||||
#define NOTE_COLOR_COUNT_RESET_THRESHOLD_TICKS 100 // 100 * 10 ms -> 1s
|
||||
#define NOTE_COLOR_COUNT_RESET_THRESHOLD_TICKS (_EEPROM_Content.Channel_MIDI_Configuration[ch].Note_Reset_Timeout * (1000 / TIMER_INTERVALL_LED_UPDATE_ms))
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
@@ -37,11 +37,17 @@
|
||||
volatile bool _MIDI_To_Light_Enabled;
|
||||
extern volatile EEPROM_Content_t _EEPROM_Content;
|
||||
|
||||
volatile Info_Last_Received_Note_t _Info_Last_Received_Note[NUM_LED_CHANNELS];
|
||||
volatile Info_Last_Received_Note_t _Info_Last_Applied_Note[NUM_LED_CHANNELS];
|
||||
volatile Pause_Light_Timer_s _Pause_Light_Timer[NUM_LED_CHANNELS];
|
||||
volatile int _NoteOn_Color_Counter[NUM_LED_CHANNELS][NUM_LED_COLORS];
|
||||
volatile int _NoteOn_Color_Reset_Counter;
|
||||
Info_Last_Received_Note_t _Info_Last_Received_Note[NUM_LED_CHANNELS];
|
||||
Info_Last_Received_Note_t _Info_Last_Applied_Note[NUM_LED_CHANNELS];
|
||||
volatile Pause_Light_Timer_s _Pause_Light_Timer[NUM_LED_CHANNELS];
|
||||
volatile int _NoteOn_Color_Counter[NUM_LED_CHANNELS][NUM_LED_COLORS];
|
||||
volatile int _NoteOn_Color_Reset_Counter;
|
||||
|
||||
static bool _Mode_Change_Received[NUM_LED_CHANNELS];
|
||||
static Mode _Mode_Change_New_Mode[NUM_LED_CHANNELS];
|
||||
|
||||
// 1 LED Channel, 3 LED Colors, 2 Event Types (Note On & Off)
|
||||
int32_t _Event_Received_Counter[NUM_LED_CHANNELS][NUM_LED_COLORS][2];
|
||||
|
||||
static const uint8_t _PWM_Lookup[NUM_LED_COLORS][128] = {
|
||||
{ // Red
|
||||
@@ -97,7 +103,7 @@ void Core1_Light_Controller_Init(void)
|
||||
{
|
||||
_MIDI_To_Light_Enabled = true;
|
||||
|
||||
for(uint ch=0;ch<NUM_LED_CHANNELS;ch++)
|
||||
for(uint32_t ch=0;ch<NUM_LED_CHANNELS;ch++)
|
||||
{
|
||||
_Info_Last_Received_Note[ch].Event = 0;
|
||||
_Info_Last_Received_Note[ch].Note = NO_NOTE;
|
||||
@@ -110,6 +116,14 @@ void Core1_Light_Controller_Init(void)
|
||||
_Info_Last_Applied_Note[ch].Note_In_Octave = NO_NOTE;
|
||||
_Info_Last_Applied_Note[ch].Velocity = 0;
|
||||
_Info_Last_Applied_Note[ch].Timestamp_ms = 0;
|
||||
|
||||
for(uint32_t col=0;col < NUM_LED_COLORS;col++) {
|
||||
_Event_Received_Counter[ch][col][MIDI_EVENT_NOTE_OFF - MIDI_EVENT_NOTE_OFF] = 0;
|
||||
_Event_Received_Counter[ch][col][MIDI_EVENT_NOTE_ON - MIDI_EVENT_NOTE_OFF] = 0;
|
||||
}
|
||||
|
||||
_Mode_Change_Received[ch] = false;
|
||||
_Mode_Change_New_Mode[ch] = MIDI;
|
||||
}
|
||||
|
||||
Core1_Light_Controller_Reset_NoteOn_Counter();
|
||||
@@ -146,13 +160,16 @@ void Core1_Light_Controller_Tick(void)
|
||||
if(_Pause_Light_Timer[ch].Timer < PAUSE_LIGHT_TIMEOUT_TICKS) {
|
||||
_Pause_Light_Timer[ch].Timer++;
|
||||
}
|
||||
}
|
||||
|
||||
if(_NoteOn_Color_Reset_Counter < NOTE_COLOR_COUNT_RESET_THRESHOLD_TICKS) {
|
||||
_NoteOn_Color_Reset_Counter++;
|
||||
}
|
||||
else {
|
||||
Core1_Light_Controller_Reset_NoteOn_Counter();
|
||||
if(_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Reset_Enabled > 0)
|
||||
{
|
||||
if(_NoteOn_Color_Reset_Counter < NOTE_COLOR_COUNT_RESET_THRESHOLD_TICKS) {
|
||||
_NoteOn_Color_Reset_Counter++;
|
||||
}
|
||||
else {
|
||||
Core1_Light_Controller_Reset_NoteOn_Counter();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,6 +234,10 @@ void Core1_Light_Controller_MIDI_Full_Note_Received(uint8_t midi_event, uint8_t
|
||||
|
||||
Core1_LED_Control_Set_DC_Direct(ch, R, DutyCycle);
|
||||
_NoteOn_Color_Counter[ch][R]++;
|
||||
|
||||
#ifdef COUNT_APPLIED_NOTES
|
||||
_Event_Received_Counter[ch][R][MIDI_EVENT_NOTE_ON - MIDI_EVENT_NOTE_OFF]++;
|
||||
#endif
|
||||
}
|
||||
else if(midi_note_in_octave == NOTE_COLOR_GREEN || midi_note_in_octave == NOTE_COLOR_GREEN_ALT)
|
||||
{
|
||||
@@ -225,6 +246,10 @@ void Core1_Light_Controller_MIDI_Full_Note_Received(uint8_t midi_event, uint8_t
|
||||
|
||||
Core1_LED_Control_Set_DC_Direct(ch, G, DutyCycle);
|
||||
_NoteOn_Color_Counter[ch][G]++;
|
||||
|
||||
#ifdef COUNT_APPLIED_NOTES
|
||||
_Event_Received_Counter[ch][G][MIDI_EVENT_NOTE_ON - MIDI_EVENT_NOTE_OFF]++;
|
||||
#endif
|
||||
}
|
||||
else if(midi_note_in_octave == NOTE_COLOR_BLUE || midi_note_in_octave == NOTE_COLOR_BLUE_ALT)
|
||||
{
|
||||
@@ -233,6 +258,10 @@ void Core1_Light_Controller_MIDI_Full_Note_Received(uint8_t midi_event, uint8_t
|
||||
|
||||
Core1_LED_Control_Set_DC_Direct(ch, B, DutyCycle);
|
||||
_NoteOn_Color_Counter[ch][B]++;
|
||||
|
||||
#ifdef COUNT_APPLIED_NOTES
|
||||
_Event_Received_Counter[ch][B][MIDI_EVENT_NOTE_ON - MIDI_EVENT_NOTE_OFF]++;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -243,18 +272,39 @@ void Core1_Light_Controller_MIDI_Full_Note_Received(uint8_t midi_event, uint8_t
|
||||
{
|
||||
if(midi_note_in_octave == NOTE_COLOR_RED || midi_note_in_octave == NOTE_COLOR_RED_ALT)
|
||||
{
|
||||
_NoteOn_Color_Counter[ch][R]--;
|
||||
if(_NoteOn_Color_Counter[ch][R] == 0) { Core1_LED_Control_Set_DC_Direct(ch, R, 0); }
|
||||
if(_NoteOn_Color_Counter[ch][R] > 0) {
|
||||
_NoteOn_Color_Counter[ch][R]--;
|
||||
}
|
||||
|
||||
if(_NoteOn_Color_Counter[ch][R] == 0) { Core1_LED_Control_Set_DC_Direct(ch, R, 0); }
|
||||
|
||||
#ifdef COUNT_APPLIED_NOTES
|
||||
_Event_Received_Counter[ch][R][MIDI_EVENT_NOTE_OFF - MIDI_EVENT_NOTE_OFF]++;
|
||||
#endif
|
||||
}
|
||||
else if(midi_note_in_octave == NOTE_COLOR_GREEN || midi_note_in_octave == NOTE_COLOR_GREEN_ALT)
|
||||
{
|
||||
_NoteOn_Color_Counter[ch][G]--;
|
||||
if(_NoteOn_Color_Counter[ch][G] > 0) {
|
||||
_NoteOn_Color_Counter[ch][G]--;
|
||||
}
|
||||
|
||||
if(_NoteOn_Color_Counter[ch][G] == 0) { Core1_LED_Control_Set_DC_Direct(ch, G, 0); }
|
||||
|
||||
#ifdef COUNT_APPLIED_NOTES
|
||||
_Event_Received_Counter[ch][G][MIDI_EVENT_NOTE_OFF - MIDI_EVENT_NOTE_OFF]++;
|
||||
#endif
|
||||
}
|
||||
else if(midi_note_in_octave == NOTE_COLOR_BLUE || midi_note_in_octave == NOTE_COLOR_BLUE_ALT)
|
||||
{
|
||||
_NoteOn_Color_Counter[ch][B]--;
|
||||
if(_NoteOn_Color_Counter[ch][B] > 0) {
|
||||
_NoteOn_Color_Counter[ch][B]--;
|
||||
}
|
||||
|
||||
if(_NoteOn_Color_Counter[ch][B] == 0) { Core1_LED_Control_Set_DC_Direct(ch, B, 0); }
|
||||
|
||||
#ifdef COUNT_APPLIED_NOTES
|
||||
_Event_Received_Counter[ch][B][MIDI_EVENT_NOTE_OFF - MIDI_EVENT_NOTE_OFF]++;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -276,16 +326,103 @@ void Core1_Light_Controller_MIDI_Full_Note_Received(uint8_t midi_event, uint8_t
|
||||
}
|
||||
}
|
||||
|
||||
void Core1_Light_Controller_MIDI_Full_ProgramChange_Received(uint8_t midi_event, uint8_t midi_channel, uint8_t program_number)
|
||||
{
|
||||
Core1_Light_Controller_Pause_Light_Trigger(midi_event, midi_channel);
|
||||
|
||||
if(midi_event != MIDI_EVENT_PROGRAM_CHANGE) {
|
||||
return;
|
||||
}
|
||||
|
||||
for(uint32_t ch=0;ch<NUM_LED_CHANNELS;ch++)
|
||||
{
|
||||
if(Core1_Light_Controller_Check_Channel_Match(ch, midi_channel) != true) {
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (program_number)
|
||||
{
|
||||
case MIDI:
|
||||
case JAM:
|
||||
case CONSTANT:
|
||||
_Mode_Change_Received[ch] = true;
|
||||
_Mode_Change_New_Mode[ch] = program_number;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Core1_Light_Controller_MIDI_Full_ControlChange_Received(uint8_t midi_event, uint8_t midi_channel, uint8_t controller_number, uint8_t controller_value)
|
||||
{
|
||||
Core1_Light_Controller_Pause_Light_Trigger(midi_event, midi_channel);
|
||||
|
||||
if(midi_event != MIDI_EVENT_CONTROL_CHANGE) {
|
||||
return;
|
||||
}
|
||||
|
||||
for(uint32_t ch=0;ch<NUM_LED_CHANNELS;ch++)
|
||||
{
|
||||
if(Core1_Light_Controller_Check_Channel_Match(ch, midi_channel) != true) {
|
||||
continue;
|
||||
}
|
||||
|
||||
switch(controller_number)
|
||||
{
|
||||
case MIDI_CC_GENERAL_PURPOSE_ONOFF_1:
|
||||
_EEPROM_Content.Pause_Light_Configuration[ch].Enabled = (controller_value >= 64);
|
||||
|
||||
if(!_EEPROM_Content.Pause_Light_Configuration[ch].Enabled)
|
||||
{
|
||||
_Pause_Light_Timer[ch].Timer = 0;
|
||||
Core1_LED_Control_Set_Fade_Speed(ch, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
case MIDI_CC_ALL_NOTES_OFF:
|
||||
Core1_Light_Controller_Reset_NoteOn_Counter();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Core1_Light_Controller_Set_MIDI_To_Light_Enabled(bool enabled)
|
||||
{
|
||||
_MIDI_To_Light_Enabled = enabled;
|
||||
|
||||
for(uint ch=0;ch<NUM_LED_CHANNELS;ch++) {
|
||||
for(uint32_t ch=0;ch<NUM_LED_CHANNELS;ch++) {
|
||||
_Pause_Light_Timer[ch].Timer = 0;
|
||||
_Pause_Light_Timer[ch].Is_Active = false;
|
||||
}
|
||||
}
|
||||
|
||||
bool Core1_Light_Controller_Get_Mode_Change_Received(enum LED_Channel channel)
|
||||
{
|
||||
if(channel >= NUM_LED_CHANNELS) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Return_Value = _Mode_Change_Received[channel];
|
||||
|
||||
_Mode_Change_Received[channel] = false;
|
||||
|
||||
return Return_Value;
|
||||
}
|
||||
|
||||
Mode Core1_Light_Controller_Get_Mode_Change_New_Mode(enum LED_Channel channel)
|
||||
{
|
||||
if(channel >= NUM_LED_CHANNELS) {
|
||||
return MIDI;
|
||||
}
|
||||
|
||||
return _Mode_Change_New_Mode[channel];
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
@@ -314,7 +451,7 @@ bool Core1_Light_Controller_Check_Octave_Match(enum LED_Channel channel, uint mi
|
||||
|
||||
void Core1_Light_Controller_Pause_Light_Trigger(uint8_t midi_event, uint8_t midi_channel)
|
||||
{
|
||||
for(uint ch=0;ch<NUM_LED_CHANNELS;ch++)
|
||||
for(uint32_t ch=0;ch<NUM_LED_CHANNELS;ch++)
|
||||
{
|
||||
bool Match_Success = false;
|
||||
|
||||
@@ -349,7 +486,7 @@ void Core1_Light_Controller_Pause_Light_Trigger(uint8_t midi_event, uint8_t midi
|
||||
if(Match_Success) {
|
||||
if(_Pause_Light_Timer[ch].Is_Active == true)
|
||||
{
|
||||
_Pause_Light_Timer[ch].Is_Active = false;
|
||||
_Pause_Light_Timer[ch].Is_Active = false;
|
||||
|
||||
Core1_LED_Control_Set_DC_Direct(ch, R, 0);
|
||||
Core1_LED_Control_Set_DC_Direct(ch, G, 0);
|
||||
@@ -368,16 +505,15 @@ void Core1_Light_Controller_Pause_Light_Trigger(uint8_t midi_event, uint8_t midi
|
||||
|
||||
void Core1_Light_Controller_Reset_NoteOn_Counter()
|
||||
{
|
||||
for(uint ch=0;ch<NUM_LED_CHANNELS;ch++)
|
||||
for(uint32_t ch=0;ch<NUM_LED_CHANNELS;ch++)
|
||||
{
|
||||
for(uint l=0;l<NUM_LED_COLORS;l++)
|
||||
{
|
||||
if(_NoteOn_Color_Counter[ch][l] > 0) {
|
||||
Core1_LED_Control_Set_DC_Direct(ch, l, 0);
|
||||
}
|
||||
|
||||
_NoteOn_Color_Counter[ch][l] = 0;
|
||||
}
|
||||
if(_NoteOn_Color_Counter[ch][R] > 0) { Core1_LED_Control_Set_DC_Direct(ch, R, 0); }
|
||||
if(_NoteOn_Color_Counter[ch][G] > 0) { Core1_LED_Control_Set_DC_Direct(ch, G, 0); }
|
||||
if(_NoteOn_Color_Counter[ch][B] > 0) { Core1_LED_Control_Set_DC_Direct(ch, B, 0); }
|
||||
|
||||
_NoteOn_Color_Counter[ch][R] = 0;
|
||||
_NoteOn_Color_Counter[ch][G] = 0;
|
||||
_NoteOn_Color_Counter[ch][B] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
#include "pico/types.h"
|
||||
|
||||
#include "Mode_Manager.h"
|
||||
#include "EEPROM_M24C64.h"
|
||||
#include "Command_Definition.h"
|
||||
|
||||
@@ -34,9 +35,14 @@ void Core1_Light_Controller_Tick(void);
|
||||
void Core1_Light_Controller_MIDI_OnOff_Event_Received(uint8_t midi_command_shifted_right, uint8_t midi_channel);
|
||||
void Core1_Light_Controller_MIDI_Other_Event_Received(uint8_t midi_data);
|
||||
void Core1_Light_Controller_MIDI_Full_Note_Received(uint8_t midi_event, uint8_t midi_channel, uint8_t midi_note, uint8_t value);
|
||||
void Core1_Light_Controller_MIDI_Full_ProgramChange_Received(uint8_t midi_event, uint8_t midi_channel, uint8_t program_number);
|
||||
void Core1_Light_Controller_MIDI_Full_ControlChange_Received(uint8_t midi_event, uint8_t midi_channel, uint8_t controller_number, uint8_t controller_value);
|
||||
|
||||
void Core1_Light_Controller_Set_MIDI_To_Light_Enabled(bool enabled);
|
||||
|
||||
Note_t Core1_Light_Controller_Get_Octave_Note_For_Channel(enum LED_Channel channel);
|
||||
Value_t Core1_Light_Controller_Get_Note_Value_For_Channel(enum LED_Channel channel);
|
||||
|
||||
bool Core1_Light_Controller_Get_Mode_Change_Received(enum LED_Channel channel);
|
||||
Mode Core1_Light_Controller_Get_Mode_Change_New_Mode(enum LED_Channel channel);
|
||||
#endif /* CORE1_LIGHT_CONTROLLER_H_ */
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
enum PARSING_STATE_e
|
||||
{
|
||||
WAITING_FOR_COMMAND,
|
||||
WAITING_FOR_NOTE,
|
||||
WAITING_FOR_VALUE
|
||||
WAITING_FOR_DATA1,
|
||||
WAITING_FOR_DATA2
|
||||
};
|
||||
|
||||
struct PARSING_s
|
||||
@@ -33,7 +33,7 @@ struct PARSING_s
|
||||
enum PARSING_STATE_e State;
|
||||
uint8_t MIDI_Event;
|
||||
uint8_t MIDI_Channel;
|
||||
uint8_t MIDI_Note;
|
||||
uint8_t MIDI_Data1;
|
||||
};
|
||||
|
||||
volatile struct PARSING_s _Parsing;
|
||||
@@ -46,7 +46,7 @@ History_Buffer_t _MIDI_History_Buffer[RECEIVED_MIDI_HISTORY_BUFFER_SIZE];
|
||||
void Core1_MIDI_Receiver_Histroy_Update (uint8_t data);
|
||||
void Core1_MIDI_Receiver_Issue_Event_On_Off_Received(uint8_t midi_channel, uint8_t midi_event);
|
||||
void Core1_MIDI_Receiver_Issue_Data_Received (uint8_t midi_data);
|
||||
void Core1_MIDI_Receiver_Issue_Full_Note_Received (uint8_t midi_event, uint8_t midi_channel, uint8_t midi_note, uint8_t value);
|
||||
void Core1_MIDI_Receiver_Issue_Full_Event_Received (uint8_t midi_event, uint8_t midi_channel, uint8_t midi_data1, uint8_t midi_data2);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
@@ -70,7 +70,7 @@ void Core1_MIDI_Receiver_Init(void)
|
||||
_Parsing.State = WAITING_FOR_COMMAND;
|
||||
_Parsing.MIDI_Event = MIDI_EVENT_NOTE_ON;
|
||||
_Parsing.MIDI_Channel = MIDI_CHANNEL_1;
|
||||
_Parsing.MIDI_Note = NOTE_UNDEFINED;
|
||||
_Parsing.MIDI_Data1 = NOTE_UNDEFINED;
|
||||
}
|
||||
|
||||
void Core1_MIDI_Receiver_Process(void)
|
||||
@@ -83,24 +83,35 @@ void Core1_MIDI_Receiver_Process(void)
|
||||
switch(_Parsing.State)
|
||||
{
|
||||
case WAITING_FOR_COMMAND:
|
||||
if(MIDI_EVENT_FROM_COMMAND(Data) == MIDI_EVENT_NOTE_ON || MIDI_EVENT_FROM_COMMAND(Data) == MIDI_EVENT_NOTE_OFF)
|
||||
if( MIDI_EVENT_FROM_COMMAND(Data) == MIDI_EVENT_NOTE_ON ||
|
||||
MIDI_EVENT_FROM_COMMAND(Data) == MIDI_EVENT_NOTE_OFF ||
|
||||
MIDI_EVENT_FROM_COMMAND(Data) == MIDI_EVENT_CONTROL_CHANGE ||
|
||||
MIDI_EVENT_FROM_COMMAND(Data) == MIDI_EVENT_PROGRAM_CHANGE
|
||||
)
|
||||
{
|
||||
_Parsing.MIDI_Event = MIDI_EVENT_FROM_COMMAND(Data);
|
||||
_Parsing.MIDI_Channel = MIDI_CHANNEL_FROM_COMMAND(Data);
|
||||
_Parsing.State = WAITING_FOR_NOTE;
|
||||
_Parsing.State = WAITING_FOR_DATA1;
|
||||
|
||||
Core1_MIDI_Receiver_Issue_Event_On_Off_Received(_Parsing.MIDI_Channel, _Parsing.MIDI_Event);
|
||||
// Core1_MIDI_Receiver_Issue_Event_On_Off_Received(_Parsing.MIDI_Channel, _Parsing.MIDI_Event);
|
||||
break;
|
||||
}
|
||||
|
||||
Core1_MIDI_Receiver_Issue_Data_Received(Data);
|
||||
break;
|
||||
|
||||
case WAITING_FOR_NOTE:
|
||||
case WAITING_FOR_DATA1:
|
||||
if(IS_MIDI_DATA(Data))
|
||||
{
|
||||
_Parsing.MIDI_Note = Data;
|
||||
_Parsing.State = WAITING_FOR_VALUE;
|
||||
_Parsing.MIDI_Data1 = Data;
|
||||
|
||||
if(_Parsing.MIDI_Event == MIDI_EVENT_PROGRAM_CHANGE) {
|
||||
_Parsing.State = WAITING_FOR_COMMAND;
|
||||
Core1_MIDI_Receiver_Issue_Full_Event_Received(_Parsing.MIDI_Event, _Parsing.MIDI_Channel, _Parsing.MIDI_Data1, NOTE_UNDEFINED);
|
||||
}
|
||||
else {
|
||||
_Parsing.State = WAITING_FOR_DATA2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -110,10 +121,10 @@ void Core1_MIDI_Receiver_Process(void)
|
||||
}
|
||||
break;
|
||||
|
||||
case WAITING_FOR_VALUE:
|
||||
case WAITING_FOR_DATA2:
|
||||
if(IS_MIDI_DATA(Data))
|
||||
{
|
||||
Core1_MIDI_Receiver_Issue_Full_Note_Received(_Parsing.MIDI_Event, _Parsing.MIDI_Channel, _Parsing.MIDI_Note, Data);
|
||||
Core1_MIDI_Receiver_Issue_Full_Event_Received(_Parsing.MIDI_Event, _Parsing.MIDI_Channel, _Parsing.MIDI_Data1, Data);
|
||||
}
|
||||
|
||||
// Reset State Machine and wait for next MIDI Command
|
||||
@@ -151,7 +162,24 @@ void Core1_MIDI_Receiver_Issue_Data_Received(uint8_t midi_data)
|
||||
Core1_Light_Controller_MIDI_Other_Event_Received(midi_data);
|
||||
}
|
||||
|
||||
void Core1_MIDI_Receiver_Issue_Full_Note_Received(uint8_t midi_event, uint8_t midi_channel, uint8_t midi_note, uint8_t value)
|
||||
void Core1_MIDI_Receiver_Issue_Full_Event_Received(uint8_t midi_event, uint8_t midi_channel, uint8_t midi_data1, uint8_t midi_data2)
|
||||
{
|
||||
Core1_Light_Controller_MIDI_Full_Note_Received(midi_event, midi_channel, midi_note, value);
|
||||
switch (midi_event)
|
||||
{
|
||||
case MIDI_EVENT_NOTE_ON:
|
||||
case MIDI_EVENT_NOTE_OFF:
|
||||
Core1_Light_Controller_MIDI_Full_Note_Received(midi_event, midi_channel, midi_data1, midi_data2);
|
||||
break;
|
||||
|
||||
case MIDI_EVENT_PROGRAM_CHANGE:
|
||||
Core1_Light_Controller_MIDI_Full_ProgramChange_Received(midi_event, midi_channel, midi_data1);
|
||||
break;
|
||||
|
||||
case MIDI_EVENT_CONTROL_CHANGE:
|
||||
Core1_Light_Controller_MIDI_Full_ControlChange_Received(midi_event, midi_channel, midi_data1, midi_data2);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
1372
Firmware/Display.c
1372
Firmware/Display.c
File diff suppressed because it is too large
Load Diff
@@ -25,6 +25,18 @@
|
||||
|
||||
// ============================================================================================
|
||||
// Datatypes
|
||||
typedef struct {
|
||||
Screen_Transition_Direction Direction_Out;
|
||||
Screen_Transition_Direction Direction_In;
|
||||
|
||||
Coordinates Offset;
|
||||
Easing Type;
|
||||
uint32_t Frame_Duration;
|
||||
|
||||
uint32_t Step;
|
||||
int16_t Position_In;
|
||||
int16_t Position_Out;
|
||||
} Screen_Transition_Settings_t;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
|
||||
@@ -8,22 +8,87 @@
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
#define MODERN_PRIMARY_DARK DISPLAY_COLOR_FROM_RGB888(28, 28, 30) // Dark charcoal
|
||||
#define MODERN_PRIMARY_LIGHT DISPLAY_COLOR_FROM_RGB888(242, 242, 247) // Light gray
|
||||
#define MODERN_ACCENT_BLUE DISPLAY_COLOR_FROM_RGB888(0, 122, 255) // System blue
|
||||
#define MODERN_ACCENT_GREEN DISPLAY_COLOR_FROM_RGB888(48, 209, 88) // System green
|
||||
#define MODERN_ACCENT_ORANGE DISPLAY_COLOR_FROM_RGB888(255, 149, 0) // System orange
|
||||
#define MODERN_ACCENT_RED DISPLAY_COLOR_FROM_RGB888(255, 69, 58) // System red
|
||||
#define MODERN_SHADOW DISPLAY_COLOR_FROM_RGB888(0, 0, 0) // True black shadow
|
||||
#define MODERN_GLASS_OVERLAY DISPLAY_COLOR_FROM_RGB888(255, 255, 255) // White overlay for glass effect
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
extern const unsigned char _Font_Victor_Mono_Bold_8x19[];
|
||||
extern const unsigned char _Font_Victor_Mono_Regular_6x11[];
|
||||
extern const unsigned char _Font_Victor_Mono_Regular_7x13[];
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_7x15[];
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_11x17[];
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_6x12[];
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_7x15[];
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_10x17[];
|
||||
|
||||
|
||||
const Message_Box_Style _Message_Box_Style_Regular = {
|
||||
.Font = _Font_DejaVu_Sans_Mono_10x17,
|
||||
|
||||
.Background_Color = MODERN_PRIMARY_DARK,
|
||||
.Border_Color = DISPLAY_COLOR_FROM_RGB888(58, 58, 60),
|
||||
.Text_Color = MODERN_PRIMARY_LIGHT,
|
||||
.Accent_Color = MODERN_ACCENT_BLUE,
|
||||
|
||||
.Border_Radius = 15,
|
||||
.Border_Thickness = 1,
|
||||
|
||||
.Padding[PADDING_LEFT] = 20,
|
||||
.Padding[PADDING_TOP] = 20,
|
||||
.Padding[PADDING_RIGHT] = 20,
|
||||
.Padding[PADDING_BOTTOM] = 25
|
||||
};
|
||||
|
||||
|
||||
|
||||
Configuration_Menu_Select _Configuration_Default_Select_Menu = {
|
||||
.X_Offset = 60,
|
||||
.X_Indent = -4,
|
||||
.Font = { _Font_Victor_Mono_Bold_8x19, _Font_Victor_Mono_Regular_7x13, _Font_Victor_Mono_Regular_6x11 },
|
||||
.X_Offset = 70,
|
||||
.X_Indent = -6,
|
||||
.Font = { _Font_DejaVu_Sans_Mono_10x17, _Font_DejaVu_Sans_Mono_7x15, _Font_DejaVu_Sans_Mono_6x12 },
|
||||
.Color = { DISPLAY_COLOR_WHITE, DISPLAY_COLOR_LIGHTGREY, DISPLAY_COLOR_DARKGREY }
|
||||
};
|
||||
|
||||
Configuration_Menu_Hierarchical _Configuration_Menu_Hierarchical_Default = {
|
||||
// Fonts
|
||||
.Title_Font = _Font_DejaVu_Sans_Mono_Bold_11x17,
|
||||
.Item_Font = _Font_DejaVu_Sans_Mono_7x15,
|
||||
.Back_Font = _Font_DejaVu_Sans_Mono_6x12,
|
||||
|
||||
// Colors
|
||||
.Title_Color = DISPLAY_COLOR_WHITE,
|
||||
.Item_Selected_Color = DISPLAY_COLOR_CYAN,
|
||||
.Item_Normal_Color = DISPLAY_COLOR_LIGHTGREY,
|
||||
.Item_Back_Color = DISPLAY_COLOR_YELLOW,
|
||||
.Background_Color = DISPLAY_COLOR_BLACK,
|
||||
.Border_Color = DISPLAY_COLOR_DARKGREY,
|
||||
.Indicator_Color = DISPLAY_COLOR_BLUE,
|
||||
|
||||
// Layout
|
||||
.Title_Y_Offset = 25,
|
||||
.Menu_Start_Y = 60,
|
||||
.Item_Height = 20,
|
||||
.Item_Spacing = 4,
|
||||
.Item_Alignment = CENTER,
|
||||
.Side_Padding = 30,
|
||||
.Visible_Items = 6,
|
||||
|
||||
// Animation
|
||||
.Animation_Speed = 8,
|
||||
.Transition_Frames = 12,
|
||||
|
||||
// Visual indicators
|
||||
.Show_Scroll_Indicators = true,
|
||||
.Show_Item_Icons = false,
|
||||
.Show_Sub_Menu_Indicators = true,
|
||||
.Show_Selection_Box = true,
|
||||
.Selection_Box_Padding = 4
|
||||
};
|
||||
|
||||
// Configuration_Menu_Icon_Row
|
||||
|
||||
Configuration_Select_YesNo _Configuration_Default_Select_YesNo = {
|
||||
@@ -34,18 +99,28 @@ Configuration_Select_YesNo _Configuration_Default_Select_YesNo = {
|
||||
.Value_Font = _Font_DejaVu_Sans_Mono_10x17,
|
||||
.Value_Center_X_Offset = 20,
|
||||
.Value_Y_Center = DISPLAY_Y_CENTER+20,
|
||||
.Animation_Speed = 6
|
||||
.Animation_Speed = 20
|
||||
};
|
||||
|
||||
Configuration_Select_List _Configuration_Default_Select_List = {
|
||||
.Font = _Font_DejaVu_Sans_Mono_10x17,
|
||||
.List_Entry_Y_Gap = 10,
|
||||
.Color_Selected = DISPLAY_COLOR_WHITE,
|
||||
.Color_Not_Selected = DISPLAY_COLOR_DARKGREY
|
||||
.Color_Not_Selected = DISPLAY_COLOR_DARKGREY,
|
||||
|
||||
.Y_Top = 80,
|
||||
.List_Entry_Y_Gap = 10,
|
||||
.Visible_Items = 5, // Show 5 items on screen
|
||||
|
||||
.Show_Selection_Box = true,
|
||||
.Selection_Box_Padding = 4,
|
||||
.Selection_Box_Min_Width = 120,
|
||||
.Selection_Box_Color = DISPLAY_COLOR_CYAN,
|
||||
|
||||
.Mark_Initial_Entry = true
|
||||
};
|
||||
|
||||
Configuration_Select_Value _Configuration_Default_Select_Value = {
|
||||
.Title_Font = _Font_Victor_Mono_Bold_8x19,
|
||||
.Title_Font = _Font_DejaVu_Sans_Mono_Bold_7x15,
|
||||
.Title_Color = DISPLAY_COLOR_WHITE,
|
||||
.Title_Y_Center = DISPLAY_Y_CENTER-50,
|
||||
|
||||
@@ -64,116 +139,37 @@ Configuration_Select_RGB _Configuration_Default_Select_RGB = {
|
||||
.Ring_Color_Blue = DISPLAY_COLOR_FROM_RGB888(68, 68, 255), // Bright blue #4444ff
|
||||
|
||||
// Geometry settings optimized for 240x240 circular display
|
||||
.Center_Preview_Radius = 70, // 140px diameter color preview (leaves 50px margin)
|
||||
.Center_Preview_Radius = 40, // 140px diameter color preview (leaves 50px margin)
|
||||
.Progress_Ring_Radius = 100, // 200px diameter progress ring (20px from edge)
|
||||
.Progress_Ring_Thickness = 8, // Substantial ring thickness for visibility
|
||||
.Indicator_Radius = 8, // 16px diameter indicator dot
|
||||
|
||||
// Colors for UI elements - clean monochrome scheme
|
||||
.Preview_Border_Color = DISPLAY_COLOR_WHITE, // White border for contrast
|
||||
.Preview_Border_Thickness = 3, // Visible but not thick border
|
||||
.Indicator_Core_Color = DISPLAY_COLOR_WHITE, // White indicator core
|
||||
.Indicator_Glow_Color = DISPLAY_COLOR_FROM_RGB888(200, 200, 255), // Subtle blue glow
|
||||
.Preview_Border_Color = DISPLAY_COLOR_WHITE, // White border for contrast
|
||||
.Preview_Border_Thickness = 3, // Visible but not thick border
|
||||
.Indicator_Core_Color = DISPLAY_COLOR_WHITE, // White indicator core
|
||||
.Indicator_Glow_Color = DISPLAY_COLOR_FROM_RGB888(200, 200, 255), // Subtle blue glow
|
||||
.Background_Ring_Color = DISPLAY_COLOR_FROM_RGB888(64, 64, 64), // Dark gray background ring
|
||||
.Background_Ring_Thickness = 2, // Thin background ring
|
||||
.Background_Ring_Thickness = 2, // Thin background ring
|
||||
|
||||
// Previous marker settings - NEW
|
||||
// Previous marker settings
|
||||
.Previous_Marker_Color = DISPLAY_COLOR_WHITE,
|
||||
.Previous_Marker_Radius = 3,
|
||||
.Previous_Marker_Ring_Offset = 15, // 15 pixels inside the main ring
|
||||
.Show_Previous_Markers = true,
|
||||
|
||||
// Text display settings - clear hierarchy
|
||||
.Component_Label_Font = _Font_Victor_Mono_Bold_8x19, // Bold for component labels (RED/GREEN/BLUE)
|
||||
.Value_Font = _Font_DejaVu_Sans_Mono_10x17, // Large readable font for values
|
||||
.Text_Color = DISPLAY_COLOR_WHITE, // High contrast white text
|
||||
.Text_Y_Offset = 100, // 100px from bottom edge
|
||||
.Component_Font = _Font_DejaVu_Sans_Mono_Bold_11x17, // Bold for component labels (RED/GREEN/BLUE)
|
||||
.Value_Font = _Font_DejaVu_Sans_Mono_10x17, // Large readable font for values
|
||||
.Text_Color = DISPLAY_COLOR_WHITE, // High contrast white text
|
||||
.Component_Text_Y_Offset = DISPLAY_Y_CENTER - 60,
|
||||
.Value_Text_Y_Offset = DISPLAY_Y_CENTER + 60,
|
||||
|
||||
// Animation and interaction settings
|
||||
.Smooth_Animation_Steps = 8, // Smooth but not too slow transitions
|
||||
.Enable_Encoder_Acceleration = true, // Enable fast value changes
|
||||
.Acceleration_Threshold = 3, // Trigger acceleration after 3 fast steps
|
||||
.Acceleration_Multiplier = 5 // 5x speed during fast rotation
|
||||
};
|
||||
|
||||
// Alternative configuration for smaller displays or different aesthetics
|
||||
Configuration_Select_RGB _Configuration_Compact_Select_RGB = {
|
||||
// More subdued colors for compact interface
|
||||
.Ring_Color_Red = DISPLAY_COLOR_FROM_RGB888(220, 80, 80), // Softer red
|
||||
.Ring_Color_Green = DISPLAY_COLOR_FROM_RGB888(80, 220, 80), // Softer green
|
||||
.Ring_Color_Blue = DISPLAY_COLOR_FROM_RGB888(80, 80, 220), // Softer blue
|
||||
|
||||
// Smaller geometry for compact displays
|
||||
.Center_Preview_Radius = 50, // Smaller preview circle
|
||||
.Progress_Ring_Radius = 80, // Closer to center
|
||||
.Progress_Ring_Thickness = 6, // Thinner ring
|
||||
.Indicator_Radius = 6, // Smaller indicator
|
||||
|
||||
// Minimal UI colors
|
||||
.Preview_Border_Color = DISPLAY_COLOR_LIGHTGREY,
|
||||
.Preview_Border_Thickness = 2,
|
||||
.Indicator_Core_Color = DISPLAY_COLOR_WHITE,
|
||||
.Indicator_Glow_Color = DISPLAY_COLOR_LIGHTGREY,
|
||||
.Background_Ring_Color = DISPLAY_COLOR_DARKGREY,
|
||||
.Background_Ring_Thickness = 1,
|
||||
|
||||
// Previous marker settings - NEW
|
||||
.Previous_Marker_Color = DISPLAY_COLOR_WHITE,
|
||||
.Previous_Marker_Radius = 3,
|
||||
.Previous_Marker_Ring_Offset = 15, // 15 pixels inside the main ring
|
||||
.Show_Previous_Markers = true,
|
||||
|
||||
// Smaller fonts for compact layout
|
||||
.Component_Label_Font = _Font_Victor_Mono_Regular_6x11, // Smaller label font
|
||||
.Value_Font = _Font_Victor_Mono_Bold_8x19, // Medium value font
|
||||
.Text_Color = DISPLAY_COLOR_LIGHTGREY,
|
||||
.Text_Y_Offset = 25,
|
||||
|
||||
// Faster, more responsive settings for compact interface
|
||||
.Smooth_Animation_Steps = 4, // Faster transitions
|
||||
.Enable_Encoder_Acceleration = true,
|
||||
.Acceleration_Threshold = 2, // More sensitive acceleration
|
||||
.Acceleration_Multiplier = 8 // Higher acceleration
|
||||
};
|
||||
|
||||
// High contrast configuration for accessibility
|
||||
Configuration_Select_RGB _Configuration_High_Contrast_Select_RGB = {
|
||||
// Pure, high contrast colors
|
||||
.Ring_Color_Red = DISPLAY_COLOR_RED, // Pure red
|
||||
.Ring_Color_Green = DISPLAY_COLOR_GREEN, // Pure green
|
||||
.Ring_Color_Blue = DISPLAY_COLOR_BLUE, // Pure blue
|
||||
|
||||
// Standard geometry
|
||||
.Center_Preview_Radius = 70,
|
||||
.Progress_Ring_Radius = 100,
|
||||
.Progress_Ring_Thickness = 10, // Thicker for better visibility
|
||||
.Indicator_Radius = 10, // Larger indicator
|
||||
|
||||
// High contrast UI
|
||||
.Preview_Border_Color = DISPLAY_COLOR_WHITE,
|
||||
.Preview_Border_Thickness = 4, // Thick border for definition
|
||||
.Indicator_Core_Color = DISPLAY_COLOR_WHITE,
|
||||
.Indicator_Glow_Color = DISPLAY_COLOR_WHITE, // No glow, just solid white
|
||||
.Background_Ring_Color = DISPLAY_COLOR_BLACK, // Maximum contrast
|
||||
.Background_Ring_Thickness = 3,
|
||||
|
||||
// Previous marker settings - NEW
|
||||
.Previous_Marker_Color = DISPLAY_COLOR_WHITE,
|
||||
.Previous_Marker_Radius = 3,
|
||||
.Previous_Marker_Ring_Offset = 15, // 15 pixels inside the main ring
|
||||
.Show_Previous_Markers = true,
|
||||
|
||||
// Large, clear fonts
|
||||
.Component_Label_Font = _Font_DejaVu_Sans_Mono_10x17, // Larger labels
|
||||
.Value_Font = _Font_Victor_Mono_Bold_8x19, // Bold values
|
||||
.Text_Color = DISPLAY_COLOR_WHITE,
|
||||
.Text_Y_Offset = 35,
|
||||
|
||||
// Conservative animation for accessibility
|
||||
.Smooth_Animation_Steps = 12, // Slower, more predictable
|
||||
.Enable_Encoder_Acceleration = false, // Disable acceleration for precision
|
||||
.Acceleration_Threshold = 5,
|
||||
.Acceleration_Multiplier = 2
|
||||
.Smooth_Animation_Steps = 8, // Smooth but not too slow transitions
|
||||
.Enable_Encoder_Acceleration = true, // Enable fast value changes
|
||||
.Acceleration_Threshold = 3, // Trigger acceleration after 3 fast steps
|
||||
.Acceleration_Multiplier = 5 // 5x speed during fast rotation
|
||||
};
|
||||
|
||||
Configuration_Entry_Indicator _Configuration_Default_Entry_Indicator_Arc = {
|
||||
|
||||
@@ -17,19 +17,27 @@
|
||||
#define SCREEN_TRANSITION_DEFAULT_EASING INOUT_SINE
|
||||
#define SCREEN_TRANSITION_DEFAULT_FRAMES 15
|
||||
|
||||
#define MESSAGE_BOX_DEFAULT_TICKS 40
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Datatypes
|
||||
extern const Message_Box_Style _Message_Box_Style_Regular;
|
||||
extern Configuration_Menu_Select _Configuration_Default_Select_Menu;
|
||||
|
||||
extern Configuration_Menu_Hierarchical _Configuration_Menu_Hierarchical_Default;
|
||||
extern Configuration_Menu_Hierarchical _Configuration_Menu_Hierarchical_Modern;
|
||||
|
||||
extern Configuration_Select_YesNo _Configuration_Default_Select_YesNo;
|
||||
extern Configuration_Select_List _Configuration_Default_Select_List;
|
||||
extern Configuration_Select_Value _Configuration_Default_Select_Value;
|
||||
|
||||
extern Configuration_Select_RGB _Configuration_Default_Select_RGB;
|
||||
extern Configuration_Select_RGB _Configuration_Compact_Select_RGB;
|
||||
extern Configuration_Select_RGB _Configuration_High_Contrast_Select_RGB;
|
||||
|
||||
extern Configuration_Entry_Indicator _Configuration_Default_Entry_Indicator_Arc;
|
||||
extern Configuration_Entry_Indicator _Configuration_Default_Entry_Indicator_Dot;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
#include "Display_Objects.h"
|
||||
#include "Display_Message_Box_Icons.h"
|
||||
|
||||
#include "Hierarchical_Menu.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
@@ -93,6 +95,7 @@ void Display_Objects_Clear(void)
|
||||
{
|
||||
Object_Value_Bar_Arc *VA;
|
||||
Object_Menu_Ring *MR;
|
||||
Object_Menu_Hierarchical* MH;
|
||||
Object_Canvas *C;
|
||||
|
||||
for (uint i = 0; i < _Objects.Size; i++)
|
||||
@@ -155,6 +158,13 @@ void Display_Objects_Clear(void)
|
||||
}
|
||||
free(MR);
|
||||
break;
|
||||
case MENU_HIERARCHICAL:
|
||||
MH = (Object_Menu_Hierarchical*)(O->Data);
|
||||
if (MH->Transition_Animation != NULL) {
|
||||
free(MH->Transition_Animation);
|
||||
}
|
||||
free(MH);
|
||||
break;
|
||||
case SELECT_YESNO:
|
||||
free((Object_Select_YesNo*)(O->Data));
|
||||
break;
|
||||
@@ -417,6 +427,7 @@ Object_ID Display_Objects_Add_Image(Anchor_Point anchor_point, Coordinates_Type
|
||||
Image->Image = image;
|
||||
Image->Rotation_Angle = Rotation_Angle;
|
||||
Image->Alpha = UINT8_MAX;
|
||||
Image->Scale = 1.0f;
|
||||
|
||||
return Display_Objects_Add(IMAGE, anchor_point, coordinates_type, x, y, selectable, (void *)Image, style_id, animation_id);
|
||||
}
|
||||
@@ -612,16 +623,15 @@ Object_ID Display_Objects_Add_Canvas(Anchor_Point anchor_point, Coordinates_Type
|
||||
return Display_Objects_Add(CANVAS, anchor_point, coordinates_type, x, y, selectable, (void *)Canvas, style_id, animation_id);
|
||||
}
|
||||
|
||||
Object_ID Display_Objects_Add_Message_Box(Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y, char* text, Font_ID font, Object_Message_Box_Icon icon, Display_Color color, Style_ID style_id)
|
||||
Object_ID Display_Objects_Add_Message_Box(Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y, char* text, Object_Message_Box_Icon icon, const Message_Box_Style* style)
|
||||
{
|
||||
Object_Message_Box *Message_Box = malloc(sizeof(Object_Message_Box));
|
||||
Message_Box->Length = sprintf(Message_Box->Text, "%s", text);
|
||||
Message_Box->Font = Display_Objects_Font_From_ID(font);
|
||||
Message_Box->Color = color;
|
||||
Message_Box->Icon = icon;
|
||||
Message_Box->Style = style;
|
||||
Message_Box->Show_Ticks_Left = 0;
|
||||
|
||||
return Display_Objects_Add(MESSAGE_BOX, anchor_point, coordinates_type, x, y, NOT_SELECTABLE, (void *)Message_Box, style_id, NO_ANIMATION);
|
||||
return Display_Objects_Add(MESSAGE_BOX, anchor_point, coordinates_type, x, y, NOT_SELECTABLE, (void *)Message_Box, NO_STYLE, NO_ANIMATION);
|
||||
}
|
||||
|
||||
Object_ID Display_Objects_Add_Menu_Select(char* menu_titles, uint32_t menu_entry_count, uint32_t title_char_length, uint32_t* selected_entry, Configuration_Menu_Select* config)
|
||||
@@ -636,7 +646,7 @@ Object_ID Display_Objects_Add_Menu_Select(char* menu_titles, uint32_t menu_entry
|
||||
return Display_Objects_Add(MENU_SELECT, LEFT_TOP, BOTH_IN_PIXEL, 0, 0, NOT_SELECTABLE, (void *)Menu_Select, NO_STYLE, NO_ANIMATION);
|
||||
}
|
||||
|
||||
Object_ID Display_Objects_Add_Menu_Icon_Row(Icon_Row_Item* items, uint32_t item_count, uint32_t* selected_item, Configuration_Menu_Icon_Row* config)
|
||||
Object_ID Display_Objects_Add_Menu_Icon_Row(Icon_Row_Item* items, uint32_t item_count, uint32_t* selected_item, const Configuration_Menu_Icon_Row* config)
|
||||
{
|
||||
Object_Menu_Icon_Row* Icon_Row = malloc(sizeof(Object_Menu_Icon_Row));
|
||||
Icon_Row->Items = items;
|
||||
@@ -700,7 +710,38 @@ Object_ID Display_Objects_Add_Menu_Ring(Menu_Ring_Item_Config* items, uint32_t i
|
||||
return Display_Objects_Add(MENU_RING, LEFT_TOP, BOTH_IN_PIXEL, 0, 0, SELECTABLE, (void *)Menu_Ring, NO_STYLE, NO_ANIMATION);
|
||||
}
|
||||
|
||||
Object_ID Display_Objects_Add_Select_YesNo(char* title, uint32_t title_length, bool* value, Configuration_Select_YesNo* config)
|
||||
Object_ID Display_Objects_Add_Menu_Hierarchical(const Menu_List** current_list, int32_t* selected_item, int32_t* scroll_offset, const Configuration_Menu_Hierarchical* config)
|
||||
{
|
||||
Object_Menu_Hierarchical* Menu_Hierarchical = malloc(sizeof(Object_Menu_Hierarchical));
|
||||
Menu_Hierarchical->Current_List = current_list;
|
||||
Menu_Hierarchical->Selected_Item = selected_item;
|
||||
Menu_Hierarchical->Scroll_Offset = scroll_offset;
|
||||
Menu_Hierarchical->Config = config;
|
||||
|
||||
Menu_Hierarchical->Animation_Counter = 0;
|
||||
Menu_Hierarchical->Transition_Progress = 0.0f;
|
||||
Menu_Hierarchical->Last_Selected_Item = *selected_item;
|
||||
|
||||
Menu_Hierarchical->Last_Current_List = *current_list;
|
||||
Menu_Hierarchical->Last_Selected_Item_Value = *selected_item;
|
||||
Menu_Hierarchical->Last_Scroll_Offset_Value = *scroll_offset;
|
||||
|
||||
Menu_Hierarchical->Transition_Animation = malloc(sizeof(Menu_Hierarchical_Transition_Animation));
|
||||
Menu_Hierarchical->Transition_Animation->State = MENU_HIERARCHICAL_TRANSITION_STATE_IDLE;
|
||||
Menu_Hierarchical->Transition_Animation->Direction = MENU_TRANSITION_ENTER_SUBMENU;
|
||||
Menu_Hierarchical->Transition_Animation->Transition_Counter = 0;
|
||||
Menu_Hierarchical->Transition_Animation->Total_Transition_Frames = MENU_HIERARCHICAL_TRANSITION_FRAMES;
|
||||
Menu_Hierarchical->Transition_Animation->Previous_List = NULL;
|
||||
Menu_Hierarchical->Transition_Animation->Target_List = NULL;
|
||||
Menu_Hierarchical->Transition_Animation->Current_Menu_X_Offset = 0;
|
||||
Menu_Hierarchical->Transition_Animation->Target_Menu_X_Offset = 0;
|
||||
|
||||
Menu_Hierarchical->Transition_Animation_Active = false;
|
||||
|
||||
return Display_Objects_Add(MENU_HIERARCHICAL, LEFT_TOP, BOTH_IN_PIXEL, 0, 0, NOT_SELECTABLE, (void *)Menu_Hierarchical, NO_STYLE, NO_ANIMATION);
|
||||
}
|
||||
|
||||
Object_ID Display_Objects_Add_Select_YesNo(char* title, uint32_t title_length, bool* value, const Configuration_Select_YesNo* config)
|
||||
{
|
||||
Object_Select_YesNo* Select_YesNo = malloc(sizeof(Object_Select_YesNo));
|
||||
Select_YesNo->Title = title;
|
||||
@@ -711,19 +752,20 @@ Object_ID Display_Objects_Add_Select_YesNo(char* title, uint32_t title_length, b
|
||||
return Display_Objects_Add(SELECT_YESNO, LEFT_TOP, BOTH_IN_PIXEL, 0, 0, NOT_SELECTABLE, (void *)Select_YesNo, NO_STYLE, NO_ANIMATION);
|
||||
}
|
||||
|
||||
Object_ID Display_Objects_Add_Select_List(char* list_titles, uint32_t list_entry_count, uint32_t list_char_length, uint32_t* selected_entry, Configuration_Select_List* config)
|
||||
Object_ID Display_Objects_Add_Select_List(char* list_titles, uint32_t list_entry_count, uint32_t list_char_length, uint32_t* selected_entry, const Configuration_Select_List* config)
|
||||
{
|
||||
Object_Select_List* Select_List = malloc(sizeof(Object_Select_List));
|
||||
Select_List->List_Titles = list_titles;
|
||||
Select_List->List_Entry_Count = list_entry_count;
|
||||
Select_List->List_Char_Length = list_char_length;
|
||||
Select_List->Selected_Entry = selected_entry;
|
||||
Select_List->Initial_Entry = *selected_entry;
|
||||
Select_List->Config = config;
|
||||
|
||||
return Display_Objects_Add(SELECT_LIST, LEFT_TOP, BOTH_IN_PIXEL, 0, 0, NOT_SELECTABLE, (void *)Select_List, NO_STYLE, NO_ANIMATION);
|
||||
}
|
||||
|
||||
Object_ID Display_Objects_Add_Select_Value(char* title, uint32_t title_length, int32_t* value, int32_t max, int32_t min, char* format, Configuration_Select_Value* config)
|
||||
Object_ID Display_Objects_Add_Select_Value(char* title, uint32_t title_length, int32_t* value, int32_t max, int32_t min, char* format, const Configuration_Select_Value* config)
|
||||
{
|
||||
Object_Select_Value* Select_Value = malloc(sizeof(Object_Select_Value));
|
||||
Select_Value->Title = title;
|
||||
@@ -737,7 +779,7 @@ Object_ID Display_Objects_Add_Select_Value(char* title, uint32_t title_length, i
|
||||
return Display_Objects_Add(SELECT_VALUE, LEFT_TOP, BOTH_IN_PIXEL, 0, 0, NOT_SELECTABLE, (void *)Select_Value, NO_STYLE, NO_ANIMATION);
|
||||
}
|
||||
|
||||
Object_ID Display_Objects_Add_Select_RGB(RGB_Color* color_value, uint8_t* current_component, Configuration_Select_RGB* config)
|
||||
Object_ID Display_Objects_Add_Select_RGB(LED_Data_t* color_value, uint8_t* current_component, const Configuration_Select_RGB* config)
|
||||
{
|
||||
if (color_value == NULL || config == NULL) {
|
||||
return -1; // Invalid parameters
|
||||
@@ -786,7 +828,7 @@ Object_ID Display_Objects_Add_Select_RGB(RGB_Color* color_value, uint8_t* curren
|
||||
);
|
||||
}
|
||||
|
||||
Object_ID Display_Objects_Add_Entry_Indicator(uint32_t entry_count, int32_t* entry_value, Configuration_Entry_Indicator* config)
|
||||
Object_ID Display_Objects_Add_Entry_Indicator(uint32_t entry_count, int32_t* entry_value, const Configuration_Entry_Indicator* config)
|
||||
{
|
||||
Object_Entry_Indicator* Entry_Indicator = malloc(sizeof(Object_Entry_Indicator));
|
||||
Entry_Indicator->Entry_Count = entry_count;
|
||||
@@ -854,6 +896,12 @@ void Display_Objects_Update_Color(Object_ID id, Display_Color color)
|
||||
((Object_Shape*)(Object->Data))->Color = color;
|
||||
break;
|
||||
|
||||
case VALUE_BAR_ARC:
|
||||
if(((Object_Value_Bar_Arc*)(Object->Data))->Arc != NULL) {
|
||||
((Object_Value_Bar_Arc*)(Object->Data))->Arc->Color = color;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -908,11 +956,7 @@ void Display_Objects_Update_Alpha(Object_ID id, uint8_t new_alpha)
|
||||
{
|
||||
Display_Object* Object = Display_Objects_Get_By_ID(id);
|
||||
|
||||
if(Object == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(Object->Type != IMAGE) {
|
||||
if(Object == NULL || Object->Type != IMAGE) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -921,6 +965,19 @@ void Display_Objects_Update_Alpha(Object_ID id, uint8_t new_alpha)
|
||||
IM->Alpha = new_alpha;
|
||||
}
|
||||
|
||||
void Display_Objects_Update_Scale(Object_ID id, float new_scale)
|
||||
{
|
||||
Display_Object* Object = Display_Objects_Get_By_ID(id);
|
||||
|
||||
if(Object == NULL || Object->Type != IMAGE || new_scale < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
Object_Image_Color* IM = (Object_Image_Color*)(Object->Data);
|
||||
|
||||
IM->Scale = new_scale;
|
||||
}
|
||||
|
||||
void Display_Objects_Update_Max_Min(Object_ID id, uint max, uint min)
|
||||
{
|
||||
Display_Object* Object = Display_Objects_Get_By_ID(id);
|
||||
@@ -936,6 +993,11 @@ void Display_Objects_Update_Max_Min(Object_ID id, uint max, uint min)
|
||||
((Object_Value_Bar_Rect*)Object->Data)->Min = min;
|
||||
break;
|
||||
|
||||
case VALUE_BAR_ARC:
|
||||
((Object_Value_Bar_Arc*)Object->Data)->Max = max;
|
||||
((Object_Value_Bar_Arc*)Object->Data)->Min = min;
|
||||
break;
|
||||
|
||||
case GRAPH:
|
||||
((Object_Graph*)Object->Data)->Max = max;
|
||||
((Object_Graph*)Object->Data)->Min = min;
|
||||
@@ -1397,27 +1459,31 @@ Dimension Display_Objects_Get_Content_Size(Display_Object *object)
|
||||
break;
|
||||
|
||||
case MESSAGE_BOX:
|
||||
Display_Font_Set_Font(((Object_Message_Box *)Data)->Font->Font);
|
||||
Dimension.Height = Display_Font_Get_Font_Height() + MESSAGE_BOX_TEXT_BAR_DISTANCE + MESSAGE_BOX_BAR_HEIGHT;
|
||||
Dimension.Width = Display_Font_Width_String((((Object_Message_Box *)Data)->Text), ((Object_Message_Box *)Data)->Length, ((Object_Message_Box *)Data)->Font->Character_Spacing);
|
||||
|
||||
if((((Object_Message_Box *)Data)->Icon) != MESSAGE_BOX_ICON_NONE) {
|
||||
Dimension.Width += MESSAGE_BOX_TEXT_ICON_DISTANCE + Display_Message_Box_Icons_Get_Icon_Width(((Object_Message_Box *)Data)->Icon);
|
||||
Object_Message_Box* MB = (Object_Message_Box *)Data;
|
||||
const Message_Box_Style* Style = MB->Style;
|
||||
|
||||
if(Style == NULL) {
|
||||
return Dimension;
|
||||
}
|
||||
|
||||
|
||||
if(Display_Message_Box_Icons_Get_Icon_Height(((Object_Message_Box *)Data)->Icon) > Display_Font_Get_Font_Height()) {
|
||||
Dimension.Height = Display_Message_Box_Icons_Get_Icon_Height(((Object_Message_Box *)Data)->Icon) + MESSAGE_BOX_TEXT_BAR_DISTANCE + MESSAGE_BOX_BAR_HEIGHT;
|
||||
}
|
||||
Display_Font_Set_Font(Style->Font);
|
||||
Dimension.Height = Display_Font_Get_Font_Height() + 2 * Style->Border_Thickness + Style->Padding[PADDING_TOP] + Style->Padding[PADDING_BOTTOM];
|
||||
Dimension.Width = Display_Font_Width_String(MB->Text, MB->Length, DISPLAY_DEFAULT_CHAR_SPACING) + 2 * Style->Border_Thickness + Style->Padding[PADDING_LEFT] + Style->Padding[PADDING_RIGHT];
|
||||
|
||||
if(MB->Icon != MESSAGE_BOX_ICON_NONE) {
|
||||
Dimension.Width += (MESSAGE_BOX_TEXT_ICON_DISTANCE + Display_Message_Box_Icons_Get_Icon_Width(MB->Icon));
|
||||
}
|
||||
break;
|
||||
|
||||
case MENU_SELECT:
|
||||
case MENU_ICON_ROW:
|
||||
case MENU_RING:
|
||||
case MENU_HIERARCHICAL:
|
||||
case SELECT_YESNO:
|
||||
case SELECT_LIST:
|
||||
case SELECT_VALUE:
|
||||
case SELECT_RGB:
|
||||
Dimension.Height = 0;
|
||||
Dimension.Width = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
#include "Display_Config.h"
|
||||
#include "Display_Objects_Datatypes.h"
|
||||
|
||||
#include "Command_Definition.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
@@ -77,15 +79,16 @@ Object_ID Display_Objects_Add_Arc_Frame ( Coordinates_Type coordinates_
|
||||
Object_ID Dispaly_Objects_Add_Line_XY ( Coordinates_Type coordinates_type, int16_t x, int16_t y, bool selectable, Display_Color color, int16_t x2, int16_t y2, uint16_t thickness , Style_ID style_id, Animation_ID animation_id);
|
||||
Object_ID Dispaly_Objects_Add_Line_Rad ( Coordinates_Type coordinates_type, int16_t x, int16_t y, bool selectable, Display_Color color, uint16_t radius_start, uint16_t radius_end, uint16_t thickness, int16_t angle , Style_ID style_id, Animation_ID animation_id);
|
||||
Object_ID Display_Objects_Add_Canvas (Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y, bool selectable, Display_Color color, uint width, uint height , Style_ID style_id, Animation_ID animation_id);
|
||||
Object_ID Display_Objects_Add_Message_Box (Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y, char* text, Font_ID font, Object_Message_Box_Icon icon, Display_Color color , Style_ID style_id);
|
||||
Object_ID Display_Objects_Add_Message_Box (Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y, char* text, Object_Message_Box_Icon icon, const Message_Box_Style* style);
|
||||
Object_ID Display_Objects_Add_Menu_Select (char* menu_titles, uint32_t menu_entry_count, uint32_t title_char_length, uint32_t* selected_entry, Configuration_Menu_Select* config);
|
||||
Object_ID Display_Objects_Add_Menu_Icon_Row (Icon_Row_Item* items, uint32_t item_count, uint32_t* selected_item, Configuration_Menu_Icon_Row* config);
|
||||
Object_ID Display_Objects_Add_Menu_Icon_Row (Icon_Row_Item* items, uint32_t item_count, uint32_t* selected_item, const Configuration_Menu_Icon_Row* config);
|
||||
Object_ID Display_Objects_Add_Menu_Ring (Menu_Ring_Item_Config* items, uint32_t item_count, uint32_t* selected_item, Configuration_Menu_Ring* config);
|
||||
Object_ID Display_Objects_Add_Select_YesNo (char* title, uint32_t title_length, bool* value, Configuration_Select_YesNo* config);
|
||||
Object_ID Display_Objects_Add_Select_List (char* list_titles, uint32_t list_entry_count, uint32_t list_char_length, uint32_t* selected_entry, Configuration_Select_List* config);
|
||||
Object_ID Display_Objects_Add_Select_Value (char* title, uint32_t title_length, int32_t* value, int32_t max, int32_t min, char* format, Configuration_Select_Value* config);
|
||||
Object_ID Display_Objects_Add_Select_RGB (RGB_Color* color_value, uint8_t* current_component, Configuration_Select_RGB* config);
|
||||
Object_ID Display_Objects_Add_Entry_Indicator (uint32_t entry_count, int32_t* entry_value, Configuration_Entry_Indicator* config);
|
||||
Object_ID Display_Objects_Add_Menu_Hierarchical (const Menu_List** current_list, int32_t* selected_item, int32_t* scroll_offset, const Configuration_Menu_Hierarchical* config);
|
||||
Object_ID Display_Objects_Add_Select_YesNo (char* title, uint32_t title_length, bool* value, const Configuration_Select_YesNo* config);
|
||||
Object_ID Display_Objects_Add_Select_List (char* list_titles, uint32_t list_entry_count, uint32_t list_char_length, uint32_t* selected_entry, const Configuration_Select_List* config);
|
||||
Object_ID Display_Objects_Add_Select_Value (char* title, uint32_t title_length, int32_t* value, int32_t max, int32_t min, char* format, const Configuration_Select_Value* config);
|
||||
Object_ID Display_Objects_Add_Select_RGB (LED_Data_t* color_value, uint8_t* current_component, const Configuration_Select_RGB* config);
|
||||
Object_ID Display_Objects_Add_Entry_Indicator (uint32_t entry_count, int32_t* entry_value, const Configuration_Entry_Indicator* config);
|
||||
|
||||
|
||||
void Display_Objects_Update_Coordinates (Object_ID id, Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y);
|
||||
@@ -94,6 +97,7 @@ void Display_Objects_Update_Color (Object_ID id, Display_Color color);
|
||||
void Display_Objects_Update_Text (Object_ID id, char* text);
|
||||
void Display_Objects_Update_Image (Object_ID id, Image_Color* new_image);
|
||||
void Display_Objects_Update_Alpha (Object_ID id, uint8_t new_alpha);
|
||||
void Display_Objects_Update_Scale (Object_ID id, float new_scale);
|
||||
void Display_Objects_Update_Max_Min (Object_ID id, uint max, uint min);
|
||||
int Display_Objects_Update_Pixel (Object_ID id, int16_t x, int16_t y, Display_Color color);
|
||||
void Display_Objects_Show_Message_Box (Object_ID id, uint32_t ticks);
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "Display_Config.h"
|
||||
#include "Command_Definition.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
@@ -41,10 +42,23 @@
|
||||
#define MENU_RING_APPEAR_ITEM_POP_SPEED 4 // Frames for each item to appear
|
||||
#define MENU_RING_APPEAR_ITEM_DELAY 1 // Frames between each item appearance
|
||||
|
||||
// Animation timing constants Menu Hierarchical
|
||||
#define MENU_HIERARCHICAL_TRANSITION_FRAMES 20 // Frames for slide transition
|
||||
#define MENU_HIERARCHICAL_SLIDE_DISTANCE DISPLAY_WIDTH // Pixels to slide (full screen width)
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables / Datatypes
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Forwward Declarations
|
||||
*******************************************************************/
|
||||
typedef struct Menu_Item_s Menu_Item;
|
||||
typedef struct Menu_List_s Menu_List;
|
||||
typedef struct Hierarchical_Menu_s Hierarchical_Menu;
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Generic Types
|
||||
*******************************************************************/
|
||||
@@ -61,7 +75,7 @@ typedef union
|
||||
uint32_t Pixel;
|
||||
} __packed RGB_Color;
|
||||
|
||||
typedef enum {
|
||||
typedef enum {
|
||||
FLOAT,
|
||||
INTEGER,
|
||||
TEXT,
|
||||
@@ -77,6 +91,7 @@ typedef enum {
|
||||
MENU_SELECT,
|
||||
MENU_ICON_ROW,
|
||||
MENU_RING,
|
||||
MENU_HIERARCHICAL,
|
||||
SELECT_YESNO,
|
||||
SELECT_LIST,
|
||||
SELECT_VALUE,
|
||||
@@ -282,6 +297,7 @@ typedef struct {
|
||||
Image_Color *Image;
|
||||
uint16_t Rotation_Angle;
|
||||
uint8_t Alpha;
|
||||
float Scale;
|
||||
} Object_Image_Color;
|
||||
|
||||
typedef struct {
|
||||
@@ -300,11 +316,13 @@ typedef struct {
|
||||
uint16_t* Data;
|
||||
} Object_Canvas;
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
MESSAGE_BOX Configuration and Object Structure
|
||||
*******************************************************************/
|
||||
typedef enum {
|
||||
MESSAGE_BOX_TEXT_BAR_DISTANCE = 2,
|
||||
MESSAGE_BOX_BAR_HEIGHT = 3,
|
||||
MESSAGE_BOX_TEXT_ICON_DISTANCE = 2
|
||||
MESSAGE_BOX_TEXT_ICON_DISTANCE = 10
|
||||
} Object_Message_Box_Properties;
|
||||
|
||||
typedef enum {
|
||||
@@ -322,22 +340,37 @@ typedef enum {
|
||||
} Object_Message_Box_Icon;
|
||||
|
||||
typedef struct {
|
||||
char Text[64];
|
||||
uint8_t Length;
|
||||
Font* Font;
|
||||
Display_Color Color;
|
||||
const unsigned char* Font;
|
||||
|
||||
Display_Color Background_Color;
|
||||
Display_Color Border_Color;
|
||||
Display_Color Text_Color;
|
||||
Display_Color Accent_Color;
|
||||
Display_Color Shadow_Color;
|
||||
uint8_t Border_Radius;
|
||||
uint8_t Border_Thickness;
|
||||
|
||||
uint32_t Padding[4];
|
||||
} Message_Box_Style;
|
||||
|
||||
typedef struct {
|
||||
char Text[64];
|
||||
int Length;
|
||||
|
||||
Object_Message_Box_Icon Icon;
|
||||
const Message_Box_Style* Style;
|
||||
|
||||
uint32_t Show_Ticks_Max;
|
||||
uint32_t Show_Ticks_Left;
|
||||
} Object_Message_Box;
|
||||
|
||||
|
||||
|
||||
typedef struct {
|
||||
int16_t X_Offset;
|
||||
int16_t X_Indent;
|
||||
|
||||
const unsigned char *Font[3];
|
||||
const unsigned char* Font[3];
|
||||
Display_Color Color[3];
|
||||
} Configuration_Menu_Select;
|
||||
|
||||
@@ -372,10 +405,13 @@ typedef struct {
|
||||
uint32_t Item_Count;
|
||||
uint32_t* Selected_Item;
|
||||
|
||||
Configuration_Menu_Icon_Row* Config;
|
||||
const Configuration_Menu_Icon_Row* Config;
|
||||
} Object_Menu_Icon_Row;
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
MENU_RING Configuration and Object Structure
|
||||
*******************************************************************/
|
||||
// Animation data structure
|
||||
typedef struct {
|
||||
Menu_Ring_Appear_State State;
|
||||
@@ -458,6 +494,101 @@ typedef struct {
|
||||
} Object_Menu_Ring;
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
MENU_HIERARCHICAL Configuration and Object Structure
|
||||
*******************************************************************/
|
||||
// Animation states for hierarchical menu transitions
|
||||
typedef enum {
|
||||
MENU_HIERARCHICAL_TRANSITION_STATE_IDLE, // No transition running
|
||||
MENU_HIERARCHICAL_TRANSITION_STATE_SLIDE_OUT, // Current menu sliding out
|
||||
MENU_HIERARCHICAL_TRANSITION_STATE_SLIDE_IN, // New menu sliding in
|
||||
MENU_HIERARCHICAL_TRANSITION_STATE_COMPLETE // Transition finished
|
||||
} Menu_Hierarchical_Transition_State;
|
||||
|
||||
// Direction of menu transition
|
||||
typedef enum {
|
||||
MENU_TRANSITION_ENTER_SUBMENU, // Moving deeper into menu hierarchy
|
||||
MENU_TRANSITION_EXIT_SUBMENU // Moving back up in hierarchy
|
||||
} Menu_Transition_Direction;
|
||||
|
||||
// Transition animation structure
|
||||
typedef struct {
|
||||
Menu_Hierarchical_Transition_State State;
|
||||
Menu_Transition_Direction Direction;
|
||||
|
||||
// Animation progress
|
||||
uint16_t Transition_Counter;
|
||||
uint16_t Total_Transition_Frames;
|
||||
|
||||
// Menu states
|
||||
const Menu_List* Previous_List; // Menu being transitioned from
|
||||
const Menu_List* Target_List; // Menu being transitioned to
|
||||
int32_t Previous_Selected_Item;
|
||||
int32_t Target_Selected_Item;
|
||||
int32_t Previous_Scroll_Offset;
|
||||
int32_t Target_Scroll_Offset;
|
||||
|
||||
// Visual offsets for slide animation
|
||||
int16_t Current_Menu_X_Offset; // Current menu position
|
||||
int16_t Target_Menu_X_Offset; // Target menu position
|
||||
} Menu_Hierarchical_Transition_Animation;
|
||||
|
||||
typedef struct {
|
||||
// Fonts
|
||||
const unsigned char *Title_Font;
|
||||
const unsigned char *Item_Font;
|
||||
const unsigned char *Back_Font;
|
||||
|
||||
// Colors
|
||||
Display_Color Title_Color;
|
||||
Display_Color Item_Selected_Color;
|
||||
Display_Color Item_Normal_Color;
|
||||
Display_Color Item_Back_Color;
|
||||
Display_Color Background_Color;
|
||||
Display_Color Border_Color;
|
||||
Display_Color Indicator_Color;
|
||||
|
||||
// Layout
|
||||
int16_t Title_Y_Offset;
|
||||
int16_t Menu_Start_Y;
|
||||
int16_t Item_Height;
|
||||
int16_t Item_Spacing;
|
||||
uint8_t Item_Alignment;
|
||||
int16_t Side_Padding;
|
||||
int16_t Visible_Items;
|
||||
|
||||
// Animation
|
||||
uint16_t Animation_Speed;
|
||||
uint16_t Transition_Frames;
|
||||
|
||||
// Visual indicators
|
||||
bool Show_Scroll_Indicators;
|
||||
bool Show_Item_Icons;
|
||||
bool Show_Sub_Menu_Indicators;
|
||||
bool Show_Selection_Box;
|
||||
uint16_t Selection_Box_Padding;
|
||||
} Configuration_Menu_Hierarchical;
|
||||
|
||||
typedef struct {
|
||||
const Menu_List** Current_List;
|
||||
int32_t* Selected_Item;
|
||||
int32_t* Scroll_Offset;
|
||||
const Configuration_Menu_Hierarchical* Config;
|
||||
|
||||
// Internal state
|
||||
uint32_t Animation_Counter;
|
||||
float Transition_Progress;
|
||||
int32_t Last_Selected_Item;
|
||||
|
||||
const Menu_List* Last_Current_List; // Previous frame's current list
|
||||
int32_t Last_Selected_Item_Value; // Previous frame's selected item
|
||||
int32_t Last_Scroll_Offset_Value; // Previous frame's scroll offset
|
||||
|
||||
Menu_Hierarchical_Transition_Animation* Transition_Animation;
|
||||
bool Transition_Animation_Active;
|
||||
} Object_Menu_Hierarchical;
|
||||
|
||||
|
||||
typedef struct {
|
||||
const unsigned char *Title_Font;
|
||||
Display_Color Title_Color;
|
||||
@@ -475,15 +606,26 @@ typedef struct {
|
||||
|
||||
bool* Value;
|
||||
|
||||
Configuration_Select_YesNo* Config;
|
||||
const Configuration_Select_YesNo* Config;
|
||||
} Object_Select_YesNo;
|
||||
|
||||
|
||||
typedef struct {
|
||||
const unsigned char *Font;
|
||||
int16_t List_Entry_Y_Gap;
|
||||
Display_Color Color_Selected;
|
||||
Display_Color Color_Selected;
|
||||
Display_Color Color_Not_Selected;
|
||||
|
||||
int16_t Y_Top;
|
||||
int16_t List_Entry_Y_Gap;
|
||||
uint16_t Visible_Items; // Number of items visible on screen
|
||||
|
||||
// Animation Parameters
|
||||
bool Show_Selection_Box;
|
||||
uint16_t Selection_Box_Padding; // Padding around selection
|
||||
uint16_t Selection_Box_Min_Width;
|
||||
Display_Color Selection_Box_Color;
|
||||
|
||||
bool Mark_Initial_Entry;
|
||||
} Configuration_Select_List;
|
||||
|
||||
typedef struct {
|
||||
@@ -491,7 +633,8 @@ typedef struct {
|
||||
uint32_t List_Entry_Count;
|
||||
uint32_t List_Char_Length;
|
||||
uint32_t* Selected_Entry;
|
||||
Configuration_Select_List* Config;
|
||||
uint32_t Initial_Entry;
|
||||
const Configuration_Select_List* Config;
|
||||
} Object_Select_List;
|
||||
|
||||
|
||||
@@ -518,7 +661,7 @@ typedef struct {
|
||||
|
||||
char Format[32];
|
||||
|
||||
Configuration_Select_Value* Config;
|
||||
const Configuration_Select_Value* Config;
|
||||
} Object_Select_Value;
|
||||
|
||||
/*******************************************************************
|
||||
@@ -551,10 +694,11 @@ typedef struct {
|
||||
bool Show_Previous_Markers; // Enable/disable previous markers
|
||||
|
||||
// Text display settings
|
||||
const unsigned char* Component_Label_Font; // Font for "RED", "GREEN", "BLUE" labels
|
||||
const unsigned char* Value_Font; // Font for numeric value display
|
||||
Display_Color Text_Color; // Color for all text elements
|
||||
int16_t Text_Y_Offset; // Vertical offset from bottom for text
|
||||
const unsigned char* Component_Font; // Font for "RED", "GREEN", "BLUE" labels
|
||||
const unsigned char* Value_Font; // Font for numeric value display
|
||||
Display_Color Text_Color; // Color for all text elements
|
||||
int16_t Component_Text_Y_Offset; // Vertical offset from bottom for text
|
||||
int16_t Value_Text_Y_Offset; // Vertical offset from bottom for text
|
||||
|
||||
// Animation settings
|
||||
uint16_t Smooth_Animation_Steps; // Steps for smooth value transitions
|
||||
@@ -566,7 +710,7 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
// RGB value pointer
|
||||
RGB_Color* Color_Value; // Pointer to RGB color structure
|
||||
LED_Data_t* Color_Value; // Pointer to RGB color structure
|
||||
|
||||
// Current state
|
||||
uint8_t *Current_Component; // Active component: 0=Red, 1=Green, 2=Blue
|
||||
@@ -581,7 +725,7 @@ typedef struct {
|
||||
uint16_t Progress_Start_Angle; // Starting angle for progress arc (270° = 12 o'clock)
|
||||
|
||||
// Configuration pointer
|
||||
Configuration_Select_RGB* Config;
|
||||
const Configuration_Select_RGB* Config;
|
||||
} Object_Select_RGB;
|
||||
|
||||
|
||||
@@ -617,7 +761,7 @@ typedef struct {
|
||||
uint32_t Entry_Count;
|
||||
int32_t* Entry_Value;
|
||||
|
||||
Configuration_Entry_Indicator* Config;
|
||||
const Configuration_Entry_Indicator* Config;
|
||||
} Object_Entry_Indicator;
|
||||
|
||||
/*******************************************************************
|
||||
|
||||
1754
Firmware/Display_Render_Complex.c
Normal file
1754
Firmware/Display_Render_Complex.c
Normal file
File diff suppressed because it is too large
Load Diff
47
Firmware/Display_Render_Complex.h
Normal file
47
Firmware/Display_Render_Complex.h
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* File: Display_Render_Complex.h
|
||||
* Created: Created: Saturday September 2025 09:22:17
|
||||
* Author: Chris
|
||||
*/
|
||||
#ifndef DISPLAY_RENDER_COMPLEX_H
|
||||
#define DISPLAY_RENDER_COMPLEX_H
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "Display_Shapes.h"
|
||||
#include "Display_Objects.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Datatypes
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Display_Render_Complex_Value_Bar_Rect (Coordinates* coordinates, Object_Value_Bar_Rect* value_bar);
|
||||
void Display_Render_Complex_Value_Bar_Arc (Coordinates* coordinates, Object_Value_Bar_Arc* value_bar);
|
||||
void Display_Render_Complex_Graph (Coordinates* coordinates, Object_Graph* graph);
|
||||
void Display_Render_Complex_Button (Coordinates* coordinates, Object_Button* button);
|
||||
void Display_Render_Complex_Canvas (Coordinates* coordinates, Object_Canvas* canvas);
|
||||
void Display_Render_Complex_Message_Box (Coordinates* coordinates, Object_Message_Box* message_box, int16_t width, int16_t height);
|
||||
void Display_Render_Complex_Menu_Select (Coordinates* coordinates, char* menu_titles, uint32_t menu_entry_count, uint32_t title_char_length, uint32_t selected_entry, Configuration_Menu_Select* config);
|
||||
void Display_Render_Complex_Menu_Icon_Row_Set (uint32_t initially_selected_item, uint32_t icon_space_width);
|
||||
void Display_Render_Complex_Menu_Icon_Row (Coordinates* coordinates, Icon_Row_Item* items, uint32_t item_count, uint32_t selected_item, const Configuration_Menu_Icon_Row* config);
|
||||
void Display_Render_Complex_Menu_Ring (Coordinates* coordinates, Object_Menu_Ring* ring_menu);
|
||||
void Display_Render_Complex_Menu_Hierarchical (Coordinates* coordinates, Object_Menu_Hierarchical* menu_hierarchical);
|
||||
void Display_Render_Complex_Select_YesNo_Set (bool value, const Configuration_Select_YesNo* config);
|
||||
void Display_Render_Complex_Select_YesNo (Coordinates* coordinates, char* title, uint32_t title_length, bool value, const Configuration_Select_YesNo* config);
|
||||
void Display_Render_Complex_Select_List (Coordinates* coordinates, char* list_titles, uint32_t list_entry_count, uint32_t list_char_length, uint32_t selected_entry, uint32_t initial_entry, const Configuration_Select_List* config);
|
||||
void Display_Render_Complex_Select_Value (Coordinates* coordinates, char* title, uint32_t title_length, int32_t value, int32_t max, int32_t min, char* format, const Configuration_Select_Value* config);
|
||||
void Display_Render_Complex_Select_RGB (Coordinates* coordinates, Object_Select_RGB* rgb_selector);
|
||||
void Display_Render_Complex_Entry_Indicator (Coordinates* coordinates, uint32_t entry_count, int32_t entry_value, const Configuration_Entry_Indicator* config);
|
||||
|
||||
|
||||
#endif // DISPLAY_RENDER_COMPLEX_H
|
||||
152
Firmware/Display_Render_Simple.c
Normal file
152
Firmware/Display_Render_Simple.c
Normal file
@@ -0,0 +1,152 @@
|
||||
/*
|
||||
* File: Display_Render_Simple.c
|
||||
*
|
||||
* Created: Created: Saturday September 2025 09:22:12
|
||||
* Author: Chris
|
||||
*/
|
||||
#include "Display_Render_Simple.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "Display_Font.h"
|
||||
#include "Display_Color.h"
|
||||
#include "Display_Image.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
static Screen_Transition_Settings_t* _Transition_Settings;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Display_Render_Simple_Init(Screen_Transition_Settings_t* transition_settings)
|
||||
{
|
||||
_Transition_Settings = transition_settings;
|
||||
}
|
||||
|
||||
void Display_Render_Simple_Float(Coordinates* coordinates_object, Object_Float* float_data)
|
||||
{
|
||||
char String[64];
|
||||
uint32_t String_Char_Count;
|
||||
|
||||
Display_Font_Set_Font(float_data->Font->Font);
|
||||
String_Char_Count = sprintf(String, float_data->Format, *(float_data->Value));
|
||||
|
||||
Display_Font_Print_String(coordinates_object->X, coordinates_object->Y, String, String_Char_Count, float_data->Font->Character_Spacing, float_data->Color);
|
||||
}
|
||||
|
||||
void Display_Render_Simple_Integer(Coordinates* coordinates_object, Object_Integer* integer_data)
|
||||
{
|
||||
char String[64];
|
||||
uint32_t String_Char_Count;
|
||||
|
||||
Display_Font_Set_Font(integer_data->Font->Font);
|
||||
String_Char_Count = sprintf(String, integer_data->Format, *(integer_data->Value));
|
||||
|
||||
Display_Font_Print_String(coordinates_object->X, coordinates_object->Y, String, String_Char_Count, integer_data->Font->Character_Spacing, integer_data->Color);
|
||||
}
|
||||
|
||||
void Display_Render_Simple_Text(Coordinates* coordinates_object, Object_Text* text_data)
|
||||
{
|
||||
char String[64];
|
||||
uint32_t String_Char_Count;
|
||||
|
||||
Display_Font_Set_Font(text_data->Font->Font);
|
||||
sprintf(String, "%s", text_data->Text);
|
||||
String_Char_Count = text_data->Length;
|
||||
|
||||
Display_Font_Print_String(coordinates_object->X, coordinates_object->Y, String, String_Char_Count, text_data->Font->Character_Spacing, text_data->Color);
|
||||
}
|
||||
|
||||
void Display_Render_Simple_Image(Coordinates* coordinates_object, Object_Image_Color* image)
|
||||
{
|
||||
if(image->Rotation_Angle == 0) {
|
||||
Display_Image_Draw_Color_Scaled_Alpha(coordinates_object->X, coordinates_object->Y, image->Image, image->Scale, image->Alpha);
|
||||
}
|
||||
else {
|
||||
Display_Image_Draw_Color_Rotated_Alpha(coordinates_object->X, coordinates_object->Y, image->Image, image->Rotation_Angle, image->Alpha);
|
||||
}
|
||||
}
|
||||
|
||||
void Display_Render_Simple_Bool(Coordinates* coordinates_object, Object_Bool* bool_data)
|
||||
{
|
||||
char String[64];
|
||||
uint32_t String_Char_Count;
|
||||
Display_Color Color;
|
||||
|
||||
Display_Font_Set_Font(bool_data->Font->Font);
|
||||
|
||||
if(*bool_data->Value == true)
|
||||
{
|
||||
sprintf(String, "%s", bool_data->Text_True);
|
||||
String_Char_Count = bool_data->Length_True;
|
||||
Color = bool_data->Color_True;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(String, "%s", bool_data->Text_False);
|
||||
String_Char_Count = bool_data->Length_False;
|
||||
Color = bool_data->Color_False;
|
||||
}
|
||||
|
||||
Display_Font_Print_String(coordinates_object->X, coordinates_object->Y, String, String_Char_Count, bool_data->Font->Character_Spacing, Color);
|
||||
}
|
||||
|
||||
void Display_Render_Simple_Shape(Coordinates* coordinates_object, Object_Shape* shape)
|
||||
{
|
||||
int16_t X1, X2, Y1, Y2;
|
||||
|
||||
switch (shape->Type)
|
||||
{
|
||||
case RECTANGLE_FILLED:
|
||||
Display_Shapes_Draw_Rect_Filled(coordinates_object->X, coordinates_object->Y, shape->Dimension.Width, shape->Dimension.Height, shape->Color);
|
||||
break;
|
||||
|
||||
case RECTANGLE_FRAME:
|
||||
Display_Shapes_Draw_Rect_Frame(coordinates_object->X, coordinates_object->Y, shape->Dimension.Width, shape->Dimension.Height, shape->Thickness, shape->Color);
|
||||
break;
|
||||
|
||||
case ROUNDED_RECTANGLE_FILLED:
|
||||
Display_Shapes_Draw_Round_Rect_Filled(coordinates_object->X, coordinates_object->Y, shape->Dimension.Width, shape->Dimension.Height, shape->Radius_Start, shape->Color);
|
||||
break;
|
||||
|
||||
case ROUNDED_RECTANGLE_FRAME:
|
||||
Display_Shapes_Draw_Round_Rect_Frame(coordinates_object->X, coordinates_object->Y, shape->Dimension.Width, shape->Dimension.Height, shape->Radius_Start, shape->Thickness, shape->Color);
|
||||
break;
|
||||
|
||||
case CIRCLE_FILLED:
|
||||
Display_Shapes_Draw_Circle_Filled(coordinates_object->X, coordinates_object->Y, shape->Radius_Start, shape->Color);
|
||||
break;
|
||||
|
||||
case CIRCLE_FRAME:
|
||||
Display_Shapes_Draw_Circle_Frame(coordinates_object->X, coordinates_object->Y, shape->Radius_Start, shape->Thickness, shape->Color);
|
||||
break;
|
||||
|
||||
case ARC:
|
||||
Display_Shapes_Draw_Arc_Frame(coordinates_object->X, coordinates_object->Y, shape->Radius_Start, shape->Thickness, shape->Angle_Start, shape->Angle_End, shape->Draw_Steps, shape->Color);
|
||||
break;
|
||||
|
||||
case LINE_XY:
|
||||
X2 = shape->Angle_Start - _Transition_Settings->Offset.X; // Angle Start contains X2
|
||||
Y2 = shape->Angle_End - _Transition_Settings->Offset.Y; // Angle End contains Y2
|
||||
Display_Shapes_Draw_Line_XY(coordinates_object->X, coordinates_object->Y, X1, Y2, shape->Thickness, shape->Color);
|
||||
break;
|
||||
|
||||
case LINE_RAD:
|
||||
Display_Shapes_Draw_Line_Rad(coordinates_object->X, coordinates_object->Y, shape->Angle_Start, shape->Radius_Start, shape->Radius_End, shape->Thickness, shape->Color);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
|
||||
39
Firmware/Display_Render_Simple.h
Normal file
39
Firmware/Display_Render_Simple.h
Normal file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* File: Display_Render_Simple.h
|
||||
* Created: Created: Saturday September 2025 09:22:07
|
||||
* Author: Chris
|
||||
*/
|
||||
#ifndef DISPLAY_RENDER_SIMPLE_H
|
||||
#define DISPLAY_RENDER_SIMPLE_H
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "Display.h"
|
||||
#include "Display_Shapes.h"
|
||||
#include "Display_Objects.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Datatypes
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Display_Render_Simple_Init(Screen_Transition_Settings_t* transition_settings);
|
||||
|
||||
void Display_Render_Simple_Float(Coordinates* coordinates_object, Object_Float* float_data);
|
||||
void Display_Render_Simple_Integer(Coordinates* coordinates_object, Object_Integer* integer_data);
|
||||
void Display_Render_Simple_Text(Coordinates* coordinates_object, Object_Text* text_data);
|
||||
void Display_Render_Simple_Image(Coordinates* coordinates_object, Object_Image_Color* image);
|
||||
void Display_Render_Simple_Bool(Coordinates* coordinates_object, Object_Bool* bool_data);
|
||||
void Display_Render_Simple_Shape(Coordinates* coordinates_object, Object_Shape* shape);
|
||||
|
||||
|
||||
#endif // DISPLAY_RENDER_SIMPLE_H
|
||||
@@ -45,11 +45,6 @@ static dma_channel_config _DMA_Config_Drawing;
|
||||
void Display_Shapes_Draw_Rounded_Rect_Frame_1 (int16_t x, int16_t y, uint16_t width, uint16_t height, uint16_t radius, Display_Color color);
|
||||
void Display_Shapes_Draw_Circle_Frame_1 (int16_t center_x, int16_t center_y, uint16_t radius, Display_Color color);
|
||||
|
||||
void Display_Shapes_Draw_Circle_Helper(int16_t x0, int16_t y0, uint16_t radius, uint16_t thickness, uint8_t cornername, Display_Color color);
|
||||
void Display_Shapes_Draw_Circle_Helper_Improved(int16_t x0, int16_t y0, uint16_t radius, uint16_t thickness, uint8_t cornername, Display_Color color);
|
||||
void Display_Shapes_Draw_Circle_Helper_Single_Pixel(int16_t x0, int16_t y0, uint16_t radius, uint8_t cornername, Display_Color color);
|
||||
void Display_Shapes_Draw_Circle_Helper_Filled(int16_t x0, int16_t y0, uint16_t radius, uint8_t corners, int16_t delta, Display_Color color);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
@@ -84,7 +79,8 @@ void Display_Shapes_Fill_Screen(Display_Color color)
|
||||
|
||||
void Display_Shapes_Draw_Pixel_Safe(int16_t x, int16_t y, Display_Color color)
|
||||
{
|
||||
if(x >= 0 && x < DISPLAY_WIDTH && y >= 0 && y < DISPLAY_HEIGHT)
|
||||
// Cast to uint16_t purpose to reduce the amount of comparisions required
|
||||
if((uint16_t)x < DISPLAY_WIDTH && (uint16_t)y < DISPLAY_HEIGHT)
|
||||
{
|
||||
(*_Current_Buffer)->Dim_2[y][x] = color;
|
||||
}
|
||||
@@ -530,16 +526,18 @@ void Display_Shapes_Draw_Arc_Frame(int16_t center_x, int16_t center_y, int16_t r
|
||||
}
|
||||
|
||||
float Angle_Step = (float)(angle_end - angle_start) / (float)steps;
|
||||
|
||||
for (float i = angle_start; i <= angle_end; i = i + Angle_Step)
|
||||
{
|
||||
|
||||
float Angle = angle_start;
|
||||
for (int i = 0; i <= steps; i++)
|
||||
{
|
||||
if(thickness == 1) {
|
||||
Display_Shapes_Draw_Pixel_Safe(center_x + cos(i*DEG2RAD) * radius, center_y + sin(i*DEG2RAD) * radius, color);
|
||||
Display_Shapes_Draw_Pixel_Safe(center_x + cos(Angle*DEG2RAD) * radius, center_y + sin(Angle*DEG2RAD) * radius, color);
|
||||
}
|
||||
else {
|
||||
Display_Shapes_Draw_Circle_Filled(center_x + cos(i*DEG2RAD) * radius, center_y + sin(i*DEG2RAD) * radius, thickness >> 1, color);
|
||||
Display_Shapes_Draw_Circle_Filled(center_x + cos(Angle*DEG2RAD) * radius, center_y + sin(Angle*DEG2RAD) * radius, thickness >> 1, color);
|
||||
}
|
||||
|
||||
Angle += Angle_Step;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -722,189 +720,4 @@ void Display_Shapes_Draw_Circle_Frame_1(int16_t center_x, int16_t center_y, uint
|
||||
|
||||
Last_X = Data[i];
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
/*!
|
||||
@brief Quarter-circle drawer, used to do circles and roundrects
|
||||
@param x0 Center-point x coordinate
|
||||
@param y0 Center-point y coordinate
|
||||
@param r Radius of circle
|
||||
@param cornername Mask bit #1 or bit #2 to indicate which quarters of the circle we're doing
|
||||
@param color 16-bit 5-6-5 Color to draw with
|
||||
*/
|
||||
/**************************************************************************/
|
||||
void Display_Shapes_Draw_Circle_Helper(int16_t x0, int16_t y0, uint16_t radius, uint16_t thickness, uint8_t cornername, Display_Color color)
|
||||
{
|
||||
int16_t f = 1 - radius;
|
||||
int16_t ddF_x = 1;
|
||||
int16_t ddF_y = -2 * radius;
|
||||
int16_t x = 0;
|
||||
int16_t y = radius;
|
||||
|
||||
while (x < y)
|
||||
{
|
||||
if (f >= 0)
|
||||
{
|
||||
y--;
|
||||
ddF_y += 2;
|
||||
f += ddF_y;
|
||||
}
|
||||
x++;
|
||||
ddF_x += 2;
|
||||
f += ddF_x;
|
||||
|
||||
if (cornername & CORNER_BOTTOM_RIGHT)
|
||||
{
|
||||
Display_Shapes_Draw_Circle_Filled(x0 + x, y0 + y, thickness >> 1, color);
|
||||
Display_Shapes_Draw_Circle_Filled(x0 + y, y0 + x, thickness >> 1, color);
|
||||
}
|
||||
|
||||
if (cornername & CORNER_TOP_RIGHT)
|
||||
{
|
||||
Display_Shapes_Draw_Circle_Filled(x0 + x, y0 - y, thickness >> 1, color);
|
||||
Display_Shapes_Draw_Circle_Filled(x0 + y, y0 - x, thickness >> 1, color);
|
||||
}
|
||||
|
||||
if (cornername & CORNER_BOTTOM_LEFT)
|
||||
{
|
||||
Display_Shapes_Draw_Circle_Filled(x0 - x, y0 + y, thickness >> 1, color);
|
||||
Display_Shapes_Draw_Circle_Filled(x0 - y, y0 + x, thickness >> 1, color);
|
||||
}
|
||||
|
||||
if (cornername & CORNER_TOP_LEFT)
|
||||
{
|
||||
Display_Shapes_Draw_Circle_Filled(x0 - x, y0 - y, thickness >> 1, color);
|
||||
Display_Shapes_Draw_Circle_Filled(x0 - y, y0 - x, thickness >> 1, color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Display_Shapes_Draw_Circle_Helper_Improved(int16_t x0, int16_t y0, uint16_t radius, uint16_t thickness, uint8_t cornername, Display_Color color)
|
||||
{
|
||||
if (radius == 0) return;
|
||||
|
||||
// For thickness of 1, use single pixel drawing
|
||||
if (thickness == 1) {
|
||||
Display_Shapes_Draw_Circle_Helper_Single_Pixel(x0, y0, radius, cornername, color);
|
||||
return;
|
||||
}
|
||||
|
||||
// For thicker lines, draw multiple concentric quarter-circles
|
||||
// This ensures consistent thickness with the straight edges
|
||||
for (uint16_t t = 0; t < thickness; t++) {
|
||||
uint16_t current_radius = radius - t;
|
||||
if (current_radius == 0) break;
|
||||
|
||||
Display_Shapes_Draw_Circle_Helper_Single_Pixel(x0, y0, current_radius, cornername, color);
|
||||
}
|
||||
}
|
||||
|
||||
void Display_Shapes_Draw_Circle_Helper_Single_Pixel(int16_t x0, int16_t y0, uint16_t radius, uint8_t cornername, Display_Color color)
|
||||
{
|
||||
if (radius == 0) return;
|
||||
|
||||
// Use Bresenham's circle algorithm for single pixel drawing
|
||||
int16_t f = 1 - radius;
|
||||
int16_t ddF_x = 1;
|
||||
int16_t ddF_y = -2 * radius;
|
||||
int16_t x = 0;
|
||||
int16_t y = radius;
|
||||
|
||||
while (x < y) {
|
||||
if (f >= 0) {
|
||||
y--;
|
||||
ddF_y += 2;
|
||||
f += ddF_y;
|
||||
}
|
||||
x++;
|
||||
ddF_x += 2;
|
||||
f += ddF_x;
|
||||
|
||||
// Draw quarter-circle segments based on corner mask - single pixels only
|
||||
if (cornername & CORNER_TOP_LEFT) {
|
||||
Display_Shapes_Draw_Pixel_Safe(x0 - x, y0 - y, color);
|
||||
Display_Shapes_Draw_Pixel_Safe(x0 - y, y0 - x, color);
|
||||
}
|
||||
|
||||
if (cornername & CORNER_TOP_RIGHT) {
|
||||
Display_Shapes_Draw_Pixel_Safe(0 + x, y0 - y, color);
|
||||
Display_Shapes_Draw_Pixel_Safe(x0 + y, y0 - x, color);
|
||||
}
|
||||
|
||||
if (cornername & CORNER_BOTTOM_RIGHT) {
|
||||
Display_Shapes_Draw_Pixel_Safe(x0 + x, y0 + y, color);
|
||||
Display_Shapes_Draw_Pixel_Safe(x0 + y, y0 + x, color);
|
||||
}
|
||||
|
||||
if (cornername & CORNER_BOTTOM_LEFT) {
|
||||
Display_Shapes_Draw_Pixel_Safe(x0 - x, y0 + y, color);
|
||||
Display_Shapes_Draw_Pixel_Safe(x0 - y, y0 + x, color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
/*!
|
||||
@brief Quarter-circle drawer with fill, used for circles and roundrects
|
||||
@param x0 Center-point x coordinate
|
||||
@param y0 Center-point y coordinate
|
||||
@param r Radius of circle
|
||||
@param corners Mask bits indicating which quarters we're doing
|
||||
@param delta Offset from center-point, used for round-rects
|
||||
@param color 16-bit 5-6-5 Color to fill with
|
||||
*/
|
||||
/**************************************************************************/
|
||||
void Display_Shapes_Draw_Circle_Helper_Filled(int16_t x0, int16_t y0, uint16_t radius, uint8_t corners, int16_t delta, Display_Color color)
|
||||
{
|
||||
int16_t f = 1 - radius;
|
||||
int16_t ddF_x = 1;
|
||||
int16_t ddF_y = -2 * radius;
|
||||
int16_t x = 0;
|
||||
int16_t y = radius;
|
||||
int16_t px = x;
|
||||
int16_t py = y;
|
||||
|
||||
delta++; // Avoid some +1's in the loop
|
||||
|
||||
while (x < y)
|
||||
{
|
||||
if (f >= 0)
|
||||
{
|
||||
y--;
|
||||
ddF_y += 2;
|
||||
f += ddF_y;
|
||||
}
|
||||
x++;
|
||||
ddF_x += 2;
|
||||
f += ddF_x;
|
||||
|
||||
// These checks avoid double-drawing certain lines, important
|
||||
// for the SSD1306 library which has an INVERT drawing mode.
|
||||
if (x < (y + 1))
|
||||
{
|
||||
if (corners & CORNER_TOP_LEFT) {
|
||||
Display_Shapes_Draw_VLine(x0 + x, y0 - y, 2 * y + delta, 1, color);
|
||||
// writeFastVLine(x0 + x, y0 - y, 2 * y + delta, color);
|
||||
}
|
||||
if (corners & CORNER_TOP_RIGHT) {
|
||||
Display_Shapes_Draw_VLine(x0 - x, y0 - y, 2 * y + delta, 1, color);
|
||||
// writeFastVLine(x0 - x, y0 - y, 2 * y + delta, color);
|
||||
}
|
||||
}
|
||||
|
||||
if (y != py)
|
||||
{
|
||||
if (corners & CORNER_TOP_LEFT) {
|
||||
Display_Shapes_Draw_VLine(x0 + py, y0 - px, 2 * px + delta, 1, color);
|
||||
// writeFastVLine(x0 + py, y0 - px, 2 * px + delta, color);
|
||||
}
|
||||
if (corners & CORNER_TOP_RIGHT) {
|
||||
Display_Shapes_Draw_VLine(x0 - py, y0 - px, 2 * px + delta, 1, color);
|
||||
// writeFastVLine(x0 - py, y0 - px, 2 * px + delta, color);
|
||||
}
|
||||
py = y;
|
||||
}
|
||||
px = x;
|
||||
}
|
||||
}
|
||||
@@ -43,5 +43,4 @@ void Display_Shapes_Draw_Glow_Circle (int16_t center_x, int16_t center_y,
|
||||
|
||||
Coordinates Display_Shapes_Polar_To_XY (int16_t origin_x, int16_t origin_y, float angle, uint16_t radius);
|
||||
|
||||
|
||||
#endif /* DISPLAY_SHAPES_H_ */
|
||||
|
||||
@@ -140,17 +140,27 @@ bool EEPROM_Write_Data(uint section)
|
||||
|
||||
void EEPROM_Check_Content_Valid()
|
||||
{
|
||||
if(_EEPROM_Content.Device_Configuration.Idle_Screen > IDLE_SCREEN_MODE_ACTIVITY) {
|
||||
if((uint32_t)_EEPROM_Content.Device_Configuration.Idle_Screen > IDLE_SCREEN_MODE_ACTIVITY) {
|
||||
_EEPROM_Content.Device_Configuration.Idle_Screen = IDLE_SCREEN_BLACK;
|
||||
}
|
||||
|
||||
if(_EEPROM_Content.Device_Configuration.Screen_Timeout > SCREEN_TIMEOUT_MAX_s) {
|
||||
_EEPROM_Content.Device_Configuration.Screen_Timeout = SCREEN_TIMEOUT_MAX_s;
|
||||
}
|
||||
|
||||
if(_EEPROM_Content.Device_Configuration.Screen_Timeout < SCREEN_TIMEOUT_MIN_s) {
|
||||
_EEPROM_Content.Device_Configuration.Screen_Timeout = SCREEN_TIMEOUT_MIN_s;
|
||||
}
|
||||
|
||||
// Reverse Scrolling no need, as bool is compared with equal to 0
|
||||
if((uint32_t)_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling > 1) {
|
||||
_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling = 1;
|
||||
}
|
||||
|
||||
if(_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].MIDI_Channel > MIDI_CHANNEL_16) {
|
||||
if((uint32_t)_EEPROM_Content.Device_Configuration.Use_Color_Correction > 1) {
|
||||
_EEPROM_Content.Device_Configuration.Use_Color_Correction = 1;
|
||||
}
|
||||
|
||||
if((uint32_t)_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].MIDI_Channel > MIDI_CHANNEL_16) {
|
||||
_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].MIDI_Channel = MIDI_CHANNEL_1;
|
||||
}
|
||||
|
||||
@@ -161,23 +171,33 @@ void EEPROM_Check_Content_Valid()
|
||||
|
||||
// Note Colors no need, as full range of UINT8 is valid
|
||||
|
||||
if(_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Skip_Note_Off_Event > 1) {
|
||||
if((uint32_t)_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Skip_Note_Off_Event > 1) {
|
||||
_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Skip_Note_Off_Event = 1;
|
||||
}
|
||||
|
||||
// Pause Light Enabled no need, as bool is compared with equal to 0
|
||||
if((uint32_t)_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Note_Reset_Enabled > 1) {
|
||||
_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Note_Reset_Enabled = 1;
|
||||
}
|
||||
|
||||
if((uint32_t)_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Note_Reset_Timeout > 600) {
|
||||
_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Note_Reset_Timeout = 600;
|
||||
}
|
||||
|
||||
if((uint32_t)_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Enabled > 1) {
|
||||
_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Enabled = 1;
|
||||
}
|
||||
|
||||
// Pause Light Color no need, as full range of UINT8 is valid
|
||||
|
||||
if(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout > PAUSE_LIGHT_DELAY_MAX_s) {
|
||||
if((uint32_t)_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout > PAUSE_LIGHT_DELAY_MAX_s) {
|
||||
_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout = PAUSE_LIGHT_DELAY_MIN_s;
|
||||
}
|
||||
|
||||
if(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Reset_Condition > CHANNEL_AND_EVENT_MATCH) {
|
||||
if((uint32_t)_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Reset_Condition > CHANNEL_AND_EVENT_MATCH) {
|
||||
_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Reset_Condition = ANY_TRAFFIC;
|
||||
}
|
||||
|
||||
if(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Fade_Speed > FADE_SPEED_MAX) {
|
||||
if((uint32_t)_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Fade_Speed > FADE_SPEED_MAX) {
|
||||
_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Fade_Speed = FADE_SPEED_MIN;
|
||||
}
|
||||
|
||||
@@ -185,16 +205,16 @@ void EEPROM_Check_Content_Valid()
|
||||
|
||||
// Note Stack Enabled no need, as bool is compared with equal to 0
|
||||
|
||||
if(_EEPROM_Content.Jam_Light_Configuration.Duration_Max_s > DURATION_MAX_s) {
|
||||
_EEPROM_Content.Jam_Light_Configuration.Duration_Max_s = DURATION_MAX_s;
|
||||
if((uint32_t)_EEPROM_Content.Jam_Light_Configuration.Durations.Max > DURATION_MAX_s) {
|
||||
_EEPROM_Content.Jam_Light_Configuration.Durations.Max = DURATION_MAX_s;
|
||||
}
|
||||
|
||||
if(_EEPROM_Content.Jam_Light_Configuration.Duration_Min_s > _EEPROM_Content.Jam_Light_Configuration.Duration_Max_s || _EEPROM_Content.Jam_Light_Configuration.Duration_Min_s < DURATION_MIN_s) {
|
||||
_EEPROM_Content.Jam_Light_Configuration.Duration_Min_s = DURATION_MIN_s;
|
||||
if((uint32_t)_EEPROM_Content.Jam_Light_Configuration.Durations.Min > _EEPROM_Content.Jam_Light_Configuration.Durations.Max || _EEPROM_Content.Jam_Light_Configuration.Durations.Min < DURATION_MIN_s) {
|
||||
_EEPROM_Content.Jam_Light_Configuration.Durations.Min = DURATION_MIN_s;
|
||||
}
|
||||
|
||||
if(_EEPROM_Content.Jam_Light_Configuration.Duration_Max_s <= _EEPROM_Content.Jam_Light_Configuration.Duration_Min_s) {
|
||||
_EEPROM_Content.Jam_Light_Configuration.Duration_Max_s = DURATION_MAX_s;
|
||||
if(_EEPROM_Content.Jam_Light_Configuration.Durations.Max <= _EEPROM_Content.Jam_Light_Configuration.Durations.Min) {
|
||||
_EEPROM_Content.Jam_Light_Configuration.Durations.Max = DURATION_MAX_s;
|
||||
}
|
||||
|
||||
while(_EEPROM_Content.Jam_Light_Configuration.Hue_Angle_Start_Color < 0) {
|
||||
@@ -203,25 +223,17 @@ void EEPROM_Check_Content_Valid()
|
||||
|
||||
_EEPROM_Content.Jam_Light_Configuration.Hue_Angle_Start_Color %= HUE_MAX_ANGLE;
|
||||
|
||||
if(_EEPROM_Content.Jam_Light_Configuration.Color_Change > COLOR_CHANGE_MAX) {
|
||||
if((uint32_t)_EEPROM_Content.Jam_Light_Configuration.Color_Change > COLOR_CHANGE_MAX) {
|
||||
_EEPROM_Content.Jam_Light_Configuration.Color_Change = COLOR_CHANGE_MIN;
|
||||
}
|
||||
|
||||
if(_EEPROM_Content.Jam_Light_Configuration.Fade_Speed > FADE_SPEED_MAX) {
|
||||
if((uint32_t)_EEPROM_Content.Jam_Light_Configuration.Fade_Speed > FADE_SPEED_MAX) {
|
||||
_EEPROM_Content.Jam_Light_Configuration.Fade_Speed = FADE_SPEED_MIN;
|
||||
}
|
||||
|
||||
// Const Color no need, as full range of UINT8 is valid
|
||||
|
||||
if(_EEPROM_Content.Const_Light_Configuration.Fade_Speed > FADE_SPEED_MAX) {
|
||||
if((uint32_t)_EEPROM_Content.Const_Light_Configuration.Fade_Speed > FADE_SPEED_MAX) {
|
||||
_EEPROM_Content.Const_Light_Configuration.Fade_Speed = FADE_SPEED_MIN;
|
||||
}
|
||||
|
||||
if(_EEPROM_Content.Device_Configuration.Transition_Type >= 0) {
|
||||
_EEPROM_Content.Device_Configuration.Transition_Type = 0;
|
||||
}
|
||||
|
||||
if(_EEPROM_Content.Device_Configuration.Transition_Frames == 0) {
|
||||
_EEPROM_Content.Device_Configuration.Transition_Frames = 16;
|
||||
}
|
||||
}
|
||||
@@ -30,12 +30,11 @@
|
||||
// Datatypes
|
||||
|
||||
typedef struct {
|
||||
uint8_t Idle_Screen;
|
||||
uint Screen_Timeout;
|
||||
int32_t Idle_Screen;
|
||||
int32_t Screen_Timeout;
|
||||
uint8_t Reverse_List_Scrolling;
|
||||
uint8_t Transition_Type;
|
||||
uint8_t Transition_Frames;
|
||||
uint8_t Use_Color_Correction;
|
||||
int32_t Current_Threshold;
|
||||
} __packed Device_Configuration_s;
|
||||
|
||||
typedef struct
|
||||
|
||||
109
Firmware/Fonts/Font_DejaVu_Sans_Mono_15x25.c
Normal file
109
Firmware/Fonts/Font_DejaVu_Sans_Mono_15x25.c
Normal file
@@ -0,0 +1,109 @@
|
||||
#include <stdint.h>
|
||||
|
||||
const uint8_t _Font_DejaVu_Sans_Mono_15x25[] = {
|
||||
0x00, 0x00, // Size of zero indicates fixed width font, actual length is width * height
|
||||
0x0f, // Width
|
||||
0x19, // Height
|
||||
0x20, // First Character
|
||||
0x5f, // Character Count
|
||||
|
||||
// Fixed width; char width table not used !!!!
|
||||
|
||||
// Font Data
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // !
|
||||
0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // "
|
||||
0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xfe, 0xc2, 0xc0, 0xc0, 0xfe, 0xde, 0xc0, 0xc0, 0x00, 0x30, 0x30, 0x30, 0xf0, 0x7f, 0x37, 0x30, 0xf0, 0xfc, 0x3f, 0x31, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x04, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #
|
||||
0x00, 0x00, 0xc0, 0xe0, 0x60, 0x30, 0x30, 0xfe, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x0c, 0x0c, 0xff, 0x18, 0x18, 0x38, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x06, 0x06, 0x06, 0x7f, 0x06, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // $
|
||||
0x38, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x20, 0x30, 0x18, 0x08, 0x0c, 0x04, 0xc2, 0xe3, 0x31, 0x31, 0x30, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x06, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // %
|
||||
0x00, 0x00, 0x00, 0x78, 0xfc, 0x8e, 0x06, 0x06, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfc, 0x86, 0x03, 0x03, 0x07, 0x1c, 0x38, 0x70, 0xe0, 0xc0, 0xe0, 0x7c, 0x3c, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x07, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // &
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // '
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, 0x7c, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // (
|
||||
0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x7c, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x38, 0x1f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // )
|
||||
0x00, 0x00, 0x08, 0x98, 0x90, 0xf0, 0x60, 0xfe, 0x60, 0xf0, 0x90, 0x98, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // *
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xff, 0xff, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // +
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3f, 0x1f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // -
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, 0x7c, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x78, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // /
|
||||
0x00, 0x00, 0xe0, 0xf8, 0x3c, 0x0e, 0x06, 0x06, 0x06, 0x0e, 0x3c, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x06, 0x06, 0x06, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0
|
||||
0x00, 0x00, 0x00, 0x0c, 0x0c, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 1
|
||||
0x00, 0x00, 0x0c, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x38, 0x0e, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 2
|
||||
0x00, 0x00, 0x00, 0x0c, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x0f, 0x0f, 0xf9, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 3
|
||||
0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x70, 0x1c, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x7c, 0x6e, 0x63, 0x61, 0x60, 0x60, 0x60, 0xff, 0xff, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 4
|
||||
0x00, 0x00, 0x00, 0xfe, 0xfe, 0x86, 0x86, 0x86, 0x86, 0x86, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x87, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 5
|
||||
0x00, 0x00, 0xc0, 0xf0, 0x3c, 0x0c, 0x8e, 0x86, 0x86, 0x86, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x86, 0x03, 0x01, 0x01, 0x01, 0x03, 0x87, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 6
|
||||
0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xe6, 0xfe, 0x3e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xfc, 0x1f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 7
|
||||
0x00, 0x00, 0xf8, 0xfc, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf9, 0x0f, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0f, 0xf9, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 8
|
||||
0x00, 0x00, 0xf0, 0xfc, 0x1c, 0x0e, 0x06, 0x06, 0x06, 0x0e, 0x1c, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x0c, 0xc6, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 9
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // :
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3f, 0x1f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ;
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x66, 0x66, 0xc3, 0xc3, 0xc3, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // <
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // =
|
||||
0x00, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0xc3, 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // >
|
||||
0x00, 0x00, 0x00, 0x18, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x8e, 0xfc, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3e, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ?
|
||||
0x00, 0x00, 0x80, 0xe0, 0x60, 0x30, 0x38, 0x18, 0x18, 0x18, 0x18, 0x38, 0x70, 0xe0, 0xc0, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xfe, 0x87, 0x03, 0x03, 0x03, 0x86, 0xff, 0xff, 0x00, 0x01, 0x07, 0x0f, 0x1c, 0x38, 0x30, 0x61, 0x63, 0x63, 0x63, 0x63, 0x61, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // @
|
||||
0x00, 0x00, 0x00, 0x00, 0xc0, 0xfc, 0x3e, 0x3e, 0xfc, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfe, 0x7f, 0x63, 0x60, 0x60, 0x63, 0x7f, 0xfc, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // A
|
||||
0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x0f, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // B
|
||||
0x00, 0xc0, 0xf0, 0x38, 0x0c, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // C
|
||||
0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x0c, 0x38, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // D
|
||||
0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // E
|
||||
0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // F
|
||||
0x00, 0xc0, 0xf0, 0x38, 0x0c, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x0c, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G
|
||||
0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // H
|
||||
0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // I
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // J
|
||||
0x00, 0xfe, 0xfe, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x03, 0x07, 0x0e, 0x3c, 0x70, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // K
|
||||
0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // L
|
||||
0x00, 0xfe, 0xfe, 0x1e, 0xf8, 0xc0, 0x00, 0x00, 0xc0, 0xf8, 0x1e, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x07, 0x1e, 0x1e, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // M
|
||||
0x00, 0xfe, 0xfe, 0x1e, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0x0f, 0x7c, 0xf0, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // N
|
||||
0x00, 0xe0, 0xf8, 0x3c, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x3c, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // O
|
||||
0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x0c, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // P
|
||||
0x00, 0xe0, 0xf8, 0x3c, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x3c, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x06, 0x0e, 0x1f, 0x3b, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Q
|
||||
0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x0c, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x3f, 0xf1, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // R
|
||||
0x00, 0xf0, 0xfc, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, 0x06, 0x06, 0x06, 0x0c, 0x1c, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // S
|
||||
0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // T
|
||||
0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // U
|
||||
0x00, 0x06, 0x7e, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf8, 0x7e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3f, 0xfc, 0xc0, 0xc0, 0xfc, 0x7f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // V
|
||||
0x1e, 0xfe, 0xf0, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0xf0, 0xfe, 0x1e, 0x00, 0x00, 0x0f, 0xff, 0xf8, 0xf0, 0x7f, 0x07, 0x07, 0x7f, 0xf0, 0xf8, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // W
|
||||
0x00, 0x02, 0x0e, 0x1e, 0x78, 0xe0, 0x80, 0x80, 0xe0, 0x78, 0x1e, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0x3d, 0x0f, 0x1f, 0x7d, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // X
|
||||
0x02, 0x06, 0x1e, 0x78, 0xe0, 0xc0, 0x00, 0x00, 0xc0, 0xe0, 0x78, 0x1e, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Y
|
||||
0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xc6, 0xf6, 0x7e, 0x1e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x70, 0x3c, 0x1e, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Z
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [
|
||||
0x00, 0x02, 0x0e, 0x7c, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1e, 0x78, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // "\"
|
||||
0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ]
|
||||
0x00, 0x80, 0xc0, 0xe0, 0x38, 0x1c, 0x0e, 0x06, 0x0e, 0x1c, 0x38, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ^
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, // _
|
||||
0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x06, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // `
|
||||
0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf1, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x99, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x01, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // a
|
||||
0x00, 0x00, 0xfe, 0xfe, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x01, 0x83, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x03, 0x03, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // b
|
||||
0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // c
|
||||
0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x01, 0x83, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x03, 0x03, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // d
|
||||
0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x9b, 0x19, 0x18, 0x18, 0x18, 0x18, 0x19, 0x1f, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // e
|
||||
0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // f
|
||||
0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x01, 0x83, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xc3, 0xc7, 0xc6, 0xc6, 0xc6, 0xc3, 0x63, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // g
|
||||
0x00, 0x00, 0xfe, 0xfe, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // h
|
||||
0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xce, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // i
|
||||
0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xce, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // j
|
||||
0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x38, 0x1c, 0x1e, 0x7f, 0xe3, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // k
|
||||
0x00, 0x06, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // l
|
||||
0x00, 0x00, 0xc0, 0xc0, 0x80, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // m
|
||||
0x00, 0x00, 0xc0, 0xc0, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // n
|
||||
0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x01, 0x83, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // o
|
||||
0x00, 0x00, 0xc0, 0xc0, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x01, 0x83, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x03, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // p
|
||||
0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x01, 0x83, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x03, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // q
|
||||
0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // r
|
||||
0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x1d, 0x18, 0x18, 0x18, 0x38, 0x30, 0x30, 0xf1, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // s
|
||||
0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // t
|
||||
0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x01, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // u
|
||||
0x00, 0x00, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3f, 0xfc, 0xe0, 0x00, 0xe0, 0xfc, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // v
|
||||
0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x1f, 0xff, 0xf0, 0x00, 0xf0, 0x3c, 0x3c, 0xf0, 0x00, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x01, 0x00, 0x00, 0x01, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // w
|
||||
0x00, 0x00, 0x40, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc7, 0xfe, 0x3c, 0xfe, 0xc7, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x07, 0x01, 0x00, 0x00, 0x00, 0x01, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // x
|
||||
0x00, 0x00, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1f, 0xfc, 0xf0, 0x80, 0xe0, 0xfc, 0x1f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xe0, 0x7b, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // y
|
||||
0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // z
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x3c, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // |
|
||||
0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xff, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // }
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // ~
|
||||
};
|
||||
|
||||
368
Firmware/Hierarchical_Menu.c
Normal file
368
Firmware/Hierarchical_Menu.c
Normal file
@@ -0,0 +1,368 @@
|
||||
/*
|
||||
* File: Hierarchical_Menu.c
|
||||
*
|
||||
* Created: Created: Sunday September 2025 07:47:28
|
||||
* Author: Chris
|
||||
*/
|
||||
#include "Hierarchical_Menu.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "Screens.h"
|
||||
#include "EEPROM_M24C64.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Forward Declaration
|
||||
static const Menu_Item _Menu_Items_MIDI_Config[];
|
||||
static const Menu_Item _Menu_Items_MIDI_Notes[];
|
||||
static const Menu_Item _Menu_Items_MIDI_Pause[];
|
||||
static const Menu_Item _Menu_Items_MIDI[];
|
||||
|
||||
static const Menu_List _Menu_List_MIDI_Config;
|
||||
static const Menu_List _Menu_List_MIDI_Notes;
|
||||
static const Menu_List _Menu_List_MIDI_Pause;
|
||||
static const Menu_List _Menu_List_MIDI;
|
||||
const Hierarchical_Menu _Hierarchical_Menu_MIDI;
|
||||
|
||||
|
||||
static const Menu_Item _Menu_Items_Jam[];
|
||||
static const Menu_List _Menu_List_Jam;
|
||||
const Hierarchical_Menu _Hierarchical_Menu_Jam;
|
||||
|
||||
|
||||
static const Menu_Item _Menu_Items_Const_Light[];
|
||||
static const Menu_List _Menu_List_Const_Light;
|
||||
const Hierarchical_Menu _Hierarchical_Menu_Const_Light;
|
||||
|
||||
|
||||
static const Menu_Item _Menu_Items_Device[];
|
||||
static const Menu_List _Menu_List_Device;
|
||||
const Hierarchical_Menu _Hierarchical_Menu_Device;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables Configuration
|
||||
static const Menu_Configuration_Select_Value _Select_Value_Octave = {
|
||||
.Min = -2,
|
||||
.Max = 8,
|
||||
.Value_Display_Ratio = 1,
|
||||
.Format = "Octave %+d",
|
||||
.Use_Acceleration = false,
|
||||
.Cycle_Selector = false
|
||||
};
|
||||
|
||||
static const Menu_Configuration_Select_Value _Select_Value_Fade_Speed = {
|
||||
.Min = 1,
|
||||
.Max = UINT8_MAX,
|
||||
.Value_Display_Ratio = 1,
|
||||
.Format = "%u",
|
||||
.Use_Acceleration = true,
|
||||
.Cycle_Selector = true
|
||||
};
|
||||
|
||||
static const Menu_Configuration_Select_Value _Select_Value_Jam_Start_Color = {
|
||||
.Min = 0,
|
||||
.Max = 359,
|
||||
.Value_Display_Ratio = 1,
|
||||
.Format = "%u Deg",
|
||||
.Use_Acceleration = true,
|
||||
.Cycle_Selector = true
|
||||
};
|
||||
|
||||
static const Menu_Configuration_Select_Value _Select_Value_Jam_Color_Change = {
|
||||
.Min = COLOR_CHANGE_MIN,
|
||||
.Max = COLOR_CHANGE_MAX,
|
||||
.Value_Display_Ratio = 1,
|
||||
.Format = "%u Deg",
|
||||
.Use_Acceleration = false,
|
||||
.Cycle_Selector = false
|
||||
};
|
||||
|
||||
static const Menu_Configuration_Select_MinMax _Select_MinMax_Jam_Durations = {
|
||||
.Min = DURATION_MIN_s,
|
||||
.Max = DURATION_MAX_s,
|
||||
.Format_Max = "Max: %03us",
|
||||
.Format_Min = "Min: %03us",
|
||||
.Use_Acceleration = false,
|
||||
.Cycle_Selector = false
|
||||
};
|
||||
|
||||
static const Menu_Configuration_Select_Value _Select_Value_Timeout = {
|
||||
.Min = 1,
|
||||
.Max = 600,
|
||||
.Value_Display_Ratio = 1,
|
||||
.Format = "%u Seconds",
|
||||
.Use_Acceleration = true,
|
||||
.Cycle_Selector = false
|
||||
};
|
||||
|
||||
static const Menu_Configuration_Select_Value _Select_Value_Timeout_Device = {
|
||||
.Min = SCREEN_TIMEOUT_MIN_s,
|
||||
.Max = SCREEN_TIMEOUT_MAX_s,
|
||||
.Value_Display_Ratio = 1,
|
||||
.Format = "%u Seconds",
|
||||
.Use_Acceleration = true,
|
||||
.Cycle_Selector = false
|
||||
};
|
||||
|
||||
static const Menu_Configuration_Select_Value _Select_Value_Current_Threshold = {
|
||||
.Min = 0,
|
||||
.Max = 1000,
|
||||
.Value_Display_Ratio = 5,
|
||||
.Format = "%u mA",
|
||||
.Use_Acceleration = true,
|
||||
.Cycle_Selector = false
|
||||
};
|
||||
|
||||
static const char _Note_Names[NOTES_PER_OCTAVE][2] = {
|
||||
"C ",
|
||||
"C#",
|
||||
"D ",
|
||||
"D#",
|
||||
"E ",
|
||||
"F ",
|
||||
"F#",
|
||||
"G ",
|
||||
"G#",
|
||||
"A ",
|
||||
"A#",
|
||||
"B "
|
||||
};
|
||||
|
||||
const Menu_Configuration_Select_List _Select_List_Note_Names = {
|
||||
.Item_Names = &(_Note_Names[0][0]),
|
||||
.Name_Length = 2,
|
||||
.Item_Count = NOTES_PER_OCTAVE,
|
||||
.Use_Acceleration = false,
|
||||
.Cycle_Selector = false
|
||||
};
|
||||
|
||||
|
||||
static const char _MIDI_Channel_Names[16][10] = {
|
||||
"Channel 1",
|
||||
"Channel 2",
|
||||
"Channel 3",
|
||||
"Channel 4",
|
||||
"Channel 5",
|
||||
"Channel 6",
|
||||
"Channel 7",
|
||||
"Channel 8",
|
||||
"Channel 9",
|
||||
"Channel 10",
|
||||
"Channel 11",
|
||||
"Channel 12",
|
||||
"Channel 13",
|
||||
"Channel 14",
|
||||
"Channel 15",
|
||||
"Channel 16"
|
||||
};
|
||||
|
||||
const Menu_Configuration_Select_List _Select_List_MIDI_Channel = {
|
||||
.Item_Names = &(_MIDI_Channel_Names[0][0]),
|
||||
.Name_Length = 10,
|
||||
.Item_Count = 16,
|
||||
.Use_Acceleration = false,
|
||||
.Cycle_Selector = false
|
||||
};
|
||||
|
||||
static const char _Pause_Light_Reset[4][21] = {
|
||||
" Any Traffic ",
|
||||
" Channel Match ",
|
||||
" Event Match ",
|
||||
"Channel & Event"
|
||||
};
|
||||
|
||||
const Menu_Configuration_Select_List _Select_List_Pause_Light_Reset = {
|
||||
.Item_Names = &(_Pause_Light_Reset[0][0]),
|
||||
.Name_Length = 21,
|
||||
.Item_Count = 4,
|
||||
.Use_Acceleration = false,
|
||||
.Cycle_Selector = false
|
||||
};
|
||||
|
||||
static const char _Device_Idle_Screen[4][13] = {
|
||||
"Black ",
|
||||
"FAD Logo ",
|
||||
"Current Mode ",
|
||||
"Mode Activity"
|
||||
};
|
||||
|
||||
const Menu_Configuration_Select_List _Select_List_Device_Idle_Screen = {
|
||||
.Item_Names = &(_Device_Idle_Screen[0][0]),
|
||||
.Name_Length = 13,
|
||||
.Item_Count = 4,
|
||||
.Use_Acceleration = false,
|
||||
.Cycle_Selector = false
|
||||
};
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables Hierarchical Menu
|
||||
static const Menu_Item _Menu_Items_MIDI_Config[] = {
|
||||
{ "MIDI Channel" , NULL, false, &_Menu_List_MIDI_Config, LIST, "MIDI Channel" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].MIDI_Channel) , (void*)(&_Select_List_MIDI_Channel) },
|
||||
{ "Select Octave" , NULL, false, &_Menu_List_MIDI_Config, VALUE, "Select Octave" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].Octave) , (void*)(&_Select_Value_Octave) },
|
||||
{ "Skip Note Off" , NULL, false, &_Menu_List_MIDI_Config, BOOL, "Skip Note Off" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].Skip_Note_Off_Event) , NULL },
|
||||
{ "Note Reset Enable" , NULL, false, &_Menu_List_MIDI_Config, BOOL, "Note Reset Enable" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Reset_Enabled) , NULL },
|
||||
{ "Note Reset Timeout" , NULL, false, &_Menu_List_MIDI_Config, VALUE, "Note Reset Timeout" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Reset_Timeout) , (void*)(&_Select_Value_Timeout) },
|
||||
{ "Back" , NULL, true , &_Menu_List_MIDI_Config, NONE, "", NULL, NULL }
|
||||
};
|
||||
|
||||
static const Menu_List _Menu_List_MIDI_Config = {
|
||||
.Title = "MIDI Config",
|
||||
.Items = _Menu_Items_MIDI_Config,
|
||||
.Item_Count = sizeof(_Menu_Items_MIDI_Config) / sizeof(Menu_Item),
|
||||
.Parent = &_Menu_Items_MIDI[0],
|
||||
.Root = &_Hierarchical_Menu_MIDI
|
||||
};
|
||||
|
||||
|
||||
static const Menu_Item _Menu_Items_MIDI_Notes[] = {
|
||||
{ "Red" , NULL, false, &_Menu_List_MIDI_Notes, LIST, "Note for Red" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Color_Red) , (void*)(&_Select_List_Note_Names) },
|
||||
{ "Green" , NULL, false, &_Menu_List_MIDI_Notes, LIST, "Note for Green" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Color_Green) , (void*)(&_Select_List_Note_Names) },
|
||||
{ "Blue" , NULL, false, &_Menu_List_MIDI_Notes, LIST, "Note for Blue" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Color_Blue) , (void*)(&_Select_List_Note_Names) },
|
||||
{ "Default Notes" , NULL, false, &_Menu_List_MIDI_Notes, DEFAULT_NOTES, "Reset Color Notes", NULL, NULL },
|
||||
{ "Back" , NULL, true , &_Menu_List_MIDI_Notes, NONE, "", NULL, NULL }
|
||||
};
|
||||
|
||||
static const Menu_List _Menu_List_MIDI_Notes = {
|
||||
.Title = "Color Notes",
|
||||
.Items = _Menu_Items_MIDI_Notes,
|
||||
.Item_Count = sizeof(_Menu_Items_MIDI_Notes) / sizeof(Menu_Item),
|
||||
.Parent = &_Menu_Items_MIDI[1],
|
||||
.Root = &_Hierarchical_Menu_MIDI
|
||||
};
|
||||
|
||||
|
||||
static const Menu_Item _Menu_Items_MIDI_Pause[] = {
|
||||
{ "Enable" , NULL, false, &_Menu_List_MIDI_Pause, BOOL , "Enable Pause Light" , (void*)(&_EEPROM_Content.Pause_Light_Configuration[0].Enabled) , NULL },
|
||||
{ "Color" , NULL, false, &_Menu_List_MIDI_Pause, RGB , "Pause Light Color" , (void*)(&_EEPROM_Content.Pause_Light_Configuration[0].Color) , NULL },
|
||||
{ "Fade Speed" , NULL, false, &_Menu_List_MIDI_Pause, VALUE, "Pause Light Fade Speed" , (void*)(&_EEPROM_Content.Pause_Light_Configuration[0].Fade_Speed) , (void*)(&_Select_Value_Fade_Speed)},
|
||||
{ "Timeout" , NULL, false, &_Menu_List_MIDI_Pause, VALUE, "Pause Light Timeout" , (void*)(&_EEPROM_Content.Pause_Light_Configuration[0].Timeout) , (void*)(&_Select_Value_Timeout) },
|
||||
{ "Reset" , NULL, false, &_Menu_List_MIDI_Pause, LIST , "Pause Light Reset" , (void*)(&_EEPROM_Content.Pause_Light_Configuration[0].Reset_Condition), (void*)(&_Select_List_Pause_Light_Reset) },
|
||||
{ "Back" , NULL, true , &_Menu_List_MIDI_Pause, NONE , "", NULL, NULL }
|
||||
};
|
||||
|
||||
static const Menu_List _Menu_List_MIDI_Pause = {
|
||||
.Title = "Pause Light",
|
||||
.Items = _Menu_Items_MIDI_Pause,
|
||||
.Item_Count = sizeof(_Menu_Items_MIDI_Pause) / sizeof(Menu_Item),
|
||||
.Parent = &_Menu_Items_MIDI[2],
|
||||
.Root = &_Hierarchical_Menu_MIDI
|
||||
};
|
||||
|
||||
|
||||
static const Menu_Item _Menu_Items_MIDI[] = {
|
||||
{ "MIDI Config" , &_Menu_List_MIDI_Config , false, &_Menu_List_MIDI, NONE, "", NULL, NULL },
|
||||
{ "Color Notes" , &_Menu_List_MIDI_Notes , false, &_Menu_List_MIDI, NONE, "", NULL, NULL },
|
||||
{ "Pause Light" , &_Menu_List_MIDI_Pause , false, &_Menu_List_MIDI, NONE, "", NULL, NULL },
|
||||
{ "Back" , NULL , true , &_Menu_List_MIDI, NONE, "", NULL, NULL }
|
||||
};
|
||||
|
||||
static const Menu_List _Menu_List_MIDI = {
|
||||
.Title = "MIDI",
|
||||
.Items = _Menu_Items_MIDI,
|
||||
.Item_Count = sizeof(_Menu_Items_MIDI) / sizeof(Menu_Item),
|
||||
.Parent = NULL,
|
||||
.Root = &_Hierarchical_Menu_MIDI
|
||||
};
|
||||
|
||||
|
||||
const Hierarchical_Menu _Hierarchical_Menu_MIDI = {
|
||||
.List = &_Menu_List_MIDI,
|
||||
.Parent_Function = &Screen_Setup_Settings,
|
||||
.Parent_Selected_Setting = 0
|
||||
};
|
||||
|
||||
|
||||
|
||||
static const Menu_Item _Menu_Items_Jam[] = {
|
||||
{ "Start Color" , NULL, false, &_Menu_List_Jam, HUE, "Hue Angle Start Color", (void*)(&_EEPROM_Content.Jam_Light_Configuration.Hue_Angle_Start_Color), (void*)(&_Select_Value_Jam_Start_Color) },
|
||||
{ "Color Change" , NULL, false, &_Menu_List_Jam, VALUE, "Max Color Change", (void*)(&_EEPROM_Content.Jam_Light_Configuration.Color_Change), (void*)(&_Select_Value_Jam_Color_Change) },
|
||||
{ "Durations" , NULL, false, &_Menu_List_Jam, MINMAX, "Set Durations", (void*)(&_EEPROM_Content.Jam_Light_Configuration.Durations), (void*)(&_Select_MinMax_Jam_Durations) },
|
||||
{ "Fade Speed" , NULL, false, &_Menu_List_Jam, VALUE, "Jam Fade Speed", (void*)(&_EEPROM_Content.Jam_Light_Configuration.Fade_Speed), (void*)(&_Select_Value_Fade_Speed) },
|
||||
{ "Back" , NULL, true , &_Menu_List_Jam, NONE, "", NULL, NULL }
|
||||
};
|
||||
|
||||
static const Menu_List _Menu_List_Jam = {
|
||||
.Title = "Jam Mode",
|
||||
.Items = _Menu_Items_Jam,
|
||||
.Item_Count = sizeof(_Menu_Items_Jam) / sizeof(Menu_Item),
|
||||
.Parent = NULL,
|
||||
.Root = &_Hierarchical_Menu_Jam
|
||||
};
|
||||
|
||||
|
||||
const Hierarchical_Menu _Hierarchical_Menu_Jam = {
|
||||
.List = &_Menu_List_Jam,
|
||||
.Parent_Function = &Screen_Setup_Settings,
|
||||
.Parent_Selected_Setting = 1
|
||||
};
|
||||
|
||||
|
||||
|
||||
static const Menu_Item _Menu_Items_Const_Light[] = {
|
||||
{ "Color" , NULL, false, &_Menu_List_Const_Light, RGB , "Constant Light Color", (void*)(&_EEPROM_Content.Const_Light_Configuration.Color), NULL },
|
||||
{ "Fade Speed" , NULL, false, &_Menu_List_Const_Light, VALUE , "Constant Light Fade" , (void*)(&_EEPROM_Content.Const_Light_Configuration.Fade_Speed), (void*)(&_Select_Value_Fade_Speed) },
|
||||
{ "Back" , NULL, true , &_Menu_List_Const_Light, NONE , "", NULL, NULL }
|
||||
};
|
||||
|
||||
static const Menu_List _Menu_List_Const_Light = {
|
||||
.Title = "Constant Light",
|
||||
.Items = _Menu_Items_Const_Light,
|
||||
.Item_Count = sizeof(_Menu_Items_Const_Light) / sizeof(Menu_Item),
|
||||
.Parent = NULL,
|
||||
.Root = &_Hierarchical_Menu_Const_Light
|
||||
};
|
||||
|
||||
|
||||
const Hierarchical_Menu _Hierarchical_Menu_Const_Light = {
|
||||
.List = &_Menu_List_Const_Light,
|
||||
.Parent_Function = &Screen_Setup_Settings,
|
||||
.Parent_Selected_Setting = 2
|
||||
};
|
||||
|
||||
|
||||
|
||||
static const Menu_Item _Menu_Items_Device[] = {
|
||||
{ "Idle Screen " , NULL, false, &_Menu_List_Device, LIST, "Idle Screen" , (void*)(&_EEPROM_Content.Device_Configuration.Idle_Screen) , (void*)(&_Select_List_Device_Idle_Screen) },
|
||||
{ "Screen Timeout" , NULL, false, &_Menu_List_Device, VALUE, "Screen Timeout" , (void*)(&_EEPROM_Content.Device_Configuration.Screen_Timeout) , (void*)(&_Select_Value_Timeout_Device) },
|
||||
{ "Rev. List Scroll" , NULL, false, &_Menu_List_Device, BOOL, "Reverse Scrolling" , (void*)(&_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling) , NULL },
|
||||
{ "Color Correction" , NULL, false, &_Menu_List_Device, BOOL, "Color Correction" , (void*)(&_EEPROM_Content.Device_Configuration.Use_Color_Correction) , NULL },
|
||||
{ "Current Threshold" , NULL, false, &_Menu_List_Device, VALUE, "Current Threshold" , (void*)(&_EEPROM_Content.Device_Configuration.Current_Threshold) , (void*)(&_Select_Value_Current_Threshold) },
|
||||
{ "Reboot Device" , NULL, false, &_Menu_List_Device, REBOOT, "", NULL, NULL },
|
||||
{ "Back" , NULL, true , &_Menu_List_Device, NONE, "", NULL, NULL }
|
||||
};
|
||||
|
||||
static const Menu_List _Menu_List_Device = {
|
||||
.Title = "Device Settings",
|
||||
.Items = _Menu_Items_Device,
|
||||
.Item_Count = sizeof(_Menu_Items_Device) / sizeof(Menu_Item),
|
||||
.Parent = NULL,
|
||||
.Root = &_Hierarchical_Menu_Device
|
||||
};
|
||||
|
||||
|
||||
const Hierarchical_Menu _Hierarchical_Menu_Device = {
|
||||
.List = &_Menu_List_Device,
|
||||
.Parent_Function = &Screen_Setup_Settings,
|
||||
.Parent_Selected_Setting = 3
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
|
||||
107
Firmware/Hierarchical_Menu.h
Normal file
107
Firmware/Hierarchical_Menu.h
Normal file
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
* File: Hierarchical_Menu.h
|
||||
* Created: Created: Sunday September 2025 07:47:35
|
||||
* Author: Chris
|
||||
*/
|
||||
#ifndef HIERARCHICAL_MENU_H
|
||||
#define HIERARCHICAL_MENU_H
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "Display.h"
|
||||
#include "Display_Objects.h"
|
||||
#include "Display_Objects_Datatypes.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Forward declarations
|
||||
typedef struct Menu_Item_s Menu_Item;
|
||||
typedef struct Menu_List_s Menu_List;
|
||||
typedef struct Hierarchical_Menu_s Hierarchical_Menu;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Datatypes
|
||||
typedef enum {
|
||||
NONE,
|
||||
BOOL,
|
||||
RGB,
|
||||
VALUE,
|
||||
LIST,
|
||||
DEFAULT_NOTES,
|
||||
REBOOT,
|
||||
HUE,
|
||||
MINMAX
|
||||
} Variable_Type;
|
||||
|
||||
typedef struct {
|
||||
const int32_t Min;
|
||||
const int32_t Max;
|
||||
const int32_t Value_Display_Ratio;
|
||||
const char* Format;
|
||||
const bool Use_Acceleration;
|
||||
const bool Cycle_Selector;
|
||||
} Menu_Configuration_Select_Value;
|
||||
|
||||
typedef struct {
|
||||
const char* Item_Names;
|
||||
const uint32_t Name_Length;
|
||||
const uint32_t Item_Count;
|
||||
|
||||
const bool Use_Acceleration;
|
||||
const bool Cycle_Selector;
|
||||
} Menu_Configuration_Select_List;
|
||||
|
||||
typedef struct {
|
||||
const int32_t Min;
|
||||
const int32_t Max;
|
||||
const int32_t Value_Display_Ratio;
|
||||
const char* Format_Min;
|
||||
const char* Format_Max;
|
||||
const bool Use_Acceleration;
|
||||
const bool Cycle_Selector;
|
||||
} Menu_Configuration_Select_MinMax;
|
||||
|
||||
|
||||
|
||||
typedef struct Menu_Item_s {
|
||||
const char* Text;
|
||||
const Menu_List* List;
|
||||
const bool Is_Back;
|
||||
const Menu_List* Containing_List;
|
||||
|
||||
const Variable_Type Type;
|
||||
const char* Variable_Title;
|
||||
const void* Variable;
|
||||
const void* Configuration;
|
||||
} Menu_Item;
|
||||
|
||||
typedef struct Menu_List_s {
|
||||
const char* Title;
|
||||
const Menu_Item* Items;
|
||||
const uint32_t Item_Count;
|
||||
const Menu_Item* Parent;
|
||||
const Hierarchical_Menu* Root;
|
||||
} Menu_List;
|
||||
|
||||
typedef struct Hierarchical_Menu_s {
|
||||
const Menu_List* List;
|
||||
const void (*Parent_Function)(Screen_Transition_Direction, Screen_Transition_Direction, Easing, uint32_t, int32_t);
|
||||
const int32_t Parent_Selected_Setting;
|
||||
} Hierarchical_Menu;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
|
||||
|
||||
|
||||
#endif // HIERARCHICAL_MENU_H
|
||||
@@ -10,6 +10,7 @@
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "I2C_Master.h"
|
||||
#include "EEPROM_M24C64.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
@@ -27,6 +28,7 @@
|
||||
#define INA260_ENABLE_LEN_BIT 0
|
||||
|
||||
#define UINT8_ARR_TO_UINT16(_U8_) ((uint16_t)(_U8_[0]) << 8) | (uint16_t)(_U8_[1])
|
||||
#define UINT16_SWAP_BYTES(_U16_) ((_U16_ << 8) | (_U16_ >> 8 ))
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
@@ -84,10 +86,14 @@ typedef enum _INA260_AlertLatch {
|
||||
// Variables
|
||||
static uint16_t _INA260_BusVoltage_mV;
|
||||
static uint16_t _INA260_Current_mA;
|
||||
static uint16_t _INA260_Threshold;
|
||||
|
||||
static int32_t _Written_Current_Threshold;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void INA260_Write_Register(uint8_t reg_address, uint16_t reg_data);
|
||||
uint16_t INA260_Read_Register(uint8_t reg_address);
|
||||
|
||||
|
||||
@@ -98,22 +104,42 @@ void INA260_Init()
|
||||
{
|
||||
_INA260_BusVoltage_mV = 0;
|
||||
_INA260_Current_mA = 0;
|
||||
_Written_Current_Threshold = -1;
|
||||
|
||||
uint16_t Configuration_Register_Value =
|
||||
(0 << INA260_CONGIG_RST_BIT) | // No Reset
|
||||
(INA260_COUNT_1 << INA260_CONGIG_AVG0_BIT) | // Averaging Count
|
||||
(INA260_TIME_8_244_ms << INA260_CONGIG_VBUSCT0_BIT) | // Bus Voltage Conversion Time
|
||||
(INA260_TIME_8_244_ms << INA260_CONGIG_ISHCT0_BIT) | // Shunt Current Conversion Time
|
||||
(INA260_MODE_CONTINUOUS << INA260_CONGIG_MODE1_BIT); // Operating Mode
|
||||
uint16_t Configuration_Register_Value_Reset = (1 << INA260_CONGIG_RST_BIT);
|
||||
INA260_Write_Register(INA260_REG_CONFIG, Configuration_Register_Value_Reset);
|
||||
|
||||
I2CM_Packet_Transmit(INA260_I2CADDR_DEFAULT, INA260_REG_CONFIG, 1, (uint8_t*)(&Configuration_Register_Value), 2);
|
||||
|
||||
|
||||
uint16_t Enable_Register_Value =
|
||||
(1 << INA260_ENABLE_OCL_BIT) | // Over Current Limit
|
||||
(0 << INA260_ENABLE_APOL_BIT) | // Alert Polarity Bit
|
||||
(1 << INA260_ENABLE_LEN_BIT); // Alert Latch Enable
|
||||
|
||||
I2CM_Packet_Transmit(INA260_I2CADDR_DEFAULT, INA260_REG_MASK_ENABLE, 1, (uint8_t*)(&Enable_Register_Value), 2);
|
||||
uint16_t Configuration_Register_Value =
|
||||
(0 << INA260_CONGIG_RST_BIT) | // No Reset
|
||||
(INA260_COUNT_4 << INA260_CONGIG_AVG0_BIT) | // Averaging Count
|
||||
(INA260_TIME_8_244_ms << INA260_CONGIG_VBUSCT0_BIT) | // Bus Voltage Conversion Time
|
||||
(INA260_TIME_8_244_ms << INA260_CONGIG_ISHCT0_BIT) | // Shunt Current Conversion Time
|
||||
(INA260_MODE_CONTINUOUS << INA260_CONGIG_MODE1_BIT); // Operating Mode
|
||||
|
||||
sleep_ms(20);
|
||||
INA260_Update_Current_Threshold();
|
||||
sleep_ms(20);
|
||||
INA260_Write_Register(INA260_REG_CONFIG, Configuration_Register_Value);
|
||||
sleep_ms(20);
|
||||
INA260_Write_Register(INA260_REG_MASK_ENABLE, Enable_Register_Value);
|
||||
}
|
||||
|
||||
void INA260_Update_Current_Threshold()
|
||||
{
|
||||
if(_Written_Current_Threshold == _EEPROM_Content.Device_Configuration.Current_Threshold) {
|
||||
return;
|
||||
}
|
||||
|
||||
INA260_Write_Register(INA260_REG_ALERT_LIMIT, (uint16_t)(_EEPROM_Content.Device_Configuration.Current_Threshold * 4));
|
||||
|
||||
_Written_Current_Threshold = _EEPROM_Content.Device_Configuration.Current_Threshold;
|
||||
}
|
||||
|
||||
void INA260_Read_BusVoltage()
|
||||
@@ -130,6 +156,13 @@ void INA260_Read_Current()
|
||||
_INA260_Current_mA = (int16_t)((INA260_Current * 1250) / 1000);
|
||||
}
|
||||
|
||||
void INA260_Read_Threshold()
|
||||
{
|
||||
uint16_t INA260_Threshold = (uint16_t)INA260_Read_Register(INA260_REG_ALERT_LIMIT);
|
||||
|
||||
_INA260_Threshold = (uint16_t)(INA260_Threshold);
|
||||
}
|
||||
|
||||
uint16_t INA260_Get_BusVoltage_mV()
|
||||
{
|
||||
return _INA260_BusVoltage_mV;
|
||||
@@ -140,10 +173,21 @@ uint16_t INA260_Get_Current_mA()
|
||||
return _INA260_Current_mA;
|
||||
}
|
||||
|
||||
uint16_t INA260_Get_Threshold()
|
||||
{
|
||||
return _INA260_Threshold;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
void INA260_Write_Register(uint8_t reg_address, uint16_t reg_data)
|
||||
{
|
||||
uint16_t Swapped_Data = UINT16_SWAP_BYTES(reg_data);
|
||||
I2CM_Packet_Transmit(INA260_I2CADDR_DEFAULT, reg_address, 1, (uint8_t*)(&Swapped_Data), 2);
|
||||
}
|
||||
|
||||
uint16_t INA260_Read_Register(uint8_t reg_address)
|
||||
{
|
||||
uint8_t Receive_Data[2];
|
||||
@@ -151,4 +195,4 @@ uint16_t INA260_Read_Register(uint8_t reg_address)
|
||||
I2CM_Packet_Receive(INA260_I2CADDR_DEFAULT, reg_address, 1, Receive_Data, 2);
|
||||
|
||||
return UINT8_ARR_TO_UINT16(Receive_Data);
|
||||
}
|
||||
}
|
||||
@@ -20,7 +20,7 @@
|
||||
#define INA260_REG_BUSVOLTAGE 0x02 ///< Bus voltage measurement register in mV
|
||||
#define INA260_REG_POWER 0x03 ///< Power calculation register in mW
|
||||
#define INA260_REG_MASK_ENABLE 0x06 ///< Interrupt/Alert setting and checking register
|
||||
#define INA260_REG_ALERT_LIMIT 0x00 ///< Alert limit value register
|
||||
#define INA260_REG_ALERT_LIMIT 0x07 ///< Alert limit value register
|
||||
#define INA260_REG_MFG_UID 0xFE ///< Manufacturer ID Register
|
||||
#define INA260_REG_DIE_UID 0xFF ///< Die ID and Revision Register
|
||||
|
||||
@@ -32,12 +32,15 @@
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void INA260_Init();
|
||||
void INA260_Update_Current_Threshold();
|
||||
|
||||
void INA260_Read_BusVoltage();
|
||||
void INA260_Read_Current();
|
||||
void INA260_Read_Threshold();
|
||||
|
||||
uint16_t INA260_Get_BusVoltage_mV();
|
||||
uint16_t INA260_Get_Current_mA();
|
||||
uint16_t INA260_Get_Threshold();
|
||||
|
||||
|
||||
|
||||
|
||||
139
Firmware/Images/Image_Check_Green_128x128.c
Normal file
139
Firmware/Images/Image_Check_Green_128x128.c
Normal file
@@ -0,0 +1,139 @@
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
|
||||
const uint16_t _Image_Check_Green_128x128[3 + 16384] = {
|
||||
128, // Image Width
|
||||
128, // Image Height
|
||||
16, // Image Data Size
|
||||
|
||||
// Image Data
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
|
||||
};
|
||||
75
Firmware/Images/Image_Check_Green_64x64.c
Normal file
75
Firmware/Images/Image_Check_Green_64x64.c
Normal file
@@ -0,0 +1,75 @@
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
|
||||
const uint16_t _Image_Check_Green_64x64[3 + 4096] = {
|
||||
64, // Image Width
|
||||
64, // Image Height
|
||||
16, // Image Data Size
|
||||
|
||||
// Image Data
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
|
||||
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
|
||||
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
|
||||
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
|
||||
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
|
||||
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
|
||||
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
|
||||
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
|
||||
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
|
||||
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
|
||||
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
|
||||
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
|
||||
};
|
||||
139
Firmware/Images/Image_Failed_Red_128x128.c
Normal file
139
Firmware/Images/Image_Failed_Red_128x128.c
Normal file
@@ -0,0 +1,139 @@
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
|
||||
const uint16_t _Image_Failed_Red_128x128[3 + 16384] = {
|
||||
128, // Image Width
|
||||
128, // Image Height
|
||||
16, // Image Data Size
|
||||
|
||||
// Image Data
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4400, 0xa908, 0xec10, 0x3019, 0x7421, 0x9629, 0xb929, 0xfb31, 0xfc31, 0x1d32, 0x1e32, 0x1e32, 0x1d32, 0xfc31, 0xfb31, 0xb929, 0x9629, 0x7421, 0x3019, 0xcc10, 0xa908, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2300, 0xaa10, 0x3119, 0x9729, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x9729, 0x3119, 0xaa10, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8808, 0x3019, 0xd929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xd929, 0x3019, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8808, 0x5321, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x5221, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2300, 0xee18, 0xda29, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x3019, 0x4400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421, 0x8708, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa908, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb729, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0xb729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x8708, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2300, 0x5321, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7521, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed10, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32, 0xee18, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6608, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3019, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0x9621, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9629, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x7521, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7521, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0x2200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2300, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2100, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x2200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb729, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9521, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7521, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9621, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9621, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6608, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed18, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32, 0x4408, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8708, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa908, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7521, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0xbe4a, 0x3e3a, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e3a, 0xbe4a, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x4300, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e7c, 0xdfde, 0xdfff, 0xdfff, 0x7fef, 0x7ead, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0x7ead, 0x7fef, 0xdfff, 0xdfff, 0xdfde, 0x3e7c, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7ead, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x1fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x1fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7ead, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xfb29, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e7c, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3e7c, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xdb31, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x8808, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xdfde, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfd6, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8808, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x5321, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5221, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe4a, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbe4a, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x8808, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e3a, 0x7fef, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7fef, 0x3e3a, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8708, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x3119, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7ead, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7ea5, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1019, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0xd929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0x1fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x1fe7, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x0000, 0x0000,
|
||||
0x0000, 0x2300, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x2200, 0x0000,
|
||||
0x0000, 0xaa10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xa910, 0x0000,
|
||||
0x0000, 0x3119, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3019, 0x0000,
|
||||
0x0000, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x0000,
|
||||
0x0000, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x0000,
|
||||
0x4400, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x4300,
|
||||
0x8910, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8808,
|
||||
0xec10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xec10,
|
||||
0x3019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1019,
|
||||
0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5421,
|
||||
0x9629, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9629,
|
||||
0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829,
|
||||
0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xdb31,
|
||||
0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31,
|
||||
0x1d32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32,
|
||||
0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32,
|
||||
0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32,
|
||||
0x1d32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32,
|
||||
0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31,
|
||||
0xfb29, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xdb31,
|
||||
0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829,
|
||||
0x9621, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9621,
|
||||
0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421,
|
||||
0x3019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1019,
|
||||
0xec10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xcc10,
|
||||
0xa908, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8808,
|
||||
0x4300, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x2300,
|
||||
0x0000, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x0000,
|
||||
0x0000, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x0000,
|
||||
0x0000, 0x3119, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3019, 0x0000,
|
||||
0x0000, 0xaa10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xa910, 0x0000,
|
||||
0x0000, 0x2300, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x2200, 0x0000,
|
||||
0x0000, 0x0000, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0x1fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x1fe7, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x3019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7ead, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7ea5, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3019, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x8808, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e3a, 0x7fef, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7fef, 0x3e3a, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8708, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe4a, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbe4a, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x5221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7e42, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5219, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x8808, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xdfde, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfd6, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8708, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xdb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e7c, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3e7c, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xdb31, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7ead, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x1fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x1fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7ead, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x4300, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e7c, 0xdfde, 0xdfff, 0xdfff, 0x7fef, 0x7ead, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0x7ead, 0x7fef, 0xdfff, 0xdfff, 0xdfde, 0x3e7c, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7e42, 0xbe4a, 0x3e3a, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e3a, 0xbe4a, 0x7e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8808, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7321, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0e19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6608, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0e19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9629, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9629, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0e19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7521, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb729, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2100, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x2200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2300, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb729, 0x2200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7521, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0e19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0x9621, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9629, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xee18, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6608, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1d32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2300, 0x5321, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7521, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9629, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8808, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6608, 0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2300, 0xee18, 0xda29, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb29, 0x3019, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8808, 0x5221, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x3221, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x3019, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0x1019, 0x8708, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0xa910, 0x3019, 0x9729, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x9729, 0x3019, 0xa910, 0x2200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4300, 0x8808, 0xec10, 0x3019, 0x5321, 0x9629, 0xb829, 0xdb31, 0xfc31, 0xfc31, 0x1e32, 0x1e32, 0xfc31, 0xfc31, 0xdb31, 0xb829, 0x9629, 0x5321, 0x3019, 0xec10, 0x8808, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
|
||||
};
|
||||
75
Firmware/Images/Image_Failed_Red_64x64.c
Normal file
75
Firmware/Images/Image_Failed_Red_64x64.c
Normal file
@@ -0,0 +1,75 @@
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
|
||||
const uint16_t _Image_Failed_Red_64x64[3 + 4096] = {
|
||||
64, // Image Width
|
||||
64, // Image Height
|
||||
16, // Image Data Size
|
||||
|
||||
// Image Data
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0xa910, 0x0f19, 0x5321, 0xb829, 0xda29, 0xfc31, 0x1d32, 0x1d32, 0xfc31, 0xda29, 0xb829, 0x7321, 0x0f19, 0xa910, 0x2200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6608, 0x3019, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x3019, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0xed18, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0xed10, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0x0f19, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x0f19, 0x2100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcb10, 0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0xcc10, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4400, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa910, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0xaa10, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1019, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7521, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7521, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5321, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1019, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaa10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xa910, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4400, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9621, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xcb10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xcb10, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x2200, 0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x2100, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xee18, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0100, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x0100, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0xed18, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0xbe8c, 0xfe94, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0xfe94, 0xbe8c, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xed18, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0x3fe7, 0xdfff, 0xdfff, 0x9ff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0x9ff7, 0xdfff, 0xdfff, 0x3fe7, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x0000, 0x0000,
|
||||
0x0000, 0x6608, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe8c, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbe8c, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x6508, 0x0000,
|
||||
0x0000, 0x3019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe94, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xfe94, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3019, 0x0000,
|
||||
0x0000, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x9ff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x9ff7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0x0000,
|
||||
0x2200, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x2200,
|
||||
0xa910, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xa910,
|
||||
0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0e19,
|
||||
0x7321, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321,
|
||||
0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829,
|
||||
0xda29, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xda29,
|
||||
0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31,
|
||||
0x1d32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32,
|
||||
0x1d32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32,
|
||||
0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31,
|
||||
0xda29, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xda29,
|
||||
0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829,
|
||||
0x7321, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321,
|
||||
0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0e19,
|
||||
0xa910, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xa910,
|
||||
0x2200, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x2200,
|
||||
0x0000, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x9ff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x9ff7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0x0000,
|
||||
0x0000, 0x3019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe94, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xfe94, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1019, 0x0000,
|
||||
0x0000, 0x6608, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe8c, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbe8c, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x6508, 0x0000,
|
||||
0x0000, 0x0000, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0x3fe7, 0xdfff, 0xdfff, 0x9ff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0x9ff7, 0xdfff, 0xdfff, 0x3fe7, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0xed10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0xbe8c, 0xde94, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0xfe94, 0xbe8c, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xed10, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0100, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x0100, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xee18, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x2100, 0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x0100, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0xcb10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xaa10, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9629, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4300, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8910, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xa910, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8910, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0xaa10, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4300, 0x9629, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9629, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8910, 0xdb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0xcb10, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2100, 0x0e19, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x0e19, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0xed18, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0xed10, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6508, 0x3019, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0x1019, 0x4508, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0xa910, 0x0e19, 0x5321, 0xb829, 0xda29, 0xfc31, 0x1d32, 0x1d32, 0xfc31, 0xda29, 0xb829, 0x5321, 0x0e19, 0xa910, 0x2200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
|
||||
};
|
||||
43
Firmware/Images/Image_Overcurrent_32x32.c
Normal file
43
Firmware/Images/Image_Overcurrent_32x32.c
Normal file
@@ -0,0 +1,43 @@
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
|
||||
const uint16_t _Image_Overcurrent_32x32[3 + 1024] = {
|
||||
32, // Image Width
|
||||
32, // Image Height
|
||||
16, // Image Data Size
|
||||
|
||||
// Image Data
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0900, 0x0c00, 0x0b00, 0x0800, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0900, 0x1800, 0x1f00, 0x1e00, 0x1b00, 0x1c00, 0x1f00, 0x1f00, 0x1500, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x1600, 0x1f00, 0x1200, 0x0700, 0x0000, 0x0000, 0x0000, 0x0000, 0x0900, 0x1600, 0x1f00, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1a00, 0x1b00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x1d00, 0x1500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1700, 0x1a00, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0500, 0x1d00, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b00, 0x1e00, 0x0400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0900, 0x1f00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1a00, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1700, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0500, 0x1f00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0400, 0x0000, 0x0000, 0x0a00, 0x1e00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b00, 0x1c00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1400, 0x1c00, 0x0400, 0x0000, 0x0200, 0x1f00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x1300, 0x1300, 0x1900, 0x1800, 0x0000, 0x0000, 0x1000, 0x1700, 0x1700, 0x1700, 0x1700, 0x1700, 0x1700, 0x1700, 0x1700, 0x1800, 0x1f00, 0x1c00, 0x0200, 0x0000, 0x1e00, 0x1600, 0x1300, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x1500, 0x1500, 0x1a00, 0x1800, 0x0000, 0x0000, 0x0c00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1800, 0x1f00, 0x1000, 0x0000, 0x0000, 0x1e00, 0x1800, 0x1500, 0x1500, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b00, 0x1c00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1100, 0x1100, 0x0000, 0x0000, 0x0200, 0x1f00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0500, 0x1f00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a00, 0x1e00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1a00, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1700, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b00, 0x1e00, 0x0400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0900, 0x1f00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1600, 0x1a00, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0500, 0x1d00, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x1a00, 0x1b00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0900, 0x1d00, 0x1500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1600, 0x1f00, 0x1300, 0x0700, 0x0000, 0x0000, 0x0000, 0x0100, 0x0900, 0x1600, 0x1f00, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0900, 0x1800, 0x1f00, 0x1e00, 0x1b00, 0x1c00, 0x1f00, 0x1f00, 0x1600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0300, 0x0900, 0x0d00, 0x0c00, 0x0900, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
|
||||
};
|
||||
@@ -11,9 +11,11 @@
|
||||
#include "Hue.h"
|
||||
#include "Command.h"
|
||||
#include "Screens.h"
|
||||
// #include "OLED_SSD1306.h"
|
||||
#include "EEPROM_M24C64.h"
|
||||
#include "Command_Definition.h"
|
||||
#include "Display_Default_Configurations.h"
|
||||
|
||||
#include "pico/rand.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
@@ -26,19 +28,19 @@
|
||||
// Variables
|
||||
static volatile Mode _Current_Mode;
|
||||
|
||||
static volatile uint _Jam_Current_Angle;
|
||||
static volatile uint _Jam_Next_Angle;
|
||||
static volatile uint32_t _Jam_Current_Angle;
|
||||
static volatile uint32_t _Jam_Next_Angle;
|
||||
|
||||
static volatile uint _Jam_Duration_Until_Next_s;
|
||||
static volatile uint _Jam_Timer;
|
||||
static volatile uint32_t _Jam_Duration_Until_Next_s;
|
||||
static volatile uint32_t _Jam_Timer;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Mode_Manager_Jam_Mode_Init(void);
|
||||
uint Mode_Manager_Jam_Select_Next_Angle(uint current_angle);
|
||||
uint Mode_Manager_Jam_Get_Duration(void);
|
||||
void Mode_Manager_Jam_Set_Color(uint angle);
|
||||
uint32_t Mode_Manager_Jam_Select_Next_Angle(uint32_t current_angle);
|
||||
uint32_t Mode_Manager_Jam_Get_Duration(void);
|
||||
void Mode_Manager_Jam_Set_Color(uint32_t angle);
|
||||
void Mode_Manager_Jam_Step(void);
|
||||
|
||||
|
||||
@@ -52,6 +54,19 @@ void Mode_Manager_Init(void)
|
||||
|
||||
void Mode_Manager_Tick(void)
|
||||
{
|
||||
Command_Issue_Get_Request(MULTICORE_COMMAND_GET_MODE_CHANGE_RECEIVED, 0);
|
||||
bool New_Mode_Received = Command_Get_Request_Response_By_Command_Only(MULTICORE_COMMAND_GET_MODE_CHANGE_RECEIVED, 100) > 0;
|
||||
|
||||
if(New_Mode_Received) {
|
||||
Command_Issue_Get_Request(MULTICORE_COMMAND_GET_MODE_CHANGE_NEW_MODE, 0);
|
||||
_Current_Mode = Command_Get_Request_Response_By_Command_Only(MULTICORE_COMMAND_GET_MODE_CHANGE_NEW_MODE, 100);
|
||||
|
||||
Mode_Manager_Set_Mode(_Current_Mode);
|
||||
Screen_Setup_Mode_Change(TRANSITION_NONE, TRANSITION_NONE, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Current_Mode);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(_Current_Mode != JAM) {
|
||||
return;
|
||||
}
|
||||
@@ -72,8 +87,7 @@ void Mode_Manager_Cycle_Mode(void)
|
||||
|
||||
Mode_Manager_Set_Mode(_Current_Mode);
|
||||
|
||||
// ToDo
|
||||
// Screen_Setup_0_Mode_Change(TRANSITION_NONE, _Current_Mode);
|
||||
Screen_Setup_Mode_Change(TRANSITION_NONE, TRANSITION_NONE, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Current_Mode);
|
||||
}
|
||||
|
||||
void Mode_Manager_Set_Mode(Mode mode)
|
||||
@@ -174,27 +188,27 @@ void Mode_Manager_Jam_Mode_Init(void)
|
||||
Mode_Manager_Jam_Set_Color(_Jam_Current_Angle);
|
||||
}
|
||||
|
||||
uint Mode_Manager_Jam_Select_Next_Angle(uint current_angle)
|
||||
uint32_t Mode_Manager_Jam_Select_Next_Angle(uint32_t current_angle)
|
||||
{
|
||||
uint ADC_Value = 5;//ADC_Get_Result_Oldest();
|
||||
uint Angle_Step = ((ADC_Value & 0x07) + 1) * _EEPROM_Content.Jam_Light_Configuration.Color_Change;
|
||||
uint32_t Random_Value = get_rand_32();
|
||||
uint32_t Angle_Step = ((Random_Value & 0x07) + 1) * _EEPROM_Content.Jam_Light_Configuration.Color_Change;
|
||||
|
||||
return (current_angle + Angle_Step) % 360;
|
||||
}
|
||||
|
||||
uint Mode_Manager_Jam_Get_Duration(void)
|
||||
uint32_t Mode_Manager_Jam_Get_Duration(void)
|
||||
{
|
||||
uint Duration_Span_s = _EEPROM_Content.Jam_Light_Configuration.Duration_Max_s - _EEPROM_Content.Jam_Light_Configuration.Duration_Min_s;
|
||||
uint32_t Duration_Span_s = _EEPROM_Content.Jam_Light_Configuration.Durations.Max - _EEPROM_Content.Jam_Light_Configuration.Durations.Min;
|
||||
|
||||
uint ADC_Value = 5;//ADC_Get_Result_Newest();
|
||||
uint Factor = ((ADC_Value & 0x07) << 4);
|
||||
uint32_t Random_Value = get_rand_32();
|
||||
uint32_t Factor = ((Random_Value & 0x07) << 4);
|
||||
|
||||
Duration_Span_s = (Duration_Span_s * Factor) / 112;
|
||||
|
||||
return _EEPROM_Content.Jam_Light_Configuration.Duration_Min_s + Duration_Span_s;
|
||||
return _EEPROM_Content.Jam_Light_Configuration.Durations.Min + Duration_Span_s;
|
||||
}
|
||||
|
||||
void Mode_Manager_Jam_Set_Color(uint angle)
|
||||
void Mode_Manager_Jam_Set_Color(uint32_t angle)
|
||||
{
|
||||
LED_Data_t Color;
|
||||
Color.Pixel = Hue_Get_Color_From_Angle(angle);
|
||||
|
||||
@@ -32,6 +32,9 @@
|
||||
#define DEBOUNCE_TIME_ENCODER_MS 50
|
||||
#define DEBOUNCE_TIME_SWITCH_MS 300
|
||||
|
||||
// Separate Switch Define
|
||||
#define SWITCH_GPIO 23
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
@@ -40,7 +43,10 @@ static volatile uint32_t _Debounce_Time_Switch_ms = 0;
|
||||
|
||||
static volatile bool _Rotation_CW_Occurred;
|
||||
static volatile bool _Rotation_CCW_Occurred;
|
||||
static volatile bool _Switch_Press_Occurred;
|
||||
static volatile bool _Rotary_Encoder_Switch_Press_Occurred;
|
||||
|
||||
extern volatile uint32_t _Debounce_Time_Switch_ms;
|
||||
extern volatile bool _Switch_Press_Occurred; // Other switch - not from the Rotary Encoder
|
||||
|
||||
static volatile uint8_t _Rotary_Encoder_Previous_NextCode = 0;
|
||||
static volatile uint16_t _Rotary_Encoder_Store_State = 0;
|
||||
@@ -74,6 +80,19 @@ void ISR_Rotary_Encoder(uint gpio, uint32_t events)
|
||||
}
|
||||
}
|
||||
else if(gpio == ENCODER_SWITCH_GPIO)
|
||||
{
|
||||
uint32_t Current_Time_ms = to_ms_since_boot(get_absolute_time());
|
||||
|
||||
if(Current_Time_ms < _Debounce_Time_Switch_ms)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_Rotary_Encoder_Switch_Press_Occurred = true;
|
||||
|
||||
_Debounce_Time_Switch_ms = Current_Time_ms + DEBOUNCE_TIME_SWITCH_MS;
|
||||
}
|
||||
else if(gpio == SWITCH_GPIO)
|
||||
{
|
||||
uint32_t Current_Time_ms = to_ms_since_boot(get_absolute_time());
|
||||
|
||||
@@ -94,9 +113,9 @@ void ISR_Rotary_Encoder(uint gpio, uint32_t events)
|
||||
*******************************************************************/
|
||||
void Rotary_Encoder_Init(void)
|
||||
{
|
||||
_Rotation_CW_Occurred = false;
|
||||
_Rotation_CCW_Occurred = false;
|
||||
_Switch_Press_Occurred = false;
|
||||
_Rotation_CW_Occurred = false;
|
||||
_Rotation_CCW_Occurred = false;
|
||||
_Rotary_Encoder_Switch_Press_Occurred = false;
|
||||
|
||||
|
||||
gpio_init(ENCODER_PIN_A_GPIO); gpio_set_dir(ENCODER_PIN_A_GPIO, false);
|
||||
@@ -128,9 +147,9 @@ bool Rotary_Encoder_Rotation_CCW_Occurred(void)
|
||||
|
||||
bool Rotary_Encoder_Switch_Press_Occurred(void)
|
||||
{
|
||||
bool Return_Value = _Switch_Press_Occurred;
|
||||
bool Return_Value = _Rotary_Encoder_Switch_Press_Occurred;
|
||||
|
||||
_Switch_Press_Occurred = false;
|
||||
_Rotary_Encoder_Switch_Press_Occurred = false;
|
||||
|
||||
return Return_Value;
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
void (*_Screen_Last)(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
void (*_Screen_Tick)(void);
|
||||
void (*_Screen_Click)(uint button_return_value);
|
||||
void (*_Screen_Touch_Event)(int16_t x, int16_t y);
|
||||
@@ -21,4 +22,7 @@ void (*_Screen_Action_CCW)(Object_ID object_id);
|
||||
void (*_Screen_On_Objects_Focused)(Object_ID object_id);
|
||||
void (*_Screen_On_Objects_Defocused)(Object_ID object_id);
|
||||
void (*_Screen_On_Object_Select)(Object_ID object_id);
|
||||
void (*_Screen_On_Object_Deselect)(Object_ID object_id);
|
||||
void (*_Screen_On_Object_Deselect)(Object_ID object_id);
|
||||
|
||||
bool _Screen_Idle_Active = false;
|
||||
bool _Screen_Idle_Counter_Disable = false;
|
||||
@@ -15,6 +15,9 @@
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "Easings.h"
|
||||
#include "Mode_Manager.h"
|
||||
#include "Hierarchical_Menu.h"
|
||||
#include "Command_Definition.h"
|
||||
#include "Display_Objects_Datatypes.h"
|
||||
|
||||
|
||||
@@ -24,6 +27,7 @@
|
||||
|
||||
// ============================================================================================
|
||||
// Variables (do not edit)
|
||||
extern void (*_Screen_Last)(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
extern void (*_Screen_Tick)(void);
|
||||
extern void (*_Screen_Click)(uint button_return_value);
|
||||
extern void (*_Screen_Touch_Event)(int16_t x, int16_t y);
|
||||
@@ -34,9 +38,15 @@ extern void (*_Screen_On_Objects_Defocused)(Object_ID object_id);
|
||||
extern void (*_Screen_On_Object_Select)(Object_ID object_id);
|
||||
extern void (*_Screen_On_Object_Deselect)(Object_ID object_id);
|
||||
|
||||
extern bool _Screen_Idle_Active;
|
||||
extern bool _Screen_Idle_Counter_Disable;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// List of all Screen Setups as extern
|
||||
extern void Screen_Setup_Idle(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
extern void Screen_Setup_Mode_Change(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, Mode mode);
|
||||
|
||||
extern void Screen_Setup_Loading();
|
||||
extern void Screen_Setup_Menu_Main(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, bool do_menu_animation, uint32_t selected_entry);
|
||||
extern void Screen_Setup_Mode(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
@@ -45,14 +55,19 @@ extern void Screen_Setup_Graph(Screen_Transition_Direction direction_out, Screen
|
||||
|
||||
|
||||
extern void Screen_Setup_Settings(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item);
|
||||
|
||||
extern void Screen_Setup_Settings_MIDI(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item);
|
||||
extern void Screen_Setup_Settings_MIDI_Config(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item);
|
||||
|
||||
extern void Screen_Setup_Settings_Hierarchical_Menu(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, const Hierarchical_Menu* menu, const Menu_List* list, int32_t selected_item);
|
||||
extern void Screen_Setup_EEPROM_Code(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
extern void Screen_Setup_EEPROM_Write(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, bool code_correct);
|
||||
extern void Screen_Setup_Settings_About(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
|
||||
extern void Screen_Setup_Select_Bool(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, uint8_t *value, void (*return_function)(Screen_Transition_Direction, Screen_Transition_Direction, Easing, uint32_t, int32_t), int32_t return_value);
|
||||
extern void Screen_Setup_Select_RGB(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, RGB_Color* rgb_color);
|
||||
|
||||
extern void Screen_Setup_Select_Bool(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, uint8_t *value, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
extern void Screen_Setup_Select_RGB(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, LED_Data_t* rgb_color, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
extern void Screen_Setup_Select_Value(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* value, const Menu_Configuration_Select_Value* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
extern void Screen_Setup_Select_List(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* value, const Menu_Configuration_Select_List* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
extern void Screen_Setup_Default_Notes(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
extern void Screen_Setup_Settings_Reboot(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
extern void Screen_Setup_Select_Hue(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* hue_value, const Menu_Configuration_Select_Value* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
extern void Screen_Setup_Select_MinMax(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, MinMax_t* value, const Menu_Configuration_Select_MinMax* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
|
||||
#endif /* SCREENS_H_ */
|
||||
286
Firmware/Screens_Display/Common_Screen_Elements.c
Normal file
286
Firmware/Screens_Display/Common_Screen_Elements.c
Normal file
@@ -0,0 +1,286 @@
|
||||
/*
|
||||
* File: Common_Screen_Elements.c
|
||||
*
|
||||
* Created: Created: Sunday October 2025 19:57:27
|
||||
* Author: Chris
|
||||
*/
|
||||
#include "Common_Screen_Elements.h"
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "../Display_Color.h"
|
||||
#include "../Display_Config.h"
|
||||
#include "../Display_Shapes.h"
|
||||
#include "../Display_Objects.h"
|
||||
|
||||
#include "../Hue.h"
|
||||
#include "../EEPROM_M24C64.h"
|
||||
#include "../MIDI_Note_List.h"
|
||||
#include "../Command_Definition.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
#define PAUSE_LIGHT_COLOR_RGB565 DISPLAY_COLOR_FROM_RGB888(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Color.R, _EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Color.G, _EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Color.B)
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
extern const uint8_t _Font_DejaVu_Sans_Mono_10x17[];
|
||||
extern const uint8_t _Font_DejaVu_Sans_Mono_15x25[];
|
||||
extern const uint8_t _Font_DejaVu_Sans_Mono_Bold_11x17[];
|
||||
extern const uint8_t _Font_DejaVu_Sans_Mono_Bold_15x26[];
|
||||
|
||||
extern const uint16_t _Image_Forest_Pine_Midi_64x64[];
|
||||
extern const uint16_t _Image_Steel_Blue_Jam_Happy_64x64[];
|
||||
extern const uint16_t _Image_Stone_Blue_Light_On_64x64[];
|
||||
|
||||
extern volatile bool _MIDI_To_Light_Enabled;
|
||||
extern Info_Last_Received_Note_t _Info_Last_Applied_Note[NUM_LED_CHANNELS];
|
||||
extern uint8_t _Current_Duty_Cylces[NUM_LED_CHANNELS][NUM_LED_COLORS];
|
||||
extern volatile Pause_Light_Timer_s _Pause_Light_Timer[NUM_LED_CHANNELS];
|
||||
|
||||
|
||||
// Variables and Objects IDs for the MIDI Mode Activity
|
||||
static Object_ID _Object_Midi_Text_MIDI_Enabled;
|
||||
static Object_ID _Object_Midi_Text_MIDI_Last_Applied;
|
||||
static Object_ID _Object_Midi_Text_Pause_Light_Enabled;
|
||||
static Object_ID _Object_Midi_Text_Pause_Light_Active;
|
||||
static Object_ID _Object_Midi_Text_Pause_Light_Counter;
|
||||
static Object_ID _Object_Midi_Text_Pause_Light_ValueBar;
|
||||
|
||||
static float _Pause_Light_Timeout_s;
|
||||
static uint32_t _Pause_Light_Timeout_Ticks;
|
||||
static uint32_t _Pause_Light_FadeOut_Counter;
|
||||
|
||||
// Variables and Objects IDs for the JAM Mode Activity
|
||||
static Object_ID _Object_Jam_Current_Hue_Angle;
|
||||
static Object_ID _Object_Jam_Timeout_ValueBar;
|
||||
|
||||
static uint32_t _Jam_Hue_Angle_Now;
|
||||
static uint32_t _Jam_Hue_Angle_Next;
|
||||
static float _Jam_Hue_Angle_Timer_s;
|
||||
static uint32_t _Jam_Hue_Angle_Timer_Ticks;
|
||||
|
||||
// Objects IDs for the Const Mode Activity
|
||||
static Object_ID _Object_Const_Color_Circle;
|
||||
static Object_ID _Object_Const_Color_Text_1, _Object_Const_Color_Text_2;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Common_Screen_Element_Init_Mode_Activity_MIDI();
|
||||
void Common_Screen_Element_Init_Mode_Activity_Jam();
|
||||
void Common_Screen_Element_Init_Mode_Activity_Const();
|
||||
|
||||
void Common_Screen_Element_Tick_Mode_Activity_MIDI();
|
||||
void Common_Screen_Element_Tick_Mode_Activity_Jam();
|
||||
void Common_Screen_Element_Tick_Mode_Activity_Const();
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Common_Screen_Element_Init_Current_Mode(Mode mode)
|
||||
{
|
||||
uint16_t* Image = NULL;
|
||||
char Mode_Name[20];
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case MIDI: sprintf(Mode_Name, "MIDI"); Image = (uint16_t*)_Image_Forest_Pine_Midi_64x64; break;
|
||||
case JAM: sprintf(Mode_Name, "Jam"); Image = (uint16_t*)_Image_Steel_Blue_Jam_Happy_64x64; break;
|
||||
case CONSTANT: sprintf(Mode_Name, "Constant"); Image = (uint16_t*)_Image_Stone_Blue_Light_On_64x64; break;
|
||||
}
|
||||
|
||||
Display_Objects_Add_Image(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 40, NOT_SELECTABLE, Image, 0, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
char Title[30];
|
||||
sprintf(Title, "Mode: %s", Mode_Name);
|
||||
|
||||
Font_ID Font_Title = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_15x25, 0);
|
||||
Display_Objects_Add_Text(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 65, NOT_SELECTABLE, Title, Font_Title, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
}
|
||||
|
||||
void Common_Screen_Element_Init_Mode_Activity(Mode mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case MIDI: Common_Screen_Element_Init_Mode_Activity_MIDI(); break;
|
||||
case JAM: Common_Screen_Element_Init_Mode_Activity_Jam(); break;
|
||||
case CONSTANT: Common_Screen_Element_Init_Mode_Activity_Const(); break;
|
||||
}
|
||||
}
|
||||
|
||||
void Common_Screen_Element_Tick_Mode_Activity(Mode mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case MIDI: Common_Screen_Element_Tick_Mode_Activity_MIDI(); break;
|
||||
case JAM: Common_Screen_Element_Tick_Mode_Activity_Jam(); break;
|
||||
case CONSTANT: Common_Screen_Element_Tick_Mode_Activity_Const(); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
void Common_Screen_Element_Init_Mode_Activity_MIDI()
|
||||
{
|
||||
_Pause_Light_Timeout_s = 0.0f;
|
||||
_Pause_Light_Timeout_Ticks = 0;
|
||||
|
||||
const int16_t Text_Y_Percent_Distance = 8;
|
||||
|
||||
char MIDI_Settings[100];
|
||||
|
||||
sprintf(MIDI_Settings, "Ch %02u / Octave %+d", _EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].MIDI_Channel+1, _EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Octave);
|
||||
|
||||
Font_ID Font_Regular = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_10x17, 0);
|
||||
Font_ID Font_Bold = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_11x17, 0);
|
||||
|
||||
int16_t Midi_Y_Percent = 20;
|
||||
Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Midi_Y_Percent, NOT_SELECTABLE, "MIDI to Light", Font_Bold, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
Midi_Y_Percent += Text_Y_Percent_Distance;
|
||||
|
||||
_Object_Midi_Text_MIDI_Enabled = Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Midi_Y_Percent, NOT_SELECTABLE, "", Font_Regular, DISPLAY_COLOR_BLACK, NO_STYLE, NO_ANIMATION);
|
||||
Midi_Y_Percent += Text_Y_Percent_Distance;
|
||||
|
||||
Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Midi_Y_Percent, NOT_SELECTABLE, MIDI_Settings, Font_Regular, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
Midi_Y_Percent += Text_Y_Percent_Distance;
|
||||
|
||||
_Object_Midi_Text_MIDI_Last_Applied = Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Midi_Y_Percent, NOT_SELECTABLE, "", Font_Regular, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
|
||||
|
||||
int16_t Pause_Light_Y_Percent = 57;
|
||||
Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Pause_Light_Y_Percent, NOT_SELECTABLE, "Pause Light", Font_Bold, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
Pause_Light_Y_Percent += Text_Y_Percent_Distance;
|
||||
|
||||
_Object_Midi_Text_Pause_Light_Enabled = Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Pause_Light_Y_Percent, NOT_SELECTABLE, "", Font_Regular, DISPLAY_COLOR_BLACK, NO_STYLE, NO_ANIMATION);
|
||||
Pause_Light_Y_Percent += Text_Y_Percent_Distance;
|
||||
|
||||
_Object_Midi_Text_Pause_Light_Active = Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Pause_Light_Y_Percent, NOT_SELECTABLE, "", Font_Regular, DISPLAY_COLOR_BLACK, NO_STYLE, NO_ANIMATION);
|
||||
Pause_Light_Y_Percent += Text_Y_Percent_Distance;
|
||||
|
||||
_Object_Midi_Text_Pause_Light_ValueBar = Display_Objects_Add_Value_Bar_Arc(BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, &_Pause_Light_Timeout_Ticks,
|
||||
(uint32_t)(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout * 1000 / TIMER_INTERVALL_LED_UPDATE_ms), 1,
|
||||
(uint32_t)(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout * 1000 / TIMER_INTERVALL_LED_UPDATE_ms), 10,
|
||||
PAUSE_LIGHT_COLOR_RGB565, 110, 4, ARC_FRAME_AUTO_STEPS, -90, 270, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
_Object_Midi_Text_Pause_Light_Counter = Display_Objects_Add_Float(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Pause_Light_Y_Percent, NOT_SELECTABLE, &_Pause_Light_Timeout_s, "%04.2fs", Font_Regular, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
}
|
||||
|
||||
void Common_Screen_Element_Init_Mode_Activity_Jam()
|
||||
{
|
||||
_Jam_Hue_Angle_Now = 0;
|
||||
_Jam_Hue_Angle_Next = 0;
|
||||
_Jam_Hue_Angle_Timer_s = 0.0;
|
||||
_Jam_Hue_Angle_Timer_Ticks = 0;
|
||||
|
||||
const int16_t Text_Y_Percent_Distance = 8;
|
||||
|
||||
Font_ID Font_Regular = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_10x17, 0);
|
||||
Font_ID Font_Bold = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_11x17, 0);
|
||||
|
||||
int16_t Text_Y_Percent = 35;
|
||||
Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Text_Y_Percent, NOT_SELECTABLE, "Jam Mode", Font_Bold, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
Text_Y_Percent += Text_Y_Percent_Distance;
|
||||
|
||||
Display_Objects_Add_Integer(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Text_Y_Percent, NOT_SELECTABLE, (int*)&_Jam_Hue_Angle_Now, "Now: %d Deg", Font_Regular, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
Text_Y_Percent += Text_Y_Percent_Distance;
|
||||
|
||||
Display_Objects_Add_Integer(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Text_Y_Percent, NOT_SELECTABLE, (int*)&_Jam_Hue_Angle_Next, "Next: %d Deg", Font_Regular, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
Text_Y_Percent += Text_Y_Percent_Distance;
|
||||
|
||||
Display_Objects_Add_Float(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Text_Y_Percent, NOT_SELECTABLE, &_Jam_Hue_Angle_Timer_s, "%04.2fs", Font_Regular, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
_Object_Jam_Current_Hue_Angle = Display_Objects_Add_Value_Bar_Arc(BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, &_Jam_Hue_Angle_Now, 359, 0, 1, 400, DISPLAY_COLOR_RED, 115, 4, ARC_FRAME_AUTO_STEPS, -90, 270, NO_STYLE, NO_ANIMATION);
|
||||
_Object_Jam_Timeout_ValueBar = Display_Objects_Add_Value_Bar_Arc(BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, &_Jam_Hue_Angle_Timer_Ticks, Mode_Manager_Jam_Get_Duration_Tick(), 0, 1000, 1000, DISPLAY_COLOR_LIGHTGREY, 105, 4, ARC_FRAME_AUTO_STEPS, -90, 270, NO_STYLE, NO_ANIMATION);
|
||||
}
|
||||
|
||||
void Common_Screen_Element_Init_Mode_Activity_Const()
|
||||
{
|
||||
Font_ID Font = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_11x17, 0);
|
||||
|
||||
_Object_Const_Color_Circle = Display_Objects_Add_Circle_Filled(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 35, NOT_SELECTABLE, DISPLAY_COLOR_BLACK, 40, NO_STYLE, NO_ANIMATION);
|
||||
_Object_Const_Color_Text_1 = Display_Objects_Add_Text(CENTER_BOTTOM, BOTH_IN_PERCENT, 50, 68, NOT_SELECTABLE, "Constant Light", Font, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
_Object_Const_Color_Text_2 = Display_Objects_Add_Text(CENTER_TOP, BOTH_IN_PERCENT, 50, 70, NOT_SELECTABLE, "is on", Font, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
}
|
||||
|
||||
void Common_Screen_Element_Tick_Mode_Activity_MIDI()
|
||||
{
|
||||
char MIDI_Last_Applied[100];
|
||||
char Event[4];
|
||||
char Note[3];
|
||||
|
||||
if(_Info_Last_Applied_Note[LED_Channel_1].Event == MIDI_EVENT_NOTE_ON) {
|
||||
sprintf(Event, "On");
|
||||
}
|
||||
else if(_Info_Last_Applied_Note[LED_Channel_1].Event == MIDI_EVENT_NOTE_OFF) {
|
||||
sprintf(Event, "Off");
|
||||
} else
|
||||
{
|
||||
sprintf(Event, "-");
|
||||
}
|
||||
|
||||
if(_Info_Last_Applied_Note[LED_Channel_1].Note_In_Octave != NO_NOTE) {
|
||||
sprintf(Note, "%s", _MIDI_Note_List[_Info_Last_Applied_Note[LED_Channel_1].Note_In_Octave].Tone_Name);
|
||||
}
|
||||
else {
|
||||
sprintf(Note, "-");
|
||||
}
|
||||
|
||||
sprintf(MIDI_Last_Applied, "Note %s %s (%u)", Note, Event, _Info_Last_Applied_Note[LED_Channel_1].Velocity);
|
||||
|
||||
Display_Objects_Update_Text(_Object_Midi_Text_MIDI_Enabled, _MIDI_To_Light_Enabled == true ? "Enabled" : "Disabled");
|
||||
Display_Objects_Update_Text(_Object_Midi_Text_MIDI_Last_Applied, MIDI_Last_Applied);
|
||||
Display_Objects_Update_Text(_Object_Midi_Text_Pause_Light_Enabled, _EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Enabled > 0 ? "Enabled" : "Disabled");
|
||||
Display_Objects_Update_Text(_Object_Midi_Text_Pause_Light_Active, _Pause_Light_Timer[LED_Channel_1].Is_Active == true ? "On" : "Off");
|
||||
|
||||
Display_Objects_Update_Color(_Object_Midi_Text_MIDI_Enabled, _MIDI_To_Light_Enabled == true ? DISPLAY_COLOR_GREEN : DISPLAY_COLOR_RED);
|
||||
Display_Objects_Update_Color(_Object_Midi_Text_Pause_Light_Enabled, _EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Enabled > 0 ? DISPLAY_COLOR_GREEN : DISPLAY_COLOR_RED);
|
||||
Display_Objects_Update_Color(_Object_Midi_Text_Pause_Light_Active, _Pause_Light_Timer[LED_Channel_1].Is_Active == true ? DISPLAY_COLOR_GREEN : DISPLAY_COLOR_RED);
|
||||
|
||||
_Pause_Light_Timeout_s = _EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout - ((float)(_Pause_Light_Timer[LED_Channel_1].Timer * TIMER_INTERVALL_LED_UPDATE_ms)) / 1000.0f;
|
||||
|
||||
if(_Pause_Light_Timeout_s < 0.01f) {
|
||||
if(_Pause_Light_FadeOut_Counter < 60) {
|
||||
_Pause_Light_FadeOut_Counter++;
|
||||
}
|
||||
if(_Pause_Light_FadeOut_Counter >= 20) {
|
||||
// Display_Objects_Update_Color(_Object_Midi_Text_MIDI_Last_Applied, Display_Color_Interpolate_Float(DISPLAY_COLOR_LIGHTGREY, DISPLAY_COLOR_BLACK, (float)(_Pause_Light_FadeOut_Counter-20) / 40.0f));
|
||||
Display_Objects_Update_Color(_Object_Midi_Text_Pause_Light_Counter, Display_Color_Interpolate_Float(DISPLAY_COLOR_LIGHTGREY, DISPLAY_COLOR_BLACK, (float)(_Pause_Light_FadeOut_Counter-20) / 40.0f));
|
||||
Display_Objects_Update_Color(_Object_Midi_Text_Pause_Light_ValueBar, Display_Color_Interpolate_Float(PAUSE_LIGHT_COLOR_RGB565, DISPLAY_COLOR_BLACK, (float)(_Pause_Light_FadeOut_Counter-20) / 40.0f));
|
||||
}
|
||||
}
|
||||
else {
|
||||
_Pause_Light_FadeOut_Counter = 0;
|
||||
// Display_Objects_Update_Color(_Object_Midi_Text_MIDI_Last_Applied, DISPLAY_COLOR_LIGHTGREY);
|
||||
Display_Objects_Update_Color(_Object_Midi_Text_Pause_Light_Counter, DISPLAY_COLOR_LIGHTGREY);
|
||||
Display_Objects_Update_Color(_Object_Midi_Text_Pause_Light_ValueBar, PAUSE_LIGHT_COLOR_RGB565);
|
||||
}
|
||||
|
||||
uint32_t Total_Pause_Light_Timeout_Ticks = (uint32_t)(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout * 1000 / TIMER_INTERVALL_LED_UPDATE_ms);
|
||||
_Pause_Light_Timeout_Ticks = Total_Pause_Light_Timeout_Ticks - _Pause_Light_Timer[LED_Channel_1].Timer;
|
||||
}
|
||||
|
||||
void Common_Screen_Element_Tick_Mode_Activity_Jam()
|
||||
{
|
||||
LED_Data_t Hue_Color;
|
||||
|
||||
_Jam_Hue_Angle_Now = Mode_Manager_Jam_Get_Current_Angle();
|
||||
_Jam_Hue_Angle_Next = Mode_Manager_Jam_Get_Next_Angle();
|
||||
_Jam_Hue_Angle_Timer_Ticks = Mode_Manager_Jam_Get_Time_Left_Tick();
|
||||
_Jam_Hue_Angle_Timer_s = (float)(_Jam_Hue_Angle_Timer_Ticks * 40) / 1000.0f;
|
||||
|
||||
Hue_Color.Pixel = Hue_Get_Color_From_Angle(_Jam_Hue_Angle_Now);
|
||||
Display_Objects_Update_Color(_Object_Jam_Current_Hue_Angle, DISPLAY_COLOR_FROM_RGB888(Hue_Color.R, Hue_Color.G, Hue_Color.B));
|
||||
Display_Objects_Update_Max_Min(_Object_Jam_Timeout_ValueBar, Mode_Manager_Jam_Get_Duration_Tick(), 0);
|
||||
}
|
||||
|
||||
void Common_Screen_Element_Tick_Mode_Activity_Const()
|
||||
{
|
||||
Display_Objects_Update_Color(_Object_Const_Color_Circle, DISPLAY_COLOR_FROM_RGB888(_Current_Duty_Cylces[LED_Channel_1][R], _Current_Duty_Cylces[LED_Channel_1][G], _Current_Duty_Cylces[LED_Channel_1][B]));
|
||||
}
|
||||
34
Firmware/Screens_Display/Common_Screen_Elements.h
Normal file
34
Firmware/Screens_Display/Common_Screen_Elements.h
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* File: Common_Screen_Elements.h
|
||||
* Created: Created: Sunday October 2025 19:57:22
|
||||
* Author: Chris
|
||||
*/
|
||||
#ifndef COMMON_SCREEN_ELEMENTS_H
|
||||
#define COMMON_SCREEN_ELEMENTS_H
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../Mode_Manager.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Datatypes
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Common_Screen_Element_Init_Current_Mode(Mode mode);
|
||||
void Common_Screen_Element_Init_Mode_Activity(Mode mode);
|
||||
|
||||
void Common_Screen_Element_Tick_Mode_Activity(Mode mode);
|
||||
|
||||
|
||||
#endif // COMMON_SCREEN_ELEMENTS_H
|
||||
171
Firmware/Screens_Display/Screen_Default_Notes.c
Normal file
171
Firmware/Screens_Display/Screen_Default_Notes.c
Normal file
@@ -0,0 +1,171 @@
|
||||
/*
|
||||
* File: Screen_Default_Notes.c
|
||||
*
|
||||
* Created: Created: Sunday September 2025 21:09:49
|
||||
* Author: Chris
|
||||
*/
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../UI_Control.h"
|
||||
#include "../Mode_Manager.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Objects.h"
|
||||
#include "../Display_Render_Complex.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
static Object_ID _Object_Message_Box;
|
||||
|
||||
static const Hierarchical_Menu* _Return_Menu = NULL;
|
||||
static const Menu_List* _Return_List = NULL;
|
||||
static int32_t _Return_Selected_Item;
|
||||
|
||||
static char* _Title;
|
||||
static uint32_t _Title_Length;
|
||||
static bool _Bool_Value;
|
||||
static bool _Decision_Made;
|
||||
static uint32_t _Counter;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Default_Notes(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
static void Screen_Action_CW (Object_ID object_id);
|
||||
static void Screen_Action_CCW (Object_ID object_id);
|
||||
static void Screen_On_Object_Focused (Object_ID object_id);
|
||||
static void Screen_On_Object_Defocused (Object_ID object_id);
|
||||
static void Screen_On_Object_Select (Object_ID object_id);
|
||||
static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Default_Notes(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item)
|
||||
{
|
||||
_Title = title;
|
||||
_Title_Length = title_length;
|
||||
_Bool_Value = false;
|
||||
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
_Return_Menu = return_menu;
|
||||
_Return_List = return_list;
|
||||
_Return_Selected_Item = return_selected_item;
|
||||
|
||||
_Decision_Made = false;
|
||||
_Counter = 0;
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Last = Screen_Init;
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
_Screen_Action_CCW = Screen_Action_CCW;
|
||||
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
|
||||
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
|
||||
_Screen_On_Object_Select = Screen_On_Object_Select;
|
||||
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
|
||||
|
||||
Display_Objects_Clear();
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
Display_Render_Complex_Select_YesNo_Set(_Bool_Value, &_Configuration_Default_Select_YesNo);
|
||||
Display_Objects_Add_Select_YesNo(_Title, _Title_Length, &_Bool_Value, &_Configuration_Default_Select_YesNo);
|
||||
_Object_Message_Box = Display_Objects_Add_Message_Box(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, "Notes Set", MESSAGE_BOX_ICON_CIRCLE_CHECKMARK, &_Message_Box_Style_Regular);
|
||||
|
||||
Display_Select_Object();
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
_Counter++;
|
||||
}
|
||||
|
||||
if(_Counter == MESSAGE_BOX_DEFAULT_TICKS) {
|
||||
Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_DOWN, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Menu, _Return_List, _Return_Selected_Item);
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Touch_Event(int16_t x, int16_t y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
return;
|
||||
}
|
||||
|
||||
_Bool_Value = !_Bool_Value;
|
||||
}
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
Screen_Action_CW(object_id);
|
||||
}
|
||||
|
||||
void Screen_On_Object_Focused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Defocused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Select(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
if(!_Decision_Made) {
|
||||
|
||||
if(_Bool_Value) {
|
||||
Mode_Manager_Set_Default_Color_Notes();
|
||||
|
||||
Display_Objects_Show_Message_Box(_Object_Message_Box, MESSAGE_BOX_DEFAULT_TICKS);
|
||||
}
|
||||
else {
|
||||
Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_DOWN, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Menu, _Return_List, _Return_Selected_Item);
|
||||
}
|
||||
_Decision_Made = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
|
||||
218
Firmware/Screens_Display/Screen_EEPROM_Code.c
Normal file
218
Firmware/Screens_Display/Screen_EEPROM_Code.c
Normal file
@@ -0,0 +1,218 @@
|
||||
/*
|
||||
* File: Screen_EEPROM_Code.c
|
||||
*
|
||||
* Created: Created: Monday September 2025 16:11:48
|
||||
* Author: Chris
|
||||
*/
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../UI_Control.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Objects.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
#define BOX_X_TARGET (DISPLAY_X_CENTER + (_Character_Select - 1) * _Character_X_Distance - 1)
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_11x17[];
|
||||
extern const uint8_t _Font_DejaVu_Sans_Mono_20x34[];
|
||||
|
||||
static Object_ID _Object_Code[3];
|
||||
static Object_ID _Object_Box;
|
||||
|
||||
static int32_t _Code[3] = { 4, 4, 12 };
|
||||
static int32_t _Input[3];
|
||||
static int32_t _Character_Select;
|
||||
static char _Character[3][2];
|
||||
|
||||
static const int16_t _Character_X_Distance = 50;
|
||||
static int16_t _Box_X_Current;
|
||||
static int16_t _Box_X_Target;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_EEPROM_Code(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
|
||||
static char HexNumber_To_ASCII (char hex_number);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
static void Screen_Action_CW (Object_ID object_id);
|
||||
static void Screen_Action_CCW (Object_ID object_id);
|
||||
static void Screen_On_Object_Focused (Object_ID object_id);
|
||||
static void Screen_On_Object_Defocused (Object_ID object_id);
|
||||
static void Screen_On_Object_Select (Object_ID object_id);
|
||||
static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Screen_Setup_EEPROM_Code(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Input[0] = 0;
|
||||
_Input[1] = 0;
|
||||
_Input[2] = 0;
|
||||
|
||||
_Character_Select = 0;
|
||||
|
||||
_Box_X_Target = BOX_X_TARGET;
|
||||
_Box_X_Current = _Box_X_Target;
|
||||
|
||||
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Last = Screen_Init;
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
_Screen_Action_CCW = Screen_Action_CCW;
|
||||
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
|
||||
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
|
||||
_Screen_On_Object_Select = Screen_On_Object_Select;
|
||||
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
|
||||
|
||||
Display_Objects_Clear();
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
Font_ID Font_Title = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_11x17, DISPLAY_DEFAULT_CHAR_SPACING);
|
||||
Font_ID Font_Characters = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_20x34, 0);
|
||||
|
||||
Display_Objects_Add_Text(CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, 45, NOT_SELECTABLE, "Enter Code", Font_Title, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
for(int i=0;i<3;i++) {
|
||||
_Character[i][0] = HexNumber_To_ASCII(_Input[i]);
|
||||
_Character[i][1] = '\0';
|
||||
_Object_Code[i] = Display_Objects_Add_Text(CENTER_MIDDLE, X_IN_PIXEL_Y_IN_PERCENT, DISPLAY_X_CENTER + (i-1)*_Character_X_Distance, 50, NOT_SELECTABLE, &(_Character[i][0]), Font_Characters, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
}
|
||||
|
||||
_Object_Box = Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, X_IN_PIXEL_Y_IN_PERCENT, _Box_X_Current, 49, NOT_SELECTABLE, DISPLAY_COLOR_LIGHTGREY, 33, 39, 6, 2, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
UI_Control_Acceleration_Reset();
|
||||
UI_Control_Acceleration_Set_Enabled(false);
|
||||
|
||||
Display_Select_Object();
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
for(int i=0;i<3;i++) {
|
||||
Display_Color Color = i == _Character_Select ? DISPLAY_COLOR_LIGHTGREY : DISPLAY_COLOR_DARKGREY;
|
||||
_Character[i][0] = HexNumber_To_ASCII(_Input[i]);
|
||||
|
||||
Display_Objects_Update_Text(_Object_Code[i], &_Character[i][0]);
|
||||
Display_Objects_Update_Color(_Object_Code[i], Color);
|
||||
}
|
||||
|
||||
|
||||
_Box_X_Target = BOX_X_TARGET;
|
||||
|
||||
if(_Box_X_Target > _Box_X_Current) {
|
||||
int16_t Distance = abs(_Box_X_Current - _Box_X_Target);
|
||||
_Box_X_Current += ((Distance >> 1) + 1);
|
||||
}
|
||||
|
||||
Display_Objects_Update_Coordinates(_Object_Box, CENTER_MIDDLE, X_IN_PIXEL_Y_IN_PERCENT, _Box_X_Current, 49);
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Touch_Event(int16_t x, int16_t y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
if(_Character_Select >= (sizeof(_Input) / sizeof(int32_t))) {
|
||||
return;
|
||||
}
|
||||
|
||||
UI_Control_Selector_Inc(&_Input[_Character_Select], 0, 15, true);
|
||||
}
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
if(_Character_Select >= (sizeof(_Input) / sizeof(int32_t))) {
|
||||
return;
|
||||
}
|
||||
|
||||
UI_Control_Selector_Dec(&_Input[_Character_Select], 0, 15, true);
|
||||
}
|
||||
|
||||
void Screen_On_Object_Focused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Defocused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Select(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
Display_Select_Object();
|
||||
|
||||
if(_Character_Select < (sizeof(_Input) / sizeof(int32_t))) {
|
||||
_Character_Select++;
|
||||
}
|
||||
|
||||
if(_Character_Select < (sizeof(_Input) / sizeof(int32_t))) {
|
||||
return;
|
||||
}
|
||||
|
||||
bool Code_Correct = (_Input[0] == _Code[0]) && (_Input[1] == _Code[1]) && (_Input[2] == _Code[2]);
|
||||
|
||||
_Input[0] = 0;
|
||||
_Input[1] = 0;
|
||||
_Input[2] = 0;
|
||||
|
||||
// Move to write screen instead directly to settings menu
|
||||
Screen_Setup_EEPROM_Write(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, Code_Correct);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
char HexNumber_To_ASCII(char hex_number)
|
||||
{
|
||||
if(hex_number >=0 && hex_number <= 9)
|
||||
{
|
||||
return '0' + hex_number;
|
||||
}
|
||||
else if(hex_number >= 10 && hex_number <= 15)
|
||||
{
|
||||
return 'A' + hex_number - 10;
|
||||
}
|
||||
|
||||
return '0';
|
||||
}
|
||||
296
Firmware/Screens_Display/Screen_EEPROM_Write.c
Normal file
296
Firmware/Screens_Display/Screen_EEPROM_Write.c
Normal file
@@ -0,0 +1,296 @@
|
||||
/*
|
||||
* File: Screen_EEPROM_Write.c
|
||||
*
|
||||
* Created: Created: Monday September 2025 16:12:05
|
||||
* Author: Chris
|
||||
*/
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../Easings.h"
|
||||
#include "../UI_Control.h"
|
||||
#include "../EEPROM_M24C64.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Color.h"
|
||||
#include "../Display_Objects.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
#define COLOR_DOT_ACTIVE 0xFFFF // Pure White #FFFFFF
|
||||
#define COLOR_DOT_INACTIVE 0x0842 // Dark Gray #404450
|
||||
|
||||
#define DOT_ANIMATION_SPEED 8
|
||||
|
||||
// Animation timing configuration
|
||||
#define TEXT_FADE_START_FRAME 70 // Start fading text earlier for overlap
|
||||
#define TEXT_FADE_DURATION 30 // Longer fade for smoother transition
|
||||
#define IMAGE_FADE_START_FRAME 80 // Image starts fading in
|
||||
#define IMAGE_FADE_DURATION 20 // Longer fade for smoother appearance
|
||||
#define ANIMATION_END_FRAME 160 // Total animation duration
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
extern const uint8_t _Font_DejaVu_Sans_Mono_Bold_15x26[];
|
||||
|
||||
extern const uint16_t _Image_Check_Green_64x64[];
|
||||
extern const uint16_t _Image_Check_Green_128x128[];
|
||||
extern const uint16_t _Image_Failed_Red_64x64[];
|
||||
extern const uint16_t _Image_Failed_Red_128x128[];
|
||||
|
||||
static Object_ID _Object_Text_Writing;
|
||||
static Object_ID _Object_Dots[3];
|
||||
static Object_ID _Object_Image;
|
||||
|
||||
static bool _Code_Correct;
|
||||
static int _Counter;
|
||||
static uint32_t _EEPROM_Write_Status;
|
||||
static int32_t _Dot_Animation_Phase;
|
||||
|
||||
static Display_Color _Text_Original_Color;
|
||||
static Display_Color _Dot_Active_Original_Color;
|
||||
static Display_Color _Dot_Inactive_Original_Color;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_EEPROM_Write(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, bool code_correct);
|
||||
|
||||
static void Update_Dot_Animation(void);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
static void Screen_Action_CW (Object_ID object_id);
|
||||
static void Screen_Action_CCW (Object_ID object_id);
|
||||
static void Screen_On_Object_Focused (Object_ID object_id);
|
||||
static void Screen_On_Object_Defocused (Object_ID object_id);
|
||||
static void Screen_On_Object_Select (Object_ID object_id);
|
||||
static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Screen_Setup_EEPROM_Write(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, bool code_correct)
|
||||
{
|
||||
_Code_Correct = code_correct;
|
||||
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
_Counter = 0;
|
||||
_Dot_Animation_Phase = 0;
|
||||
|
||||
if(_Code_Correct) {
|
||||
EEPROM_Trigger_Update();
|
||||
}
|
||||
|
||||
_EEPROM_Write_Status = EEPROM_STATUS_NONE;
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
// _Screen_Last = Screen_Init; // I don't want that here...
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
_Screen_Action_CCW = Screen_Action_CCW;
|
||||
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
|
||||
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
|
||||
_Screen_On_Object_Select = Screen_On_Object_Select;
|
||||
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
|
||||
|
||||
Display_Objects_Clear();
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
_Text_Original_Color = DISPLAY_COLOR_LIGHTGREY;
|
||||
_Dot_Active_Original_Color = COLOR_DOT_ACTIVE;
|
||||
_Dot_Inactive_Original_Color = COLOR_DOT_INACTIVE;
|
||||
|
||||
Font_ID Font_Text = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_15x26, 0);
|
||||
|
||||
if(_Code_Correct) {
|
||||
_Object_Text_Writing = Display_Objects_Add_Text(CENTER_BOTTOM, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, "Writing EEPROM", Font_Text, _Text_Original_Color, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
_Object_Dots[i] = Display_Objects_Add_Circle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50 + (i-1) * 6, 60, NOT_SELECTABLE, _Dot_Inactive_Original_Color, 4, 1, NO_STYLE, NO_ANIMATION);
|
||||
}
|
||||
|
||||
_Object_Image = Display_Objects_Add_Image(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, _Image_Check_Green_128x128, 0, NO_STYLE, NO_ANIMATION);
|
||||
Display_Objects_Update_Enabled(_Object_Image, false);
|
||||
}
|
||||
else {
|
||||
Display_Objects_Add_Text(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, "Code Incorrect", Font_Text, _Text_Original_Color, NO_STYLE, NO_ANIMATION);
|
||||
}
|
||||
|
||||
_Screen_Idle_Counter_Disable = true;
|
||||
|
||||
Display_Select_Object();
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
if(_Code_Correct) {
|
||||
Update_Dot_Animation();
|
||||
}
|
||||
|
||||
if(_Counter == IMAGE_FADE_START_FRAME && _Code_Correct)
|
||||
{
|
||||
if(_EEPROM_Write_Status == EEPROM_STATUS_NONE) {
|
||||
_EEPROM_Write_Status = EEPROM_Get_Write_Status();
|
||||
}
|
||||
|
||||
Display_Objects_Update_Enabled(_Object_Text_Writing, false);
|
||||
for(int i = 0; i < 3; i++) {
|
||||
Display_Objects_Update_Enabled(_Object_Dots[i], false);
|
||||
}
|
||||
|
||||
if(_EEPROM_Write_Status == EEPROM_STATUS_WRITE_OK) {
|
||||
Display_Objects_Update_Enabled(_Object_Image, true);
|
||||
} else if(_EEPROM_Write_Status == EEPROM_STATUS_WRITE_FAILED) {
|
||||
Display_Objects_Update_Image(_Object_Image, _Image_Failed_Red_128x128);
|
||||
Display_Objects_Update_Enabled(_Object_Image, true);
|
||||
}
|
||||
|
||||
// Display_Objects_Update_Alpha(_Object_Image, 0);
|
||||
Display_Objects_Update_Scale(_Object_Image, 0);
|
||||
}
|
||||
|
||||
// Smooth text and dots fade-out (overlapping with image fade-in)
|
||||
if(_Counter >= TEXT_FADE_START_FRAME && _Counter < (TEXT_FADE_START_FRAME + TEXT_FADE_DURATION) && _Code_Correct)
|
||||
{
|
||||
float Fade_Progress = (float)(_Counter - TEXT_FADE_START_FRAME) / (float)TEXT_FADE_DURATION;
|
||||
|
||||
// Use Ease_Out_Cubic for smooth, natural fade (accelerates at start, decelerates at end)
|
||||
float Eased_Progress = Ease_Out_Cubic(Fade_Progress);
|
||||
|
||||
// Calculate inverse progress for fade-out (1.0 -> 0.0)
|
||||
float Fade_Out = 1.0f - Eased_Progress;
|
||||
|
||||
// Fade text to background color
|
||||
Display_Color Faded_Text = Display_Color_Interpolate_Float(_Text_Original_Color, DISPLAY_COLOR_BLACK, Eased_Progress);
|
||||
Display_Objects_Update_Color(_Object_Text_Writing, Faded_Text);
|
||||
|
||||
// Fade dots to background
|
||||
Display_Color Faded_Dot_Active = Display_Color_Interpolate_Float(_Dot_Active_Original_Color, DISPLAY_COLOR_BLACK, Eased_Progress);
|
||||
Display_Color Faded_Dot_Inactive = Display_Color_Interpolate_Float(_Dot_Inactive_Original_Color, DISPLAY_COLOR_BLACK, Eased_Progress);
|
||||
|
||||
// Apply faded colors while maintaining animation state
|
||||
int Active_Dot = _Dot_Animation_Phase / DOT_ANIMATION_SPEED;
|
||||
for(int i = 0; i < 3; i++) {
|
||||
Display_Color Dot_Color = (i == Active_Dot) ? Faded_Dot_Active : Faded_Dot_Inactive;
|
||||
Display_Objects_Update_Color(_Object_Dots[i], Dot_Color);
|
||||
}
|
||||
}
|
||||
|
||||
// Disable text and dots after fade-out completes
|
||||
if(_Counter == (TEXT_FADE_START_FRAME + TEXT_FADE_DURATION) && _Code_Correct)
|
||||
{
|
||||
Display_Objects_Update_Enabled(_Object_Text_Writing, false);
|
||||
for(int i = 0; i < 3; i++) {
|
||||
Display_Objects_Update_Enabled(_Object_Dots[i], false);
|
||||
}
|
||||
}
|
||||
|
||||
// Smooth image fade-in with extended duration and better easing
|
||||
if(_Counter >= IMAGE_FADE_START_FRAME && _Counter < (IMAGE_FADE_START_FRAME + IMAGE_FADE_DURATION) && _Code_Correct)
|
||||
{
|
||||
float Fade_Progress = (float)(_Counter - IMAGE_FADE_START_FRAME) / (float)IMAGE_FADE_DURATION;
|
||||
|
||||
// Use Ease_Out_Cubic for smooth, elegant appearance
|
||||
// This creates a fast start that gradually slows down - feels very natural
|
||||
float Eased_Progress = Ease_Out_Cubic(Fade_Progress);
|
||||
|
||||
// Convert to alpha value (0-255)
|
||||
uint8_t Alpha_Value = (uint8_t)(Eased_Progress * 255.0f);
|
||||
|
||||
Display_Objects_Update_Scale(_Object_Image, Eased_Progress);
|
||||
|
||||
// Apply alpha to the appropriate image
|
||||
// Display_Objects_Update_Alpha(_Object_Image, Alpha_Value);
|
||||
}
|
||||
|
||||
// Transition to next screen after animation completes
|
||||
if(_Counter >= ANIMATION_END_FRAME) {
|
||||
_Screen_Idle_Counter_Disable = false;
|
||||
Screen_Setup_Settings(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, 4);
|
||||
}
|
||||
|
||||
_Counter++;
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Touch_Event(int16_t x, int16_t y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Focused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Defocused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Select(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
if(_Counter >= 120) {
|
||||
_Screen_Idle_Counter_Disable = false;
|
||||
Screen_Setup_Settings(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, 4);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
void Update_Dot_Animation(void)
|
||||
{
|
||||
_Dot_Animation_Phase++;
|
||||
|
||||
if(_Dot_Animation_Phase >= (DOT_ANIMATION_SPEED * 3)) {
|
||||
_Dot_Animation_Phase = 0;
|
||||
}
|
||||
|
||||
// Determine which dot should be active
|
||||
int Active_Dot = _Dot_Animation_Phase / DOT_ANIMATION_SPEED;
|
||||
|
||||
// Update dot colors
|
||||
for(int i = 0; i < 3; i++) {
|
||||
Display_Color Dot_Color = (i == Active_Dot) ? _Dot_Active_Original_Color : _Dot_Inactive_Original_Color;
|
||||
Display_Objects_Update_Color(_Object_Dots[i], Dot_Color);
|
||||
}
|
||||
}
|
||||
@@ -10,33 +10,44 @@
|
||||
#include "../Screens.h"
|
||||
#include "../UI_Control.h"
|
||||
#include "../Command_Definition.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Font.h"
|
||||
#include "../Display_Objects.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
#include "../INA260.h"
|
||||
#include "../EEPROM_M24C64.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
#define GRAPH_DATA_WDITH 200
|
||||
#define COLOR_DARKGREEN DISPLAY_COLOR_FROM_RGB888(0, 100, 0)
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_6x12[];
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_10x17[];
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_7x15[];
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_11x17[];
|
||||
|
||||
static Object_ID _Object_Value_BusVoltage;
|
||||
static Object_ID _Object_Value_Current;
|
||||
|
||||
static uint16_t _Data_BusVoltage[GRAPH_DATA_WDITH];
|
||||
static uint16_t _Data_BusVoltage_Threshold_Overvoltage[GRAPH_DATA_WDITH];
|
||||
static uint16_t _Data_BusVoltage_Threshold_Undervoltage[GRAPH_DATA_WDITH];
|
||||
static float _Current_BusVoltage_V;
|
||||
static uint16_t _Data_Current[GRAPH_DATA_WDITH];
|
||||
static uint16_t _Data_Threshold_Current[GRAPH_DATA_WDITH];
|
||||
static float _Actual_BusVoltage_V;
|
||||
static float _Actual_Current_A;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Graph(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
@@ -53,7 +64,19 @@ static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Graph(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Tick = Screen_Tick;
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
for(int i=0;i<GRAPH_DATA_WDITH;i++) {
|
||||
_Data_BusVoltage[i] = 0;
|
||||
_Data_Current[i] = 0;
|
||||
_Data_Threshold_Current[i] = _EEPROM_Content.Device_Configuration.Current_Threshold * 5; // 5x, due to 4x 1.25mA
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Last = Screen_Init;
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
@@ -64,37 +87,64 @@ void Screen_Setup_Graph(Screen_Transition_Direction direction_out, Screen_Transi
|
||||
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
|
||||
|
||||
Display_Objects_Clear();
|
||||
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
for(int i=0;i<GRAPH_DATA_WDITH;i++) {
|
||||
_Data_BusVoltage[i] = 0;
|
||||
_Data_BusVoltage_Threshold_Overvoltage[i] = THRESHOLD_OVERVOLTAGE_mV;
|
||||
_Data_BusVoltage_Threshold_Undervoltage[i] = THRESHOLD_UNDERVOLTAGE_mV;
|
||||
}
|
||||
char Current_Threshold[10];
|
||||
Display_Font_Set_Font(_Font_DejaVu_Sans_Mono_6x12);
|
||||
int16_t Font_6_1_Height = Display_Font_Get_Font_Height();
|
||||
|
||||
Font_ID Font_10_1 = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_10x17, 1);
|
||||
sprintf(Current_Threshold, "%.3fA", (float)(_EEPROM_Content.Device_Configuration.Current_Threshold * 5) / 1000.0f);
|
||||
int16_t Current_Threshold_Label_Y = DISPLAY_Y_CENTER + 100 - _EEPROM_Content.Device_Configuration.Current_Threshold * 5 / 25;
|
||||
|
||||
Display_Objects_Add_Graph(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, false, _Data_BusVoltage, GRAPH_DATA_WDITH, 32000, 0, DISPLAY_COLOR_WHITE, 200, NO_STYLE, NO_ANIMATION);
|
||||
Display_Objects_Add_Graph(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, false, _Data_BusVoltage_Threshold_Overvoltage, GRAPH_DATA_WDITH, 32000, 0, DISPLAY_COLOR_RED, 200, NO_STYLE, NO_ANIMATION);
|
||||
Display_Objects_Add_Graph(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, false, _Data_BusVoltage_Threshold_Undervoltage, GRAPH_DATA_WDITH, 32000, 0, DISPLAY_COLOR_RED, 200, NO_STYLE, NO_ANIMATION);
|
||||
if((Current_Threshold_Label_Y <= (149 + Font_6_1_Height)) && (Current_Threshold_Label_Y >= 149)) {
|
||||
Current_Threshold_Label_Y += (Font_6_1_Height + 1);
|
||||
}
|
||||
else if((Current_Threshold_Label_Y <= 149) && (Current_Threshold_Label_Y >= 141)) {
|
||||
Current_Threshold_Label_Y = 141;
|
||||
}
|
||||
|
||||
Display_Objects_Add_Float(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, 232, NOT_SELECTABLE, &_Current_BusVoltage_V, "%2.3fV", Font_10_1, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
Font_ID Font_6_1 = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_6x12, 1);
|
||||
Font_ID Font_10_1 = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_10x17, 1);
|
||||
Font_ID Font_7_1_B = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_7x15, 1);
|
||||
Font_ID Font_11_1_B = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_11x17, 1);
|
||||
|
||||
// Threshold Lines / Areas
|
||||
Display_Objects_Add_Rectangle_Frame(CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, 141, NOT_SELECTABLE, COLOR_DARKGREEN, GRAPH_DATA_WDITH+2, 8, 1, NO_STYLE, NO_ANIMATION);
|
||||
Display_Objects_Add_Graph(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, false, _Data_Threshold_Current, GRAPH_DATA_WDITH, 5000, 0, DISPLAY_COLOR_ORANGE, 200, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
// Threshold Labels
|
||||
Display_Objects_Add_Text(LEFT_BOTTOM, BOTH_IN_PIXEL, 19, 140, NOT_SELECTABLE, "12.5V", Font_6_1, COLOR_DARKGREEN, NO_STYLE, NO_ANIMATION);
|
||||
Display_Objects_Add_Text(LEFT_TOP , BOTH_IN_PIXEL, 19, 149, NOT_SELECTABLE, "11.5V", Font_6_1, COLOR_DARKGREEN, NO_STYLE, NO_ANIMATION);
|
||||
Display_Objects_Add_Text(CENTER_BOTTOM, X_IN_PERCENT_Y_IN_PIXEL, 50, Current_Threshold_Label_Y, NOT_SELECTABLE, Current_Threshold, Font_6_1, DISPLAY_COLOR_ORANGE, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
// Data Graphs (Voltage and Current)
|
||||
Display_Objects_Add_Graph(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, false, _Data_BusVoltage, GRAPH_DATA_WDITH, 32000, 0, DISPLAY_COLOR_RED, 200, NO_STYLE, NO_ANIMATION);
|
||||
Display_Objects_Add_Graph(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, false, _Data_Current, GRAPH_DATA_WDITH, 5000, 0, DISPLAY_COLOR_YELLOW, 200, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
// Data Values (Voltage and Current)
|
||||
_Object_Value_BusVoltage = Display_Objects_Add_Float(RIGHT_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 48, 50, NOT_SELECTABLE, &_Actual_BusVoltage_V, "%2.1fV", Font_11_1_B, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION);
|
||||
_Object_Value_Current = Display_Objects_Add_Float(LEFT_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 52, 50, NOT_SELECTABLE, &_Actual_Current_A, "%1.3fA", Font_11_1_B, DISPLAY_COLOR_YELLOW, NO_STYLE, NO_ANIMATION);
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
for(int i=0;i<GRAPH_DATA_WDITH-1;i++) {
|
||||
Display_Objects_Update_Coordinates(_Object_Value_BusVoltage, RIGHT_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 48, 50);
|
||||
Display_Objects_Update_Coordinates(_Object_Value_Current, LEFT_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 52, 50);
|
||||
|
||||
for(int i=0;i<GRAPH_DATA_WDITH-1;i++) {
|
||||
_Data_BusVoltage[i] = _Data_BusVoltage[i+1];
|
||||
_Data_Current[i] = _Data_Current[i+1];
|
||||
}
|
||||
|
||||
_Data_BusVoltage[GRAPH_DATA_WDITH-1] = INA260_Get_BusVoltage_mV();
|
||||
_Current_BusVoltage_V = ((float)_Data_BusVoltage[GRAPH_DATA_WDITH-1]) / 1000.0f;
|
||||
_Actual_BusVoltage_V = ((float)_Data_BusVoltage[GRAPH_DATA_WDITH-1]) / 1000.0f;
|
||||
|
||||
_Data_Current[GRAPH_DATA_WDITH-1] = INA260_Get_Current_mA();
|
||||
_Actual_Current_A = ((float)_Data_Current[GRAPH_DATA_WDITH-1]) / 1000.0f;
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
|
||||
161
Firmware/Screens_Display/Screen_Idle.c
Normal file
161
Firmware/Screens_Display/Screen_Idle.c
Normal file
@@ -0,0 +1,161 @@
|
||||
/*
|
||||
* File: Screen_Idle.c
|
||||
*
|
||||
* Created: Created: Saturday October 2025 20:32:05
|
||||
* Author: Chris
|
||||
*/
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../UI_Control.h"
|
||||
#include "../Mode_Manager.h"
|
||||
#include "../EEPROM_M24C64.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Objects.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
#include "Common_Screen_Elements.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
extern const uint16_t _Image_Fad_Logo_Background_160x160[];
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Idle(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
static void Screen_Action_CW (Object_ID object_id);
|
||||
static void Screen_Action_CCW (Object_ID object_id);
|
||||
static void Screen_On_Object_Focused (Object_ID object_id);
|
||||
static void Screen_On_Object_Defocused (Object_ID object_id);
|
||||
static void Screen_On_Object_Select (Object_ID object_id);
|
||||
static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Idle(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
// _Screen_Last = Screen_Init; // We don't want that here...
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
_Screen_Action_CCW = Screen_Action_CCW;
|
||||
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
|
||||
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
|
||||
_Screen_On_Object_Select = Screen_On_Object_Select;
|
||||
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
|
||||
|
||||
Display_Objects_Clear();
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
|
||||
switch(_EEPROM_Content.Device_Configuration.Idle_Screen)
|
||||
{
|
||||
case IDLE_SCREEN_LOGO:
|
||||
Display_Objects_Add_Image(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, _Image_Fad_Logo_Background_160x160, 0, NO_STYLE, NO_ANIMATION);
|
||||
break;
|
||||
|
||||
case IDLE_SCREEN_CURRENT_MODE:
|
||||
Common_Screen_Element_Init_Current_Mode(Mode_Manager_Get_Current_Mode());
|
||||
break;
|
||||
|
||||
case IDLE_SCREEN_MODE_ACTIVITY:
|
||||
Common_Screen_Element_Init_Mode_Activity(Mode_Manager_Get_Current_Mode());
|
||||
break;
|
||||
|
||||
case IDLE_SCREEN_BLACK:
|
||||
default: break;
|
||||
}
|
||||
|
||||
_Screen_Idle_Active = true;
|
||||
Display_Select_Object();
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
switch(_EEPROM_Content.Device_Configuration.Idle_Screen)
|
||||
{
|
||||
case IDLE_SCREEN_MODE_ACTIVITY:
|
||||
Common_Screen_Element_Tick_Mode_Activity(Mode_Manager_Get_Current_Mode());
|
||||
break;
|
||||
|
||||
case IDLE_SCREEN_LOGO:
|
||||
case IDLE_SCREEN_CURRENT_MODE:
|
||||
case IDLE_SCREEN_BLACK:
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Touch_Event(int16_t x, int16_t y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
_Screen_Idle_Active = false;
|
||||
_Screen_Last(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES);
|
||||
}
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
_Screen_Idle_Active = false;
|
||||
_Screen_Last(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES);
|
||||
}
|
||||
|
||||
void Screen_On_Object_Focused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Defocused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Select(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
_Screen_Idle_Active = false;
|
||||
_Screen_Last(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
|
||||
@@ -41,9 +41,6 @@
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
extern const unsigned char _Font_Victor_Mono_Bold_8x19[];
|
||||
extern const unsigned char _Font_Victor_Mono_Regular_6x11[];
|
||||
extern const unsigned char _Font_Victor_Mono_Regular_7x13[];
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_10x17[];
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_6x12[];
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_Oblique_10x19[];
|
||||
@@ -300,12 +297,12 @@ static void Update_Dot_Animation(void)
|
||||
}
|
||||
|
||||
// Determine which dot should be active
|
||||
int active_dot = _Dot_Animation_Phase / DOT_ANIMATION_SPEED;
|
||||
int Active_Dot = _Dot_Animation_Phase / DOT_ANIMATION_SPEED;
|
||||
|
||||
// Update dot colors
|
||||
for(int i = 0; i < 3; i++) {
|
||||
Display_Color dot_color = (i == active_dot) ? COLOR_DOT_ACTIVE : COLOR_DOT_INACTIVE;
|
||||
Display_Objects_Update_Color(_Object_Dots[i], dot_color);
|
||||
Display_Color Dot_Color = (i == Active_Dot) ? COLOR_DOT_ACTIVE : COLOR_DOT_INACTIVE;
|
||||
Display_Objects_Update_Color(_Object_Dots[i], Dot_Color);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -56,18 +56,29 @@ static int16_t _X_Data_Info = 10+25;
|
||||
static int16_t _X_Data_Timestamp = 10+89;
|
||||
static int16_t _X_Data_Timestamp_Text = 10+25;
|
||||
|
||||
static int16_t _Y_Offest_Scroll;
|
||||
static int32_t _Y_Offest_Scroll;
|
||||
static int16_t _Y_Offset_1st_Entry = 20;
|
||||
static int16_t _Y_Offset_Rows = 10;
|
||||
static int16_t _Y_Between_Entries = 38;
|
||||
|
||||
static int16_t _Y_Scroll_Speed = 10;
|
||||
|
||||
// Default configuration
|
||||
static const Encoder_Acceleration_Config _MIDI_Log_Acceleration_Config = {
|
||||
.Base_Step = 10,
|
||||
.Base_Threshold = 5, // Requires more steps to trigger
|
||||
.Level_Step = 3, // Bigger jumps between levels
|
||||
.Max_Level = 3, // Fewer levels
|
||||
.Timeout_ms = 100, // Longer timeout
|
||||
.Multipliers = {1, 2, 3, 5, 7, 10, 13, 16, 20, 25}
|
||||
};
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_MIDI_Log(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Action_CW (Object_ID object_id);
|
||||
@@ -89,7 +100,15 @@ bool Check_Entry_Is_Command(uint entry_id);
|
||||
*******************************************************************/
|
||||
void Screen_Setup_MIDI_Log(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Tick = Screen_Tick;
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
_Y_Offest_Scroll = 0;
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Last = Screen_Init;
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
_Screen_Action_CCW = Screen_Action_CCW;
|
||||
@@ -101,6 +120,10 @@ void Screen_Setup_MIDI_Log(Screen_Transition_Direction direction_out, Screen_Tra
|
||||
Display_Objects_Clear();
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
Font_ID Font_10_0 = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_6x12, 0);
|
||||
Font_ID Font_10_1 = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_6x12, 1);
|
||||
|
||||
@@ -110,12 +133,6 @@ void Screen_Setup_MIDI_Log(Screen_Transition_Direction direction_out, Screen_Tra
|
||||
|
||||
Style_ID Style_Header = Display_Objects_Add_Style(DISPLAY_COLOR_LIGHTGREY, DISPLAY_COLOR_BLACK, 0, 2, PADDING_1(2), STYLE_WIDTH_HEIGHT_RATIO_AUTO);
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
|
||||
_Y_Offest_Scroll = 0;
|
||||
|
||||
_Object_Text_Top = Display_Objects_Add_Text(CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, 0, NOT_SELECTABLE, "Received MIDI Data", Font_10_0, DISPLAY_COLOR_BLACK, Style_Header, NO_ANIMATION);
|
||||
|
||||
for(int16_t i=0;i<RECEIVED_MIDI_HISTORY_BUFFER_SIZE;i++)
|
||||
@@ -141,6 +158,10 @@ void Screen_Setup_MIDI_Log(Screen_Transition_Direction direction_out, Screen_Tra
|
||||
|
||||
Update_Object_Coordinates();
|
||||
Display_Select_Object();
|
||||
|
||||
UI_Control_Acceleration_Reset();
|
||||
UI_Control_Acceleration_Init_Custom(&_MIDI_Log_Acceleration_Config);
|
||||
UI_Control_Acceleration_Set_Enabled(true);
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
@@ -155,13 +176,15 @@ void Screen_Click(uint button_return_value)
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
_Y_Offest_Scroll -= _Y_Scroll_Speed;
|
||||
// _Y_Offest_Scroll -= _Y_Scroll_Speed;
|
||||
UI_Control_Selector_Dec(&_Y_Offest_Scroll, INT16_MIN, INT16_MAX, false);
|
||||
Update_Object_Coordinates();
|
||||
}
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
_Y_Offest_Scroll += _Y_Scroll_Speed;
|
||||
// _Y_Offest_Scroll += _Y_Scroll_Speed;
|
||||
UI_Control_Selector_Inc(&_Y_Offest_Scroll, INT16_MIN, INT16_MAX, false);
|
||||
Update_Object_Coordinates();
|
||||
}
|
||||
|
||||
@@ -182,7 +205,10 @@ void Screen_On_Object_Select(Object_ID object_id)
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
Screen_Setup_Menu_Main(TRANSITION_RIGHT, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, false, 0);
|
||||
UI_Control_Init(); // Reset to default configuration
|
||||
UI_Control_Acceleration_Set_Enabled(false);
|
||||
|
||||
Screen_Setup_Menu_Main(TRANSITION_RIGHT, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, false, 0);
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
@@ -190,22 +216,22 @@ void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
*******************************************************************/
|
||||
void Update_Object_Coordinates(void)
|
||||
{
|
||||
Display_Objects_Update_Coordinates(_Object_Text_Top, CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Offest_Scroll);
|
||||
Display_Objects_Update_Coordinates(_Object_Text_Top, CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, (int16_t)_Y_Offest_Scroll);
|
||||
|
||||
for(uint i=0;i<RECEIVED_MIDI_HISTORY_BUFFER_SIZE;i++)
|
||||
{
|
||||
Object_History_Entry_s *E = &Objects_History[i];
|
||||
|
||||
Display_Objects_Update_Coordinates(E->Object_Number , LEFT_TOP, BOTH_IN_PIXEL, _X_Number , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(E->Object_Data_Hex , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Hex , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(E->Object_Data_Dec , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Dec , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(E->Object_Type_Info , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Info , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries + 1 * _Y_Offset_Rows);
|
||||
Display_Objects_Update_Coordinates(E->Object_Timestamp , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Timestamp , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries + 2 * _Y_Offset_Rows);
|
||||
Display_Objects_Update_Coordinates(E->Object_Timestamp_Text , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Timestamp_Text , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries + 2 * _Y_Offset_Rows);
|
||||
Display_Objects_Update_Coordinates(E->Object_Number , LEFT_TOP, BOTH_IN_PIXEL, _X_Number , _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + i*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(E->Object_Data_Hex , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Hex , _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + i*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(E->Object_Data_Dec , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Dec , _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + i*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(E->Object_Type_Info , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Info , _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + i*_Y_Between_Entries + 1 * _Y_Offset_Rows);
|
||||
Display_Objects_Update_Coordinates(E->Object_Timestamp , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Timestamp , _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + i*_Y_Between_Entries + 2 * _Y_Offset_Rows);
|
||||
Display_Objects_Update_Coordinates(E->Object_Timestamp_Text , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Timestamp_Text , _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + i*_Y_Between_Entries + 2 * _Y_Offset_Rows);
|
||||
}
|
||||
|
||||
Display_Objects_Update_Coordinates(_Object_Text_Bottom, CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Offset_1st_Entry + _Y_Offest_Scroll + RECEIVED_MIDI_HISTORY_BUFFER_SIZE*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(_Object_Text_Return, CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Offset_1st_Entry + _Y_Offest_Scroll + RECEIVED_MIDI_HISTORY_BUFFER_SIZE*_Y_Between_Entries + _Y_Offset_1st_Entry);
|
||||
Display_Objects_Update_Coordinates(_Object_Text_Bottom, CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + RECEIVED_MIDI_HISTORY_BUFFER_SIZE*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(_Object_Text_Return, CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + RECEIVED_MIDI_HISTORY_BUFFER_SIZE*_Y_Between_Entries + _Y_Offset_1st_Entry);
|
||||
}
|
||||
|
||||
void Update_Object_Values(void)
|
||||
|
||||
@@ -80,11 +80,14 @@ static Configuration_Menu_Ring _Ring_Menu_Config = {
|
||||
.Enable_Appear_Animation = false
|
||||
};
|
||||
|
||||
static bool _Do_Menu_Animation;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Menu_Main(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, bool do_menu_animation, uint32_t selected_entry);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
@@ -102,7 +105,21 @@ static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Menu_Main(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, bool do_menu_animation, uint32_t selected_entry)
|
||||
{
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Do_Menu_Animation = do_menu_animation;
|
||||
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
// Initialize values
|
||||
_Ring_Menu_Selected = 0;
|
||||
if(selected_entry < ENTRY_COUNT) {
|
||||
_Ring_Menu_Selected = selected_entry;
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Last = Screen_Init;
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
@@ -116,26 +133,20 @@ void Screen_Setup_Menu_Main(Screen_Transition_Direction direction_out, Screen_Tr
|
||||
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
|
||||
_Object_Ring_Menu = Display_Objects_Add_Menu_Ring(_Ring_Menu_Items, ENTRY_COUNT, &_Ring_Menu_Selected, &_Ring_Menu_Config);
|
||||
_Object_Ring_Menu = Display_Objects_Add_Menu_Ring(_Ring_Menu_Items, ENTRY_COUNT, &_Ring_Menu_Selected, &_Ring_Menu_Config);
|
||||
|
||||
if(do_menu_animation) {
|
||||
if(_Do_Menu_Animation) {
|
||||
Display_Objects_Menu_Ring_Start_Appear_Animation(_Object_Ring_Menu);
|
||||
}
|
||||
|
||||
Display_Select_First_Object();
|
||||
Display_Select_Object();
|
||||
_Do_Menu_Animation = false;
|
||||
|
||||
// Initialize values
|
||||
_Ring_Menu_Selected = 0;
|
||||
if(selected_entry < ENTRY_COUNT) {
|
||||
_Ring_Menu_Selected = selected_entry;
|
||||
}
|
||||
Display_Select_First_Object();
|
||||
Display_Select_Object();
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
|
||||
@@ -10,10 +10,14 @@
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../UI_Control.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
#include "../Mode_Manager.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Objects.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
#include "Common_Screen_Elements.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
@@ -27,6 +31,7 @@
|
||||
// Function Declarations
|
||||
void Screen_Setup_Mode(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
@@ -43,7 +48,13 @@ static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Mode(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Tick = Screen_Tick;
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Last = Screen_Init;
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
@@ -61,23 +72,14 @@ void Screen_Setup_Mode(Screen_Transition_Direction direction_out, Screen_Transit
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
|
||||
Display_Objects_Add_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_RED, 80, 80, 1, NO_STYLE, NO_ANIMATION);
|
||||
// Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_GREEN, 80, 80, 10, 4, NO_STYLE, NO_ANIMATION);
|
||||
// Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_GREEN, 100, 100, 15, 1, NO_STYLE, NO_ANIMATION);
|
||||
// Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_GREEN, 80, 80, 5, 1, NO_STYLE, NO_ANIMATION);
|
||||
// Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_GREEN , 80, 80, 10, 1, NO_STYLE, NO_ANIMATION);
|
||||
// Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_BLUE , 60, 60, 5, 1, NO_STYLE, NO_ANIMATION);
|
||||
Common_Screen_Element_Init_Mode_Activity(Mode_Manager_Get_Current_Mode());
|
||||
|
||||
// Display_Objects_Add_Circle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_BLUE, 40, 5, NO_STYLE, NO_ANIMATION);
|
||||
Display_Objects_Add_Circle_Filled(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_BLUE, 40, NO_STYLE, NO_ANIMATION);
|
||||
// Display_Objects_Add_Circle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_ORANGE, 40, 1, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
Display_Select_Object();
|
||||
Display_Select_Object();
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
|
||||
Common_Screen_Element_Tick_Mode_Activity(Mode_Manager_Get_Current_Mode());
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
|
||||
147
Firmware/Screens_Display/Screen_Mode_Change.c
Normal file
147
Firmware/Screens_Display/Screen_Mode_Change.c
Normal file
@@ -0,0 +1,147 @@
|
||||
/*
|
||||
* File: Screen_Mode_Change.c
|
||||
*
|
||||
* Created: Created: Saturday October 2025 21:07:48
|
||||
* Author: Chris
|
||||
*/
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../UI_Control.h"
|
||||
#include "../Mode_Manager.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Objects.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
#include "Common_Screen_Elements.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
extern const uint16_t _Image_Forest_Pine_Midi_64x64[];
|
||||
extern const uint16_t _Image_Steel_Blue_Jam_Happy_64x64[];
|
||||
extern const uint16_t _Image_Stone_Blue_Light_On_64x64[];
|
||||
|
||||
static Mode _Mode;
|
||||
static uint32_t _Counter;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Mode_Change(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, Mode mode);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
static void Screen_Action_CW (Object_ID object_id);
|
||||
static void Screen_Action_CCW (Object_ID object_id);
|
||||
static void Screen_On_Object_Focused (Object_ID object_id);
|
||||
static void Screen_On_Object_Defocused (Object_ID object_id);
|
||||
static void Screen_On_Object_Select (Object_ID object_id);
|
||||
static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Mode_Change(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, Mode mode)
|
||||
{
|
||||
_Mode = mode;
|
||||
_Counter = 0;
|
||||
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
// _Screen_Last = Screen_Init; // We don't want that here...
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
_Screen_Action_CCW = Screen_Action_CCW;
|
||||
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
|
||||
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
|
||||
_Screen_On_Object_Select = Screen_On_Object_Select;
|
||||
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
|
||||
|
||||
Display_Objects_Clear();
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
|
||||
Common_Screen_Element_Init_Current_Mode(_Mode);
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
const uint32_t Counter_Max = 50;
|
||||
|
||||
if(_Counter == Counter_Max)
|
||||
{
|
||||
if(_Screen_Idle_Active == true) {
|
||||
Screen_Setup_Idle(TRANSITION_NONE, TRANSITION_NONE, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES);
|
||||
} else {
|
||||
_Screen_Last(TRANSITION_NONE, TRANSITION_NONE, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES);
|
||||
}
|
||||
}
|
||||
|
||||
_Counter++;
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Touch_Event(int16_t x, int16_t y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Focused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Defocused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Select(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
|
||||
@@ -9,10 +9,12 @@
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../UI_Control.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
#include "../Hierarchical_Menu.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Objects.h"
|
||||
#include "../Display_Render_Complex.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
@@ -21,16 +23,25 @@
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
static void (*_Return_Function)(Screen_Transition_Direction, Screen_Transition_Direction, Easing, uint32_t, int32_t);
|
||||
static int32_t _Return_Value;
|
||||
static Object_ID _Object_Message_Box;
|
||||
|
||||
static const Hierarchical_Menu* _Return_Menu = NULL;
|
||||
static const Menu_List* _Return_List = NULL;
|
||||
static int32_t _Return_Selected_Item;
|
||||
|
||||
static char* _Title;
|
||||
static uint32_t _Title_Length;
|
||||
static uint8_t* _Value;
|
||||
static bool _Bool_Value;
|
||||
static bool _Bool_Value;
|
||||
static bool _Decision_Made;
|
||||
static uint32_t _Counter;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Select_Bool(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, uint8_t *value, void (*return_function)(Screen_Transition_Direction, Screen_Transition_Direction, Easing, uint32_t, int32_t), int32_t return_value);
|
||||
void Screen_Setup_Select_Bool(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, uint8_t *value, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
@@ -45,9 +56,26 @@ static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Select_Bool(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, uint8_t *value, void (*return_function)(Screen_Transition_Direction, Screen_Transition_Direction, Easing, uint32_t, int32_t), int32_t return_value)
|
||||
void Screen_Setup_Select_Bool(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, uint8_t *value, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item)
|
||||
{
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Title = title;
|
||||
_Title_Length = title_length;
|
||||
_Value = value;
|
||||
_Bool_Value = (*_Value) > 0;
|
||||
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
_Return_Menu = return_menu;
|
||||
_Return_List = return_list;
|
||||
_Return_Selected_Item = return_selected_item;
|
||||
|
||||
_Decision_Made = false;
|
||||
_Counter = 0;
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
@@ -61,23 +89,25 @@ void Screen_Setup_Select_Bool(Screen_Transition_Direction direction_out, Screen_
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
|
||||
_Return_Function = return_function;
|
||||
_Return_Value = return_value;
|
||||
_Value = value;
|
||||
_Bool_Value = (*_Value) > 0;
|
||||
|
||||
Display_Objects_Add_Select_YesNo(title, title_length, &_Bool_Value, &_Configuration_Default_Select_YesNo);
|
||||
Display_Render_Complex_Select_YesNo_Set(_Bool_Value, &_Configuration_Default_Select_YesNo);
|
||||
Display_Objects_Add_Select_YesNo(_Title, _Title_Length, &_Bool_Value, &_Configuration_Default_Select_YesNo);
|
||||
_Object_Message_Box = Display_Objects_Add_Message_Box(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, "Saved", MESSAGE_BOX_ICON_CIRCLE_CHECKMARK, &_Message_Box_Style_Regular);
|
||||
|
||||
Display_Select_Object();
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
_Counter++;
|
||||
}
|
||||
|
||||
if(_Counter == MESSAGE_BOX_DEFAULT_TICKS) {
|
||||
Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_DOWN, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Menu, _Return_List, _Return_Selected_Item);
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
@@ -92,7 +122,11 @@ void Screen_Touch_Event(int16_t x, int16_t y)
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
(*_Value) ^= 0x01;
|
||||
if(_Decision_Made) {
|
||||
return;
|
||||
}
|
||||
|
||||
(*_Value) ^= 0x01;
|
||||
|
||||
_Bool_Value = (*_Value) > 0;
|
||||
}
|
||||
@@ -119,7 +153,10 @@ void Screen_On_Object_Select(Object_ID object_id)
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
_Return_Function(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Value);
|
||||
if(!_Decision_Made) {
|
||||
Display_Objects_Show_Message_Box(_Object_Message_Box, MESSAGE_BOX_DEFAULT_TICKS);
|
||||
_Decision_Made = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
204
Firmware/Screens_Display/Screen_Select_Hue.c
Normal file
204
Firmware/Screens_Display/Screen_Select_Hue.c
Normal file
@@ -0,0 +1,204 @@
|
||||
/*
|
||||
* File: Screen_Select_Hue.c
|
||||
*
|
||||
* Created: Created: Friday October 2025 16:12:34
|
||||
* Author: Chris
|
||||
*/
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../Hue.h"
|
||||
#include "../Command.h"
|
||||
#include "../UI_Control.h"
|
||||
#include "../Mode_Manager.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Objects.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
static Object_ID _Object_Message_Box;
|
||||
static Object_ID _Object_Value_Bar;
|
||||
|
||||
static const Hierarchical_Menu* _Return_Menu = NULL;
|
||||
static const Menu_List* _Return_List = NULL;
|
||||
static int32_t _Return_Selected_Item;
|
||||
|
||||
static char* _Title;
|
||||
static uint32_t _Title_Length;
|
||||
static int32_t* _Value;
|
||||
static int32_t _Display_Value;
|
||||
static const Menu_Configuration_Select_Value* _Config;
|
||||
|
||||
static bool _Decision_Made;
|
||||
static uint32_t _Counter;
|
||||
static Mode _Current_Mode;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Select_Hue(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* hue_value, const Menu_Configuration_Select_Value* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
static void Screen_Action_CW (Object_ID object_id);
|
||||
static void Screen_Action_CCW (Object_ID object_id);
|
||||
static void Screen_On_Object_Focused (Object_ID object_id);
|
||||
static void Screen_On_Object_Defocused (Object_ID object_id);
|
||||
static void Screen_On_Object_Select (Object_ID object_id);
|
||||
static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Select_Hue(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* hue_value, const Menu_Configuration_Select_Value* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item)
|
||||
{
|
||||
_Title = title;
|
||||
_Title_Length = title_length;
|
||||
_Value = hue_value;
|
||||
_Display_Value = *hue_value * config->Value_Display_Ratio;
|
||||
_Config = config;
|
||||
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
_Return_Menu = return_menu;
|
||||
_Return_List = return_list;
|
||||
_Return_Selected_Item = return_selected_item;
|
||||
|
||||
_Decision_Made = false;
|
||||
_Counter = 0;
|
||||
|
||||
_Current_Mode = Mode_Manager_Get_Current_Mode();
|
||||
|
||||
Mode_Manager_Set_Mode(PREVIEW);
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Last = Screen_Init;
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
_Screen_Action_CCW = Screen_Action_CCW;
|
||||
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
|
||||
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
|
||||
_Screen_On_Object_Select = Screen_On_Object_Select;
|
||||
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
|
||||
|
||||
Display_Objects_Clear();
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
Style_ID Style_Value_Var = Display_Objects_Add_Style(DISPLAY_COLOR_BLACK, DISPLAY_COLOR_LIGHTGREY, 1, 0, PADDING_1(3), STYLE_WIDTH_HEIGHT_RATIO_AUTO);
|
||||
|
||||
Display_Objects_Add_Select_Value(_Title, _Title_Length, &_Display_Value, _Config->Max, _Config->Min, (char*)_Config->Format, &_Configuration_Default_Select_Value);
|
||||
_Object_Value_Bar = Display_Objects_Add_Value_Bar_Rect(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 63, NOT_SELECTABLE, _Value, 359, 0, LEFT_TO_RIGHT, DISPLAY_COLOR_BLACK, 200, 10, Style_Value_Var, NO_ANIMATION);
|
||||
_Object_Message_Box = Display_Objects_Add_Message_Box(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, "Saved", MESSAGE_BOX_ICON_CIRCLE_CHECKMARK, &_Message_Box_Style_Regular);
|
||||
|
||||
Display_Select_Object();
|
||||
|
||||
UI_Control_Acceleration_Reset();
|
||||
UI_Control_Acceleration_Set_Enabled(_Config->Use_Acceleration);
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
LED_Data_t RGB_Value;
|
||||
RGB_Value.Pixel = Hue_Get_Color_From_Angle(*_Value);
|
||||
|
||||
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_RED , MULTICORE_NO_PARAMETER, RGB_Value.R);
|
||||
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_GREEN, MULTICORE_NO_PARAMETER, RGB_Value.G);
|
||||
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_BLUE , MULTICORE_NO_PARAMETER, RGB_Value.B);
|
||||
|
||||
Display_Objects_Update_Color(_Object_Value_Bar, DISPLAY_COLOR_FROM_RGB888(RGB_Value.R, RGB_Value.G, RGB_Value.B));
|
||||
|
||||
if(_Decision_Made) {
|
||||
_Counter++;
|
||||
}
|
||||
|
||||
if(_Counter == MESSAGE_BOX_DEFAULT_TICKS) {
|
||||
Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_DOWN, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Menu, _Return_List, _Return_Selected_Item);
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Touch_Event(int16_t x, int16_t y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
return;
|
||||
}
|
||||
|
||||
UI_Control_Selector_Inc(_Value, _Config->Min, _Config->Max, _Config->Cycle_Selector);
|
||||
|
||||
_Display_Value = *_Value * _Config->Value_Display_Ratio;
|
||||
}
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
return;
|
||||
}
|
||||
|
||||
UI_Control_Selector_Dec(_Value, _Config->Min, _Config->Max, _Config->Cycle_Selector);
|
||||
|
||||
_Display_Value = *_Value * _Config->Value_Display_Ratio;
|
||||
}
|
||||
|
||||
void Screen_On_Object_Focused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Defocused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Select(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
if(!_Decision_Made) {
|
||||
Display_Objects_Show_Message_Box(_Object_Message_Box, MESSAGE_BOX_DEFAULT_TICKS);
|
||||
_Decision_Made = true;
|
||||
|
||||
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_RED , MULTICORE_NO_PARAMETER, 0);
|
||||
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_GREEN, MULTICORE_NO_PARAMETER, 0);
|
||||
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_BLUE , MULTICORE_NO_PARAMETER, 0);
|
||||
|
||||
Mode_Manager_Set_Mode(_Current_Mode);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
|
||||
175
Firmware/Screens_Display/Screen_Select_List.c
Normal file
175
Firmware/Screens_Display/Screen_Select_List.c
Normal file
@@ -0,0 +1,175 @@
|
||||
/*
|
||||
* File: Screen_Select_List.c
|
||||
*
|
||||
* Created: Created: Friday September 2025 20:06:47
|
||||
* Author: Chris
|
||||
*/
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../UI_Control.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Objects.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
extern const uint8_t _Font_DejaVu_Sans_Mono_Bold_11x17[];
|
||||
|
||||
static Object_ID _Object_Message_Box;
|
||||
|
||||
static const Hierarchical_Menu* _Return_Menu = NULL;
|
||||
static const Menu_List* _Return_List = NULL;
|
||||
static int32_t _Return_Selected_Item;
|
||||
|
||||
static char* _Title;
|
||||
static uint32_t _Title_Length;
|
||||
static int32_t* _Value;
|
||||
static const Menu_Configuration_Select_List* _Config;
|
||||
|
||||
static bool _Decision_Made;
|
||||
static uint32_t _Counter;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Select_List(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* value, const Menu_Configuration_Select_List* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
static void Screen_Action_CW (Object_ID object_id);
|
||||
static void Screen_Action_CCW (Object_ID object_id);
|
||||
static void Screen_On_Object_Focused (Object_ID object_id);
|
||||
static void Screen_On_Object_Defocused (Object_ID object_id);
|
||||
static void Screen_On_Object_Select (Object_ID object_id);
|
||||
static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Select_List(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* value, const Menu_Configuration_Select_List* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item)
|
||||
{
|
||||
_Title = title;
|
||||
_Title_Length = title_length;
|
||||
_Value = value;
|
||||
_Config = config;
|
||||
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
_Return_Menu = return_menu;
|
||||
_Return_List = return_list;
|
||||
_Return_Selected_Item = return_selected_item;
|
||||
|
||||
_Decision_Made = false;
|
||||
_Counter = 0;
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Last = Screen_Init;
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
_Screen_Action_CCW = Screen_Action_CCW;
|
||||
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
|
||||
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
|
||||
_Screen_On_Object_Select = Screen_On_Object_Select;
|
||||
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
|
||||
|
||||
Display_Objects_Clear();
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
Font_ID Font_Title = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_11x17, 0);
|
||||
|
||||
Display_Objects_Add_Select_List((char*)_Config->Item_Names, _Config->Item_Count, _Config->Name_Length, _Value, &_Configuration_Default_Select_List);
|
||||
Display_Objects_Add_Text(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, 60, NOT_SELECTABLE, _Title, Font_Title, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
_Object_Message_Box = Display_Objects_Add_Message_Box(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, "Saved", MESSAGE_BOX_ICON_CIRCLE_CHECKMARK, &_Message_Box_Style_Regular);
|
||||
|
||||
Display_Select_Object();
|
||||
|
||||
UI_Control_Acceleration_Reset();
|
||||
UI_Control_Acceleration_Set_Enabled(_Config->Use_Acceleration);
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
_Counter++;
|
||||
}
|
||||
|
||||
if(_Counter == MESSAGE_BOX_DEFAULT_TICKS) {
|
||||
Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_DOWN, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Menu, _Return_List, _Return_Selected_Item);
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Touch_Event(int16_t x, int16_t y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
return;
|
||||
}
|
||||
|
||||
UI_Control_Selector_Inc(_Value, 0, _Config->Item_Count-1, _Config->Cycle_Selector);
|
||||
}
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
return;
|
||||
}
|
||||
|
||||
UI_Control_Selector_Dec(_Value, 0, _Config->Item_Count-1, _Config->Cycle_Selector);
|
||||
}
|
||||
|
||||
void Screen_On_Object_Focused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Defocused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Select(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
if(!_Decision_Made) {
|
||||
Display_Objects_Show_Message_Box(_Object_Message_Box, MESSAGE_BOX_DEFAULT_TICKS);
|
||||
_Decision_Made = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
|
||||
267
Firmware/Screens_Display/Screen_Select_MinMax.c
Normal file
267
Firmware/Screens_Display/Screen_Select_MinMax.c
Normal file
@@ -0,0 +1,267 @@
|
||||
/*
|
||||
* File: Screen_Select_MinMax.c
|
||||
*
|
||||
* Created: Created: Friday October 2025 16:50:54
|
||||
* Author: Chris
|
||||
*/
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../UI_Control.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Color.h"
|
||||
#include "../Display_Objects.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
#define DISPLAY_COLOR_VERYDARKGREY DISPLAY_COLOR_FROM_RGB888(64, 64, 64)
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
extern const uint8_t _Font_DejaVu_Sans_Mono_Bold_7x15[];
|
||||
extern const uint8_t _Font_DejaVu_Sans_Mono_10x17[];
|
||||
|
||||
static Object_ID _Object_Text_Min, _Object_Text_Max;
|
||||
static Object_ID _Object_Box;
|
||||
static Object_ID _Object_Message_Box;
|
||||
static Object_ID _Object_Value_Bar;
|
||||
|
||||
static const Hierarchical_Menu* _Return_Menu = NULL;
|
||||
static const Menu_List* _Return_List = NULL;
|
||||
static int32_t _Return_Selected_Item;
|
||||
|
||||
static char* _Title;
|
||||
static uint32_t _Title_Length;
|
||||
|
||||
static MinMax_t* _Value;
|
||||
static int32_t _Value_Min;
|
||||
static int32_t _Value_Max;
|
||||
static int32_t* _Current_Value;
|
||||
static int32_t _Limit_Min;
|
||||
static int32_t _Limit_Max;
|
||||
|
||||
static int16_t _Box_Y_Current;
|
||||
static int16_t _Box_Y_Target;
|
||||
|
||||
static const Menu_Configuration_Select_MinMax* _Config;
|
||||
static const int16_t _Y_Center_Min = DISPLAY_Y_CENTER;
|
||||
static const int16_t _Y_Center_Max = DISPLAY_Y_CENTER + 40;
|
||||
|
||||
|
||||
static bool _Decision_Made;
|
||||
static uint32_t _Counter;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Select_MinMax(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, MinMax_t* value, const Menu_Configuration_Select_MinMax* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
static void Screen_Action_CW (Object_ID object_id);
|
||||
static void Screen_Action_CCW (Object_ID object_id);
|
||||
static void Screen_On_Object_Focused (Object_ID object_id);
|
||||
static void Screen_On_Object_Defocused (Object_ID object_id);
|
||||
static void Screen_On_Object_Select (Object_ID object_id);
|
||||
static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Select_MinMax(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, MinMax_t* value, const Menu_Configuration_Select_MinMax* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item)
|
||||
{
|
||||
_Title = title;
|
||||
_Title_Length = title_length;
|
||||
|
||||
_Value = value;
|
||||
_Value_Min = _Value->Min;
|
||||
_Value_Max = _Value->Max;
|
||||
|
||||
_Current_Value = &_Value_Min;
|
||||
_Limit_Min = config->Min;
|
||||
_Limit_Max = config->Max - 1;
|
||||
|
||||
_Box_Y_Target = _Y_Center_Min;
|
||||
_Box_Y_Current = _Box_Y_Target;
|
||||
|
||||
_Config = config;
|
||||
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
_Return_Menu = return_menu;
|
||||
_Return_List = return_list;
|
||||
_Return_Selected_Item = return_selected_item;
|
||||
|
||||
_Decision_Made = false;
|
||||
_Counter = 0;
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Last = Screen_Init;
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
_Screen_Action_CCW = Screen_Action_CCW;
|
||||
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
|
||||
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
|
||||
_Screen_On_Object_Select = Screen_On_Object_Select;
|
||||
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
|
||||
|
||||
Display_Objects_Clear();
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
Font_ID Font_Title = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_7x15, DISPLAY_DEFAULT_CHAR_SPACING);
|
||||
Font_ID Font_Value = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_10x17, 0);
|
||||
Display_Objects_Add_Text(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, DISPLAY_Y_CENTER - 50, NOT_SELECTABLE, _Title, Font_Title, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
_Object_Text_Min = Display_Objects_Add_Integer(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Center_Min, NOT_SELECTABLE, (int*)(&_Value_Min), (char*)_Config->Format_Min, Font_Value, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
_Object_Text_Max = Display_Objects_Add_Integer(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Center_Max, NOT_SELECTABLE, (int*)(&_Value_Max), (char*)_Config->Format_Max, Font_Value, DISPLAY_COLOR_DARKGREY, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
_Object_Box = Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, _Box_Y_Current, NOT_SELECTABLE, DISPLAY_COLOR_LIGHTGREY, 140, 30, 3, 1, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
_Object_Message_Box = Display_Objects_Add_Message_Box(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, "Saved", MESSAGE_BOX_ICON_CIRCLE_CHECKMARK, &_Message_Box_Style_Regular);
|
||||
|
||||
Display_Select_Object();
|
||||
|
||||
UI_Control_Acceleration_Reset();
|
||||
UI_Control_Acceleration_Set_Enabled(_Config->Use_Acceleration);
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
// Update Values in actual datasctructure passed via pointer
|
||||
_Value->Min = _Value_Min;
|
||||
_Value->Max = _Value_Max;
|
||||
|
||||
// Animate the slection box to see which values in currently being edited
|
||||
if(_Box_Y_Target > _Box_Y_Current) {
|
||||
int16_t Distance = abs(_Box_Y_Current - _Box_Y_Target);
|
||||
_Box_Y_Current += ((Distance >> 1) + 1);
|
||||
}
|
||||
Display_Objects_Update_Coordinates(_Object_Box, CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, _Box_Y_Current);
|
||||
|
||||
// Adjust the colors of the text depending if the text is currently edited or not
|
||||
int16_t Max_Distance = abs(_Y_Center_Max - _Y_Center_Min);
|
||||
float Ratio = ((float)(_Box_Y_Current - _Y_Center_Min)) / (float)Max_Distance;
|
||||
Display_Color Color_Min = Display_Color_Interpolate_Float(DISPLAY_COLOR_LIGHTGREY, DISPLAY_COLOR_VERYDARKGREY, Ratio);
|
||||
Display_Color Color_Max = Display_Color_Interpolate_Float(DISPLAY_COLOR_VERYDARKGREY, DISPLAY_COLOR_LIGHTGREY, Ratio);
|
||||
|
||||
Display_Objects_Update_Color(_Object_Text_Min, Color_Min);
|
||||
Display_Objects_Update_Color(_Object_Text_Max, Color_Max);
|
||||
|
||||
// Increment tick counter for message box if all values have been selected
|
||||
if(_Decision_Made) {
|
||||
_Counter++;
|
||||
}
|
||||
|
||||
// Change back to the former screen (Hierarchical Menu), when the ticks are up
|
||||
if(_Counter == MESSAGE_BOX_DEFAULT_TICKS) {
|
||||
Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_DOWN, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Menu, _Return_List, _Return_Selected_Item);
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Touch_Event(int16_t x, int16_t y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
return;
|
||||
}
|
||||
|
||||
UI_Control_Selector_Inc(_Current_Value, _Limit_Min, _Limit_Max, _Config->Cycle_Selector);
|
||||
|
||||
if(_Current_Value == &_Value_Min) {
|
||||
if(_Value_Min >= _Value_Max) {
|
||||
_Value_Max = _Value_Min + 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(_Value_Max <= _Value_Min) {
|
||||
_Value_Min = _Value_Max - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
return;
|
||||
}
|
||||
|
||||
UI_Control_Selector_Dec(_Current_Value, _Limit_Min, _Limit_Max, _Config->Cycle_Selector);
|
||||
|
||||
if(_Current_Value == &_Value_Min) {
|
||||
if(_Value_Min >= _Value_Max) {
|
||||
_Value_Max = _Value_Min + 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(_Value_Max <= _Value_Min) {
|
||||
_Value_Min = _Value_Max - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_On_Object_Focused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Defocused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Select(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
if(_Current_Value == &_Value_Min) {
|
||||
_Current_Value = &_Value_Max;
|
||||
|
||||
_Limit_Min++;
|
||||
_Limit_Max++;
|
||||
|
||||
_Box_Y_Target = _Y_Center_Max;
|
||||
|
||||
Display_Select_Object();
|
||||
return;
|
||||
}
|
||||
|
||||
if(!_Decision_Made) {
|
||||
Display_Objects_Show_Message_Box(_Object_Message_Box, MESSAGE_BOX_DEFAULT_TICKS);
|
||||
_Decision_Made = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
|
||||
@@ -8,7 +8,10 @@
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../Command.h"
|
||||
#include "../UI_Control.h"
|
||||
#include "../Mode_Manager.h"
|
||||
#include "../Command_Definition.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Objects.h"
|
||||
@@ -17,17 +20,29 @@
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
static Object_ID _RGB_Selector_Object;
|
||||
static RGB_Color* _RGB_Color;
|
||||
static Object_ID _Object_Message_Box;
|
||||
|
||||
static const Hierarchical_Menu* _Return_Menu = NULL;
|
||||
static const Menu_List* _Return_List = NULL;
|
||||
static int32_t _Return_Selected_Item;
|
||||
|
||||
static char* _Title;
|
||||
static uint32_t _Title_Length;
|
||||
static LED_Data_t* _RGB_Color;
|
||||
|
||||
static uint8_t _Current_Component;
|
||||
static uint8_t* _Color;
|
||||
|
||||
static bool _Decision_Made;
|
||||
static uint32_t _Counter;
|
||||
static Mode _Current_Mode;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Select_RGB(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, RGB_Color* rgb_color);
|
||||
void Screen_Setup_Select_RGB(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, LED_Data_t* rgb_color, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
@@ -42,9 +57,29 @@ static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Select_RGB(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, RGB_Color* rgb_color)
|
||||
void Screen_Setup_Select_RGB(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, LED_Data_t* rgb_color, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item)
|
||||
{
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Current_Component = 0;
|
||||
_RGB_Color = rgb_color;
|
||||
_Color = &(rgb_color->Array[_Current_Component]);
|
||||
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
_Return_Menu = return_menu;
|
||||
_Return_List = return_list;
|
||||
_Return_Selected_Item = return_selected_item;
|
||||
|
||||
_Decision_Made = false;
|
||||
_Counter = 0;
|
||||
_Current_Mode = Mode_Manager_Get_Current_Mode();
|
||||
|
||||
Mode_Manager_Set_Mode(PREVIEW);
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
@@ -55,25 +90,14 @@ void Screen_Setup_Select_RGB(Screen_Transition_Direction direction_out, Screen_T
|
||||
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
|
||||
|
||||
Display_Objects_Clear();
|
||||
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
|
||||
_Current_Component = 0;
|
||||
_RGB_Color = rgb_color;
|
||||
_Color = &(rgb_color->Array[_Current_Component]);
|
||||
|
||||
// Create the RGB selector object
|
||||
_RGB_Selector_Object = Display_Objects_Add_Select_RGB(
|
||||
_RGB_Color, // Pointer to color to modify
|
||||
&_Current_Component, // Indicater for active RGB Base Color
|
||||
&_Configuration_Default_Select_RGB // Use configuration
|
||||
);
|
||||
Display_Objects_Add_Select_RGB(_RGB_Color, &_Current_Component, &_Configuration_Default_Select_RGB);
|
||||
_Object_Message_Box = Display_Objects_Add_Message_Box(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, "Saved", MESSAGE_BOX_ICON_CIRCLE_CHECKMARK, &_Message_Box_Style_Regular);
|
||||
|
||||
Display_Select_Object();
|
||||
|
||||
@@ -83,7 +107,17 @@ void Screen_Setup_Select_RGB(Screen_Transition_Direction direction_out, Screen_T
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_RED , MULTICORE_NO_PARAMETER, _RGB_Color->R);
|
||||
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_GREEN, MULTICORE_NO_PARAMETER, _RGB_Color->G);
|
||||
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_BLUE , MULTICORE_NO_PARAMETER, _RGB_Color->B);
|
||||
|
||||
if(_Decision_Made) {
|
||||
_Counter++;
|
||||
}
|
||||
|
||||
if(_Counter == MESSAGE_BOX_DEFAULT_TICKS) {
|
||||
Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_DOWN, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Menu, _Return_List, _Return_Selected_Item);
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
@@ -98,6 +132,10 @@ void Screen_Touch_Event(int16_t x, int16_t y)
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
return;
|
||||
}
|
||||
|
||||
int32_t Color = *_Color;
|
||||
UI_Control_Selector_Inc(&Color, 0, UINT8_MAX, false);
|
||||
*_Color = (uint8_t)Color;
|
||||
@@ -105,6 +143,10 @@ void Screen_Action_CW(Object_ID object_id)
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
return;
|
||||
}
|
||||
|
||||
int32_t Color = *_Color;
|
||||
UI_Control_Selector_Dec(&Color, 0, UINT8_MAX, false);
|
||||
*_Color = (uint8_t)Color;
|
||||
@@ -136,7 +178,16 @@ void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
return;
|
||||
}
|
||||
|
||||
// Screen_Setup_Menu_Main(TRANSITION_DOWN, TRANSITION_DOWN, INOUT_SINE, 15, false, 1);
|
||||
if(!_Decision_Made) {
|
||||
Display_Objects_Show_Message_Box(_Object_Message_Box, MESSAGE_BOX_DEFAULT_TICKS);
|
||||
_Decision_Made = true;
|
||||
|
||||
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_RED , MULTICORE_NO_PARAMETER, 0);
|
||||
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_GREEN, MULTICORE_NO_PARAMETER, 0);
|
||||
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_BLUE , MULTICORE_NO_PARAMETER, 0);
|
||||
|
||||
Mode_Manager_Set_Mode(_Current_Mode);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
173
Firmware/Screens_Display/Screen_Select_Value.c
Normal file
173
Firmware/Screens_Display/Screen_Select_Value.c
Normal file
@@ -0,0 +1,173 @@
|
||||
/*
|
||||
* File: Screen_Select_Value.c
|
||||
*
|
||||
* Created: Created: Friday August 2025 13:35:25
|
||||
* Author: Chris
|
||||
*/
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../UI_Control.h"
|
||||
#include "../Command_Definition.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Objects.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
static Object_ID _Object_Message_Box;
|
||||
|
||||
static const Hierarchical_Menu* _Return_Menu = NULL;
|
||||
static const Menu_List* _Return_List = NULL;
|
||||
static int32_t _Return_Selected_Item;
|
||||
|
||||
static char* _Title;
|
||||
static uint32_t _Title_Length;
|
||||
static int32_t* _Value;
|
||||
static int32_t _Display_Value;
|
||||
static const Menu_Configuration_Select_Value* _Config;
|
||||
|
||||
static bool _Decision_Made;
|
||||
static uint32_t _Counter;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Select_Value(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* value, const Menu_Configuration_Select_Value* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
static void Screen_Action_CW (Object_ID object_id);
|
||||
static void Screen_Action_CCW (Object_ID object_id);
|
||||
static void Screen_On_Object_Focused (Object_ID object_id);
|
||||
static void Screen_On_Object_Defocused (Object_ID object_id);
|
||||
static void Screen_On_Object_Select (Object_ID object_id);
|
||||
static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Select_Value(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* value, const Menu_Configuration_Select_Value* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item)
|
||||
{
|
||||
_Title = title;
|
||||
_Title_Length = title_length;
|
||||
_Value = value;
|
||||
_Display_Value = *value * config->Value_Display_Ratio;
|
||||
_Config = config;
|
||||
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
_Return_Menu = return_menu;
|
||||
_Return_List = return_list;
|
||||
_Return_Selected_Item = return_selected_item;
|
||||
|
||||
_Decision_Made = false;
|
||||
_Counter = 0;
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
_Screen_Action_CCW = Screen_Action_CCW;
|
||||
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
|
||||
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
|
||||
_Screen_On_Object_Select = Screen_On_Object_Select;
|
||||
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
|
||||
|
||||
Display_Objects_Clear();
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
Display_Objects_Add_Select_Value(_Title, _Title_Length, &_Display_Value, _Config->Max, _Config->Min, (char*)_Config->Format, &_Configuration_Default_Select_Value);
|
||||
_Object_Message_Box = Display_Objects_Add_Message_Box(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, "Saved", MESSAGE_BOX_ICON_CIRCLE_CHECKMARK, &_Message_Box_Style_Regular);
|
||||
|
||||
Display_Select_Object();
|
||||
|
||||
UI_Control_Acceleration_Reset();
|
||||
UI_Control_Acceleration_Set_Enabled(_Config->Use_Acceleration);
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
_Counter++;
|
||||
}
|
||||
|
||||
if(_Counter == MESSAGE_BOX_DEFAULT_TICKS) {
|
||||
Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_DOWN, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Menu, _Return_List, _Return_Selected_Item);
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Touch_Event(int16_t x, int16_t y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
return;
|
||||
}
|
||||
|
||||
UI_Control_Selector_Inc(_Value, _Config->Min, _Config->Max, _Config->Cycle_Selector);
|
||||
|
||||
_Display_Value = *_Value * _Config->Value_Display_Ratio;
|
||||
}
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
return;
|
||||
}
|
||||
|
||||
UI_Control_Selector_Dec(_Value, _Config->Min, _Config->Max, _Config->Cycle_Selector);
|
||||
|
||||
_Display_Value = *_Value * _Config->Value_Display_Ratio;
|
||||
}
|
||||
|
||||
void Screen_On_Object_Focused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Defocused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Select(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
if(!_Decision_Made) {
|
||||
Display_Objects_Show_Message_Box(_Object_Message_Box, MESSAGE_BOX_DEFAULT_TICKS);
|
||||
_Decision_Made = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../UI_Control.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Objects.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
@@ -58,11 +58,17 @@ static Configuration_Menu_Icon_Row _Configuration_Menu_Icon_Row = {
|
||||
|
||||
static int32_t _Selected_Item;
|
||||
|
||||
extern const Hierarchical_Menu _Hierarchical_Menu_MIDI;
|
||||
extern const Hierarchical_Menu _Hierarchical_Menu_Jam;
|
||||
extern const Hierarchical_Menu _Hierarchical_Menu_Const_Light;
|
||||
extern const Hierarchical_Menu _Hierarchical_Menu_Device;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Settings(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
@@ -80,7 +86,15 @@ static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Settings(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item)
|
||||
{
|
||||
_Screen_Tick = Screen_Tick;
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
_Selected_Item = selected_item;
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Last = Screen_Init;
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
@@ -94,9 +108,7 @@ void Screen_Setup_Settings(Screen_Transition_Direction direction_out, Screen_Tra
|
||||
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
|
||||
@@ -107,11 +119,8 @@ void Screen_Setup_Settings(Screen_Transition_Direction direction_out, Screen_Tra
|
||||
Display_Objects_Add_Text(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, 45, NOT_SELECTABLE, "Settings", Font_Title, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
Display_Objects_Add_Rectangle_Filled(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_FROM_RGB888(32, 32, 32), DISPLAY_WIDTH, 85, NO_STYLE, NO_ANIMATION);
|
||||
_Object_Menu = Display_Objects_Add_Menu_Icon_Row(_Icon_Row_Items, MENU_ENTRY_COUNT, &_Selected_Item, &_Configuration_Menu_Icon_Row);
|
||||
// Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_FROM_RGB888(255, 223, 0), 70, 70, 21, 4, NO_STYLE, NO_ANIMATION);
|
||||
|
||||
_Selected_Item = selected_item;
|
||||
|
||||
Display_Select_First_Object();
|
||||
Display_Select_First_Object();
|
||||
Display_Select_Object();
|
||||
}
|
||||
|
||||
@@ -159,13 +168,13 @@ void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
switch (_Selected_Item)
|
||||
{
|
||||
case 0: Screen_Setup_Settings_MIDI(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, 0); break;
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
case 3: break;
|
||||
case 4: break;
|
||||
case 5: Screen_Setup_Settings_About(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES); break;
|
||||
case 6: Screen_Setup_Menu_Main(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, false, 1); break;
|
||||
case 0: Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, &_Hierarchical_Menu_MIDI, _Hierarchical_Menu_MIDI.List , 0); break;
|
||||
case 1: Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, &_Hierarchical_Menu_Jam, _Hierarchical_Menu_Jam.List , 0); break;
|
||||
case 2: Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, &_Hierarchical_Menu_Const_Light, _Hierarchical_Menu_Const_Light.List , 0); break;
|
||||
case 3: Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, &_Hierarchical_Menu_Device, _Hierarchical_Menu_Device.List , 0); break;
|
||||
case 4: Screen_Setup_EEPROM_Code (TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES); break;
|
||||
case 5: Screen_Setup_Settings_About (TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES); break;
|
||||
case 6: Screen_Setup_Menu_Main (TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, false, 1); break;
|
||||
}
|
||||
|
||||
Display_Select_Object();
|
||||
|
||||
346
Firmware/Screens_Display/Screen_Settings_Hierarchical_Menu.c
Normal file
346
Firmware/Screens_Display/Screen_Settings_Hierarchical_Menu.c
Normal file
@@ -0,0 +1,346 @@
|
||||
/*
|
||||
* File: Screen_Settings_Hierarchical_Menu.c
|
||||
*
|
||||
* Created: Created: Sunday September 2025 19:19:34
|
||||
* Author: Chris
|
||||
*/
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../UI_Control.h"
|
||||
#include "../Hierarchical_Menu.h"
|
||||
#include "../Command_Definition.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Objects.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_6x12[];
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_7x15[];
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_7x15[];
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_15x26[];
|
||||
|
||||
static const Hierarchical_Menu* _Menu = NULL;
|
||||
static const Menu_List* _Current_List = NULL;
|
||||
|
||||
static int32_t _Selected_Item;
|
||||
static int32_t _Scroll_Offset;
|
||||
static int32_t _Visible_Items;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Settings_Hierarchical_Menu(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, const Hierarchical_Menu* menu, const Menu_List* list, int32_t selected_item);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
static void Screen_Action_CW (Object_ID object_id);
|
||||
static void Screen_Action_CCW (Object_ID object_id);
|
||||
static void Screen_On_Object_Focused (Object_ID object_id);
|
||||
static void Screen_On_Object_Defocused (Object_ID object_id);
|
||||
static void Screen_On_Object_Select (Object_ID object_id);
|
||||
static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
|
||||
static void Navigate_To_List(const Menu_List* new_list);
|
||||
static void Handle_Back_Navigation(void);
|
||||
static void Calculate_Scroll_Offset(void);
|
||||
static void Handle_Item_Selection(void);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Settings_Hierarchical_Menu(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, const Hierarchical_Menu* menu, const Menu_List* list, int32_t selected_item)
|
||||
{
|
||||
_Menu = menu;
|
||||
_Current_List = list;
|
||||
_Selected_Item = selected_item;
|
||||
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
_Scroll_Offset = 0;
|
||||
_Visible_Items = _Configuration_Menu_Hierarchical_Default.Visible_Items;
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
_Screen_Action_CCW = Screen_Action_CCW;
|
||||
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
|
||||
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
|
||||
_Screen_On_Object_Select = Screen_On_Object_Select;
|
||||
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
|
||||
|
||||
Display_Objects_Clear();
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
Display_Objects_Add_Menu_Hierarchical(&_Current_List, &_Selected_Item, &_Scroll_Offset, &_Configuration_Menu_Hierarchical_Default);
|
||||
|
||||
Calculate_Scroll_Offset();
|
||||
Display_Select_Object();
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Touch_Event(int16_t x, int16_t y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
// Move selection down (the renderer will automatically show the change)
|
||||
UI_Control_Selector_Inc(&_Selected_Item, 0, (int32_t)_Current_List->Item_Count - 1, false);
|
||||
Calculate_Scroll_Offset();
|
||||
}
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
// Move selection up (the renderer will automatically show the change)
|
||||
UI_Control_Selector_Dec(&_Selected_Item, 0, (int32_t)_Current_List->Item_Count - 1, false);
|
||||
Calculate_Scroll_Offset();
|
||||
}
|
||||
|
||||
void Screen_On_Object_Focused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Defocused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Select(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
Handle_Item_Selection();
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
void Navigate_To_List(const Menu_List* new_list)
|
||||
{
|
||||
if (new_list == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Update menu state
|
||||
_Current_List = new_list;
|
||||
_Selected_Item = 0;
|
||||
_Scroll_Offset = 0;
|
||||
|
||||
Calculate_Scroll_Offset();
|
||||
Display_Select_Object();
|
||||
}
|
||||
|
||||
void Handle_Back_Navigation(void)
|
||||
{
|
||||
if (_Current_List->Parent != NULL)
|
||||
{
|
||||
// Navigate to parent list
|
||||
const Menu_List* Parent_List = _Current_List->Parent->Containing_List;
|
||||
|
||||
// Find the index of the item that led to current list
|
||||
_Selected_Item = 0;
|
||||
for (uint32_t i = 0; i < Parent_List->Item_Count; i++)
|
||||
{
|
||||
if (Parent_List->Items[i].List == _Current_List) {
|
||||
_Selected_Item = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
_Current_List = Parent_List;
|
||||
|
||||
Calculate_Scroll_Offset();
|
||||
Display_Select_Object();
|
||||
}
|
||||
else if (_Menu->Parent_Function != NULL)
|
||||
{
|
||||
// Exit to parent screen
|
||||
_Menu->Parent_Function(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Menu->Parent_Selected_Setting);
|
||||
}
|
||||
}
|
||||
|
||||
void Calculate_Scroll_Offset(void)
|
||||
{
|
||||
// Auto-scroll to keep selected item visible
|
||||
if (_Selected_Item < _Scroll_Offset) {
|
||||
_Scroll_Offset = 0;
|
||||
}
|
||||
else {
|
||||
_Scroll_Offset = _Selected_Item - _Visible_Items + 1;
|
||||
}
|
||||
|
||||
// Ensure scroll offset is within bounds
|
||||
int32_t Max_Scroll = (int32_t)_Current_List->Item_Count - _Visible_Items;
|
||||
if (Max_Scroll < 0) {
|
||||
Max_Scroll = 0;
|
||||
}
|
||||
|
||||
if (_Scroll_Offset > Max_Scroll) {
|
||||
_Scroll_Offset = Max_Scroll;
|
||||
}
|
||||
|
||||
if (_Scroll_Offset < 0) {
|
||||
_Scroll_Offset = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void Handle_Item_Selection(void)
|
||||
{
|
||||
if (_Selected_Item < 0 || _Selected_Item >= (int32_t)_Current_List->Item_Count) {
|
||||
return;
|
||||
}
|
||||
|
||||
const Menu_Item* Selected_Item = &_Current_List->Items[_Selected_Item];
|
||||
|
||||
if (Selected_Item->Is_Back) {
|
||||
Handle_Back_Navigation();
|
||||
return;
|
||||
}
|
||||
|
||||
if (Selected_Item->List != NULL) {
|
||||
Navigate_To_List(Selected_Item->List);
|
||||
return;
|
||||
}
|
||||
|
||||
switch(Selected_Item->Type)
|
||||
{
|
||||
case BOOL:
|
||||
Screen_Setup_Select_Bool(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
|
||||
(char*)Selected_Item->Variable_Title,
|
||||
strlen(Selected_Item->Variable_Title),
|
||||
(uint8_t*)Selected_Item->Variable,
|
||||
_Menu,
|
||||
Selected_Item->Containing_List,
|
||||
_Selected_Item
|
||||
);
|
||||
break;
|
||||
|
||||
case RGB:
|
||||
Screen_Setup_Select_RGB(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
|
||||
(char*)Selected_Item->Variable_Title,
|
||||
strlen(Selected_Item->Variable_Title),
|
||||
(LED_Data_t*)Selected_Item->Variable,
|
||||
_Menu,
|
||||
Selected_Item->Containing_List,
|
||||
_Selected_Item
|
||||
);
|
||||
break;
|
||||
|
||||
case VALUE:
|
||||
if(Selected_Item->Configuration == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
Screen_Setup_Select_Value(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
|
||||
(char*)Selected_Item->Variable_Title,
|
||||
strlen(Selected_Item->Variable_Title),
|
||||
(int32_t*)Selected_Item->Variable,
|
||||
(const Menu_Configuration_Select_Value*)(Selected_Item->Configuration),
|
||||
_Menu,
|
||||
Selected_Item->Containing_List,
|
||||
_Selected_Item
|
||||
);
|
||||
break;
|
||||
|
||||
case LIST:
|
||||
if(Selected_Item->Configuration == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
Screen_Setup_Select_List(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
|
||||
(char*)Selected_Item->Variable_Title,
|
||||
strlen(Selected_Item->Variable_Title),
|
||||
(int32_t*)Selected_Item->Variable,
|
||||
(const Menu_Configuration_Select_List*)(Selected_Item->Configuration),
|
||||
_Menu,
|
||||
Selected_Item->Containing_List,
|
||||
_Selected_Item
|
||||
);
|
||||
break;
|
||||
|
||||
case DEFAULT_NOTES:
|
||||
Screen_Setup_Default_Notes(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
|
||||
(char*)Selected_Item->Variable_Title,
|
||||
strlen(Selected_Item->Variable_Title),
|
||||
_Menu,
|
||||
Selected_Item->Containing_List,
|
||||
_Selected_Item
|
||||
);
|
||||
break;
|
||||
|
||||
case REBOOT:
|
||||
Screen_Setup_Settings_Reboot(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
|
||||
_Menu,
|
||||
Selected_Item->Containing_List,
|
||||
_Selected_Item
|
||||
);
|
||||
break;
|
||||
|
||||
case HUE:
|
||||
Screen_Setup_Select_Hue(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
|
||||
(char*)Selected_Item->Variable_Title,
|
||||
strlen(Selected_Item->Variable_Title),
|
||||
(int32_t*)Selected_Item->Variable,
|
||||
(const Menu_Configuration_Select_Value*)(Selected_Item->Configuration),
|
||||
_Menu,
|
||||
Selected_Item->Containing_List,
|
||||
_Selected_Item
|
||||
);
|
||||
break;
|
||||
|
||||
case MINMAX:
|
||||
Screen_Setup_Select_MinMax(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
|
||||
(char*)Selected_Item->Variable_Title,
|
||||
strlen(Selected_Item->Variable_Title),
|
||||
(MinMax_t*)Selected_Item->Variable,
|
||||
(const Menu_Configuration_Select_MinMax*)(Selected_Item->Configuration),
|
||||
_Menu,
|
||||
Selected_Item->Containing_List,
|
||||
_Selected_Item
|
||||
);
|
||||
break;
|
||||
|
||||
case NONE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1,144 +0,0 @@
|
||||
/*
|
||||
* File: Screen_Settings_MIDI.c
|
||||
*
|
||||
* Created: Created: Thursday August 2025 14:24:40
|
||||
* Author: Chris
|
||||
*/
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../UI_Control.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Objects.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
#define MENU_ENTRY_COUNT 4
|
||||
#define MENU_CHAR_LENGTH 11
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_15x26[];
|
||||
|
||||
static int32_t _Selected_Item;
|
||||
|
||||
static char _Menu_Titles[MENU_ENTRY_COUNT][MENU_CHAR_LENGTH] = {
|
||||
{ "MIDI Config" },
|
||||
{ "Color Notes" },
|
||||
{ "Pause Light" },
|
||||
{ "Back " }
|
||||
};
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Settings_MIDI(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item);
|
||||
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
static void Screen_Action_CW (Object_ID object_id);
|
||||
static void Screen_Action_CCW (Object_ID object_id);
|
||||
static void Screen_On_Object_Focused (Object_ID object_id);
|
||||
static void Screen_On_Object_Defocused (Object_ID object_id);
|
||||
static void Screen_On_Object_Select (Object_ID object_id);
|
||||
static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Settings_MIDI(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item)
|
||||
{
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
_Screen_Action_CCW = Screen_Action_CCW;
|
||||
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
|
||||
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
|
||||
_Screen_On_Object_Select = Screen_On_Object_Select;
|
||||
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
|
||||
|
||||
Display_Objects_Clear();
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
|
||||
Font_ID Font_Title = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_15x26, 0);
|
||||
|
||||
Display_Objects_Add_Text(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, 45, NOT_SELECTABLE, "MIDI", Font_Title, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
Display_Objects_Add_Select_List((char*)_Menu_Titles, MENU_ENTRY_COUNT, MENU_CHAR_LENGTH, &_Selected_Item, &_Configuration_Default_Select_List);
|
||||
|
||||
_Selected_Item = selected_item;
|
||||
|
||||
Display_Select_First_Object();
|
||||
Display_Select_Object();
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Touch_Event(int16_t x, int16_t y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
UI_Control_Selector_Inc(&_Selected_Item, 0, MENU_ENTRY_COUNT-1, false);
|
||||
}
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
UI_Control_Selector_Dec(&_Selected_Item, 0, MENU_ENTRY_COUNT-1, false);
|
||||
}
|
||||
|
||||
void Screen_On_Object_Focused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Defocused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Select(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
switch (_Selected_Item)
|
||||
{
|
||||
case 0: Screen_Setup_Settings_MIDI_Config(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, 0); break;
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
case 3: Screen_Setup_Settings(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, 0); break;
|
||||
}
|
||||
|
||||
Display_Select_Object();
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
|
||||
@@ -1,147 +0,0 @@
|
||||
/*
|
||||
* File: Screen_Settings_MIDI_Config.c
|
||||
*
|
||||
* Created: Created: Thursday August 2025 15:53:58
|
||||
* Author: Chris
|
||||
*/
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../UI_Control.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Objects.h"
|
||||
|
||||
#include "../EEPROM_M24C64.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
#define MENU_ENTRY_COUNT 4
|
||||
#define MENU_CHAR_LENGTH 13
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_11x17[];
|
||||
extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_15x26[];
|
||||
|
||||
static int32_t _Selected_Item;
|
||||
|
||||
static char _Menu_Titles[MENU_ENTRY_COUNT][MENU_CHAR_LENGTH] = {
|
||||
{ "MIDI Channel " },
|
||||
{ "Select Octave" },
|
||||
{ "Skip Note Off" },
|
||||
{ "Back " }
|
||||
};
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Settings_MIDI_Config(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item);
|
||||
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
static void Screen_Action_CW (Object_ID object_id);
|
||||
static void Screen_Action_CCW (Object_ID object_id);
|
||||
static void Screen_On_Object_Focused (Object_ID object_id);
|
||||
static void Screen_On_Object_Defocused (Object_ID object_id);
|
||||
static void Screen_On_Object_Select (Object_ID object_id);
|
||||
static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Settings_MIDI_Config(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item)
|
||||
{
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
_Screen_Action_CCW = Screen_Action_CCW;
|
||||
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
|
||||
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
|
||||
_Screen_On_Object_Select = Screen_On_Object_Select;
|
||||
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
|
||||
|
||||
Display_Objects_Clear();
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
Font_ID Font_Title = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_11x17, 0);
|
||||
|
||||
|
||||
Display_Objects_Add_Text(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, 45, NOT_SELECTABLE, "MIDI Config", Font_Title, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
Display_Objects_Add_Select_List((char*)_Menu_Titles, MENU_ENTRY_COUNT, MENU_CHAR_LENGTH, &_Selected_Item, &_Configuration_Default_Select_List);
|
||||
|
||||
_Selected_Item = selected_item;
|
||||
|
||||
Display_Select_First_Object();
|
||||
Display_Select_Object();
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Touch_Event(int16_t x, int16_t y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
UI_Control_Selector_Inc(&_Selected_Item, 0, MENU_ENTRY_COUNT-1, false);
|
||||
}
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
UI_Control_Selector_Dec(&_Selected_Item, 0, MENU_ENTRY_COUNT-1, false);
|
||||
}
|
||||
|
||||
void Screen_On_Object_Focused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Defocused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Select(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
switch (_Selected_Item)
|
||||
{
|
||||
case 0: break;
|
||||
case 1: break;
|
||||
case 2: Screen_Setup_Select_Bool(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, "Skip Note Off?", 14, (uint8_t*)&_EEPROM_Content.Channel_MIDI_Configuration->Skip_Note_Off_Event, Screen_Setup_Settings_MIDI_Config, 2); break;
|
||||
case 3: Screen_Setup_Settings_MIDI(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, 0); break;
|
||||
}
|
||||
|
||||
Display_Select_Object();
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
|
||||
206
Firmware/Screens_Display/Screen_Settings_Reboot.c
Normal file
206
Firmware/Screens_Display/Screen_Settings_Reboot.c
Normal file
@@ -0,0 +1,206 @@
|
||||
/*
|
||||
* File: Screen_Settings_Reboot.c
|
||||
*
|
||||
* Created: Created: Tuesday September 2025 20:36:48
|
||||
* Author: Chris
|
||||
*/
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "../Screens.h"
|
||||
#include "../UI_Control.h"
|
||||
|
||||
#include "../Display.h"
|
||||
#include "../Display_Objects.h"
|
||||
#include "../Display_Render_Complex.h"
|
||||
#include "../Display_Default_Configurations.h"
|
||||
|
||||
#include "hardware/watchdog.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
#define COLOR_DOT_ACTIVE 0xFFFF // Pure White #FFFFFF
|
||||
#define COLOR_DOT_INACTIVE 0x0842 // Dark Gray #404450
|
||||
|
||||
#define DOT_ANIMATION_SPEED 8
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
extern const uint8_t _Font_DejaVu_Sans_Mono_Bold_15x26[];
|
||||
|
||||
static Object_ID _Object_YesNo;
|
||||
static Object_ID _Object_Text;
|
||||
static Object_ID _Object_Dots[3];
|
||||
|
||||
static const Hierarchical_Menu* _Return_Menu = NULL;
|
||||
static const Menu_List* _Return_List = NULL;
|
||||
static int32_t _Return_Selected_Item;
|
||||
|
||||
static bool _Bool_Value;
|
||||
static bool _Decision_Made;
|
||||
static uint32_t _Counter;
|
||||
static int32_t _Dot_Animation_Phase;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_Settings_Reboot(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
|
||||
|
||||
static void Update_Dot_Animation(void);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Touch_Event (int16_t x, int16_t y);
|
||||
static void Screen_Action_CW (Object_ID object_id);
|
||||
static void Screen_Action_CCW (Object_ID object_id);
|
||||
static void Screen_On_Object_Focused (Object_ID object_id);
|
||||
static void Screen_On_Object_Defocused (Object_ID object_id);
|
||||
static void Screen_On_Object_Select (Object_ID object_id);
|
||||
static void Screen_On_Object_Deselect (Object_ID object_id);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Screen_Setup_Settings_Reboot(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item)
|
||||
{
|
||||
_Bool_Value = false;
|
||||
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
_Return_Menu = return_menu;
|
||||
_Return_List = return_list;
|
||||
_Return_Selected_Item = return_selected_item;
|
||||
|
||||
_Counter = 0;
|
||||
_Dot_Animation_Phase = 0;
|
||||
_Decision_Made = false;
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Last = Screen_Init;
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Touch_Event = Screen_Touch_Event;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
_Screen_Action_CCW = Screen_Action_CCW;
|
||||
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
|
||||
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
|
||||
_Screen_On_Object_Select = Screen_On_Object_Select;
|
||||
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
|
||||
|
||||
Display_Objects_Clear();
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
Font_ID Font_Text = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_15x26, 0);
|
||||
|
||||
Display_Render_Complex_Select_YesNo_Set(_Bool_Value, &_Configuration_Default_Select_YesNo);
|
||||
_Object_YesNo = Display_Objects_Add_Select_YesNo("Reboot Device", 13, &_Bool_Value, &_Configuration_Default_Select_YesNo);
|
||||
|
||||
_Object_Text = Display_Objects_Add_Text(CENTER_BOTTOM, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, "Rebooting", Font_Text, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
|
||||
Display_Objects_Update_Enabled(_Object_Text, false);
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
_Object_Dots[i] = Display_Objects_Add_Circle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50 + (i-1) * 6, 60, NOT_SELECTABLE, COLOR_DOT_INACTIVE, 4, 1, NO_STYLE, NO_ANIMATION);
|
||||
Display_Objects_Update_Enabled(_Object_Dots[i], false);
|
||||
}
|
||||
|
||||
Display_Select_Object();
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
{
|
||||
if(_Decision_Made && _Bool_Value) {
|
||||
Update_Dot_Animation();
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_Click(uint button_return_value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Touch_Event(int16_t x, int16_t y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
if(_Decision_Made) {
|
||||
return;
|
||||
}
|
||||
|
||||
_Bool_Value = !_Bool_Value;
|
||||
}
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
Screen_Action_CW(object_id);
|
||||
}
|
||||
|
||||
void Screen_On_Object_Focused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Defocused(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Select(Object_ID object_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
if(!_Decision_Made) {
|
||||
_Decision_Made = true;
|
||||
|
||||
if(_Bool_Value == false) {
|
||||
Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_DOWN, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Menu, _Return_List, _Return_Selected_Item);
|
||||
return;
|
||||
}
|
||||
|
||||
Display_Objects_Update_Enabled(_Object_YesNo, false);
|
||||
Display_Objects_Update_Enabled(_Object_Text, true);
|
||||
for(int i = 0; i < 3; i++) {
|
||||
Display_Objects_Update_Enabled(_Object_Dots[i], true);
|
||||
}
|
||||
|
||||
watchdog_reboot(0, 0, 5000);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
void Update_Dot_Animation(void)
|
||||
{
|
||||
_Dot_Animation_Phase++;
|
||||
|
||||
if(_Dot_Animation_Phase >= (DOT_ANIMATION_SPEED * 3)) {
|
||||
_Dot_Animation_Phase = 0;
|
||||
}
|
||||
|
||||
// Determine which dot should be active
|
||||
int Active_Dot = _Dot_Animation_Phase / DOT_ANIMATION_SPEED;
|
||||
|
||||
// Update dot colors
|
||||
for(int i = 0; i < 3; i++) {
|
||||
Display_Color Dot_Color = (i == Active_Dot) ? COLOR_DOT_ACTIVE : COLOR_DOT_INACTIVE;
|
||||
Display_Objects_Update_Color(_Object_Dots[i], Dot_Color);
|
||||
}
|
||||
}
|
||||
232
Firmware/Serial_Command.c
Normal file
232
Firmware/Serial_Command.c
Normal file
@@ -0,0 +1,232 @@
|
||||
/*
|
||||
* File: Serial_Command.c
|
||||
*
|
||||
* Created: Created: Sunday October 2025 09:41:07
|
||||
* Author: Chris
|
||||
*/
|
||||
#include "Serial_Command.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include "Convert.h"
|
||||
#include "USB_Serial.h"
|
||||
#include "Mode_Manager.h"
|
||||
#include "EEPROM_M24C64.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
static struct {
|
||||
uint8_t Data[30];
|
||||
uint32_t Count;
|
||||
} _Command_Buffer;
|
||||
|
||||
static uint32_t _Configuration_Write_Counter;
|
||||
|
||||
extern int32_t _Event_Received_Counter[NUM_LED_CHANNELS][NUM_LED_COLORS][2];
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Serial_Command_Parse_Command();
|
||||
void Serial_Command_Send_Configuration_Text(void);
|
||||
void Serial_Command_Send_Configuration_Hex(void);
|
||||
void Serial_Command_Return_Ping(void);
|
||||
void Serial_Command_Write_Configuration_Byte(void);
|
||||
void Serial_Command_Save_To_EEPROM(void);
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Functions
|
||||
*******************************************************************/
|
||||
void Serial_Command_Init()
|
||||
{
|
||||
_Command_Buffer.Count = 0;
|
||||
_Configuration_Write_Counter = 0;
|
||||
}
|
||||
|
||||
void Serial_Command_Check_For_Input()
|
||||
{
|
||||
while(USB_Serial_Available())
|
||||
{
|
||||
uint8_t USB_Data = USB_Serial_Get_Byte();
|
||||
if(USB_Data == USB_SERIAL_TERMINATOR)
|
||||
{
|
||||
Serial_Command_Parse_Command();
|
||||
}
|
||||
else
|
||||
{
|
||||
_Command_Buffer.Data[_Command_Buffer.Count++] = USB_Data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Internal Functions
|
||||
*******************************************************************/
|
||||
void Serial_Command_Parse_Command(void)
|
||||
{
|
||||
uint32_t Index, ID, X, Y, Color;
|
||||
|
||||
switch (_Command_Buffer.Data[0])
|
||||
{
|
||||
case 'T': Serial_Command_Send_Configuration_Text(); break;
|
||||
case 'X': Serial_Command_Send_Configuration_Hex(); break;
|
||||
case 'P': Serial_Command_Return_Ping(); break;
|
||||
case 'R': _Configuration_Write_Counter = 0; break;
|
||||
case 'W': Serial_Command_Write_Configuration_Byte(); break;
|
||||
// case 'S': Serial_Save_To_EEPROM(); break;
|
||||
case 'd': Serial_Command_Send_Configuration_Text(); break;
|
||||
|
||||
case 'a':
|
||||
for(Color=0;Color < NUM_LED_COLORS; Color++)
|
||||
{
|
||||
USB_Serial_Send_Int_Dec(_Event_Received_Counter[LED_Channel_1][Color][MIDI_EVENT_NOTE_ON - MIDI_EVENT_NOTE_OFF], 6);
|
||||
USB_SERIAL_SEND_STRING(";");
|
||||
USB_Serial_Send_Int_Dec(_Event_Received_Counter[LED_Channel_1][Color][MIDI_EVENT_NOTE_OFF - MIDI_EVENT_NOTE_OFF], 6);
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
|
||||
_Event_Received_Counter[LED_Channel_1][Color][MIDI_EVENT_NOTE_ON - MIDI_EVENT_NOTE_OFF] = 0;
|
||||
_Event_Received_Counter[LED_Channel_1][Color][MIDI_EVENT_NOTE_OFF - MIDI_EVENT_NOTE_OFF] = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
USB_SERIAL_SEND_STRING("Unknown Command: ");
|
||||
USB_Serial_Put_Char(_Command_Buffer.Data[0]);
|
||||
USB_SERIAL_SEND_STRING(" (");
|
||||
USB_Serial_Send_Int_Hex(_Command_Buffer.Data[0], 2, true);
|
||||
USB_SERIAL_SEND_STRING(")");
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
break;
|
||||
}
|
||||
|
||||
_Command_Buffer.Count = 0;
|
||||
}
|
||||
|
||||
void Serial_Command_Send_Configuration_Text(void)
|
||||
{
|
||||
USB_SERIAL_SEND_STRING("Channel MIDI Configuration"); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" MIDI_Channel: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].MIDI_Channel, 2); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Octave: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].Octave, 1); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Note Color Red: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Color_Red, 2); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Note Color Green: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Color_Green, 2); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Note Color Blue: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Color_Blue, 2); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Skip Note Off Event: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].Skip_Note_Off_Event, 1); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Note Reset Enabled: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Reset_Enabled, 1); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Note Reset Timeout: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Reset_Timeout, 3); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
|
||||
USB_SERIAL_SEND_STRING("Pause Light Configuration"); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Enabled: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Pause_Light_Configuration[0].Enabled, 1); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Color: RGB(");
|
||||
USB_Serial_Send_Int_Dec(_EEPROM_Content.Pause_Light_Configuration[0].Color.R, 3); USB_SERIAL_SEND_STRING(", ");
|
||||
USB_Serial_Send_Int_Dec(_EEPROM_Content.Pause_Light_Configuration[0].Color.G, 3); USB_SERIAL_SEND_STRING(", ");
|
||||
USB_Serial_Send_Int_Dec(_EEPROM_Content.Pause_Light_Configuration[0].Color.B, 3); USB_SERIAL_SEND_STRING(")");
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Timeout: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Pause_Light_Configuration[0].Timeout, 8); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Reset: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Pause_Light_Configuration[0].Reset_Condition, 1); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Fade Speed: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Pause_Light_Configuration[0].Fade_Speed, 3); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
|
||||
USB_SERIAL_SEND_STRING("Jam Light Configuration"); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Duration Min: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Jam_Light_Configuration.Durations.Min, 5); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Duration Max: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Jam_Light_Configuration.Durations.Max, 5); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Hue Angle Start: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Jam_Light_Configuration.Hue_Angle_Start_Color, 3); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Color Change: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Jam_Light_Configuration.Color_Change, 3); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Fade Speed: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Jam_Light_Configuration.Fade_Speed, 3); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
|
||||
USB_SERIAL_SEND_STRING("Const Light Configuration"); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Color: RGB(");
|
||||
USB_Serial_Send_Int_Dec(_EEPROM_Content.Const_Light_Configuration.Color.R, 3); USB_SERIAL_SEND_STRING(", ");
|
||||
USB_Serial_Send_Int_Dec(_EEPROM_Content.Const_Light_Configuration.Color.G, 3); USB_SERIAL_SEND_STRING(", ");
|
||||
USB_Serial_Send_Int_Dec(_EEPROM_Content.Const_Light_Configuration.Color.B, 3); USB_SERIAL_SEND_STRING(")");
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Fade Speed: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Const_Light_Configuration.Fade_Speed, 3); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
|
||||
USB_SERIAL_SEND_STRING("Device Configuration"); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Idle Screen: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Device_Configuration.Idle_Screen, 1); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Screen Timeout: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Device_Configuration.Screen_Timeout, 8); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Rev. Scrolling: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling, 1); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Use Color Corr.: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Device_Configuration.Use_Color_Correction, 1); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING(" Current Threshold: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Device_Configuration.Current_Threshold, 8); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
}
|
||||
|
||||
void Serial_Command_Send_Configuration_Hex(void)
|
||||
{
|
||||
for(int i=0;i<EEPROM_Get_Content_Size();i++)
|
||||
{
|
||||
USB_Serial_Send_Int_Hex(*(((uint8_t*)&_EEPROM_Content) + i), 2, false);
|
||||
}
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
}
|
||||
|
||||
void Serial_Command_Return_Ping(void)
|
||||
{
|
||||
if(_Command_Buffer.Count == 2) {
|
||||
USB_Serial_Put_Char(_Command_Buffer.Data[1]);
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
}
|
||||
}
|
||||
|
||||
void Serial_Command_Write_Configuration_Byte(void)
|
||||
{
|
||||
if(_Command_Buffer.Count != 3) {
|
||||
USB_Serial_Put_Char(SERIAL_NACK);
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
return;
|
||||
}
|
||||
|
||||
if(_Configuration_Write_Counter >= EEPROM_Get_Content_Size()) {
|
||||
USB_Serial_Put_Char(SERIAL_NACK);
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t Configuration_Data_Byte = (uint8_t)Convert_CharArray_To_Number(&_Command_Buffer.Data[1], 2);
|
||||
*(((uint8_t*)&_EEPROM_Content) + _Configuration_Write_Counter) = Configuration_Data_Byte;
|
||||
|
||||
_Configuration_Write_Counter++;
|
||||
|
||||
USB_Serial_Put_Char(SERIAL_ACK);
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
}
|
||||
|
||||
void Serial_Command_Save_To_EEPROM(void)
|
||||
{
|
||||
EEPROM_Trigger_Update();
|
||||
|
||||
USB_Serial_Put_Char(SERIAL_ACK);
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
}
|
||||
|
||||
void Display_Start_Buffer_Readout(void)
|
||||
{
|
||||
// cancel_repeating_timer(&_Timer);
|
||||
|
||||
// // Send header
|
||||
// USB_SERIAL_SEND_STRING("IMGBUF");
|
||||
// USB_Serial_Send_Int_Dec(DISPLAY_WIDTH, 4);
|
||||
// USB_Serial_Put_Char(',');
|
||||
// USB_Serial_Send_Int_Dec(DISPLAY_HEIGHT, 4);
|
||||
// USB_Serial_Put_Char(',');
|
||||
// USB_Serial_Send_Int_Dec(16, 2);
|
||||
// USB_SERIAL_SEND_TERMINATOR();
|
||||
|
||||
// uint32_t Pixel_Count = DISPLAY_WIDTH * DISPLAY_HEIGHT;
|
||||
|
||||
// for(uint32_t i = 0; i < Pixel_Count; i++)
|
||||
// {
|
||||
// Display_Color Pixel = Display_Get_Pixel(i);
|
||||
// USB_Serial_Send_Int_Hex(Pixel, 4, false);
|
||||
// }
|
||||
// sleep_ms(100);
|
||||
// USB_SERIAL_SEND_TERMINATOR();
|
||||
|
||||
// add_repeating_timer_ms(40, ISR_Repeating_Timer, NULL, &_Timer);
|
||||
}
|
||||
30
Firmware/Serial_Command.h
Normal file
30
Firmware/Serial_Command.h
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* File: Serial_Command.h
|
||||
* Created: Created: Sunday October 2025 09:41:12
|
||||
* Author: Chris
|
||||
*/
|
||||
#ifndef SERIAL_COMMAND_H
|
||||
#define SERIAL_COMMAND_H
|
||||
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
#define SERIAL_ACK 'O'
|
||||
#define SERIAL_NACK 'N'
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Datatypes
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Serial_Command_Init();
|
||||
|
||||
void Serial_Command_Check_For_Input();
|
||||
|
||||
|
||||
#endif // SERIAL_COMMAND_H
|
||||
@@ -6,6 +6,8 @@
|
||||
*/
|
||||
#include "UI_Control.h"
|
||||
|
||||
#include "EEPROM_M24C64.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
|
||||
@@ -15,14 +17,33 @@
|
||||
|
||||
// ============================================================================================
|
||||
// Defines
|
||||
#define SELECTOR_INC(__SELECTOR__, __MIN__, __MAX__, __CIRCLE__) if((*__SELECTOR__) < __MAX__) { (*__SELECTOR__)++; } else if(__CIRCLE__) { (*__SELECTOR__) = __MIN__; break; } else { break; }
|
||||
#define SELECTOR_DEC(__SELECTOR__, __MIN__, __MAX__, __CIRCLE__) if((*__SELECTOR__) > __MIN__) { (*__SELECTOR__)--; } else if(__CIRCLE__) { (*__SELECTOR__) = __MAX__; break; } else { break; }
|
||||
#define SELECTOR_INC(__SELECTOR__, __STEP__, __MIN__, __MAX__, __CIRCLE__) if((*__SELECTOR__) <= (__MAX__ - __STEP__)) { (*__SELECTOR__)+=__STEP__; } else if(__CIRCLE__) { (*__SELECTOR__) = __MIN__; break; } else { break; }
|
||||
#define SELECTOR_DEC(__SELECTOR__, __STEP__, __MIN__, __MAX__, __CIRCLE__) if((*__SELECTOR__) >= (__MIN__ + __STEP__)) { (*__SELECTOR__)-=__STEP__; } else if(__CIRCLE__) { (*__SELECTOR__) = __MAX__; break; } else { break; }
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Datatypes
|
||||
typedef struct {
|
||||
// Configuration
|
||||
const Encoder_Acceleration_Config* config;
|
||||
|
||||
// State tracking
|
||||
uint8_t Speed_Counter; // Current speed counter
|
||||
uint8_t Acceleration_Level; // Current acceleration level (0 = no accel)
|
||||
uint32_t Last_Activity_Time; // Last encoder activity timestamp (ms)
|
||||
|
||||
// Statistics (for debugging)
|
||||
uint32_t Total_Steps; // Total encoder steps processed
|
||||
uint32_t Accelerated_Steps; // Steps that used acceleration
|
||||
} Encoder_Acceleration_Instance;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Variables
|
||||
|
||||
// Default configuration
|
||||
static const Encoder_Acceleration_Config _Default_Acceleration_Config = {
|
||||
.Base_Step = 1,
|
||||
.Base_Threshold = 5, // Requires more steps to trigger
|
||||
.Level_Step = 3, // Bigger jumps between levels
|
||||
.Max_Level = 3, // Fewer levels
|
||||
@@ -30,6 +51,7 @@ static const Encoder_Acceleration_Config _Default_Acceleration_Config = {
|
||||
.Multipliers = {1, 2, 3, 5, 7, 10, 13, 16, 20, 25}
|
||||
};
|
||||
|
||||
|
||||
static Encoder_Acceleration_Instance _Acceleration_Instance;
|
||||
static bool _Acceleration_Initialized = false;
|
||||
static bool _Acceleration_Enabled = false;
|
||||
@@ -63,11 +85,10 @@ void UI_Control_Selector_Inc(int32_t* selector, int32_t minimum, int32_t maximum
|
||||
// Apply increment with bounds checking
|
||||
for (uint8_t i = 0; i < Increment; i++)
|
||||
{
|
||||
// if(_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling == 0) {
|
||||
if(true) {
|
||||
SELECTOR_INC(selector, minimum, maximum, circle_around);
|
||||
if(_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling == 0) {
|
||||
SELECTOR_INC(selector, _Acceleration_Instance.config->Base_Step, minimum, maximum, circle_around);
|
||||
} else {
|
||||
SELECTOR_DEC(selector, minimum, maximum, circle_around);
|
||||
SELECTOR_DEC(selector, _Acceleration_Instance.config->Base_Step, minimum, maximum, circle_around);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -86,11 +107,10 @@ void UI_Control_Selector_Dec(int32_t* selector, int32_t minimum, int32_t maximum
|
||||
// Apply decrement with bounds checking
|
||||
for (uint8_t i = 0; i < Decrement; i++)
|
||||
{
|
||||
// if(_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling == 0) {
|
||||
if(true) {
|
||||
SELECTOR_DEC(selector, minimum, maximum, circle_around);
|
||||
if(_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling == 0) {
|
||||
SELECTOR_DEC(selector, _Acceleration_Instance.config->Base_Step, minimum, maximum, circle_around);
|
||||
} else {
|
||||
SELECTOR_INC(selector, minimum, maximum, circle_around);
|
||||
SELECTOR_INC(selector, _Acceleration_Instance.config->Base_Step, minimum, maximum, circle_around);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,27 +23,14 @@
|
||||
// ============================================================================================
|
||||
// Datatypes
|
||||
typedef struct {
|
||||
uint8_t Base_Threshold; // Steps needed to trigger level 1 acceleration
|
||||
uint8_t Level_Step; // Additional steps per acceleration level
|
||||
uint8_t Max_Level; // Maximum acceleration level (1-10)
|
||||
uint16_t Timeout_ms; // Inactivity timeout to reset acceleration (ms)
|
||||
uint8_t Multipliers[10]; // Multiplier for each acceleration level
|
||||
uint8_t Base_Step; // Basic Step width, without any multiplier
|
||||
uint8_t Base_Threshold; // Steps needed to trigger level 1 acceleration
|
||||
uint8_t Level_Step; // Additional steps per acceleration level
|
||||
uint8_t Max_Level; // Maximum acceleration level (1-10)
|
||||
uint16_t Timeout_ms; // Inactivity timeout to reset acceleration (ms)
|
||||
uint8_t Multipliers[10]; // Multiplier for each acceleration level
|
||||
} Encoder_Acceleration_Config;
|
||||
|
||||
typedef struct {
|
||||
// Configuration
|
||||
const Encoder_Acceleration_Config* config;
|
||||
|
||||
// State tracking
|
||||
uint8_t Speed_Counter; // Current speed counter
|
||||
uint8_t Acceleration_Level; // Current acceleration level (0 = no accel)
|
||||
uint32_t Last_Activity_Time; // Last encoder activity timestamp (ms)
|
||||
|
||||
// Statistics (for debugging)
|
||||
uint32_t Total_Steps; // Total encoder steps processed
|
||||
uint32_t Accelerated_Steps; // Steps that used acceleration
|
||||
} Encoder_Acceleration_Instance;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
|
||||
@@ -1 +1 @@
|
||||
223
|
||||
854
|
||||
|
||||
1
Firmware/build/symbols.py
Normal file
1
Firmware/build/symbols.py
Normal file
@@ -0,0 +1 @@
|
||||
# Auto-generated symbol addresses
|
||||
126
Firmware/main.c
126
Firmware/main.c
@@ -8,6 +8,7 @@
|
||||
// ============================================================================================
|
||||
// Includes
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "pico/stdlib.h"
|
||||
|
||||
@@ -21,15 +22,17 @@
|
||||
|
||||
#include "INA260.h"
|
||||
#include "Switch.h"
|
||||
#include "Screens.h"
|
||||
#include "EEPROM_M24C64.h"
|
||||
#include "Rotary_Encoder.h"
|
||||
|
||||
#include "Display.h"
|
||||
#include "Display_SPI.h"
|
||||
#include "Display_Image.h"
|
||||
#include "Screens.h"
|
||||
#include "Display_Default_Configurations.h"
|
||||
|
||||
#include "USB_Serial.h"
|
||||
#include "Serial_Command.h"
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
@@ -63,11 +66,20 @@ extern uint16_t _Image_Power_Critical_32x32[];
|
||||
extern uint16_t _Image_Power_Overvoltage_32x32[];
|
||||
extern uint16_t _Image_Power_Undervoltage_32x32[];
|
||||
extern uint16_t _Image_Power_Unplugged_32x32[];
|
||||
extern uint16_t _Image_Overcurrent_32x32[];
|
||||
|
||||
static uint32_t _Idle_Counter;
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Check_For_Serial_Input(void);
|
||||
void Parse_Command(void);
|
||||
void Serial_Send_Configuration_Text(void);
|
||||
void Serial_Send_Configuration_Hex(void);
|
||||
void Serial_Return_Ping(void);
|
||||
void Serial_Write_Configuration_Byte(void);
|
||||
void Serial_Save_To_EEPROM(void);
|
||||
void Display_Start_Buffer_Readout(void);
|
||||
|
||||
|
||||
@@ -95,7 +107,10 @@ int main(void)
|
||||
// Trigger =================================================
|
||||
TRIGGER_CONFIG;
|
||||
TRIGGER_OFF;
|
||||
|
||||
|
||||
// Serial Command =============================================
|
||||
Serial_Command_Init();
|
||||
|
||||
// USB Serial =================================================
|
||||
USB_Serial_Init();
|
||||
|
||||
@@ -105,7 +120,7 @@ int main(void)
|
||||
// EEPROM =================================================
|
||||
EEPROM_Init();
|
||||
|
||||
// INA 260 =============================================
|
||||
// INA 260 =================================================
|
||||
INA260_Init();
|
||||
|
||||
// Core 1 =================================================
|
||||
@@ -119,8 +134,8 @@ int main(void)
|
||||
|
||||
// Display =================================================
|
||||
Display_Init(DISPLAY_COLOR_BLACK, true, false);
|
||||
// Screen_Setup_Loading();
|
||||
Screen_Setup_Menu_Main(TRANSITION_NONE, TRANSITION_NONE, LINEAR, 0, false, 3);
|
||||
Screen_Setup_Loading();
|
||||
// Screen_Setup_Menu_Main(TRANSITION_NONE, TRANSITION_NONE, LINEAR, 0, false, 3);
|
||||
|
||||
// Rotary Encoder =============================================
|
||||
Rotary_Encoder_Init();
|
||||
@@ -134,6 +149,7 @@ int main(void)
|
||||
// Repeating Timer =============================================
|
||||
add_repeating_timer_ms(40, ISR_Repeating_Timer, NULL, &_Timer);
|
||||
|
||||
_Idle_Counter = 0;
|
||||
|
||||
while (1)
|
||||
{
|
||||
@@ -149,9 +165,29 @@ int main(void)
|
||||
|
||||
UI_Control_Acceleration_Update(CURRENT_TIME_ms);
|
||||
|
||||
INA260_Read_BusVoltage();
|
||||
INA260_Update_Current_Threshold();
|
||||
INA260_Read_BusVoltage();
|
||||
INA260_Read_Current();
|
||||
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_INA260_BUSVOLTAGE, 0, INA260_Get_BusVoltage_mV());
|
||||
|
||||
if(_EEPROM_Content.Device_Configuration.Screen_Timeout > 0)
|
||||
{
|
||||
if(_Idle_Counter >= _EEPROM_Content.Device_Configuration.Screen_Timeout * (1000 / 40))
|
||||
{
|
||||
if(_Screen_Idle_Active != true)
|
||||
{
|
||||
Screen_Setup_Idle(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES);
|
||||
}
|
||||
}
|
||||
else if(_Screen_Idle_Counter_Disable == false)
|
||||
{
|
||||
_Idle_Counter++;
|
||||
}
|
||||
else if(_Screen_Idle_Counter_Disable == true)
|
||||
{
|
||||
_Idle_Counter = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add functions here to execute during the DMA Transfer
|
||||
@@ -163,6 +199,9 @@ int main(void)
|
||||
if(Display_Send_Buffer_Completed())
|
||||
{
|
||||
TRIGGER_ON;
|
||||
Mode_Manager_Tick();
|
||||
EEPROM_Tick();
|
||||
|
||||
Command_Issue_Get_Request(MULTICORE_COMMAND_GET_LED_POWER_ERROR, 0);
|
||||
Display_Render_Objects();
|
||||
LED_Power_Error Error = Command_Get_Request_Response_By_Command_Only(MULTICORE_COMMAND_GET_LED_POWER_ERROR, 100);
|
||||
@@ -175,6 +214,7 @@ int main(void)
|
||||
case BUS_UNDERVOLTAGE: Image = _Image_Power_Undervoltage_32x32; break;
|
||||
case BUS_OVERVOLTAGE: Image = _Image_Power_Overvoltage_32x32; break;
|
||||
case BUS_VOLTAGE_MEASUREMENT: Image = _Image_Power_Critical_32x32; break;
|
||||
case OVERCURRENT: Image = _Image_Overcurrent_32x32; break;
|
||||
}
|
||||
|
||||
if(Image != NULL && Display_Screen_Transition_Ongoing() == false) {
|
||||
@@ -184,83 +224,31 @@ int main(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
Check_For_Serial_Input();
|
||||
Serial_Command_Check_For_Input();
|
||||
|
||||
if(Rotary_Encoder_Rotation_CW_Occurred()) {
|
||||
_Idle_Counter = 0;
|
||||
Display_Action_CW();
|
||||
}
|
||||
|
||||
if(Rotary_Encoder_Rotation_CCW_Occurred()) {
|
||||
_Idle_Counter = 0;
|
||||
Display_Action_CCW();
|
||||
}
|
||||
|
||||
if(Rotary_Encoder_Switch_Press_Occurred()) {
|
||||
_Idle_Counter = 0;
|
||||
Display_Action_SW();
|
||||
}
|
||||
|
||||
if(Switch_Press_Occurred()) {
|
||||
if(_Screen_Idle_Active == false) {
|
||||
_Idle_Counter = 0;
|
||||
}
|
||||
Mode_Manager_Cycle_Mode();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Check_For_Serial_Input(void)
|
||||
{
|
||||
int Analog_Data = -1;
|
||||
|
||||
while(USB_Serial_Available())
|
||||
{
|
||||
uint8_t USB_Data = USB_Serial_Get_Byte();
|
||||
switch(USB_Data)
|
||||
{
|
||||
case 'a':
|
||||
USB_SERIAL_SEND_STRING("SPI Baudrate: ");
|
||||
USB_Serial_Send_Int_Dec(Display_SPI_Get_Baudrate(), 10);
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
break;
|
||||
|
||||
case 'b': // New command for buffer readout
|
||||
Display_Start_Buffer_Readout();
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
Command_Issue_Get_Request(MULTICORE_COMMAND_GET_ANALOG_VOLTAGE, 0);
|
||||
Analog_Data = Command_Get_Request_Response_By_Command_Only(MULTICORE_COMMAND_GET_ANALOG_VOLTAGE, 100);
|
||||
USB_SERIAL_SEND_STRING("Analog: "); USB_Serial_Send_Int_Dec(Analog_Data, 5); USB_SERIAL_SEND_STRING("mV"); USB_SERIAL_SEND_TERMINATOR();
|
||||
USB_SERIAL_SEND_STRING("INA260: "); USB_Serial_Send_Int_Dec(INA260_Get_BusVoltage_mV(), 5); USB_SERIAL_SEND_STRING("mV"); USB_SERIAL_SEND_TERMINATOR();
|
||||
break;
|
||||
|
||||
default:
|
||||
USB_SERIAL_SEND_STRING("Unknown Command: ");
|
||||
USB_Serial_Put_Char(USB_Data);
|
||||
USB_SERIAL_SEND_STRING(" (");
|
||||
USB_Serial_Send_Int_Hex(USB_Data, 2, true);
|
||||
USB_SERIAL_SEND_STRING(")");
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Display_Start_Buffer_Readout(void)
|
||||
{
|
||||
cancel_repeating_timer(&_Timer);
|
||||
|
||||
// Send header
|
||||
USB_SERIAL_SEND_STRING("IMGBUF");
|
||||
USB_Serial_Send_Int_Dec(DISPLAY_WIDTH, 4);
|
||||
USB_Serial_Put_Char(',');
|
||||
USB_Serial_Send_Int_Dec(DISPLAY_HEIGHT, 4);
|
||||
USB_Serial_Put_Char(',');
|
||||
USB_Serial_Send_Int_Dec(16, 2);
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
|
||||
uint32_t Pixel_Count = DISPLAY_WIDTH * DISPLAY_HEIGHT;
|
||||
|
||||
for(uint32_t i = 0; i < Pixel_Count; i++)
|
||||
{
|
||||
Display_Color Pixel = Display_Get_Pixel(i);
|
||||
USB_Serial_Send_Int_Hex(Pixel, 4, false);
|
||||
}
|
||||
sleep_ms(100);
|
||||
USB_SERIAL_SEND_TERMINATOR();
|
||||
|
||||
add_repeating_timer_ms(40, ISR_Repeating_Timer, NULL, &_Timer);
|
||||
}
|
||||
|
||||
71
Housing/MIDI_Lighter_Mic_Adapter.scad
Normal file
71
Housing/MIDI_Lighter_Mic_Adapter.scad
Normal file
@@ -0,0 +1,71 @@
|
||||
use <MCAD/boxes.scad>
|
||||
|
||||
|
||||
eps = 0.0001;
|
||||
|
||||
$preview = false;
|
||||
|
||||
// mirror([0, 0, 1])
|
||||
// {
|
||||
// translate([0, 0, 1-eps]) roundedBox([15, 74, 2], 15/2, true, $fn = $preview ? 32 : 100);
|
||||
// KandM_14510_Mount();
|
||||
// }
|
||||
|
||||
// KandM_14510_PressIn_Support(73);
|
||||
|
||||
module KandM_14510_Mount(floor_height = 1, cutout = false)
|
||||
{
|
||||
Pick_T = 1.0;
|
||||
Pick_H = 13;
|
||||
Pick_W = 60;
|
||||
|
||||
Outer_T = 7.5;
|
||||
Outer_H = Pick_H;
|
||||
Outer_W = 67.5;
|
||||
|
||||
Wall_T = 2.0;
|
||||
|
||||
if(cutout)
|
||||
{
|
||||
roundedBox([Outer_T + 2*Wall_T , Outer_W + 2*Wall_T, 1*Outer_H], (Outer_T + 2*Wall_T)/2, true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
else
|
||||
{
|
||||
translate([0, 0, floor_height/2-eps])
|
||||
roundedBox([Outer_T + 2*Wall_T , Outer_W + 2*Wall_T, floor_height], (Outer_T + 2*Wall_T)/2, true, $fn = $preview ? 32 : 100);
|
||||
translate([0, 0, -Pick_H/2])
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
roundedBox([Pick_T, Pick_W, Pick_H], Pick_T/2, true, $fn = $preview ? 32 : 100);
|
||||
|
||||
difference()
|
||||
{
|
||||
roundedBox([Outer_T + 2*Wall_T , Outer_W + 2*Wall_T, 1*Outer_H], (Outer_T + 2*Wall_T)/2, true, $fn = $preview ? 32 : 100);
|
||||
roundedBox([Outer_T , Outer_W , 2*Outer_H], Outer_T/2 , true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
}
|
||||
|
||||
translate([0, 0, -3])
|
||||
rotate([0, 90, 0])
|
||||
cylinder(d=3.6, h=2*(Outer_W + 2*Wall_T), center=true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module KandM_14510_PressIn_Support(height = 1)
|
||||
{
|
||||
mirror([0, 0, 1])
|
||||
union()
|
||||
{
|
||||
rotate([0, 90, 0])
|
||||
cylinder(d=15, h=height, center=true, $fn = $preview ? 32 : 100);
|
||||
|
||||
translate([0, 0, 15/2])
|
||||
cube([height, 9.5, 4], center=true);
|
||||
|
||||
translate([0, 0, 15/2 + 4/2 + 3/2 - eps])
|
||||
roundedBox([height, 20, 3], 2, true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
}
|
||||
16
Housing/Pin_Header_Cut_Template.scad
Normal file
16
Housing/Pin_Header_Cut_Template.scad
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
|
||||
No_Of_Pins = 8;
|
||||
|
||||
Wall_T = 2;
|
||||
Wall_H = 7;
|
||||
|
||||
Inner_W = 2.54 * No_Of_Pins;
|
||||
Inner_T = 2.54;
|
||||
|
||||
|
||||
difference()
|
||||
{
|
||||
cube([Inner_W + 2*Wall_T, Inner_T + 2*Wall_T, Wall_H], center=true);
|
||||
cube([Inner_W, Inner_T, 2*Wall_H], center=true);
|
||||
}
|
||||
@@ -6,33 +6,37 @@ eps = 0.001;
|
||||
|
||||
Cover_O = 2.5; // O = Overhang
|
||||
Cover_T_T = 2.0; // T_T = Top Thickness
|
||||
Cover_B_T = 3.0; // B_T = Bottom Thickness
|
||||
Cover_B_T = 2.0; // B_T = Bottom Thickness
|
||||
Wall_PCB_GAP = 0.25;
|
||||
|
||||
Wall_TB_Overlap = 2; // Overkap between Top an Bottom Wall
|
||||
|
||||
Drill_M3 = 3.5;
|
||||
Ring_M3_H = 2;
|
||||
|
||||
Screw_Ring_M3_Outer_Diameter = 7.5;
|
||||
Screw_Ring_M3_Inner_Diameter = 5.5;
|
||||
Screw_Pit_M3 = 6.5;
|
||||
|
||||
Spacer_Top_Height = 10;
|
||||
Spacer_Bot_Height = 5;
|
||||
|
||||
Wall_T_H = Spacer_Top_Height + PCB_T/2; // T_H = Wall Top Height
|
||||
Wall_B_H = Spacer_Bot_Height + PCB_T/2; // B_H = Wall Bottom Height
|
||||
Wall_T_H = Spacer_Top_Height + PCB_T/2 + Cover_T_T; // T_H = Wall Top Height
|
||||
Wall_B_H = Spacer_Bot_Height + PCB_T/2 + Cover_B_T + 1; // B_H = Wall Bottom Height
|
||||
|
||||
Mounting_Holes = [
|
||||
[ 4.0, 70.0, 0],
|
||||
[45.0, 70.0, 0],
|
||||
[54.0, 70.0, 0],
|
||||
[42.0, 46.5, 0],
|
||||
[ 4.0, 21.0, 0],
|
||||
[48.0, 23.5, 0]
|
||||
];
|
||||
|
||||
Cable_Relief_Holder = [
|
||||
[10.5, 60.0, 0],
|
||||
[27.0, 60.0, 0]
|
||||
Spacer_Top_Heights = [
|
||||
Spacer_Top_Height - 2,
|
||||
Spacer_Top_Height - 2,
|
||||
Spacer_Top_Height,
|
||||
Spacer_Top_Height - 2,
|
||||
Spacer_Top_Height - 2
|
||||
];
|
||||
|
||||
MIDI_Plugs = [
|
||||
@@ -41,10 +45,13 @@ MIDI_Plugs = [
|
||||
];
|
||||
|
||||
SSD1306 = [15.875, 53.34 , 0];
|
||||
GC9A01A = [20.320, 20.32 , 0];
|
||||
GC9A01A = [20.320, 22.56 , 0];
|
||||
Rotary_Encoder = [48.895, 36.830, 0];
|
||||
Power_Plug = [49.530, 64.770, 0];
|
||||
Button = [59.055, 23.495, 0];
|
||||
USB_C = [53.975, 50.165, 0];
|
||||
MOLEX = [19.05 , 66.04 , 0];
|
||||
Audio_Jack = [29.00 , 8.255 , 0];
|
||||
|
||||
|
||||
Screw_Area_Cutout_Widths = [
|
||||
@@ -61,9 +68,6 @@ Screw_Area_Cutout_Offsets = [
|
||||
-Screw_Area_Cutout_Widths[3]/2 + PCB_W - Mounting_Holes[3][0] + Cover_O
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
module Screw_Drill(drill)
|
||||
{
|
||||
translate([0,0,-50])
|
||||
@@ -149,21 +153,23 @@ module GC9A01A_Cover_Cutout(thickness)
|
||||
}
|
||||
}
|
||||
|
||||
module GC9A01A_Cover_Plate(thickness, scale_factor)
|
||||
module GC9A01A_Cover_Plate(thickness, scale_factor, cutout=false)
|
||||
{
|
||||
Circle_Cutout_D = Screw_Ring_M3_Outer_Diameter*1.1/scale_factor;
|
||||
|
||||
translate([0, 0, thickness/2])
|
||||
Plate_X = 40*scale_factor;
|
||||
Plate_Y = 47*scale_factor;
|
||||
|
||||
translate([0, 0, thickness/2])
|
||||
difference()
|
||||
{
|
||||
translate([ 0, 20.5, 0]) roundedBox([40*scale_factor, 44*scale_factor, thickness], 3, true, $fn = $preview ? 32 : 100);
|
||||
translate([22, 26, 0]) cylinder(d=Circle_Cutout_D, h=3*thickness, center=true, $fn = $preview ? 32 : 100);
|
||||
translate([0, 20, 0]) roundedBox([Plate_X, Plate_Y, thickness], 5, true, $fn = $preview ? 32 : 100);
|
||||
if(cutout == false) {
|
||||
|
||||
GC9A01A_Cover_Cutout(10);
|
||||
|
||||
translate([-Plate_X/2-10+Screw_Pit_M3, 20-Plate_Y/2-10, 0])
|
||||
translate([0.5, Screw_Pit_M3-1.2, 0]) roundedBox([20, 20, 20], Screw_Pit_M3/1.8, true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
|
||||
translate([-16.5, 0.5, 0]) {
|
||||
cylinder(d=Circle_Cutout_D, h=3*thickness, center=true, $fn = $preview ? 32 : 100);
|
||||
translate([-Circle_Cutout_D/4, 0, 0]) cube([Circle_Cutout_D/2, Circle_Cutout_D, 3*thickness], center=true);
|
||||
translate([0, -Circle_Cutout_D/4, 0])cube([Circle_Cutout_D, Circle_Cutout_D/2, 3*thickness], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,48 +1,109 @@
|
||||
use <MCAD/boxes.scad>
|
||||
use <MCAD/regular_shapes.scad>
|
||||
|
||||
|
||||
use <MIDI_Lighter_Mic_Adapter.scad>
|
||||
include <RP2350_MIDI_Lighter_PCB.scad>
|
||||
include <RP2350_MIDI_Lighter_Definition.scad>
|
||||
|
||||
|
||||
Show_FAD_Logo = true;
|
||||
Show_PCB = false;
|
||||
$preview = false;
|
||||
Alternative = true;
|
||||
|
||||
// Info //
|
||||
// This version has the walls of the top part mostly associated to the to cover
|
||||
Show_FAD_Logo = true;
|
||||
Show_PCB = false;
|
||||
Audio_Jack_Present = false;
|
||||
Debug_Present = false;
|
||||
Bottom_Mount = "ZipTie"; // ZipTie, KandM
|
||||
$preview = false;
|
||||
|
||||
|
||||
|
||||
if(Show_PCB)
|
||||
{
|
||||
PCB();
|
||||
PCB(Audio_Jack_Present);
|
||||
translate([0,0,+PCB_T/2]) Spacer_Top();
|
||||
translate([0,0,-PCB_T/2]) Spacer_Bot();
|
||||
}
|
||||
|
||||
// Only for display purposes
|
||||
// translate([0, 0, eps])
|
||||
|
||||
Top();
|
||||
// Top_Wall();
|
||||
|
||||
// Display_GC9A01A_Cover();
|
||||
// Bottom(Bottom_Mount, true);
|
||||
// Bottom_Wall();
|
||||
// rotate([0, 180, 0])
|
||||
// translate([0, 0, eps]) Display_GC9A01A_Cover();
|
||||
// Power_Plug_Solder_Guide();
|
||||
// MIDI_Plug_Solder_Guide(Audio_Jack_Present);
|
||||
|
||||
|
||||
// color([1.0, 0.4, 0.4]) Bottom(Alternative);
|
||||
// color([0.4, 0.4, 1.0]) Bottom_Wall(Alternative);
|
||||
|
||||
module Display_GC9A01A_Cover()
|
||||
module Power_Plug_Solder_Guide()
|
||||
{
|
||||
color([0.4, 1.0, 0.4], 1.5)
|
||||
translate([0, 0, +Spacer_Top_Height + PCB_T/2 + 5])
|
||||
translate(GC9A01A)
|
||||
difference() {
|
||||
GC9A01A_Cover_Plate(1, 1);
|
||||
GC9A01A_Cover_Cutout(10);
|
||||
Main_Block_Z = 13;
|
||||
|
||||
difference()
|
||||
{
|
||||
translate(Power_Plug) translate([2.5, 0, Main_Block_Z/2 + PCB_T/2 +eps]) cube([12, 18, Main_Block_Z], center=true);
|
||||
|
||||
translate(Power_Plug) translate([-2, 6+eps, 0]) cube([8, 6, 100], center=true);
|
||||
translate(Power_Plug) translate([0, -8, 2 + PCB_T/2 - eps]) cube([20, 6, 4], center=true);
|
||||
Screw_Holes_M3();
|
||||
|
||||
translate(Power_Plug)
|
||||
translate([10.625, -2.4, 0])
|
||||
translate([-3.5, 0, 0])
|
||||
scale(1.05)
|
||||
{
|
||||
translate([3.5/2-eps, 0, 11/2]) cube([ 3.5, 9, 11.0], center=true);
|
||||
translate([-10.9/2, 0, 6.4/2]) cube([10.9, 9, 6.4], center=true);
|
||||
translate([-10.9/2, 0, 6.4]) rotate([0, 90, 0]) cylinder(h=10.9, d=9, center=true, $fn=60);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module MIDI_Plug_Solder_Guide(Audio_Jack_Present = false)
|
||||
{
|
||||
Main_Block_X = PCB_W + 2*Cover_O;
|
||||
Main_Block_Y = 13.335 + 4;
|
||||
|
||||
difference()
|
||||
{
|
||||
translate([PCB_W/2, , 0])
|
||||
difference()
|
||||
{
|
||||
translate([0, -Main_Block_Y/2+MIDI_Plugs[0][1]-eps, 2]) cube([Main_Block_X, Main_Block_Y, 8], center=true);
|
||||
translate([0, PCB_H/2, -50 + PCB_T/2]) cube([1*PCB_W, PCB_H, 100], center=true);
|
||||
}
|
||||
|
||||
for (i = MIDI_Plugs) {
|
||||
translate(i) {
|
||||
translate([0, -5, 10.2/2]) cube([18.2, 10.0, 10.20], center=true);
|
||||
translate([0, -0.5-10-0.25+eps, 20.35/2]) cube([21.5, 2.5, 20.35], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
if(Audio_Jack_Present) {
|
||||
translate(Audio_Jack) translate([0, -3, 5 + PCB_T/2]) cube([8, 20, 10], center=true);
|
||||
translate(Audio_Jack) translate([0, 0, 0.5 + PCB_T/2-eps]) cube([12, 20, 1], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module Display_GC9A01A_Cover()
|
||||
{
|
||||
color([0.4, 0.4, 1.0], 1.0)
|
||||
translate([0, 0, +Spacer_Top_Height + PCB_T/2 + Cover_T_T + 0.0])
|
||||
difference()
|
||||
{
|
||||
translate(GC9A01A) GC9A01A_Cover_Plate(1.0, 1, false);
|
||||
Screw_Pits_M3(10);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module Top()
|
||||
{
|
||||
color([0.2, 0.8, 0.2])
|
||||
difference()
|
||||
{
|
||||
translate([0, 0, +Spacer_Top_Height + PCB_T/2])
|
||||
@@ -53,27 +114,28 @@ module Top()
|
||||
union()
|
||||
{
|
||||
Top_Plate();
|
||||
// Top_Wall();
|
||||
translate([0, 0, +Cover_T_T]) Screw_Rings_M3();
|
||||
// translate([0, 0, +Cover_T_T]) Relief_Rings_M3();
|
||||
}
|
||||
|
||||
Screw_Holes_M3();
|
||||
|
||||
for (i = [0:1]) {
|
||||
translate([0, 0, Cover_T_T/2])
|
||||
translate(MIDI_Plugs[i])
|
||||
scale([1, 1, 10]) MIDI_Plug_Cutout();
|
||||
// Top_Wall_Screw_Plates(0.6, -eps, true);
|
||||
translate([0, 0, +Cover_T_T]) Screw_Pits_M3(1);
|
||||
translate(Rotary_Encoder) Screw_Drill(7.5);
|
||||
translate(GC9A01A) GC9A01A_Cutout(5*Cover_T_T);
|
||||
|
||||
translate([0, 0, +Cover_T_T])
|
||||
{
|
||||
translate([0, 0, -1.0]) // Penetration Depth
|
||||
translate(Rotary_Encoder) cylinder(d=15, h=100, center=false, $fn = $preview ? 32 : 100);
|
||||
|
||||
translate([0, 0, -0.5]) // Penetration Depth
|
||||
translate(GC9A01A) GC9A01A_Cover_Plate(1, 1.01, true);
|
||||
}
|
||||
|
||||
translate(Rotary_Encoder) Screw_Drill(7.5);
|
||||
translate(GC9A01A) GC9A01A_Cutout(5*Cover_T_T);
|
||||
translate([0, 0, +Cover_T_T-0.5])
|
||||
translate(GC9A01A) GC9A01A_Cover_Plate(10, 1.01);
|
||||
translate([0, 0, -Spacer_Top_Height - PCB_T/2]) PCB_Cutouts_Top_Plate();
|
||||
}
|
||||
|
||||
for (i = [0:1]) {
|
||||
translate([0, 0, Cover_T_T]) translate(MIDI_Plugs[i]) MIDI_Plug_Arc();
|
||||
for (i = MIDI_Plugs) {
|
||||
translate([0, 0, Cover_T_T]) translate(i) MIDI_Plug_Arc();
|
||||
}
|
||||
|
||||
if(Show_FAD_Logo == true) {
|
||||
@@ -85,147 +147,289 @@ module Top()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PCB_Cutouts_Top();
|
||||
}
|
||||
}
|
||||
|
||||
module Top_Wall()
|
||||
{
|
||||
translate([PCB_W/2, PCB_H/2, -Wall_T_H/2])
|
||||
union()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
roundedBox([PCB_W + 2*Cover_O, PCB_H + 2*Cover_O, 1*Wall_T_H], 2, true, $fn = $preview ? 32 : 100);
|
||||
roundedBox([PCB_W + 1*Cover_O, PCB_H + 1*Cover_O, 2*Wall_T_H], 2, true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
|
||||
// Internak Support Structures
|
||||
translate([+PCB_W/2+Cover_O/2, -13, 0]) translate([-5/2, 0, PCB_T/2]) cube([5, 2, Wall_T_H-PCB_T], center=true);
|
||||
translate([Cover_O/4, -PCB_H/2-Cover_O/2, 0]) translate([-1/2, 5/2, PCB_T/2]) cube([2, 5, Wall_T_H-PCB_T], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module Top_Plate()
|
||||
{
|
||||
Cover_O_Factor = 0.9;
|
||||
translate([PCB_W/2, PCB_H/2, Cover_T_T/2])
|
||||
roundedBox([PCB_W + 2*Cover_O, PCB_H + 2*Cover_O, Cover_T_T], 2, true, $fn = $preview ? 32 : 100);
|
||||
// roundedBox([PCB_W + 2*Cover_O, PCB_H + 2*Cover_O, Cover_T_T], 2, true, $fn = $preview ? 32 : 100);
|
||||
roundedBox([PCB_W + Cover_O_Factor*Cover_O, PCB_H + Cover_O_Factor*Cover_O, Cover_T_T], 1.0, true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
|
||||
module Bottom(Alternative)
|
||||
module Top_Wall()
|
||||
{
|
||||
translate([0, 0, -Spacer_Bot_Height - PCB_T/2])
|
||||
union()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
translate([0, 0, -Cover_B_T])
|
||||
union()
|
||||
{
|
||||
Bottom_Plate(Alternative);
|
||||
translate([PCB_W/2, PCB_H/2, +Wall_T_H/2])
|
||||
difference() {
|
||||
union() {
|
||||
roundedBox( [PCB_W + 2*Cover_O , PCB_H + 2*Cover_O , 1*Wall_T_H], 2, true, $fn = $preview ? 32 : 100);
|
||||
|
||||
Overlao_H = Wall_TB_Overlap - Wall_PCB_GAP; // Remove a bit for printing margin
|
||||
translate([0, 0, -Wall_T_H/2 - Overlao_H/2 - eps]) cube([PCB_W + 1*Cover_O, PCB_H + 1*Cover_O, Overlao_H], center=true);
|
||||
|
||||
translate([0, 0, -1])
|
||||
for (i = [0:3]) {
|
||||
translate(Mounting_Holes[i]) cylinder(h=1, d=Screw_Ring_M3_Outer_Diameter, center=false, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
cube([PCB_W + 0*Cover_O + 0.5, PCB_H + 0*Cover_O + 0.5 , 2*Wall_T_H], center=true);
|
||||
|
||||
translate([0, 0, +Wall_T_H/2 - Cover_T_T/2]) cube([PCB_W + 1*Cover_O, PCB_H + 1*Cover_O, Cover_T_T + eps], center=true);
|
||||
}
|
||||
|
||||
translate([0, 0, -1-Ring_M3_H]) Screw_Rings_M3();
|
||||
union()
|
||||
{
|
||||
// Around the Power Plug Connector
|
||||
Top_Wall_Add_Inner_Wall("top", 6, 21, 2, 40.5);
|
||||
Top_Wall_Add_Inner_Wall("right", 6, 21, 2, 55.88);
|
||||
|
||||
// Around the LED Connector
|
||||
X_Offset = 6.25;
|
||||
Top_Wall_Add_Inner_Wall("top", 6, 12.0, 2, 19.05-X_Offset);
|
||||
Top_Wall_Add_Inner_Wall("top", 6, 12.0, 2, 19.05+X_Offset);
|
||||
translate([15, 0, 0]) Top_Wall_Add_Inner_Wall("left", 3.5, 12, 2, 65.5);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = [0:3]) {
|
||||
// translate([0, 0, -Cover_B_T/2]) translate(Mounting_Holes[i])
|
||||
// scale(1.1) Screw_Area_Cutout(Screw_Area_Cutout_Widths[i], Screw_Area_Cutout_Offsets[i], Cover_B_T/2);
|
||||
translate([PCB_W/2, PCB_H/2, +Wall_T_H/2])
|
||||
{
|
||||
// For the MOLEX Connector
|
||||
Top_Wall_Remove_Part("top", Wall_T_H-Cover_T_T/2, 5, MOLEX[0]);
|
||||
Top_Wall_Remove_Part("top", 8+PCB_T/2, 10.5, MOLEX[0]);
|
||||
|
||||
translate([0, 0, -Cover_B_T/2]) Screw_Area_Stripe(Mounting_Holes[i][1], Cover_B_T/2, 1.1, 1.5);
|
||||
if(Audio_Jack_Present) {
|
||||
Top_Wall_Remove_Part("bottom", 3.5, 10, Audio_Jack[0]);
|
||||
}
|
||||
Top_Wall_Remove_Part("right", 7.0, 3.5, Button[1]);
|
||||
translate([-Cover_O + eps, 0, 0]) Top_Wall_Remove_Part("right", PCB_T/2 + 8.0, 8.0, Button[1]);
|
||||
Top_Wall_Remove_Part("right", PCB_T/2+2.2, 16, USB_C[1]);
|
||||
|
||||
// Cutout for Debug Connector
|
||||
if(Debug_Present) {
|
||||
Top_Wall_Remove_Part("left", PCB_T/2+6, 7, 28.575);
|
||||
}
|
||||
}
|
||||
|
||||
Screw_Holes_M3();
|
||||
translate([0, PCB_H/2 + 4, 0]) Bottom_Zip_Cutout(PCB_W/3);
|
||||
translate([7, -6, Wall_T_H-3+eps]) translate(Mounting_Holes[0]) rotate([0, 0, 0]) cube([8, 8, 2], center=true);
|
||||
PCB_Cutouts_Top_Wall(Audio_Jack_Present);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module Bottom_Wall(Alternative)
|
||||
{
|
||||
Wall_H = Alternative == false ? Wall_B_H : Wall_B_H + Cover_B_T;
|
||||
|
||||
translate([PCB_W/2, PCB_H/2, -Wall_H/2])
|
||||
difference()
|
||||
{
|
||||
roundedBox([PCB_W + 2*Cover_O, PCB_H + 2*Cover_O, 1*Wall_H], 2, true, $fn = $preview ? 32 : 100);
|
||||
|
||||
translate([0, 0, Wall_B_H/2-0.001])
|
||||
cube([PCB_W + 1*Cover_O, PCB_H + 1*Cover_O, 1*Wall_B_H], center=true);
|
||||
|
||||
translate([0, 0, -Wall_B_H/2])
|
||||
cube([PCB_W - 0.0*Cover_O, PCB_H - 0.0*Cover_O, 1*Wall_B_H], center=true);
|
||||
}
|
||||
|
||||
translate([0, PCB_H/2 + 4, -Spacer_Bot_Height - PCB_T/2])
|
||||
Bottom_Zip_Guide(3);
|
||||
|
||||
translate([0, 0, -Wall_B_H])
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
for (i = [0:3]) {
|
||||
// translate([0, 0, -Cover_B_T/2]) translate(Mounting_Holes[i])
|
||||
// Screw_Area_Cutout(Screw_Area_Cutout_Widths[i], Screw_Area_Cutout_Offsets[i], Cover_B_T/2);
|
||||
translate([0, 0, -Cover_B_T/2]) Screw_Area_Stripe(Mounting_Holes[i][1], Cover_B_T/2, 1, 1);
|
||||
}
|
||||
}
|
||||
Screw_Holes_M3();
|
||||
}
|
||||
|
||||
// USB Cover
|
||||
translate([-3*Cover_O/4, 33, PCB_T/2]) cube([Cover_O/2, 9, PCB_T], center=true);
|
||||
|
||||
// Strip Cover at the front
|
||||
Relief_Wall_X = Cable_Relief_Holder[1][0] - Cable_Relief_Holder[0][0] + Screw_Ring_M3_Outer_Diameter-1;
|
||||
Relief_Wall_Z = 8.5;
|
||||
translate([Cable_Relief_Holder[0][0], PCB_H, 0])
|
||||
translate([Relief_Wall_X/2 - Screw_Ring_M3_Outer_Diameter/2 + 0.5, 3*Cover_O/4, Relief_Wall_Z/2]) cube([Relief_Wall_X, Cover_O/2, Relief_Wall_Z], center=true);
|
||||
|
||||
// Button Cover
|
||||
translate([PCB_W + 3*Cover_O/4, Button[1], PCB_T/2]) cube([Cover_O/2, 7, PCB_T], center=true);
|
||||
|
||||
// Power Plug Cover
|
||||
translate([PCB_W + 3*Cover_O/4, Power_Plug[1], PCB_T/2]) cube([Cover_O/2, 9, PCB_T], center=true);
|
||||
}
|
||||
|
||||
module Bottom_Plate(Alternative)
|
||||
{
|
||||
translate([PCB_W/2, PCB_H/2, Cover_B_T/2])
|
||||
if(Alternative == false)
|
||||
{
|
||||
roundedBox([PCB_W + 2*Cover_O, PCB_H + 2*Cover_O, Cover_B_T], 2, true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
else
|
||||
{
|
||||
roundedBox([PCB_W - 0.25*Cover_O, PCB_H - 0.25*Cover_O, Cover_B_T], 1, true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
}
|
||||
|
||||
module Bottom_Zip_Guide(Cube_Height)
|
||||
{
|
||||
translate([PCB_W/2, 5, 0])
|
||||
{
|
||||
difference()
|
||||
{
|
||||
translate([0, -5, Cube_Height/2]) cube([PCB_W + 2*Cover_O, 10, Cube_Height], center=true);
|
||||
translate([0, -5, -1]) rotate([0, 90, 90]) oval_prism(12, 17.4, 3.5, center=true, $fn = $preview ? 32 : 100);
|
||||
Top_Wall_Screw_Plates(2.0, PCB_T/2 + Spacer_Top_Height - 2);
|
||||
translate([4, 4, Wall_T_H/2]) translate(Mounting_Holes[3]) rotate([0, 0, 45]) cube([8, 8, Wall_T_H], center=true);
|
||||
}
|
||||
|
||||
translate([0, 0, Cover_T_T]) Top_Wall_Add_Inner_Wall("right", Wall_T_H, Cover_O/2, 1, Power_Plug[1]+2.5);
|
||||
translate([0, 0, Cover_T_T]) Top_Wall_Add_Inner_Wall("right", Wall_T_H - 3.0, Cover_O/2, 1, Power_Plug[1]-7.8);
|
||||
}
|
||||
}
|
||||
|
||||
module Top_Wall_Remove_Part(wall_section, height, length, position)
|
||||
{
|
||||
Wall_T = Cover_O/2;
|
||||
// Wall_XY = 0;
|
||||
Wall_XY = wall_section == "right" ? +PCB_W/2+Cover_O/2+Wall_T/2 :
|
||||
wall_section == "left" ? -PCB_W/2-Cover_O/2-Wall_T/2 :
|
||||
wall_section == "top" ? +PCB_H/2+Cover_O/2+Wall_T/2 :
|
||||
wall_section == "bottom"? -PCB_H/2-Cover_O/2-Wall_T/2 : 0;
|
||||
|
||||
if(wall_section == "right" || wall_section == "left")
|
||||
{
|
||||
translate([Wall_XY, position-PCB_H/2, -Wall_T_H/2+height/2 - Wall_TB_Overlap/2 - eps])
|
||||
cube([3*Wall_T, length, height + Wall_TB_Overlap], center=true);
|
||||
}
|
||||
else if(wall_section == "top" || wall_section == "bottom")
|
||||
{
|
||||
translate([position-PCB_W/2, Wall_XY, -Wall_T_H/2+height/2 - Wall_TB_Overlap/2 - eps])
|
||||
cube([length, 3*Wall_T, height + Wall_TB_Overlap], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module Top_Wall_Add_Inner_Wall(wall_section, height, length, width, position)
|
||||
{
|
||||
Wall_XY = wall_section == "right" ? +PCB_W + Cover_O - length/2 - eps :
|
||||
wall_section == "left" ? -Cover_O + length/2 - eps :
|
||||
wall_section == "top" ? +PCB_H + Cover_O - length/2 - eps :
|
||||
wall_section == "bottom"? -Cover_O + length/2 + eps : 0;
|
||||
|
||||
if(wall_section == "right" || wall_section == "left")
|
||||
{
|
||||
translate([Wall_XY, position, PCB_T/2+Spacer_Top_Height-height/2])
|
||||
cube([length, width, height], center=true);
|
||||
}
|
||||
else if(wall_section == "top" || wall_section == "bottom")
|
||||
{
|
||||
translate([position, Wall_XY, PCB_T/2+Spacer_Top_Height-height/2])
|
||||
cube([width, length, height], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module Top_Wall_Screw_Plates(height, height_offset, cutout=false)
|
||||
{
|
||||
Screw_Plate_Size = [
|
||||
[10, 10, height],
|
||||
[10, 9, height],
|
||||
[ 0, 0, 0],
|
||||
[10, 7, height],
|
||||
[16, 7, height]
|
||||
];
|
||||
|
||||
Screw_Plate_Offset = [
|
||||
[-1, +1, height/2 + height_offset],
|
||||
[+1, +2, height/2 + height_offset],
|
||||
[ 0, 0, height/2 + height_offset],
|
||||
[-1, 0, height/2 + height_offset],
|
||||
[+4, 0, height/2 + height_offset]
|
||||
];
|
||||
|
||||
for (i = [0:4]) {
|
||||
translate(Mounting_Holes[i])
|
||||
|
||||
if(cutout) {
|
||||
translate(Screw_Plate_Offset[i]) scale([1.1, 1.1, 1]) cube(Screw_Plate_Size[i], center=true);
|
||||
}
|
||||
else {
|
||||
difference() {
|
||||
translate(Screw_Plate_Offset[i]) roundedBox(Screw_Plate_Size[i], 2, true);
|
||||
Screw_Drill(Drill_M3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module Bottom_Zip_Cutout(Center_Offset)
|
||||
|
||||
|
||||
module Bottom(Bottom_Mount = "KandM", Show_Center_Drill_Hole = true)
|
||||
{
|
||||
Width = 3;
|
||||
Height = 10;
|
||||
|
||||
translate([PCB_W/2 - Center_Offset, 0, 0]) rotate([0,+45, 0]) cube([Width, Height, 100], center=true);
|
||||
translate([PCB_W/2 + Center_Offset, 0, 0]) rotate([0,-45, 0]) cube([Width, Height, 100], center=true);
|
||||
color([0.8, 0.8, 0.0])
|
||||
difference()
|
||||
{
|
||||
translate([0, 0, -Spacer_Bot_Height - PCB_T/2 - 1])
|
||||
{
|
||||
difference()
|
||||
{
|
||||
translate([0, 0, -Cover_B_T])
|
||||
union()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
Bottom_Plate();
|
||||
if(Bottom_Mount == "KandM") {
|
||||
translate([PCB_W/2, PCB_H/2, 0]) KandM_14510_Mount(1, true);
|
||||
}
|
||||
}
|
||||
if(Bottom_Mount == "KandM") {
|
||||
translate([PCB_W/2, PCB_H/2, 5.5]) KandM_14510_Mount();
|
||||
}
|
||||
else if(Bottom_Mount == "ZipTie") {
|
||||
Cube_H = 7;
|
||||
Cyl_D = 30;
|
||||
|
||||
translate([PCB_W/2, PCB_H/2, eps-Cube_H/2])
|
||||
difference() {
|
||||
roundedBox([15, PCB_H, Cube_H], 4, true);
|
||||
|
||||
translate([0, 0, -Cyl_D/2])
|
||||
rotate([90, 0, 0])
|
||||
cylinder(h=2*PCB_H, d=Cyl_D, center=true, $fn = $preview ? 32 : 100);
|
||||
|
||||
translate([0, 0, Cube_H/2-1])
|
||||
cube([100, 14, 2], center=true);
|
||||
}
|
||||
}
|
||||
translate(Mounting_Holes[2]) translate([0, 0, Cover_B_T-eps]) cylinder(h=1, d=10, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
|
||||
Screw_Holes_M3();
|
||||
translate([0, 0, -Cover_B_T]) mirror([0, 0, 1]) Screw_Pits_M3(1);
|
||||
|
||||
}
|
||||
if(Show_Center_Drill_Hole == false)
|
||||
{
|
||||
translate(Mounting_Holes[2])
|
||||
translate([0, 0, -Cover_B_T/2]) cube([7, 7, Cover_B_T], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
PCB_Cutouts_From_Bottom();
|
||||
}
|
||||
}
|
||||
|
||||
module Bottom_Wall()
|
||||
{
|
||||
translate([0, 0, 0])
|
||||
union()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
translate([PCB_W/2, PCB_H/2, -Wall_B_H/2])
|
||||
union()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
roundedBox( [PCB_W + 2*Cover_O , PCB_H + 2*Cover_O , 1*Wall_B_H], 2, true, $fn = $preview ? 32 : 100);
|
||||
cube( [PCB_W + 0*Cover_O + 0.5, PCB_H + 0*Cover_O + 0.5 , 2*Wall_T_H], center=true);
|
||||
|
||||
translate([0, 0, +Cover_B_T/2 - Wall_B_H/2 - eps])
|
||||
cube( [PCB_W + 1*Cover_O + 0.5, PCB_H + 1*Cover_O + 0.5 , Cover_B_T], center=true);
|
||||
|
||||
Overlao_H = Wall_TB_Overlap + Wall_PCB_GAP; // Add a bit for printing margin
|
||||
translate([0, 0, -Overlao_H/2 + Wall_B_H/2 + eps])
|
||||
cube( [PCB_W + 1*Cover_O + 0.5, PCB_H + 1*Cover_O + 0.5 , Overlao_H], center=true);
|
||||
}
|
||||
|
||||
Bottom_Wall_Add_Part("right" , PCB_T/2 , 9 , Power_Plug[1]-2.4);
|
||||
Bottom_Wall_Add_Part("right" , PCB_T/2+2.5 , 3 , Button[1]);
|
||||
Bottom_Wall_Add_Part("right" , PCB_T/2+2.0 , 16 , USB_C[1]);
|
||||
Bottom_Wall_Add_Part("top" , PCB_T/2 , 10 , MOLEX[0]);
|
||||
if(Audio_Jack_Present == true) {
|
||||
Bottom_Wall_Add_Part("bottom" , 3.2 , 9.5 , Audio_Jack[0]);
|
||||
}
|
||||
}
|
||||
PCB_Cutouts_From_Bottom();
|
||||
}
|
||||
Screw_Plate_T = 1.0;
|
||||
|
||||
translate([0, 0, -Screw_Plate_T])
|
||||
Top_Wall_Screw_Plates(Screw_Plate_T, -PCB_T/2 - Spacer_Bot_Height);
|
||||
}
|
||||
}
|
||||
|
||||
module Bottom_Wall_Add_Part(wall_section, height, length, position)
|
||||
{
|
||||
Wall_T = Cover_O/2;
|
||||
// Wall_XY = 0;
|
||||
Wall_XY = wall_section == "right" ? +PCB_W/2+Cover_O/2+Wall_T/2 :
|
||||
wall_section == "left" ? -PCB_W/2-Cover_O/2-Wall_T/2 :
|
||||
wall_section == "top" ? +PCB_H/2+Cover_O/2+Wall_T/2 :
|
||||
wall_section == "bottom"? -PCB_H/2-Cover_O/2-Wall_T/2 : 0;
|
||||
|
||||
if(wall_section == "right" || wall_section == "left")
|
||||
{
|
||||
translate([Wall_XY, position-PCB_H/2, Wall_B_H/2 + height/2 - eps])
|
||||
cube([Wall_T, length, height], center=true);
|
||||
}
|
||||
else if(wall_section == "top" || wall_section == "bottom")
|
||||
{
|
||||
translate([position-PCB_W/2, Wall_XY, Wall_B_H/2 + height/2 - eps])
|
||||
cube([length, Wall_T, height], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module Bottom_Plate()
|
||||
{
|
||||
translate([PCB_W/2, PCB_H/2, Cover_B_T/2])
|
||||
{
|
||||
roundedBox([PCB_W + 1*Cover_O, PCB_H + 1*Cover_O, Cover_B_T], 1, true, $fn = $preview ? 32 : 100);
|
||||
translate([0, 0, -0.5 + Cover_B_T - eps]) {
|
||||
cube([28, PCB_H, 1], center=true);
|
||||
translate([0, +10, 0]) cube([PCB_W, 36, 1], center=true);
|
||||
translate([0, -28, 0]) cube([PCB_W, 14, 1], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module MIDI_Plug_Cutout()
|
||||
@@ -246,8 +450,8 @@ module MIDI_Plug_Arc()
|
||||
difference() {
|
||||
translate([0, -eps, 0])
|
||||
intersection() {
|
||||
translate([0, 4.5, 0]) MIDI_Plug_Arc_Base(4.5, true);
|
||||
rotate([0, 90, 0]) oval_prism(20.5, 5, 8, center=true, $fn = $preview ? 32 : 100);
|
||||
translate([0, 4.3, 0]) MIDI_Plug_Arc_Base(4.3, true);
|
||||
rotate([0, 90, 0]) oval_prism(20.5, 4, 8, center=true, $fn = $preview ? 32 : 100);
|
||||
|
||||
// hull() {
|
||||
// rotate([ 0, 0, 0]) MIDI_Plug_Arc_Base(0.1);
|
||||
@@ -274,4 +478,4 @@ module MIDI_Plug_Arc_Base(height, filled)
|
||||
}
|
||||
translate([0, -height/2+0.01, -5]) cube([40, 2*height, 10], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
use <MCAD/boxes.scad>
|
||||
include <NopSCADlib/core.scad>
|
||||
include <RP2350_MIDI_Lighter_Definition.scad>
|
||||
|
||||
use <MCAD/boxes.scad>
|
||||
include <NopSCADlib/vitamins/pcb.scad>
|
||||
|
||||
module PCB()
|
||||
|
||||
module PCB(Add_Audio_Jack = true)
|
||||
{
|
||||
color([0.0, 1.0, 0.0])
|
||||
difference()
|
||||
@@ -16,23 +19,57 @@ module PCB()
|
||||
Screw_Holes_M3();
|
||||
}
|
||||
|
||||
translate([0, 0, PCB_T/2]) translate(Power_Plug) Power_Plug();
|
||||
translate([0, 0, PCB_T/2]) translate(Button) Button();
|
||||
translate([0, 0, PCB_T/2]) translate(Power_Plug) Power_Plug();
|
||||
translate([0, 0, PCB_T/2]) translate(Button) Button();
|
||||
translate([0, 0, PCB_T/2]) translate(USB_C) usb_C(false);
|
||||
translate([0, 0, PCB_T/2]) translate(MOLEX) MOLEX_2x2P(false);
|
||||
if(Add_Audio_Jack) {
|
||||
translate([0, 0, PCB_T/2]) translate(Audio_Jack) Audio_Jack(false);
|
||||
}
|
||||
for (i = MIDI_Plugs) {
|
||||
translate(i) MIDI_Plug_MABPM_5S(false);
|
||||
}
|
||||
// translate([0, 0, PCB_T/2]) translate(Rotary_Encoder) mirror([0, 0, 1]) potentiometer(KY_040_encoder, 1, 10);
|
||||
}
|
||||
|
||||
module PCB_Cutouts_Top()
|
||||
module PCB_Cutouts_Top_Plate()
|
||||
{
|
||||
translate([0, 0, PCB_T/2-0.3]) translate(Power_Plug) Power_Plug_Cutout();
|
||||
translate([0, 0, PCB_T/2-0.5]) translate(Button) Button_Cutout();
|
||||
translate([0, 0, PCB_T/2-0.0]) translate([0, 33, 0]) USB_Cutout();
|
||||
translate([0, 0, PCB_T/2]) translate(USB_C) usb_C(true);
|
||||
translate([0, 0, PCB_T/2-0.3]) translate(Power_Plug) Power_Plug_Cutout();
|
||||
translate([0, 0, PCB_T/2]) translate(Audio_Jack) Audio_Jack(true);
|
||||
translate(MOLEX)
|
||||
translate([0, 10, PCB_T/2+Spacer_Top_Height+Cover_T_T/4-eps]) cube([5, 18, Cover_T_T/2], center=true);
|
||||
|
||||
for (i = MIDI_Plugs) {
|
||||
translate([0, 0, Cover_T_T/2])
|
||||
translate(i)
|
||||
scale([1, 1, 10]) MIDI_Plug_Cutout();
|
||||
}
|
||||
}
|
||||
|
||||
module PCB_Cutouts_Top_Wall(Add_Audio_Jack = true)
|
||||
{
|
||||
translate([0, 0, PCB_T/2]) translate(USB_C) usb_C(true);
|
||||
translate([0, 0, PCB_T/2-0.3]) translate(Power_Plug) Power_Plug_Cutout();
|
||||
if(Add_Audio_Jack) {
|
||||
translate([0, 0, PCB_T/2]) translate(Audio_Jack) Audio_Jack(true);
|
||||
}
|
||||
translate(MOLEX)
|
||||
translate([0, 10, PCB_T/2+Spacer_Top_Height+Cover_T_T/4-eps]) cube([5, 18, Cover_T_T/2], center=true);
|
||||
|
||||
for (i = MIDI_Plugs) {
|
||||
translate(i) MIDI_Plug_MABPM_5S(true);
|
||||
}
|
||||
}
|
||||
|
||||
module PCB_Cutouts_From_Bottom()
|
||||
{
|
||||
translate([0, 0, PCB_T/2-0.3 + 09.7]) translate(Power_Plug) Power_Plug_Cutout_For_Bottom();
|
||||
translate([0, 0, PCB_T/2-0.5]) translate(Button) Button_Cutout_For_Bottom();
|
||||
translate([0, 0, 0]) translate([0, 33, 0]) USB_Cutout_Small();
|
||||
translate([0, 0, 0]) translate([0, 33, 0]) Adafruit_QT_Py_Cutout();
|
||||
translate([0, 0, PCB_T/2]) translate(USB_C) usb_C(true);
|
||||
translate([0, 0, PCB_T/2]) translate(Power_Plug) Power_Plug(true);
|
||||
translate([0, 0, PCB_T/2]) translate(Audio_Jack) Audio_Jack(true);
|
||||
for (i = MIDI_Plugs) {
|
||||
translate(i) MIDI_Plug_MABPM_5S(true);
|
||||
}
|
||||
}
|
||||
|
||||
module Screw_Holes_M3()
|
||||
@@ -42,6 +79,14 @@ module Screw_Holes_M3()
|
||||
}
|
||||
}
|
||||
|
||||
module Screw_Pits_M3(depth)
|
||||
{
|
||||
translate([0, 0, -depth])
|
||||
for (i = Mounting_Holes) {
|
||||
translate(i) cylinder(d=Screw_Pit_M3, h=100, center=false, $fn=100);
|
||||
}
|
||||
}
|
||||
|
||||
module Screw_Rings_M3()
|
||||
{
|
||||
for (i = Mounting_Holes) {
|
||||
@@ -61,8 +106,9 @@ module Spacer(height)
|
||||
module Spacer_Top()
|
||||
{
|
||||
color([0.3, 0.6, 0.0])
|
||||
for (i = Mounting_Holes) {
|
||||
translate(i) Spacer(Spacer_Top_Height);
|
||||
// for (i = Mounting_Holes) {
|
||||
for (i = [0:len(Mounting_Holes)-1]) {
|
||||
translate(Mounting_Holes[i]) Spacer(Spacer_Top_Heights[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,8 +159,10 @@ module Button_Cutout_For_Bottom()
|
||||
cube([3*Button_X, 3.5, 3.5], center=true);
|
||||
}
|
||||
|
||||
module Power_Plug()
|
||||
module Power_Plug(cutout = false)
|
||||
{
|
||||
Scale_Cube = cutout == true ? [2, 1.1, 1] : [1, 1, 1];
|
||||
|
||||
color([0.1, 0.1, 0.1])
|
||||
translate([10.625, -2.4, 0])
|
||||
difference()
|
||||
@@ -122,14 +170,18 @@ module Power_Plug()
|
||||
translate([-3.5, 0, 0])
|
||||
union()
|
||||
{
|
||||
scale(Scale_Cube)
|
||||
translate([3.5/2, 0, 11/2]) cube([ 3.5, 9, 11.0], center=true);
|
||||
translate([-10.9/2, 0, 6.4/2]) cube([10.9, 9, 6.4], center=true);
|
||||
translate([-10.9/2, 0, 6.4]) rotate([0, 90, 0]) cylinder(h=10.9, d=9, center=true, $fn=60);
|
||||
}
|
||||
|
||||
translate([-9.2/2, 0, 6.4])
|
||||
rotate([0, 90, 0])
|
||||
cylinder(h=9.2+1, d=6.3, center=true, $fn=60);
|
||||
if(cutout == false)
|
||||
{
|
||||
translate([-9.2/2, 0, 6.4])
|
||||
rotate([0, 90, 0])
|
||||
cylinder(h=9.2+1, d=6.3, center=true, $fn=60);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,8 +194,20 @@ module Power_Plug_Cutout()
|
||||
Plug_X = 30;
|
||||
Plug_Z = 20;
|
||||
|
||||
translate([+Plug_X/2-Plug_D+5.08, -2.4, -Plug_Z/2 + Plug_H])
|
||||
cube([Plug_X, Plug_W, Plug_Z], center=true);
|
||||
// #translate([0, -2.4, -Plug_Z/2 + Plug_H])
|
||||
// cube([Plug_X, Plug_W, Plug_Z], center=true);
|
||||
|
||||
translate([0, 0, 0.5])
|
||||
translate([10.625, -2.4, 0])
|
||||
translate([-3.5, 0, 0])
|
||||
{
|
||||
translate([3.5/2, 0, 11/2-4/2]) scale([1.2, 1.2, 1.0]) cube([ 3.5, 9, 11.0+4], center=true);
|
||||
intersection()
|
||||
{
|
||||
translate([3.5/2, 0, 11/2-4/2]) scale([1.2, 1.2, 1.0]) cube([ 25, 9, 11.0+4], center=true);
|
||||
translate([-10.9/2, 0, 6.4]) scale([1.0, 1.5, 1.023]) rotate([0, 90, 0]) cylinder(h=10.9, d=9, center=true, $fn=60);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module Power_Plug_Cutout_For_Bottom()
|
||||
@@ -163,46 +227,137 @@ module Power_Plug_Cutout_For_Bottom()
|
||||
cylinder(d=11, h=Plug_X, center=true, $fn=60);
|
||||
}
|
||||
|
||||
module USB_Cutout()
|
||||
module MOLEX_2x2P(cutout = false)
|
||||
{
|
||||
USB_H = 3.2;
|
||||
USB_W = 9;
|
||||
USB_D = 22;
|
||||
|
||||
USB_Y = 9.5;
|
||||
USB_Z = 20;
|
||||
|
||||
|
||||
PCB_H = 1.6;
|
||||
PCB_W = 18;
|
||||
PCB_D = 22;
|
||||
if(cutout == false)
|
||||
{
|
||||
color([0.76, 0.76, 0.76])
|
||||
{
|
||||
translate([-1.5, -1.5, -3.18]) rotate([0, 0, 45]) cylinder(d=1.02, h=8.7, center=false, $fn=4);
|
||||
translate([+1.5, -1.5, -3.18]) rotate([0, 0, 45]) cylinder(d=1.02, h=8.7, center=false, $fn=4);
|
||||
|
||||
PCB_X = 40;
|
||||
PCB_Z = 5;
|
||||
|
||||
translate([0, 0, -USB_Z/2 + PCB_H + USB_H - 0.5]) cube([USB_D, USB_Y, USB_Z], center=true);
|
||||
// translate([-PCB_X/2+PCB_D, 0, -PCB_Z/2 + PCB_H]) cube([PCB_X, PCB_W, PCB_Z], center=true);
|
||||
translate([-1.5, -1.5, 8.7-3.18-0.7*1.02/2]) rotate([-90, 45, 0]) cylinder(d=1.02, h=10, center=false, $fn=4);
|
||||
translate([+1.5, -1.5, 8.7-3.18-0.7*1.02/2]) rotate([-90, 45, 0]) cylinder(d=1.02, h=10, center=false, $fn=4);
|
||||
|
||||
translate([-1.5, +1.5, -3.18]) rotate([0, 0, 45]) cylinder(d=1.02, h=3.18, center=false, $fn=4);
|
||||
translate([+1.5, +1.5, -3.18]) rotate([0, 0, 45]) cylinder(d=1.02, h=3.18, center=false, $fn=4);
|
||||
|
||||
translate([-1.5, +1.5, 7.4/2 - 1.25-0.3]) rotate([-90, 45, 0]) cylinder(d=1.02, h=10-3, center=false, $fn=4);
|
||||
translate([+1.5, +1.5, 7.4/2 - 1.25-0.3]) rotate([-90, 45, 0]) cylinder(d=1.02, h=10-3, center=false, $fn=4);
|
||||
}
|
||||
}
|
||||
|
||||
color([0.2, 0.2, 0.2])
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
if(cutout == false)
|
||||
{
|
||||
translate([0, +5.82, -3.18]) rotate([0, 0, 45]) cylinder(d=3.2, h=3.18, center=false, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
translate([0, +7.57/2+0.828, 7.4/2]) cube([10.1 , 7.57, 7.4], center=true);
|
||||
translate([0, +7.57+0.828 + 1.28/2, 7.4/2]) cube([ 9.75, 1.28, 7.4], center=true);
|
||||
|
||||
translate([0, +7.57+0.828 + 1.28, 7.4/2]) hull()
|
||||
{
|
||||
translate([0, 0, 0]) cube([ 9.75, 0.01, 7.4], center=true);
|
||||
translate([0, 1.3, 0]) cube([ 7.15, 0.01, 7.4], center=true);
|
||||
}
|
||||
|
||||
}
|
||||
if(cutout == false)
|
||||
{
|
||||
translate([0, 10, 7.4/2])
|
||||
for (i = [-1:2:1])
|
||||
{
|
||||
for (j = [-1:2:1])
|
||||
{
|
||||
translate([i*(2.5/2 + 0.3), 0, j*(2.5/2 + 0.3)]) cube([2.5, 7, 2.5], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module USB_Cutout_Small()
|
||||
module Audio_Jack(cutout = false)
|
||||
{
|
||||
USB_H = 3.2;
|
||||
USB_W = 9;
|
||||
USB_D = 22;
|
||||
|
||||
USB_Y = 9.5;
|
||||
USB_Z = 3.5;
|
||||
|
||||
|
||||
PCB_H = 1.6;
|
||||
PCB_W = 18;
|
||||
PCB_D = 22;
|
||||
color([0.2, 0.2, 0.2])
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
translate([0, -11.5/2+4.25, 5.2/2]) cube([6.5, 11.5, 5.2], center=true);
|
||||
translate([0, -4.25-2.5, 5/2])
|
||||
rotate([90, 0, 0]) cylinder(d=5, h=2.5, center=false);
|
||||
}
|
||||
|
||||
PCB_X = 40;
|
||||
PCB_Z = 5;
|
||||
|
||||
translate([0, 0.5, USB_Z/2 + PCB_H + 1.0])
|
||||
rotate([0, 90, 0])
|
||||
roundedBox([USB_Z, USB_Y, USB_D], 1, true, $fn = $preview ? 32 : 100);
|
||||
// cube([USB_D, USB_Y, USB_Z], center=true);
|
||||
translate([0, -4.25+8, 5/2])
|
||||
rotate([90, 0, 0]) cylinder(d=3.6, h=20, center=false);
|
||||
}
|
||||
|
||||
if(cutout == true)
|
||||
{
|
||||
translate([0, -4.25+8, 5/2])
|
||||
rotate([90, 0, 0]) cylinder(d=6, h=20, center=false);
|
||||
}
|
||||
}
|
||||
|
||||
module MIDI_Plug_MABPM_5S(cutout = false)
|
||||
{
|
||||
color([0.76, 0.76, 0.76])
|
||||
{
|
||||
translate([+0.0, +0.0, -4.2]) rotate([0, 0, 45]) cylinder(d=1.4, h=8.2, center=false, $fn=4);
|
||||
translate([+5.0, +2.5, -4.2]) rotate([0, 0, 45]) cylinder(d=1.4, h=8.2, center=false, $fn=4);
|
||||
translate([-5.0, +2.5, -4.2]) rotate([0, 0, 45]) cylinder(d=1.4, h=8.2, center=false, $fn=4);
|
||||
translate([+7.5, +0.0, -4.2]) rotate([0, 0, 45]) cylinder(d=1.4, h=8.2, center=false, $fn=4);
|
||||
translate([-7.5, +0.0, -4.2]) rotate([0, 0, 45]) cylinder(d=1.4, h=8.2, center=false, $fn=4);
|
||||
|
||||
translate([+5.0, -10.0, -4.2]) rotate([0, 0, 45]) cylinder(d=1.4, h=4.2, center=false, $fn=4);
|
||||
translate([-5.0, -10.0, -4.2]) rotate([0, 0, 45]) cylinder(d=1.4, h=4.2, center=false, $fn=4);
|
||||
}
|
||||
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
color([0.2, 0.2, 0.2])
|
||||
{
|
||||
translate([0, -5, 10.2/2]) cube([18, 10, 10.2], center=true);
|
||||
translate([0, -5, 10.2]) rotate([90, 0, 0]) cylinder(h=10, d=15.7, center=true, $fn = $preview ? 32 : 100);
|
||||
translate([+0.5, -0.5-10-0, 20.35/2]) cube([19.5, 1.0, 20.35], center=true);
|
||||
translate([-0.5, -0.5-10-1, 20.35/2]) cube([19.5, 1.0, 20.35], center=true);
|
||||
}
|
||||
color([0.76, 0.76, 0.76])
|
||||
difference()
|
||||
{
|
||||
translate([0, -0.1/2-10-2-eps, 20.35/2]) cube([18, 0.1, 20.35], center=true);
|
||||
translate([0, -10-2, 20.35/2]) rotate([90, 0, 0]) cylinder(h=5, d=14, center=true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
}
|
||||
|
||||
union()
|
||||
{
|
||||
translate([0, -10-2, 20.35/2])
|
||||
rotate([90, 0, 0])
|
||||
difference()
|
||||
{
|
||||
cylinder(h= 5, d=13.60, center=true, $fn = $preview ? 32 : 100);
|
||||
cylinder(h=10, d=11.44, center=true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
|
||||
translate([0, 0, 15.0]) cube([2.5, 100, 2], center=true);
|
||||
translate([0, 100/2-10+eps, 17.0]) cube([2.5, 100, 4], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
if(cutout == true)
|
||||
{
|
||||
translate([0, 0, 1])
|
||||
union()
|
||||
{
|
||||
translate([0, -10-2, 20.35/2]) rotate([90, 0, 0]) cylinder(h=50, d=18, center=true, $fn = $preview ? 32 : 100);
|
||||
translate([0, -10-2, 20.35/2+9]) cube([18, 50, 18], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
452
Python/Event_Compare/Event_Compare.py
Normal file
452
Python/Event_Compare/Event_Compare.py
Normal file
@@ -0,0 +1,452 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
MIDI Test Validator
|
||||
Compares MIDI events from USB MIDI device with firmware event counters
|
||||
"""
|
||||
|
||||
import serial
|
||||
import time
|
||||
import rtmidi
|
||||
import random
|
||||
|
||||
# Serial port configuration - adjust COM port as needed
|
||||
FIRMWARE_PORT = "COM9" # Firmware USB serial port
|
||||
BAUD_RATE = 115200
|
||||
|
||||
# MIDI device name to look for
|
||||
MIDI_DEVICE_NAME = "Midilink" # Will search for devices containing this string
|
||||
|
||||
# MIDI Octave to filter (0-10, or None for all octaves)
|
||||
MIDI_OCTAVE = 1 # Only count notes in octave 4 (middle C is C4)
|
||||
|
||||
# MIDI Channel (0-15, where 0 = channel 1)
|
||||
MIDI_CHANNEL = 0
|
||||
|
||||
# Test data generation settings
|
||||
TEST_NUM_EVENTS = 200000 # Total number of Note ON events to generate
|
||||
TEST_MIN_DELAY_MS = 5 # Minimum delay between events (ms)
|
||||
TEST_MAX_DELAY_MS = 30 # Maximum delay between events (ms)
|
||||
TEST_MAX_OVERLAPPING = 300 # Maximum number of overlapping notes
|
||||
|
||||
# Debug output
|
||||
DEBUG_ENABLED = False # Set to False to disable debug output
|
||||
|
||||
# MIDI definitions
|
||||
MIDI_NOTE_ON = 0x90
|
||||
MIDI_NOTE_OFF = 0x80
|
||||
|
||||
class MidiEventCounter:
|
||||
def __init__(self):
|
||||
self.red_on = 0
|
||||
self.red_off = 0
|
||||
self.green_on = 0
|
||||
self.green_off = 0
|
||||
self.blue_on = 0
|
||||
self.blue_off = 0
|
||||
|
||||
def add_event(self, note, velocity, is_note_on, debug=False):
|
||||
# Calculate octave (MIDI note 0-127, octave = note // 12, where C4 = MIDI note 60)
|
||||
# MIDI octaves: C-1=0-11, C0=12-23, C1=24-35, C2=36-47, C3=48-59, C4=60-71, etc.
|
||||
octave = note // 12 - 1 # Adjust so C4 = octave 4
|
||||
note_in_octave = note % 12
|
||||
|
||||
if debug:
|
||||
note_names = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']
|
||||
note_name = f"{note_names[note_in_octave]}{octave}"
|
||||
print(f"[DEBUG] Note {note} = {note_name} (Octave: {octave}, Note in octave: {note_in_octave})")
|
||||
|
||||
# Check if octave matches (if MIDI_OCTAVE is set)
|
||||
if MIDI_OCTAVE is not None and octave != MIDI_OCTAVE:
|
||||
if debug:
|
||||
print(f"[DEBUG] -> Ignoring: Wrong octave (expected {MIDI_OCTAVE}, got {octave})")
|
||||
return
|
||||
|
||||
# Determine color based on note (adjust to your config)
|
||||
# Assuming C=Red, D=Green, E=Blue
|
||||
color_mapped = None
|
||||
|
||||
if note_in_octave in [0, 1]: # C, C# = Red
|
||||
if is_note_on:
|
||||
self.red_on += 1
|
||||
else:
|
||||
self.red_off += 1
|
||||
color_mapped = "RED"
|
||||
elif note_in_octave in [2, 3]: # D, D# = Green
|
||||
if is_note_on:
|
||||
self.green_on += 1
|
||||
else:
|
||||
self.green_off += 1
|
||||
color_mapped = "GREEN"
|
||||
elif note_in_octave in [4, 5]: # E, F = Blue
|
||||
if is_note_on:
|
||||
self.blue_on += 1
|
||||
else:
|
||||
self.blue_off += 1
|
||||
color_mapped = "BLUE"
|
||||
else:
|
||||
color_mapped = "NONE (ignored)"
|
||||
|
||||
if debug:
|
||||
event_type = "ON " if is_note_on else "OFF"
|
||||
print(f"[DEBUG] Mapped Note {note} -> {color_mapped} {event_type}")
|
||||
|
||||
def print_summary(self):
|
||||
print("\nMIDI Device Event Counts:")
|
||||
print(f" Red - ON: {self.red_on:6d}, OFF: {self.red_off:6d}")
|
||||
print(f" Green - ON: {self.green_on:6d}, OFF: {self.green_off:6d}")
|
||||
print(f" Blue - ON: {self.blue_on:6d}, OFF: {self.blue_off:6d}")
|
||||
|
||||
def midi_callback(message, data):
|
||||
"""Callback for MIDI input - called when MIDI messages are received"""
|
||||
event_counter = data
|
||||
midi_message = message[0]
|
||||
|
||||
if len(midi_message) >= 3:
|
||||
status = midi_message[0]
|
||||
note = midi_message[1]
|
||||
velocity = midi_message[2]
|
||||
|
||||
# Check for Note On or Note Off
|
||||
if (status & 0xF0) == MIDI_NOTE_ON or (status & 0xF0) == MIDI_NOTE_OFF:
|
||||
channel = status & 0x0F
|
||||
is_note_on = ((status & 0xF0) == MIDI_NOTE_ON and velocity > 0)
|
||||
event_type = "Note ON" if is_note_on else "Note OFF"
|
||||
|
||||
if DEBUG_ENABLED:
|
||||
print(f"[MIDI] {event_type}, Channel: {channel}, Note: {note}, Velocity: {velocity}")
|
||||
|
||||
event_counter.add_event(note, velocity, is_note_on, debug=DEBUG_ENABLED)
|
||||
|
||||
def find_midi_device(device_name):
|
||||
"""Find MIDI input device by name"""
|
||||
midiin = rtmidi.MidiIn()
|
||||
ports = midiin.get_ports()
|
||||
|
||||
print(f"\nAvailable MIDI Input devices:")
|
||||
for i, port in enumerate(ports):
|
||||
print(f" [{i}] {port}")
|
||||
|
||||
# Search for device containing the name
|
||||
for i, port in enumerate(ports):
|
||||
if device_name.lower() in port.lower():
|
||||
print(f"\n✓ Found '{device_name}' input at port {i}: {port}")
|
||||
return i
|
||||
|
||||
print(f"\n✗ Could not find MIDI input device containing '{device_name}'")
|
||||
return None
|
||||
|
||||
def find_midi_output_device(device_name):
|
||||
"""Find MIDI output device by name"""
|
||||
midiout = rtmidi.MidiOut()
|
||||
ports = midiout.get_ports()
|
||||
|
||||
print(f"\nAvailable MIDI Output devices:")
|
||||
for i, port in enumerate(ports):
|
||||
print(f" [{i}] {port}")
|
||||
|
||||
# Search for device containing the name
|
||||
for i, port in enumerate(ports):
|
||||
if device_name.lower() in port.lower():
|
||||
print(f"\n✓ Found '{device_name}' output at port {i}: {port}")
|
||||
return i
|
||||
|
||||
print(f"\n✗ Could not find MIDI output device containing '{device_name}'")
|
||||
return None
|
||||
|
||||
def generate_test_data(midiout):
|
||||
"""Generate random MIDI test data with overlapping notes"""
|
||||
# Notes to use: C, C#, D, D#, E, F (Red, Green, Blue colors with alternates)
|
||||
# Calculate MIDI note numbers for the configured octave
|
||||
base_note = (MIDI_OCTAVE + 1) * 12 # Base note for the octave
|
||||
|
||||
notes = {
|
||||
'C': base_note + 0, # Red
|
||||
'C#': base_note + 1, # Red alternate
|
||||
'D': base_note + 2, # Green
|
||||
'D#': base_note + 3, # Green alternate
|
||||
'E': base_note + 4, # Blue
|
||||
'F': base_note + 5 # Blue alternate
|
||||
}
|
||||
|
||||
note_names = list(notes.keys())
|
||||
note_values = list(notes.values())
|
||||
|
||||
print(f"\nGenerating {TEST_NUM_EVENTS} random MIDI events...")
|
||||
print(f"Octave: {MIDI_OCTAVE}, Channel: {MIDI_CHANNEL + 1}")
|
||||
print(f"Using notes: {', '.join([f'{name}({notes[name]})' for name in note_names])}")
|
||||
print("="*50 + "\n")
|
||||
|
||||
active_notes = [] # Track currently active (on but not yet off) notes
|
||||
event_queue = [] # Queue of all events to send
|
||||
|
||||
# Generate NOTE ON events
|
||||
for i in range(TEST_NUM_EVENTS):
|
||||
note_idx = random.randint(0, len(note_values) - 1)
|
||||
note = note_values[note_idx]
|
||||
velocity = random.randint(64, 127) # Random velocity
|
||||
|
||||
event_queue.append({
|
||||
'type': 'on',
|
||||
'note': note,
|
||||
'note_name': note_names[note_idx],
|
||||
'velocity': velocity
|
||||
})
|
||||
active_notes.append(note)
|
||||
|
||||
# Randomly send some NOTE OFF events if we have overlapping notes
|
||||
while len(active_notes) >= TEST_MAX_OVERLAPPING:
|
||||
off_note = active_notes.pop(0)
|
||||
off_note_name = note_names[note_values.index(off_note)]
|
||||
event_queue.append({
|
||||
'type': 'off',
|
||||
'note': off_note,
|
||||
'note_name': off_note_name,
|
||||
'velocity': 0
|
||||
})
|
||||
|
||||
# Random chance to send an OFF event even if under max
|
||||
if len(active_notes) > 0 and random.random() < 0.4:
|
||||
off_note = active_notes.pop(random.randint(0, len(active_notes) - 1))
|
||||
off_note_name = note_names[note_values.index(off_note)]
|
||||
event_queue.append({
|
||||
'type': 'off',
|
||||
'note': off_note,
|
||||
'note_name': off_note_name,
|
||||
'velocity': 0
|
||||
})
|
||||
|
||||
# Send remaining NOTE OFF events
|
||||
while len(active_notes) > 0:
|
||||
off_note = active_notes.pop(0)
|
||||
off_note_name = note_names[note_values.index(off_note)]
|
||||
event_queue.append({
|
||||
'type': 'off',
|
||||
'note': off_note,
|
||||
'note_name': off_note_name,
|
||||
'velocity': 0
|
||||
})
|
||||
|
||||
# Send all events with random delays
|
||||
total_events = len(event_queue)
|
||||
for idx, event in enumerate(event_queue):
|
||||
if event['type'] == 'on':
|
||||
message = [MIDI_NOTE_ON | MIDI_CHANNEL, event['note'], event['velocity']]
|
||||
if DEBUG_ENABLED:
|
||||
print(f"→ Note ON: {event['note_name']:3s} (MIDI {event['note']:3d}), Velocity: {event['velocity']:3d}")
|
||||
else:
|
||||
message = [MIDI_NOTE_OFF | MIDI_CHANNEL, event['note'], event['velocity']]
|
||||
if DEBUG_ENABLED:
|
||||
print(f"← Note OFF: {event['note_name']:3s} (MIDI {event['note']:3d})")
|
||||
|
||||
midiout.send_message(message)
|
||||
|
||||
# Show progress bar (only if debug is disabled to avoid cluttering output)
|
||||
if not DEBUG_ENABLED:
|
||||
progress = (idx + 1) / total_events
|
||||
bar_length = 40
|
||||
filled_length = int(bar_length * progress)
|
||||
bar = '█' * filled_length + '░' * (bar_length - filled_length)
|
||||
print(f'\rProgress: [{bar}] {idx + 1}/{total_events} events ({progress*100:.1f}%)', end='', flush=True)
|
||||
|
||||
# Random delay before next event
|
||||
delay_ms = random.randint(TEST_MIN_DELAY_MS, TEST_MAX_DELAY_MS)
|
||||
time.sleep(delay_ms / 1000.0)
|
||||
|
||||
if not DEBUG_ENABLED:
|
||||
print() # New line after progress bar
|
||||
|
||||
print("\n" + "="*50)
|
||||
print("✓ Test data generation complete")
|
||||
print("="*50)
|
||||
|
||||
def read_firmware_counters(ser_fw):
|
||||
"""Send 'a' command and read firmware event counters"""
|
||||
# Clear input buffer
|
||||
ser_fw.reset_input_buffer()
|
||||
|
||||
# Send command
|
||||
ser_fw.write(b'a\r')
|
||||
time.sleep(0.2)
|
||||
|
||||
# Read all available data
|
||||
response = ser_fw.read(ser_fw.in_waiting).decode('ascii')
|
||||
|
||||
# Split by \r to get individual lines
|
||||
lines = response.split('\r')
|
||||
|
||||
counters = {}
|
||||
colors = ['red', 'green', 'blue']
|
||||
|
||||
line_idx = 0
|
||||
for color in colors:
|
||||
if line_idx < len(lines):
|
||||
line = lines[line_idx].strip()
|
||||
if ';' in line:
|
||||
parts = line.split(';')
|
||||
on_count = int(parts[0].strip())
|
||||
off_count = int(parts[1].strip())
|
||||
counters[color] = {'on': on_count, 'off': off_count}
|
||||
else:
|
||||
print(f"Warning: Could not parse line for {color}: {line}")
|
||||
counters[color] = {'on': 0, 'off': 0}
|
||||
line_idx += 1
|
||||
else:
|
||||
print(f"Warning: No data for {color}")
|
||||
counters[color] = {'on': 0, 'off': 0}
|
||||
|
||||
return counters
|
||||
|
||||
def compare_results(midi_counts, firmware_counts):
|
||||
"""Compare MIDI device and firmware event counts"""
|
||||
print("\nFirmware Event Counts:")
|
||||
print(f" Red - ON: {firmware_counts['red']['on']:6d}, OFF: {firmware_counts['red']['off']:6d}")
|
||||
print(f" Green - ON: {firmware_counts['green']['on']:6d}, OFF: {firmware_counts['green']['off']:6d}")
|
||||
print(f" Blue - ON: {firmware_counts['blue']['on']:6d}, OFF: {firmware_counts['blue']['off']:6d}")
|
||||
|
||||
print("\n" + "="*50)
|
||||
print("COMPARISON RESULTS:")
|
||||
print("="*50)
|
||||
|
||||
all_match = True
|
||||
|
||||
# Compare Red
|
||||
if midi_counts.red_on == firmware_counts['red']['on'] and \
|
||||
midi_counts.red_off == firmware_counts['red']['off']:
|
||||
print("Red: PASS ✓")
|
||||
else:
|
||||
print(f"Red: FAIL ✗ (MIDI: {midi_counts.red_on}/{midi_counts.red_off}, "
|
||||
f"Firmware: {firmware_counts['red']['on']}/{firmware_counts['red']['off']})")
|
||||
all_match = False
|
||||
|
||||
# Compare Green
|
||||
if midi_counts.green_on == firmware_counts['green']['on'] and \
|
||||
midi_counts.green_off == firmware_counts['green']['off']:
|
||||
print("Green: PASS ✓")
|
||||
else:
|
||||
print(f"Green: FAIL ✗ (MIDI: {midi_counts.green_on}/{midi_counts.green_off}, "
|
||||
f"Firmware: {firmware_counts['green']['on']}/{firmware_counts['green']['off']})")
|
||||
all_match = False
|
||||
|
||||
# Compare Blue
|
||||
if midi_counts.blue_on == firmware_counts['blue']['on'] and \
|
||||
midi_counts.blue_off == firmware_counts['blue']['off']:
|
||||
print("Blue: PASS ✓")
|
||||
else:
|
||||
print(f"Blue: FAIL ✗ (MIDI: {midi_counts.blue_on}/{midi_counts.blue_off}, "
|
||||
f"Firmware: {firmware_counts['blue']['on']}/{firmware_counts['blue']['off']})")
|
||||
all_match = False
|
||||
|
||||
print("="*50)
|
||||
|
||||
if all_match:
|
||||
print("✓ ALL TESTS PASSED")
|
||||
else:
|
||||
print("✗ SOME TESTS FAILED")
|
||||
|
||||
return all_match
|
||||
|
||||
def main():
|
||||
print("MIDI Test Validator")
|
||||
print("="*50)
|
||||
print("\nSelect mode:")
|
||||
print(" 1. Manual mode (record MIDI events manually)")
|
||||
print(" 2. Auto-test mode (send random test data)")
|
||||
|
||||
mode = input("\nEnter mode (1 or 2): ").strip()
|
||||
|
||||
auto_test = (mode == '2')
|
||||
|
||||
# Find and open MIDI input device
|
||||
midi_in_port = find_midi_device(MIDI_DEVICE_NAME)
|
||||
if midi_in_port is None:
|
||||
print("\nPlease check:")
|
||||
print(" 1. MIDI device is connected")
|
||||
print(" 2. MIDI_DEVICE_NAME variable matches your device")
|
||||
return
|
||||
|
||||
midiin = rtmidi.MidiIn()
|
||||
event_counter = MidiEventCounter()
|
||||
|
||||
# Set callback and open input port
|
||||
midiin.set_callback(midi_callback, data=event_counter)
|
||||
midiin.open_port(midi_in_port)
|
||||
print(f"✓ Opened MIDI input port")
|
||||
|
||||
# Find and open MIDI output device (for auto-test mode)
|
||||
midiout = None
|
||||
if auto_test:
|
||||
midi_out_port = find_midi_output_device(MIDI_DEVICE_NAME)
|
||||
if midi_out_port is None:
|
||||
print("\nCould not find MIDI output device for auto-test mode")
|
||||
midiin.close_port()
|
||||
return
|
||||
|
||||
midiout = rtmidi.MidiOut()
|
||||
midiout.open_port(midi_out_port)
|
||||
print(f"✓ Opened MIDI output port")
|
||||
|
||||
# Open firmware serial port
|
||||
try:
|
||||
ser_firmware = serial.Serial(FIRMWARE_PORT, BAUD_RATE, timeout=1)
|
||||
print(f"✓ Connected to firmware on {FIRMWARE_PORT}")
|
||||
except serial.SerialException as e:
|
||||
print(f"Error opening serial port: {e}")
|
||||
midiin.close_port()
|
||||
if midiout:
|
||||
midiout.close_port()
|
||||
return
|
||||
|
||||
# Clear firmware counters at startup
|
||||
print("\nClearing firmware counters...")
|
||||
read_firmware_counters(ser_firmware) # This reads and resets the counters
|
||||
print("✓ Firmware counters cleared")
|
||||
|
||||
if MIDI_OCTAVE is not None:
|
||||
print(f"\nConfiguration: Filtering for MIDI Octave {MIDI_OCTAVE} only")
|
||||
else:
|
||||
print(f"\nConfiguration: Accepting all MIDI octaves")
|
||||
|
||||
print(f"Debug output: {'ENABLED' if DEBUG_ENABLED else 'DISABLED'}")
|
||||
|
||||
if auto_test:
|
||||
# Auto-test mode: send test data
|
||||
print("\n" + "="*50)
|
||||
print("AUTO-TEST MODE")
|
||||
print("="*50)
|
||||
time.sleep(0.5) # Small delay to ensure everything is ready
|
||||
|
||||
generate_test_data(midiout)
|
||||
|
||||
# Give some time for last events to be processed
|
||||
time.sleep(0.5)
|
||||
else:
|
||||
# Manual mode: wait for user input
|
||||
print("\n" + "="*50)
|
||||
print("MANUAL MODE - Recording MIDI events...")
|
||||
print("Press ENTER to stop recording and compare results")
|
||||
print("="*50 + "\n")
|
||||
|
||||
try:
|
||||
input() # Wait for user to press enter
|
||||
except KeyboardInterrupt:
|
||||
print("\n\nStopped by user (Ctrl+C)")
|
||||
|
||||
# Display results
|
||||
event_counter.print_summary()
|
||||
|
||||
# Read firmware counters
|
||||
print("\nReading firmware counters...")
|
||||
firmware_counts = read_firmware_counters(ser_firmware)
|
||||
|
||||
# Compare results
|
||||
compare_results(event_counter, firmware_counts)
|
||||
|
||||
# Close ports
|
||||
midiin.close_port()
|
||||
if midiout:
|
||||
midiout.close_port()
|
||||
ser_firmware.close()
|
||||
print("\nPorts closed.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -26,6 +26,9 @@ if not exist "Buffer_Reader.py" (
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
:: Initialize Repeat_Counter for file naming
|
||||
set /a repeat_counter=1
|
||||
|
||||
:: Check command line arguments
|
||||
if "%~1"=="" goto :interactive_mode
|
||||
if "%~1"=="/?" goto :show_help
|
||||
@@ -33,8 +36,8 @@ if "%~1"=="--help" goto :show_help
|
||||
|
||||
:: Direct mode - use command line arguments
|
||||
set "port_input=%~1"
|
||||
set "image_file=%~2"
|
||||
set "csv_file=%~3"
|
||||
set "image_file_base=%~2"
|
||||
set "csv_file_base=%~3"
|
||||
|
||||
:: Process port input - add COM prefix if not present
|
||||
if "!port_input:~0,3!"=="COM" (
|
||||
@@ -67,20 +70,31 @@ if "!port_input:~0,3!"=="COM" (
|
||||
)
|
||||
|
||||
:: Get image filename (optional)
|
||||
set "image_file="
|
||||
set /p "image_file=Enter image filename (press Enter for default): "
|
||||
set "image_file_base="
|
||||
set /p "image_file_base=Enter image filename (press Enter for default): "
|
||||
|
||||
:: Get CSV filename (optional)
|
||||
set "csv_file="
|
||||
set /p "csv_file=Enter CSV filename (press Enter for default): "
|
||||
set "csv_file_base="
|
||||
set /p "csv_file_base=Enter CSV filename (press Enter for default): "
|
||||
|
||||
|
||||
:set_default_files
|
||||
:: Get current timestamp for default filenames
|
||||
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
|
||||
set "timestamp=%dt:~0,4%%dt:~4,2%%dt:~6,2%_%dt:~8,2%%dt:~10,2%%dt:~12,2%"
|
||||
if "!image_file_base!"=="" set "image_file_base=capture"
|
||||
if "!csv_file_base!"=="" set "csv_file_base=pixels"
|
||||
|
||||
:: Check if image_file_base has an extension and remove it
|
||||
for %%f in ("!image_file_base!") do (
|
||||
set "image_file_base=%%~nf"
|
||||
)
|
||||
|
||||
:: Check if image_file_base has an extension and remove it
|
||||
for %%f in ("!csv_file_base!") do (
|
||||
set "csv_file_base=%%~nf"
|
||||
)
|
||||
|
||||
set "image_file=!image_file_base!_!repeat_counter!.png"
|
||||
set "csv_file=!csv_file_base!_!repeat_counter!.csv"
|
||||
|
||||
if "!image_file!"=="" set "image_file=capture_1.png"
|
||||
if "!csv_file!"=="" set "csv_file=pixels_1.csv"
|
||||
|
||||
:main_loop
|
||||
echo.
|
||||
@@ -131,42 +145,11 @@ set /p "repeat_choice="
|
||||
:: Check if user pressed just Enter (empty input)
|
||||
if "!repeat_choice!"=="" (
|
||||
:: Increment counter for repeat runs
|
||||
if not defined repeat_counter set repeat_counter=0
|
||||
set /a repeat_counter+=1
|
||||
|
||||
:: Create new filenames with counter suffix
|
||||
:: Remove existing counter suffix if present, then add new one
|
||||
set "base_image=!image_file!"
|
||||
set "base_csv=!csv_file!"
|
||||
|
||||
:: Remove previous counter from image filename
|
||||
for /f "tokens=1,2 delims=_" %%a in ("!base_image!") do (
|
||||
if "%%b" neq "" (
|
||||
echo %%b | findstr "^[0-9][0-9]*\.png$" >nul
|
||||
if !errorlevel! equ 0 (
|
||||
set "base_image=%%a.png"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
:: Remove previous counter from csv filename
|
||||
for /f "tokens=1,2 delims=_" %%a in ("!base_csv!") do (
|
||||
if "%%b" neq "" (
|
||||
echo %%b | findstr "^[0-9][0-9]*\.csv$" >nul
|
||||
if !errorlevel! equ 0 (
|
||||
set "base_csv=%%a.csv"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
:: Add counter to filenames
|
||||
for %%f in ("!base_image!") do (
|
||||
set "image_file=%%~nf_!repeat_counter!%%~xf"
|
||||
)
|
||||
for %%f in ("!base_csv!") do (
|
||||
set "csv_file=%%~nf_!repeat_counter!%%~xf"
|
||||
)
|
||||
|
||||
set "image_file=!image_file_base!_!repeat_counter!.png"
|
||||
set "csv_file=!csv_file_base!_!repeat_counter!.csv"
|
||||
|
||||
goto :main_loop
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user